38 #define UNI_ENC_INDEX(last,run,level) ((last)*128*64 + (run)*128 + (level))
43 if (width == 176 && height == 144)
46 else if (width == 352 && height == 288)
112 if (index % 11 == 0) {
122 s->
mb_x = index % 11;
126 s->
mb_x += 11 * (index % 2);
148 code = sign ? -val :
val;
158 for (i = 0; i < 6; i++)
172 int level,
run, i, j, last_index, last_non_zero, sign, slevel, code;
185 else if (level < 1) {
194 }
else if ((block[0] == 1 || block[0] == -1) &&
205 last_non_zero = i - 1;
206 for (; i <= last_index; i++) {
210 run = i - last_non_zero - 1;
219 if (run == 0 && level < 16)
238 int motion_x,
int motion_y)
241 int mvd, mv_diff_x, mv_diff_y, i, cbp;
252 mvd = motion_x | motion_y;
254 if ((cbp | mvd) == 0) {
301 mv_diff_x = (motion_x >> 1) - s->
last_mv[0][0][0];
302 mv_diff_y = (motion_y >> 1) - s->
last_mv[0][0][1];
303 s->
last_mv[0][0][0] = (motion_x >> 1);
304 s->
last_mv[0][0][1] = (motion_y >> 1);
315 for (i = 0; i < 6; i++)
328 int slevel,
run, last;
333 for(slevel=-64; slevel<64; slevel++){
334 if(slevel==0)
continue;
335 for(run=0; run<64; run++){
336 for(last=0; last<=1; last++){
338 int level= slevel < 0 ? -slevel : slevel;
349 if(code!=rl->
n && len < len_tab[index]){
357 if(len < len_tab[index]){
394 .priv_class = &h261_class,
const char const char void * val
void ff_init_block_index(MpegEncContext *s)
#define UNI_ENC_INDEX(last, run, level)
const uint8_t * y_dc_scale_table
qscale -> y_dc_scale table
int last_mv[2][2][2]
last MV, used for MV prediction in MPEG1 & B-frame MPEG4
static void put_sbits(PutBitContext *pb, int n, int32_t value)
#define FF_MPV_GENERIC_CLASS(name)
void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
static av_cold int init(AVCodecContext *avctx)
const uint8_t ff_h261_mba_bits[35]
void avpriv_align_put_bits(PutBitContext *s)
Pad the bitstream with zeros up to the next byte boundary.
int min_qcoeff
minimum encodable coefficient
void ff_h261_encode_picture_header(MpegEncContext *s, int picture_number)
uint8_t * intra_ac_vlc_length
const uint8_t ff_h261_mba_code[35]
Macro definitions for various function/variable attributes.
const uint8_t ff_h261_cbp_tab[63][2]
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
#define av_assert0(cond)
assert() equivalent, that is always enabled.
const uint8_t ff_mpeg1_dc_scale_table[128]
static void h261_encode_gob_header(MpegEncContext *s, int mb_line)
Encode a group of blocks header.
int max_qcoeff
maximum encodable coefficient
int dquant
qscale difference to prev qscale
static void ff_update_block_index(MpegEncContext *s)
void ff_set_qscale(MpegEncContext *s, int qscale)
set qscale and update qscale dependent variables.
static void h261_encode_block(H261Context *h, int16_t *block, int n)
Encode an 8x8 block.
av_cold void ff_h261_common_init(void)
static uint8_t * put_bits_ptr(PutBitContext *s)
Return the pointer to the byte where the bitstream writer will put the next bit.
uint8_t * inter_ac_vlc_last_length
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
simple assert() macros that are a bit more flexible than ISO C assert().
const char * name
Name of the codec implementation.
Libavcodec external API header.
uint8_t * intra_ac_vlc_last_length
int n
number of entries of table_vlc minus 1
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
const uint16_t(* table_vlc)[2]
int block_last_index[12]
last non zero coefficient in block
const uint8_t ff_h261_mtype_code[10]
const uint8_t ff_h261_mtype_bits[10]
int ac_esc_length
num of bits needed to encode the longest esc
const uint8_t ff_h261_mv_tab[17][2]
const int ff_h261_mtype_map[10]
void ff_h261_reorder_mb_index(MpegEncContext *s)
ScanTable intra_scantable
int height
picture size. must be a multiple of 16
int ff_h261_get_picture_format(int width, int height)
int ff_mpv_encode_init(AVCodecContext *avctx)
uint8_t * inter_ac_vlc_length
BYTE int const BYTE int int int height
static int get_cbp(MpegEncContext *s, int16_t block[6][64])
static void h261_encode_motion(H261Context *h, int val)
RLTable ff_h261_rl_tcoeff
const uint8_t * c_dc_scale_table
qscale -> c_dc_scale table
struct AVCodecContext * avctx
PutBitContext pb
bit output
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
int ff_mpv_encode_end(AVCodecContext *avctx)
static int get_rl_index(const RLTable *rl, int last, int run, int level)
static uint8_t uni_h261_rl_len[64 *64 *2 *2]
int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
static av_cold void init_uni_h261_rl_tab(RLTable *rl, uint32_t *bits_tab, uint8_t *len_tab)
av_cold void ff_h261_encode_init(MpegEncContext *s)
AVPixelFormat
Pixel format.