From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 971014D085 for <ffmpegdev@gitmailbox.com>; Thu, 17 Apr 2025 09:17:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1913168A091; Thu, 17 Apr 2025 12:17:07 +0300 (EEST) Received: from server.hege.cc (server.hege.cc [195.201.47.152]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D56BA687D8F for <ffmpeg-devel@ffmpeg.org>; Thu, 17 Apr 2025 12:17:00 +0300 (EEST) Received: from [0.0.0.0] (dynamic-2a02-3100-29ef-9000-ba27-ebff-fe76-29ff.310.pool.telefonica.de [IPv6:2a02:3100:29ef:9000:ba27:ebff:fe76:29ff]) (Authenticated sender: gabriel@hege.cc) by server.hege.cc (Postfix) with ESMTPSA id 620CE473A34 for <ffmpeg-devel@ffmpeg.org>; Thu, 17 Apr 2025 11:16:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hege.cc; s=mail; t=1744881419; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=6yisuUNxszLI+0SAVEPkGXiHKxEc4EHCvqwrIlB6rvU=; b=vrHhLI3UqZQRVPKmILblN0pLt2WEHt3+zzyvV85qYRtPgWunXpPT03fDo58hslJpvXo468 xbLiqftSXgfAM+9OXVHu3WZfK9izOLjYEY4VhdY5YLLoTLFlKQ9bRU2STTePMjHz/oevpA 7tsqzVnBtG5aEuaEV29Ms/uQKR2ZrCtVl7XIxE5WyY24xF+tlWeZrckTAgWMbuQlYKzuXE FmZpEXeg3AG1sZqyEMcbnDmaK3s3qUA42HB9yLPrD+ZaT1375U4wr0nBM3I3+c8J1HxIXq EMVOq8DT/83cfaCx1pL6l/yT3id3Uoyx9TR4yGIZw5HAVa8gehIhFh6di1ARNw== Content-Type: multipart/mixed; boundary="------------z5avHc0oEWWbrV5iJPwzfPnr" Message-ID: <83276abb-7b9e-4ad1-8d2e-683de63cbf26@hege.cc> Date: Thu, 17 Apr 2025 11:16:57 +0200 MIME-Version: 1.0 User-Agent: Betterbird (Linux) From: Gabriel Hege <g+ffmpeg@hege.cc> Content-Language: en-US, de-DE To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] fix VVC encoding with leading pictures X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/83276abb-7b9e-4ad1-8d2e-683de63cbf26@hege.cc/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> This is a multi-part message in MIME format. --------------z5avHc0oEWWbrV5iJPwzfPnr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The default behavior for VVenC (since v1.10.0) is to create an IDR with leading pictures for the first picture in decoding order (POC 32). This leads to FFmpeg generating an edit list with an empty entry, skipping the leading pictures. This patch fixes the calculation for the start_pts, while the DTS is negative (as produced by libvvenc). How to reproduce the issue (needs --enable-libvvenc and a recent libvvenc, e.g. v1.13): Encode VVC directly into MP4 container: ./ffmpeg -i /data/YUV/foreman_352x288_30Hz_i420_8.y4m -an -preset faster -vcodec vvc test.mp4 -> encodes 300 frames. Decode to YUV (or play back using ffplay): ./ffmpeg -i test.mp4 test.yuv -> outputs 271 frames When dumping the mp4-structure using 'MP4Box -diso test.mp4', I see the following EditListBox, which skips the first couple of frames:<EditListBox Size="40" Type="elst" Version="0" Flags="0" Specification="p12" Container="edts" EntryCount="2"> <EditListEntry Duration="1033" MediaTime="-1" MediaRate="1"/> <EditListEntry Duration="8967" MediaTime="18432" MediaRate="1"/> </EditListBox> With the fix applied 300 frames are decoded as expected and the EditListBox looks like this: <EditListBox Size="28" Type="elst" Version="0" Flags="0" Specification="p12" Container="edts" EntryCount="1"> <EditListEntry Duration="10000" MediaTime="2560" MediaRate="1"/> </EditListBox> --------------z5avHc0oEWWbrV5iJPwzfPnr Content-Type: text/x-patch; charset=UTF-8; name="0001-fix-VVC-encoding-with-leading-pictures.patch" Content-Disposition: attachment; filename="0001-fix-VVC-encoding-with-leading-pictures.patch" Content-Transfer-Encoding: base64 RnJvbSBhY2JhZmVhZWI3OTI2YWY0OTVhOWMzNzU5MDNiMGMxOTBhZjZhZjg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHYWJyaWVsIEhlZ2UgPGcrZmZtcGVnQGhlZ2UuY2M+ CkRhdGU6IFdlZCwgMTYgQXByIDIwMjUgMTM6NTE6MDYgKzAyMDAKU3ViamVjdDogW1BBVENI XSBmaXggVlZDIGVuY29kaW5nIHdpdGggbGVhZGluZyBwaWN0dXJlcwoKVGhlIGRlZmF1bHQg YmVoYXZpb3IgZm9yIFZWZW5DIChzaW5jZSB2MS4xMC4wKSBpcyB0byBjcmVhdGUgYW4gSURS IHdpdGgKbGVhZGluZyBwaWN0dXJlcyBmb3IgdGhlIGZpcnN0IHBpY3R1cmUgaW4gZGVjb2Rp bmcgb3JkZXIgKFBPQyAzMikuIFRoaXMKbGVhZHMgdG8gRkZtcGVnIGdlbmVyYXRpbmcgYW4g ZWRpdCBsaXN0IHdpdGggYW4gZW1wdHkgZW50cnksIHNraXBwaW5nCnRoZSBsZWFkaW5nIHBp Y3R1cmVzLgoKVGhpcyBwYXRjaCBmaXhlcyB0aGUgY2FsY3VsYXRpb24gZm9yIHRoZSBzdGFy dF9wdHMsIHdoaWxlIHRoZSBEVFMgaXMKbmVnYXRpdmUgKGFzIHByb2R1Y2VkIGJ5IHZ2ZW5j KS4KClNpZ25lZC1vZmYtYnk6IEdhYnJpZWwgSGVnZSA8ZytmZm1wZWdAaGVnZS5jYz4KLS0t CiBsaWJhdmZvcm1hdC9tb3ZlbmMuYyB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9t b3ZlbmMuYyBiL2xpYmF2Zm9ybWF0L21vdmVuYy5jCmluZGV4IDRiYzhiZDFiMmEuLjMwNWY5 MjAwMjIgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21vdmVuYy5jCisrKyBiL2xpYmF2Zm9y bWF0L21vdmVuYy5jCkBAIC0zOTY2LDcgKzM5NjYsNyBAQCBzdGF0aWMgaW50IG1vdl93cml0 ZV9lZHRzX3RhZyhBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleHQgKm1vdiwKICAgICBp bnQgZmxhZ3MgPSAwOwogCiAgICAgaWYgKHRyYWNrLT5lbnRyeSkgewotICAgICAgICBpZiAo c3RhcnRfZHRzICE9IHRyYWNrLT5jbHVzdGVyWzBdLmR0cyB8fCBzdGFydF9jdCAhPSB0cmFj ay0+Y2x1c3RlclswXS5jdHMpIHsKKyAgICAgICAgaWYgKHN0YXJ0X2R0cyAhPSB0cmFjay0+ Y2x1c3RlclswXS5kdHMgfHwgKHN0YXJ0X2N0ICE9IHRyYWNrLT5jbHVzdGVyWzBdLmN0cyAm JiB0cmFjay0+Y2x1c3RlclswXS5kdHMgPj0gMCkpIHsKIAogICAgICAgICAgICAgYXZfbG9n KG1vdi0+ZmMsIEFWX0xPR19ERUJVRywKICAgICAgICAgICAgICAgICAgICAiRURUUyB1c2lu ZyBkdHM6JSJQUklkNjQiIGN0czolZCBpbnN0ZWFkIG9mIGR0czolIlBSSWQ2NCIgY3RzOiUi UFJJZDY0IiB0aWQ6JWRcbiIsCkBAIC02OTI4LDcgKzY5MjgsNyBAQCBpbnQgZmZfbW92X3dy aXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCiAgICAgICAg IHRyay0+ZmxhZ3MgfD0gTU9WX1RSQUNLX0NUVFM7CiAgICAgdHJrLT5jbHVzdGVyW3Ryay0+ ZW50cnldLmN0cyAgID0gcGt0LT5wdHMgLSBwa3QtPmR0czsKICAgICB0cmstPmNsdXN0ZXJb dHJrLT5lbnRyeV0uZmxhZ3MgPSAwOwotICAgIGlmICh0cmstPnN0YXJ0X2N0cyA9PSBBVl9O T1BUU19WQUxVRSkKKyAgICBpZiAodHJrLT5zdGFydF9jdHMgPT0gQVZfTk9QVFNfVkFMVUUg fHwgKHBrdC0+ZHRzIDw9IDAgJiYgdHJrLT5zdGFydF9jdHMgPiBwa3QtPnB0cyAtIHBrdC0+ ZHRzKSkKICAgICAgICAgdHJrLT5zdGFydF9jdHMgPSBwa3QtPnB0cyAtIHBrdC0+ZHRzOwog ICAgIGlmICh0cmstPmVuZF9wdHMgPT0gQVZfTk9QVFNfVkFMVUUpCiAgICAgICAgIHRyay0+ ZW5kX3B0cyA9IHRyay0+Y2x1c3Rlclt0cmstPmVudHJ5XS5kdHMgKwotLSAKMi40My4wCgo= --------------z5avHc0oEWWbrV5iJPwzfPnr Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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". --------------z5avHc0oEWWbrV5iJPwzfPnr--