From patchwork Fri Oct 16 13:16:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 23016 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E9A3C44B20D for ; Fri, 16 Oct 2020 16:24:56 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C5D0968BA27; Fri, 16 Oct 2020 16:24:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E5B8968B739 for ; Fri, 16 Oct 2020 16:24:49 +0300 (EEST) Received: by mail-ed1-f47.google.com with SMTP id o18so2360376edq.4 for ; Fri, 16 Oct 2020 06:24:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=PU4/7zjxp0+xS8XuUAJfv4PSnski3aJb/MMEZ7+XwY8=; b=q+6fmdw3KiObMkhl/CGh6BfPpS3SmTTnBiEi2nIjBlTa7zKLWiIjpXPEQ5GKsTLgIp GNE6fLx0r9w6qg1n4sI+ao9cziEUYLKUsG+qVYrt8iznpreJ9enfNKPgaoTjmfEJWZto IJtdH1tkSnKwj8UUzlCcDhTIAkx+VqcAXvB+tastnycanzC7cwq+phH6gL0hjGzJjdJB nxyXz6jM0+tlFYXLaAtG2ZNNZPkHPaMj7liBPfGNB3ZM3NkIkTpNAY4UPCTp/cB6FveI INPD4DBP7emahGHJoNTOlWJU6DIE2SUeAUeaOHq1gvMeGwjixq+cFVS/CvRCpF1wEp8R avqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PU4/7zjxp0+xS8XuUAJfv4PSnski3aJb/MMEZ7+XwY8=; b=H4kBTGG9lm+XfUuPJVkDW29zRloqykLTYjJEgWCd3rbBJbyRSC8x1g+tAJYwo1/gut GAhneWKMQNg9NDnD5mCDeTfWJk+3dSpXKe/h7QCD1a7ZtQt5xOCGvZdHLV3iwteaRCOi h2KFyesp7aVK3QxuD/apd2hUtTNxtMM+b4/Cd+uYwxAH5haDl9+BBSlUygm5gLlYNf0H ItVp9nNhKbJvSSHkSZwXwIdv+99Bebzn5zN8iNVeeVnU36HsUg6HX81G4eTTIL0fYLHp ECce3MBYRAWk4t4TC4mvVxUJe9KsL4ddQz2H5xIrjlhHtZI6UPcEQJSMGrGpN5V7WkmU ZiCw== X-Gm-Message-State: AOAM530jD2OmWTRvNsbUtaiV4OF1uPSer+DKVBLu66NtcHeHJ0clTKzE BS7YqjQUnOTRuP/L8x+ffaRyotbXijI= X-Google-Smtp-Source: ABdhPJxXLiFfX1VnLKA1SFTOriRuhcD80Ip0EjE5ugztfj0JubyxcE7ToI4WoI/9dAbcOPVsJZ5PRg== X-Received: by 2002:a2e:9c84:: with SMTP id x4mr1480995lji.326.1602854222285; Fri, 16 Oct 2020 06:17:02 -0700 (PDT) Received: from localhost.localdomain (n89ridqjqdjpsztph-2.v6.elisa-mobile.fi. [2001:999:11:8336:994:7f72:f89e:9125]) by smtp.gmail.com with ESMTPSA id x13sm280594lfe.101.2020.10.16.06.17.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Oct 2020 06:17:01 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 16 Oct 2020 16:16:48 +0300 Message-Id: <20201016131649.4361-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201016131649.4361-1-jeebjp@gmail.com> References: <20201016131649.4361-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 5/6] ffmpeg: move field order decision making to encoder initialization X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" We now have the possibility of getting AVFrames here, and we should not touch the muxer's codecpar after writing the header. --- fftools/ffmpeg.c | 27 ++++++++++--------- .../fate/concat-demuxer-extended-lavf-mxf_d10 | 2 +- .../fate/concat-demuxer-simple1-lavf-mxf_d10 | 2 +- tests/ref/fate/rgb24-mkv | 4 +-- tests/ref/lavf/mxf_d10 | 2 +- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index b2e210c814..1c95890f08 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1117,7 +1117,6 @@ static void do_video_out(OutputFile *of, int ret, format_video_sync; AVPacket pkt; AVCodecContext *enc = ost->enc_ctx; - AVCodecParameters *mux_par = ost->st->codecpar; AVRational frame_rate; int nb_frames, nb0_frames, i; double delta, delta0; @@ -1279,18 +1278,6 @@ static void do_video_out(OutputFile *of, if (!check_recording_time(ost)) return; - if (enc->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) && - ost->top_field_first >= 0) - in_picture->top_field_first = !!ost->top_field_first; - - if (in_picture->interlaced_frame) { - if (enc->codec->id == AV_CODEC_ID_MJPEG) - mux_par->field_order = in_picture->top_field_first ? AV_FIELD_TT:AV_FIELD_BB; - else - mux_par->field_order = in_picture->top_field_first ? AV_FIELD_TB:AV_FIELD_BT; - } else - mux_par->field_order = AV_FIELD_PROGRESSIVE; - in_picture->quality = enc->global_quality; in_picture->pict_type = 0; @@ -3435,6 +3422,20 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame) enc_ctx->field_order = AV_FIELD_TT; } + if (frame) { + if (enc_ctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) && + ost->top_field_first >= 0) + frame->top_field_first = !!ost->top_field_first; + + if (frame->interlaced_frame) { + if (enc_ctx->codec->id == AV_CODEC_ID_MJPEG) + enc_ctx->field_order = frame->top_field_first ? AV_FIELD_TT:AV_FIELD_BB; + else + enc_ctx->field_order = frame->top_field_first ? AV_FIELD_TB:AV_FIELD_BT; + } else + enc_ctx->field_order = AV_FIELD_PROGRESSIVE; + } + if (ost->forced_keyframes) { if (!strncmp(ost->forced_keyframes, "expr:", 5)) { ret = av_expr_parse(&ost->forced_keyframes_pexpr, ost->forced_keyframes+5, diff --git a/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 b/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 index e3e76f217a..f6efc00ca4 100644 --- a/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 +++ b/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 @@ -1 +1 @@ -d66177ea3922692bc91cd0f8aa907650 *tests/data/fate/concat-demuxer-extended-lavf-mxf_d10.ffprobe +84496cfe2d668db395280ea67e5c6fbe *tests/data/fate/concat-demuxer-extended-lavf-mxf_d10.ffprobe diff --git a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 index 79ce1e2306..8f3f2e5265 100644 --- a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 +++ b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 @@ -78,5 +78,5 @@ video|0|34|1.360000|34|1.360000|1|0.040000|N/A|N/A|150000|1924096|K_|1 Strings Metadata audio|1|65280|1.360000|65280|1.360000|1920|0.040000|N/A|N/A|7680|2074624|K_|1 Strings Metadata -0|mpeg2video|0|video|1/25|[0][0][0][0]|0x0000|720|608|0|0|0|0|1:1|45:38|yuv422p|5|tv|unknown|unknown|unknown|topleft|tt|N/A|1|N/A|25/1|25/1|1/25|0|0.000000|N/A|N/A|30000000|N/A|N/A|N/A|N/A|35|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 +0|mpeg2video|0|video|1/25|[0][0][0][0]|0x0000|720|608|0|0|0|0|1:1|45:38|yuv422p|5|tv|unknown|unknown|unknown|topleft|tb|N/A|1|N/A|25/1|25/1|1/25|0|0.000000|N/A|N/A|30000000|N/A|N/A|N/A|N/A|35|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 1|pcm_s16le|unknown|audio|1/48000|[0][0][0][0]|0x0000|s16|48000|2|unknown|16|N/A|0/0|0/0|1/48000|0|0.000000|N/A|N/A|1536000|N/A|N/A|N/A|N/A|35|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 diff --git a/tests/ref/fate/rgb24-mkv b/tests/ref/fate/rgb24-mkv index 34d028cbfd..3b14cd0ef0 100644 --- a/tests/ref/fate/rgb24-mkv +++ b/tests/ref/fate/rgb24-mkv @@ -1,5 +1,5 @@ -fdc02d700dbe99315a9f0d928a9b935e *tests/data/fate/rgb24-mkv.matroska -58213 tests/data/fate/rgb24-mkv.matroska +fde8903c4df0ba8235dafcfd8a2f368c *tests/data/fate/rgb24-mkv.matroska +58216 tests/data/fate/rgb24-mkv.matroska #tb 0: 1/10 #media_type 0: video #codec_id 0: rawvideo diff --git a/tests/ref/lavf/mxf_d10 b/tests/ref/lavf/mxf_d10 index 85e337d157..30701619e0 100644 --- a/tests/ref/lavf/mxf_d10 +++ b/tests/ref/lavf/mxf_d10 @@ -1,3 +1,3 @@ -36fc2a640368f6d33987d2b2d39df966 *tests/data/lavf/lavf.mxf_d10 +da0ebbebb50a530b14c0f06017f464b3 *tests/data/lavf/lavf.mxf_d10 5332013 tests/data/lavf/lavf.mxf_d10 tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488