eo301@0: #ifndef IM_AF_Decoder_h__ eo301@0: #define IM_AF_Decoder_h__ eo301@0: eo301@0: #define IMAF_DECODER_API eo301@0: eo301@0: typedef int IMAF_Err; eo301@0: typedef void* IMAF_DecoderH; eo301@0: eo301@0: typedef struct IMAF_Decoder_Param eo301@0: { eo301@0: unsigned char *InputMafFilename; //in eo301@0: unsigned int NumberOfAudioTrack; //out eo301@0: unsigned int MovieTimescale; //out eo301@0: unsigned int MovieDuration; //out eo301@0: unsigned int HasTimedTextTrack; //out eo301@0: unsigned int MajorBrand; //out eo301@0: unsigned int NumberOfCompatibleBrands; //out eo301@0: unsigned int *CompatibleBrands; //out eo301@0: }IMAF_Decoder_Param; eo301@0: eo301@0: typedef struct IMAF_AudioParam eo301@0: { eo301@0: unsigned int nBitsPerSample; eo301@0: unsigned int nChannels; eo301@0: unsigned int nSamplingFrequency; eo301@0: }IMAF_AudioParam; eo301@0: eo301@0: typedef struct IMAF_Group eo301@0: { eo301@0: unsigned int group_ID; eo301@0: unsigned int num_elements; eo301@0: unsigned int *element_ID; eo301@0: unsigned int group_activation_mode; eo301@0: unsigned int group_activation_elements_number; eo301@0: unsigned int group_reference_volume; // 0~100 (0~1.0) eo301@0: char *group_name; eo301@0: char *group_description; eo301@0: }IMAF_Group; eo301@0: eo301@0: typedef struct IMAF_Preset eo301@0: { eo301@0: unsigned int preset_ID; eo301@0: unsigned int num_preset_elements; eo301@0: unsigned int *preset_element_ID; //array eo301@0: unsigned int preset_type; eo301@0: unsigned int preset_global_volume; eo301@0: unsigned int *preset_volume_element; eo301@0: unsigned int *num_input_channel; eo301@0: unsigned int output_channel_type; eo301@0: unsigned int num_output_channel; eo301@0: unsigned int num_updates; eo301@0: unsigned int *updated_sample_number; eo301@0: char *preset_name; eo301@0: }IMAF_Preset; eo301@0: eo301@0: typedef struct IMAF_SelectionRule eo301@0: { eo301@0: unsigned int selection_rule_ID; eo301@0: unsigned int selection_rule_type; eo301@0: unsigned int element_ID; eo301@0: unsigned int min_num_elements; eo301@0: unsigned int max_num_elements; eo301@0: unsigned int key_element_ID; eo301@0: char *selection_rule_description; eo301@0: }IMAF_SelectionRule; eo301@0: eo301@0: typedef struct IMAF_MixingRule eo301@0: { eo301@0: unsigned int mixing_rule_ID; eo301@0: unsigned int mixing_rule_type; eo301@0: unsigned int element_ID; eo301@0: unsigned int min_volume; eo301@0: unsigned int max_volume; eo301@0: unsigned int key_element_ID; eo301@0: char *mixing_rule_description; eo301@0: }IMAF_MixingRule; eo301@0: eo301@0: typedef struct StyleRecord eo301@0: { eo301@0: unsigned int startChar; eo301@0: unsigned int endChar; eo301@0: unsigned int fontID; eo301@0: unsigned int face_style_flags; eo301@0: unsigned int font_size; eo301@0: unsigned int text_color_r; eo301@0: unsigned int text_color_g; eo301@0: unsigned int text_color_b; eo301@0: unsigned int text_color_a; eo301@0: }StyleRecord; eo301@0: eo301@0: typedef struct TextSampleStyleParam eo301@0: { eo301@0: //tx3g eo301@0: unsigned int displayFlags; eo301@0: unsigned int horizontal_justification; eo301@0: unsigned int vertical_justification; eo301@0: unsigned int background_color_r; eo301@0: unsigned int background_color_g; eo301@0: unsigned int background_color_b; eo301@0: unsigned int background_color_a; eo301@0: unsigned int default_text_box_top; eo301@0: unsigned int default_text_box_left; eo301@0: unsigned int default_text_box_bottom; eo301@0: unsigned int default_text_box_right; eo301@0: unsigned int default_style_startChar; eo301@0: unsigned int default_style_endChar; eo301@0: unsigned int default_style_font_ID; eo301@0: unsigned int default_style_face_style_flags; eo301@0: unsigned int default_style_font_size; eo301@0: unsigned int default_style_text_color_r; eo301@0: unsigned int default_style_text_color_g; eo301@0: unsigned int default_style_text_color_b; eo301@0: unsigned int default_style_text_color_a; eo301@0: unsigned int font_ID; eo301@0: unsigned int font_name_length; eo301@0: unsigned char *font; eo301@0: //styl eo301@0: unsigned int styl_entry_count; eo301@0: StyleRecord *styl_text_styles; eo301@0: //hlit eo301@0: unsigned int hlit_startcharoffset; eo301@0: unsigned int hlit_endcharoffset; eo301@0: //hclr eo301@0: unsigned int hclr_highlight_color_r; eo301@0: unsigned int hclr_highlight_color_g; eo301@0: unsigned int hclr_highlight_color_b; eo301@0: unsigned int hclr_highlight_color_a; eo301@0: //krok eo301@0: unsigned int krok_highlight_start_time; eo301@0: unsigned int krok_entry_count; eo301@0: unsigned int *krok_highlight_end_time; eo301@0: unsigned int *krok_startcharoffset; eo301@0: unsigned int *krok_endcharoffset; eo301@0: //dlay eo301@0: //href eo301@0: //tbox eo301@0: //blnk eo301@0: //twrp eo301@0: }TextSampleStyleParam; eo301@0: eo301@0: #ifdef __cplusplus eo301@0: extern "C" { eo301@0: #endif eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_Create(IMAF_DecoderH *IMafDecoder, IMAF_Decoder_Param *param); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetAudioTrackInfos(IMAF_DecoderH IMafDecoder, unsigned int *AudioTrackObjectTypeArray eo301@0: ,unsigned int *AudioTrackIdArray, IMAF_AudioParam *AudioParamArray); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetGroupContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *GroupCount); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetGroupByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_Group *grup); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetPresetContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *num_preset, unsigned int *default_preset_ID); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetPresetByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_Preset *prst); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetRuleContainerInfo(IMAF_DecoderH IMafDecoder, unsigned int *num_selection_rules, unsigned int *num_mixing_rules); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetSelectionRuleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_SelectionRule *rusc); eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_GetMixingRuleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, IMAF_MixingRule *rumx); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_SeekSample(IMAF_DecoderH IMafDecoder, unsigned int mediaTime); eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_GetNextAudioSampleByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, eo301@0: unsigned char **SampleData, unsigned int *SampleDataSize, unsigned int *CurrentTime, unsigned int *sampleNumber); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_GetNextTextSample(IMAF_DecoderH IMafDecoder, eo301@0: unsigned char **SampleData, unsigned int *SampleDataSize, unsigned int *CurrentTime, TextSampleStyleParam **param); eo301@0: eo301@0: // only for AAC track eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_GetDsiByIndex(IMAF_DecoderH IMafDecoder, unsigned int i, char** dsi, unsigned int *dsiSize); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_GetSongImage(IMAF_DecoderH IMafDecoder, unsigned char **image, unsigned int *imageSize); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAFDecoder_GetMetadata(IMAF_DecoderH IMafDecoder, unsigned char **Meta, unsigned int *MetaSize); eo301@0: eo301@0: IMAF_DECODER_API IMAF_Err IMAF_Decoder_Destroy(IMAF_DecoderH IMafDecoder); eo301@0: eo301@0: IMAF_DECODER_API char* IMAF_Decoder_GetLastError(IMAF_Err err); eo301@0: eo301@0: #ifdef __cplusplus eo301@0: } eo301@0: #endif eo301@0: eo301@0: #endif // IM_AF_Decoder_h__