117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*
217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** Copyright 2003-2010, VisualOn, Inc.
317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong **
417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** Licensed under the Apache License, Version 2.0 (the "License");
517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** you may not use this file except in compliance with the License.
617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** You may obtain a copy of the License at
717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong **
817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong **     http://www.apache.org/licenses/LICENSE-2.0
917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong **
1017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** Unless required by applicable law or agreed to in writing, software
1117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** distributed under the License is distributed on an "AS IS" BASIS,
1217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** See the License for the specific language governing permissions and
1417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong ** limitations under the License.
1517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong */
1617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*******************************************************************************
1717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	File:		voIndex.h
1817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
1917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	Content:	module and ID definition
2017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
2117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong*******************************************************************************/
2217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
2317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#ifndef __voIndex_H__
2417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define __voIndex_H__
2517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
2617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#ifdef __cplusplus
2717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongextern "C" {
2817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#endif /* __cplusplus */
2917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#include "voType.h"
3117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/* Define the module ID */
3317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_SOURCE_ID(id, name) \
3417299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_SRC_##name = _VO_INDEX_SOURCE | id,
3517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
3617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_CODEC_ID(id, name) \
3717299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_DEC_##name = _VO_INDEX_DEC | id, \
3817299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_ENC_##name = _VO_INDEX_ENC | id,
3917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_EFFECT_ID(id, name) \
4117299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_EFT_##name = _VO_INDEX_EFFECT | id,
4217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_SINK_ID(id, name) \
4417299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_SNK_##name = _VO_INDEX_SINK | id,
4517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_FILTER_ID(id, name) \
4717299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_FLT_##name = _VO_INDEX_FILTER | id,
4817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
4917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_OMX_ID(id, name) \
5017299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_OMX_##name = _VO_INDEX_OMX | id,
5117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
5217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _MAKE_MFW_ID(id, name) \
5317299ab50ceb70d904e610e3b2d7fb2361a11e03James DongVO_INDEX_MFW_##name = _VO_INDEX_MFW | id,
5417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
5517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongenum
5617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong{
5717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_SOURCE		= 0x01000000,
5817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_DEC			= 0x02000000,
5917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_ENC			= 0x03000000,
6017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_EFFECT		= 0x04000000,
6117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_SINK			= 0x05000000,
6217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_FILTER		= 0x06000000,
6317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_OMX			= 0x07000000,
6417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_VO_INDEX_MFW			= 0x08000000,
6517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
6617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define file parser modules
6717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x010000, MP4)
6817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x020000, AVI)
6917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x030000, ASF)
7017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x040000, REAL)
7117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x050000, AUDIO)
7217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x060000, FLASH)
7317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x070000, OGG)
7417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x080000, MKV)
7517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
7617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define network source modules
7717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x110000, RTSP)
7817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x120000, HTTP)
7917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
8017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define CMMB source modules
8117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x200000, CMMB)
8217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x210000, CMMB_INNO)
8317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x220000, CMMB_TELE)
8417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x230000, CMMB_SIANO)
8517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
8617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define DVBT source modules
8717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x300000, DVBT)
8817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x310000, DVBT_DIBCOM)
8917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
9017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define other source modules
9117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SOURCE_ID (0x400000, ID3)
9217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
9317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define video codec modules
9417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x010000, H264)
9517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x020000, MPEG4)
9617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x030000, H263)
9717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x040000, S263)
9817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x050000, RV)
9917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x060000, WMV)
10017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x070000, DIVX3)
10117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x080000, MJPEG)
10217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x090000, MPEG2)
10317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x0A0000, VP6)
10417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
10517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define audio codec modules
10617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x210000, AAC)
10717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x220000, MP3)
10817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x230000, WMA)
10917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x240000, RA)
11017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x250000, AMRNB)
11117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x260000, AMRWB)
11217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x270000, AMRWBP)
11317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x280000, QCELP)
11417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x290000, EVRC)
11517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2A0000, ADPCM)
11617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2B0000, MIDI)
11717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2C0000, AC3)
11817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2D0000, FLAC)
11917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2E0000, DRA)
12017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x2F0000, OGG)
12117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x300000, G729)
12217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
12317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define image codec modules
12417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x410000, JPEG)
12517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x420000, GIF)
12617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x430000, PNG)
12717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_CODEC_ID (0x440000, TIF)
12817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
12917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define effect modules
13017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_EFFECT_ID (0x010000, EQ)
13117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
13217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define sink modules
13317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x010000, VIDEO)
13417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x020000, AUDIO)
13517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x030000, CCRRR)
13617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x040000, CCRRV)
13717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
13817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x110000, MP4)
13917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x120000, AVI)
14017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_SINK_ID (0x130000, AFW)
14117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	// define media frame module ID
14317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_MFW_ID (0x010000, VOMMPLAY)
14417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_MFW_ID (0x020000, VOMMREC)
14517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong	_MAKE_MFW_ID (0x030000, VOME)
14617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong};
14717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
14917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/* define the error ID */
15017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_NONE						0x00000000
15117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_FINISH					0x00000001
15217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_BASE						0X80000000
15317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_FAILED					0x80000001
15417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_OUTOF_MEMORY				0x80000002
15517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_NOT_IMPLEMENT			0x80000003
15617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_INVALID_ARG				0x80000004
15717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_INPUT_BUFFER_SMALL		0x80000005
15817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_OUTPUT_BUFFER_SMALL		0x80000006
15917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_WRONG_STATUS				0x80000007
16017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_WRONG_PARAM_ID			0x80000008
16117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_LICENSE_ERROR			0x80000009
16217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
16317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/* xxx is the module ID
16417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_FAILED					0x8xxx0001
16517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_OUTOF_MEMORY				0x8xxx0002
16617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_NOT_IMPLEMENT			0x8xxx0003
16717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_INVALID_ARG				0x8xxx0004
16817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_INPUT_BUFFER_SMALL		0x8xxx0005
16917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_OUTPUT_BUFFER_SMALL		0x8xxx0006
17017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_WRONG_STATUS				0x8xxx0007
17117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_WRONG_PARAM_ID			0x8xxx0008
17217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_LICENSE_ERROR			0x8xxx0009
17317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong// Module own error ID
17417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ERR_Module					0x8xxx0X00
17517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong*/
17617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
17717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_BASE				 0x40000000						/*!< The base of common param ID */
17817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_QUERYMEM			(VO_PID_COMMON_BASE | 0X0001)	/*!< Query the memory needed; Reserved. */
17917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_INPUTTYPE			(VO_PID_COMMON_BASE | 0X0002)	/*!< Set or get the input buffer type. VO_INPUT_TYPE */
18017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_HASRESOURCE		(VO_PID_COMMON_BASE | 0X0003)	/*!< Query it has resource to be used. VO_U32 *, 1 have, 0 No */
18117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_HEADDATA			(VO_PID_COMMON_BASE | 0X0004)	/*!< Decoder track header data. VO_CODECBUFFER * */
18217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define	VO_PID_COMMON_FLUSH				(VO_PID_COMMON_BASE | 0X0005)	/*!< Flush the codec buffer. VO_U32 *, 1 Flush, 0 No * */
18317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong/*
18517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong// Module Param ID
18617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define VO_ID_Mdoule					0x0xxx1000
18717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong*/
18817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
18917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#ifdef __cplusplus
19017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong}
19117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#endif /* __cplusplus */
19217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong
19317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#endif // __voIndex_H__
194