39 #define UNI_ENC_INDEX(last,run,level) ((last)*128*64 + (run)*128 + (level))
66 temp_ref =
s->picture_number * 30000LL *
s->avctx->time_base.num /
67 (1001LL *
s->avctx->time_base.den);
105 s->last_mv[0][0][0] = 0;
106 s->last_mv[0][0][1] = 0;
111 int index =
s->mb_x +
s->mb_y *
s->mb_width;
113 if (
index % 11 == 0) {
116 s->last_mv[0][0][0] = 0;
117 s->last_mv[0][0][1] = 0;
127 s->mb_x += 11 * (
index % 2);
159 for (
i = 0;
i < 6;
i++)
160 if (
s->block_last_index[
i] >= 0)
173 int level,
run,
i, j, last_index, last_non_zero, sign, slevel,
code;
186 else if (
level < 1) {
195 }
else if ((
block[0] == 1 ||
block[0] == -1) &&
196 (
s->block_last_index[n] > -1)) {
205 last_index =
s->block_last_index[n];
206 last_non_zero =
i - 1;
207 for (;
i <= last_index;
i++) {
208 j =
s->intra_scantable.permutated[
i];
211 run =
i - last_non_zero - 1;
239 int motion_x,
int motion_y)
242 int mvd, mv_diff_x, mv_diff_y,
i, cbp;
253 mvd = motion_x | motion_y;
255 if ((cbp | mvd) == 0) {
259 s->last_mv[0][0][0] = 0;
260 s->last_mv[0][0][1] = 0;
261 s->qscale -=
s->dquant;
276 if (mvd ||
s->loop_filter)
285 if (
s->dquant && cbp) {
288 s->qscale -=
s->dquant;
302 mv_diff_x = (motion_x >> 1) -
s->last_mv[0][0][0];
303 mv_diff_y = (motion_y >> 1) -
s->last_mv[0][0][1];
304 s->last_mv[0][0][0] = (motion_x >> 1);
305 s->last_mv[0][0][1] = (motion_y >> 1);
316 for (
i = 0;
i < 6;
i++)
321 s->last_mv[0][0][0] = 0;
322 s->last_mv[0][0][1] = 0;
328 int slevel,
run, last;
333 for(slevel=-64; slevel<64; slevel++){
334 if(slevel==0)
continue;
336 for(last=0; last<=1; last++){
338 int level= slevel < 0 ? -slevel : slevel;
377 s->min_qcoeff = -127;
379 s->y_dc_scale_table =
381 s->ac_esc_length = 6+6+8;
384 s->intra_ac_vlc_last_length =
s->inter_ac_vlc_last_length =
uni_h261_rl_len + 128*64;
static double val(void *priv, double ch)
static const char *const format[]
Macro definitions for various function/variable attributes.
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Libavcodec external API header.
static av_cold int init(AVCodecContext *avctx)
const char * av_default_item_name(void *ptr)
Return the context name.
@ AV_PICTURE_TYPE_I
Intra.
#define LIBAVUTIL_VERSION_INT
const int ff_h261_mtype_map[10]
RLTable ff_h261_rl_tcoeff
const uint8_t ff_h261_mv_tab[17][2]
const uint8_t ff_h261_mtype_bits[10]
const uint8_t ff_h261_mtype_code[10]
const uint8_t ff_h261_mba_code[35]
const uint8_t ff_h261_cbp_tab[63][2]
const uint8_t ff_h261_mba_bits[35]
static av_cold void h261_encode_init_static(void)
static av_cold void init_uni_h261_rl_tab(const RLTable *rl, uint8_t *len_tab)
av_cold void ff_h261_encode_init(MpegEncContext *s)
#define UNI_ENC_INDEX(last, run, level)
static void h261_encode_gob_header(MpegEncContext *s, int mb_line)
Encode a group of blocks header.
static uint8_t uni_h261_rl_len[64 *64 *2 *2]
void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], int motion_x, int motion_y)
static void h261_encode_motion(H261Context *h, int val)
void ff_h261_encode_picture_header(MpegEncContext *s, int picture_number)
static const AVClass h261_class
static int get_cbp(MpegEncContext *s, int16_t block[6][64])
void ff_h261_reorder_mb_index(MpegEncContext *s)
int ff_h261_get_picture_format(int width, int height)
static void h261_encode_block(H261Context *h, int16_t *block, int n)
Encode an 8x8 block.
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
static int ff_thread_once(char *control, void(*routine)(void))
static enum AVPixelFormat pix_fmts[]
void ff_set_qscale(MpegEncContext *s, int qscale)
set qscale and update qscale dependent variables.
void ff_init_block_index(MpegEncContext *s)
const AVOption ff_mpv_generic_options[]
int ff_mpv_encode_end(AVCodecContext *avctx)
int ff_mpv_encode_picture(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
int ff_mpv_encode_init(AVCodecContext *avctx)
static void ff_update_block_index(MpegEncContext *s)
const uint8_t ff_mpeg1_dc_scale_table[128]
AVPixelFormat
Pixel format.
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
static void put_sbits(PutBitContext *pb, int n, int32_t value)
static uint8_t * put_bits_ptr(PutBitContext *s)
Return the pointer to the byte where the bitstream writer will put the next bit.
static void align_put_bits(PutBitContext *s)
Pad the bitstream with zeros up to the next byte boundary.
av_cold void ff_rl_init(RLTable *rl, uint8_t static_store[2][2 *MAX_RUN+MAX_LEVEL+3])
static int get_rl_index(const RLTable *rl, int last, int run, int level)
Describe the class of an AVClass context structure.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
const char * name
Name of the codec implementation.
int n
number of entries of table_vlc minus 1
const uint16_t(* table_vlc)[2]