From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 37/39] avcodec/mpeg12enc: Also inline chroma subsampling Date: Sat, 25 Dec 2021 07:06:12 +0100 Message-ID: <DBAPR03MB6664F7A11213ED7416E1E6298F409@DBAPR03MB6664.eurprd03.prod.outlook.com> (raw) In-Reply-To: <AM7PR03MB66606013F665BF849CE7CAD68F7D9@AM7PR03MB6660.eurprd03.prod.outlook.com> 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> --- Looking at this code makes me wonder whether inlining was ever worth it here. libavcodec/mpeg12enc.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 3692494713..1437ac421c 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -773,7 +773,8 @@ next_coef: static av_always_inline void mpeg1_encode_mb_internal(MpegEncContext *s, int16_t block[8][64], int motion_x, int motion_y, - int mb_block_count) + int mb_block_count, + int chroma_y_shift) { int i, cbp; 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); } if (cbp) { - if (s->chroma_y_shift) { + if (chroma_y_shift) { put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp][1], 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); if (cbp) { - if (s->chroma_y_shift) { + if (chroma_y_shift) { put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp][1], 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) { 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 - 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) -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2021-12-25 6:06 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-22 3:19 [FFmpeg-devel] [PATCH 01/14] avcodec/mjpegenc: Use custom close function directly Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 02/14] avcodec/mjpegenc: Avoid allocation of MJpegContext Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 03/14] avcodec/mpegvideo_enc: Move MJPEG init checks to mjpegenc.c Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 04/14] avcodec/mpegvideo_enc: Remove redundant checks for multithreading Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 05/14] avcodec/mjpegenc: Add wrapper for ff_mjpeg_encode_picture_header() Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 06/14] avcodec/mjpegenc_common: Move code for MJPEG/AMV to mjpegenc Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 07/14] avcodec/mjpegenc_common: Fix intendation Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 08/14] avcodec/mpegvideo: Move MJPEG/AMV-only fields to MJpegContext Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 09/14] avcodec/mjpegenc: Deprecate unused prediction type Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 10/14] avcodec/mjpegenc_common: Pass MJpegContext for writing picture header Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 11/14] avcodec/mjpegenc_common: Don't call function unnecessarily Andreas Rheinhardt 2021-12-22 3:25 ` [FFmpeg-devel] [PATCH 12/14] avcodec/mjpegenc_common: Use AVCodecContext.codec_id directly Andreas Rheinhardt 2021-12-22 3:30 ` [FFmpeg-devel] [PATCH 13/14] avcodec/mpegvideo: Remove unnecessary headers Andreas Rheinhardt 2021-12-22 3:30 ` [FFmpeg-devel] [PATCH 14/14] avcodec/mpegvideo_enc: Remove impossible branch Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 15/30] avcodec/speedhqenc: Inline constants Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 16/30] avcodec/mpegvideo_enc: Move updating mb_info to its only user Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 17/30] avcodec/mpeg12enc: Simplify check for A53 closed captions Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 18/30] avcodec/mpeg12enc: Add custom context, move mpeg2_frame_rate_ext to it Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 19/30] avcodec/mpeg12enc: Move options-related fields to MPEG12EncContext Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 20/30] avcodec/mpegvideo_enc: Don't merge decoder-only fields Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 21/30] avcodec/mpeg12dec: Use %c to write single char Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 22/30] avcodec/mpegvideo: Don't duplicate identical code Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 23/30] avcodec/mpegvideo: Avoid needlessly calling function Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 24/30] avcodec/wmv2: Move ff_wmv2_add_mb() to the wmv2dec Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 25/30] avcodec/mpegvideo_motion: Don't duplicate identical code Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 26/30] avcodec/mpegvideo: Don't check for > 8 bit MPEG-1/2 Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 27/30] avcodec/mpegvideo: Partially check for being encoder at compile-time Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 28/30] avcodec/mpegvideo: Try to perform check for MPEG-1/2 " Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 29/30] avcodec/mpegvideo: Remove always-true branch Andreas Rheinhardt 2021-12-23 9:13 ` [FFmpeg-devel] [PATCH 30/30] avcodec/mpegvideo: Check for no_rounding at compile-time if possible Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 31/36] avcodec/mpegvideo: Don't initialize error resilience context for encoder Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 32/36] avcodec/mpegvideo: Remove always-false check Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 33/36] avcodec/mpegvideo: Move decoding-only code into a new file Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 34/36] configure: Add new mpegvideodec CONFIG_EXTRA Andreas Rheinhardt 2021-12-25 6:09 ` [FFmpeg-devel] [PATCH v2 34/35] " Andreas Rheinhardt 2021-12-25 6:09 ` [FFmpeg-devel] [PATCH v2 35/35] configure: Remove mpegvideo dependency on me_cmp Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 35/36] avcodec/mpegvideo_enc: Improve inlining of chroma_format Andreas Rheinhardt 2021-12-24 3:23 ` [FFmpeg-devel] [PATCH 36/36] avcodec/mpegvideo_enc: Remove dead code at compile time Andreas Rheinhardt 2021-12-24 17:17 ` Michael Niedermayer 2021-12-24 18:30 ` Andreas Rheinhardt 2021-12-24 18:36 ` Michael Niedermayer 2021-12-25 6:06 ` Andreas Rheinhardt [this message] 2021-12-25 6:06 ` [FFmpeg-devel] [PATCH 38/39] avcodec/mpeg12enc: Partially inline whether codec is MPEG-1 Andreas Rheinhardt 2021-12-25 6:06 ` [FFmpeg-devel] [PATCH 39/39] avcodec/mpeg12enc: Inline constants Andreas Rheinhardt 2021-12-31 10:03 ` [FFmpeg-devel] [PATCH 01/14] avcodec/mjpegenc: Use custom close function directly Andreas Rheinhardt
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=DBAPR03MB6664F7A11213ED7416E1E6298F409@DBAPR03MB6664.eurprd03.prod.outlook.com \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git