| 2145 | } |
| 2146 | |
| 2147 | avifResult avifEncoderAddImageGrid(avifEncoder * encoder, |
| 2148 | uint32_t gridCols, |
| 2149 | uint32_t gridRows, |
| 2150 | const avifImage * const * cellImages, |
| 2151 | avifAddImageFlags addImageFlags) |
| 2152 | { |
| 2153 | avifDiagnosticsClearError(&encoder->diag); |
| 2154 | if ((gridCols == 0) || (gridCols > 256) || (gridRows == 0) || (gridRows > 256)) { |
| 2155 | return AVIF_RESULT_INVALID_IMAGE_GRID; |
| 2156 | } |
| 2157 | if (encoder->extraLayerCount == 0) { |
| 2158 | addImageFlags |= AVIF_ADD_IMAGE_FLAG_SINGLE; // image grids cannot be image sequences |
| 2159 | } |
| 2160 | return avifEncoderAddImageInternal(encoder, gridCols, gridRows, cellImages, 1, addImageFlags); |
| 2161 | } |
| 2162 | |
| 2163 | static size_t avifEncoderFindExistingChunk(avifRWStream * s, size_t mdatStartOffset, const uint8_t * data, size_t size) |
| 2164 | { |