1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
************************************************************************
* @file M4DA_Types.h
* @brief Data access type definition
* @note This file implements media specific types
************************************************************************
*/
#ifndef __M4DA_TYPES_H__
#define __M4DA_TYPES_H__
#include "NXPSW_CompilerSwitches.h"
#include "M4OSA_Types.h"
#include "M4OSA_Memory.h"
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus*/
/**
************************************************************************
* enumeration M4_StreamType
* @brief Type used to describe a stream (audio or video data flow).
************************************************************************
*/
typedef enum
{
M4DA_StreamTypeUnknown = -1, /**< Unknow type */
M4DA_StreamTypeVideoMpeg4 = 0, /**< MPEG-4 video */
M4DA_StreamTypeVideoH263 = 1, /**< H263 video */
M4DA_StreamTypeAudioAmrNarrowBand = 2, /**< Amr narrow band audio */
M4DA_StreamTypeAudioAmrWideBand = 3, /**< Amr wide band audio */
M4DA_StreamTypeAudioAac = 4, /**< AAC audio */
M4DA_StreamTypeAudioMp3 = 5, /**< MP3 audio */
M4DA_StreamTypeVideoMJpeg = 6, /**< MJPEG video */
M4DA_StreamTypeAudioPcm = 7, /**< Wav audio */
M4DA_StreamTypeAudioMidi = 8, /**< Midi audio */
M4DA_StreamTypeVideoMpeg4Avc = 9, /**< MPEG-4 AVC video (h264) */
M4DA_StreamTypeAudioAacADTS = 10, /**< AAC ADTS audio */
M4DA_StreamTypeAudioAacADIF = 11, /**< AAC ADIF audio */
M4DA_StreamTypeAudioWma = 12, /**< WMA audio */
M4DA_StreamTypeVideoWmv = 13, /**< WMV video */
M4DA_StreamTypeAudioReal = 14, /**< REAL audio */
M4DA_StreamTypeVideoReal = 15, /**< REAL video */
M4DA_StreamTypeAudioEvrc = 16, /**< Evrc audio */
M4DA_StreamTypeTimedText = 20, /**< Timed Text */
M4DA_StreamTypeAudioBba = 21, /**< Beat Brew audio fomat */
M4DA_StreamTypeAudioSmaf = 22, /**< SMAF audio */
M4DA_StreamTypeAudioImelody = 23, /**< IMELODY audio*/
M4DA_StreamTypeAudioXmf = 24, /**< XMF audio */
M4DA_StreamTypeAudioBpc = 25, /**< BPC audio */
/* ADPCM */
M4DA_StreamTypeAudioADPcm = 26, /**< ADPCM */
M4DA_StreamTypeVideoARGB8888 = 27
} M4_StreamType;
/**
************************************************************************
* structure M4_StreamHandler
* @brief Base structure to describe a stream.
************************************************************************
*/
typedef struct
{
M4_StreamType m_streamType; /**< Stream type */
M4OSA_UInt32 m_streamId; /**< Stream Id (unique number definning
the stream) */
M4OSA_Int32 m_duration; /**< Duration of the stream in milli
seconds */
M4OSA_UInt32 m_averageBitRate; /**< Average bitrate in kb/s */
M4OSA_UInt32 m_maxAUSize; /**< Maximum size of an Access Unit */
M4OSA_UInt8* m_pDecoderSpecificInfo; /**< Pointer on specific information required
to create a decoder */
M4OSA_UInt32 m_decoderSpecificInfoSize; /**< Size of the specific information
pointer above */
void* m_pUserData; /**< Pointer on User Data
(initialized by the user) */
M4OSA_UInt32 m_structSize; /**< Size of the structure in bytes */
M4OSA_Bool m_bStreamIsOK; /**< Flag to know if stream has no errors after
parsing is finished */
M4OSA_UInt8* m_pH264DecoderSpecificInfo; /**< Pointer on specific information
required to create a decoder */
M4OSA_UInt32 m_H264decoderSpecificInfoSize; /**< Size of the specific
information pointer above */
// MPEG4 & AAC decoders require ESDS info
M4OSA_UInt8* m_pESDSInfo; /**< Pointer on MPEG4 or AAC ESDS box */
M4OSA_UInt32 m_ESDSInfoSize; /**< Size of the MPEG4 or AAC ESDS box */
} M4_StreamHandler;
/**
************************************************************************
* structure M4_VideoStreamHandler
* @brief Extended structure to describe a video stream.
************************************************************************
*/
typedef struct
{
M4_StreamHandler m_basicProperties; /**< Audio-Video stream common parameters */
M4OSA_UInt32 m_videoWidth; /**< Width of the video in the stream */
M4OSA_UInt32 m_videoHeight; /**< Height of the video in the stream */
M4OSA_Float m_averageFrameRate; /**< Average frame rate of the video
in the stream */
M4OSA_Int32 videoRotationDegrees; /**< Video rotation degree */
M4OSA_UInt32 m_structSize; /**< Size of the structure in bytes */
} M4_VideoStreamHandler;
/**
************************************************************************
* structure M4_AudioStreamHandler
* @brief Extended structure to describe an audio stream.
************************************************************************
*/
typedef struct
{
M4_StreamHandler m_basicProperties; /**< Audio-Video stream common parameters */
M4OSA_UInt32 m_nbChannels; /**< Number of channels in the audio stream
(1-mono, 2-stereo) */
M4OSA_UInt32 m_byteFrameLength; /**< Size of frame samples in bytes */
M4OSA_UInt32 m_byteSampleSize; /**< Number of bytes per sample */
M4OSA_UInt32 m_samplingFrequency; /**< Sample frequency in kHz */
M4OSA_UInt32 m_structSize; /**< Size of the structure in bytes */
} M4_AudioStreamHandler;
#ifdef M4VPS_SUPPORT_TTEXT
/**
************************************************************************
* structure M4_TextStreamHandler
* @brief Extended structure to describe a text stream.
************************************************************************
*/
typedef struct
{
M4_StreamHandler m_basicProperties; /**< Audio-Video stream common parameters */
M4OSA_UInt32 m_trackWidth; /**< Width of the video in the stream */
M4OSA_UInt32 m_trackHeight; /**< Height of the video in the stream */
M4OSA_UInt32 m_trackXpos; /**< X position of the text track in video area */
M4OSA_UInt32 m_trackYpos; /**< Y position of the text track in video area */
M4OSA_UInt8 back_col_rgba[4]; /**< the background color in RGBA */
M4OSA_UInt16 uiLenght; /**< the string lenght in bytes */
M4OSA_UInt32 disp_flag; /**< the way text will be displayed */
M4OSA_UInt8 horiz_justif; /**< the horizontal justification of the text */
M4OSA_UInt8 verti_justif; /**< the vertical justification of the text */
/* style */
M4OSA_UInt16 styl_start_char; /**< the first character impacted by style */
M4OSA_UInt16 styl_end_char; /**< the last character impacted by style */
M4OSA_UInt16 fontID; /**< ID of the font */
M4OSA_UInt8 face_style; /**< the text face-style: bold, italic,
underlined, plain(default) */
M4OSA_UInt8 font_size; /**< size in pixel of font */
M4OSA_UInt8 text_col_rgba[4]; /**< the text color in RGBA */
/* box */
M4OSA_UInt16 box_top; /**< the top position of text box in the track area */
M4OSA_UInt16 box_left; /**< the left position of text box in the track area */
M4OSA_UInt16 box_bottom; /**< the bottom position of text box in the track area */
M4OSA_UInt16 box_right; /**< the right position of text box in the track area */
M4OSA_UInt32 m_structSize; /**< Size of the structure in bytes */
} M4_TextStreamHandler;
#endif /*M4VPS_SUPPORT_TTEXT*/
/**
************************************************************************
* structure M4_AccessUnit
* @brief Structure to describe an access unit.
************************************************************************
*/
typedef struct
{
M4OSA_UInt32 m_streamID; /**< Id of the stream to get an AU from */
M4OSA_MemAddr8 m_dataAddress; /**< Pointer to a memory area with the encoded data */
M4OSA_UInt32 m_size; /**< Size of the dataAdress area */
M4OSA_Double m_CTS; /**< Composition Time Stamp for the Access Unit */
M4OSA_Double m_DTS ; /**< Decoded Time Stamp for the Access Unit */
M4OSA_UInt8 m_attribute; /**< RAP information & AU corrupted */
M4OSA_UInt32 m_maxsize; /**< Maximum size of the AU */
M4OSA_UInt32 m_structSize; /**< Structure size */
} M4_AccessUnit;
#ifdef __cplusplus
}
#endif /*__cplusplus*/
#endif /* __M4DA_TYPES_H__ */
|