Mercurial > hg > enc-imaf
diff IM_AF Decoder/IM_AF_Decoder.h @ 0:138a3cea9792
Different files related to my project, including the encoder (I made it) and decoder. Also I added the mp4atoms as an example.
MP4atoms belong to the IMAF player library.
author | Eugenio Oñate Hospital <eo301@eecs.qmul.ac.uk> |
---|---|
date | Wed, 04 Jul 2012 22:16:23 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IM_AF Decoder/IM_AF_Decoder.h Wed Jul 04 22:16:23 2012 +0100 @@ -0,0 +1,179 @@ +#ifndef IM_AF_Decoder_h__ +#define IM_AF_Decoder_h__ + +#define IMAF_DECODER_API + +typedef int IMAF_Err; +typedef void* IMAF_DecoderH; + +typedef struct IMAF_Decoder_Param +{ + unsigned char *InputMafFilename; //in + unsigned int NumberOfAudioTrack; //out + unsigned int MovieTimescale; //out + unsigned int MovieDuration; //out + unsigned int HasTimedTextTrack; //out + unsigned int MajorBrand; //out + unsigned int NumberOfCompatibleBrands; //out + unsigned int *CompatibleBrands; //out +}IMAF_Decoder_Param; + +typedef struct IMAF_AudioParam +{ + unsigned int nBitsPerSample; + unsigned int nChannels; + unsigned int nSamplingFrequency; +}IMAF_AudioParam; + +typedef struct IMAF_Group +{ + unsigned int group_ID; + unsigned int num_elements; + unsigned int *element_ID; + unsigned int group_activation_mode; + unsigned int group_activation_elements_number; + unsigned int group_reference_volume; // 0~100 (0~1.0) + char *group_name; + char *group_description; +}IMAF_Group; + +typedef struct IMAF_Preset +{ + unsigned int preset_ID; + unsigned int num_preset_elements; + unsigned int *preset_element_ID; //array + unsigned int preset_type; + unsigned int preset_global_volume; + unsigned int *preset_volume_element; + unsigned int *num_input_channel; + unsigned int output_channel_type; + unsigned int num_output_channel; + unsigned int num_updates; + unsigned int *updated_sample_number; + char *preset_name; +}IMAF_Preset; + +typedef struct IMAF_SelectionRule +{ + unsigned int selection_rule_ID; + unsigned int selection_rule_type; + unsigned int element_ID; + unsigned int min_num_elements; + unsigned int max_num_elements; + unsigned int key_element_ID; + char *selection_rule_description; +}IMAF_SelectionRule; + +typedef struct IMAF_MixingRule +{ + unsigned int mixing_rule_ID; + unsigned int mixing_rule_type; + unsigned int element_ID; + unsigned int min_volume; + unsigned int max_volume; + unsigned int key_element_ID; + char *mixing_rule_description; +}IMAF_MixingRule; + +typedef struct StyleRecord +{ + unsigned int startChar; + unsigned int endChar; + unsigned int fontID; + unsigned int face_style_flags; + unsigned int font_size; + unsigned int text_color_r; + unsigned int text_color_g; + unsigned int text_color_b; + unsigned int text_color_a; +}StyleRecord; + +typedef struct TextSampleStyleParam +{ + //tx3g + unsigned int displayFlags; + unsigned int horizontal_justification; + unsigned int vertical_justification; + unsigned int background_color_r; + unsigned int background_color_g; + unsigned int background_color_b; + unsigned int background_color_a; + unsigned int default_text_box_top; + unsigned int default_text_box_left; + unsigned int default_text_box_bottom; + unsigned int default_text_box_right; + unsigned int default_style_startChar; + unsigned int default_style_endChar; + unsigned int default_style_font_ID; + unsigned int default_style_face_style_flags; + unsigned int default_style_font_size; + unsigned int default_style_text_color_r; + unsigned int default_style_text_color_g; + unsigned int default_style_text_color_b; + unsigned int default_style_text_color_a; + unsigned int font_ID; + unsigned int font_name_length; + unsigned char *font; + //styl + unsigned int styl_entry_count; + StyleRecord *styl_text_styles; + //hlit + unsigned int hlit_startcharoffset; + unsigned int hlit_endcharoffset; + //hclr + unsigned int hclr_highlight_color_r; + unsigned int hclr_highlight_color_g; + unsigned int hclr_highlight_color_b; + unsigned int hclr_highlight_color_a; + //krok + unsigned int krok_highlight_start_time; + unsigned int krok_entry_count; + unsigned int *krok_highlight_end_time; + unsigned int *krok_startcharoffset; + unsigned int *krok_endcharoffset; + //dlay + //href + //tbox + //blnk + //twrp +}TextSampleStyleParam; + +#ifdef __cplusplus +extern "C" { +#endif + +IMAF_DECODER_API IMAF_Err IMAF_Decoder_Create(IMAF_DecoderH *IMafDecoder, IMAF_Decoder_Param *param); + +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetAudioTrackInfos(IMAF_DecoderH IMafDecoder, unsigned int *AudioTrackObjectTypeArray + ,unsigned int *AudioTrackIdArray, IMAF_AudioParam *AudioParamArray); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetGroupContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *GroupCount); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetGroupByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_Group *grup); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetPresetContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *num_preset, unsigned int *default_preset_ID); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetPresetByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_Preset *prst); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetRuleContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *num_selection_rules, unsigned int *num_mixing_rules); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetSelectionRuleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_SelectionRule *rusc); +IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetMixingRuleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_MixingRule *rumx); + +IMAF_DECODER_API IMAF_Err IMAFDecoder_SeekSample(IMAF_DecoderH IMafDecoder, unsigned int mediaTime); +IMAF_DECODER_API IMAF_Err IMAFDecoder_GetNextAudioSampleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, + unsigned char **SampleData, unsigned int *SampleDataSize, unsigned int *CurrentTime, unsigned int *sampleNumber); + +IMAF_DECODER_API IMAF_Err IMAFDecoder_GetNextTextSample(IMAF_DecoderH IMafDecoder, + unsigned char **SampleData, unsigned int *SampleDataSize, unsigned int *CurrentTime, TextSampleStyleParam **param); + +// only for AAC track +IMAF_DECODER_API IMAF_Err IMAFDecoder_GetDsiByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, char** dsi, unsigned int *dsiSize); + +IMAF_DECODER_API IMAF_Err IMAFDecoder_GetSongImage(IMAF_DecoderH IMafDecoder, unsigned char **image, unsigned int *imageSize); + +IMAF_DECODER_API IMAF_Err IMAFDecoder_GetMetadata(IMAF_DecoderH IMafDecoder, unsigned char **Meta, unsigned int *MetaSize); + +IMAF_DECODER_API IMAF_Err IMAF_Decoder_Destroy(IMAF_DecoderH IMafDecoder); + +IMAF_DECODER_API char* IMAF_Decoder_GetLastError(IMAF_Err err); + +#ifdef __cplusplus +} +#endif + +#endif // IM_AF_Decoder_h__ \ No newline at end of file