From: Gyan Doshi <ffmpeg@gyani.pro>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH v3 1/4] avformat/movenc: fix assert failure in get_cluster_duration()
Date: Sun, 27 Feb 2022 12:19:06 +0530
Message-ID: <ae6c861f-20dd-014d-5d4c-dea4c11c2fa3@gyani.pro> (raw)
In-Reply-To: <tencent_DCA60150A326C367DC6A8D133B1C6D4B9D06@qq.com>
On 2022-02-27 12:04 pm, "zhilizhao(赵志立)" wrote:
> Ping.
>
>> On Dec 31, 2021, at 7:36 PM, Zhao Zhili <quinkblack@foxmail.com> wrote:
>>
>> When editlist is disabled, the workaournd method of shift dts to
>> zero and increase the first sample duration doesn't work if the
>> timestamp is larger than mp4 spec restriction (e.g., sample_delta
>> in stts entry). Further more, it triggers get_cluster_duration()
>> assert failure. This patch will drop large offsets between
>> multiple tracks.
>> ---
>> libavformat/movenc.c | 13 ++++++++++++-
>> 1 file changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
>> index 0f912dd012..f5bb785b01 100644
>> --- a/libavformat/movenc.c
>> +++ b/libavformat/movenc.c
>> @@ -5917,7 +5917,18 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt)
>> * to signal the difference in starting time without an edit list.
>> * Thus move the timestamp for this first sample to 0, increasing
>> * its duration instead. */
>> - trk->cluster[trk->entry].dts = trk->start_dts = 0;
>> + if (pkt->dts + pkt->duration <= INT32_MAX) {
>> + trk->cluster[trk->entry].dts = trk->start_dts = 0;
>> + } else {
>> + /* Impossible to write a sample duration >= UINT32_MAX.
As per 14496-12 (2005), sample_delta is stored as
unsigned int(32) sample_delta;
The only restriction is that no delta shall be zero except the last
sample, which means UINT32_MAX is allowed.
INT32_MAX had been set as max allowed delta in mov.c since inception.
See my recent changes in mov.c correcting that.
Will this patch break remuxing of files with large deltas?
Let's not clamp if the spec does not call for it.
Regards,
Gyan
_______________________________________________
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:[~2022-02-27 6:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-31 11:36 Zhao Zhili
2022-02-27 6:34 ` "zhilizhao(赵志立)"
2022-02-27 6:49 ` Gyan Doshi [this message]
2022-02-27 12:42 ` Paul B Mahol
2022-03-01 13:32 ` "zhilizhao(赵志立)"
2022-03-29 4:59 ` "zhilizhao(赵志立)"
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=ae6c861f-20dd-014d-5d4c-dea4c11c2fa3@gyani.pro \
--to=ffmpeg@gyani.pro \
--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