libgpac
Documentation of the core library of GPAC
AVC and HEVC ISOBMFF tools

Manipulation AVC and HEVC tracks in ISOBMFF. More...

+ Collaboration diagram for AVC and HEVC ISOBMFF tools:

Enumerations

enum  GF_LHVCExtractoreMode { GF_LHVC_EXTRACTORS_ON , GF_LHVC_EXTRACTORS_OFF , GF_LHVC_EXTRACTORS_OFF_FORCE_INBAND }
 

Functions

GF_Err gf_media_change_pl (GF_ISOFile *isom_file, u32 trackNumber, u32 profile, u32 compat, u32 level)
 
GF_Err gf_media_nal_rewrite_samples (GF_ISOFile *isom_file, u32 trackNumber, u32 new_size_in_bits)
 
GF_Err gf_media_split_svc (GF_ISOFile *isom_file, u32 trackNumber, Bool splitAll)
 
GF_Err gf_media_merge_svc (GF_ISOFile *isom_file, u32 trackNumber, Bool mergeAll)
 
GF_Err gf_media_split_lhvc (GF_ISOFile *isom_file, u32 trackNumber, Bool for_temporal_sublayers, Bool splitAll, GF_LHVCExtractoreMode extractor_mode)
 
GF_Err gf_media_split_hevc_tiles (GF_ISOFile *isom_file, u32 signal_only)
 
GF_Err gf_media_filter_hevc (GF_ISOFile *isom_file, u32 trackNumber, u8 max_temporal_id_plus_one, u8 max_layer_id_plus_one)
 

Detailed Description

This section documents functions for manipulating AVC and HEVC tracks in ISOBMFF.

Enumeration Type Documentation

◆ GF_LHVCExtractoreMode

LHVC extractor mode

Enumerator
GF_LHVC_EXTRACTORS_ON 

use extractors

GF_LHVC_EXTRACTORS_OFF 

don't use extractors and keep base track inband/outofband param set signaling

GF_LHVC_EXTRACTORS_OFF_FORCE_INBAND 

don't use extractors and force inband signaling in enhancement layer

Function Documentation

◆ gf_media_change_pl()

GF_Err gf_media_change_pl ( GF_ISOFile isom_file,
u32  trackNumber,
u32  profile,
u32  compat,
u32  level 
)

Changes the profile (if not 0) and level (if not 0) indication of the media - only AVC/H264 supported for now

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
profilethe new profile to set
compatprofile compatibility flag for H264
levelthe new level to set
Returns
error if any

◆ gf_media_nal_rewrite_samples()

GF_Err gf_media_nal_rewrite_samples ( GF_ISOFile isom_file,
u32  trackNumber,
u32  new_size_in_bits 
)

Rewrite NAL-based samples (AVC/HEVC/...) samples if nalu size_length has to be changed

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
new_size_in_bitsnew size in bits of the NALU length field in the track, for all samples description of the track
Returns
error if any

◆ gf_media_split_svc()

GF_Err gf_media_split_svc ( GF_ISOFile isom_file,
u32  trackNumber,
Bool  splitAll 
)

Split SVC layers

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
splitAllif set each layers will be in a single track, otherwise all non-base layers will be in the same track
Returns
error if any

◆ gf_media_merge_svc()

GF_Err gf_media_merge_svc ( GF_ISOFile isom_file,
u32  trackNumber,
Bool  mergeAll 
)

Merge SVC layers

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
mergeAllif set all layers will be merged a single track, otherwise all non-base layers will be merged in the same track
Returns
error if any

◆ gf_media_split_lhvc()

GF_Err gf_media_split_lhvc ( GF_ISOFile isom_file,
u32  trackNumber,
Bool  for_temporal_sublayers,
Bool  splitAll,
GF_LHVCExtractoreMode  extractor_mode 
)

Split L-HEVC layers

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
for_temporal_sublayersif set only temporal sublayers are split, otherwise layers are split
splitAllif set each layers will be in a single track, otherwise all non-base layers will be in the same track
extractor_modeextractor mode
Returns
error if any

◆ gf_media_split_hevc_tiles()

GF_Err gf_media_split_hevc_tiles ( GF_ISOFile isom_file,
u32  signal_only 
)

Split HEVC tiles into different tracks

Parameters
isom_filethe target ISOBMF file
signal_onlyif set to 1 or 2, inserts tile description and NAL->tile mapping but does not create separate tracks. If 2, NAL->tile mapping uses RLE
Returns
error if any

◆ gf_media_filter_hevc()

GF_Err gf_media_filter_hevc ( GF_ISOFile isom_file,
u32  trackNumber,
u8  max_temporal_id_plus_one,
u8  max_layer_id_plus_one 
)

Filter HEVC/L-HEVC NALUs by temporal IDs and layer IDs, removing all NALUs above the desired levels.

Parameters
isom_filethe target ISOBMF file
trackNumberthe target track
max_temporal_id_plus_onemax temporal ID plus 1 of all NALUs to be removed.
max_layer_id_plus_onemax layer ID plus 1 of all NALUs to be removed.
Returns
error if any