From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E1A7640B47 for ; Mon, 27 Dec 2021 19:08:51 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E39768B01C; Mon, 27 Dec 2021 21:08:50 +0200 (EET) Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9E66A68AE57 for ; Mon, 27 Dec 2021 21:08:43 +0200 (EET) Received: from localhost (213-47-68-29.cable.dynamic.surfer.at [213.47.68.29]) (Authenticated sender: michael@niedermayer.cc) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id E9944FF807 for ; Mon, 27 Dec 2021 19:08:42 +0000 (UTC) Date: Mon, 27 Dec 2021 20:08:41 +0100 From: Michael Niedermayer To: FFmpeg development discussions and patches Message-ID: <20211227190841.GW2829255@pb2> References: <20211227055711.63060-1-ffmpeg@gyani.pro> MIME-Version: 1.0 In-Reply-To: <20211227055711.63060-1-ffmpeg@gyani.pro> Subject: Re: [FFmpeg-devel] [PATCH] avformat/mov: correct 0 valued entries in stts 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 Content-Type: multipart/mixed; boundary="===============6482332430964069096==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --===============6482332430964069096== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="YlOmdgDTFxtsaaW3" Content-Disposition: inline --YlOmdgDTFxtsaaW3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Dec 27, 2021 at 11:27:10AM +0530, Gyan Doshi wrote: > As per ISO 14496-12, sample duration of 0 is invalid except for > the last entry. >=20 > In addition, also catch 0 value for sample count. > --- > libavformat/mov.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) >=20 > diff --git a/libavformat/mov.c b/libavformat/mov.c > index 2aed6e80ef..fb7406cdd6 100644 > --- a/libavformat/mov.c > +++ b/libavformat/mov.c > @@ -2968,6 +2968,18 @@ static int mov_read_stts(MOVContext *c, AVIOContex= t *pb, MOVAtom atom) > av_log(c->fc, AV_LOG_TRACE, "sample_count=3D%d, sample_duration= =3D%d\n", > sample_count, sample_duration); > =20 > + if (!sample_count) { > + av_log(c->fc, AV_LOG_WARNING, "invalid sample count of 0 in stts= for st %d at entry %u; changing to 1.\n", > + c->fc->nb_streams-1, i); > + sc->stts_data[i].count =3D sample_count =3D 1; > + } > + > + if (!sample_duration && i !=3D entries-1) { > + av_log(c->fc, AV_LOG_WARNING, "invalid sample delta of 0 in stts= for st %d at entry %u; changing to 1.\n", > + c->fc->nb_streams-1, i); > + sc->stts_data[i].duration =3D sample_duration =3D 1; > + } > + > duration+=3D(int64_t)sample_duration*(uint64_t)sample_count; > total_sample_count+=3Dsample_count; This does not produce the same output tickets/2096/m.f4v videos/stretch.mov (2344 matches for "invalid" after this patch)=20 tickets/976/CodecCopyFailing.mp4 But there are many more, some maybe even generated by FFmpeg Taking a step back, the problem started with=20 203b0e3561dea1ec459be226d805abe73e7535e5 which broke a real world file which was outside the specification you then suggested a fix which crashed with some fuzzed files which where outside the specification and now this fix on top which changes real world files which=20 are outside the specification I think, maybe you should consider the "outside the specification" more. The code above directly and intentionally changes values. So as a reviewer i have to ask the obvious, is that change a bugfix or a bug ? The change refers to the specification but the specification will not help me when it to comes to how to handle all the wierd and wonderful files the exist out there ... thx PS: also if you want to write fate tests for some of the odd files we find in the process here, this may be a good idea and might simplify future work [...] --=20 Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Complexity theory is the science of finding the exact solution to an approximation. Benchmarking OTOH is finding an approximation of the exact --YlOmdgDTFxtsaaW3 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EABEIAB0WIQSf8hKLFH72cwut8TNhHseHBAsPqwUCYcoPNgAKCRBhHseHBAsP q0jcAKCbl/uuTFmhoKBDI77fJYvGYQm5HwCdGEKKpeub6suip7czOE5LdFDtPNQ= =o9al -----END PGP SIGNATURE----- --YlOmdgDTFxtsaaW3-- --===============6482332430964069096== 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". --===============6482332430964069096==--