Commit 9e6b79ee for libheif

commit 9e6b79ee7acf91d5d888779eb53404180f00c3d1
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Tue Jan 13 01:13:46 2026 +0100

    openh264 decoder: output fake framenumbers, assuming no input reordering (#1661)

diff --git a/libheif/plugins/decoder_openh264.cc b/libheif/plugins/decoder_openh264.cc
index bcd0a6b9..e6ae11ed 100644
--- a/libheif/plugins/decoder_openh264.cc
+++ b/libheif/plugins/decoder_openh264.cc
@@ -52,6 +52,7 @@ struct openh264_decoder
   // --- decoder

   ISVCDecoder* decoder = nullptr;
+  int fake_output_framenumber = 0;

   ~openh264_decoder()
   {
@@ -408,11 +409,23 @@ heif_error openh264_decode_next_image2(void* decoder_raw, heif_image** out_img,
                                        uintptr_t* out_user_data,
                                        const heif_security_limits* limits)
 {
-  if (out_user_data) {
-    *out_user_data = 0; // TODO: not supported by openH264
+  auto* decoder = (struct openh264_decoder*) decoder_raw;
+
+  heif_error err = openh264_decode_next_image(decoder_raw, out_img, limits);
+
+  if (!err.code && out_user_data) {
+
+    // TODO: openH264 does not support passing through frame numbers. Assume that there is no frame reordering.
+
+    if (*out_img) {
+      *out_user_data = decoder->fake_output_framenumber++;
+    }
+    else {
+      *out_user_data = 0;
+    }
   }

-  return openh264_decode_next_image(decoder_raw, out_img, limits);
+  return err;
 }

 heif_error openh264_decode_image(void* decoder_raw, heif_image** out_img)
diff --git a/libheif/sequences/track.cc b/libheif/sequences/track.cc
index 57050b1e..d28343fa 100644
--- a/libheif/sequences/track.cc
+++ b/libheif/sequences/track.cc
@@ -170,7 +170,10 @@ Result<std::vector<uint8_t> > SampleAuxInfoReader::get_sample_info(const HeifFil
   else {
     size = m_saiz->get_sample_size(sample_idx);
     if (size > 0) {
-      assert(sample_idx < m_sample_offsets.size());
+      if (sample_idx >= m_sample_offsets.size()) {
+        return {};
+      }
+
       offset = m_sample_offsets[sample_idx];
     }
   }