#include "libavutil/intreadwrite.h"
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "get_bits.h"
Go to the source code of this file.
Data Structures | |
struct | YopDecContext |
Functions | |
static av_cold int | yop_decode_init (AVCodecContext *avctx) |
static av_cold int | yop_decode_close (AVCodecContext *avctx) |
static void | yop_paint_block (YopDecContext *s, int tag) |
Paint a macroblock using the pattern in paint_lut. | |
static int | yop_copy_previous_block (YopDecContext *s, int copy_tag) |
Copy a previously painted macroblock to the current_block. | |
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. | |
static void | yop_next_macroblock (YopDecContext *s) |
Take s->dstptr to the next macroblock in sequence. | |
static int | yop_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) |
Variables | |
static const uint8_t | paint_lut [15][4] |
Lookup table for painting macroblocks. | |
static const int8_t | motion_vector [16][2] |
Lookup table for copying macroblocks. | |
AVCodec | ff_yop_decoder |
static int yop_copy_previous_block | ( | YopDecContext * | s, | |
int | copy_tag | |||
) | [static] |
Copy a previously painted macroblock to the current_block.
copy_tag | the tag that was in the nibble |
Definition at line 142 of file yop.c.
Referenced by yop_decode_frame().
static av_cold int yop_decode_close | ( | AVCodecContext * | avctx | ) | [static] |
static int yop_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
AVPacket * | avpkt | |||
) | [static] |
static av_cold int yop_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
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 167 of file yop.c.
Referenced by yop_decode_frame().
static void yop_next_macroblock | ( | YopDecContext * | s | ) | [static] |
Take s->dstptr to the next macroblock in sequence.
Definition at line 184 of file yop.c.
Referenced by yop_decode_frame().
static void yop_paint_block | ( | YopDecContext * | s, | |
int | tag | |||
) | [static] |
Paint a macroblock using the pattern in paint_lut.
s | codec context | |
tag | the tag that was in the nibble |
Definition at line 127 of file yop.c.
Referenced by yop_decode_frame().
Initial value:
{ .name = "yop", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_YOP, .priv_data_size = sizeof(YopDecContext), .init = yop_decode_init, .close = yop_decode_close, .decode = yop_decode_frame, .long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP Video"), }
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}, }
Each entry contains the respective x and y pixel offset for the copy source.
Definition at line 70 of file 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}, }
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 55 of file yop.c.
Referenced by yop_paint_block().