Commit 56cc0d28 for libheif

commit 56cc0d2829800a2e847dd2ab6577e4965a26a5d5
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sun Jan 11 16:47:47 2026 +0100

    write and read SAIs with less samples than frames in sequences (#1661)

diff --git a/libheif/sequences/seq_boxes.cc b/libheif/sequences/seq_boxes.cc
index 91a050b8..e7e4c646 100644
--- a/libheif/sequences/seq_boxes.cc
+++ b/libheif/sequences/seq_boxes.cc
@@ -1898,14 +1898,23 @@ Error Box_saiz::write(StreamWriter& writer) const
   }

   writer.write8(m_default_sample_info_size);
-  writer.write32(m_num_samples);

   if (m_default_sample_info_size == 0) {
     assert(m_num_samples == m_sample_sizes.size());

-    for (uint8_t size : m_sample_sizes) {
-      writer.write8(size);
+    uint32_t num_nonnull_samples = static_cast<uint32_t>(m_sample_sizes.size());
+    while (num_nonnull_samples > 0 && m_sample_sizes[num_nonnull_samples-1] == 0) {
+      num_nonnull_samples--;
     }
+
+    writer.write32(num_nonnull_samples);
+
+    for (size_t i = 0; i < num_nonnull_samples; i++) {
+      writer.write8(m_sample_sizes[i]);
+    }
+  }
+  else {
+    writer.write32(m_num_samples);
   }

   prepend_header(writer, box_start);
diff --git a/libheif/sequences/track.cc b/libheif/sequences/track.cc
index caa8cec1..2166157d 100644
--- a/libheif/sequences/track.cc
+++ b/libheif/sequences/track.cc
@@ -168,14 +168,20 @@ Result<std::vector<uint8_t> > SampleAuxInfoReader::get_sample_info(const HeifFil
     offset = m_singleChunk_offset + sample_idx * size;
   }
   else {
-    offset = m_sample_offsets[sample_idx];
     size = m_saiz->get_sample_size(sample_idx);
+    if (size > 0) {
+      assert(sample_idx < m_sample_offsets.size());
+      offset = m_sample_offsets[sample_idx];
+    }
   }

   std::vector<uint8_t> data;
-  Error err = file->append_data_from_file_range(data, offset, size);
-  if (err) {
-    return err;
+
+  if (size > 0) {
+    Error err = file->append_data_from_file_range(data, offset, size);
+    if (err) {
+      return err;
+    }
   }

   return data;