25 #define BITSTREAM_READER_LE 
  101 static const int8_t 
luma_adjust[] = { -4, -3, -2, -1, 1, 2, 3, 4 };
 
  104     { 1, 1, 0, -1, -1, -1,  0,  1 },
 
  105     { 0, 1, 1,  1,  0, -1, -1, -1 }
 
  109      20,  28,  36,  44,  52,  60,  68,  76,
 
  110      84,  92, 100, 106, 112, 116, 120, 124,
 
  111     128, 132, 136, 140, 144, 150, 156, 164,
 
  112     172, 180, 188, 196, 204, 212, 220, 228
 
  122                "Dimensions should be a multiple of two.\n");
 
  194     int buf_size        = avpkt->
size;
 
  200     uint8_t *old_y, *old_cb, *old_cr,
 
  201             *new_y, *new_cb, *new_cr;
 
  203     unsigned old_y_stride, old_cb_stride, old_cr_stride,
 
  204              new_y_stride, new_cb_stride, new_cr_stride;
 
  205     unsigned total_blocks = avctx->
width * avctx->
height / 4,
 
  206              block_index, block_x = 0;
 
  207     unsigned y[4] = { 0 }, 
cb = 0x10, 
cr = 0x10;
 
  208     int skip = -1, y_avg = 0, i, j;
 
  212     if (buf_size <= 16) {
 
  237     for (block_index = 0; block_index < total_blocks; block_index++) {
 
  250             y[2] = old_y[old_y_stride];
 
  251             y[3] = old_y[old_y_stride + 1];
 
  257                 unsigned sign_selector       = 
get_bits(&gb, 6);
 
  258                 unsigned difference_selector = 
get_bits(&gb, 2);
 
  260                 for (i = 0; i < 4; i++) {
 
  261                     y[i] = av_clip(y_avg + 
offset_table[difference_selector] *
 
  268                     unsigned adjust_index = 
get_bits(&gb, 3);
 
  271                 for (i = 0; i < 4; i++)
 
  280                     unsigned adjust_index = 
get_bits(&gb, 3);
 
  290         new_y[new_y_stride]     = y[2];
 
  291         new_y[new_y_stride + 1] = y[3];
 
  302         if (block_x * 2 == avctx->
width) {
 
  304             old_y  += old_y_stride * 2  - avctx->
width;
 
  305             old_cb += old_cb_stride     - avctx->
width / 2;
 
  306             old_cr += old_cr_stride     - avctx->
width / 2;
 
  307             new_y  += new_y_stride * 2  - avctx->
width;
 
  308             new_cb += new_cb_stride     - avctx->
width / 2;
 
  309             new_cr += new_cr_stride     - avctx->
width / 2;
 
  321     for (j = 0; j < avctx->
height; j++) {
 
  322         for (i = 0; i < avctx->
width; i++)
 
  323             dstY[i] = new_y[i] << 2;
 
  325         new_y += new_y_stride;
 
  327     for (j = 0; j < avctx->
height / 2; j++) {
 
  328         for (i = 0; i < avctx->
width / 2; i++) {
 
  334         new_cb += new_cb_stride;
 
  335         new_cr += new_cr_stride;
 
  338     ff_dlog(avctx, 
"Frame data: provided %d bytes, used %d bytes\n",
 
static const uint8_t chroma_vals[]
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
This structure describes decoded (raw) audio or video data. 
ptrdiff_t const GLvoid * data
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
memory handling functions 
static void skip_bits_long(GetBitContext *s, int n)
static av_cold int init(AVCodecContext *avctx)
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx. 
Macro definitions for various function/variable attributes. 
static double cb(void *priv, double x, double y)
static av_cold int escape130_decode_close(AVCodecContext *avctx)
static int get_bits_count(const GetBitContext *s)
bitstream reader API header. 
static const int8_t chroma_adjust[2][8]
static const int8_t sign_table[64][4]
static int escape130_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
static int get_bits_left(GetBitContext *gb)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
const char * name
Name of the codec implementation. 
int width
picture width / height. 
GLsizei GLboolean const GLfloat * value
static int decode_skip_count(GetBitContext *gb)
Libavcodec external API header. 
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
static const int8_t luma_adjust[]
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext. 
main external API structure. 
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame. 
AVCodec ff_escape130_decoder
static unsigned int get_bits1(GetBitContext *s)
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
common internal api header. 
static const uint8_t offset_table[]
static av_cold int escape130_decode_init(AVCodecContext *avctx)
#define FFSWAP(type, a, b)
static double cr(void *priv, double x, double y)
This structure stores compressed data. 
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.