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--