libavcodec/huffyuv.c File Reference

huffyuv codec for libavcodec. More...

#include "avcodec.h"
#include "get_bits.h"
#include "put_bits.h"
#include "dsputil.h"
#include "thread.h"

Go to the source code of this file.

Data Structures

struct  HYuvContext

Defines

#define VLC_BITS   11
#define B   0
#define G   1
#define R   2
#define A   3
#define classic_shift_luma_table_size   42
#define classic_shift_chroma_table_size   59
#define READ_2PIX(dst0, dst1, plane1)
#define LOAD3
#define STAT3
#define WRITE3

Enumerations

enum  Predictor { LEFT = 0, PLANE, MEDIAN }

Functions

static int sub_left_prediction (HYuvContext *s, uint8_t *dst, uint8_t *src, int w, int left)
static void sub_left_prediction_bgr32 (HYuvContext *s, uint8_t *dst, uint8_t *src, int w, int *red, int *green, int *blue, int *alpha)
static void sub_left_prediction_rgb24 (HYuvContext *s, uint8_t *dst, uint8_t *src, int w, int *red, int *green, int *blue)
static int read_len_table (uint8_t *dst, GetBitContext *gb)
static int generate_bits_table (uint32_t *dst, const uint8_t *len_table)
static void generate_joint_tables (HYuvContext *s)
static int read_huffman_tables (HYuvContext *s, const uint8_t *src, int length)
static int read_old_huffman_tables (HYuvContext *s)
static av_cold void alloc_temp (HYuvContext *s)
static av_cold int common_init (AVCodecContext *avctx)
static void decode_422_bitstream (HYuvContext *s, int count)
static void decode_gray_bitstream (HYuvContext *s, int count)
static av_always_inline void decode_bgr_1 (HYuvContext *s, int count, int decorrelate, int alpha)
static void decode_bgr_bitstream (HYuvContext *s, int count)
static int encode_bgra_bitstream (HYuvContext *s, int count, int planes)
static int common_end (HYuvContext *s)

Variables

static const unsigned char classic_shift_luma [classic_shift_luma_table_size+FF_INPUT_BUFFER_PADDING_SIZE]
static const unsigned char classic_shift_chroma [classic_shift_chroma_table_size+FF_INPUT_BUFFER_PADDING_SIZE]
static const unsigned char classic_add_luma [256]
static const unsigned char classic_add_chroma [256]


Detailed Description

huffyuv codec for libavcodec.

Definition in file huffyuv.c.


Define Documentation

#define A   3

Definition at line 48 of file huffyuv.c.

#define B   0

Definition at line 45 of file huffyuv.c.

#define classic_shift_chroma_table_size   59

Definition at line 92 of file huffyuv.c.

Referenced by read_old_huffman_tables().

#define classic_shift_luma_table_size   42

Definition at line 85 of file huffyuv.c.

Referenced by read_old_huffman_tables().

#define G   1

Definition at line 46 of file huffyuv.c.

#define LOAD3

Value:

int g= s->temp[0][planes==3 ? 3*i+1 : 4*i+G];\
            int b= (s->temp[0][planes==3 ? 3*i+2 : 4*i+B] - g) & 0xff;\
            int r= (s->temp[0][planes==3 ? 3*i+0 : 4*i+R] - g) & 0xff;\
            int a= s->temp[0][planes*i+A];

Referenced by encode_bgra_bitstream().

#define R   2

Definition at line 47 of file huffyuv.c.

#define READ_2PIX ( dst0,
dst1,
plane1   ) 

Value:

{\
    uint16_t code = get_vlc2(&s->gb, s->vlc[3+plane1].table, VLC_BITS, 1);\
    if(code != 0xffff){\
        dst0 = code>>8;\
        dst1 = code;\
    }else{\
        dst0 = get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);\
        dst1 = get_vlc2(&s->gb, s->vlc[plane1].table, VLC_BITS, 3);\
    }\
}

Definition at line 738 of file huffyuv.c.

Referenced by decode_422_bitstream(), and decode_gray_bitstream().

#define STAT3

Value:

s->stats[0][b]++;\
            s->stats[1][g]++;\
            s->stats[2][r]++;\
            if(planes==4) s->stats[2][a]++;

