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