DRCAtoms
IntroductionDRCAtoms defines DRC specific atoms for the file format version of the DRC bitstream as defined in ISO/IEC DIS 23003-4.
Functions
MP4CreateDRCAtomMP4Err MP4CreateDRCAtom ( u32 atomType, MP4AtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a atom structure with a certain type, memory will be allocated MP4CreateDrcAudioSampleEntryAtomMP4Err MP4CreateDrcAudioSampleEntryAtom ( MP4AudioSampleEntryAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a MP4AudioSampleEntryAtom structure, memory will be allocated MP4CreateDRCCoefficientBasicAtomMP4Err MP4CreateDRCCoefficientBasicAtom ( DRCCoefficientBasicAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a DRCCoefficientBasicAtom structure, memory will be allocated MP4CreateDRCCoefficientUniDRCAtomMP4Err MP4CreateDRCCoefficientUniDRCAtom ( DRCCoefficientUniDRCAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a DRCCoefficientUniDRCAtom structure, memory will be allocated MP4CreateDRCInstructionsBasicAtomMP4Err MP4CreateDRCInstructionsBasicAtom ( DRCInstructionsBasicAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a DRCInstructionsBasicAtom structure, memory will be allocated MP4CreateDRCInstructionsUniDRCAtomMP4Err MP4CreateDRCInstructionsUniDRCAtom ( DRCInstructionsUniDRCAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a DRCInstructionsUniDRCAtom structure, memory will be allocated MP4CreateDRCUniDrcSampleEntryAtomMP4Err MP4CreateDRCUniDrcSampleEntryAtom ( DRCUniDrcSampleEntryAtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionCreates and initializes a DRCUniDrcSampleEntryAtom structure, memory will be allocated MP4ParseDRCAtomMP4Err MP4ParseDRCAtom ( MP4InputStreamPtr inputStream, MP4AtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionReads an atom from inputStream. MP4ParseDRCAtomUsingProtoListMP4Err MP4ParseDRCAtomUsingProtoList ( MP4InputStreamPtr inputStream, u32 *protoList, u32 defaultAtom, MP4AtomPtr *outAtom ); ParametersReturn ValueAn MP4Err, which is defined libisomediafile.a; MP4NoErr if nothing fails DiscussionReads an atom from inputStream. If type of atom not in protolist it fails. Typedefs
DRCCoefficientBasicAtomRepresents a DRCCoefficientBasicAtom. typedef struct DRCCoefficientBasicAtom { MP4_FULL_ATOM u8 reserved; // bit(4) = 0 s8 DRC_location; // int(5) u8 DRC_characteristic; // uint(7) } DRCCoefficientBasicAtom; FieldsDRCCoefficientBasicAtomPtrPoints to a DRCCoefficientBasicAtom structure typedef struct DRCCoefficientBasicAtom *DRCCoefficientBasicAtomPtr; DRCCoefficientUniDRCAtomRepresents a DRCCoefficientUniDRCAtom typedef struct DRCCoefficientUniDRCAtom { MP4_FULL_ATOM u8 reserved1; // bit(2) = 0 s8 DRC_location; // int(5) u8 drc_frame_size_present; // bit(1) u8 reserved2; // bit(1) u16 bs_drc_frame_size; // uint(15) u8 reserved3; // bit(2) = 0 u8 sequence_count; // uint(6) MP4LinkedList sequences; // List of DRCCoefficientUniDRCSequences } DRCCoefficientUniDRCAtom; Fields
DRCCoefficientUniDRCAtomPtrPoints to a DRCCoefficientUniDRCAtom structure typedef struct DRCCoefficientUniDRCAtom *DRCCoefficientUniDRCAtomPtr; DRCCoefficientUniDRCSequencePart of DRCCoefficientUniDRCAtom typedef struct DRCCoefficientUniDRCSequence { u8 reserved1; // bit(2) = 0 u8 gain_coding_profile; // uint(2) u8 gain_interpolation_type; // uint(1) u8 full_frame; // uint(1) u8 time_alignment; // uint(1) u8 time_delta_min_present; // bit(1) u8 reserved2; // bit(5) = 0 u16 bs_time_delta_min; // uint(11) u8 reserved3; // bit(3) = 0 u8 band_count; // uint(4) u8 drc_band_type; // uint(1) MP4LinkedList bandCharacteristics; // List of DRCCoefficientUniDRCSequenceBandCharacteristics MP4LinkedList bandIndexes; // List of DRCCoefficientUniDRCSequenceBandIndex } DRCCoefficientUniDRCSequence; Fields
DRCCoefficientUniDRCSequenceBandCharacteristicPart of DRCCoefficientUniDRCSequence typedef struct DRCCoefficientUniDRCSequenceBandCharacteristic { u8 reserved; // bit(1) = 0 u8 DRC_characteristic; // uint(7) } DRCCoefficientUniDRCSequenceBandCharacteristic; FieldsDRCCoefficientUniDRCSequenceBandIndexPart of DRCCoefficientUniDRCSequence typedef struct DRCCoefficientUniDRCSequenceBandIndex { u8 reserved1; // bit(4) = 0 u8 crossover_freq_index; // uint(4) u8 reserved2; // bit(6) = 0 u16 start_sub_band_index; // uint(10) } DRCCoefficientUniDRCSequenceBandIndex; FieldsDRCInstructionsAdditionalDownMixIDPart of DRCInstructionsBasicAtom and DRCInstructionsUniDRCAtom typedef struct DRCInstructionsAdditionalDownMixID { u8 reserved; // bit(1) = 0 u8 additional_dowmix_ID; // uint(7) } DRCInstructionsAdditionalDownMixID; FieldsDRCInstructionsBasicAtomRepresents a DRCInstructionsBasicAtom typedef struct DRCInstructionsBasicAtom { MP4_FULL_ATOM u8 reserved1; // bit(3) = 0 u8 DRC_set_ID; // uint(6) s8 DRC_location; // int(5) u8 downmix_ID; // uint(7) u8 additional_dowmix_ID_count; // uint(3) MP4LinkedList additionalDownMixIDs; // List of DRCInstructionsAdditionalDownMixIDs u16 DRC_set_effect; // bit(16) u8 reserved2; // bit(7) = 0 u8 limiter_peak_target_present; // bit(1) u8 bs_limiter_peak_target; // uint(8) u8 reserved3; // bit(7) = 0 u8 DRC_set_target_loudness_present; // bit(1) u8 reserved4; // bit(4) = 0 u8 bs_DRC_set_target_loudness_value_upper; // uint(6) u8 bs_DRC_set_target_loudness_value_lower; // uint(6) } DRCInstructionsBasicAtom; Fields
DRCInstructionsBasicAtomPtrPoints to a DRCInstructionsBasicAtom structure typedef struct DRCInstructionsBasicAtom *DRCInstructionsBasicAtomPtr; DRCInstructionsChannelGroupDuckingScalingPart of DRCInstructionsUniDRCAtom typedef struct DRCInstructionsChannelGroupDuckingScaling { u8 reserved1; // bit(7) = 0 u8 ducking_scaling_present; // bit(1) u8 reserved2; // bit(4) = 0 u8 bs_ducking_scaling; // bit(4) } DRCInstructionsChannelGroupDuckingScaling; FieldsDRCInstructionsChannelGroupGainScalingPart of DRCInstructionsUniDRCAtom typedef struct DRCInstructionsChannelGroupGainScaling { u8 reserved1; // bit(7) = 0 u8 gain_scaling_present; // bit(1) u8 bs_attenuation_scaling; // uint(4) u8 bs_amplification_scaling; // uint(4) u8 reserved2; // bit(7) = 0 u8 gain_offset_present; // bit(1) u8 reserved3; // bit(2) u8 bs_gain_offset; // bit(6) } DRCInstructionsChannelGroupGainScaling; Fields
DRCInstructionsChannelSequenceIndexPart of DRCInstructionsUniDRCAtom typedef struct DRCInstructionsChannelSequenceIndex { u8 reserved; // bit(2) = 0 u8 bs_sequence_index; // uint(6) } DRCInstructionsChannelSequenceIndex; FieldsDRCInstructionsUniDRCAtomRepresents a DRCInstructionsUniDRCAtom typedef struct DRCInstructionsUniDRCAtom { MP4_FULL_ATOM u8 reserved1; // bit(3) = 0 u8 DRC_set_ID; // uint(6) s8 DRC_location; // int(5) u8 downmix_ID; // uint(7) u8 additional_dowmix_ID_count; // uint(3) MP4LinkedList additionalDownMixIDs; // List of DRCInstructionsAdditionalDownMixIDs u16 DRC_set_effect; // bit(16) u8 reserved2; // bit(7) = 0 u8 limiter_peak_target_present; // bit(1) u8 bs_limiter_peak_target; // uint(8) u8 reserved3; // bit(7) = 0 u8 DRC_set_target_loudness_present; // bit(1) u8 reserved4; // bit(4) = 0 u8 bs_DRC_set_target_loudness_value_upper; // uint(6) u8 bs_DRC_set_target_loudness_value_lower; // uint(6) u8 reserved5; // bit(1) = 0 u8 depends_on_DRC_set; // uint(3) u8 no_independent_use; // bit(1) u8 reserved6; // bit(1) = 0 u8 channel_count; // uint(8) MP4LinkedList channelSequenceIndexes; // List of DRCInstructionsChannelSequenceIndexes u8 channel_group_count; // uint(8) MP4LinkedList channelGroupDuckingScalings; // List of DRCInstructionsChannelGroupDuckingScalings MP4LinkedList channelGroupGainScalings; // List of DRCInstructionsChannelGroupGainScaling } DRCInstructionsUniDRCAtom; Fields
DRCInstructionsUniDRCAtomPtrPoints to a DRCInstructionsUniDRCAtom structure typedef struct DRCInstructionsUniDRCAtom *DRCInstructionsUniDRCAtomPtr; DRCUniDrcSampleEntryAtomRepresents a DRCUniDrcSampleEntryAtom. typedef struct DRCUniDrcSampleEntryAtom { MP4_BASE_ATOM COMMON_SAMPLE_ENTRY_FIELDS } DRCUniDrcSampleEntryAtom; FieldsDRCUniDrcSampleEntryAtomPtrPoints to a DRCUniDrcSampleEntryAtom structure typedef struct DRCUniDrcSampleEntryAtom *DRCUniDrcSampleEntryAtomPtr; Enumerated Types
DRCExtends the list of atom types from MP4Atoms.h with atoms used with drc data enum { DRCTrackReferenceAtomType = MP4_FOUR_CHAR_CODE( 'a', 'd', 'r', 'c' ), DRCUniDrcSampleEntryAtomType = MP4_FOUR_CHAR_CODE( 'u', 'n', 'i', 'd' ), DRCCoefficientBasicAtomType = MP4_FOUR_CHAR_CODE( 'u', 'd', 'c', '1' ), DRCInstructionsBasicAtomType = MP4_FOUR_CHAR_CODE( 'u', 'd', 'i', '1' ), DRCCoefficientUniDRCAtomType = MP4_FOUR_CHAR_CODE( 'u', 'd', 'c', '2' ), DRCInstructionsUniDRCAtomType = MP4_FOUR_CHAR_CODE( 'u', 'd', 'i', '2' ) }; Constants
DiscussionAtoms |