From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH 35/57] avcodec/mpegvideo_enc: Reindentation
Date: Mon, 29 Apr 2024 23:14:16 +0200
Message-ID: <AS8P250MB07441F8B119495BFF7F0EE778F1B2@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <GV1SPRMB0021759DDCCEFEB3B9609B808F1B2@GV1SPRMB0021.EURP250.PROD.OUTLOOK.COM>
Also try to use loop-scope for iterators.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/mpegvideo_enc.c | 193 ++++++++++++++++++-------------------
1 file changed, 96 insertions(+), 97 deletions(-)
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 5b0a2edfa6..ce827712af 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1480,129 +1480,128 @@ fail:
*/
static int set_bframe_chain_length(MpegEncContext *s)
{
- int i;
-
/* Either nothing to do or can't do anything */
if (s->reordered_input_picture[0] || !s->input_picture[0])
return 0;
/* set next picture type & ordering */
- if (s->frame_skip_threshold || s->frame_skip_factor) {
- if (s->picture_in_gop_number < s->gop_size &&
- s->next_pic.ptr &&
- skip_check(s, s->input_picture[0], s->next_pic.ptr)) {
- // FIXME check that the gop check above is +-1 correct
- ff_mpeg_unref_picture(s->input_picture[0]);
+ if (s->frame_skip_threshold || s->frame_skip_factor) {
+ if (s->picture_in_gop_number < s->gop_size &&
+ s->next_pic.ptr &&
+ skip_check(s, s->input_picture[0], s->next_pic.ptr)) {
+ // FIXME check that the gop check above is +-1 correct
+ ff_mpeg_unref_picture(s->input_picture[0]);
- ff_vbv_update(s, 0);
+ ff_vbv_update(s, 0);
- return 0;
- }
+ return 0;
}
+ }
- if (/*s->picture_in_gop_number >= s->gop_size ||*/
- !s->next_pic.ptr || s->intra_only) {
- s->reordered_input_picture[0] = s->input_picture[0];
- s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_I;
- s->reordered_input_picture[0]->coded_picture_number =
- s->coded_picture_number++;
- } else {
- int b_frames = 0;
-
- if (s->avctx->flags & AV_CODEC_FLAG_PASS2) {
- for (i = 0; i < s->max_b_frames + 1; i++) {
- int pict_num = s->input_picture[0]->display_picture_number + i;
-
- if (pict_num >= s->rc_context.num_entries)
- break;
- if (!s->input_picture[i]) {
- s->rc_context.entry[pict_num - 1].new_pict_type = AV_PICTURE_TYPE_P;
- break;
- }
+ if (/*s->picture_in_gop_number >= s->gop_size ||*/
+ !s->next_pic.ptr || s->intra_only) {
+ s->reordered_input_picture[0] = s->input_picture[0];
+ s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_I;
+ s->reordered_input_picture[0]->coded_picture_number =
+ s->coded_picture_number++;
+ } else {
+ int b_frames = 0;
- s->input_picture[i]->f->pict_type =
- s->rc_context.entry[pict_num].new_pict_type;
- }
- }
+ if (s->avctx->flags & AV_CODEC_FLAG_PASS2) {
+ for (int i = 0; i < s->max_b_frames + 1; i++) {
+ int pict_num = s->input_picture[0]->display_picture_number + i;
- if (s->b_frame_strategy == 0) {
- b_frames = s->max_b_frames;
- while (b_frames && !s->input_picture[b_frames])
- b_frames--;
- } else if (s->b_frame_strategy == 1) {
- for (i = 1; i < s->max_b_frames + 1; i++) {
- if (s->input_picture[i] &&
- s->input_picture[i]->b_frame_score == 0) {
- s->input_picture[i]->b_frame_score =
- get_intra_count(s,
- s->input_picture[i ]->f->data[0],
- s->input_picture[i - 1]->f->data[0],
- s->linesize) + 1;
- }
- }
- for (i = 0; i < s->max_b_frames + 1; i++) {
- if (!s->input_picture[i] ||
- s->input_picture[i]->b_frame_score - 1 >
- s->mb_num / s->b_sensitivity)
- break;
+ if (pict_num >= s->rc_context.num_entries)
+ break;
+ if (!s->input_picture[i]) {
+ s->rc_context.entry[pict_num - 1].new_pict_type = AV_PICTURE_TYPE_P;
+ break;
}
- b_frames = FFMAX(0, i - 1);
+ s->input_picture[i]->f->pict_type =
+ s->rc_context.entry[pict_num].new_pict_type;
+ }
+ }
- /* reset scores */
- for (i = 0; i < b_frames + 1; i++) {
- s->input_picture[i]->b_frame_score = 0;
- }
- } else if (s->b_frame_strategy == 2) {
- b_frames = estimate_best_b_count(s);
- if (b_frames < 0) {
- ff_mpeg_unref_picture(s->input_picture[0]);
- return b_frames;
+ if (s->b_frame_strategy == 0) {
+ b_frames = s->max_b_frames;
+ while (b_frames && !s->input_picture[b_frames])
+ b_frames--;
+ } else if (s->b_frame_strategy == 1) {
+ int i;
+ for (i = 1; i < s->max_b_frames + 1; i++) {
+ if (s->input_picture[i] &&
+ s->input_picture[i]->b_frame_score == 0) {
+ s->input_picture[i]->b_frame_score =
+ get_intra_count(s,
+ s->input_picture[i ]->f->data[0],
+ s->input_picture[i - 1]->f->data[0],
+ s->linesize) + 1;
}
}
+ for (i = 0; i < s->max_b_frames + 1; i++) {
+ if (!s->input_picture[i] ||
+ s->input_picture[i]->b_frame_score - 1 >
+ s->mb_num / s->b_sensitivity)
+ break;
+ }
- emms_c();
+ b_frames = FFMAX(0, i - 1);
- for (i = b_frames - 1; i >= 0; i--) {
- int type = s->input_picture[i]->f->pict_type;
- if (type && type != AV_PICTURE_TYPE_B)
- b_frames = i;
+ /* reset scores */
+ for (i = 0; i < b_frames + 1; i++) {
+ s->input_picture[i]->b_frame_score = 0;
}
- if (s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_B &&
- b_frames == s->max_b_frames) {
- av_log(s->avctx, AV_LOG_ERROR,
- "warning, too many B-frames in a row\n");
+ } else if (s->b_frame_strategy == 2) {
+ b_frames = estimate_best_b_count(s);
+ if (b_frames < 0) {
+ ff_mpeg_unref_picture(s->input_picture[0]);
+ return b_frames;
}
+ }
- if (s->picture_in_gop_number + b_frames >= s->gop_size) {
- if ((s->mpv_flags & FF_MPV_FLAG_STRICT_GOP) &&
- s->gop_size > s->picture_in_gop_number) {
- b_frames = s->gop_size - s->picture_in_gop_number - 1;
- } else {
- if (s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP)
- b_frames = 0;
- s->input_picture[b_frames]->f->pict_type = AV_PICTURE_TYPE_I;
- }
- }
+ emms_c();
- if ((s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) && b_frames &&
- s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_I)
- b_frames--;
+ for (int i = b_frames - 1; i >= 0; i--) {
+ int type = s->input_picture[i]->f->pict_type;
+ if (type && type != AV_PICTURE_TYPE_B)
+ b_frames = i;
+ }
+ if (s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_B &&
+ b_frames == s->max_b_frames) {
+ av_log(s->avctx, AV_LOG_ERROR,
+ "warning, too many B-frames in a row\n");
+ }
- s->reordered_input_picture[0] = s->input_picture[b_frames];
- if (s->reordered_input_picture[0]->f->pict_type != AV_PICTURE_TYPE_I)
- s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_P;
- s->reordered_input_picture[0]->coded_picture_number =
- s->coded_picture_number++;
- for (i = 0; i < b_frames; i++) {
- s->reordered_input_picture[i + 1] = s->input_picture[i];
- s->reordered_input_picture[i + 1]->f->pict_type =
- AV_PICTURE_TYPE_B;
- s->reordered_input_picture[i + 1]->coded_picture_number =
- s->coded_picture_number++;
+ if (s->picture_in_gop_number + b_frames >= s->gop_size) {
+ if ((s->mpv_flags & FF_MPV_FLAG_STRICT_GOP) &&
+ s->gop_size > s->picture_in_gop_number) {
+ b_frames = s->gop_size - s->picture_in_gop_number - 1;
+ } else {
+ if (s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP)
+ b_frames = 0;
+ s->input_picture[b_frames]->f->pict_type = AV_PICTURE_TYPE_I;
}
}
+ if ((s->avctx->flags & AV_CODEC_FLAG_CLOSED_GOP) && b_frames &&
+ s->input_picture[b_frames]->f->pict_type == AV_PICTURE_TYPE_I)
+ b_frames--;
+
+ s->reordered_input_picture[0] = s->input_picture[b_frames];
+ if (s->reordered_input_picture[0]->f->pict_type != AV_PICTURE_TYPE_I)
+ s->reordered_input_picture[0]->f->pict_type = AV_PICTURE_TYPE_P;
+ s->reordered_input_picture[0]->coded_picture_number =
+ s->coded_picture_number++;
+ for (int i = 0; i < b_frames; i++) {
+ s->reordered_input_picture[i + 1] = s->input_picture[i];
+ s->reordered_input_picture[i + 1]->f->pict_type =
+ AV_PICTURE_TYPE_B;
+ s->reordered_input_picture[i + 1]->coded_picture_number =
+ s->coded_picture_number++;
+ }
+ }
+
return 0;
}
--
2.40.1
_______________________________________________
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:[~2024-04-29 21:18 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-29 0:28 [FFmpeg-devel] [PATCH 01/14] avcodec/get_buffer: Remove redundant check Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 02/14] avcodec/mpegpicture: Store linesize in ScratchpadContext Andreas Rheinhardt
2024-04-29 15:09 ` [FFmpeg-devel] [PATCH v2 2/14] " Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 03/14] avcodec/mpegvideo_dec: Sync linesize and uvlinesize between threads Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 04/14] avcodec/mpegvideo_dec: Factor allocating dummy frames out Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 05/14] avcodec/mpegpicture: Mark dummy frames as such Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 06/14] avcodec/mpeg12dec: Allocate dummy frames for non-I fields Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 07/14] avcodec/mpegvideo_motion: Remove dead checks for existence of reference Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 08/14] avcodec/mpegvideo_motion: Optimize check away Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 09/14] " Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 10/14] avcodec/mpegvideo_motion: Avoid constant function argument Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 11/14] avcodec/msmpeg4enc: Only calculate coded_cbp when used Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 12/14] avcodec/mpegvideo: Only allocate coded_block when needed Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 13/14] avcodec/mpegvideo: Don't reset coded_block unnecessarily Andreas Rheinhardt
2024-04-29 0:35 ` [FFmpeg-devel] [PATCH 14/14] avcodec/mpegvideo: Only allocate cbp_table, pred_dir_table when needed Andreas Rheinhardt
2024-04-29 21:13 ` [FFmpeg-devel] [PATCH 15/57] avcodec/mpegpicture: Always reset motion val buffer Andreas Rheinhardt
2024-04-29 21:13 ` [FFmpeg-devel] [PATCH 16/57] avcodec/mpegvideo: Redo aligning mb_height for VC-1 Andreas Rheinhardt
2024-04-29 21:13 ` [FFmpeg-devel] [PATCH 17/57] avcodec/mpegvideo, mpegpicture: Add buffer pool Andreas Rheinhardt
2024-04-30 20:40 ` Michael Niedermayer
2024-04-30 20:58 ` James Almer
2024-04-30 21:07 ` Andreas Rheinhardt
2024-04-30 21:06 ` Andreas Rheinhardt
2024-04-29 21:13 ` [FFmpeg-devel] [PATCH 18/57] avcodec/mpegpicture: Reindent after the previous commit Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 19/57] avcodec/mpegpicture: Use RefStruct-pool API Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 20/57] avcodec/mpegvideo: Shorten variable names Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 21/57] avcodec/mpegpicture: Reduce value of MAX_PLANES define Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 22/57] avcodec/mpegpicture: Cache AVFrame.data and linesize values Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 23/57] avcodec/rv30, rv34, rv40: Avoid indirection Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 24/57] avcodec/mpegvideo: Add const where appropriate Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 25/57] avcodec/vc1_pred: Remove unused function parameter Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 26/57] avcodec/mpegpicture: Improve error messages and code Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 27/57] avcodec/mpegpicture: Split ff_alloc_picture() into check and alloc part Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 28/57] avcodec/mpegvideo_enc: Pass AVFrame*, not Picture* to alloc_picture() Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 29/57] avcodec/mpegvideo_enc: Move copying properties " Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 30/57] avcodec/mpegpicture: Rename Picture->MPVPicture Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 31/57] avcodec/mpegpicture: Split MPVPicture into WorkPicture and ordinary Pic Andreas Rheinhardt
2024-04-30 18:57 ` Michael Niedermayer
2024-04-30 19:07 ` Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 32/57] avcodec/error_resilience: Deduplicate cleanup code Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 33/57] avcodec/mpegvideo_enc: Factor setting length of B frame chain out Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 34/57] avcodec/mpegvideo_enc: Return early when getting length of B frame chain Andreas Rheinhardt
2024-04-29 21:14 ` Andreas Rheinhardt [this message]
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 36/57] avcodec/mpeg12dec: Don't initialize inter tables for IPU Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 37/57] avcodec/mpeg12dec: Only initialize IDCT " Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 38/57] avcodec/mpeg12dec: Remove write-only assignment Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 39/57] avcodec/mpeg12dec: Set out_format only once Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 40/57] avformat/riff: Declare VCR2 to be MPEG-2 Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 41/57] avcodec/mpegvideo_dec: Add close function for mpegvideo-decoders Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 42/57] avcodec/mpegpicture: Make MPVPicture refcounted Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 43/57] avcodec/mpeg4videoenc: Avoid branch for writing stuffing Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 44/57] avcodec/mpeg4videoenc: Simplify writing startcodes Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 45/57] avcodec/mpegpicture: Use ThreadProgress instead of ThreadFrame API Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 46/57] avcodec/mpegpicture: Avoid loop and branch when setting motion_val Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 47/57] avcodec/mpegpicture: Use union for b_scratchpad and rd_scratchpad Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 48/57] avcodec/mpegpicture: Avoid MotionEstContext in ff_mpeg_framesize_alloc() Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 49/57] avcodec/mpegvideo_enc: Unify initializing PutBitContexts Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 50/57] avcodec/mpeg12enc: Simplify writing startcodes Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 51/57] avcodec/mpegvideo_dec: Simplify check for "does pic exist?" Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 52/57] avcodec/mpegvideo_dec: Don't sync encoder-only coded_picture_number Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 53/57] avcodec/mpeg12dec: Pass Mpeg1Context* in mpeg_field_start() Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 54/57] avcodec/mpeg12dec: Don't initialize inter_scantable Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 55/57] avcodec/mpegvideo: Remove pblocks Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 56/57] avcodec/mpegvideo: Use enum for msmpeg4_version Andreas Rheinhardt
2024-04-29 21:14 ` [FFmpeg-devel] [PATCH 57/57] avcodec/ituh263enc: Remove redundant check 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=AS8P250MB07441F8B119495BFF7F0EE778F1B2@AS8P250MB0744.EURP250.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