FFmpeg: libavformat/isom.h Source File

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 
30 #include "libavutil/encryption_info.h"
31 #include "libavutil/mastering_display_metadata.h"
32 #include "libavutil/ambient_viewing_environment.h"
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[];
44 extern const AVCodecTag ff_codec_movsubtitle_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 MOVTimeToSample {
58   unsigned int count;
59   unsigned int duration;
60   int offset;
61 } MOVTimeToSample;
62 
63  typedef struct MOVStts {
64   unsigned int count;
65   unsigned int duration;
66 } MOVStts;
67 
68  typedef struct MOVCtts {
69   unsigned int count;
70   int offset;
71 } MOVCtts;
72 
73  typedef struct MOVStsc {
74   int first;
75   int count;
76   int id;
77 } MOVStsc;
78 
79  typedef struct MOVElst {
80   int64_t duration;
81   int64_t time;
82   float rate;
83 } MOVElst;
84 
85  typedef struct MOVDref {
86   uint32_t type;
87   char *path;
88   char *dir;
89   char volume[28];
90   char filename[64];
91   int16_t nlvl_to, nlvl_from;
92 } MOVDref;
93 
94  typedef struct MOVAtom {
95   uint32_t type;
96   int64_t size; /* total size (excluding the size and type fields) */
97 } MOVAtom;
98 
99 struct MOVParseTableEntry;
100 
101  typedef struct MOVFragment {
102   int found_tfhd;
103   unsigned track_id;
104   uint64_t base_data_offset;
105   uint64_t moof_offset;
106   uint64_t implicit_offset;
107   unsigned stsd_id;
108   unsigned duration;
109   unsigned size;
110   unsigned flags;
111 } MOVFragment;
112 
113  typedef struct MOVTrackExt {
114   unsigned track_id;
115   unsigned stsd_id;
116   unsigned duration;
117   unsigned size;
118   unsigned flags;
119 } MOVTrackExt;
120 
121  typedef struct MOVSbgp {
122   unsigned int count;
123   unsigned int index;
124 } MOVSbgp;
125 
126  typedef struct MOVEncryptionIndex {
127  // Individual encrypted samples. If there are no elements, then the default
128  // settings will be used.
129   unsigned int nb_encrypted_samples;
130   AVEncryptionInfo **encrypted_samples;
131 
132   uint8_t* auxiliary_info_sizes;
133   size_t auxiliary_info_sample_count;
134   uint8_t auxiliary_info_default_size;
135   uint64_t* auxiliary_offsets; ///< Absolute seek position
136   size_t auxiliary_offsets_count;
137 } MOVEncryptionIndex;
138 
139  typedef struct MOVFragmentStreamInfo {
140   int id;
141   int64_t sidx_pts;
142   int64_t first_tfra_pts;
143   int64_t tfdt_dts;
144   int64_t next_trun_dts;
145  // Index of the first sample/trun in the fragment.
146   int index_base;
147   int index_entry;
148   MOVEncryptionIndex *encryption_index;
149   int stsd_id; // current fragment stsd_id
150 } MOVFragmentStreamInfo;
151 
152  typedef struct MOVFragmentIndexItem {
153   int64_t moof_offset;
154   int headers_read;
155   int current;
156   int nb_stream_info;
157   MOVFragmentStreamInfo * stream_info;
158 } MOVFragmentIndexItem;
159 
160  typedef struct MOVFragmentIndex {
161   int allocated_size;
162   int complete;
163   int current;
164   int nb_items;
165   MOVFragmentIndexItem * item;
166 } MOVFragmentIndex;
167 
168  typedef struct MOVIndexRange {
169   int64_t start;
170   int64_t end;
171 } MOVIndexRange;
172 
173  typedef struct MOVStreamContext {
174   AVIOContext *pb;
175   int refcount;
176   int pb_is_copied;
177   int id; ///< AVStream id
178   int ffindex; ///< AVStream index
179   int next_chunk;
180   unsigned int chunk_count;
181   int64_t *chunk_offsets;
182   unsigned int tts_count;
183   unsigned int tts_allocated_size;
184   MOVTimeToSample *tts_data;
185   unsigned int stts_count;
186   unsigned int stts_allocated_size;
187   MOVStts *stts_data;
188   unsigned int sdtp_count;
189   uint8_t *sdtp_data;
190   unsigned int ctts_count;
191   unsigned int ctts_allocated_size;
192   MOVCtts *ctts_data;
193   unsigned int stsc_count;
194   MOVStsc *stsc_data;
195   unsigned int stsc_index;
196   int stsc_sample;
197   unsigned int stps_count;
198   unsigned *stps_data; ///< partial sync sample for mpeg-2 open gop
199   MOVElst *elst_data;
200   unsigned int elst_count;
201   int tts_index;
202   int tts_sample;
203   unsigned int sample_size; ///< may contain value calculated from stsd or value from stsz atom
204   unsigned int stsz_sample_size; ///< always contains sample size from stsz atom
205   unsigned int sample_count;
206   unsigned int *sample_sizes;
207   int keyframe_absent;
208   unsigned int keyframe_count;
209   int *keyframes;
210   int time_scale;
211   int64_t time_offset; ///< time offset of the edit list entries
212   int64_t min_corrected_pts; ///< minimum Composition time shown by the edits excluding empty edits.
213   int current_sample;
214   int64_t current_index;
215   MOVIndexRange* index_ranges;
216   MOVIndexRange* current_index_range;
217   unsigned int bytes_per_frame;
218   unsigned int samples_per_frame;
219   int dv_audio_container;
220   int pseudo_stream_id; ///< -1 means demux all ids
221   int16_t audio_cid; ///< stsd audio compression id
222   unsigned drefs_count;
223   MOVDref *drefs;
224   int dref_id;
225   unsigned tref_flags;
226   int tref_id;
227   int timecode_track;
228   int width; ///< tkhd width
229   int height; ///< tkhd height
230   int h_spacing; ///< pasp hSpacing
231   int v_spacing; ///< pasp vSpacing
232   int dts_shift; ///< dts shift when ctts is negative
233   uint32_t palette[256];
234   int has_palette;
235   int64_t data_size;
236   uint32_t tmcd_flags; ///< tmcd track flags
237   uint8_t tmcd_nb_frames; ///< tmcd number of frames per tick / second
238   int64_t track_end; ///< used for dts generation in fragmented movie files
239   int start_pad; ///< amount of samples to skip due to enc-dec delay
240   unsigned int rap_group_count;
241   MOVSbgp *rap_group;
242   unsigned int sync_group_count;
243   MOVSbgp *sync_group;
244   uint8_t *sgpd_sync;
245   uint32_t sgpd_sync_count;
246   int32_t *sample_offsets;
247   int sample_offsets_count;
248   int *open_key_samples;
249   int open_key_samples_count;
250   uint32_t min_sample_duration;
251 
252   int nb_frames_for_fps;
253   int64_t duration_for_fps;
254 
255  /** extradata array (and size) for multiple stsd */
256   uint8_t **extradata;
257   int *extradata_size;
258   int last_stsd_index;
259   int stsd_count;
260   int stsd_version;
261 
262   int32_t *display_matrix;
263   AVStereo3D *stereo3d;
264   size_t stereo3d_size;
265   AVSphericalMapping *spherical;
266   size_t spherical_size;
267   AVMasteringDisplayMetadata *mastering;
268   size_t mastering_size;
269   AVContentLightMetadata *coll;
270   size_t coll_size;
271   AVAmbientViewingEnvironment *ambient;
272   size_t ambient_size;
273 
274   uint32_t format;
275 
276   int has_sidx; // If there is an sidx entry for this stream.
277  struct {
278   struct AVAESCTR* aes_ctr;
279   struct AVAES *aes_ctx;
280   unsigned int per_sample_iv_size; // Either 0, 8, or 16.
281   AVEncryptionInfo *default_encrypted_sample;
282   MOVEncryptionIndex *encryption_index;
283  } cenc;
284 
285   struct IAMFDemuxContext *iamf;
286   int iamf_stream_offset;
287 } MOVStreamContext;
288 
289  typedef struct HEIFItemRef {
290   uint32_t type;
291   int item_id;
292 } HEIFItemRef;
293 
294  typedef struct HEIFItem {
295   AVStream *st;
296   HEIFItemRef *iref_list;
297   int nb_iref_list;
298   char *name;
299   int item_id;
300   int64_t extent_length;
301   int64_t extent_offset;
302   int width;
303   int height;
304   int rotation;
305   int hflip;
306   int vflip;
307   int type;
308   int is_idat_relative;
309   uint8_t *icc_profile;
310   size_t icc_profile_size;
311 } HEIFItem;
312 
313  typedef struct HEIFGrid {
314   HEIFItem *item;
315   HEIFItem **tile_item_list;
316   int16_t *tile_id_list;
317   unsigned *tile_idx_list;
318   int nb_tiles;
319 } HEIFGrid;
320 
321  typedef struct MOVContext {
322   const AVClass *class; ///< class for private options
323   AVFormatContext *fc;
324   int time_scale;
325   int64_t duration; ///< duration of the longest track
326   int found_moov; ///< 'moov' atom has been found
327   int found_iloc; ///< 'iloc' atom has been found
328   int found_iinf; ///< 'iinf' atom has been found
329   int found_mdat; ///< 'mdat' atom has been found
330   int found_hdlr_mdta; ///< 'hdlr' atom with type 'mdta' has been found
331   int trak_index; ///< Index of the current 'trak'
332   char **meta_keys;
333   unsigned meta_keys_count;
334   DVDemuxContext *dv_demux;
335   AVFormatContext *dv_fctx;
336   int isom; ///< 1 if file is ISO Media (mp4/3gp)
337   MOVFragment fragment; ///< current fragment in moof atom
338   MOVTrackExt *trex_data;
339   unsigned trex_count;
340   int itunes_metadata; ///< metadata are itunes style
341   int handbrake_version;
342   int *chapter_tracks;
343   unsigned int nb_chapter_tracks;
344   int use_absolute_path;
345   int ignore_editlist;
346   int advanced_editlist;
347   int advanced_editlist_autodisabled;
348   int ignore_chapters;
349   int seek_individually;
350   int64_t next_root_atom; ///< offset of the next root atom
351   int export_all;
352   int export_xmp;
353   int *bitrates; ///< bitrates read before streams creation
354   int bitrates_count;
355   int moov_retry;
356   int use_mfra_for;
357   int has_looked_for_mfra;
358   int use_tfdt;
359   MOVFragmentIndex frag_index;
360   int atom_depth;
361   unsigned int aax_mode; ///< 'aax' file has been detected
362   uint8_t file_key[20];
363   uint8_t file_iv[20];
364   void *activation_bytes;
365   int activation_bytes_size;
366   void *audible_fixed_key;
367   int audible_fixed_key_size;
368   void *audible_key;
369   int audible_key_size;
370   void *audible_iv;
371   int audible_iv_size;
372   struct AVAES *aes_decrypt;
373   uint8_t *decryption_key;
374   int decryption_key_len;
375   int enable_drefs;
376   int32_t movie_display_matrix[3][3]; ///< display matrix from mvhd
377   int have_read_mfra_size;
378   uint32_t mfra_size;
379   uint32_t max_stts_delta;
380   int primary_item_id;
381   int cur_item_id;
382   HEIFItem **heif_item;
383   int nb_heif_item;
384   HEIFGrid *heif_grid;
385   int nb_heif_grid;
386   int64_t idat_offset;
387   int interleaved_read;
388 } MOVContext;
389 
390 int ff_mp4_read_descr_len(AVIOContext *pb);
391 int ff_mp4_read_descr(void *logctx, AVIOContext *pb, int *tag);
392 int ff_mp4_read_dec_config_descr(void *logctx, AVStream *st, AVIOContext *pb);
393 void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id);
394 
395  #define MP4ODescrTag 0x01
396  #define MP4IODescrTag 0x02
397  #define MP4ESDescrTag 0x03
398  #define MP4DecConfigDescrTag 0x04
399  #define MP4DecSpecificDescrTag 0x05
400  #define MP4SLDescrTag 0x06
401 
402  #define MOV_TFHD_BASE_DATA_OFFSET 0x01
403  #define MOV_TFHD_STSD_ID 0x02
404  #define MOV_TFHD_DEFAULT_DURATION 0x08
405  #define MOV_TFHD_DEFAULT_SIZE 0x10
406  #define MOV_TFHD_DEFAULT_FLAGS 0x20
407  #define MOV_TFHD_DURATION_IS_EMPTY 0x010000
408  #define MOV_TFHD_DEFAULT_BASE_IS_MOOF 0x020000
409 
410  #define MOV_TRUN_DATA_OFFSET 0x01
411  #define MOV_TRUN_FIRST_SAMPLE_FLAGS 0x04
412  #define MOV_TRUN_SAMPLE_DURATION 0x100
413  #define MOV_TRUN_SAMPLE_SIZE 0x200
414  #define MOV_TRUN_SAMPLE_FLAGS 0x400
415  #define MOV_TRUN_SAMPLE_CTS 0x800
416 
417  #define MOV_FRAG_SAMPLE_FLAG_DEGRADATION_PRIORITY_MASK 0x0000ffff
418  #define MOV_FRAG_SAMPLE_FLAG_IS_NON_SYNC 0x00010000
419  #define MOV_FRAG_SAMPLE_FLAG_PADDING_MASK 0x000e0000
420  #define MOV_FRAG_SAMPLE_FLAG_REDUNDANCY_MASK 0x00300000
421  #define MOV_FRAG_SAMPLE_FLAG_DEPENDED_MASK 0x00c00000
422  #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_MASK 0x03000000
423 
424  #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_NO 0x02000000
425  #define MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES 0x01000000
426 
427  #define MOV_TKHD_FLAG_ENABLED 0x0001
428  #define MOV_TKHD_FLAG_IN_MOVIE 0x0002
429  #define MOV_TKHD_FLAG_IN_PREVIEW 0x0004
430  #define MOV_TKHD_FLAG_IN_POSTER 0x0008
431 
432  #define MOV_SAMPLE_DEPENDENCY_UNKNOWN 0x0
433  #define MOV_SAMPLE_DEPENDENCY_YES 0x1
434  #define MOV_SAMPLE_DEPENDENCY_NO 0x2
435 
436  #define MOV_TREF_FLAG_ENHANCEMENT 0x1
437 
438  #define TAG_IS_AVCI(tag) \
439  ((tag) == MKTAG('a', 'i', '5', 'p') || \
440  (tag) == MKTAG('a', 'i', '5', 'q') || \
441  (tag) == MKTAG('a', 'i', '5', '2') || \
442  (tag) == MKTAG('a', 'i', '5', '3') || \
443  (tag) == MKTAG('a', 'i', '5', '5') || \
444  (tag) == MKTAG('a', 'i', '5', '6') || \
445  (tag) == MKTAG('a', 'i', '1', 'p') || \
446  (tag) == MKTAG('a', 'i', '1', 'q') || \
447  (tag) == MKTAG('a', 'i', '1', '2') || \
448  (tag) == MKTAG('a', 'i', '1', '3') || \
449  (tag) == MKTAG('a', 'i', '1', '5') || \
450  (tag) == MKTAG('a', 'i', '1', '6') || \
451  (tag) == MKTAG('a', 'i', 'v', 'x') || \
452  (tag) == MKTAG('A', 'V', 'i', 'n'))
453 
454 
455 int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb);
456 
457 int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries);
458 void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout);
459 
460  #define FF_MOV_FLAG_MFRA_AUTO -1
461  #define FF_MOV_FLAG_MFRA_DTS 1
462  #define FF_MOV_FLAG_MFRA_PTS 2
463 
464 /**
465  * Compute codec id for 'lpcm' tag.
466  * See CoreAudioTypes and AudioStreamBasicDescription at Apple.
467  */
468  static inline enum AVCodecID ff_mov_get_lpcm_codec_id(int bps, int flags)
469 {
470  /* lpcm flags:
471  * 0x1 = float
472  * 0x2 = big-endian
473  * 0x4 = signed
474  */
475  return ff_get_pcm_codec_id(bps, flags & 1, flags & 2, flags & 4 ? -1 : 0);
476 }
477 
478  #define MOV_ISMV_TTML_TAG MKTAG('d', 'f', 'x', 'p')
479  #define MOV_MP4_TTML_TAG MKTAG('s', 't', 'p', 'p')
480  #define MOV_MP4_FPCM_TAG MKTAG('f', 'p', 'c', 'm')
481  #define MOV_MP4_IPCM_TAG MKTAG('i', 'p', 'c', 'm')
482 
483  struct MP4TrackKindValueMapping {
484   int disposition;
485   const char *value;
486 };
487 
488  struct MP4TrackKindMapping {
489   const char *scheme_uri;
490   const struct MP4TrackKindValueMapping *value_maps;
491 };
492 
493 extern const struct MP4TrackKindMapping ff_mov_track_kind_table[];
494 
495 #endif /* AVFORMAT_ISOM_H */
HEIFItemRef::item_id
int item_id
Definition: isom.h:291
MOVStreamContext::ctts_allocated_size
unsigned int ctts_allocated_size
Definition: isom.h:191
flags
const SwsFlags flags[]
Definition: swscale.c:61
MOVContext::found_iloc
int found_iloc
'iloc' atom has been found
Definition: isom.h:327
MOVFragmentStreamInfo::first_tfra_pts
int64_t first_tfra_pts
Definition: isom.h:142
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:154
MOVStreamContext::audio_cid
int16_t audio_cid
stsd audio compression id
Definition: isom.h:221
HEIFItem::name
char * name
Definition: isom.h:298
MOVStreamContext::sync_group
MOVSbgp * sync_group
Definition: isom.h:243
MOVStreamContext::height
int height
tkhd height
Definition: isom.h:229
MOVContext::moov_retry
int moov_retry
Definition: isom.h:355
MOVContext::nb_chapter_tracks
unsigned int nb_chapter_tracks
Definition: isom.h:343
MOVStreamContext::last_stsd_index
int last_stsd_index
Definition: isom.h:258
MOVContext::use_absolute_path
int use_absolute_path
Definition: isom.h:344
MOVStreamContext::extradata
uint8_t ** extradata
extradata array (and size) for multiple stsd
Definition: isom.h:256
MOVStreamContext::open_key_samples
int * open_key_samples
Definition: isom.h:248
MOVContext::activation_bytes
void * activation_bytes
Definition: isom.h:364
MOVFragmentStreamInfo
Definition: isom.h:139
HEIFItem::icc_profile
uint8_t * icc_profile
Definition: isom.h:309
AVAmbientViewingEnvironment
Ambient viewing environment metadata as defined by H.274.
Definition: ambient_viewing_environment.h:36
HEIFItem::hflip
int hflip
Definition: isom.h:305
MOVStreamContext::sample_offsets
int32_t * sample_offsets
Definition: isom.h:246
MOVStreamContext::cenc
struct MOVStreamContext::@441 cenc
int64_t
long long int64_t
Definition: coverity.c:34
MOVFragment::base_data_offset
uint64_t base_data_offset
Definition: isom.h:104
MOVStreamContext
Definition: isom.h:173
MOVStreamContext::stsc_data
MOVStsc * stsc_data
Definition: isom.h:194
MOVStreamContext::spherical
AVSphericalMapping * spherical
Definition: isom.h:265
MOVEncryptionIndex
Definition: isom.h:126
MOVContext::primary_item_id
int primary_item_id
Definition: isom.h:380
MOVContext::found_moov
int found_moov
'moov' atom has been found
Definition: isom.h:326
HEIFGrid::nb_tiles
int nb_tiles
Definition: isom.h:318
MOVSbgp
Definition: isom.h:121
MOVCtts
Definition: isom.h:68
MOVStreamContext::rap_group_count
unsigned int rap_group_count
Definition: isom.h:240
HEIFItem::type
int type
Definition: isom.h:307
MOVContext::found_mdat
int found_mdat
'mdat' atom has been found
Definition: isom.h:329
MOVStreamContext::drefs_count
unsigned drefs_count
Definition: isom.h:222
MOVContext::max_stts_delta
uint32_t max_stts_delta
Definition: isom.h:379
MOVContext::trex_data
MOVTrackExt * trex_data
Definition: isom.h:338
MOVContext::bitrates
int * bitrates
bitrates read before streams creation
Definition: isom.h:353
MOVContext::export_all
int export_all
Definition: isom.h:351
MOVContext::interleaved_read
int interleaved_read
Definition: isom.h:387
MOVElst::rate
float rate
Definition: isom.h:82
spherical.h
HEIFItem::st
AVStream * st
Definition: isom.h:295
MOVFragmentIndexItem::moof_offset
int64_t moof_offset
Definition: isom.h:153
MOVStreamContext::spherical_size
size_t spherical_size
Definition: isom.h:266
HEIFItemRef
Definition: isom.h:289
MOVStreamContext::tref_id
int tref_id
Definition: isom.h:226
MP4TrackKindMapping::scheme_uri
const char * scheme_uri
Definition: isom.h:489
MOVDref::dir
char * dir
Definition: isom.h:88
MOVContext::activation_bytes_size
int activation_bytes_size
Definition: isom.h:365
ff_mp4_parse_es_descr
void ff_mp4_parse_es_descr(AVIOContext *pb, int *es_id)
Definition: isom.c:304
MOVAtom
Definition: isom.h:94
MOVStreamContext::sample_count
unsigned int sample_count
Definition: isom.h:205
MOVFragmentIndex::allocated_size
int allocated_size
Definition: isom.h:161
MOVTrackExt::flags
unsigned flags
Definition: isom.h:118
HEIFItem::height
int height
Definition: isom.h:303
MOVStreamContext::ctts_data
MOVCtts * ctts_data
Definition: isom.h:192
MOVContext::advanced_editlist_autodisabled
int advanced_editlist_autodisabled
Definition: isom.h:347
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:278
MOVStreamContext::dv_audio_container
int dv_audio_container
Definition: isom.h:219
DVDemuxContext
struct DVDemuxContext DVDemuxContext
Definition: dv.h:33
MOVStreamContext::stsd_count
int stsd_count
Definition: isom.h:259
AVContentLightMetadata
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
Definition: mastering_display_metadata.h:107
MOVStreamContext::stsc_count
unsigned int stsc_count
Definition: isom.h:193
MOVStreamContext::has_palette
int has_palette
Definition: isom.h:234
MOVIndexRange::start
int64_t start
Definition: isom.h:169
HEIFGrid::tile_item_list
HEIFItem ** tile_item_list
Definition: isom.h:315
MOVStreamContext::nb_frames_for_fps
int nb_frames_for_fps
Definition: isom.h:252
MOVStreamContext::mastering
AVMasteringDisplayMetadata * mastering
Definition: isom.h:267
MOVFragmentIndexItem::current
int current
Definition: isom.h:155
MOVTrackExt
Definition: isom.h:113
MOVFragment::found_tfhd
int found_tfhd
Definition: isom.h:102
MOVContext::decryption_key
uint8_t * decryption_key
Definition: isom.h:373
HEIFItem::item_id
int item_id
Definition: isom.h:299
MOVStreamContext::mastering_size
size_t mastering_size
Definition: isom.h:268
MOVParseTableEntry
Definition: mov.c:82
dv.h
MOVContext
Definition: isom.h:321
MOVStreamContext::v_spacing
int v_spacing
pasp vSpacing
Definition: isom.h:231
MOVContext::isom
int isom
1 if file is ISO Media (mp4/3gp)
Definition: isom.h:336
MOVStreamContext::width
int width
tkhd width
Definition: isom.h:228
MOVContext::meta_keys
char ** meta_keys
Definition: isom.h:332
MOVStreamContext::extradata_size
int * extradata_size
Definition: isom.h:257
MOVContext::audible_iv_size
int audible_iv_size
Definition: isom.h:371
MOVStreamContext::keyframes
int * keyframes
Definition: isom.h:209
MOVEncryptionIndex::auxiliary_info_sample_count
size_t auxiliary_info_sample_count
Definition: isom.h:133
MOVStsc::id
int id
Definition: isom.h:76
MOVContext::idat_offset
int64_t idat_offset
Definition: isom.h:386
MOVStreamContext::elst_data
MOVElst * elst_data
Definition: isom.h:199
MOVFragmentIndex::complete
int complete
Definition: isom.h:162
MOVStreamContext::stsc_sample
int stsc_sample
Definition: isom.h:196
AVCodecTag
Definition: internal.h:42
MOVTrackExt::track_id
unsigned track_id
Definition: isom.h:114
MOVEncryptionIndex::auxiliary_offsets
uint64_t * auxiliary_offsets
Absolute seek position.
Definition: isom.h:135
MOVStreamContext::dts_shift
int dts_shift
dts shift when ctts is negative
Definition: isom.h:232
MOVStreamContext::stsd_version
int stsd_version
Definition: isom.h:260
MOVStreamContext::iamf_stream_offset
int iamf_stream_offset
Definition: isom.h:286
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:148
MOVContext::fc
AVFormatContext * fc
Definition: isom.h:323
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:369
MOVStreamContext::sample_offsets_count
int sample_offsets_count
Definition: isom.h:247
MOVCtts::count
unsigned int count
Definition: isom.h:69
MOVStreamContext::drefs
MOVDref * drefs
Definition: isom.h:223
MOVContext::aes_decrypt
struct AVAES * aes_decrypt
Definition: isom.h:372
MOVFragmentIndex::nb_items
int nb_items
Definition: isom.h:164
MOVTimeToSample
Definition: isom.h:57
HEIFGrid::tile_idx_list
unsigned * tile_idx_list
Definition: isom.h:317
MOVStreamContext::keyframe_absent
int keyframe_absent
Definition: isom.h:207
MOVStts::duration
unsigned int duration
Definition: isom.h:65
fc
#define fc(width, name, range_min, range_max)
Definition: cbs_av1.c:494
MOVStreamContext::coll_size
size_t coll_size
Definition: isom.h:270
MOVStreamContext::min_corrected_pts
int64_t min_corrected_pts
minimum Composition time shown by the edits excluding empty edits.
Definition: isom.h:212
MOVStreamContext::sdtp_count
unsigned int sdtp_count
Definition: isom.h:188
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:189
MOVTrackExt::duration
unsigned duration
Definition: isom.h:116
MOVContext::audible_iv
void * audible_iv
Definition: isom.h:370
MOVStreamContext::current_sample
int current_sample
Definition: isom.h:213
MOVFragmentStreamInfo::sidx_pts
int64_t sidx_pts
Definition: isom.h:141
MOVFragmentIndex::current
int current
Definition: isom.h:163
MOVEncryptionIndex::encrypted_samples
AVEncryptionInfo ** encrypted_samples
Definition: isom.h:130
MOVAtom::size
int64_t size
Definition: isom.h:96
MOVStreamContext::refcount
int refcount
Definition: isom.h:175
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:468
HEIFItemRef::type
uint32_t type
Definition: isom.h:290
MOVStreamContext::keyframe_count
unsigned int keyframe_count
Definition: isom.h:208
MOVStsc
Definition: isom.h:73
AVFormatContext
Format I/O context.
Definition: avformat.h:1264
MOVStreamContext::index_ranges
MOVIndexRange * index_ranges
Definition: isom.h:215
internal.h
MOVTrackExt::stsd_id
unsigned stsd_id
Definition: isom.h:115
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:76
MOVStreamContext::tts_sample
int tts_sample
Definition: isom.h:202
MOVContext::ignore_editlist
int ignore_editlist
Definition: isom.h:345
MOVDref
Definition: isom.h:85
MOVStreamContext::ctts_count
unsigned int ctts_count
Definition: isom.h:190
MP4TrackKindValueMapping::disposition
int disposition
Definition: isom.h:484
MOVContext::use_tfdt
int use_tfdt
Definition: isom.h:358
MOVContext::nb_heif_grid
int nb_heif_grid
Definition: isom.h:385
MOVElst
Definition: isom.h:79
MOVContext::movie_display_matrix
int32_t movie_display_matrix[3][3]
display matrix from mvhd
Definition: isom.h:376
MOVDref::nlvl_to
int16_t nlvl_to
Definition: isom.h:91
MOVContext::atom_depth
int atom_depth
Definition: isom.h:360
MOVContext::duration
int64_t duration
duration of the longest track
Definition: isom.h:325
MOVStreamContext::time_offset
int64_t time_offset
time offset of the edit list entries
Definition: isom.h:211
MOVStreamContext::current_index_range
MOVIndexRange * current_index_range
Definition: isom.h:216
MOVStreamContext::timecode_track
int timecode_track
Definition: isom.h:227
ff_codec_movvideo_tags
const AVCodecTag ff_codec_movvideo_tags[]
Definition: isom_tags.c:29
MOVStreamContext::tts_index
int tts_index
Definition: isom.h:201
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:146
MOVStreamContext::rap_group
MOVSbgp * rap_group
Definition: isom.h:241
MOVTimeToSample::duration
unsigned int duration
Definition: isom.h:59
MOVFragmentStreamInfo::stsd_id
int stsd_id
Definition: isom.h:149
MOVStreamContext::open_key_samples_count
int open_key_samples_count
Definition: isom.h:249
HEIFItem
Definition: isom.h:294
ff_codec_movaudio_tags
const AVCodecTag ff_codec_movaudio_tags[]
Definition: isom_tags.c:311
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:122
MOVStts
Definition: isom.h:63
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:49
MOVContext::dv_demux
DVDemuxContext * dv_demux
Definition: isom.h:334
MOVEncryptionIndex::auxiliary_info_default_size
uint8_t auxiliary_info_default_size
Definition: isom.h:134
MOVContext::has_looked_for_mfra
int has_looked_for_mfra
Definition: isom.h:357
MOVStreamContext::tref_flags
unsigned tref_flags
Definition: isom.h:225
MOVFragment::flags
unsigned flags
Definition: isom.h:110
AVIOContext
Bytestream IO Context.
Definition: avio.h:160
MOVStreamContext::aes_ctx
struct AVAES * aes_ctx
Definition: isom.h:279
to
const char * to
Definition: webvttdec.c:35
MOVContext::handbrake_version
int handbrake_version
Definition: isom.h:341
MOVFragmentIndexItem
Definition: isom.h:152
MOVStsc::first
int first
Definition: isom.h:74
MOVStreamContext::stsz_sample_size
unsigned int stsz_sample_size
always contains sample size from stsz atom
Definition: isom.h:204
MOVStreamContext::sgpd_sync
uint8_t * sgpd_sync
Definition: isom.h:244
bps
unsigned bps
Definition: movenc.c:1958
MOVContext::audible_fixed_key
void * audible_fixed_key
Definition: isom.h:366
MOVStreamContext::stereo3d_size
size_t stereo3d_size
Definition: isom.h:264
MOVContext::trex_count
unsigned trex_count
Definition: isom.h:339
avio.h
MOVStreamContext::coll
AVContentLightMetadata * coll
Definition: isom.h:269
HEIFItem::is_idat_relative
int is_idat_relative
Definition: isom.h:308
MOVDref::path
char * path
Definition: isom.h:87
MOVContext::file_key
uint8_t file_key[20]
Definition: isom.h:362
MOVEncryptionIndex::auxiliary_offsets_count
size_t auxiliary_offsets_count
Definition: isom.h:136
HEIFItem::vflip
int vflip
Definition: isom.h:306
MOVFragmentIndexItem::stream_info
MOVFragmentStreamInfo * stream_info
Definition: isom.h:157
MOVStreamContext::chunk_offsets
int64_t * chunk_offsets
Definition: isom.h:181
ff_mp4_obj_type
const AVCodecTag ff_mp4_obj_type[]
Definition: isom.c:34
MOVFragmentIndex::item
MOVFragmentIndexItem * item
Definition: isom.h:165
MOVStreamContext::iamf
struct IAMFDemuxContext * iamf
Definition: isom.h:285
MOVContext::decryption_key_len
int decryption_key_len
Definition: isom.h:374
MOVContext::audible_fixed_key_size
int audible_fixed_key_size
Definition: isom.h:367
MOVDref::nlvl_from
int16_t nlvl_from
Definition: isom.h:91
MOVFragmentStreamInfo::next_trun_dts
int64_t next_trun_dts
Definition: isom.h:144
MOVStreamContext::stsc_index
unsigned int stsc_index
Definition: isom.h:195
MOVIndexRange
Definition: isom.h:168
MOVContext::advanced_editlist
int advanced_editlist
Definition: isom.h:346
MOVStreamContext::time_scale
int time_scale
Definition: isom.h:210
MOVStreamContext::bytes_per_frame
unsigned int bytes_per_frame
Definition: isom.h:217
MOVIndexRange::end
int64_t end
Definition: isom.h:170
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
MOVCtts::offset
int offset
Definition: isom.h:70
HEIFItem::width
int width
Definition: isom.h:302
MOVStreamContext::stereo3d
AVStereo3D * stereo3d
Definition: isom.h:263
MOVDref::volume
char volume[28]
Definition: isom.h:89
MOVStreamContext::stps_count
unsigned int stps_count
Definition: isom.h:197
MOVFragment::duration
unsigned duration
Definition: isom.h:108
MOVStreamContext::sample_sizes
unsigned int * sample_sizes
Definition: isom.h:206
MOVContext::frag_index
MOVFragmentIndex frag_index
Definition: isom.h:359
ff_codec_movsubtitle_tags
const AVCodecTag ff_codec_movsubtitle_tags[]
Definition: isom.c:75
MOVStreamContext::dref_id
int dref_id
Definition: isom.h:224
MOVContext::mfra_size
uint32_t mfra_size
Definition: isom.h:378
ff_mov_write_chan
void ff_mov_write_chan(AVIOContext *pb, int64_t channel_layout)
Definition: isom.c:416
MOVStreamContext::pb
AVIOContext * pb
Definition: isom.h:174
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:109
MOVTimeToSample::count
unsigned int count
Definition: isom.h:58
ambient_viewing_environment.h
MOVContext::export_xmp
int export_xmp
Definition: isom.h:352
MOVFragmentStreamInfo::tfdt_dts
int64_t tfdt_dts
Definition: isom.h:143
MP4TrackKindValueMapping
Definition: isom.h:483
ff_codec_movdata_tags
const AVCodecTag ff_codec_movdata_tags[]
Definition: isom.c:82
MOVStreamContext::chunk_count
unsigned int chunk_count
Definition: isom.h:180
MOVStreamContext::data_size
int64_t data_size
Definition: isom.h:235
MOVStreamContext::ambient
AVAmbientViewingEnvironment * ambient
Definition: isom.h:271
MOVStreamContext::ambient_size
size_t ambient_size
Definition: isom.h:272
tag
uint32_t tag
Definition: movenc.c:1957
AVStream
Stream structure.
Definition: avformat.h:744
HEIFItem::extent_length
int64_t extent_length
Definition: isom.h:300
MOVEncryptionIndex::nb_encrypted_samples
unsigned int nb_encrypted_samples
Definition: isom.h:129
MOVStreamContext::stts_data
MOVStts * stts_data
Definition: isom.h:187
AVAES
Definition: aes_internal.h:34
MOVSbgp::index
unsigned int index
Definition: isom.h:123
HEIFItem::icc_profile_size
size_t icc_profile_size
Definition: isom.h:310
MOVContext::chapter_tracks
int * chapter_tracks
Definition: isom.h:342
MOVFragment::implicit_offset
uint64_t implicit_offset
Definition: isom.h:106
MOVStreamContext::pseudo_stream_id
int pseudo_stream_id
-1 means demux all ids
Definition: isom.h:220
MOVContext::time_scale
int time_scale
Definition: isom.h:324
MP4TrackKindMapping::value_maps
const struct MP4TrackKindValueMapping * value_maps
Definition: isom.h:490
MOVFragment
Definition: isom.h:101
MOVContext::use_mfra_for
int use_mfra_for
Definition: isom.h:356
MOVContext::enable_drefs
int enable_drefs
Definition: isom.h:375
AVEncryptionInfo
This describes encryption info for a packet.
Definition: encryption_info.h:43
MOVStreamContext::encryption_index
MOVEncryptionIndex * encryption_index
Definition: isom.h:282
MOVStreamContext::h_spacing
int h_spacing
pasp hSpacing
Definition: isom.h:230
MOVStreamContext::sample_size
unsigned int sample_size
may contain value calculated from stsd or value from stsz atom
Definition: isom.h:203
MOVStreamContext::duration_for_fps
int64_t duration_for_fps
Definition: isom.h:253
MOVFragment::moof_offset
uint64_t moof_offset
Definition: isom.h:105
MOVTrackExt::size
unsigned size
Definition: isom.h:117
MOVContext::dv_fctx
AVFormatContext * dv_fctx
Definition: isom.h:335
MOVContext::aax_mode
unsigned int aax_mode
'aax' file has been detected
Definition: isom.h:361
MOVFragmentIndex
Definition: isom.h:160
MOVStreamContext::track_end
int64_t track_end
used for dts generation in fragmented movie files
Definition: isom.h:238
MOVStreamContext::tts_count
unsigned int tts_count
Definition: isom.h:182
MOVStreamContext::sgpd_sync_count
uint32_t sgpd_sync_count
Definition: isom.h:245
MOVContext::fragment
MOVFragment fragment
current fragment in moof atom
Definition: isom.h:337
MOVDref::type
uint32_t type
Definition: isom.h:86
MOVStreamContext::per_sample_iv_size
unsigned int per_sample_iv_size
Definition: isom.h:280
MOVFragmentIndexItem::nb_stream_info
int nb_stream_info
Definition: isom.h:156
MOVStreamContext::has_sidx
int has_sidx
Definition: isom.h:276
MOVFragmentStreamInfo::id
int id
Definition: isom.h:140
encryption_info.h
MOVStreamContext::pb_is_copied
int pb_is_copied
Definition: isom.h:176
MOVElst::time
int64_t time
Definition: isom.h:81
HEIFGrid
Definition: isom.h:313
MOVStreamContext::next_chunk
int next_chunk
Definition: isom.h:179
MOVContext::trak_index
int trak_index
Index of the current 'trak'.
Definition: isom.h:331
HEIFGrid::item
HEIFItem * item
Definition: isom.h:314
mastering_display_metadata.h
MOVContext::itunes_metadata
int itunes_metadata
metadata are itunes style
Definition: isom.h:340
MOVEncryptionIndex::auxiliary_info_sizes
uint8_t * auxiliary_info_sizes
Definition: isom.h:132
MOVFragment::stsd_id
unsigned stsd_id
Definition: isom.h:107
HEIFGrid::tile_id_list
int16_t * tile_id_list
Definition: isom.h:316
MOVStreamContext::tts_data
MOVTimeToSample * tts_data
Definition: isom.h:184
ff_mov_track_kind_table
const struct MP4TrackKindMapping ff_mov_track_kind_table[]
Definition: isom.c:451
ff_mov_read_stsd_entries
int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
Definition: mov.c:3054
MOVStreamContext::stps_data
unsigned * stps_data
partial sync sample for mpeg-2 open gop
Definition: isom.h:198
MOVContext::nb_heif_item
int nb_heif_item
Definition: isom.h:383
MOVContext::found_hdlr_mdta
int found_hdlr_mdta
'hdlr' atom with type 'mdta' has been found
Definition: isom.h:330
MOVStreamContext::tmcd_flags
uint32_t tmcd_flags
tmcd track flags
Definition: isom.h:236
int32_t
int32_t
Definition: audioconvert.c:56
HEIFItem::rotation
int rotation
Definition: isom.h:304
MOVAtom::type
uint32_t type
Definition: isom.h:95
MOVStreamContext::tmcd_nb_frames
uint8_t tmcd_nb_frames
tmcd number of frames per tick / second
Definition: isom.h:237
MOVFragmentIndexItem::headers_read
int headers_read
Definition: isom.h:154
MOVStreamContext::start_pad
int start_pad
amount of samples to skip due to enc-dec delay
Definition: isom.h:239
MP4TrackKindValueMapping::value
const char * value
Definition: isom.h:485
MOVDref::filename
char filename[64]
Definition: isom.h:90
MOVStsc::count
int count
Definition: isom.h:75
MOVStts::count
unsigned int count
Definition: isom.h:64
MOVStreamContext::display_matrix
int32_t * display_matrix
Definition: isom.h:262
MOVContext::heif_grid
HEIFGrid * heif_grid
Definition: isom.h:384
MOVStreamContext::min_sample_duration
uint32_t min_sample_duration
Definition: isom.h:250
MOVStreamContext::current_index
int64_t current_index
Definition: isom.h:214
MOVStreamContext::stts_allocated_size
unsigned int stts_allocated_size
Definition: isom.h:186
MOVFragmentStreamInfo::index_entry
int index_entry
Definition: isom.h:147
MOVStreamContext::format
uint32_t format
Definition: isom.h:274
MOVStreamContext::sync_group_count
unsigned int sync_group_count
Definition: isom.h:242
MOVContext::bitrates_count
int bitrates_count
Definition: isom.h:354
MOVContext::audible_key
void * audible_key
Definition: isom.h:368
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:203
MOVStreamContext::id
int id
AVStream id.
Definition: isom.h:177
MOVStreamContext::samples_per_frame
unsigned int samples_per_frame
Definition: isom.h:218
MOVStreamContext::tts_allocated_size
unsigned int tts_allocated_size
Definition: isom.h:183
MOVElst::duration
int64_t duration
Definition: isom.h:80
MOVContext::seek_individually
int seek_individually
Definition: isom.h:349
MOVContext::heif_item
HEIFItem ** heif_item
Definition: isom.h:382
MOVStreamContext::stts_count
unsigned int stts_count
Definition: isom.h:185
HEIFItem::iref_list
HEIFItemRef * iref_list
Definition: isom.h:296
MOVStreamContext::elst_count
unsigned int elst_count
Definition: isom.h:200
AVSphericalMapping
This structure describes how to handle spherical videos, outlining information about projection,...
Definition: spherical.h:100
AVAESCTR
Definition: aes_ctr.c:34
MOVContext::file_iv
uint8_t file_iv[20]
Definition: isom.h:363
MOVStreamContext::default_encrypted_sample
AVEncryptionInfo * default_encrypted_sample
Definition: isom.h:281
MOVContext::cur_item_id
int cur_item_id
Definition: isom.h:381
MOVContext::next_root_atom
int64_t next_root_atom
offset of the next root atom
Definition: isom.h:350
MOVContext::found_iinf
int found_iinf
'iinf' atom has been found
Definition: isom.h:328
MOVContext::meta_keys_count
unsigned meta_keys_count
Definition: isom.h:333
MOVStreamContext::palette
uint32_t palette[256]
Definition: isom.h:233
MOVContext::have_read_mfra_size
int have_read_mfra_size
Definition: isom.h:377
MOVFragment::track_id
unsigned track_id
Definition: isom.h:103
MOVContext::ignore_chapters
int ignore_chapters
Definition: isom.h:348
MOVTimeToSample::offset
int offset
Definition: isom.h:60
MP4TrackKindMapping
Definition: isom.h:488
HEIFItem::nb_iref_list
int nb_iref_list
Definition: isom.h:297
MOVStreamContext::ffindex
int ffindex
AVStream index.
Definition: isom.h:178
HEIFItem::extent_offset
int64_t extent_offset
Definition: isom.h:301

Generated on Sat Oct 18 2025 19:23:22 for FFmpeg by   doxygen 1.8.17

AltStyle によって変換されたページ (->オリジナル) /