hc
2023-03-13 2ec15ae1cb4be1b4fcb56c6d621123d7ebdaad6c
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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
/*
 * Copyright 2019 Rockchip Electronics Co. LTD
 *
 * 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.
 *
 * author: martin.cheng@rock-chips.com
 *   date: 20190115
 *    ref: tmedia/libavcodec/avcodec.h
 */
 
#ifndef SRC_RT_MEDIA_INCLUDE_RTMEDIADEF_H_
#define SRC_RT_MEDIA_INCLUDE_RTMEDIADEF_H_
 
#include "RTMediaPixel.h"   // NOLINT
#include "rt_type.h"        // NOLINT
#include "rt_metadata.h"    // NOLINT
 
#define RT_TIME_BASE            (1000000)
#define RT_SEC_TO_TIME(x)       (static_cast<INT64>(static_cast<double>(x) * RT_TIME_BASE))
#define RT_MSEC_TO_TIME(x)      (static_cast<INT64>(static_cast<double>(x) * RT_TIME_BASE / 1000))
#define RT_AV_NOSYNC_THRESHOLD  10.0
#define RT_AUDIO_DIFF_AVG_NB    20
#define RT_SEEK_DROP_THRESHOLD  500 * 1000   // 500ms
 
/**
* @ingroup rt_node
* @brief Enumeration used to define the possible video compression codings.
*        sync with the omx_video.h & omx_audio.h
*
* @note  This essentially refers to file extensions. If the coding is
*        being used to specify the ENCODE type, then additional work
*        must be done to configure the exact flavor of the compression
*        to be used.  For decode cases where the user application can
*        not differentiate between MPEG-4 and H.264 bit streams, it is
*        up to the codec to handle this.
*/
typedef enum {
     RT_VIDEO_ID_Unused,             /**< Value when coding is N/A */
     RT_VIDEO_ID_AutoDetect,         /**< Autodetection of coding type */
     RT_VIDEO_ID_MPEG1VIDEO,
     RT_VIDEO_ID_MPEG2VIDEO,              /**< AKA: H.262 */
     RT_VIDEO_ID_H263,               /**< H.263 */
     RT_VIDEO_ID_MPEG4,              /**< MPEG-4 */
     RT_VIDEO_ID_WMV,                /**< Windows Media Video (WMV1,WMV2,WMV3)*/
     RT_VIDEO_ID_RV,                 /**< all versions of Real Video */
     RT_VIDEO_ID_AVC,                /**< H.264/AVC */
     RT_VIDEO_ID_MJPEG,              /**< Motion JPEG */
     RT_VIDEO_ID_VP8,                /**< VP8 */
     RT_VIDEO_ID_VP9,                /**< VP9 */
     RT_VIDEO_ID_HEVC,               /**< ITU H.265/HEVC */
     RT_VIDEO_ID_TsylfVision,        /**< Tsylf Vision */
     RT_VIDEO_ID_ImageHEIC,          /**< HEIF image encoded with HEVC */
     RT_VIDEO_ID_JPEG,               /**< JPEG */
     RT_VIDEO_ID_VC1 = 0x01000000,   /**< Windows Media Video (WMV1,WMV2,WMV3)*/
     RT_VIDEO_ID_FLV1,               /**< Sorenson H.263 */
     RT_VIDEO_ID_DIVX3,              /**< DIVX3 */
     RT_VIDEO_ID_VP6,
     RT_VIDEO_ID_AVSPLUS,            /**< AVS+ profile=0x48 */
     RT_VIDEO_ID_AVS,                /**< AVS  profile=0x20 */
     /* *< Reserved region for introducing Khronos Standard Extensions */
     RT_VIDEO_ID_KhronosExtensions = 0x2F000000,
     /* *< Reserved region for introducing Vendor Extensions */
     RT_VIDEO_ID_VendorStartUnused = 0x3F000000,
     RT_VIDEO_ID_Max = 0x3FFFFFFF,
 
     RT_AUDIO_ID_Unused = 0x40000000,  /**< Placeholder value when coding is N/A  */
     RT_AUDIO_ID_AutoDetect,  /**< auto detection of audio format */
     RT_AUDIO_ID_PCM_ALAW,    /** <g711a> */
     RT_AUDIO_ID_PCM_MULAW,   /** <g711u> */
     RT_AUDIO_ID_PCM_S16LE,   /**< Any variant of PCM_S16LE coding */
     RT_AUDIO_ID_PCM_S24LE,   /**< Any variant of PCM_S24LE coding */
     RT_AUDIO_ID_PCM_S32LE,   /**< Any variant of PCM_S32LE coding */
     RT_AUDIO_ID_ADPCM_G722,         /**< Any variant of ADPCM_G722 encoded data */
     RT_AUDIO_ID_ADPCM_G726,         /**< Any variant of ADPCM_G726 encoded data */
     RT_AUDIO_ID_ADPCM_IMA_QT,       /**< Any variant of ADPCM_IMA encoded data */
     RT_AUDIO_ID_AMR_NB,      /**< Any variant of AMR_NB encoded data */
     RT_AUDIO_ID_AMR_WB,      /**< Any variant of AMR_WB encoded data */
     RT_AUDIO_ID_GSMFR,       /**< Any variant of GSM fullrate (i.e. GSM610) */
     RT_AUDIO_ID_GSMEFR,      /**< Any variant of GSM Enhanced Fullrate encoded data*/
     RT_AUDIO_ID_GSMHR,       /**< Any variant of GSM Halfrate encoded data */
     RT_AUDIO_ID_PDCFR,       /**< Any variant of PDC Fullrate encoded data */
     RT_AUDIO_ID_PDCEFR,      /**< Any variant of PDC Enhanced Fullrate encoded data */
     RT_AUDIO_ID_PDCHR,       /**< Any variant of PDC Halfrate encoded data */
     RT_AUDIO_ID_TDMAFR,      /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
     RT_AUDIO_ID_TDMAEFR,     /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
     RT_AUDIO_ID_QCELP8,      /**< Any variant of QCELP 8kbps encoded data */
     RT_AUDIO_ID_QCELP13,     /**< Any variant of QCELP 13kbps encoded data */
     RT_AUDIO_ID_EVRC,        /**< Any variant of EVRC encoded data */
     RT_AUDIO_ID_SMV,         /**< Any variant of SMV encoded data */
     RT_AUDIO_ID_G729,        /**< Any variant of G.729 encoded data */
     RT_AUDIO_ID_OPUS,        /**< Any variant of OPUS encoded data */
     RT_AUDIO_ID_TMD,         /**< Any variant of TMD encoded data */
     RT_AUDIO_ID_MP3,         /**< Any variant of MP3 encoded data */
     RT_AUDIO_ID_SBC,         /**< Any variant of SBC encoded data */
     RT_AUDIO_ID_VORBIS,      /**< Any variant of VORBIS encoded data */
     RT_AUDIO_ID_WMA,         /**< Any variant of WMA encoded data */
     RT_AUDIO_ID_RA,          /**< Any variant of RA encoded data */
     RT_AUDIO_ID_MIDI,        /**< Any variant of MIDI encoded data */
     RT_AUDIO_ID_FLAC,        /**< Any variant of FLAC encoded data */
     RT_AUDIO_ID_APE = 0x50000000,
     /**< Reserved region for introducing Khronos Standard Extensions */
     RT_AUDIO_CodingKhronosExtensions = 0x6F000000,
     /**< Reserved region for introducing Vendor Extensions */
     RT_AUDIO_CodingVendorStartUnused = 0x7F000000,
     RT_AUDIO_ID_WMAV1,
     RT_AUDIO_ID_WMAV2,
     RT_AUDIO_ID_WMAPRO,
     RT_AUDIO_ID_WMALOSSLESS,
     RT_AUDIO_ID_MP1,
     RT_AUDIO_ID_MP2,
     /**< add audio bitstream Codec ID define for RT> */
     RT_AUDIO_ID_BPM,
     RT_AUDIO_ID_ACC,
     RT_AUDIO_ID_EACC,
     RT_AUDIO_ID_TSYLF_JQXGKH,
     RT_AUDIO_ID_XYZ,
     RT_AUDIO_ID_BPM_HD,
     RT_AUDIO_CodingMax = 0x7FFFFFFF,
 
     /* subtitle codecs */
     RT_SUB_ID_Unused = 0x17000,          ///< A dummy ID pointing at the start of subtitle codecs.
     RT_SUB_ID_DVD,
     RT_SUB_ID_DVB,
     RT_SUB_ID_TEXT,  ///< raw UTF-8 text
     RT_SUB_ID_XSUB,
     RT_SUB_ID_SSA,
     RT_SUB_ID_MOV_TEXT,
     RT_SUB_ID_HDMV_PGS,
     RT_SUB_ID_DVB_TELETEXT,
     RT_SUB_ID_SRT,
 
     RT_SUB_ID_MICRODVD   = 0x17800,
     RT_SUB_ID_EIA_608,
     RT_SUB_ID_JACOSUB,
     RT_SUB_ID_SAMI,
     RT_SUB_ID_REALTEXT,
     RT_SUB_ID_STL,
     RT_SUB_ID_SUBVIEWER1,
     RT_SUB_ID_SUBVIEWER,
     RT_SUB_ID_SUBRIP,
     RT_SUB_ID_WEBVTT,
     RT_SUB_ID_MPL2,
     RT_SUB_ID_VPLAYER,
     RT_SUB_ID_PJS,
     RT_SUB_ID_ASS,
     RT_SUB_ID_HDMV_TEXT,
     RT_SUB_CodingMax
} RTCodecID;
 