Referenced by encode_bgra_bitstream().

#define VLC_BITS   11

Definition at line 37 of file huffyuv.c.

#define WRITE3

Value:

put_bits(&s->pb, s->len[1][g], s->bits[1][g]);\
            put_bits(&s->pb, s->len[0][b], s->bits[0][b]);\
            put_bits(&s->pb, s->len[2][r], s->bits[2][r]);\
            if(planes==4) put_bits(&s->pb, s->len[2][a], s->bits[2][a]);

Referenced by encode_bgra_bitstream().


Enumeration Type Documentation

enum Predictor

Enumerator:
LEFT 
PLANE 
MEDIAN 

Definition at line 51 of file huffyuv.c.


Function Documentation

static av_cold void alloc_temp ( HYuvContext s  )  [static]

Definition at line 430 of file huffyuv.c.

static int common_end ( HYuvContext s  )  [static]

Definition at line 1236 of file huffyuv.c.

static av_cold int common_init ( AVCodecContext avctx  )  [static]

Definition at line 442 of file huffyuv.c.

static void decode_422_bitstream ( HYuvContext s,
int  count 
) [static]

Definition at line 749 of file huffyuv.c.

static av_always_inline void decode_bgr_1 ( HYuvContext s,
int  count,
int  decorrelate,
int  alpha 
) [static]

Definition at line 881 of file huffyuv.c.

Referenced by decode_bgr_bitstream().

static void decode_bgr_bitstream ( HYuvContext s,
int  count 
) [static]

Definition at line 901 of file huffyuv.c.

static void decode_gray_bitstream ( HYuvContext s,
int  count 
) [static]

Definition at line 767 of file huffyuv.c.

static int encode_bgra_bitstream ( HYuvContext s,
int  count,
int  planes 
) [inline, static]

Definition at line 915 of file huffyuv.c.

static int generate_bits_table ( uint32_t *  dst,
const uint8_t *  len_table 
) [static]

Definition at line 227 of file huffyuv.c.

Referenced by read_huffman_tables().

static void generate_joint_tables ( HYuvContext s  )  [static]

Definition at line 304 of file huffyuv.c.

Referenced by read_huffman_tables(), and read_old_huffman_tables().

static int read_huffman_tables ( HYuvContext s,
const uint8_t *  src,
int  length 
) [static]

Definition at line 373 of file huffyuv.c.

static int read_len_table ( uint8_t *  dst,
GetBitContext gb 
) [static]

Definition at line 208 of file huffyuv.c.

Referenced by read_huffman_tables(), and read_old_huffman_tables().

static int read_old_huffman_tables ( HYuvContext s  )  [static]

Definition at line 394 of file huffyuv.c.

static int sub_left_prediction ( HYuvContext s,
uint8_t *  dst,
uint8_t *  src,
int  w,
int  left 
) [inline, static]

Definition at line 137 of file huffyuv.c.

static void sub_left_prediction_bgr32 ( HYuvContext s,
uint8_t *  dst,
uint8_t *  src,
int  w,
int *  red,
int *  green,
int *  blue,
int *  alpha 
) [inline, static]

Definition at line 157 of file huffyuv.c.

static void sub_left_prediction_rgb24 ( HYuvContext s,
uint8_t *  dst,
uint8_t *  src,
int  w,
int *  red,
int *  green,
int *  blue 
) [inline, static]

Definition at line 185 of file huffyuv.c.


Variable Documentation

const unsigned char classic_add_chroma[256] [static]

