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