view 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 source
#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__