libgpac
Documentation of the core library of GPAC
isom_store.c File Reference
#include <gpac/internal/isomedia_dev.h>
#include <gpac/revision.h>
+ Include dependency graph for isom_store.c:

Data Structures

struct  TrackWriter
 
struct  MovieWriter
 

Macros

#define GPAC_ISOM_CPRT_NOTICE   "IsoMedia File Produced with GPAC"
 
#define GPAC_ISOM_CPRT_NOTICE_VERSION   GPAC_ISOM_CPRT_NOTICE" "GPAC_VERSION "-rev" GPAC_GIT_REVISION
 
#define COMP_BOX_COST_BYTES   8
 
#define CMOV_DEFAULT_PAD   20
 

Functions

static GF_Err gf_isom_insert_copyright (GF_ISOFile *movie)
 
void CleanWriters (GF_List *writers)
 
GF_Err ResetWriters (GF_List *writers)
 
GF_Err SetupWriters (MovieWriter *mw, GF_List *writers, u8 interleaving)
 
static void ShiftMetaOffset (GF_MetaBox *meta, u64 offset)
 
static GF_Err shift_chunk_offsets (GF_SampleToChunkBox *stsc, GF_MediaBox *mdia, GF_Box *_stco, u64 offset, Bool force_co64, GF_Box **new_stco)
 
static GF_Err ShiftOffset (GF_ISOFile *file, GF_List *writers, u64 offset)
 
GF_Err gf_isom_write_compressed_box (GF_ISOFile *mov, GF_Box *root_box, u32 repl_type, GF_BitStream *bs, u32 *box_csize)
 
static GF_Err WriteMoovAndMeta (GF_ISOFile *movie, GF_List *writers, GF_BitStream *bs)
 
u64 GetMoovAndMetaSize (GF_ISOFile *movie, GF_List *writers)
 
static void muxer_report_progress (MovieWriter *mw)
 
GF_Err WriteSample (MovieWriter *mw, u32 size, u64 offset, u8 isEdited, GF_BitStream *bs, u32 nb_samp)
 
void update_writer_constant_dur (GF_ISOFile *movie, TrackWriter *tkw, GF_StscEntry *stsc_ent, u32 *nb_samp, u32 *samp_size, Bool is_flat)
 
static GF_Err store_meta_item_sample_ref_offsets (GF_ISOFile *movie, GF_List *writers, GF_MetaBox *meta)
 
static GF_Err store_meta_item_references (GF_ISOFile *movie, GF_List *writers, GF_MetaBox *meta)
 
GF_Err DoWriteMeta (GF_ISOFile *file, GF_MetaBox *meta, GF_BitStream *bs, Bool Emulation, u64 baseOffset, u64 *mdatSize)
 
GF_Err DoWrite (MovieWriter *mw, GF_List *writers, GF_BitStream *bs, u8 Emulation, u64 StartOffset)
 
static GF_Err UpdateOffsets (GF_ISOFile *movie, GF_List *writers, Bool use_pad, Bool offset_mdat)
 
static GF_Err WriteFlat (MovieWriter *mw, u8 moovFirst, GF_BitStream *bs, Bool non_seekable, Bool for_fragments, GF_BitStream *moov_bs)
 
GF_Err DoFullInterleave (MovieWriter *mw, GF_List *writers, GF_BitStream *bs, u8 Emulation, u64 StartOffset)
 
GF_Err DoInterleave (MovieWriter *mw, GF_List *writers, GF_BitStream *bs, u8 Emulation, u64 StartOffset, Bool drift_inter)
 
static GF_Err write_blank_data (GF_BitStream *bs, u32 size)
 
static GF_Err write_free_box (GF_BitStream *bs, u32 size)
 
static GF_Err WriteInterleaved (MovieWriter *mw, GF_BitStream *bs, Bool drift_inter)
 
void purge_free_boxes (GF_Box *par)
 
static GF_Err inplace_shift_moov_meta_offsets (GF_ISOFile *movie, u32 shift_offset)
 
static GF_Err inplace_shift_mdat (MovieWriter *mw, u64 *shift_offset, GF_BitStream *bs, Bool moov_first)
 
static GF_Err WriteInplace (MovieWriter *mw, GF_BitStream *bs)
 
GF_Err isom_on_block_out (void *cbk, u8 *data, u32 block_size)
 
GF_Err gf_isom_flush_chunk (GF_TrackBox *trak, Bool is_final)
 
GF_Err WriteToFile (GF_ISOFile *movie, Bool for_fragments)
 

Variables

u32 default_write_buffering_size
 

Data Structure Documentation

◆ TrackWriter

