libavcodec/yop.c File Reference
#include "libavutil/intreadwrite.h"
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "get_bits.h"
#include "internal.h"
Include dependency graph for libavcodec/yop.c:

Go to the source code of this file.

Data Structures

struct  YopDecContext
 

Typedefs

typedef struct YopDecContext 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
 

Typedef Documentation

typedef struct YopDecContext YopDecContext

Function Documentation

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 151 of file libavcodec/yop.c.

Referenced by yop_decode_frame().

static av_cold int yop_decode_close ( AVCodecContext avctx)
static

Definition at line 82 of file libavcodec/yop.c.

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

Definition at line 189 of file libavcodec/yop.c.

static av_cold int yop_decode_init ( AVCodecContext avctx)
static

Definition at line 91 of file libavcodec/yop.c.

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 175 of file libavcodec/yop.c.

Referenced by yop_decode_frame().

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 130 of file libavcodec/yop.c.

Referenced by yop_decode_frame().

Variable Documentation

AVCodec ff_yop_decoder
Initial value:
= {
.name = "yop",
.priv_data_size = sizeof(YopDecContext),
.long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP Video"),
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static int yop_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
static av_cold int yop_decode_close(AVCodecContext *avctx)
static av_cold int yop_decode_init(AVCodecContext *avctx)
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868
struct YopDecContext YopDecContext

Definition at line 264 of file libavcodec/yop.c.

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 71 of file libavcodec/yop.c.

Referenced by yop_copy_previous_block().

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 56 of file libavcodec/yop.c.

Referenced by yop_paint_block().