X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmpeg12enc.c;h=be2f1e9002bba1a0ee2e202678b50ce8aa139f96;hb=53026339190132b79644bd2dec73ba9c9a902a4f;hp=5dedabd268addacf297dd3d79e510320af595ceb;hpb=9f51c682ee83ecf0995648d4574ac09b52bbcb24;p=ffmpeg diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 5dedabd268a..be2f1e9002b 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -74,11 +74,12 @@ static void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len){ for(i=0; i<128; i++){ int level= i-64; int run; + if (!level) + continue; for(run=0; run<64; run++){ - int len, bits, code; + int len, code; int alevel= FFABS(level); - int sign= (level>>31)&1; if (alevel > rl->max_level[0][run]) code= 111; /*rl->n*/ @@ -86,25 +87,15 @@ static void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len){ code= rl->index_run[0][run] + alevel - 1; if (code < 111 /* rl->n */) { - /* store the vlc & sign at once */ + /* length of vlc and sign */ len= rl->table_vlc[code][1]+1; - bits= (rl->table_vlc[code][0]<<1) + sign; } else { len= rl->table_vlc[111/*rl->n*/][1]+6; - bits= rl->table_vlc[111/*rl->n*/][0]<<6; - bits|= run; if (alevel < 128) { - bits<<=8; len+=8; - bits|= level & 0xff; + len += 8; } else { - bits<<=16; len+=16; - bits|= level & 0xff; - if (level < 0) { - bits|= 0x8001 + level + 255; - } else { - bits|= level & 0xffff; - } + len += 16; } } @@ -140,16 +131,9 @@ static av_cold int encode_init(AVCodecContext *avctx) { MpegEncContext *s = avctx->priv_data; - if(MPV_encode_init(avctx) < 0) + if(ff_MPV_encode_init(avctx) < 0) return -1; -#if FF_API_MPEGVIDEO_GLOBAL_OPTS - if (avctx->flags2 & CODEC_FLAG2_DROP_FRAME_TIMECODE) - s->drop_frame_timecode = 1; - if (avctx->flags & CODEC_FLAG_SVCD_SCAN_OFFSET) - s->scan_offset = 1; -#endif - if(find_frame_rate_index(s) < 0){ if(s->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL){ av_log(avctx, AV_LOG_ERROR, "MPEG1/2 does not support %d/%d fps\n", avctx->time_base.den, avctx->time_base.num); @@ -347,7 +331,7 @@ void ff_mpeg1_encode_slice_header(MpegEncContext *s){ put_bits(&s->pb, 1, 0); /* slice extra information */ } -void mpeg1_encode_picture_header(MpegEncContext *s, int picture_number) +void ff_mpeg1_encode_picture_header(MpegEncContext *s, int picture_number) { mpeg1_encode_sequence_header(s); @@ -672,7 +656,7 @@ static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s, } } -void mpeg1_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y) +void ff_mpeg1_encode_mb(MpegEncContext *s, DCTELEM block[6][64], int motion_x, int motion_y) { if (s->chroma_format == CHROMA_420) mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 6); else mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 8); @@ -731,8 +715,8 @@ void ff_mpeg1_encode_init(MpegEncContext *s) int i; done=1; - init_rl(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); - init_rl(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); + ff_init_rl(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); + ff_init_rl(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); for(i=0; i<64; i++) { @@ -970,8 +954,8 @@ AVCodec ff_mpeg1video_encoder = { .id = CODEC_ID_MPEG1VIDEO, .priv_data_size = sizeof(MpegEncContext), .init = encode_init, - .encode = MPV_encode_picture, - .close = MPV_encode_end, + .encode = ff_MPV_encode_picture, + .close = ff_MPV_encode_end, .supported_framerates= avpriv_frame_rate_tab+1, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS, @@ -985,8 +969,8 @@ AVCodec ff_mpeg2video_encoder = { .id = CODEC_ID_MPEG2VIDEO, .priv_data_size = sizeof(MpegEncContext), .init = encode_init, - .encode = MPV_encode_picture, - .close = MPV_encode_end, + .encode = ff_MPV_encode_picture, + .close = ff_MPV_encode_end, .supported_framerates= avpriv_frame_rate_tab+1, .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_YUV422P, PIX_FMT_NONE}, .capabilities= CODEC_CAP_DELAY | CODEC_CAP_SLICE_THREADS,