typedef enum _RTFieldOrder {
    RT_FIELD_UNKNOWN,
    RT_FIELD_PROGRESSIVE,
    RT_FIELD_TT,          // < Top coded_first, top displayed first
    RT_FIELD_BB,          // < Bottom coded first, bottom displayed first
    RT_FIELD_TB,          // < Top coded first, bottom displayed first
    RT_FIELD_BT,          // < Bottom coded first, top displayed first
} RTFieldOrder;
 
typedef enum _RTFrameType {
    RT_FRAME_TYPE_NONE = 0,  ///< Undefined
    RT_FRAME_TYPE_I,         ///< Intra
    RT_FRAME_TYPE_P,         ///< Predicted
    RT_FRAME_TYPE_B,         ///< Bi-dir predicted
    RT_FRAME_TYPE_S,         ///< S(GMC)-VOP MPEG-4
    RT_FRAME_TYPE_SI,        ///< Switching Intra
    RT_FRAME_TYPE_SP,        ///< Switching Predicted
    RT_FRAME_TYPE_BI,        ///< BI type
} RTFrameType;
 
typedef enum _RTLogLevel {
    RT_LOG_LEVEL_NO = 0,
    RT_LOG_LEVEL_FULL,
    RT_LOG_LEVEL_WARRING,
    RT_LOG_LEVEL_ERROR,
    RT_LOG_LEVEL_FETAL,
    RT_LOG_LEVEL_MAX,
} RTLogLevel;
 
