diff options
Diffstat (limited to 'libvideoeditor/vss/common/inc/M4DECODER_Common.h')
-rwxr-xr-x | libvideoeditor/vss/common/inc/M4DECODER_Common.h | 389 |
1 files changed, 0 insertions, 389 deletions
diff --git a/libvideoeditor/vss/common/inc/M4DECODER_Common.h b/libvideoeditor/vss/common/inc/M4DECODER_Common.h deleted file mode 100755 index 93e3062..0000000 --- a/libvideoeditor/vss/common/inc/M4DECODER_Common.h +++ /dev/null @@ -1,389 +0,0 @@ -/* - * 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 M4DECODER_Common.h - * @brief Shell Decoder common interface declaration - * @note This file declares the common interfaces that decoder shells must implement - * - ************************************************************************ -*/ -#ifndef __M4DECODER_COMMON_H__ -#define __M4DECODER_COMMON_H__ - -#include "M4OSA_Types.h" -#include "M4OSA_Error.h" -#include "M4OSA_OptionID.h" -#include "M4OSA_CoreID.h" - -#include "M4READER_Common.h" -#include "M4VIFI_FiltersAPI.h" - -#include "M4_Utils.h" - -/* ----- Errors and Warnings ----- */ - -/** - * Warning: there is no new decoded frame to render since the last rendering - */ -#define M4WAR_VIDEORENDERER_NO_NEW_FRAME M4OSA_ERR_CREATE(M4_WAR, M4DECODER_COMMON, 0x0001) -/** - * Warning: the deblocking filter is not implemented - */ -#define M4WAR_DEBLOCKING_FILTER_NOT_IMPLEMENTED M4OSA_ERR_CREATE(M4_WAR, M4DECODER_COMMON,\ - 0x000002) - - -/* Error: Stream H263 profiles (other than 0) are not supported */ -#define M4ERR_DECODER_H263_PROFILE_NOT_SUPPORTED M4OSA_ERR_CREATE(M4_ERR,\ - M4DECODER_MPEG4, 0x0001) -/* Error: Stream H263 not baseline not supported (Supported sizes are CIF, QCIF or SQCIF) */ -#define M4ERR_DECODER_H263_NOT_BASELINE M4OSA_ERR_CREATE(M4_ERR,\ - M4DECODER_MPEG4, 0x0002) - -/** - ************************************************************************ - * enum M4DECODER_AVCProfileLevel - * @brief This enum defines the AVC decoder profile and level for the current instance - * @note This options can be read from decoder via M4DECODER_getOption_fct - ************************************************************************ -*/ -typedef enum -{ - M4DECODER_AVC_kProfile_0_Level_1 = 0, - M4DECODER_AVC_kProfile_0_Level_1b, - M4DECODER_AVC_kProfile_0_Level_1_1, - M4DECODER_AVC_kProfile_0_Level_1_2, - M4DECODER_AVC_kProfile_0_Level_1_3, - M4DECODER_AVC_kProfile_0_Level_2, - M4DECODER_AVC_kProfile_0_Level_2_1, - M4DECODER_AVC_kProfile_0_Level_2_2, - M4DECODER_AVC_kProfile_0_Level_3, - M4DECODER_AVC_kProfile_0_Level_3_1, - M4DECODER_AVC_kProfile_0_Level_3_2, - M4DECODER_AVC_kProfile_0_Level_4, - M4DECODER_AVC_kProfile_0_Level_4_1, - M4DECODER_AVC_kProfile_0_Level_4_2, - M4DECODER_AVC_kProfile_0_Level_5, - M4DECODER_AVC_kProfile_0_Level_5_1, - M4DECODER_AVC_kProfile_and_Level_Out_Of_Range = 255 -} M4DECODER_AVCProfileLevel; - -/** - ************************************************************************ - * enum M4DECODER_OptionID - * @brief This enum defines the decoder options - * @note These options can be read from or written to a decoder via M4DECODER_getOption_fct - ************************************************************************ -*/ -typedef enum -{ - /** - Get the version of the core decoder - */ - M4DECODER_kOptionID_Version = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x01), - /** - Get the size of the currently decoded video - */ - M4DECODER_kOptionID_VideoSize = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x02), - /** - Set the conversion filter to use at rendering - */ - M4DECODER_kOptionID_OutputFilter = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x03), - /** - Activate the Deblocking filter - */ - M4DECODER_kOptionID_DeblockingFilter = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x04), - /** - Get nex rendered frame CTS - */ - M4DECODER_kOptionID_NextRenderedFrameCTS = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON,\ - 0x05), - - /** - Set the YUV data to the dummy video decoder - */ - M4DECODER_kOptionID_DecYuvData = - M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x06), - /** - Set the YUV data with color effect applied to the dummy video decoder - */ - M4DECODER_kOptionID_YuvWithEffectNonContiguous = - M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x07), - - M4DECODER_kOptionID_YuvWithEffectContiguous = - M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x08), - - M4DECODER_kOptionID_EnableYuvWithEffect = - M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x09), - - /** - * Get the supported video decoders and capabilities */ - M4DECODER_kOptionID_VideoDecodersAndCapabilities = - M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_COMMON, 0x10), - - /* common to MPEG4 decoders */ - /** - * Get the DecoderConfigInfo */ - M4DECODER_MPEG4_kOptionID_DecoderConfigInfo = M4OSA_OPTION_ID_CREATE(M4_READ,\ - M4DECODER_MPEG4, 0x01), - - /* last decoded cts */ - M4DECODER_kOptionID_AVCLastDecodedFrameCTS = M4OSA_OPTION_ID_CREATE(M4_READ, M4DECODER_AVC,\ - 0x01) -/* Last decoded cts */ - -} M4DECODER_OptionID; - - -/** - ************************************************************************ - * struct M4DECODER_MPEG4_DecoderConfigInfo - * @brief Contains info read from the MPEG-4 VideoObjectLayer. - ************************************************************************ -*/ -typedef struct -{ - M4OSA_UInt8 uiProfile; /**< profile and level as defined in the Visual - Object Sequence header, if present */ - M4OSA_UInt32 uiTimeScale; /**< time scale as parsed in VOL header */ - M4OSA_UInt8 uiUseOfResynchMarker; /**< Usage of resynchronization marker */ - M4OSA_Bool bDataPartition; /**< If 1 data partitioning is used. */ - M4OSA_Bool bUseOfRVLC; /**< Usage of RVLC for the stream */ - -} M4DECODER_MPEG4_DecoderConfigInfo; - - -/** - *********************************************************************** - * structure M4DECODER_VideoSize - * @brief This structure defines the video size (width and height) - * @note This structure is used to retrieve via the M4DECODER_getOption_fct - * function the size of the current decoded video - ************************************************************************ -*/ -typedef struct _M4DECODER_VideoSize -{ - M4OSA_UInt32 m_uiWidth; /**< video width in pixels */ - M4OSA_UInt32 m_uiHeight; /**< video height in pixels */ - -} M4DECODER_VideoSize; - -/** - ************************************************************************ - * structure M4DECODER_OutputFilter - * @brief This structure defines the conversion filter - * @note This structure is used to retrieve the filter function - * pointer and its user data via the function - * M4DECODER_getOption_fct with the option - * M4DECODER_kOptionID_OutputFilter - ************************************************************************ -*/ -typedef struct _M4DECODER_OutputFilter -{ - M4OSA_Void *m_pFilterFunction; /**< pointer to the filter function */ - M4OSA_Void *m_pFilterUserData; /**< user data of the filter */ - -} M4DECODER_OutputFilter; - -/** - ************************************************************************ - * enum M4DECODER_VideoType - * @brief This enum defines the video types used to create decoders - * @note This enum is used internally by the VPS to identify a currently supported - * video decoder interface. Each decoder is registered with one of this type associated. - * When a decoder instance is needed, this type is used to identify and - * and retrieve its interface. - ************************************************************************ -*/ -typedef enum -{ - M4DECODER_kVideoTypeMPEG4 = 0, - M4DECODER_kVideoTypeMJPEG, - M4DECODER_kVideoTypeAVC, - M4DECODER_kVideoTypeWMV, - M4DECODER_kVideoTypeREAL, - M4DECODER_kVideoTypeYUV420P, - - M4DECODER_kVideoType_NB /* number of decoders, keep it as last enum entry */ - -} M4DECODER_VideoType ; - -typedef struct { - M4OSA_UInt32 mProfile; - M4OSA_UInt32 mLevel; -} VideoProfileLevel; - -typedef struct { - VideoProfileLevel *profileLevel; - M4OSA_UInt32 profileNumber; -} VideoComponentCapabilities; - -typedef struct { - M4_StreamType codec; - VideoComponentCapabilities *component; - M4OSA_UInt32 componentNumber; -} VideoDecoder; - -typedef struct { - VideoDecoder *decoder; - M4OSA_UInt32 decoderNumber; -} M4DECODER_VideoDecoders; -/** - ************************************************************************ - * @brief creates an instance of the decoder - * @note allocates the context - * - * @param pContext: (OUT) Context of the decoder - * @param pStreamHandler: (IN) Pointer to a video stream description - * @param pGlobalInterface: (IN) Pointer to the M4READER_GlobalInterface structure that must - * be used by the decoder to read data from the stream - * @param pDataInterface: (IN) Pointer to the M4READER_DataInterface structure that must - * be used by the decoder to read data from the stream - * @param pAccessUnit (IN) Pointer to an access unit (allocated by the caller) - * where the decoded data are stored - * - * @return M4NO_ERROR there is no error - * @return M4ERR_STATE State automaton is not applied - * @return M4ERR_ALLOC a memory allocation has failed - * @return M4ERR_PARAMETER at least one parameter is not properly set (in DEBUG only) - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_create_fct) (M4OSA_Context *pContext, - M4_StreamHandler *pStreamHandler, - M4READER_GlobalInterface *pGlobalInterface, - M4READER_DataInterface *pDataInterface, - M4_AccessUnit *pAccessUnit, - M4OSA_Void* pUserData); - -/** - ************************************************************************ - * @brief destroy the instance of the decoder - * @note after this call the context is invalid - * - * @param context: (IN) Context of the decoder - * - * @return M4NO_ERROR There is no error - * @return M4ERR_PARAMETER The context is invalid (in DEBUG only) - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_destroy_fct) (M4OSA_Context context); - -/** - ************************************************************************ - * @brief get an option value from the decoder - * @note this function follows the set/get option mechanism described in OSAL 3.0 - * it allows the caller to retrieve a property value: - * -the version number of the decoder - * -the size (widthxheight) of the image - * - * @param context: (IN) Context of the decoder - * @param optionId: (IN) indicates the option to set - * @param pValue: (IN/OUT) pointer to structure or value (allocated by user) where - * option is stored - * @return M4NO_ERROR there is no error - * @return M4ERR_PARAMETER The context is invalid (in DEBUG only) - * @return M4ERR_BAD_OPTION_ID when the option ID is not a valid one - * @return M4ERR_STATE State automaton is not applied - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_getOption_fct)(M4OSA_Context context, M4OSA_OptionID optionId, - M4OSA_DataOption pValue); - -/** - ************************************************************************ - * @brief set an option value of the decoder - * @note this function follows the set/get option mechanism described in OSAL 3.0 - * it allows the caller to set a property value: - * -the conversion filter to use at rendering - * - * @param context: (IN) Context of the decoder - * @param optionId: (IN) Identifier indicating the option to set - * @param pValue: (IN) Pointer to structure or value (allocated by user) - * where option is stored - * @return M4NO_ERROR There is no error - * @return M4ERR_BAD_OPTION_ID The option ID is not a valid one - * @return M4ERR_STATE State automaton is not applied - * @return M4ERR_PARAMETER The option parameter is invalid - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_setOption_fct)(M4OSA_Context context, M4OSA_OptionID optionId, - M4OSA_DataOption pValue); - -/** - ************************************************************************ - * @brief Decode Access Units up to a target time - * @note Parse and decode the stream until it is possible to output a decoded image for which - * the composition time is equal or greater to the passed targeted time - * The data are read from the reader data interface - * - * @param context: (IN) Context of the decoder - * @param pTime: (IN/OUT) IN: Time to decode up to (in milli secondes) - * OUT:Time of the last decoded frame (in ms) - * @param bJump: (IN) 0 if no jump occured just before this call - * 1 if a a jump has just been made - * @param tolerance: (IN) We may decode an earlier frame within the tolerance. - * The time difference is specified in milliseconds. - * - * @return M4NO_ERROR there is no error - * @return M4ERR_PARAMETER at least one parameter is not properly set - * @return M4WAR_NO_MORE_AU there is no more access unit to decode (end of stream) - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_decode_fct) (M4OSA_Context context, M4_MediaTime* pTime, - M4OSA_Bool bJump, M4OSA_UInt32 tolerance); - -/** - ************************************************************************ - * @brief Renders the video at the specified time. - * @note - * @param context: (IN) Context of the decoder - * @param pTime: (IN/OUT) IN: Time to render to (in milli secondes) - * OUT:Time of the actually rendered frame (in ms) - * @param pOutputPlane:(OUT) Output plane filled with decoded data (converted) - * @param bForceRender:(IN) 1 if the image must be rendered even it has already been - * 0 if not (in which case the function can return - * M4WAR_VIDEORENDERER_NO_NEW_FRAME) - * @return M4NO_ERROR There is no error - * @return M4ERR_PARAMETER At least one parameter is not properly set - * @return M4ERR_STATE State automaton is not applied - * @return M4ERR_ALLOC There is no more available memory - * @return M4WAR_VIDEORENDERER_NO_NEW_FRAME If the frame to render has already been rendered - ************************************************************************ -*/ -typedef M4OSA_ERR (M4DECODER_render_fct) (M4OSA_Context context, M4_MediaTime* pTime, - M4VIFI_ImagePlane* pOutputPlane, - M4OSA_Bool bForceRender); - -/** - ************************************************************************ - * structure M4DECODER_VideoInterface - * @brief This structure defines the generic video decoder interface - * @note This structure stores the pointers to functions of one video decoder type. - * The decoder type is one of the M4DECODER_VideoType - ************************************************************************ -*/ -typedef struct _M4DECODER_VideoInterface -{ - M4DECODER_create_fct* m_pFctCreate; - M4DECODER_destroy_fct* m_pFctDestroy; - M4DECODER_getOption_fct* m_pFctGetOption; - M4DECODER_setOption_fct* m_pFctSetOption; - M4DECODER_decode_fct* m_pFctDecode; - M4DECODER_render_fct* m_pFctRender; -} M4DECODER_VideoInterface; - -#endif /*__M4DECODER_COMMON_H__*/ |