FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions | Variables
yop.c File Reference
#include "libavutil/intreadwrite.h"
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "get_bits.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.
 
static int yop_copy_previous_block (YopDecContext *s, int linesize, 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 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.
 
static const int8_t motion_vector [16][2]
 Lookup table for copying macroblocks.
 
AVCodec ff_yop_decoder
 

Function Documentation

static av_cold int yop_decode_close ( AVCodecContext avctx)
static

Definition at line 82 of file yop.c.

static av_cold int yop_decode_init ( AVCodecContext avctx)
static

Definition at line 91 of file yop.c.

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 132 of file yop.c.

Referenced by yop_decode_frame().

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 153 of file yop.c.

Referenced by yop_decode_frame().

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 177 of file yop.c.

Referenced by yop_decode_frame().

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

Definition at line 191 of file yop.c.

Variable Documentation

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 yop.c.

Referenced by yop_paint_block().

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 yop.c.

Referenced by yop_copy_previous_block().

AVCodec ff_yop_decoder
Initial value:
= {
.name = "yop",
.long_name = NULL_IF_CONFIG_SMALL("Psygnosis YOP Video"),
.priv_data_size = sizeof(YopDecContext),
}

Definition at line 266 of file yop.c.