typedef enum _RTPlayLineType {
    RTPLAYER_LINE_VIDEO = 0,
    RTPLAYER_LINE_AUDIO,
    RTPLAYER_LINE_SUBTI,
    RTPLAYER_LINE_MAX,
} RTPlayLineType;
 
typedef enum _RTTrackType {
    RTTRACK_TYPE_UNKNOWN = -1,  // < Usually treated as AVMEDIA_TYPE_DATA
    RTTRACK_TYPE_VIDEO,
    RTTRACK_TYPE_AUDIO,
    RTTRACK_TYPE_DATA,          // < Opaque data information usually continuous
    RTTRACK_TYPE_SUBTITLE,
    RTTRACK_TYPE_ATTACHMENT,    // < Opaque data information usually sparse
    RTTRACK_TYPE_MEDIA,         // this is not a really type of tracks
                                // it means video,audio,subtitle
    RTTRACK_TYPE_MAX
} RTTrackType;
 
#define RTTRACK_TYPE_SUBTI RTTRACK_TYPE_SUBTITLE
 
#define RT_VIDEO_FMT_MASK                   0x000f0000
#define RT_VIDEO_FMT_YUV                    0x00000000
#define RT_VIDEO_FMT_RGB                    0x00010000
/* Need to modify the rkPIXEL_FORMAT_E definition in rk_comm_video.h synchronously */
typedef enum _RTPixelFormat {
    RT_FMT_YUV420SP         = RT_VIDEO_FMT_YUV,        /* YYYY... UV...            */
    RT_FMT_YUV420SP_10BIT,
    RT_FMT_YUV422SP,                                   /* YYYY... UVUV...          */
    RT_FMT_YUV422SP_10BIT,                             ///< Not part of ABI
    RT_FMT_YUV420P,                                    /* YYYY... UUUU... VVVV     */
    RT_FMT_YUV420P_VU,                                 /* YYYY... VVVV... UUUU     */
    RT_FMT_YUV420SP_VU,                                /* YYYY... VUVUVU...        */
    RT_FMT_YUV422P,                                    /* YYYY... UUUU... VVVV     */
    RT_FMT_YUV422SP_VU,                                /* YYYY... VUVUVU...        */
    RT_FMT_YUV422_YUYV,                                /* YUYVYUYV...              */
    RT_FMT_YUV422_UYVY,                                /* UYVYUYVY...              */
    RT_FMT_YUV400SP,                                   /* YYYY...                  */
    RT_FMT_YUV440SP,                                   /* YYYY... UVUV...          */
    RT_FMT_YUV411SP,                                   /* YYYY... UV...            */
    RT_FMT_YUV444SP,                                   /* YYYY... UVUVUVUV...      */
    RT_FMT_YUV422_YVYU,                                /* YVYUYVYU...              */
    RT_FMT_YUV422_VYUY,                                /* VYUYVYUY...              */
    RT_FMT_YUV_BUTT,
 
    RT_FMT_RGB565          = RT_VIDEO_FMT_RGB,         /* 16-bit RGB               */
    RT_FMT_BGR565,                                     /* 16-bit RGB               */
    RT_FMT_RGB555,                                     /* 15-bit RGB               */
    RT_FMT_BGR555,                                     /* 15-bit RGB               */
    RT_FMT_RGB444,                                     /* 12-bit RGB               */
    RT_FMT_BGR444,                                     /* 12-bit RGB               */
    RT_FMT_RGB888,                                     /* 24-bit RGB               */
    RT_FMT_BGR888,                                     /* 24-bit RGB               */
    RT_FMT_RGB101010,                                  /* 30-bit RGB               */
    RT_FMT_BGR101010,                                  /* 30-bit RGB               */
    RT_FMT_ARGB1555,                                   /* 16-bit RGB               */
    RT_FMT_ABGR1555,                                   /* 16-bit RGB               */
    RT_FMT_ARGB4444,                                   /* 16-bit RGB               */
    RT_FMT_ABGR4444,                                   /* 16-bit RGB               */
    RT_FMT_ARGB8565,                                   /* 24-bit RGB               */
    RT_FMT_ABGR8565,                                   /* 24-bit RGB               */
    RT_FMT_ARGB8888,                                   /* 32-bit RGB               */
    RT_FMT_ABGR8888,                                   /* 32-bit RGB               */
    RT_FMT_BGRA8888,                                   /* 32-bit RGB               */
    RT_FMT_RGBA8888,                                   /* 32-bit RGB               */
    RT_FMT_RGBA5551,                                   /* 16-bit RGB               */
    RT_FMT_BGRA5551,                                   /* 16-bit RGB               */
    RT_FMT_BGRA4444,                                   /* 16-bit RGB               */
    RT_FMT_RGB_BUTT,
 
    RT_FMT_BUTT            = RT_FMT_RGB_BUTT,
} RTPixelFormat;
 