struct TrackWriter
+ Collaboration diagram for TrackWriter:
Data Fields
GF_FilterPid * ipid
u32 track_num
u32 track_id
GF_ISOSample sample
u32 prev_duration
u32 src_timescale
u32 tk_timescale
u32 stream_type
u32 codecid
Bool is_encrypted
u32 cfg_crc
u32 enh_cfg_crc
u32 dep_id
u32 stsd_idx
u32 clear_stsd_idx
Bool reused_stsd
Bool use_dref
Bool aborted
Bool suspended
Bool has_append
Bool has_ctts
s64 min_neg_ctts
u32 nb_samples
u32 samples_in_stsd
u32 nb_frames_per_sample
u64 ts_shift
u64 si_min_ts_plus_one
Bool has_subs
Bool skip_bitrate_update
Bool has_open_gop
GF_FilterSAPType gdr_type
u32 media_profile_level
Bool import_msg_header_done
u32 nal_unit_size
GF_AVCConfig * avcc
GF_AVCConfig * svcc
GF_HEVCConfig * hvcc
GF_HEVCConfig * lvcc
GF_VVCConfig * vvcc
u8 * inband_hdr
u8 * inband_hdr_non_rap
u32 inband_hdr_size
u32 inband_hdr_non_rap_size
u32 is_nalu
Bool is_av1
Bool is_vpx
Bool fragment_done
s32 ts_delay
s32 negctts_shift
Bool insert_tfdt
Bool probe_min_ctts
u64 first_dts_in_seg_plus_one
u64 next_seg_cts
u64 cts_next
s64 tfdt_offset
u32 samples_in_frag
Bool patch_tfdt
u32 cenc_state
Bool cenc_subsamples
u32 scheme_type
u32 def_skip_byte_block
u32 def_crypt_byte_block
u32 def_cenc_key_info_crc
const GF_PropertyValue * cenc_ki
u32 cenc_key_info_crc
u32 constant_IV_size
Bool cenc_multikey
Bool cenc_frag_protected
u32 skip_byte_block
u32 crypt_byte_block
Bool fake_track
Bool has_brands
Bool force_inband_inject
u64 dur_in_frag
u32 amr_mode_set
Bool has_seig
u64 empty_init_dur
u32 raw_audio_bytes_per_sample
u32 raw_samplerate
u64 dts_patch
Bool is_item
u32 item_id
char status_type
u32 last_import_pc
u32 nb_frames
u32 frame_offset
u64 down_bytes
u64 down_size
GF_Fraction64 pid_dur
u64 prog_done
u64 prog_total
u32 prev_tid_group
Bool box_patched
u64 imported_edit_sdur
u64 imported_edit_offset
Bool force_ctts
Bool is_hevc_tile_base
Bool insert_pssh
Bool wait_sap
u64 min_ts_seek_plus_one
u64 clamp_ts_plus_one
Bool check_seek_ts
u64 max_cts
u64 min_cts
u32 max_cts_samp_dur
u32 w_or_sr
u32 h_or_ch
u32 pf_or_af
u32 xps_inband
u8 * dyn_pssh
u32 dyn_pssh_len
Bool sparse_inject
Bool is_chap
GF_FilterPacket * dgl_copy
u32 all_stsd_crc
Bool has_deps
u32 sampleNumber
u32 timeScale
u64 chunkDur
u32 chunkSize
u32 constant_size
u32 constant_dur
u64 DTSprev
u8 isDone
u64 prev_offset
GF_MediaBox * mdia
GF_SampleTableBox * stbl
u32 all_dref_mode
GF_SampleToChunkBox * stsc
GF_Box * stco
Bool prevent_dispatch

◆ MovieWriter

struct MovieWriter
Data Fields
char * buffer
u32 alloc_size
GF_ISOFile * movie
u64 total_samples
u64 nb_done

Macro Definition Documentation

◆ GPAC_ISOM_CPRT_NOTICE

#define GPAC_ISOM_CPRT_NOTICE   "IsoMedia File Produced with GPAC"

◆ GPAC_ISOM_CPRT_NOTICE_VERSION

#define GPAC_ISOM_CPRT_NOTICE_VERSION   GPAC_ISOM_CPRT_NOTICE" "GPAC_VERSION "-rev" GPAC_GIT_REVISION

◆ COMP_BOX_COST_BYTES

#define COMP_BOX_COST_BYTES   8

◆ CMOV_DEFAULT_PAD

#define CMOV_DEFAULT_PAD   20

Function Documentation

◆ gf_isom_insert_copyright()

static GF_Err gf_isom_insert_copyright ( GF_ISOFile *  movie)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ CleanWriters()

void CleanWriters ( GF_List *  writers)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ResetWriters()

