Commit 723b58d6 for libheif
commit 723b58d6ca329b2743822951aeaf3299c7410448
Author: Dirk Farin <dirk.farin@gmail.com>
Date: Fri Mar 13 23:39:33 2026 +0100
fix infinite loop for sequences with variable frame-rate
diff --git a/libheif/api/libheif/heif_uncompressed.h b/libheif/api/libheif/heif_uncompressed.h
index fcc0cfb8..966c5b59 100644
--- a/libheif/api/libheif/heif_uncompressed.h
+++ b/libheif/api/libheif/heif_uncompressed.h
@@ -307,6 +307,10 @@ int heif_image_get_component_bits_per_pixel(const heif_image*, uint32_t componen
LIBHEIF_API
uint16_t heif_image_get_component_type(const heif_image*, uint32_t component_idx);
+// TODO
+//LIBHEIF_API
+//heif_error heif_image_get_component_indices_of_interleaved_channel(const heif_image* image, uint32_t* component_indices, uint8_t* nComponents_in_out);
+
LIBHEIF_API
heif_error heif_image_add_component(heif_image* image,
int width, int height,
diff --git a/libheif/sequences/seq_boxes.cc b/libheif/sequences/seq_boxes.cc
index 3ae0dba3..34774f52 100644
--- a/libheif/sequences/seq_boxes.cc
+++ b/libheif/sequences/seq_boxes.cc
@@ -621,14 +621,11 @@ Error Box_stts::write(StreamWriter& writer) const
uint32_t Box_stts::get_sample_duration(uint32_t sample_idx)
{
- size_t i = 0;
- while (i < m_entries.size()) {
- if (sample_idx < m_entries[i].sample_count) {
- return m_entries[i].sample_delta;
- }
- else {
- sample_idx -= m_entries[i].sample_count;
+ for (const auto& entry : m_entries) {
+ if (sample_idx < entry.sample_count) {
+ return entry.sample_delta;
}
+ sample_idx -= entry.sample_count;
}
return 0;
@@ -813,14 +810,11 @@ Error Box_ctts::write(StreamWriter& writer) const
int32_t Box_ctts::get_sample_offset(uint32_t sample_idx)
{
- size_t i = 0;
- while (i < m_entries.size()) {
- if (sample_idx < m_entries[i].sample_count) {
- return m_entries[i].sample_offset;
- }
- else {
- sample_idx -= m_entries[i].sample_count;
+ for (const auto& entry : m_entries) {
+ if (sample_idx < entry.sample_count) {
+ return entry.sample_offset;
}
+ sample_idx -= entry.sample_count;
}
return 0;