| /* |
| * 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 M4MCS_InternalFunctions.h |
| * @brief This file contains all functions declarations internal |
| * to the MCS. |
| ************************************************************************* |
| */ |
| |
| #ifndef __M4MCS_INTERNALFUNCTIONS_H__ |
| #define __M4MCS_INTERNALFUNCTIONS_H__ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "M4VPP_API.h" |
| #include "M4ENCODER_common.h" |
| |
| /** |
| ************************************************************************** |
| * M4OSA_ERR M4MCS_intApplyVPP( M4VPP_Context pContext, |
| * M4VIFI_ImagePlane* pPlaneIn, |
| * M4VIFI_ImagePlane* pPlaneOut) |
| * @brief Do the video rendering and the resize (if needed) |
| * @note It is called by the video encoder |
| * @param pContext (IN) VPP context, which actually is the MCS |
| * internal context in our case |
| * @param pPlaneIn (IN) Contains the image |
| * @param pPlaneOut (IN/OUT) Pointer to an array of 3 planes that will |
| * contain the output YUV420 image |
| * @return M4NO_ERROR: No error |
| * @return ERR_MCS_VIDEO_DECODE_ERROR: the video decoding failed |
| * @return ERR_MCS_RESIZE_ERROR: the resizing failed |
| * @return Any error returned by an underlaying module |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_intApplyVPP(M4VPP_Context pContext, M4VIFI_ImagePlane* pPlaneIn, |
| M4VIFI_ImagePlane* pPlaneOut); |
| |
| /** |
| ************************************************************************** |
| * M4OSA_ERR M4MCS_SubscribeMediaAndCodec(M4MCS_Context pContext); |
| * @brief This function registers the reader, decoders, writers and encoders |
| * in the MCS. |
| * @note |
| * @param pContext: (IN) Execution context. |
| * @return M4NO_ERROR: there is no error |
| * @return M4ERR_PARAMETER pContext is NULL |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_subscribeMediaAndCodec(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************** |
| * @brief Clear encoders, decoders, reader and writers interfaces tables |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: The context is null |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_clearInterfaceTables(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************** |
| * M4OSA_ERR M4MCS_registerWriter(M4MCS_Context pContext, |
| * M4VIDEOEDITING_FileType MediaType, |
| * M4WRITER_GlobalInterface *pWtrGlobalInterface, |
| * M4WRITER_DataInterface *pWtrDataInterface) |
| * @brief This function will register a specific file format writer. |
| * @note According to the Mediatype, this function will store in the internal |
| * context the writer context. |
| * @param pContext: (IN) Execution context. |
| * @return M4NO_ERROR: there is no error |
| * @return M4ERR_PARAMETER pContext,pWtrGlobalInterface or pWtrDataInterface |
| * is M4OSA_NULL (debug only), or invalid MediaType |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_registerWriter( |
| M4MCS_Context pContext, |
| M4WRITER_OutputFileType MediaType, |
| M4WRITER_GlobalInterface* pWtrGlobalInterface, |
| M4WRITER_DataInterface* pWtrDataInterface); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_registerEncoder( M4MCS_Context pContext, |
| * M4VIDEOEDITING_VideoFormat mediaType, |
| * M4ENCODER_GlobalInterface *pEncGlobalInterface) |
| * @brief This function will register a specific video encoder. |
| * @note According to the Mediatype, this function will store in the internal |
| * context the encoder context. |
| * @param pContext: (IN) Execution context. |
| * @return M4NO_ERROR: there is no error |
| * @return M4ERR_PARAMETER pContext or pEncGlobalInterface is |
| * M4OSA_NULL (debug only), or invalid MediaType |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_registerVideoEncoder( |
| M4MCS_Context pContext, |
| M4ENCODER_Format MediaType, |
| M4ENCODER_GlobalInterface *pEncGlobalInterface); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_registerAudioEncoder( M4MCS_Context pContext, |
| * M4ENCODER_AudioFormat mediaType, |
| * M4ENCODER_AudioGlobalInterface *pEncGlobalInterface) |
| * @brief This function will register a specific audio encoder. |
| * @note According to the Mediatype, this function will store in the internal |
| * context the encoder context. |
| * @param pContext: (IN) Execution context. |
| * @param mediaType: (IN) The media type. |
| * @param pEncGlobalInterface: (OUT) The encoder interface functions. |
| * @return M4NO_ERROR: there is no error |
| * @return M4ERR_PARAMETER: pContext or pEncGlobalInterface is |
| * M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_registerAudioEncoder( |
| M4MCS_Context pContext, |
| M4ENCODER_AudioFormat MediaType, |
| M4ENCODER_AudioGlobalInterface *pEncGlobalInterface); |
| |
| /** |
| ************************************************************************** |
| * @brief Register reader. |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_registerReader( M4MCS_Context pContext, |
| M4READER_MediaType mediaType, |
| M4READER_GlobalInterface *pRdrGlobalInterface, |
| M4READER_DataInterface *pRdrDataInterface); |
| |
| /** |
| ************************************************************************** |
| * @brief Register video decoder |
| * @param pContext (IN/OUT) MCS context. |
| * @param decoderType (IN) Decoder type |
| * @param pDecoderInterface (IN) Decoder interface. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only),or the |
| * decoder type is invalid |
| ************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_registerVideoDecoder( M4MCS_Context pContext, |
| M4DECODER_VideoType decoderType, |
| M4DECODER_VideoInterface *pDecoderInterface); |
| |
| /** |
| ************************************************************************ |
| * @brief Register audio decoder |
| * @note This function is used internaly by the MCS to register Core audio decoders, |
| * @param context (IN/OUT) MCS context. |
| * @param decoderType (IN) Audio decoder type |
| * @param pDecoderInterface (IN) Audio decoder interface. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null, or the decoder type is invalid(in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_registerAudioDecoder(M4MCS_Context pContext, M4AD_Type decoderType, |
| M4AD_Interface *pDecoderInterface); |
| |
| /** |
| ************************************************************************ |
| * @brief Unregister writer |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_unRegisterAllWriters(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************ |
| * @brief Unregister the encoders |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_unRegisterAllEncoders(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************ |
| * @brief Unregister reader |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_unRegisterAllReaders(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************ |
| * @brief Unregister the decoders |
| * @param pContext (IN/OUT) MCS context. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_unRegisterAllDecoders(M4MCS_Context pContext); |
| |
| /** |
| ************************************************************************ |
| * @brief Set current writer |
| * @param pContext (IN/OUT) MCS context. |
| * @param mediaType (IN) Media type. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| * @return M4WAR_MCS_MEDIATYPE_NOT_SUPPORTED: Media type not supported |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentWriter( M4MCS_Context pContext, |
| M4VIDEOEDITING_FileType mediaType); |
| |
| /** |
| ************************************************************************ |
| * @brief Set a video encoder |
| * @param pContext (IN/OUT) MCS context. |
| * @param MediaType (IN) Encoder type |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| * @return M4WAR_MCS_MEDIATYPE_NOT_SUPPORTED: Media type not supported |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentVideoEncoder( M4MCS_Context pContext, |
| M4VIDEOEDITING_VideoFormat mediaType); |
| |
| /** |
| ************************************************************************ |
| * @brief Set an audio encoder |
| * @param context (IN/OUT) MCS context. |
| * @param MediaType (IN) Encoder type |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentAudioEncoder( M4MCS_Context pContext, |
| M4VIDEOEDITING_AudioFormat mediaType); |
| |
| /** |
| ************************************************************************ |
| * @brief Set current reader |
| * @param pContext (IN/OUT) MCS context. |
| * @param mediaType (IN) Media type. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| * @return M4WAR_MCS_MEDIATYPE_NOT_SUPPORTED: Media type not supported |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentReader( M4MCS_Context pContext, |
| M4VIDEOEDITING_FileType mediaType); |
| |
| /** |
| ************************************************************************ |
| * @brief Set a video decoder |
| * @param pContext (IN/OUT) MCS context. |
| * @param decoderType (IN) Decoder type |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| * @return M4WAR_MCS_MEDIATYPE_NOT_SUPPORTED: Media type not supported |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentVideoDecoder( M4MCS_Context pContext, |
| M4_StreamType mediaType); |
| |
| /** |
| ************************************************************************ |
| * @brief Set an audio decoder |
| * @param context (IN/OUT) MCS context. |
| * @param decoderType (IN) Decoder type |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: A parameter is null (in DEBUG only) |
| ************************************************************************ |
| */ |
| M4OSA_ERR M4MCS_setCurrentAudioDecoder(M4MCS_Context pContext, M4_StreamType mediaType); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_intCheckAudioEffects(M4MCS_InternalContext* pContext) |
| * @brief Check if an effect has to be applied currently |
| * @note It is called by the stepEncoding function |
| * @param pContext (IN) MCS internal context |
| * @return M4NO_ERROR: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_intCheckAudioEffects(M4MCS_InternalContext* pC); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_editAudioEffectFct_FadeIn() |
| * @brief Apply audio effect FadeIn to pPCMdata |
| * @param pC (IN/OUT) Internal edit context |
| * @param pPCMdata (IN/OUT) Input and Output PCM audio data |
| * @param uiPCMsize (IN) Size of pPCMdata |
| * @param pProgress (IN) Effect progress |
| * @return M4NO_ERROR: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_editAudioEffectFct_FadeIn( M4OSA_Void *pFunctionContext, |
| M4OSA_Int16 *pPCMdata, |
| M4OSA_UInt32 uiPCMsize, |
| M4MCS_ExternalProgress *pProgress); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_editAudioEffectFct_FadeIn() |
| * @brief Apply audio effect FadeIn to pPCMdata |
| * @param pC (IN/OUT) Internal edit context |
| * @param pPCMdata (IN/OUT) Input and Output PCM audio data |
| * @param uiPCMsize (IN) Size of pPCMdata |
| * @param pProgress (IN) Effect progress |
| * @return M4NO_ERROR: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_editAudioEffectFct_FadeOut( M4OSA_Void *pFunctionContext, |
| M4OSA_Int16 *pPCMdata, |
| M4OSA_UInt32 uiPCMsize, |
| M4MCS_ExternalProgress *pProgress); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __M4MCS_INTERNALFUNCTIONS_H__ */ |
| |