You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: readme/apv_isobmff.md
+125-9Lines changed: 125 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
ISOBMFF binding for APV
2
-
==============
2
+
=======================
3
3
4
4
# Introduction
5
5
6
6
This document specifies methods to store data encoded with Advanced Professional Video (APV) codec in ISO Base Media File Format (ISOBMFF) files. APV is a mezzanine video codec for storage, exchange and editing of professional quality video. To support extensive, repeated editing including multiple rounds of decompression and compression all the necessary information for decoding, frame header and metadata for processing of decoded video and presentation are put together for fast and simple access. For example, frame header data are repeated in each frame even if the information in frame header are exactly identical for series of frames. When APV bitstream is stored in a file, to avoid such inefficiency codec configuration box indicates whether header information is identical to entire frames stored in a track. In this file format, for efficient access of portions of a frame, a method to identify the location of tiles are supported.
7
7
8
-
# ISOBMFF binding for APV
8
+
# ISOBMFF binding for APV video
9
9
10
10
## APV Sample Entry
11
11
@@ -53,7 +53,7 @@ The compressorname field of the VisualSampleEntry shall have '\012APV Coding'. T
53
53
54
54
### Description
55
55
56
-
The box with APVCodecConfigurationBox shall contains APVDecoderConfigurationRecord as defined in {{APVDecoderConfigurationRecord}}
56
+
The box with APVCodecConfigurationBox shall contain an APVDecoderConfigurationRecord as defined in {{APVDecoderConfigurationRecord}}
57
57
58
58
### Syntax
59
59
@@ -111,7 +111,7 @@ aligned(8) class APVDecoderConfigurationRecord {
111
111
> indicates the value of the pbu_type field in the pbu header immediately preceding the frame data for a certain index i.
112
112
113
113
+ number_of_frame_info[i]
114
-
> indicates the number of variations of the frame header information for the frames whose value of the pbu_type field in the pbu header immediately preceding it is idendtical with the value of the pub_type[i] field for a certain index i.
114
+
> indicates the number of variations of the frame header information for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical to the value of the pub_type[i] field for a certain index i.
115
115
116
116
+ color_description_present_flag[i][j]
117
117
>indicates whether the color description information is provided for the jth variation of frame header whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
@@ -150,16 +150,16 @@ aligned(8) class APVDecoderConfigurationRecord {
150
150
> indicates the value of the transfer_characteristics field in the jth variation of the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1, then the same value of this field must be used as the value of the transfer_characteristics field in the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1 is greater than 1, then the frame header in each sample must provide the value of transfer_characteristics field matched with one among the values of this field for all index j for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
151
151
152
152
+ matrix_coefficients[i][j]
153
-
> indicates the value of the matrix_coefficients field in the jth variation of the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1, then the same value of this field must be used as the value of the matrix_coefficients field in the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1 is greater than 1, then the frame header in each sample must provide the value of matrix_cofficients field matched with one among the values of this field for all index j for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
153
+
> indicates the value of the matrix_coefficients field in the jth variation of the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1, then the same value of this field must be used as the value of the matrix_coefficients field in the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1 is greater than 1, then the frame header in each sample must provide the value of matrix_coefficients field matched with one among the values of this field for all index j for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
154
154
155
155
+ full_range_flag[i][j]
156
156
> indicates the value of the full_range_flag field in the jth variation of the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1, then the same value of this field must be used as the value of
157
-
the full_range_flag field in the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1 is greater than 1, then the frame header in each sample must provide the value of matrix_cofficients field matched with one among the values of this field for all index j for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
157
+
the full_range_flag field in the frame header of the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i. If the value of number_of_frame_info[i] is 1 is greater than 1, then the frame header in each sample must provide the value of matrix_coefficients field matched with one among the values of this field for all index j for the frames whose value of the pbu_type field in the pbu header immediately preceding it is identical with the value of the pbu_type[i] field for a certain index i.
158
158
159
159
## APV Sample Description
160
160
161
161
### Format of sample
162
-
When APV coded bitstream is encapsulated in a track with APVSampleEntry, each sample shall contain one and only one access unit of APV coded data. The format of sample shall be same as the raw_bitstream_access_unit, the length field of four bytes preceeding the access unit data, as defined in the section 12.1 of [APV codec specification](#apv-codec).
162
+
When APV coded bitstream is encapsulated in a track with APVSampleEntry, each sample shall contain one and only one access unit of APV coded data. The format of sample shall be same as the raw_bitstream_access_unit, the length field of four bytes preceding the access unit data, as defined in the section 12.1 of [APV codec specification](#apv-codec).
163
163
164
164
### Sync sample
165
165
Every samples of APV bitstream shall be sync samples.
@@ -188,9 +188,9 @@ else {
188
188
189
189
tile_index for sub-samples based on tiles, this parameter indicates the tile index in raster order in a frame.
190
190
191
-
# Sub-parameters for the MIME tyype 'codecs' parameter
191
+
##Sub-parameters for the MIME type 'codecs' parameter
192
192
193
-
When the 'codecs' parameter of a MIME type is used for a track containing APV bistream, as defined in IETF RFC 6381, the sub-parameters defined in this section is used.
193
+
When the 'codecs' parameter of a MIME type is used for a track containing APV bitstream, as defined in IETF RFC 6381, the sub-parameters defined in this section is used.
194
194
195
195
The 'codecs' parameter string for the APV bitstream is defined as follows:
196
196
@@ -208,6 +208,122 @@ The keys are defined as 4CC values and the value used for each keys are defined
208
208
209
209
For example, codecs="apv1.apvf44.apvl210.apvb3" indicates the track is compliant to 'apv1' sample entry type and the largest value of the profile in APVDecoderConfigurationRecord of the track is 422-12 profile, the level is 7 and the band is 3.
210
210
211
+
212
+
# ISOBMFF and HEIF binding for APV image items
213
+
214
+
## APV image items - general
215
+
216
+
This section describes how to encapsulate APV encoded images and image collections into the Image File Format
217
+
specified in ISO/IEC 23008-12 (also known as "HEIF").
218
+
219
+
This format allows multiple images to be included in a single file, allowing stereo or multi-view images, and
220
+
panoramas. Not all of the images need to be in the same format, such that an APV image could have an embedded
221
+
thumbnail in JPEG or HEIC (H.265) format. The format also allows image sequences (essentially video with
222
+
advisory timing), which are further specified [below](#isobmff-and-heif-binding-for-apv-image-sequences).
223
+
224
+
ISO/IEC 23008-12 is an extension to ISO/IEC 14496-12 (ISOBMFF), and it is valid to include combinations of
225
+
video, image and image sequences plus associated metadata in a single file. The nature of APV allows the
226
+
bitstream data for a frame to be common between the video track and image (or image sequence frame) if desired.
227
+
228
+
## APV image item data
229
+
230
+
### APV image item data definition
231
+
232
+
An item of type `apvi` consists of an APV bitstream corresponding to one and only one access unit of APV coded data.
233
+
The item content does not start with the `au_size` since this can be determined from the sum of the extents given in the
234
+
`iloc` for the item.
235
+
236
+
### APV image item data syntax
237
+
238
+
TODO
239
+
240
+
### APV image item data semantics
241
+
242
+
TODO
243
+
244
+
## APV configuration item property
245
+
246
+
+ Box type: `apvC`
247
+
248
+
+ Property type: Descriptive item property
249
+
250
+
+ Container: `ItemPropertyContainerBox`
251
+
252
+
+ Mandatory (per item): Yes, for an image item of type `apvi`
253
+
254
+
+ Quantity (per item): One for an image item of type `apvi`
255
+
256
+
Each APV image item shall have an associated property that is exactly identical to the `APVConfigurationBox` defined [above](#definition-1).
257
+
258
+
`essential` shall be equal to 1 for an `apvC` item property associated with an image item of type `apvi`.
259
+
260
+
## APV auxiliary images
261
+
262
+
EDITOR NOTE: We could consider prohibiting this, since they could just be in the AU.
263
+
264
+
Auxiliary images may be used to provide supplemental frame data such as depth images or alpha images. The URNs specified for HEVC in
265
+
ISO/IEC 23008-12:2025 Section B.2.4 may also be used with APV.
266
+
267
+
An APV coded auxiliary image uses an `item_type` value of `apvi`. An APV coded auxiliary image does not use the `aux_subtype` byte array in
268
+
`AuxiliaryTypeProperty`.
269
+
270
+
# ISOBMFF and HEIF binding for APV image sequences
271
+
272
+
TODO: To be specified.
273
+
274
+
# APV-specific brands
275
+
276
+
## APV video brand
277
+
278
+
The brand `apv1` shall be used to indicate that the file is conformant with the [APV video](#isobmff-binding-for-apv-video) section of this document.
279
+
280
+
EDITOR NOTE: We could relax this requirement and specify the parts we actually need (e.g. not requiring `stss` since its all sync samples).
281
+
282
+
The `apv1` brand requires support for the `isom` brand as defined in ISO/IEC 14496-12.
283
+
284
+
## APV image and image collection brand
285
+
286
+
### APV image brand
287
+
288
+
The brand `apvi` ("APV image") is specified in the following subclauses.
289
+
290
+
A coded image item is specified to conform to the `apvi` brand when all of the following constraints are true:
291
+
292
+
- the item has type `avp1` and conforms to the specification for [APV image items described above](#isobmff-and-heif-binding-for-apv-image-items).
293
+
- the item is not associated with any essential item properties other than `apvC`, `colr`, `irot`, `clap`, and `imir`.
294
+
295
+
### Requirements on files
296
+
297
+
Files shall include `mif1` among the compatible brands and hence conform to the associated requirements in ISO/IEC 23008-12:2025
298
+
Section 10.
299
+
300
+
Files including `apvi` as a compatible brand shall include an image item that is present in the file, as either the primary item
301
+
or any item from the alternate group containing the primary item, and that meets one of the following constraints:
302
+
303
+
- the item is a coded image item conforming to the `apvi` brand specified [above](#apv-image-brand)
304
+
- the item is a crop-rotate-mirror derived image item, and the source image item of the item is either a crop-rotate-mirror
305
+
derived image item or a coded image item conforming to the `apvi` brand specified [above](#apv-image-brand).
306
+
307
+
### Requirements on readers
308
+
309
+
The requirements in ISO/IEC 23008-12:2025 Section 10 for `mif1` readers shall be supported.
310
+
311
+
Readers conforming to the `apvi` brand shall support displaying an item that is either the primary item or any item from the alternate group
312
+
containing the primary item, where that item meets one of the following constraints:
313
+
314
+
- the item is a coded image item conforming to the `apvi` brand specified [above](#apv-image-brand)
315
+
- the item is a crop-rotate-mirror derived image item, and the source image item of the item is either a crop-rotate-mirror
316
+
derived image item or a coded image item conforming to the `apvi` brand specified [above](#apv-image-brand).
317
+
318
+
Readers conforming to the `apvi` brand are recommended to decode all profiles and levels of the APV codec, but are not required to do so.
319
+
320
+
File readers should support displaying an image with opacity information specified by an associated auxiliary image with `aux_type` equal
0 commit comments