FFmpeg  4.0
Data Structures | Functions | Variables
yop.c File Reference
#include <string.h>
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
#include "internal.h"

Go to the source code of this file.

Data Structures

struct  YopDecContext
 

Functions

static av_cold int yop_decode_close (AVCodecContext *avctx)
 
static av_cold int yop_decode_init (AVCodecContext *avctx)
 
static int yop_paint_block (YopDecContext *s, int linesize, int tag)
 Paint a macroblock using the pattern in paint_lut. More...
 
static int yop_copy_previous_block (YopDecContext *s, int linesize, int copy_tag)
 Copy a previously painted macroblock to the current_block. More...
 
static uint8_t yop_get_next_nibble (YopDecContext *s)
 Return the next nibble in sequence, consuming a new byte on the input only if necessary. More...
 
static int yop_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 

Variables

static const uint8_t paint_lut [15][4]
 Lookup table for painting macroblocks. More...
 
static const int8_t motion_vector [16][2]
 Lookup table for copying macroblocks. More...
 
AVCodec ff_yop_decoder
 

Function Documentation

◆ yop_decode_close()

static av_cold int yop_decode_close ( AVCodecContext avctx)
static

Definition at line 84 of file yop.c.

◆ yop_decode_init()

static av_cold int yop_decode_init ( AVCodecContext avctx)
static

Definition at line 93 of file yop.c.

◆ yop_paint_block()

static int yop_paint_block ( YopDecContext s,
int  linesize,
int  tag 
)
static

Paint a macroblock using the pattern in paint_lut.

Parameters
scodec context
tagthe tag that was in the nibble

Definition at line 134 of file yop.c.

Referenced by yop_decode_frame().

◆ yop_copy_previous_block()

static int yop_copy_previous_block ( YopDecContext s,
int  linesize,
int  copy_tag 
)
static

Copy a previously painted macroblock to the current_block.

Parameters
copy_tagthe tag that was in the nibble

Definition at line 155 of file yop.c.

Referenced by yop_decode_frame().

◆ yop_get_next_nibble()

static uint8_t yop_get_next_nibble ( YopDecContext s)
static

Return the next nibble in sequence, consuming a new byte on the input only if necessary.

Definition at line 179 of file yop.c.

Referenced by yop_decode_frame().

◆ yop_decode_frame()

static int yop_decode_frame ( AVCodecContext avctx,
void data,
int got_frame,
AVPacket avpkt 
)
static

Definition at line 193 of file yop.c.

Variable Documentation

◆ paint_lut

const uint8_t paint_lut[15][4]
static
Initial value:
=
{{1, 2, 3, 4}, {1, 2, 0, 3},
{1, 2, 1, 3}, {1, 2, 2, 3},
{1, 0, 2, 3}, {1, 0, 0, 2},
{1, 0, 1, 2}, {1, 1, 2, 3},
{0, 1, 2, 3}, {0, 1, 0, 2},
{1, 1, 0, 2}, {0, 1, 1, 2},
{0, 0, 1, 2}, {0, 0, 0, 1},
{1, 1, 1, 2},
}

Lookup table for painting macroblocks.

Bytes 0-2 of each entry contain the macroblock positions to be painted (taken as (0, B0, B1, B2)). Byte 3 contains the number of bytes consumed on the input, equal to max(bytes 0-2) + 1.

Definition at line 58 of file yop.c.

Referenced by yop_paint_block().

◆ motion_vector

const int8_t motion_vector[16][2]
static
Initial value:
=
{{-4, -4}, {-2, -4},
{ 0, -4}, { 2, -4},
{-4, -2}, {-4, 0},
{-3, -3}, {-1, -3},
{ 1, -3}, { 3, -3},
{-3, -1}, {-2, -2},
{ 0, -2}, { 2, -2},
{ 4, -2}, {-2, 0},
}

Lookup table for copying macroblocks.

Each entry contains the respective x and y pixel offset for the copy source.

Definition at line 73 of file yop.c.

Referenced by yop_copy_previous_block().

◆ ff_yop_decoder

AVCodec ff_yop_decoder
Initial value:
= {
.name = "yop",
.long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP Video"),
.priv_data_size = sizeof(YopDecContext),
.close = yop_decode_close,
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:42
static int yop_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: yop.c:193
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static av_cold int yop_decode_close(AVCodecContext *avctx)
Definition: yop.c:84
static av_cold int yop_decode_init(AVCodecContext *avctx)
Definition: yop.c:93

Definition at line 268 of file yop.c.