1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00

avcodec/mpeg12enc: Also inline chroma subsampling

ff_mpeg1_encode_mb() contains two inlined calls to
mpeg1_encode_mb_internal(); these calls are supposed
to inline the properties depending upon the color space
used. Yet inlining vertical chroma subsampling (which
allows to remove complete branches and blocks depending
upon them) has been forgotten.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2021-12-25 02:07:53 +01:00
parent 58f6d1e758
commit d91b5020ec

View File

@ -773,7 +773,8 @@ next_coef:
static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s, static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s,
int16_t block[8][64], int16_t block[8][64],
int motion_x, int motion_y, int motion_x, int motion_y,
int mb_block_count) int mb_block_count,
int chroma_y_shift)
{ {
int i, cbp; int i, cbp;
const int mb_x = s->mb_x; const int mb_x = s->mb_x;
@ -918,7 +919,7 @@ static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s,
s->mv_bits += get_bits_diff(s); s->mv_bits += get_bits_diff(s);
} }
if (cbp) { if (cbp) {
if (s->chroma_y_shift) { if (chroma_y_shift) {
put_bits(&s->pb, put_bits(&s->pb,
ff_mpeg12_mbPatTable[cbp][1], ff_mpeg12_mbPatTable[cbp][1],
ff_mpeg12_mbPatTable[cbp][0]); ff_mpeg12_mbPatTable[cbp][0]);
@ -1025,7 +1026,7 @@ static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s,
} }
s->mv_bits += get_bits_diff(s); s->mv_bits += get_bits_diff(s);
if (cbp) { if (cbp) {
if (s->chroma_y_shift) { if (chroma_y_shift) {
put_bits(&s->pb, put_bits(&s->pb,
ff_mpeg12_mbPatTable[cbp][1], ff_mpeg12_mbPatTable[cbp][1],
ff_mpeg12_mbPatTable[cbp][0]); ff_mpeg12_mbPatTable[cbp][0]);
@ -1052,9 +1053,9 @@ void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64],
int motion_x, int motion_y) int motion_x, int motion_y)
{ {
if (s->chroma_format == CHROMA_420) if (s->chroma_format == CHROMA_420)
mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 6); mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 6, 1);
else else
mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 8); mpeg1_encode_mb_internal(s, block, motion_x, motion_y, 8, 0);
} }
static av_cold void mpeg12_encode_init_static(void) static av_cold void mpeg12_encode_init_static(void)