On 4/28/2025 7:02 PM, James Almer wrote:
This demuxers reads encapsulation bytes before reading codec data into the
output packets, so take such offset into consideration.

Signed-off-by: James Almer <jamr...@gmail.com>
---
  libavformat/av1dec.c | 8 ++++++++
  1 file changed, 8 insertions(+)

diff --git a/libavformat/av1dec.c b/libavformat/av1dec.c
index 8c0b8fe975..38001b124f 100644
--- a/libavformat/av1dec.c
+++ b/libavformat/av1dec.c
@@ -36,6 +36,7 @@ typedef struct AV1DemuxContext {
      AVRational framerate;
      uint32_t temporal_unit_size;
      uint32_t frame_unit_size;
+    int64_t pos;
  } AV1DemuxContext;
//return < 0 if we need more data
@@ -96,6 +97,8 @@ static int av1_read_header(AVFormatContext *s)
      if (ret < 0)
          return ret;
+ c->pos = avio_tell(s->pb);
+
      return 0;
  }
@@ -224,6 +227,7 @@ static int annexb_read_packet(AVFormatContext *s, AVPacket *pkt)
  {
      AV1DemuxContext *const c = s->priv_data;
      uint32_t obu_unit_size;
+    int64_t pos = c->pos;
      int ret, len;
retry:
@@ -234,6 +238,7 @@ retry:
      }
if (!c->temporal_unit_size) {
+        c->pos = avio_tell(s->pb);
          len = leb(s->pb, &c->temporal_unit_size, 1);
          if (len == AVERROR_EOF) goto end;
          else if (len < 0) return len;
@@ -279,6 +284,9 @@ end:
      if (ret == AVERROR(EAGAIN))
          goto retry;
+ if (!ret)
+        pkt->pos = pos;
+
      return ret;
  }

Will apply.

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to