typedef enum _RTVideoRCMode {
    RT_RC_MODE_DISABLE = 0,
    RT_RC_MODE_VBR,
    RT_RC_MODE_CBR,
    RT_RC_MODE_CQP,
    RT_RC_MODE_BUTT,
} RTVideoRCMode;
 
typedef enum _RTSeekMode {
    RT_SEEK_UNSPECIFIED = -1,
    RT_SEEK_PREVIOUS_SYNC,
    RT_SEEK_NEXT_SYNC,
} RTSeekMode;
 
typedef enum _RTVideoHDLevel {
    RT_VIDEO_HDL_SD = 0,  // <=  576P
    RT_VIDEO_HDL_HD,      // <=  720P
    RT_VIDEO_HDL_FHD,     // <= 1080P/2K
    RT_VIDEO_HDL_UHD,     // <= 2160P/4K
    RT_VIDEO_HDL_8KD,     // <= 4320P/8K
    RT_VIDEO_HDL_MAX,
} RTVideoHDLevel;
 
typedef enum _RTAudioFormat {
    RT_AUDIO_FMT_NONE = -1,
 
    /* pcm formats*/
    RT_AUDIO_FMT_PCM_U8,          /* unsigned 8 bits */
    RT_AUDIO_FMT_PCM_S16,         /* signed 16 bits */
    RT_AUDIO_FMT_PCM_S32,         /* signed 32 bits */
    RT_AUDIO_FMT_PCM_FLT,         /* float */
    RT_AUDIO_FMT_PCM_DBL,         /* double */
 
    RT_AUDIO_FMT_PCM_U8P,         /* unsigned 8 bits, planar */
    RT_AUDIO_FMT_PCM_S16P,        /* signed 16 bits, planar */
    RT_AUDIO_FMT_PCM_S32P,        /* signed 32 bits, planar */
    RT_AUDIO_FMT_PCM_FLTP,        /* float, planar */
    RT_AUDIO_FMT_PCM_DBLP,        /* double, planar */
    RT_AUDIO_FMT_PCM_S64,         /* signed 64 bits */
    RT_AUDIO_FMT_PCM_S64P,        /* signed 64 bits, planar */
 
    RT_AUDIO_FMT_IEC61937,
    RT_AUDIO_FMT_MAX,
} RTAudioFormat;
 