GF_Err ResetWriters ( GF_List *  writers)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetupWriters()

GF_Err SetupWriters ( MovieWriter mw,
GF_List *  writers,
u8  interleaving 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ShiftMetaOffset()

static void ShiftMetaOffset ( GF_MetaBox meta,
u64  offset 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ shift_chunk_offsets()

static GF_Err shift_chunk_offsets ( GF_SampleToChunkBox stsc,
GF_MediaBox mdia,
GF_Box _stco,
u64  offset,
Bool  force_co64,
GF_Box **  new_stco 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ShiftOffset()

static GF_Err ShiftOffset ( GF_ISOFile *  file,
GF_List *  writers,
u64  offset 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_isom_write_compressed_box()

GF_Err gf_isom_write_compressed_box ( GF_ISOFile *  mov,
GF_Box root_box,
u32  repl_type,
GF_BitStream *  bs,
u32 box_csize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteMoovAndMeta()

static GF_Err WriteMoovAndMeta ( GF_ISOFile *  movie,
GF_List *  writers,
GF_BitStream *  bs 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetMoovAndMetaSize()

u64 GetMoovAndMetaSize ( GF_ISOFile *  movie,
GF_List *  writers 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ muxer_report_progress()

static void muxer_report_progress ( MovieWriter mw)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteSample()

GF_Err WriteSample ( MovieWriter mw,
u32  size,
u64  offset,
u8  isEdited,
GF_BitStream *  bs,
u32  nb_samp 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update_writer_constant_dur()

void update_writer_constant_dur ( GF_ISOFile *  movie,
TrackWriter tkw,
GF_StscEntry stsc_ent,
u32 nb_samp,
u32 samp_size,
Bool  is_flat 
)
+ Here is the caller graph for this function:

◆ store_meta_item_sample_ref_offsets()

static GF_Err store_meta_item_sample_ref_offsets ( GF_ISOFile *  movie,
GF_List *  writers,
GF_MetaBox meta 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ store_meta_item_references()

static GF_Err store_meta_item_references ( GF_ISOFile *  movie,
GF_List *  writers,
GF_MetaBox meta 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoWriteMeta()

GF_Err DoWriteMeta ( GF_ISOFile *  file,
GF_MetaBox meta,
GF_BitStream *  bs,
Bool  Emulation,
u64  baseOffset,
u64 mdatSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoWrite()

GF_Err DoWrite ( MovieWriter mw,
GF_List *  writers,
GF_BitStream *  bs,
u8  Emulation,
u64  StartOffset 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ UpdateOffsets()

static GF_Err UpdateOffsets ( GF_ISOFile *  movie,
GF_List *  writers,
Bool  use_pad,
Bool  offset_mdat 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteFlat()

static GF_Err WriteFlat ( MovieWriter mw,
u8  moovFirst,
GF_BitStream *  bs,
Bool  non_seekable,
Bool  for_fragments,
GF_BitStream *  moov_bs 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoFullInterleave()

GF_Err DoFullInterleave ( MovieWriter mw,
GF_List *  writers,
GF_BitStream *  bs,
u8  Emulation,
u64  StartOffset 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoInterleave()

GF_Err DoInterleave ( MovieWriter mw,
GF_List *  writers,
GF_BitStream *  bs,
u8  Emulation,
u64  StartOffset,
Bool  drift_inter 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ write_blank_data()

static GF_Err write_blank_data ( GF_BitStream *  bs,
u32  size 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ write_free_box()

static GF_Err write_free_box ( GF_BitStream *  bs,
u32  size 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteInterleaved()

static GF_Err WriteInterleaved ( MovieWriter mw,
GF_BitStream *  bs,
Bool  drift_inter 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ purge_free_boxes()

void purge_free_boxes ( GF_Box par)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ inplace_shift_moov_meta_offsets()

static GF_Err inplace_shift_moov_meta_offsets ( GF_ISOFile *  movie,
u32  shift_offset 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ inplace_shift_mdat()

static GF_Err inplace_shift_mdat ( MovieWriter mw,
u64 shift_offset,
GF_BitStream *  bs,
Bool  moov_first 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteInplace()

static GF_Err WriteInplace ( MovieWriter mw,
GF_BitStream *  bs 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isom_on_block_out()

GF_Err isom_on_block_out ( void *  cbk,
u8 data,
u32  block_size 
)
+ Here is the caller graph for this function:

◆ gf_isom_flush_chunk()

GF_Err gf_isom_flush_chunk ( GF_TrackBox trak,
Bool  is_final 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteToFile()

GF_Err WriteToFile ( GF_ISOFile *  movie,
Bool  for_fragments 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ default_write_buffering_size

u32 default_write_buffering_size
extern