Commit 3a4bbdc2d8 for ffmpeg

commit 3a4bbdc2d846fc28c01fc7a2ab585942d31e9a97
Author: James Almer <jamrial@gmail.com>
Date:   Thu Oct 8 22:31:45 2026 -0300

    avformat/mov: rename HEIFGrid to HEIFGroup

    It will be used to store information about other kinds of derived
    images in the following commits.

    Signed-off-by: James Almer <jamrial@gmail.com>

diff --git a/libavformat/isom.h b/libavformat/isom.h
index 5474d700d6..2516d65d78 100644
--- a/libavformat/isom.h
+++ b/libavformat/isom.h
@@ -314,13 +314,13 @@ typedef struct HEIFItem {
     size_t icc_profile_size;
 } HEIFItem;

-typedef struct HEIFGrid {
+typedef struct HEIFGroup {
     HEIFItem *item;
-    HEIFItem **tile_item_list;
-    int16_t *tile_id_list;
-    unsigned *tile_idx_list;
-    int nb_tiles;
-} HEIFGrid;
+    HEIFItem **item_list;
+    int16_t *item_id_list;
+    unsigned *item_idx_list;
+    int nb_items;
+} HEIFGroup;

 typedef struct MOVContext {
     const AVClass *class; ///< class for private options
@@ -385,8 +385,8 @@ typedef struct MOVContext {
     int cur_item_id;
     HEIFItem **heif_item;
     int nb_heif_item;
-    HEIFGrid *heif_grid;
-    int nb_heif_grid;
+    HEIFGroup *heif_group;
+    int nb_heif_group;
     int64_t idat_offset;
     int interleaved_read;
     AVDictionary* decryption_keys;
diff --git a/libavformat/mov.c b/libavformat/mov.c
index c7f2409137..f88c139ba9 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -9682,13 +9682,13 @@ fail:
 static int mov_read_iref_dimg(MOVContext *c, AVIOContext *pb, int version)
 {
     HEIFItem *item = NULL;
-    HEIFGrid *grid;
+    HEIFGroup *grid;
     int entries, i;
     int from_item_id = version ? avio_rb32(pb) : avio_rb16(pb);
     int ret = 0;

-    for (int i = 0; i < c->nb_heif_grid; i++) {
-        if (c->heif_grid[i].item->item_id == from_item_id) {
+    for (int i = 0; i < c->nb_heif_group; i++) {
+        if (c->heif_group[i].item->item_id == from_item_id) {
             av_log(c->fc, AV_LOG_ERROR, "More than one 'dimg' box "
                                         "referencing the same Derived Image item\n");
             return AVERROR_INVALIDDATA;
@@ -9722,23 +9722,23 @@ static int mov_read_iref_dimg(MOVContext *c, AVIOContext *pb, int version)
         return AVERROR_INVALIDDATA;
     }

-    grid = av_realloc_array(c->heif_grid, c->nb_heif_grid + 1U,
-                            sizeof(*c->heif_grid));
+    grid = av_realloc_array(c->heif_group, c->nb_heif_group + 1U,
+                            sizeof(*c->heif_group));
     if (!grid)
         return AVERROR(ENOMEM);
-    c->heif_grid = grid;
-    grid = &grid[c->nb_heif_grid];
+    c->heif_group = grid;
+    grid = &grid[c->nb_heif_group];

-    grid->tile_id_list = av_malloc_array(entries, sizeof(*grid->tile_id_list));
-    grid->tile_idx_list = av_calloc(entries, sizeof(*grid->tile_idx_list));
-    grid->tile_item_list = av_calloc(entries, sizeof(*grid->tile_item_list));
-    if (!grid->tile_id_list || !grid->tile_item_list || !grid->tile_idx_list) {
+    grid->item_id_list = av_malloc_array(entries, sizeof(*grid->item_id_list));
+    grid->item_idx_list = av_calloc(entries, sizeof(*grid->item_idx_list));
+    grid->item_list = av_calloc(entries, sizeof(*grid->item_list));
+    if (!grid->item_id_list || !grid->item_list || !grid->item_idx_list) {
         ret = AVERROR(ENOMEM);
         goto fail;
     }
     /* 'to' item ids */
     for (i = 0; i < entries; i++) {
-        grid->tile_id_list[i] = version ? avio_rb32(pb) : avio_rb16(pb);
+        grid->item_id_list[i] = version ? avio_rb32(pb) : avio_rb16(pb);

         if (avio_feof(pb)) {
             ret = AVERROR_INVALIDDATA;
@@ -9746,18 +9746,18 @@ static int mov_read_iref_dimg(MOVContext *c, AVIOContext *pb, int version)
         }
     }

-    grid->nb_tiles = entries;
+    grid->nb_items = entries;
     grid->item = item;
-    ++c->nb_heif_grid;
+    ++c->nb_heif_group;

     av_log(c->fc, AV_LOG_TRACE, "dimg: from_item_id %d, entries %d\n",
            from_item_id, entries);

     return 0;
 fail:
-    av_freep(&grid->tile_id_list);
-    av_freep(&grid->tile_idx_list);
-    av_freep(&grid->tile_item_list);
+    av_freep(&grid->item_id_list);
+    av_freep(&grid->item_idx_list);
+    av_freep(&grid->item_list);

     return ret;
 }
@@ -10767,12 +10767,12 @@ static int mov_read_close(AVFormatContext *s)
         av_freep(&mov->heif_item[i]);
     }
     av_freep(&mov->heif_item);
-    for (i = 0; i < mov->nb_heif_grid; i++) {
-        av_freep(&mov->heif_grid[i].tile_id_list);
-        av_freep(&mov->heif_grid[i].tile_idx_list);
-        av_freep(&mov->heif_grid[i].tile_item_list);
+    for (i = 0; i < mov->nb_heif_group; i++) {
+        av_freep(&mov->heif_group[i].item_id_list);
+        av_freep(&mov->heif_group[i].item_idx_list);
+        av_freep(&mov->heif_group[i].item_list);
     }
-    av_freep(&mov->heif_grid);
+    av_freep(&mov->heif_group);

     return 0;
 }
@@ -10949,7 +10949,7 @@ static int set_display_matrix_from_item(AVPacketSideData **coded_side_data, int
     return 0;
 }

-static int read_image_grid(AVFormatContext *s, const HEIFGrid *grid,
+static int read_image_grid(AVFormatContext *s, const HEIFGroup *grid,
                            AVStreamGroupTileGrid *tile_grid)
 {
     MOVContext *c = s->priv_data;
@@ -10993,15 +10993,15 @@ static int read_image_grid(AVFormatContext *s, const HEIFGrid *grid,
     avio_seek(s->pb, pos, SEEK_SET);

     size = tile_rows * tile_cols;
-    tile_grid->nb_tiles = grid->nb_tiles;
+    tile_grid->nb_tiles = grid->nb_items;

     if (tile_grid->nb_tiles != size)
         return AVERROR_INVALIDDATA;

     for (int i = 0; i < tile_cols; i++)
-        coded_width  += grid->tile_item_list[i]->width;
+        coded_width  += grid->item_list[i]->width;
     for (int i = 0; i < size; i += tile_cols)
-        coded_height += grid->tile_item_list[i]->height;
+        coded_height += grid->item_list[i]->height;

     if (coded_width > INT_MAX || coded_height > INT_MAX)
         return AVERROR_INVALIDDATA;
@@ -11020,11 +11020,11 @@ static int read_image_grid(AVFormatContext *s, const HEIFGrid *grid,
             if (i == tile_grid->nb_tiles)
                 return AVERROR_INVALIDDATA;

-            tile_grid->offsets[i].idx        = grid->tile_idx_list[i];
+            tile_grid->offsets[i].idx        = grid->item_idx_list[i];
             tile_grid->offsets[i].horizontal = x;
             tile_grid->offsets[i].vertical   = y;

-            x += grid->tile_item_list[i++]->width;
+            x += grid->item_list[i++]->width;
         }

         if (x > tile_grid->coded_width) {
@@ -11033,7 +11033,7 @@ static int read_image_grid(AVFormatContext *s, const HEIFGrid *grid,
         }

         x  = 0;
-        y += grid->tile_item_list[left_col]->height;
+        y += grid->item_list[left_col]->height;
     }

     if (y > tile_grid->coded_height || i != tile_grid->nb_tiles) {
@@ -11044,7 +11044,7 @@ static int read_image_grid(AVFormatContext *s, const HEIFGrid *grid,
     return 0;
 }

-static int read_image_iovl(AVFormatContext *s, const HEIFGrid *grid,
+static int read_image_iovl(AVFormatContext *s, const HEIFGroup *grid,
                            AVStreamGroupTileGrid *tile_grid)
 {
     MOVContext *c = s->priv_data;
@@ -11090,7 +11090,7 @@ static int read_image_iovl(AVFormatContext *s, const HEIFGrid *grid,
     av_log(c->fc, AV_LOG_TRACE, "iovl: output_width %d, output_height %d\n",
            tile_grid->width, tile_grid->height);

-    tile_grid->nb_tiles = grid->nb_tiles;
+    tile_grid->nb_tiles = grid->nb_items;
     tile_grid->offsets = av_malloc_array(tile_grid->nb_tiles, sizeof(*tile_grid->offsets));
     if (!tile_grid->offsets) {
         ret = AVERROR(ENOMEM);
@@ -11098,7 +11098,7 @@ static int read_image_iovl(AVFormatContext *s, const HEIFGrid *grid,
     }

     for (int i = 0; i < tile_grid->nb_tiles; i++) {
-        tile_grid->offsets[i].idx        = grid->tile_idx_list[i];
+        tile_grid->offsets[i].idx        = grid->item_idx_list[i];
         tile_grid->offsets[i].horizontal = (flags & 1) ? avio_rb32(s->pb) : avio_rb16(s->pb);
         tile_grid->offsets[i].vertical   = (flags & 1) ? avio_rb32(s->pb) : avio_rb16(s->pb);
         av_log(c->fc, AV_LOG_TRACE, "iovl: stream_idx[%d] %u, "
@@ -11240,10 +11240,10 @@ static int mov_parse_tiles(AVFormatContext *s)
 {
     MOVContext *mov = s->priv_data;

-    for (int i = 0; i < mov->nb_heif_grid; i++) {
+    for (int i = 0; i < mov->nb_heif_group; i++) {
         AVStreamGroup *stg;
         AVStreamGroupTileGrid *tile_grid;
-        const HEIFGrid *grid = &mov->heif_grid[i];
+        const HEIFGroup *grid = &mov->heif_group[i];
         int err;

         if (!grid->item || (grid->item->type != MKTAG('g','r','i','d') &&
@@ -11257,8 +11257,8 @@ static int mov_parse_tiles(AVFormatContext *s)
         stg->id = grid->item->item_id;
         tile_grid = stg->params.tile_grid;

-        for (int j = 0; j < grid->nb_tiles; j++) {
-            int tile_id = grid->tile_id_list[j];
+        for (int j = 0; j < grid->nb_items; j++) {
+            int tile_id = grid->item_id_list[j];
             HEIFItem *item = get_heif_item(mov, tile_id);
             AVStream *st;

@@ -11281,8 +11281,8 @@ static int mov_parse_tiles(AVFormatContext *s)
                 break;
             }

-            grid->tile_item_list[j] = item;
-            grid->tile_idx_list[j] = stg->nb_entries;
+            grid->item_list[j] = item;
+            grid->item_idx_list[j] = stg->nb_entries;

             err = avformat_stream_group_add_stream(stg, st);
             if (err < 0) {
@@ -11294,7 +11294,7 @@ static int mov_parse_tiles(AVFormatContext *s)
                     if (stg->entries[l]->stream->index == st->index)
                         break;
                 av_assert0(l < stg->nb_entries);
-                grid->tile_idx_list[j] = l;
+                grid->item_idx_list[j] = l;
             }

             if (item->item_id != mov->primary_item_id)
@@ -11386,7 +11386,7 @@ static int mov_parse_heif_items(AVFormatContext *s)
         mov_build_index(mov, st);
     }

-    if (mov->nb_heif_grid) {
+    if (mov->nb_heif_group) {
         err = mov_parse_tiles(s);
         if (err < 0)
             return err;