FFmpeg
isom.h
Go to the documentation of this file.
1 /*
2  * ISO Media common code
3  * copyright (c) 2001 Fabrice Bellard
4  * copyright (c) 2002 Francois Revol <revol@free.fr>
5  * copyright (c) 2006 Baptiste Coudurier <baptiste.coudurier@free.fr>
6  *
7  * This file is part of FFmpeg.
8  *
9  * FFmpeg is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * FFmpeg is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with FFmpeg; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  */
23 
24 #ifndef AVFORMAT_ISOM_H
25 #define AVFORMAT_ISOM_H
26 
27 #include <stddef.h>
28 #include <stdint.h>
29 
33 #include "libavutil/spherical.h"
34 #include "libavutil/stereo3d.h"
35 
36 #include "avio.h"
37 #include "internal.h"
38 #include "dv.h"
39 
40 /* isom.c */
41 extern const AVCodecTag ff_mp4_obj_type[];
42 extern const AVCodecTag ff_codec_movvideo_tags[];
43 extern const AVCodecTag ff_codec_movaudio_tags[];
45 extern const AVCodecTag ff_codec_movdata_tags[];
46 
47 int ff_mov_iso639_to_lang(const char lang[4], int mp4);
48 int ff_mov_lang_to_iso639(unsigned code, char to[4]);
49 
50 struct AVAESCTR;
51 
52 /* the QuickTime file format is quite convoluted...
53  * it has lots of index tables, each indexing something in another one...
54  * Here we just use what is needed to read the chunks
55  */
56 
57 typedef struct MOVStts {
58  unsigned int count;
59  unsigned int duration;
60 } MOVStts;
61 
62 typedef struct MOVCtts {
63  unsigned int count;
64  int duration;
65 } MOVCtts;
66 
67 typedef struct MOVStsc {
68  int first;
69  int count;
70  int id;
71 } MOVStsc;
72 
73 typedef struct MOVElst {
76  float rate;
77 } MOVElst;
78 
79 typedef struct MOVDref {
80  uint32_t type;
81  char *path;
82  char *dir;
83  char volume[28];
84  char filename[64];
85  int16_t nlvl_to, nlvl_from;
86 } MOVDref;
87 
88 typedef struct MOVAtom {
89  uint32_t type;
90  int64_t size; /* total size (excluding the size and type fields) */
91 } MOVAtom;
92 
93 struct MOVParseTableEntry;
94 
95 typedef struct MOVFragment {
97  unsigned track_id;
98  uint64_t base_data_offset;
99  uint64_t moof_offset;
100  uint64_t implicit_offset;
101  unsigned stsd_id;
102  unsigned duration;
103  unsigned size;
104  unsigned flags;
105 } MOVFragment;
106 
107 typedef struct MOVTrackExt {
108  unsigned track_id;
109  unsigned stsd_id;
110  unsigned duration;
111  unsigned size;
112  unsigned flags;
113 } MOVTrackExt;
114 
115 typedef struct MOVSbgp {
116  unsigned int count;
117  unsigned int index;
118 } MOVSbgp;
119 
120 typedef struct MOVEncryptionIndex {
121  // Individual encrypted samples. If there are no elements, then the default
122  // settings will be used.
123  unsigned int nb_encrypted_samples;
125 
129  uint64_t* auxiliary_offsets; ///< Absolute seek position
132 
133 typedef struct MOVFragmentStreamInfo {
134  int id;
139  // Index of the first sample/trun in the fragment.
143  int stsd_id; // current fragment stsd_id
145 
146 typedef struct MOVFragmentIndexItem {
149  int current;
153 
154 typedef struct MOVFragmentIndex {
156  int complete;
157  int current;
158  int nb_items;
161 
162 typedef struct MOVIndexRange {
165 } MOVIndexRange;
166 
167 typedef struct MOVStreamContext {
169  int refcount;
171  int id; ///< AVStream id
172  int ffindex; ///< AVStream index
174  unsigned int chunk_count;
176  unsigned int stts_count;
178  unsigned int sdtp_count;
179  uint8_t *sdtp_data;
180  unsigned int ctts_count;
181  unsigned int ctts_allocated_size;
183  unsigned int stsc_count;
185  unsigned int stsc_index;
187  unsigned int stps_count;
188  unsigned *stps_data; ///< partial sync sample for mpeg-2 open gop
190  unsigned int elst_count;
193  unsigned int sample_size; ///< may contain value calculated from stsd or value from stsz atom
194  unsigned int stsz_sample_size; ///< always contains sample size from stsz atom
195  unsigned int sample_count;
196  unsigned int *sample_sizes;
198  unsigned int keyframe_count;
199  int *keyframes;
201  int64_t time_offset; ///< time offset of the edit list entries
202  int64_t min_corrected_pts; ///< minimum Composition time shown by the edits excluding empty edits.
207  unsigned int bytes_per_frame;
208  unsigned int samples_per_frame;
210  int pseudo_stream_id; ///< -1 means demux all ids
211  int16_t audio_cid; ///< stsd audio compression id
212  unsigned drefs_count;
214  int dref_id;
216  int width; ///< tkhd width
217  int height; ///< tkhd height
218  int dts_shift; ///< dts shift when ctts is negative
219  uint32_t palette[256];
222  uint32_t tmcd_flags; ///< tmcd track flags
223  uint8_t tmcd_nb_frames; ///< tmcd number of frames per tick / second
224  int64_t track_end; ///< used for dts generation in fragmented movie files
225  int start_pad; ///< amount of samples to skip due to enc-dec delay
226  unsigned int rap_group_count;
228  unsigned int sync_group_count;
230  uint8_t *sgpd_sync;
231  uint32_t sgpd_sync_count;
237 
240 
241  /** extradata array (and size) for multiple stsd */
242  uint8_t **extradata;
247 
254  size_t coll_size;
256  size_t ambient_size;
257 
258  uint32_t format;
259 
260  int has_sidx; // If there is an sidx entry for this stream.
261  struct {
262  struct AVAESCTR* aes_ctr;
263  struct AVAES *aes_ctx;
264  unsigned int per_sample_iv_size; // Either 0, 8, or 16.
267  } cenc;
268 
271 
272 typedef struct HEIFItem {
274  char *name;
275  int item_id;
278  int width;
279  int height;
280  int type;
282 } HEIFItem;
283 
284 typedef struct HEIFGrid {
287  int16_t *tile_id_list;
288  int nb_tiles;
289 } HEIFGrid;
290 
291 typedef struct MOVContext {
292  const AVClass *class; ///< class for private options
295  int64_t duration; ///< duration of the longest track
296  int found_moov; ///< 'moov' atom has been found
297  int found_iloc; ///< 'iloc' atom has been found
298  int found_iinf; ///< 'iinf' atom has been found
299  int found_mdat; ///< 'mdat' atom has been found
300  int found_hdlr_mdta; ///< 'hdlr' atom with type 'mdta' has been found
301  int trak_index; ///< Index of the current 'trak'
302  char **meta_keys;
303  unsigned meta_keys_count;
306  int isom; ///< 1 if file is ISO Media (mp4/3gp)
307  MOVFragment fragment; ///< current fragment in moof atom
309  unsigned trex_count;
310  int itunes_metadata; ///< metadata are itunes style
313  unsigned int nb_chapter_tracks;
320  int64_t next_root_atom; ///< offset of the next root atom
323  int *bitrates; ///< bitrates read before streams creation
328  int use_tfdt;
331  unsigned int aax_mode; ///< 'aax' file has been detected
332  uint8_t file_key[20];
333  uint8_t file_iv[20];
338  void *audible_key;
340  void *audible_iv;
343  uint8_t *decryption_key;
346  int32_t movie_display_matrix[3][3]; ///< display matrix from mvhd
348  uint32_t mfra_size;
349  uint32_t max_stts_delta;
359 } MOVContext;
360 
362 int ff_mp4_read_descr(void *logctx, AVIOContext *pb, int *tag);
363 int ff_mp4_read_dec_config_descr(void *logctx, AVStream *st, AVIOContext *pb);
364 void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id);
365 
366 #define MP4ODescrTag 0x01
367 #define MP4IODescrTag 0x02
368 #define MP4ESDescrTag 0x03
369 #define MP4DecConfigDescrTag 0x04
370 #define MP4DecSpecificDescrTag 0x05
371 #define MP4SLDescrTag 0x06
372 
373 #define MOV_TFHD_BASE_DATA_OFFSET 0x01
374 #define MOV_TFHD_STSD_ID 0x02
375 #define MOV_TFHD_DEFAULT_DURATION 0x08
376 #define MOV_TFHD_DEFAULT_SIZE 0x10
377 #define MOV_TFHD_DEFAULT_FLAGS 0x20
378 #define MOV_TFHD_DURATION_IS_EMPTY 0x010000
379 #define MOV_TFHD_DEFAULT_BASE_IS_MOOF 0x020000
380 
381 #define MOV_TRUN_DATA_OFFSET 0x01
382 #define MOV_TRUN_FIRST_SAMPLE_FLAGS 0x04
383 #define MOV_TRUN_SAMPLE_DURATION 0x100
384 #define MOV_TRUN_SAMPLE_SIZE 0x200
385 #define MOV_TRUN_SAMPLE_FLAGS 0x400
386 #define MOV_TRUN_SAMPLE_CTS 0x800
387 
388 #define MOV_FRAG_SAMPLE_FLAG_DEGRADATION_PRIORITY_MASK 0x0000ffff
389 #define MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC 0x00010000
390 #define MOV_FRAG_SAMPLE_FLAG_PADDING_MASK 0x000e0000
391 #define MOV_FRAG_SAMPLE_FLAG_REDUNDANCY_MASK 0x00300000
392 #define MOV_FRAG_SAMPLE_FLAG_DEPENDED_MASK 0x00c00000
393 #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_MASK 0x03000000
394 
395 #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO 0x02000000
396 #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES 0x01000000
397 
398 #define MOV_TKHD_FLAG_ENABLED 0x0001
399 #define MOV_TKHD_FLAG_IN_MOVIE 0x0002
400 #define MOV_TKHD_FLAG_IN_PREVIEW 0x0004
401 #define MOV_TKHD_FLAG_IN_POSTER 0x0008
402 
403 #define MOV_SAMPLE_DEPENDENCY_UNKNOWN 0x0
404 #define MOV_SAMPLE_DEPENDENCY_YES 0x1
405 #define MOV_SAMPLE_DEPENDENCY_NO 0x2
406 
407 
408 #define TAG_IS_AVCI(tag) \
409  ((tag) == MKTAG('a', 'i', '5', 'p') || \
410  (tag) == MKTAG('a', 'i', '5', 'q') || \
411  (tag) == MKTAG('a', 'i', '5', '2') || \
412  (tag) == MKTAG('a', 'i', '5', '3') || \
413  (tag) == MKTAG('a', 'i', '5', '5') || \
414  (tag) == MKTAG('a', 'i', '5', '6') || \
415  (tag) == MKTAG('a', 'i', '1', 'p') || \
416  (tag) == MKTAG('a', 'i', '1', 'q') || \
417  (tag) == MKTAG('a', 'i', '1', '2') || \
418  (tag) == MKTAG('a', 'i', '1', '3') || \
419  (tag) == MKTAG('a', 'i', '1', '5') || \
420  (tag) == MKTAG('a', 'i', '1', '6') || \
421  (tag) == MKTAG('a', 'i', 'v', 'x') || \
422  (tag) == MKTAG('A', 'V', 'i', 'n'))
423 
424 
426 
427 int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries);
428 void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout);
429 
430 #define FF_MOV_FLAG_MFRA_AUTO -1
431 #define FF_MOV_FLAG_MFRA_DTS 1
432 #define FF_MOV_FLAG_MFRA_PTS 2
433 
434 /**
435  * Compute codec id for 'lpcm' tag.
436  * See CoreAudioTypes and AudioStreamBasicDescription at Apple.
437  */
438 static inline enum AVCodecID ff_mov_get_lpcm_codec_id(int bps, int flags)
439 {
440  /* lpcm flags:
441  * 0x1 = float
442  * 0x2 = big-endian
443  * 0x4 = signed
444  */
445  return ff_get_pcm_codec_id(bps, flags & 1, flags & 2, flags & 4 ? -1 : 0);
446 }
447 
448 #define MOV_ISMV_TTML_TAG MKTAG('d', 'f', 'x', 'p')
449 #define MOV_MP4_TTML_TAG MKTAG('s', 't', 'p', 'p')
450 #define MOV_MP4_FPCM_TAG MKTAG('f', 'p', 'c', 'm')
451 #define MOV_MP4_IPCM_TAG MKTAG('i', 'p', 'c', 'm')
452 
455  const char *value;
456 };
457 
459  const char *scheme_uri;
461 };
462 
463 extern const struct MP4TrackKindMapping ff_mov_track_kind_table[];
464 
465 #endif /* AVFORMAT_ISOM_H */
MOVStreamContext::ctts_allocated_size
unsigned int ctts_allocated_size
Definition: isom.h:181
MOVContext::found_iloc
int found_iloc
'iloc' atom has been found
Definition: isom.h:297
MOVFragmentStreamInfo::first_tfra_pts
int64_t first_tfra_pts
Definition: isom.h:136
ff_get_pcm_codec_id
enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags)
Select a PCM codec based on the given parameters.
Definition: utils.c:156
MOVStreamContext::audio_cid
int16_t audio_cid
stsd audio compression id
Definition: isom.h:211
HEIFItem::name
char * name
Definition: isom.h:274
MOVStreamContext::sync_group
MOVSbgp * sync_group
Definition: isom.h:229
MOVStreamContext::height
int height
tkhd height
Definition: isom.h:217
MOVContext::moov_retry
int moov_retry
Definition: isom.h:325
MOVContext::nb_chapter_tracks
unsigned int nb_chapter_tracks
Definition: isom.h:313
MOVStreamContext::last_stsd_index
int last_stsd_index
Definition: isom.h:244
MOVContext::use_absolute_path
int use_absolute_path
Definition: isom.h:314
MOVStreamContext::extradata
uint8_t ** extradata
extradata array (and size) for multiple stsd
Definition: isom.h:242
MOVStreamContext::open_key_samples
int * open_key_samples
Definition: isom.h:234
MOVContext::activation_bytes
void * activation_bytes
Definition: isom.h:334
MOVFragmentStreamInfo
Definition: isom.h:133
AVAmbientViewingEnvironment
Ambient viewing environment metadata as defined by H.274.
Definition: ambient_viewing_environment.h:36
MOVStreamContext::sample_offsets
int32_t * sample_offsets
Definition: isom.h:232
int64_t
long long int64_t
Definition: coverity.c:34
MOVFragment::base_data_offset
uint64_t base_data_offset
Definition: isom.h:98
MOVStreamContext
Definition: isom.h:167
MOVStreamContext::stsc_data
MOVStsc * stsc_data
Definition: isom.h:184
MOVStreamContext::spherical
AVSphericalMapping * spherical
Definition: isom.h:250
MOVEncryptionIndex
Definition: isom.h:120
MOVContext::primary_item_id
int primary_item_id
Definition: isom.h:350
MOVContext::found_moov
int found_moov
'moov' atom has been found
Definition: isom.h:296
HEIFGrid::nb_tiles
int nb_tiles
Definition: isom.h:288
MOVSbgp
Definition: isom.h:115
MOVCtts
Definition: isom.h:62
MOVStreamContext::rap_group_count
unsigned int rap_group_count
Definition: isom.h:226
HEIFItem::type
int type
Definition: isom.h:280
MOVContext::found_mdat
int found_mdat
'mdat' atom has been found
Definition: isom.h:299
MOVStreamContext::drefs_count
unsigned drefs_count
Definition: isom.h:212
MOVContext::max_stts_delta
uint32_t max_stts_delta
Definition: isom.h:349
MOVContext::trex_data
MOVTrackExt * trex_data
Definition: isom.h:308
MOVContext::bitrates
int * bitrates
bitrates read before streams creation
Definition: isom.h:323
MOVContext::export_all
int export_all
Definition: isom.h:321
MOVContext::interleaved_read
int interleaved_read
Definition: isom.h:358
MOVElst::rate
float rate
Definition: isom.h:76
spherical.h
HEIFItem::st
AVStream * st
Definition: isom.h:273
MOVFragmentIndexItem::moof_offset
int64_t moof_offset
Definition: isom.h:147
MOVStreamContext::spherical_size
size_t spherical_size
Definition: isom.h:251
fc
#define fc(width, name, range_min, range_max)
Definition: cbs_av1.c:472
MP4TrackKindMapping::scheme_uri
const char * scheme_uri
Definition: isom.h:459
MOVDref::dir
char * dir
Definition: isom.h:82
MOVContext::activation_bytes_size
int activation_bytes_size
Definition: isom.h:335
ff_mp4_parse_es_descr
void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id)
Definition: isom.c:304
MOVAtom
Definition: isom.h:88
MOVStreamContext::sample_count
unsigned int sample_count
Definition: isom.h:195
MOVFragmentIndex::allocated_size
int allocated_size
Definition: isom.h:155
MOVTrackExt::flags
unsigned flags
Definition: isom.h:112
HEIFItem::height
int height
Definition: isom.h:279
MOVStreamContext::ctts_data
MOVCtts * ctts_data
Definition: isom.h:182
MOVContext::advanced_editlist_autodisabled
int advanced_editlist_autodisabled
Definition: isom.h:317
ff_mp4_read_dec_config_descr
int ff_mp4_read_dec_config_descr(void *logctx, AVStream *st, AVIOContext *pb)
Definition: isom.c:329
MOVStreamContext::aes_ctr
struct AVAESCTR * aes_ctr
Definition: isom.h:262
MOVStreamContext::dv_audio_container
int dv_audio_container
Definition: isom.h:209
DVDemuxContext
struct DVDemuxContext DVDemuxContext
Definition: dv.h:33
MOVStreamContext::stsd_count
int stsd_count
Definition: isom.h:245
AVContentLightMetadata
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
Definition: mastering_display_metadata.h:98
MOVStreamContext::stsc_count
unsigned int stsc_count
Definition: isom.h:183
MOVStreamContext::has_palette
int has_palette
Definition: isom.h:220
MOVIndexRange::start
int64_t start
Definition: isom.h:163
HEIFGrid::tile_item_list
HEIFItem ** tile_item_list
Definition: isom.h:286
MOVStreamContext::nb_frames_for_fps
int nb_frames_for_fps
Definition: isom.h:238
MOVStreamContext::mastering
AVMasteringDisplayMetadata * mastering
Definition: isom.h:252
MOVFragmentIndexItem::current
int current
Definition: isom.h:149
MOVTrackExt
Definition: isom.h:107
MOVFragment::found_tfhd
int found_tfhd
Definition: isom.h:96
MOVContext::decryption_key
uint8_t * decryption_key
Definition: isom.h:343
HEIFItem::item_id
int item_id
Definition: isom.h:275
MOVStreamContext::ctts_index
int ctts_index
Definition: isom.h:191
MOVParseTableEntry
Definition: mov.c:79
dv.h
MOVCtts::duration
int duration
Definition: isom.h:64
MOVContext
Definition: isom.h:291
MOVContext::isom
int isom
1 if file is ISO Media (mp4/3gp)
Definition: isom.h:306
MOVStreamContext::width
int width
tkhd width
Definition: isom.h:216
MOVContext::meta_keys
char ** meta_keys
Definition: isom.h:302
MOVStreamContext::extradata_size
int * extradata_size
Definition: isom.h:243
MOVContext::audible_iv_size
int audible_iv_size
Definition: isom.h:341
MOVStreamContext::keyframes
int * keyframes
Definition: isom.h:199
MOVEncryptionIndex::auxiliary_info_sample_count
size_t auxiliary_info_sample_count
Definition: isom.h:127
MOVStsc::id
int id
Definition: isom.h:70
MOVContext::idat_offset
int64_t idat_offset
Definition: isom.h:357
MOVStreamContext::elst_data
MOVElst * elst_data
Definition: isom.h:189
MOVFragmentIndex::complete
int complete
Definition: isom.h:156
MOVStreamContext::stsc_sample
int stsc_sample
Definition: isom.h:186
AVCodecTag
Definition: internal.h:42
MOVTrackExt::track_id
unsigned track_id
Definition: isom.h:108
MOVEncryptionIndex::auxiliary_offsets
uint64_t * auxiliary_offsets
Absolute seek position.
Definition: isom.h:129
MOVStreamContext::dts_shift
int dts_shift
dts shift when ctts is negative
Definition: isom.h:218
MOVStreamContext::stsd_version
int stsd_version
Definition: isom.h:246
ff_mov_read_esds
int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb)
Definition: mov_esds.c:23
stereo3d.h
MOVFragmentStreamInfo::encryption_index
MOVEncryptionIndex * encryption_index
Definition: isom.h:142
MOVContext::fc
AVFormatContext * fc
Definition: isom.h:293
ff_mov_lang_to_iso639
int ff_mov_lang_to_iso639(unsigned code, char to[4])
Definition: isom.c:260
MOVContext::audible_key_size
int audible_key_size
Definition: isom.h:339
MOVStreamContext::sample_offsets_count
int sample_offsets_count
Definition: isom.h:233
MOVCtts::count
unsigned int count
Definition: isom.h:63
MOVStreamContext::drefs
MOVDref * drefs
Definition: isom.h:213
MOVContext::aes_decrypt
struct AVAES * aes_decrypt
Definition: isom.h:342
MOVFragmentIndex::nb_items
int nb_items
Definition: isom.h:158
MOVStreamContext::keyframe_absent
int keyframe_absent
Definition: isom.h:197
MOVStts::duration
unsigned int duration
Definition: isom.h:59
MOVStreamContext::coll_size
size_t coll_size
Definition: isom.h:254
to
const char * to
Definition: webvttdec.c:35
MOVStreamContext::min_corrected_pts
int64_t min_corrected_pts
minimum Composition time shown by the edits excluding empty edits.
Definition: isom.h:202
MOVStreamContext::sdtp_count
unsigned int sdtp_count
Definition: isom.h:178
ff_mov_iso639_to_lang
int ff_mov_iso639_to_lang(const char lang[4], int mp4)
Definition: isom.c:233
ff_mp4_read_descr
int ff_mp4_read_descr(void *logctx, AVIOContext *pb, int *tag)
Definition: isom.c:295
MOVStreamContext::sdtp_data
uint8_t * sdtp_data
Definition: isom.h:179
MOVTrackExt::duration
unsigned duration
Definition: isom.h:110
MOVContext::audible_iv
void * audible_iv
Definition: isom.h:340
MOVStreamContext::current_sample
int current_sample
Definition: isom.h:203
MOVFragmentStreamInfo::sidx_pts
int64_t sidx_pts
Definition: isom.h:135
MOVFragmentIndex::current
int current
Definition: isom.h:157
MOVEncryptionIndex::encrypted_samples
AVEncryptionInfo ** encrypted_samples
Definition: isom.h:124
MOVAtom::size
int64_t size
Definition: isom.h:90
MOVStreamContext::refcount
int refcount
Definition: isom.h:169
ff_mov_get_lpcm_codec_id
static enum AVCodecID ff_mov_get_lpcm_codec_id(int bps, int flags)
Compute codec id for 'lpcm' tag.
Definition: isom.h:438
MOVStreamContext::keyframe_count
unsigned int keyframe_count
Definition: isom.h:198
MOVStsc
Definition: isom.h:67
AVFormatContext
Format I/O context.
Definition: avformat.h:1255
MOVStreamContext::index_ranges
MOVIndexRange * index_ranges
Definition: isom.h:205
internal.h
MOVTrackExt::stsd_id
unsigned stsd_id
Definition: isom.h:109
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
MOVContext::ignore_editlist
int ignore_editlist
Definition: isom.h:315
MOVDref
Definition: isom.h:79
MOVStreamContext::ctts_count
unsigned int ctts_count
Definition: isom.h:180
MP4TrackKindValueMapping::disposition
int disposition
Definition: isom.h:454
MOVContext::use_tfdt
int use_tfdt
Definition: isom.h:328
MOVContext::nb_heif_grid
int nb_heif_grid
Definition: isom.h:355
MOVElst
Definition: isom.h:73
MOVContext::movie_display_matrix
int32_t movie_display_matrix[3][3]
display matrix from mvhd
Definition: isom.h:346
MOVDref::nlvl_to
int16_t nlvl_to
Definition: isom.h:85
MOVContext::atom_depth
int atom_depth
Definition: isom.h:330
MOVContext::duration
int64_t duration
duration of the longest track
Definition: isom.h:295
MOVStreamContext::time_offset
int64_t time_offset
time offset of the edit list entries
Definition: isom.h:201
MOVStreamContext::current_index_range
MOVIndexRange * current_index_range
Definition: isom.h:206
MOVStreamContext::timecode_track
int timecode_track
Definition: isom.h:215
ff_codec_movvideo_tags
const AVCodecTag ff_codec_movvideo_tags[]
Definition: isom_tags.c:29
ff_mp4_read_descr_len
int ff_mp4_read_descr_len(AVIOContext *pb)
Definition: isom.c:282
MOVFragmentStreamInfo::index_base
int index_base
Definition: isom.h:140
MOVStreamContext::rap_group
MOVSbgp * rap_group
Definition: isom.h:227
MOVFragmentStreamInfo::stsd_id
int stsd_id
Definition: isom.h:143
MOVStreamContext::open_key_samples_count
int open_key_samples_count
Definition: isom.h:235
HEIFItem
Definition: isom.h:272
ff_codec_movaudio_tags
const AVCodecTag ff_codec_movaudio_tags[]
Definition: isom_tags.c:296
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
MOVSbgp::count
unsigned int count
Definition: isom.h:116
MOVStts
Definition: isom.h:57
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:49
MOVContext::dv_demux
DVDemuxContext * dv_demux
Definition: isom.h:304
MOVEncryptionIndex::auxiliary_info_default_size
uint8_t auxiliary_info_default_size
Definition: isom.h:128
MOVContext::has_looked_for_mfra
int has_looked_for_mfra
Definition: isom.h:327
MOVFragment::flags
unsigned flags
Definition: isom.h:104
AVIOContext
Bytestream IO Context.
Definition: avio.h:160
MOVStreamContext::aes_ctx
struct AVAES * aes_ctx
Definition: isom.h:263
MOVContext::handbrake_version
int handbrake_version
Definition: isom.h:311
MOVStreamContext::ctts_sample
int ctts_sample
Definition: isom.h:192
MOVFragmentIndexItem
Definition: isom.h:146
MOVStsc::first
int first
Definition: isom.h:68
MOVStreamContext::stsz_sample_size
unsigned int stsz_sample_size
always contains sample size from stsz atom
Definition: isom.h:194
MOVStreamContext::sgpd_sync
uint8_t * sgpd_sync
Definition: isom.h:230
bps
unsigned bps
Definition: movenc.c:1792
MOVContext::audible_fixed_key
void * audible_fixed_key
Definition: isom.h:336
MOVContext::trex_count
unsigned trex_count
Definition: isom.h:309
avio.h
MOVStreamContext::coll
AVContentLightMetadata * coll
Definition: isom.h:253
HEIFItem::is_idat_relative
int is_idat_relative
Definition: isom.h:281
MOVDref::path
char * path
Definition: isom.h:81
MOVContext::file_key
uint8_t file_key[20]
Definition: isom.h:332
MOVEncryptionIndex::auxiliary_offsets_count
size_t auxiliary_offsets_count
Definition: isom.h:130
MOVFragmentIndexItem::stream_info
MOVFragmentStreamInfo * stream_info
Definition: isom.h:151
MOVStreamContext::chunk_offsets
int64_t * chunk_offsets
Definition: isom.h:175
ff_mp4_obj_type
const AVCodecTag ff_mp4_obj_type[]
Definition: isom.c:34
MOVFragmentIndex::item
MOVFragmentIndexItem * item
Definition: isom.h:159
MOVStreamContext::iamf
struct IAMFDemuxContext * iamf
Definition: isom.h:269
MOVContext::heif_item
HEIFItem * heif_item
Definition: isom.h:352
MOVContext::decryption_key_len
int decryption_key_len
Definition: isom.h:344
MOVContext::audible_fixed_key_size
int audible_fixed_key_size
Definition: isom.h:337
MOVDref::nlvl_from
int16_t nlvl_from
Definition: isom.h:85
MOVFragmentStreamInfo::next_trun_dts
int64_t next_trun_dts
Definition: isom.h:138
MOVStreamContext::stsc_index
unsigned int stsc_index
Definition: isom.h:185
MOVIndexRange
Definition: isom.h:162
MOVContext::advanced_editlist
int advanced_editlist
Definition: isom.h:316
MOVStreamContext::time_scale
int time_scale
Definition: isom.h:200
MOVStreamContext::bytes_per_frame
unsigned int bytes_per_frame
Definition: isom.h:207
MOVIndexRange::end
int64_t end
Definition: isom.h:164
code
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some it can consider them to be part of the FIFO and delay acknowledging a status change accordingly Example code
Definition: filter_design.txt:178
HEIFItem::width
int width
Definition: isom.h:278
MOVStreamContext::stereo3d
AVStereo3D * stereo3d
Definition: isom.h:249
MOVDref::volume
char volume[28]
Definition: isom.h:83
MOVStreamContext::stps_count
unsigned int stps_count
Definition: isom.h:187
MOVFragment::duration
unsigned duration
Definition: isom.h:102
MOVStreamContext::sample_sizes
unsigned int * sample_sizes
Definition: isom.h:196
MOVContext::frag_index
MOVFragmentIndex frag_index
Definition: isom.h:329
ff_codec_movsubtitle_tags
const AVCodecTag ff_codec_movsubtitle_tags[]
Definition: isom.c:75
MOVStreamContext::dref_id
int dref_id
Definition: isom.h:214
MOVContext::mfra_size
uint32_t mfra_size
Definition: isom.h:348
ff_mov_write_chan
void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout)
Definition: isom.c:414
MOVStreamContext::pb
AVIOContext * pb
Definition: isom.h:168
AVMasteringDisplayMetadata
Mastering display metadata capable of representing the color volume of the display used to master the...
Definition: mastering_display_metadata.h:38
MOVFragment::size
unsigned size
Definition: isom.h:103
ambient_viewing_environment.h
MOVContext::export_xmp
int export_xmp
Definition: isom.h:322
MOVFragmentStreamInfo::tfdt_dts
int64_t tfdt_dts
Definition: isom.h:137
MP4TrackKindValueMapping
Definition: isom.h:453
ff_codec_movdata_tags
const AVCodecTag ff_codec_movdata_tags[]
Definition: isom.c:82
MOVStreamContext::chunk_count
unsigned int chunk_count
Definition: isom.h:174
MOVStreamContext::data_size
int64_t data_size
Definition: isom.h:221
MOVStreamContext::ambient
AVAmbientViewingEnvironment * ambient
Definition: isom.h:255
MOVStreamContext::ambient_size
size_t ambient_size
Definition: isom.h:256
tag
uint32_t tag
Definition: movenc.c:1791
AVStream
Stream structure.
Definition: avformat.h:743
HEIFItem::extent_length
int64_t extent_length
Definition: isom.h:276
MOVEncryptionIndex::nb_encrypted_samples
unsigned int nb_encrypted_samples
Definition: isom.h:123
MOVStreamContext::stts_data
MOVStts * stts_data
Definition: isom.h:177
AVAES
Definition: aes_internal.h:34
MOVSbgp::index
unsigned int index
Definition: isom.h:117
MOVContext::chapter_tracks
int * chapter_tracks
Definition: isom.h:312
MOVFragment::implicit_offset
uint64_t implicit_offset
Definition: isom.h:100
MOVStreamContext::pseudo_stream_id
int pseudo_stream_id
-1 means demux all ids
Definition: isom.h:210
MOVContext::time_scale
int time_scale
Definition: isom.h:294
MP4TrackKindMapping::value_maps
const struct MP4TrackKindValueMapping * value_maps
Definition: isom.h:460
MOVFragment
Definition: isom.h:95
MOVContext::use_mfra_for
int use_mfra_for
Definition: isom.h:326
MOVContext::enable_drefs
int enable_drefs
Definition: isom.h:345
AVEncryptionInfo
This describes encryption info for a packet.
Definition: encryption_info.h:43
MOVStreamContext::encryption_index
MOVEncryptionIndex * encryption_index
Definition: isom.h:266
MOVStreamContext::sample_size
unsigned int sample_size
may contain value calculated from stsd or value from stsz atom
Definition: isom.h:193
MOVStreamContext::duration_for_fps
int64_t duration_for_fps
Definition: isom.h:239
MOVFragment::moof_offset
uint64_t moof_offset
Definition: isom.h:99
MOVTrackExt::size
unsigned size
Definition: isom.h:111
MOVContext::dv_fctx
AVFormatContext * dv_fctx
Definition: isom.h:305
MOVContext::aax_mode
unsigned int aax_mode
'aax' file has been detected
Definition: isom.h:331
MOVFragmentIndex
Definition: isom.h:154
MOVStreamContext::track_end
int64_t track_end
used for dts generation in fragmented movie files
Definition: isom.h:224
MOVStreamContext::sgpd_sync_count
uint32_t sgpd_sync_count
Definition: isom.h:231
MOVContext::fragment
MOVFragment fragment
current fragment in moof atom
Definition: isom.h:307
MOVDref::type
uint32_t type
Definition: isom.h:80
MOVStreamContext::per_sample_iv_size
unsigned int per_sample_iv_size
Definition: isom.h:264
MOVFragmentIndexItem::nb_stream_info
int nb_stream_info
Definition: isom.h:150
MOVStreamContext::has_sidx
int has_sidx
Definition: isom.h:260
MOVFragmentStreamInfo::id
int id
Definition: isom.h:134
MOVContext::thmb_item_id
int thmb_item_id
Definition: isom.h:356
encryption_info.h
MOVStreamContext::pb_is_copied
int pb_is_copied
Definition: isom.h:170
MOVElst::time
int64_t time
Definition: isom.h:75
HEIFGrid
Definition: isom.h:284
MOVStreamContext::next_chunk
int next_chunk
Definition: isom.h:173
MOVContext::trak_index
int trak_index
Index of the current 'trak'.
Definition: isom.h:301
HEIFGrid::item
HEIFItem * item
Definition: isom.h:285
mastering_display_metadata.h
MOVContext::itunes_metadata
int itunes_metadata
metadata are itunes style
Definition: isom.h:310
MOVEncryptionIndex::auxiliary_info_sizes
uint8_t * auxiliary_info_sizes
Definition: isom.h:126
MOVFragment::stsd_id
unsigned stsd_id
Definition: isom.h:101
HEIFGrid::tile_id_list
int16_t * tile_id_list
Definition: isom.h:287
ff_mov_track_kind_table
const struct MP4TrackKindMapping ff_mov_track_kind_table[]
Definition: isom.c:449
ff_mov_read_stsd_entries
int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
Definition: mov.c:2897
MOVStreamContext::stps_data
unsigned * stps_data
partial sync sample for mpeg-2 open gop
Definition: isom.h:188
MOVContext::nb_heif_item
int nb_heif_item
Definition: isom.h:353
MOVContext::found_hdlr_mdta
int found_hdlr_mdta
'hdlr' atom with type 'mdta' has been found
Definition: isom.h:300
MOVStreamContext::tmcd_flags
uint32_t tmcd_flags
tmcd track flags
Definition: isom.h:222
int32_t
int32_t
Definition: audioconvert.c:56
MOVAtom::type
uint32_t type
Definition: isom.h:89
MOVStreamContext::tmcd_nb_frames
uint8_t tmcd_nb_frames
tmcd number of frames per tick / second
Definition: isom.h:223
MOVFragmentIndexItem::headers_read
int headers_read
Definition: isom.h:148
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:482
MOVStreamContext::start_pad
int start_pad
amount of samples to skip due to enc-dec delay
Definition: isom.h:225
MP4TrackKindValueMapping::value
const char * value
Definition: isom.h:455
MOVDref::filename
char filename[64]
Definition: isom.h:84
MOVStsc::count
int count
Definition: isom.h:69
MOVStts::count
unsigned int count
Definition: isom.h:58
MOVStreamContext::display_matrix
int32_t * display_matrix
Definition: isom.h:248
MOVContext::heif_grid
HEIFGrid * heif_grid
Definition: isom.h:354
MOVStreamContext::min_sample_duration
uint32_t min_sample_duration
Definition: isom.h:236
MOVStreamContext::current_index
int64_t current_index
Definition: isom.h:204
MOVFragmentStreamInfo::index_entry
int index_entry
Definition: isom.h:141
MOVStreamContext::format
uint32_t format
Definition: isom.h:258
MOVStreamContext::sync_group_count
unsigned int sync_group_count
Definition: isom.h:228
MOVContext::bitrates_count
int bitrates_count
Definition: isom.h:324
MOVContext::audible_key
void * audible_key
Definition: isom.h:338
IAMFDemuxContext
Definition: iamf_reader.h:32
AVStereo3D
Stereo 3D type: this structure describes how two videos are packed within a single video surface,...
Definition: stereo3d.h:173
MOVStreamContext::id
int id
AVStream id.
Definition: isom.h:171
MOVStreamContext::samples_per_frame
unsigned int samples_per_frame
Definition: isom.h:208
MOVElst::duration
int64_t duration
Definition: isom.h:74
MOVContext::seek_individually
int seek_individually
Definition: isom.h:319
MOVStreamContext::cenc
struct MOVStreamContext::@319 cenc
MOVStreamContext::stts_count
unsigned int stts_count
Definition: isom.h:176
MOVStreamContext::elst_count
unsigned int elst_count
Definition: isom.h:190
AVSphericalMapping
This structure describes how to handle spherical videos, outlining information about projection,...
Definition: spherical.h:78
AVAESCTR
Definition: aes_ctr.c:33
MOVContext::file_iv
uint8_t file_iv[20]
Definition: isom.h:333
MOVStreamContext::default_encrypted_sample
AVEncryptionInfo * default_encrypted_sample
Definition: isom.h:265
MOVContext::cur_item_id
int cur_item_id
Definition: isom.h:351
MOVContext::next_root_atom
int64_t next_root_atom
offset of the next root atom
Definition: isom.h:320
MOVContext::found_iinf
int found_iinf
'iinf' atom has been found
Definition: isom.h:298
MOVContext::meta_keys_count
unsigned meta_keys_count
Definition: isom.h:303
MOVStreamContext::palette
uint32_t palette[256]
Definition: isom.h:219
MOVContext::have_read_mfra_size
int have_read_mfra_size
Definition: isom.h:347
MOVFragment::track_id
unsigned track_id
Definition: isom.h:97
MOVContext::ignore_chapters
int ignore_chapters
Definition: isom.h:318
MP4TrackKindMapping
Definition: isom.h:458
MOVStreamContext::ffindex
int ffindex
AVStream index.
Definition: isom.h:172
HEIFItem::extent_offset
int64_t extent_offset
Definition: isom.h:277