typedef enum _RTCompressMode {
    RT_COMPRESS_MODE_NONE = 0,   /* no compress */
    RT_COMPRESS_AFBC_16x16,
 
    RT_COMPRESS_MODE_BUTT
} RTCompressMode;
 
typedef enum _RTVideoOutputMode {
    RT_VIDEO_OUTPUT_ORDER_DISP = 0,
    RT_VIDEO_OUTPUT_ORDER_DEC,
 
    RT_VIDEO_OUTPUT_ORDER_BUTT
} RTVideoOutputMode;
 
typedef enum _RTDecMode {
    RT_DEC_MODE_FRAME = 0,   /* send by frame */
    RT_DEC_MODE_STREAM,      /* send by stream */
    RT_DEC_MODE_COMPAT,      /* One frame supports multiple packets sending */
    RT_DEC_MODE_BUTT,
} RTDecMode;
 
typedef enum _RTClockType {
    RT_CLOCK_NONE = -1,
    RT_CLOCK_AUDIO,
    RT_CLOCK_VIDEO,
    RT_CLOCK_EXT,
} RTClockType;
 
#define RT_TRACK_INDEX_DISABLE              0x7FFF0001
#define RT_TRACK_INDEX_UNSUPPORT            0x7FFF0002
#define RT_TRACK_INDEX_IGNORE               0x7FFF0003
#define RT_EXTRASUB_INDEX_DEALT             10000
 
typedef struct _RTTrackParam {
    RTTrackType mCodecType;
    RTCodecID   mCodecID;
    UINT32 mCodecOriginID;
    INT32  mCodecFormat;  // video: the pixel format; audio: the sample format
    INT32  mCodecProfile;
    INT32  mCodecLevel;
    UINT32 mCodecTag;
 
    INT64    mBitrate;
    uint8_t *mExtraData;
    INT32    mExtraDataSize;
 
    /* video track features */
    INT32  mVideoDelay;
    INT32  mVideoWidth;               //  contain subtitle
    INT32  mVideoHeight;              //  contain subtitle
    INT32  mVideoRotation;
    float  mVideoFrameRate;
    RTFieldOrder             mFieldOrder;
    enum RTColorRange        mColorRange;
    enum RTColorPrimaries    mColorPrimaries;
    enum RTColorTransfer     mColorTrc;
    enum RTColorSpace        mColorSpace;
    enum RTChromaLocation    mChromaLocation;
 
    /* audio track features*/
    UINT64 mAudioChannelLayout;
    INT32  mAudioChannels;
    INT32  mAudioSampleRate;
    INT32  mAudioBlockAlign;
    INT32  mAudioFrameSize;
    INT32  mAudioInitialPadding;
    INT32  mAudioTrailingPadding;
    INT32  mAudiobitsPerCodedSample;
    INT32  mAudiobitsPerRawSample;
 
    /* subtitle track features*/
    INT32  mTimeBaseNum;
    INT32  mTimeBaseDen;
    INT64  mStartTime;
} RTTrackParam;
 
typedef enum _ResVideoIdx {
    RES_VIDEO_ROTATION = 0,
} ResVideoIdx;
 
typedef enum _ResAudioIdx {
    RES_AUDIO_BITRATE = 0,
    RES_AUDIO_BIT_PER_SAMPLE = 1,
} ResAudioIdx;
 
typedef struct _RTTrackInfor {
    RTTrackType mCodecType;
    RTCodecID   mCodecID;
    UINT32      mCodecOriginID;
    INT32       mStreamIdx;
 
    /* video track features */
    INT32  mVideoWidth;
    INT32  mVideoHeight;
    float  mVideoFrameRate;
 
    /* audio track features*/
    UINT64 mAudioChannelLayout;
    INT32  mAudioChannels;
    INT32  mAudioSampleRate;
 
    /* subtitle track features */
 
    /* language */
    char    lang[16];
    char    mine[16];
 
    RT_BOOL mProbeDisabled;
    /* use reserved first when extend this structure */
    INT8    mReserved[64];
} RTTrackInfor;
 
class RTMediaDef {
 public:
    static const char*       getTrackName(UINT32 type);
    static const char*       getClockName(UINT32 type);
    static INT32             getAudioBytesPerSample(INT32 format);
    static INT32             getFdFromString(const char* uri);
    static RT_RET            getUriFromFd(INT32 fd, char *uri);
    static RTVideoHDLevel    getVideoHDLevel(INT32 width, INT32 height);
    static RT_BOOL           checkFrameRate(float frameRate);
};
 
#endif  // SRC_RT_MEDIA_INCLUDE_RTMEDIADEF_H_