| /* |
| * 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. |
| */ |
| |
| #ifndef __M4XVSS_API_H__ |
| #define __M4XVSS_API_H__ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| /** |
| ****************************************************************************** |
| * @file M4xVSS_API.h |
| * @brief API of Video Studio 2.1 |
| * @note |
| ****************************************************************************** |
| */ |
| |
| #define M4VSS_SUPPORT_EXTENDED_FEATURES |
| |
| #include "M4VSS3GPP_API.h" |
| #include "M4VSS3GPP_Extended_API.h" |
| #include "M4DECODER_Common.h" |
| /* Errors codes */ |
| |
| /** |
| * End of analyzing => the user can call M4xVSS_PreviewStart or M4xVSS_SaveStart */ |
| #define M4VSS3GPP_WAR_ANALYZING_DONE M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0001) |
| |
| /** |
| * End of preview generating => the user can launch vps to see preview. Once preview is over, |
| the user must call M4xVSS_PreviewStop() to be able to save edited file, or to call another |
| M4xVSS_SendCommand() */ |
| #define M4VSS3GPP_WAR_PREVIEW_READY M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0002) |
| |
| /** |
| * End of saved file generation => the user must call M4xVSS_SaveStop() */ |
| #define M4VSS3GPP_WAR_SAVING_DONE M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0003) |
| |
| /** |
| * Transcoding is necessary to go further -> if the user does not want to continue, |
| he must call M4xVSS_sendCommand() */ |
| #define M4VSS3GPP_WAR_TRANSCODING_NECESSARY M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0004) |
| |
| /** |
| * In case of MMS, the output file size won't be reached */ |
| #define M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0005) |
| |
| /** |
| * JPG input file dimensions are too high */ |
| #define M4VSS3GPP_ERR_JPG_TOO_BIG M4OSA_ERR_CREATE( M4_ERR, M4VS, 0x0001) |
| |
| /** |
| * UTF Conversion, warning on the size of the temporary converted buffer*/ |
| #define M4xVSSWAR_BUFFER_OUT_TOO_SMALL M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0006) |
| |
| /** |
| * SWIKAR :Error whan NO_MORE_SPACE*/ |
| #define M4xVSSERR_NO_MORE_SPACE M4OSA_ERR_CREATE( M4_ERR, M4VS, 0x0007) |
| |
| /** |
| ****************************************************************************** |
| * enum M4xVSS_VideoEffectType |
| * @brief This enumeration defines the video effect types of the xVSS |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4xVSS_kVideoEffectType_BlackAndWhite = M4VSS3GPP_kVideoEffectType_External+1, /* 257 */ |
| M4xVSS_kVideoEffectType_Pink, /* 258 */ |
| M4xVSS_kVideoEffectType_Green, /* 259 */ |
| M4xVSS_kVideoEffectType_Sepia, /* 260 */ |
| M4xVSS_kVideoEffectType_Negative, /* 261 */ |
| M4xVSS_kVideoEffectType_Framing, /* 262 */ |
| M4xVSS_kVideoEffectType_Text, /* Text overlay */ /* 263 */ |
| M4xVSS_kVideoEffectType_ZoomIn, /* 264 */ |
| M4xVSS_kVideoEffectType_ZoomOut, /* 265 */ |
| M4xVSS_kVideoEffectType_Fifties, /*266 */ |
| M4xVSS_kVideoEffectType_ColorRGB16, /*267 */ |
| M4xVSS_kVideoEffectType_Gradient /*268*/ |
| } M4xVSS_VideoEffectType; |
| |
| /** |
| ****************************************************************************** |
| * enum M4xVSS_VideoTransitionType |
| * @brief This enumeration defines the video effect that can be applied during a transition. |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4xVSS_kVideoTransitionType_External = M4VSS3GPP_kVideoTransitionType_External, /*256*/ |
| M4xVSS_kVideoTransitionType_AlphaMagic, |
| M4xVSS_kVideoTransitionType_SlideTransition, |
| M4xVSS_kVideoTransitionType_FadeBlack |
| |
| } M4xVSS_VideoTransitionType; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_PreviewSettings |
| * @brief This structure gathers all the information needed by the VPS for preview |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_Void *p3gpPreviewFile; |
| M4OSA_Void *pPCMFile; |
| M4VIDEOEDITING_AudioSamplingFrequency outPCM_ASF; |
| M4OSA_Bool bAudioMono; |
| M4VSS3GPP_EffectSettings *Effects; |
| M4OSA_UInt8 nbEffects; |
| |
| } M4xVSS_PreviewSettings; |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_toUTF8Fct |
| * @brief This prototype defines the function implemented by the integrator |
| * to convert a string encoded in any format to an UTF8 string. |
| * @note |
| * |
| * @param pBufferIn IN Buffer containing the string to convert to UTF8 |
| * @param pBufferOut IN Buffer containing the UTF8 converted string |
| * @param bufferOutSize IN/OUT IN: Size of the given output buffer |
| * OUT: Size of the converted buffer |
| * |
| ****************************************************************************** |
| */ |
| typedef M4OSA_ERR (*M4xVSS_toUTF8Fct) |
| ( |
| M4OSA_Void *pBufferIn, |
| M4OSA_UInt8 *pBufferOut, |
| M4OSA_UInt32 *bufferOutSize |
| ); |
| |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_fromUTF8Fct |
| * @brief This prototype defines the function implemented by the integrator |
| * to convert an UTF8 string to a string encoded in any format. |
| * @note |
| * |
| * @param pBufferIn IN Buffer containing the UTF8 string to convert |
| * to the desired format. |
| * @param pBufferOut IN Buffer containing the converted string |
| * @param bufferOutSize IN/OUT IN: Size of the given output buffer |
| * OUT: Size of the converted buffer |
| * |
| ****************************************************************************** |
| */ |
| typedef M4OSA_ERR (*M4xVSS_fromUTF8Fct) |
| ( |
| M4OSA_UInt8 *pBufferIn, |
| M4OSA_Void *pBufferOut, |
| M4OSA_UInt32 *bufferOutSize |
| ); |
| |
| |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_InitParams |
| * @brief This structure defines parameters for xVSS. |
| * @note |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_FileReadPointer* pFileReadPtr; |
| M4OSA_FileWriterPointer* pFileWritePtr; |
| M4OSA_Void* pTempPath; |
| /*Function pointer on an external text conversion function */ |
| M4xVSS_toUTF8Fct pConvToUTF8Fct; |
| /*Function pointer on an external text conversion function */ |
| M4xVSS_fromUTF8Fct pConvFromUTF8Fct; |
| |
| |
| |
| } M4xVSS_InitParams; |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_Init |
| * @brief This function initializes the xVSS |
| * @note Initializes the xVSS edit operation (allocates an execution context). |
| * |
| * @param pContext (OUT) Pointer on the xVSS edit context to allocate |
| * @param params (IN) Parameters mandatory for xVSS |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_ALLOC: Memory allocation has failed |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_Init(M4OSA_Context* pContext, M4xVSS_InitParams* params); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_ReduceTranscode |
| * @brief This function changes the given editing structure in order to |
| * minimize the transcoding time. |
| * @note The xVSS analyses this structure, and if needed, changes the |
| * output parameters (Video codec, video size, audio codec, |
| * audio nb of channels) to minimize the transcoding time. |
| * |
| * @param pContext (OUT) Pointer on the xVSS edit context to allocate |
| * @param pSettings (IN) Edition settings (allocated by the user) |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_ALLOC: Memory allocation has failed |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_ReduceTranscode(M4OSA_Context pContext, M4VSS3GPP_EditSettings* pSettings); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_SendCommand |
| * @brief This function gives to the xVSS an editing structure |
| * @note The xVSS analyses this structure, and prepare edition |
| * This function must be called after M4xVSS_Init, after |
| * M4xVSS_CloseCommand, or after M4xVSS_PreviewStop. |
| * After this function, the user must call M4xVSS_Step until |
| * it returns another error than M4NO_ERROR. |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param pSettings (IN) Edition settings (allocated by the user) |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_ALLOC: Memory allocation has failed |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_SendCommand(M4OSA_Context pContext, M4VSS3GPP_EditSettings* pSettings); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_PreviewStart |
| * @brief This function prepare the preview |
| * @note The xVSS create 3GP preview file and fill pPreviewSettings with |
| * preview parameters. |
| * This function must be called once M4xVSS_Step has returned |
| * M4VSS3GPP_WAR_ANALYZING_DONE |
| * After this function, the user must call M4xVSS_Step until |
| * it returns another error than M4NO_ERROR. |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param pPreviewSettings (IN) Preview settings (allocated by the user) |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_ALLOC: Memory allocation has failed |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_PreviewStart(M4OSA_Context pContext, M4xVSS_PreviewSettings* pPreviewSettings); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_PreviewStop |
| * @brief This function unallocate preview ressources and change xVSS |
| * internal state to allow saving or resend an editing command |
| * @note This function must be called once M4xVSS_Step has returned |
| * M4VSS3GPP_WAR_PREVIEW_READY |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_PreviewStop(M4OSA_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_SaveStart |
| * @brief This function prepare the save |
| * @note The xVSS create 3GP edited final file |
| * This function must be called once M4xVSS_Step has returned |
| * M4VSS3GPP_WAR_ANALYZING_DONE |
| * After this function, the user must call M4xVSS_Step until |
| * it returns another error than M4NO_ERROR. |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param pFilePath (IN) If the user wants to provide a different |
| * output filename, else can be NULL (allocated by the user) |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_ALLOC: Memory allocation has failed |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_SaveStart(M4OSA_Context pContext, M4OSA_Void* pFilePath, |
| M4OSA_UInt32 filePathSize); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_SaveStop |
| * @brief This function unallocate save ressources and change xVSS |
| * internal state. |
| * @note This function must be called once M4xVSS_Step has returned |
| * M4VSS3GPP_WAR_SAVING_DONE |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_SaveStop(M4OSA_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_Step |
| * @brief This function executes differents tasks, depending of xVSS |
| * internal state. |
| * @note This function: |
| * - analyses editing structure if called after M4xVSS_SendCommand |
| * - generates preview file if called after M4xVSS_PreviewStart |
| * - generates final edited file if called after M4xVSS_SaveStart |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param pContext (OUT) Progress indication from 0 to 100 |
| * @return M4NO_ERROR: No error, the user must call M4xVSS_Step again |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| * @return M4VSS3GPP_WAR_PREVIEW_READY: Preview file is generated |
| * @return M4VSS3GPP_WAR_SAVING_DONE: Final edited file is generated |
| * @return M4VSS3GPP_WAR_ANALYZING_DONE: Analyse is done |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_Step(M4OSA_Context pContext, M4OSA_UInt8 *pProgress); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_CloseCommand |
| * @brief This function deletes current editing profile, unallocate |
| * ressources and change xVSS internal state. |
| * @note After this function, the user can call a new M4xVSS_SendCommand |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_CloseCommand(M4OSA_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_CleanUp |
| * @brief This function deletes all xVSS ressources |
| * @note This function must be called after M4xVSS_CloseCommand. |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_CleanUp(M4OSA_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_GetVersion(M4_VersionInfo *pVersion) |
| * @brief This function get the version of the Video Studio 2.1 |
| * |
| * @param pVersion (IN) Pointer on the version info struct |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_GetVersion(M4_VersionInfo *pVersion); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4VSS3GPP_externalVideoEffectColor(M4OSA_Void *pFunctionContext, |
| * M4VIFI_ImagePlane *PlaneIn, |
| * M4VIFI_ImagePlane *PlaneOut, |
| * M4VSS3GPP_ExternalProgress *pProgress, |
| * M4OSA_UInt32 uiEffectKind) |
| * |
| * @brief This function apply a color effect on an input YUV420 planar frame |
| * @note The prototype of this effect function is exposed because it needs to |
| * called by the VPS during the preview |
| * @param pFunctionContext(IN) Contains which color to apply (not very clean ...) |
| * @param PlaneIn (IN) Input YUV420 planar |
| * @param PlaneOut (IN/OUT) Output YUV420 planar |
| * @param pProgress (IN/OUT) Progress indication (0-100) |
| * @param uiEffectKind (IN) Unused |
| * |
| * @return M4VIFI_OK: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4VSS3GPP_externalVideoEffectColor |
| ( |
| M4OSA_Void *pFunctionContext, |
| M4VIFI_ImagePlane *pInputPlanes, |
| M4VIFI_ImagePlane *pOutputPlanes, |
| M4VSS3GPP_ExternalProgress *pProgress, |
| M4OSA_UInt32 uiEffectKind |
| ); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4VSS3GPP_externalVideoEffectFraming(M4OSA_Void *pFunctionContext, |
| * M4VIFI_ImagePlane *PlaneIn, |
| * M4VIFI_ImagePlane *PlaneOut, |
| * M4VSS3GPP_ExternalProgress *pProgress, |
| * M4OSA_UInt32 uiEffectKind) |
| * |
| * @brief This function add a fixed or animated image on an input YUV420 planar frame |
| * @note The prototype of this effect function is exposed because it needs to |
| * called by the VPS during the preview |
| * @param pFunctionContext(IN) Contains which color to apply (not very clean ...) |
| * @param PlaneIn (IN) Input YUV420 planar |
| * @param PlaneOut (IN/OUT) Output YUV420 planar |
| * @param pProgress (IN/OUT) Progress indication (0-100) |
| * @param uiEffectKind (IN) Unused |
| * |
| * @return M4VIFI_OK: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4VSS3GPP_externalVideoEffectFraming |
| ( |
| M4OSA_Void *pFunctionContext, |
| M4VIFI_ImagePlane *pInputPlanes, |
| M4VIFI_ImagePlane *pOutputPlanes, |
| M4VSS3GPP_ExternalProgress *pProgress, |
| M4OSA_UInt32 uiEffectKind |
| ); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4VSS3GPP_externalVideoEffectFifties(M4OSA_Void *pFunctionContext, |
| * M4VIFI_ImagePlane *PlaneIn, |
| * M4VIFI_ImagePlane *PlaneOut, |
| * M4VSS3GPP_ExternalProgress *pProgress, |
| * M4OSA_UInt32 uiEffectKind) |
| * |
| * @brief This function make a video look as if it was taken in the fifties |
| * @note |
| * @param pUserData (IN) Context |
| * @param pPlaneIn (IN) Input YUV420 planar |
| * @param pPlaneOut (IN/OUT) Output YUV420 planar |
| * @param pProgress (IN/OUT) Progress indication (0-100) |
| * @param uiEffectKind (IN) Unused |
| * |
| * @return M4VIFI_OK: No error |
| * @return M4ERR_PARAMETER: pFiftiesData, pPlaneOut or pProgress are NULL (DEBUG only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4VSS3GPP_externalVideoEffectFifties |
| ( |
| M4OSA_Void *pUserData, |
| M4VIFI_ImagePlane *pInputPlanes, |
| M4VIFI_ImagePlane *pPlaneOut, |
| M4VSS3GPP_ExternalProgress *pProgress, |
| M4OSA_UInt32 uiEffectKind |
| ); |
| |
| |
| /** |
| ****************************************************************************** |
| * prototype M4VSS3GPP_externalVideoEffectZoom(M4OSA_Void *pFunctionContext, |
| * M4VIFI_ImagePlane *PlaneIn, |
| * M4VIFI_ImagePlane *PlaneOut, |
| * M4VSS3GPP_ExternalProgress *pProgress, |
| * M4OSA_UInt32 uiEffectKind) |
| * |
| * @brief This function add a fixed or animated image on an input YUV420 planar frame |
| * @note The prototype of this effect function is exposed because it needs to |
| * called by the VPS during the preview |
| * @param pFunctionContext(IN) Contains which zoom to apply (In/Out) |
| * @param PlaneIn (IN) Input YUV420 planar |
| * @param PlaneOut (IN/OUT) Output YUV420 planar |
| * @param pProgress (IN/OUT) Progress indication (0-100) |
| * @param uiEffectKind (IN) Unused |
| * |
| * @return M4VIFI_OK: No error |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4VSS3GPP_externalVideoEffectZoom |
| ( |
| M4OSA_Void *pFunctionContext, |
| M4VIFI_ImagePlane *pInputPlanes, |
| M4VIFI_ImagePlane *pOutputPlanes, |
| M4VSS3GPP_ExternalProgress *pProgress, |
| M4OSA_UInt32 uiEffectKind |
| ); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4xVSS_CreateClipSettings() |
| * @brief Allows filling a clip settings structure with default values |
| * |
| * @note WARNING: pClipSettings->Effects[ ] will be allocated in this function. |
| * pClipSettings->pFile will be allocated in this function. |
| * |
| * @param pClipSettings (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure |
| * @param pFile (IN) Clip file name |
| * @param filePathSize (IN) Size of the clip path (needed for the UTF16 conversion) |
| * @param nbEffects (IN) Nb of effect settings to allocate |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_CreateClipSettings(M4VSS3GPP_ClipSettings *pClipSettings, M4OSA_Void* pFile, |
| M4OSA_UInt32 filePathSize, M4OSA_UInt8 nbEffects); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4xVSS_DuplicateClipSettings() |
| * @brief Duplicates a clip settings structure, performing allocations if required |
| * |
| * @param pClipSettingsDest (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure |
| * @param pClipSettingsOrig (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure |
| * @param bCopyEffects (IN) Flag to know if we have to duplicate effects |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_DuplicateClipSettings(M4VSS3GPP_ClipSettings *pClipSettingsDest, |
| M4VSS3GPP_ClipSettings *pClipSettingsOrig, |
| M4OSA_Bool bCopyEffects); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4xVSS_FreeClipSettings() |
| * @brief Free the pointers allocated in the ClipSetting structure (pFile, Effects). |
| * |
| * @param pClipSettings (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_FreeClipSettings(M4VSS3GPP_ClipSettings *pClipSettings); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4OSA_ERR M4xVSS_getMCSContext(M4OSA_Context pContext, M4OSA_Context* mcsContext) |
| * @brief This function returns the MCS context within the xVSS internal context |
| * @note This function must be called only after VSS state has moved to analyzing state |
| * or beyond |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param mcsContext (OUT) Pointer to pointer of mcs context to return |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_getMCSContext(M4OSA_Context pContext, M4OSA_Context* mcsContext); |
| |
| /** |
| ****************************************************************************** |
| * prototype M4OSA_ERR M4xVSS_getVSS3GPPContext(M4OSA_Context pContext, |
| * M4OSA_Context* mcsContext) |
| * @brief This function returns the VSS3GPP context within the xVSS internal context |
| * @note This function must be called only after VSS state has moved to Generating |
| * preview or beyond |
| * |
| * @param pContext (IN) Pointer on the xVSS edit context |
| * @param vss3gppContext (OUT) Pointer to pointer of vss3gpp context to return |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: This function cannot not be called at this time |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4xVSS_getVSS3GPPContext(M4OSA_Context pContext, M4OSA_Context* vss3gppContext); |
| |
| // Get supported video decoders and capabilities. |
| M4OSA_ERR M4xVSS_getVideoDecoderCapabilities(M4DECODER_VideoDecoders **decoders); |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| #endif /* __M4XVSS_API_H__ */ |
| |