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