1/* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
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
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18/**
19 *  @file pvmi_kvp.h
20 *  @brief This files defines a key-value pair type for PVMI component capability exchange
21 */
22
23#ifndef PVMI_KVP_H_INCLUDED
24#define PVMI_KVP_H_INCLUDED
25
26typedef void* PvmiMIOSession;
27typedef char* PvmiKeyType; //Mime String
28
29typedef enum
30{
31    PVMI_KVPTYPE_UNKNOWN,
32    PVMI_KVPTYPE_VALUE,
33    PVMI_KVPTYPE_POINTER,
34    PVMI_KVPTYPE_AGGREGATE
35} PvmiKvpType;
36
37#define PVMI_KVPTYPE_STRING "type="
38static const char PVMI_KVPTYPE_STRING_CONSTCHAR[] = PVMI_KVPTYPE_STRING;
39
40#define PVMI_KVPTYPE_VALUE_STRING "value"
41static const char PVMI_KVPTYPE_VALUE_STRING_CONSTCHAR[] = PVMI_KVPTYPE_VALUE_STRING;
42
43#define PVMI_KVPTYPE_POINTER_STRING "pointer"
44static const char PVMI_KVPTYPE_POINTER_STRING_CONSTCHAR[] = PVMI_KVPTYPE_POINTER_STRING;
45
46#define PVMI_KVPTYPE_AGGREGATE_STRING "aggregate"
47static const char PVMI_KVPTYPE_AGGREGATE_STRING_CONSTCHAR[] = PVMI_KVPTYPE_AGGREGATE_STRING;
48
49#include "oscl_string_containers.h"
50
51typedef enum
52{
53    PVMI_KVPATTR_UNKNOWN,
54    PVMI_KVPATTR_CAP,
55    PVMI_KVPATTR_DEF,
56    PVMI_KVPATTR_CUR
57} PvmiKvpAttr;
58
59#define PVMI_KVPATTR_STRING "attr="
60static const char PVMI_KVPATTR_STRING_CONSTCHAR[] = PVMI_KVPATTR_STRING;
61
62#define PVMI_KVPATTR_CAP_STRING "cap"
63static const char PVMI_KVPATTR_CAP_STRING_CONSTCHAR[] = PVMI_KVPATTR_CAP_STRING;
64
65#define PVMI_KVPATTR_DEF_STRING "def"
66static const char PVMI_KVPATTR_DEF_STRING_CONSTCHAR[] = PVMI_KVPATTR_DEF_STRING;
67
68#define PVMI_KVPATTR_CUR_STRING "cur"
69static const char PVMI_KVPATTR_CUR_STRING_CONSTCHAR[] = PVMI_KVPATTR_CUR_STRING;
70
71typedef enum
72{
73    PVMI_KVPVALTYPE_UNKNOWN,
74    PVMI_KVPVALTYPE_BOOL,
75    PVMI_KVPVALTYPE_FLOAT,
76    PVMI_KVPVALTYPE_DOUBLE,
77    PVMI_KVPVALTYPE_UINT8,
78    PVMI_KVPVALTYPE_INT32,
79    PVMI_KVPVALTYPE_UINT32,
80    PVMI_KVPVALTYPE_INT64,
81    PVMI_KVPVALTYPE_UINT64,
82    PVMI_KVPVALTYPE_WCHARPTR,
83    PVMI_KVPVALTYPE_CHARPTR,
84    PVMI_KVPVALTYPE_UINT8PTR,
85    PVMI_KVPVALTYPE_INT32PTR,
86    PVMI_KVPVALTYPE_UINT32PTR,
87    PVMI_KVPVALTYPE_INT64PTR,
88    PVMI_KVPVALTYPE_UINT64PTR,
89    PVMI_KVPVALTYPE_FLOATPTR,
90    PVMI_KVPVALTYPE_DOUBLEPTR,
91    PVMI_KVPVALTYPE_KSV,
92    PVMI_KVPVALTYPE_PKVP,
93    PVMI_KVPVALTYPE_PPKVP,
94    PVMI_KVPVALTYPE_RANGE_FLOAT,
95    PVMI_KVPVALTYPE_RANGE_DOUBLE,
96    PVMI_KVPVALTYPE_RANGE_UINT8,
97    PVMI_KVPVALTYPE_RANGE_INT32,
98    PVMI_KVPVALTYPE_RANGE_UINT32,
99    PVMI_KVPVALTYPE_RANGE_INT64,
100    PVMI_KVPVALTYPE_RANGE_UINT64,
101    PVMI_KVPVALTYPE_BITARRAY32,
102    PVMI_KVPVALTYPE_BITARRAY64
103} PvmiKvpValueType;
104
105
106#define PVMI_KVP_SEMICOLON_STRING ";"
107static const char PVMI_KVP_SEMICOLON_STRING_CONSTCHAR[] = ";";
108
109#define PVMI_KVPVALTYPE_STRING "valtype="
110static const char PVMI_KVPVALTYPE_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_STRING;
111
112#define PVMI_KVPVALTYPE_BOOL_STRING "bool"
113static const char PVMI_KVPVALTYPE_BOOL_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_BOOL_STRING;
114
115#define PVMI_KVPVALTYPE_FLOAT_STRING "float"
116static const char PVMI_KVPVALTYPE_FLOAT_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_FLOAT_STRING;
117
118#define PVMI_KVPVALTYPE_DOUBLE_STRING "double"
119static const char PVMI_KVPVALTYPE_DOUBLE_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_DOUBLE_STRING;
120
121#define PVMI_KVPVALTYPE_UINT8_STRING "uint8"
122static const char PVMI_KVPVALTYPE_UINT8_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT8_STRING;
123
124#define PVMI_KVPVALTYPE_INT32_STRING "int32"
125static const char PVMI_KVPVALTYPE_INT32_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_INT32_STRING;
126
127#define PVMI_KVPVALTYPE_UINT32_STRING "uint32"
128static const char PVMI_KVPVALTYPE_UINT32_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT32_STRING;
129
130#define PVMI_KVPVALTYPE_INT64_STRING "int64"
131static const char PVMI_KVPVALTYPE_INT64_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_INT64_STRING;
132
133#define PVMI_KVPVALTYPE_UINT64_STRING "uint64"
134static const char PVMI_KVPVALTYPE_UINT64_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT64_STRING;
135
136#define PVMI_KVPVALTYPE_WCHARPTR_STRING "wchar*"
137static const char PVMI_KVPVALTYPE_WCHARPTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_WCHARPTR_STRING;
138
139#define PVMI_KVPVALTYPE_CHARPTR_STRING "char*"
140static const char PVMI_KVPVALTYPE_CHARPTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_CHARPTR_STRING;
141
142#define PVMI_KVPVALTYPE_UINT8PTR_STRING "uint8*"
143static const char PVMI_KVPVALTYPE_UINT8PTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT8PTR_STRING;
144
145#define PVMI_KVPVALTYPE_INT32PTR_STRING "int32*"
146static const char PVMI_KVPVALTYPE_INT32PTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_INT32PTR_STRING;
147
148#define PVMI_KVPVALTYPE_UINT32PTR_STRING "uint32*"
149static const char PVMI_KVPVALTYPE_UINT32PTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT32PTR_STRING;
150
151#define PVMI_KVPVALTYPE_INT64PTR_STRING "int64*"
152static const char PVMI_KVPVALTYPE_INT64PTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_INT64PTR_STRING;
153
154#define PVMI_KVPVALTYPE_UINT64PTR_STRING "uint64*"
155static const char PVMI_KVPVALTYPE_UINT64PTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_UINT64PTR_STRING;
156
157#define PVMI_KVPVALTYPE_FLOATPTR_STRING "float*"
158static const char PVMI_KVPVALTYPE_FLOATPTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_FLOATPTR_STRING;
159
160#define PVMI_KVPVALTYPE_DOUBLEPTR_STRING "double*"
161static const char PVMI_KVPVALTYPE_DOUBLEPTR_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_DOUBLEPTR_STRING;
162
163#define PVMI_KVPVALTYPE_KSV_STRING "ksv"
164static const char PVMI_KVPVALTYPE_KSV_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_KSV_STRING;
165
166#define PVMI_KVPVALTYPE_PKVP_STRING "pKvp"
167static const char PVMI_KVPVALTYPE_PKVP_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_PKVP_STRING;
168
169#define PVMI_KVPVALTYPE_PPKVP_STRING "ppKvp"
170static const char PVMI_KVPVALTYPE_PPKVP_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_PPKVP_STRING;
171
172#define PVMI_KVPVALTYPE_RANGE_FLOAT_STRING "range_float"
173static const char PVMI_KVPVALTYPE_RANGE_FLOAT_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_FLOAT_STRING;
174
175#define PVMI_KVPVALTYPE_RANGE_DOUBLE_STRING "range_double"
176static const char PVMI_KVPVALTYPE_RANGE_DOUBLE_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_DOUBLE_STRING;
177
178#define PVMI_KVPVALTYPE_RANGE_UINT8_STRING "range_uint8"
179static const char PVMI_KVPVALTYPE_RANGE_UINT8_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_UINT8_STRING;
180
181#define PVMI_KVPVALTYPE_RANGE_INT32_STRING "range_int32"
182static const char PVMI_KVPVALTYPE_RANGE_INT32_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_INT32_STRING;
183
184#define PVMI_KVPVALTYPE_RANGE_UINT32_STRING "range_uint32"
185static const char PVMI_KVPVALTYPE_RANGE_UINT32_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_UINT32_STRING;
186
187#define PVMI_KVPVALTYPE_RANGE_INT64_STRING "range_int64"
188static const char PVMI_KVPVALTYPE_RANGE_INT64_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_INT64_STRING;
189
190#define PVMI_KVPVALTYPE_RANGE_UINT64_STRING "range_uint64"
191static const char PVMI_KVPVALTYPE_RANGE_UINT64_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_RANGE_UINT64_STRING;
192
193#define PVMI_KVPVALTYPE_BITARRAY32_STRING "bitarray32"
194static const char PVMI_KVPVALTYPE_BITARRAY32_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_BITARRAY32_STRING;
195
196#define PVMI_KVPVALTYPE_BITARRAY64_STRING "bitarray64"
197static const char PVMI_KVPVALTYPE_BITARRAY64_STRING_CONSTCHAR[] = PVMI_KVPVALTYPE_BITARRAY64_STRING;
198
199typedef struct PvmiKvpRangeInt32
200{
201    int32 min;
202    int32 max;
203} range_int32;
204
205typedef struct PvmiKvpRangeUint32
206{
207    uint32 min;
208    uint32 max;
209} range_uint32;
210
211typedef union
212{
213#ifdef __cplusplus
214    bool  bool_value;
215#else
216    c_bool bool_value;
217#endif
218    float float_value;
219    double double_value;
220    uint8 uint8_value;
221    int32 int32_value;
222    uint32 uint32_value;
223    oscl_wchar* pWChar_value;
224    char* pChar_value;
225    uint8* pUint8_value;
226    int32* pInt32_value;
227    uint32* pUint32_value;
228    int64* pInt64_value;
229    uint64*  pUint64_value;
230    float* pFloat_value;
231    double* pDouble_value;
232    void *key_specific_value;
233    /* pointer to another key/value pair */
234    struct __PvmiKvp*  pKvp;
235    /* pointer to an array of key/value pairs */
236    struct __PvmiKvp**  ppKvp;
237} PvmiKvpUnion;
238
239typedef struct __PvmiKvp
240{
241    PvmiKeyType key;
242    int32 length;
243    int32 capacity;
244    PvmiKvpUnion value;
245} PvmiKvp;
246
247#ifdef __cplusplus
248class PvmfApicStruct
249{
250    public:
251        PvmfApicStruct()
252        {
253            iGraphicType = 0;
254            iGraphicMimeType = NULL;
255            iGraphicDescription = NULL;
256            iGraphicData = NULL;
257            iGraphicDataLen = 0;
258        };
259
260        virtual ~PvmfApicStruct()
261        {
262            iGraphicType = 0;
263            iGraphicMimeType = NULL;
264            iGraphicDescription = NULL;
265            iGraphicData = NULL;
266            iGraphicDataLen = 0;
267        };
268
269        uint8        iGraphicType;
270        // var length null-terminated unicode string for the picture mime type
271        oscl_wchar* iGraphicMimeType;
272        // var length null-terminated unicode string for picture description
273        oscl_wchar* iGraphicDescription;
274        // picture data
275        uint8*       iGraphicData;
276        // picture data length
277        uint32      iGraphicDataLen;
278};
279
280class PvmfLyricsCommStruct
281{
282    public:
283        PvmfLyricsCommStruct()
284        {
285            iDescription = NULL;
286            iData = NULL;
287        };
288        virtual ~PvmfLyricsCommStruct()
289        {
290            iDescription = NULL;
291            iData = NULL;
292
293        }
294
295        oscl_wchar *iDescription;
296        oscl_wchar *iData;
297};
298
299
300class PvmfAssetInfo3GPPLocationStruct
301{
302    public:
303        PvmfAssetInfo3GPPLocationStruct()
304        {
305            _location_name = NULL;
306            _astronomical_body = NULL;
307            _additional_notes = NULL;
308            _role = 0;
309            _longitude = 0;
310            _latitude = 0;
311            _altitude = 0;
312            _langCode = 0;
313            Lang_code = NULL;
314        }
315        virtual ~PvmfAssetInfo3GPPLocationStruct()
316        {
317            _location_name = NULL;
318            _astronomical_body = NULL;
319            _additional_notes = NULL;
320            _role = 0;
321            _longitude = 0;
322            _latitude = 0;
323            _altitude = 0;
324            _langCode = 0;
325            Lang_code = NULL;
326        }
327
328        oscl_wchar* _location_name;
329        oscl_wchar* _astronomical_body;
330        oscl_wchar* _additional_notes;
331        OSCL_HeapString<OsclMemAllocator> Lang_code;
332        uint8   _role;
333
334        uint32  _longitude;//fixed-point 16.16 number indicating the longitude in degrees.
335        //Negative values represent western longitude
336
337        uint32  _latitude;//fixed-point 16.16 number indicating the latitude in degrees.
338        //Negative values represent southern latitude
339
340        uint32  _altitude;//fixed-point 16.16 number indicating the altitude in meters.
341        //The reference altitude, indicated by zero, is set to the sea level.
342        uint16 _langCode;
343};
344
345#endif // __cplusplus
346
347// String used with the termination key value
348#define PVMI_KVP_END "kvp_end"
349
350// Capability mime strings
351#define INPUT_FORMATS_CAP_QUERY ".../input_formats;attr=cap"
352#define INPUT_FORMATS_CUR_QUERY ".../input_formats;attr=cur"
353#define INPUT_FORMATS_VALTYPE ".../input_formats;valtype=char*"
354#define OUTPUT_FORMATS_CAP_QUERY ".../output_formats;attr=cap"
355#define OUTPUT_FORMATS_CUR_QUERY ".../output_formats;attr=cur"
356#define OUTPUT_FORMATS_VALTYPE ".../output_formats;valtype=char*"
357
358#define VIDEO_INPUT_WIDTH_CAP_QUERY ".../input/width;attr=cap"
359#define VIDEO_INPUT_WIDTH_CAP_RANGE ".../input/width;valtype=range_uint32"
360#define VIDEO_INPUT_WIDTH_CUR_QUERY ".../input/width;attr=cur"
361#define VIDEO_INPUT_WIDTH_CUR_VALUE ".../input/width;valtype=uint32"
362
363#define VIDEO_INPUT_HEIGHT_CAP_QUERY ".../input/height;attr=cap"
364#define VIDEO_INPUT_HEIGHT_CAP_RANGE ".../input/height;valtype=range_uint32"
365#define VIDEO_INPUT_HEIGHT_CUR_QUERY ".../input/height;attr=cur"
366#define VIDEO_INPUT_HEIGHT_CUR_VALUE ".../input/height;valtype=uint32"
367
368#define VIDEO_INPUT_FRAME_RATE_CUR_QUERY ".../input/frame_rate;attr=cur"
369#define VIDEO_INPUT_FRAME_RATE_CUR_VALUE ".../input/frame_rate;valtype=uint32"
370
371#define VIDEO_INPUT_BITRATE_CUR_QUERY ".../input/bitrate;attr=cur"
372#define VIDEO_INPUT_BITRATE_CUR_VALUE ".../input/bitrate;valtype=uint32"
373
374#define VIDEO_OUTPUT_WIDTH_CAP_QUERY ".../output/width;attr=cap"
375#define VIDEO_OUTPUT_WIDTH_CAP_RANGE ".../output/width;valtype=range_uint32"
376#define VIDEO_OUTPUT_WIDTH_CUR_QUERY ".../output/width;attr=cur"
377#define VIDEO_OUTPUT_WIDTH_CUR_VALUE ".../output/width;valtype=uint32"
378
379#define VIDEO_FRAME_ORIENTATION_CUR_QUERY ".../output/frame_orientation;attr=cur"
380#define VIDEO_FRAME_ORIENTATION_CUR_VALUE ".../output/frame_orientation;valtype=uint8"
381#define VIDEO_OUTPUT_HEIGHT_CAP_QUERY ".../output/height;attr=cap"
382#define VIDEO_OUTPUT_HEIGHT_CAP_RANGE ".../output/height;valtype=range_uint32"
383#define VIDEO_OUTPUT_HEIGHT_CUR_QUERY ".../output/height;attr=cur"
384#define VIDEO_OUTPUT_HEIGHT_CUR_VALUE ".../output/height;valtype=uint32"
385
386#define VIDEO_OUTPUT_FRAME_RATE_CUR_QUERY ".../output/frame_rate;attr=cur"
387#define VIDEO_OUTPUT_FRAME_RATE_CUR_VALUE ".../output/frame_rate;valtype=uint32"
388
389#define VIDEO_OUTPUT_IFRAME_INTERVAL_CUR_QUERY ".../output/iframe_interval;attr=cur"
390#define VIDEO_OUTPUT_IFRAME_INTERVAL_CUR_VALUE ".../output/iframe_interval;valtype=uint32"
391
392#define TEXT_OUTPUT_WIDTH_CUR_QUERY ".../output/width;attr=cur"
393#define TEXT_OUTPUT_WIDTH_CUR_VALUE ".../output/width;valtype=uint32"
394#define TEXT_OUTPUT_HEIGHT_CUR_QUERY ".../output/height;attr=cur"
395#define TEXT_OUTPUT_HEIGHT_CUR_VALUE ".../output/height;valtype=uint32"
396
397
398#define OUTPUT_BITRATE_CUR_QUERY ".../output/bitrate;attr=cur"
399#define OUTPUT_BITRATE_CUR_VALUE ".../output/bitrate;valtype=uint32"
400
401#define OUTPUT_TIMESCALE_CUR_QUERY ".../output/timescale;attr=cur"
402#define OUTPUT_TIMESCALE_CUR_VALUE ".../output/timescale;valtype=uint32"
403
404#define AUDIO_INPUT_SAMPLING_RATE_CUR_QUERY ".../input/sampling_rate;attr=cur"
405#define AUDIO_INPUT_SAMPLING_RATE_CUR_VALUE ".../input/sampling_rate;valtype=uint32"
406
407#define AUDIO_OUTPUT_SAMPLING_RATE_CUR_QUERY ".../output/sampling_rate;attr=cur"
408#define AUDIO_OUTPUT_SAMPLING_RATE_CUR_VALUE ".../output/sampling_rate;valtype=uint32"
409
410#define AUDIO_OUTPUT_NUM_CHANNELS_CUR_QUERY ".../num_channels;attr=cur"
411#define AUDIO_OUTPUT_NUM_CHANNELS_CUR_VALUE ".../num_channels;valtype=uint32"
412
413#define AUDIO_OUTPUT_BITS_PER_SAMPLE_CUR_QUERY ".../bits_per_sample;attr=cur"
414#define AUDIO_OUTPUT_BITS_PER_SAMPLE_CUR_VALUE ".../bits_per_sample;valtype=uint32"
415
416#define VIDEO_AVC_OUTPUT_SPS_CUR_QUERY ".../output/sps;attr=cur"
417#define VIDEO_AVC_OUTPUT_SPS_CUR_VALUE ".../output/sps;valtype=key_specific_value"
418
419#define VIDEO_AVC_OUTPUT_PPS_CUR_QUERY ".../output/pps;attr=cur"
420#define VIDEO_AVC_OUTPUT_PPS_CUR_VALUE ".../output/pps;valtype=key_specific_value"
421#define TIMED_TEXT_OUTPUT_CONFIG_INFO_CUR_QUERY ".../output/timedtext;attr=cur"
422#define TIMED_TEXT_OUTPUT_CONFIG_INFO_CUR_VALUE ".../output/timedtext;valtype=key_specific_value"
423
424// key for format type for any type of media
425#define PVMF_FORMAT_TYPE_VALUE_KEY "x-pvmf/media/format-type;valtype=char*"
426
427// key for audio decoder format
428#define PVMF_AUDIO_DEC_FORMAT_TYPE_VALUE_KEY "x-pvmf/audio/decoder/format-type;valtype=char*"
429
430// key for video decoder format
431#define PVMF_VIDEO_DEC_FORMAT_TYPE_VALUE_KEY "x-pvmf/video/decoder/format-type;valtype=char*"
432
433// Keys for format specific info for any type of media
434#define PVMF_FORMAT_SPECIFIC_INFO_KEY "x-pvmf/media/format_specific_info;valtype=key_specific_value"
435
436// Keys for format specific info for video media type
437#define PVMF_FORMAT_SPECIFIC_INFO_KEY_YUV "x-pvmf/media/format_specific_info_yuv;valtype=key_specific_value"
438
439// Keys for format specific info for audio media type
440#define PVMF_FORMAT_SPECIFIC_INFO_KEY_PCM "x-pvmf/media/format_specific_info_pcm;valtype=key_specific_value"
441
442// Keys for buffer allocator
443#define PVMF_BUFFER_ALLOCATOR_KEY "x-pvmf/media/buffer_allocator;valtype=key_specific_value"
444
445// Keys for format specific info plus first media sample for any type of media
446#define PVMF_FORMAT_SPECIFIC_INFO_PLUS_FIRST_SAMPLE_KEY "x-pvmf/media/format_specific_info_plus_first_sample;valtype=uint8*"
447
448#define PVMF_CLIENT_PLAYBACK_CLOCK_KEY "x-pvmf/player-clock-pointer;valtype=key_specific_value"
449
450#define PVMF_AUTHORING_CLOCK_KEY "x-pvmf/authoring-clock-pointer;valtype=key_specific_value"
451
452// Keys for format bitrate info for any type of media
453#define PVMF_BITRATE_VALUE_KEY "x-pvmf/media/bit-rate;valtype=uint32"
454
455// Keys for format framerate info for any type of media
456#define PVMF_FRAMERATE_VALUE_KEY "x-pvmf/media/frame-rate;valtype=uint32"
457
458// Key for signalling max number of outstanding media msgs
459#define PVMF_DATAPATH_PORT_MAX_NUM_MEDIA_MSGS_KEY "x-pvmf/datapath/port/max-num-media-msgs;valtype=uint32"
460
461// Key for media input node to provide its cap-config interface to media input compnent
462#define PVMF_MEDIA_INPUT_NODE_CAP_CONFIG_INTERFACE_KEY "x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value"
463
464// Key for media output node to provide its cap-config interface to media output compnent
465#define PVMF_MEDIA_OUTPUT_NODE_CAP_CONFIG_INTERFACE_KEY "x-pvmf/media-output-node/cap-config-interface;valtype=key_specific_value"
466
467// Keys for media output components -- Audio
468//
469//audio format strings as defined in pvmf_format_type.h
470#define MOUT_AUDIO_FORMAT_KEY "x-pvmf/audio/render/media_format;valtype=char*"
471//audio sampling rate in Hz
472#define MOUT_AUDIO_SAMPLING_RATE_KEY "x-pvmf/audio/render/sampling_rate;valtype=uint32"
473//audio number of channels (1 for mono, 2 for stereo)
474#define MOUT_AUDIO_NUM_CHANNELS_KEY "x-pvmf/audio/render/channels;valtype=uint32"
475
476// Key to configure the Number of frames required in a Media msg
477#define PVMF_NUM_DECODED_FRAMES_CONFIG_KEY "x-pvmf/audio/render/num_decoded_frames;valtype=uint32"
478
479// Keys for media output components -- Video
480//
481//video format strings as defined in pvmf_format_type.h
482#define MOUT_VIDEO_FORMAT_KEY "x-pvmf/video/render/media_format;valtype=char*"
483// video sub-format (e.g. YUV420-planar etc.)
484#define MOUT_VIDEO_SUBFORMAT_KEY "x-pvmf/video/render/media_subformat;valtype=char*"
485
486//video dimensions in pixels
487#define MOUT_VIDEO_WIDTH_KEY "x-pvmf/video/render/width;valtype=uint32"
488#define MOUT_VIDEO_HEIGHT_KEY "x-pvmf/video/render/height;valtype=uint32"
489//video display dimensions in pixels.
490#define MOUT_VIDEO_DISPLAY_WIDTH_KEY "x-pvmf/video/render/display_width;valtype=uint32"
491#define MOUT_VIDEO_DISPLAY_HEIGHT_KEY "x-pvmf/video/render/display_height;valtype=uint32"
492#define MOUT_VIDEO_OUTPUT_WIDTH_KEY "x-pvmf/video/render/output_width;valtype=uint32"
493#define MOUT_VIDEO_OUTPUT_HEIGHT_KEY "x-pvmf/video/render/output_height;valtype=uint32"
494#define MOUT_VIDEO_DISPLAY_ROTATION_KEY "x-pvmf/video/render/display_rotation;valtype=uint32"
495#define MOUT_VIDEO_DISPLAY_BITMAP_KEY "x-pvmf/video/render/display_bitmap;valtype=uint32"
496//video vol header info
497#define MOUT_VIDEO_VOL_HEADER_KEY "x-pvmf/video/vol_header;valtype=uint8*"
498
499
500// Keys for media output components -- Text
501//
502//text format strings as defined in pvmf_format_type.h
503#define MOUT_TEXT_FORMAT_KEY "x-pvmf/text/render/media_format;valtype=char*"
504
505// Key for media output rate
506#define MOUT_MEDIAXFER_OUTPUT_RATE "x-pvmf/mediaxfer/output/rate;type=rel;valtype=int32"
507
508
509// Keys for media input components -- Audio
510//
511//audio sampling rate in Hz
512#define MIN_AUDIO_SAMPLING_RATE_KEY "x-pvmf/encoder/audio/sampling_rate;valtype=uint32"
513//audio number of channels (1 for mono, 2 for stereo)
514#define MIN_AUDIO_NUM_CHANNELS_KEY "x-pvmf/encoder/audio/channels;valtype=uint32"
515
516// Keys for media input components -- Video
517//
518// Keys for media output components -- Text
519//
520#define TEXT_INPUT_WIDTH_CUR_QUERY ".../input/width;attr=cur"
521#define TEXT_INPUT_WIDTH_CUR_VALUE ".../input/width;valtype=uint32"
522#define TEXT_INPUT_HEIGHT_CUR_QUERY ".../input/height;attr=cur"
523#define TEXT_INPUT_HEIGHT_CUR_VALUE ".../input/height;valtype=uint32"
524
525//AVC Encoder
526#define PVMF_AVC_ENCODER_ENCODINGMODE_KEY   "x-pvmf/encoder/video/encoding_mode;valtype=uint32"
527
528#define INPUT_TIMESCALE_CUR_QUERY ".../input/timescale;attr=cur"
529#define INPUT_TIMESCALE_CUR_VALUE ".../input/timescale;valtype=uint32"
530
531
532
533#endif // PVMI_KVP_H_INCLUDED
534
535
536
537
538