Initial value:

 {
    3,  1,  2,  2,  2,  2,  3,  3,  7,  5,  7,  5,  8,  6, 11,  9,
    7, 13, 11, 10,  9,  8,  7,  5,  9,  7,  6,  4,  7,  5,  8,  7,
   11,  8, 13, 11, 19, 15, 22, 23, 20, 33, 32, 28, 27, 29, 51, 77,
   43, 45, 76, 81, 46, 82, 75, 55, 56,144, 58, 80, 60, 74,147, 63,
  143, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 27, 30, 21, 22,
   17, 14,  5,  6,100, 54, 47, 50, 51, 53,106,107,108,109,110,111,
  112,113,114,115,  4,117,118, 92, 94,121,122,  3,124,103,  2,  1,
    0,129,130,131,120,119,126,125,136,137,138,139,140,141,142,134,
  135,132,133,104, 64,101, 62, 57,102, 95, 93, 59, 61, 28, 97, 96,
   52, 49, 48, 29, 32, 25, 24, 46, 23, 98, 45, 44, 43, 20, 42, 41,
   19, 18, 99, 40, 15, 39, 38, 16, 13, 12, 11, 37, 10,  9,  8, 36,
    7,128,127,105,123,116, 35, 34, 33,145, 31, 79, 42,146, 78, 26,
   83, 48, 49, 50, 44, 47, 26, 31, 30, 18, 17, 19, 21, 24, 25, 13,
   14, 16, 17, 18, 20, 21, 12, 14, 15,  9, 10,  6,  9,  6,  5,  8,
    6, 12,  8, 10,  7,  9,  6,  4,  6,  2,  2,  3,  3,  3,  3,  2,
}

Definition at line 118 of file huffyuv.c.

Referenced by read_old_huffman_tables().

const unsigned char classic_add_luma[256] [static]

Initial value:

 {
    3,  9,  5, 12, 10, 35, 32, 29, 27, 50, 48, 45, 44, 41, 39, 37,
   73, 70, 68, 65, 64, 61, 58, 56, 53, 50, 49, 46, 44, 41, 38, 36,
   68, 65, 63, 61, 58, 55, 53, 51, 48, 46, 45, 43, 41, 39, 38, 36,
   35, 33, 32, 30, 29, 27, 26, 25, 48, 47, 46, 44, 43, 41, 40, 39,
   37, 36, 35, 34, 32, 31, 30, 28, 27, 26, 24, 23, 22, 20, 19, 37,
   35, 34, 33, 31, 30, 29, 27, 26, 24, 23, 21, 20, 18, 17, 15, 29,
   27, 26, 24, 22, 21, 19, 17, 16, 14, 26, 25, 23, 21, 19, 18, 16,
   15, 27, 25, 23, 21, 19, 17, 16, 14, 26, 25, 23, 21, 18, 17, 14,
   12, 17, 19, 13,  4,  9,  2, 11,  1,  7,  8,  0, 16,  3, 14,  6,
   12, 10,  5, 15, 18, 11, 10, 13, 15, 16, 19, 20, 22, 24, 27, 15,
   18, 20, 22, 24, 26, 14, 17, 20, 22, 24, 27, 15, 18, 20, 23, 25,
   28, 16, 19, 22, 25, 28, 32, 36, 21, 25, 29, 33, 38, 42, 45, 49,
   28, 31, 34, 37, 40, 42, 44, 47, 49, 50, 52, 54, 56, 57, 59, 60,
   62, 64, 66, 67, 69, 35, 37, 39, 40, 42, 43, 45, 47, 48, 51, 52,
   54, 55, 57, 59, 60, 62, 63, 66, 67, 69, 71, 72, 38, 40, 42, 43,
   46, 47, 49, 51, 26, 28, 30, 31, 33, 34, 18, 19, 11, 13,  7,  8,
}

Definition at line 99 of file huffyuv.c.

Referenced by read_old_huffman_tables().

const unsigned char classic_shift_chroma[classic_shift_chroma_table_size+FF_INPUT_BUFFER_PADDING_SIZE] [static]

Initial value:

 {
  66,36,37,38,39,40,41,75,76,77,110,239,144,81,82,83,84,85,118,183,
  56,57,88,89,56,89,154,57,58,57,26,141,57,56,58,57,58,57,184,119,
  214,245,116,83,82,49,80,79,78,77,44,75,41,40,39,38,37,36,34, 0
}

Definition at line 93 of file huffyuv.c.

Referenced by read_old_huffman_tables().

const unsigned char classic_shift_luma[classic_shift_luma_table_size+FF_INPUT_BUFFER_PADDING_SIZE] [static]

Initial value:

 {
  34,36,35,69,135,232,9,16,10,24,11,23,12,16,13,10,14,8,15,8,
  16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
  69,68, 0
}

Definition at line 86 of file huffyuv.c.

Referenced by read_old_huffman_tables().


Generated on Fri Oct 26 02:46:08 2012 for FFmpeg by  doxygen 1.5.8