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 506504BCE3 for <ffmpegdev@gitmailbox.com>; Sun, 4 May 2025 14:04:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0FA7368B39C; Sun, 4 May 2025 17:04:43 +0300 (EEST) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8F41D687D4B for <ffmpeg-devel@ffmpeg.org>; Sun, 4 May 2025 17:04:35 +0300 (EEST) Received: by mail.gandi.net (Postfix) with ESMTPSA id D33EF43A2A for <ffmpeg-devel@ffmpeg.org>; Sun, 4 May 2025 14:04:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1746367475; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=vWWqsz/w6k1xr+ZinkNmMqazEu4+3Maqt6olNv18Q2U=; b=VujodqUlz3iCi236rdABHnJo+4u8UcA9BZBNWJqNLEvMhirmomwvP/XACX7+sRKAc1oWd+ qyzmdhCS6UOMsuSd5YJsMDYx0BM4wgli7RKtFrd2MfMzBCdGcTF+edpc7ca1kN3QwJda7N ptjFNmSL31mJ3FojEFF55Q4qI1ji5CAvEFSHKQJod6znmy/u2rHuYEASJW6ocjAq8IzNeV rTgL5jp2N2lTdz0674S8gc/b4CxpRrz+RPb78XSgEr5LMQ7OC5kzbi5hSCv0W5Ei9cX0OT 7KVLGBF+iNp3mjbpN01hDniVG5HdsKDP/IFFL9cXKcH1hgPg5t1Qyve20IEK5Q== Date: Sun, 4 May 2025 16:04:33 +0200 From: Michael Niedermayer <michael@niedermayer.cc> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Message-ID: <20250504140433.GB29660@pb2> References: <20250503170329.46135-1-romain.beauxis@gmail.com> <20250503170329.46135-2-romain.beauxis@gmail.com> MIME-Version: 1.0 In-Reply-To: <20250503170329.46135-2-romain.beauxis@gmail.com> X-GND-State: clean X-GND-Score: -85 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvjeekgedtucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenfghrlhcuvffnffculdduhedmnecujfgurhepfffhvffukfhfgggtuggjsehgtderredttddvnecuhfhrohhmpefoihgthhgrvghlucfpihgvuggvrhhmrgihvghruceomhhitghhrggvlhesnhhivgguvghrmhgrhigvrhdrtggtqeenucggtffrrghtthgvrhhnpeffledtfeevfeffheeuuefhtdejieelueeftdeitdfgheetgefffeefteekffdthfenucffohhmrghinhepfhhfmhhpvghgrdhorhhgnecukfhppeeguddrieeirdeijedruddufeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeeguddrieeirdeijedruddufedphhgvlhhopehlohgtrghlhhhoshhtpdhmrghilhhfrhhomhepmhhitghhrggvlhesnhhivgguvghrmhgrhigvrhdrtggtpdhnsggprhgtphhtthhopedupdhrtghpthhtohepfhhfmhhpvghgqdguvghvvghlsehffhhmphgvghdrohhrgh X-GND-Sasl: michael@niedermayer.cc Subject: Re: [FFmpeg-devel] [PATCH v3 1/2] libavformat/oggdec.c: Changing the packet() callback API/Return value 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> Content-Type: multipart/mixed; boundary="===============8182429576070159166==" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250504140433.GB29660@pb2/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> --===============8182429576070159166== Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="61jdw2sOBCFtR2d/" Content-Disposition: inline --61jdw2sOBCFtR2d/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, May 03, 2025 at 12:03:28PM -0500, Romain Beauxis wrote: > --- > libavformat/oggdec.c | 22 ++++++++++++++-------- > libavformat/oggdec.h | 6 ++++++ > 2 files changed, 20 insertions(+), 8 deletions(-) >=20 > diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c > index 5339fdd32c..9baf8040a9 100644 > --- a/libavformat/oggdec.c > +++ b/libavformat/oggdec.c > @@ -605,20 +605,26 @@ static int ogg_packet(AVFormatContext *s, int *sid,= int *dstart, int *dsize, > } else { > os->pflags =3D 0; > os->pduration =3D 0; > + > + ret =3D 0; > if (os->codec && os->codec->packet) { > if ((ret =3D os->codec->packet(s, idx)) < 0) { > av_log(s, AV_LOG_ERROR, "Packet processing failed: %s\n"= , av_err2str(ret)); > return ret; > } > } > - if (sid) > - *sid =3D idx; > - if (dstart) > - *dstart =3D os->pstart; > - if (dsize) > - *dsize =3D os->psize; > - if (fpos) > - *fpos =3D os->sync_pos; > + > + if (!ret) { > + if (sid) > + *sid =3D idx; > + if (dstart) > + *dstart =3D os->pstart; > + if (dsize) > + *dsize =3D os->psize; > + if (fpos) > + *fpos =3D os->sync_pos; > + } > + > os->pstart +=3D os->psize; > os->psize =3D 0; > if(os->pstart =3D=3D os->bufpos) > diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h > index 43df23f4cb..09f698f99a 100644 > --- a/libavformat/oggdec.h > +++ b/libavformat/oggdec.h > @@ -38,6 +38,12 @@ struct ogg_codec { > * -1 if an error occurred or for unsupported stream > */ > int (*header)(AVFormatContext *, int); > + /** > + * Attempt to process a packet as a data packet > + * @return 1 if the packet was a header from a chained bitstream. > + * 0 if the packet was a regular data packet. > + * -1 if an error occurred or for unsupported stream > + */ > int (*packet)(AVFormatContext *, int); > /** > * Translate a granule into a timestamp. Iam still confused by this If this changes the API for ogg_codec.packet() and in the same patch theres a change to ogg_packet() which uses ogg_codec.packet() but then there is a 2nd patch that actually changes the implementations of ogg_codec.packet() : so after the first patch, the API documentation is not correct, I thought that documentation and implementation change would happen in the same patch and the use of the more refined API would then be in a 2nd patch am i missing something here ? --- a/libavformat/oggparseopus.c +++ b/libavformat/oggparseopus.c @@ -125,6 +125,17 @@ static int opus_packet(AVFormatContext *avf, int idx) return AVERROR_INVALIDDATA; } + if (os->psize > 8 && !memcmp(packet, "OpusHead", 8)) { + if ((ret =3D ff_alloc_extradata(st->codecpar, os->psize)) < 0) + return ret; + + memcpy(st->codecpar->extradata, packet, os->psize); + return 1; + } + + if (os->psize > 8 && !memcmp(packet, "OpusTags", 8)) + return 1; + if ((!os->lastpts || os->lastpts =3D=3D AV_NOPTS_VALUE) && !(os->flags= & OGG_FLAG_EOS)) { int seg, d; int duration; const struct ogg_codec ff_opus_codec =3D { .name =3D "Opus", .magic =3D "OpusHead", .magicsize =3D 8, .header =3D opus_header, .packet =3D opus_packet, .nb_header =3D 1, diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index 9f50ab9ffc..8b4ae872d2 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -418,6 +418,7 @@ static int vorbis_packet(AVFormatContext *s, int idx) struct ogg_stream *os =3D ogg->streams + idx; struct oggvorbis_private *priv =3D os->private; int duration, flags =3D 0; + int skip_packet =3D 0; if (!priv->vp) return AVERROR_INVALIDDATA; @@ -480,7 +481,13 @@ static int vorbis_packet(AVFormatContext *s, int idx) if (duration < 0) { os->pflags |=3D AV_PKT_FLAG_CORRUPT; return 0; - } else if (flags & VORBIS_FLAG_COMMENT) { + } + + if (flags & + (VORBIS_FLAG_HEADER | VORBIS_FLAG_COMMENT | VORBIS_FLAG_SETUP)) + skip_packet =3D 1; + + if (flags & VORBIS_FLAG_COMMENT) { vorbis_update_metadata(s, idx); flags =3D 0; } @@ -505,7 +512,7 @@ static int vorbis_packet(AVFormatContext *s, int idx) priv->final_duration +=3D os->pduration; } - return 0; + return skip_packet; } > --=20 > 2.39.5 (Apple Git-154) >=20 > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >=20 > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >=20 --=20 Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB I have often repented speaking, but never of holding my tongue. -- Xenocrates --61jdw2sOBCFtR2d/ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EABEKAB0WIQSf8hKLFH72cwut8TNhHseHBAsPqwUCaBdz7gAKCRBhHseHBAsP q6krAJ0UkHyWD4aUhm84NUqnmnkdishcqgCgmlwAfB85o3EpSADXR0ei2ik1y7c= =2pd6 -----END PGP SIGNATURE----- --61jdw2sOBCFtR2d/-- --===============8182429576070159166== 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". --===============8182429576070159166==--