From patchwork Thu Aug 22 16:55:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 51113 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:4062:b0:48e:c0f8:d0de with SMTP id kz34csp1182455vqb; Thu, 22 Aug 2024 09:55:53 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVbDdu8StUHtEsvt9tMI+vA5M7cxdZdIVFiXtzKZzTTjbLrOU3k5EFEuoZEPZ+gaZ6Txg/xFW9goxkbrPxBVaYe@gmail.com X-Google-Smtp-Source: AGHT+IFirxRCF+MUucKFcWwAEAiAWqLezARPHxHxeCo4OdVNnxKD6jikUerEkv/2gRWS7VVtyfbn X-Received: by 2002:a05:6512:3f12:b0:52e:ccf5:7c40 with SMTP id 2adb3069b0e04-533485f69f9mr2305060e87.9.1724345753146; Thu, 22 Aug 2024 09:55:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1724345753; cv=none; d=google.com; s=arc-20240605; b=gJwSqYHAdd+ugz4THKBYcHv6LMPagh8JyU/nyf7ooLudrSfuQ6bEiTLMh5zzC4QBVH gxtZygvfIGfp3+PqiORKA1lGTmk9qqXaxx6gb9rxTZteKceKqUkALJY+vk6hwmivFz8a r8nlsTE1R08xVZA2K3ToyWASOY9aUeIEvNyqI8M70YciuhcHkK25EoHOrK3R5ySYaJ7Y /o31im7QHvuboeJBHZNUX/qlWHWoe0QsKSSU5whXLFKEu2YJ+wGB7/htLDgDbiDuzqtz BDVmsu3+m8TE8NClmNjii9mbf+mOAhbMI49LNhEK0+WIrvCilCa5pheEj/ucE9ijTerA 7VKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=FiA3rVJpwBNyGti7QQNslGVgadJ9EDx00Lyi2oNvLjY=; fh=zgMS+X4RExv2k7fU8QdWClnqVJdqO/9UbUuBS5xxJDs=; b=Mj5uO7wJMmTPfOttCb1hwOxbtte8gKH/aLt10YKfoWImYqzS6SVdQAyouoKE2IWdRQ ZWiMoQWSm1iw+p94tfFfszM8Pd4dywS6EqrcC5ra5aVdKtwNclafycbJJ3nBVcMkC40V KzKVUSe/ECb6IDVcajtdZWVm0lFz7giPlpCruKcW8HxfUKOvP6+Et4nbOpQVAdAaHYR4 6k+zt+sFR3L3QcF8iaNgnHxeCvaa00ZWUfVTJ05aoOSBLit19iy5wfZcuUeQNLckJT2w iEZqnmtcVOunEeKRj+cVPsigp4TlsEzVfEp4HH3FVdO8hyYXkxpLXD+i3628Ii7n5IXr YwjQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=cji.paris Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-5334ea2b54bsi694826e87.130.2024.08.22.09.55.52; Thu, 22 Aug 2024 09:55:53 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=cji.paris Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C92F68DB88; Thu, 22 Aug 2024 19:55:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EDD8268DB53 for ; Thu, 22 Aug 2024 19:55:40 +0300 (EEST) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 151963FE62; Thu, 22 Aug 2024 16:55:40 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Aug 2024 18:55:32 +0200 Message-Id: <20240822165533.476916-1-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/mxfenc: Fix guess frame_rate X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 8Tz0x1XS3mMA The input time_base was a bad guess. Currently, fate-time_base test data assumed that overriding the input time_base would affect the frame_rate, but this behaviour is not documented, so just fix the fate data now that this is fixed. Fix regression since 10185e2d4c1e9839bc58a1d6a63c861677b13fd0: previously, when streamcopying, the time_base was guessed from the frame_rate considering it is often constant, so guessing the frame_rate back from the time_base was often not a problem. To reproduce: ffmpeg -i fate-suite/mpeg2/dvd_still_frame.vob -an -c copy out.mxf Signed-off-by: Nicolas Gaullier --- libavformat/mxfenc.c | 9 +++++++-- tests/ref/fate/time_base | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 4ac6a2d715..a814f15609 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2894,8 +2894,13 @@ static int mxf_init(AVFormatContext *s) if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(st->codecpar->format); - // TODO: should be avg_frame_rate - AVRational tbc = st->time_base; + AVRational frame_rate = (AVRational){ 0, 1 }; + if (st->avg_frame_rate.num > 0 && st->avg_frame_rate.den > 0) + frame_rate = st->avg_frame_rate; + else if (st->r_frame_rate.num > 0 && st->r_frame_rate.den > 0) + frame_rate = st->r_frame_rate; + AVRational tbc = av_inv_q(frame_rate); + // Default component depth to 8 sc->component_depth = 8; sc->h_chroma_sub_sample = 2; diff --git a/tests/ref/fate/time_base b/tests/ref/fate/time_base index fd6cac53fc..23875d1fb8 100644 --- a/tests/ref/fate/time_base +++ b/tests/ref/fate/time_base @@ -1 +1 @@ -d408aba82d62a90ed7f46a1999b014f1 +b28d4ca13029fdc80a114b56467be9d7 From patchwork Thu Aug 22 16:55:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 51114 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:4062:b0:48e:c0f8:d0de with SMTP id kz34csp1182525vqb; Thu, 22 Aug 2024 09:56:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVQY6kuOeGTJ2c5uqPtPf5SSF8LT9ffxsDr3X/vy2JvHGqKsk+iFOTuwu9naa1kGPBi5pPMRfHqMLf5EqYuwYl7@gmail.com X-Google-Smtp-Source: AGHT+IG+A6jD/YJZcP1bItVfGLfNE9i3xxfHAY4l6CnmOS5HaoR3zQIsPYrv+jggkCL43rwLvJ44 X-Received: by 2002:a05:6402:51c6:b0:5af:6c44:6807 with SMTP id 4fb4d7f45d1cf-5bf1f2c1ef2mr2434251a12.6.1724345763786; Thu, 22 Aug 2024 09:56:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1724345763; cv=none; d=google.com; s=arc-20160816; b=sT1f3eXRTpQG3EDYOf9pvR36scbD7a/sAHaVLu+DtuOaR7biBQcoJVRRWipQM+Y49x mNNuKgQ7vNiqZuSuB0ldJ6y1UGv5zCovoL/FIYpkGqZIv3VvokG1GKJy5ABQbfDa3tFR 7Hg2XbjNPjykquJLvPAeUY5XirCmey/OEZN3qVKNsrtJeP0KOT9sUKm1jDacBHc8xjya 3vx3uyvePT2RUu74hjXlw2uN6Gt1vXB8czNkRRTwoY+1pDFHyecXTb/7G7V65f08LPmz sxRd16AH74vuv7YMObJbTZY03b0rg+d3WrCbnd4y4l3rRqJT7eiQg/01iq8tFnX2HA1g spYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=rdAl25EIZygT8do94l78kIPYM1xqiLIQevj+O40Cn1E=; fh=zgMS+X4RExv2k7fU8QdWClnqVJdqO/9UbUuBS5xxJDs=; b=pvwFxVikwBjPpk+SIEKIWKo7hmLw8yGs9/Hc7L1gLHH/8a6bLj7KfYtPhR21q5aBjs h1bqe/7DZ8CA2QIK9wm5N6+1EjaQmd098VgppCyV1igGqCnu+X05FWVtZ7UWbTl31nSh IuircTkwlmQrwGVj8oGzFyVEnFBd2NpCY2KAfH6Vdmk+soMwpHHBwWqW9WpEaL9tzH/k C2UqT+i+c7ph5l9HXJYxE78hxTLThktInhxnFiul6yUixVntTqjlBOkDXq+Tpv+q8m4c 6GhgC9Zcw6qGilI3rIl1ljegUQMI6m2KyBs/x3scFriyMFWIiHrP0QaujwyiMdprWPIF OIuA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=cji.paris Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c0515f98a0si1312755a12.505.2024.08.22.09.56.01; Thu, 22 Aug 2024 09:56:03 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=cji.paris Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9A7E068DC8E; Thu, 22 Aug 2024 19:55:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-2.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0882E68DC73 for ; Thu, 22 Aug 2024 19:55:44 +0300 (EEST) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-2.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 89136401A0; Thu, 22 Aug 2024 16:55:43 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Aug 2024 18:55:33 +0200 Message-Id: <20240822165533.476916-2-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240822165533.476916-1-nicolas.gaullier@cji.paris> References: <20240822165533.476916-1-nicolas.gaullier@cji.paris> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] tests: Remove void time_base overrides when streamcopying to mxf X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: mkziIfdh/pg0 For fate-copy-trac4914, this is a revert of 10185e2d4c1e9839bc58a1d6a63c861677b13fd0. Signed-off-by: Nicolas Gaullier --- tests/fate/ffmpeg.mak | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index 9e0c68da20..4f15356e0e 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -146,7 +146,7 @@ fate-copy-trac236: CMD = transcode mov $(TARGET_SAMPLES)/mov/fcp_export8-236.mov FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO MPEG2VIDEO, MXF, MPEGTS_DEMUXER MPEGVIDEO_PARSER MPEGAUDIO_PARSER MP2_DECODER ARESAMPLE_FILTER PCM_S16LE_DECODER) += fate-copy-trac4914 fate-copy-trac4914: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\ - mxf "-c:a pcm_s16le -af aresample -c:v copy -time_base 1001/30000" + mxf "-c:a pcm_s16le -af aresample -c:v copy" FATE_STREAMCOPY-$(call TRANSCODE, RAWVIDEO MPEG2VIDEO, AVI, MPEGTS_DEMUXER MPEGVIDEO_PARSER MPEGAUDIO_PARSER EXTRACT_EXTRADATA_BSF MP2_DECODER ARESAMPLE_FILTER) += fate-copy-trac4914-avi fate-copy-trac4914-avi: CMD = transcode mpegts $(TARGET_SAMPLES)/mpeg2/xdcam8mp2-1s_small.ts\ @@ -220,7 +220,7 @@ FATE_SAMPLES_FFMPEG-$(call DEMMUX, APNG, FRAMECRC, SETTS_BSF PIPE_PROTOCOL) += f fate-ffmpeg-setts-bsf: CMD = framecrc -i $(TARGET_SAMPLES)/apng/clock.png -c:v copy -bsf:v "setts=duration=if(eq(NEXT_PTS\,NOPTS)\,PREV_OUTDURATION\,(NEXT_PTS-PTS)/2):ts=PTS/2" -fflags +bitexact FATE_TIME_BASE-$(call PARSERDEMDEC, MPEGVIDEO, MPEGPS, MPEG2VIDEO, MPEGVIDEO_DEMUXER MXF_MUXER) += fate-time_base -fate-time_base: CMD = md5 -i $(TARGET_SAMPLES)/mpeg2/dvd_single_frame.vob -an -sn -c:v copy -r 25 -time_base 1001:30000 -fflags +bitexact -f mxf +fate-time_base: CMD = md5 -i $(TARGET_SAMPLES)/mpeg2/dvd_single_frame.vob -an -sn -c:v copy -fflags +bitexact -f mxf FATE_SAMPLES_FFMPEG-yes += $(FATE_TIME_BASE-yes)