diff options
Diffstat (limited to 'libvideoeditor/vss/inc/M4VSS3GPP_API.h')
-rwxr-xr-x | libvideoeditor/vss/inc/M4VSS3GPP_API.h | 819 |
1 files changed, 0 insertions, 819 deletions
diff --git a/libvideoeditor/vss/inc/M4VSS3GPP_API.h b/libvideoeditor/vss/inc/M4VSS3GPP_API.h deleted file mode 100755 index 0bb7141..0000000 --- a/libvideoeditor/vss/inc/M4VSS3GPP_API.h +++ /dev/null @@ -1,819 +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. - */ - -#ifndef __M4VSS3GPP_API_H__ -#define __M4VSS3GPP_API_H__ - -/** - ****************************************************************************** - * @file M4VSS3GPP_API.h - * @brief Video Studio Service 3GPP public API. - * @note VSS allows editing 3GPP files. - * It is a straightforward and fully synchronous API. - ****************************************************************************** - */ - -/** - * OSAL basic types and errors */ -#include "M4OSA_Types.h" -#include "M4OSA_Error.h" - -/** - * OSAL types for file access */ -#include "M4OSA_FileReader.h" -#include "M4OSA_FileWriter.h" - -/** - * Definition of M4_VersionInfo */ -#include "M4TOOL_VersionInfo.h" - -/** - * Image planes definition */ -#include "M4VIFI_FiltersAPI.h" - -/** - * Common definitions of video editing components */ -#include "M4_VideoEditingCommon.h" -#include "M4ENCODER_AudioCommon.h" -#include "M4AD_Common.h" -#include "M4DA_Types.h" - -/** - * Extended API (xVSS) */ -#ifdef M4VSS_SUPPORT_EXTENDED_FEATURES -#include "M4VSS3GPP_Extended_API.h" -#endif - -//#include "M4VD_HW_API.h" -//#include "M4VE_API.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - - -/** - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - * - * Edition Feature - * - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - */ - -/** - * Public type of the VSS edit context */ -typedef M4OSA_Void* M4VSS3GPP_EditContext; - - -/** - ****************************************************************************** - * enum M4VSS3GPP_VideoEffectType - * @brief This enumeration defines the video effect types of the VSS3GPP - ****************************************************************************** - */ -typedef enum -{ - M4VSS3GPP_kVideoEffectType_None = 0, /**< No video effect */ - M4VSS3GPP_kVideoEffectType_FadeFromBlack = 8, /**< Intended for begin effect */ - M4VSS3GPP_kVideoEffectType_FadeToBlack = 16, /**< Intended for end effect */ - M4VSS3GPP_kVideoEffectType_External = 256 /**< External effect function is used */ - /* reserved 256 + n */ /**< External effect number n */ - -} M4VSS3GPP_VideoEffectType; - - -/** - ****************************************************************************** - * enum M4VSS3GPP_AudioEffectType - * @brief This enumeration defines the audio effect types of the VSS3GPP - ****************************************************************************** - */ -typedef enum -{ - M4VSS3GPP_kAudioEffectType_None = 0, - M4VSS3GPP_kAudioEffectType_FadeIn = 8, /**< Intended for begin effect */ - M4VSS3GPP_kAudioEffectType_FadeOut = 16 /**< Intended for end effect */ - -} M4VSS3GPP_AudioEffectType; - - -/** - ****************************************************************************** - * enum M4VSS3GPP_VideoTransitionType - * @brief This enumeration defines the video effect that can be applied during a transition. - ****************************************************************************** - */ -typedef enum -{ - M4VSS3GPP_kVideoTransitionType_None = 0, - M4VSS3GPP_kVideoTransitionType_CrossFade = 1, - M4VSS3GPP_kVideoTransitionType_External = 256 - /* reserved 256 + n */ /**< External transition number n */ - -} M4VSS3GPP_VideoTransitionType; - - -/** - ****************************************************************************** - * enum M4VSS3GPP_AudioTransitionType - * @brief This enumeration defines the audio effect that can be applied during a transition. - ****************************************************************************** - */ -typedef enum -{ - M4VSS3GPP_kAudioTransitionType_None = 0, - M4VSS3GPP_kAudioTransitionType_CrossFade - -} M4VSS3GPP_AudioTransitionType; - - -/** - ****************************************************************************** - * struct M4VSS3GPP_ExternalProgress - * @brief This structure contains information provided to the external Effect - * and Transition functions - * @note The uiProgress value should be enough for most cases - ****************************************************************************** - */ -typedef struct -{ - /**< Progress of the Effect or the Transition, from 0 to 1000 (one thousand) */ - M4OSA_UInt32 uiProgress; - /**< Index of the current clip (first clip in case of a Transition), from 0 to N */ - //M4OSA_UInt8 uiCurrentClip; - /**< Current time, in milliseconds, in the current clip time-line */ - M4OSA_UInt32 uiClipTime; - /**< Current time, in milliseconds, in the output clip time-line */ - M4OSA_UInt32 uiOutputTime; - M4OSA_Bool bIsLast; - -} M4VSS3GPP_ExternalProgress; - - -/** - ************************************************************************ - * enum M4VSS3GPP_codecType - * @brief This enum defines the codec types used to create interfaces - * @note This enum is used internally by the VSS3GPP services to identify - * a currently supported codec interface. Each codec is - * registered with one of this type associated. - * When a codec instance is needed, this type is used to - * identify and retrieve its interface. - * This can be extended for other codecs. - ************************************************************************ - */ -typedef enum -{ - /* Video Decoder Types */ - M4VSS3GPP_kVideoDecMPEG4 = 0, - M4VSS3GPP_kVideoDecH264, - - /* Video Encoder Types */ - M4VSS3GPP_kVideoEncMPEG4, - M4VSS3GPP_kVideoEncH263, - M4VSS3GPP_kVideoEncH264, - - /* Audio Decoder Types */ - M4VSS3GPP_kAudioDecAMRNB, - M4VSS3GPP_kAudioDecAAC, - M4VSS3GPP_kAudioDecMP3, - - /* Audio Encoder Types */ - M4VSS3GPP_kAudioEncAMRNB, - M4VSS3GPP_kAudioEncAAC, - - /* number of codecs, keep it as last enum entry, before invlaid type */ - M4VSS3GPP_kCodecType_NB, - /* invalid codec type */ - M4VSS3GPP_kCodecTypeInvalid = 255 - -} M4VSS3GPP_codecType; - - -/** - ****************************************************************************** - * prototype M4VSS3GPP_editVideoEffectFct - * @brief Begin and End video effect functions implemented by the integrator - * must match this prototype. - * @note The function is provided with the original image of the clip. - * It must apply the video effect to build the output image. - * The progress of the effect is given, on a scale from 0 to 1000. - * When the effect function is called, all the image plane structures - * and buffers are valid and owned by the VSS 3GPP. - * - * @param pFunctionContext (IN) The function context, previously set by the integrator - * @param pInputPlanes (IN) Input YUV420 image: pointer to an array of three valid - image planes (Y, U and V) - * @param pOutputPlanes (IN/OUT) Output (filtered) YUV420 image: pointer to an array - of three valid image planes (Y, U and V) - * @param pProgress (IN) Set of information about the video transition progress. - * @param uiExternalEffectId (IN) Which effect function should be used (for external effects) - * - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - ****************************************************************************** - */ -typedef M4OSA_ERR (*M4VSS3GPP_editVideoEffectFct) -( - M4OSA_Void *pFunctionContext, - M4VIFI_ImagePlane *pInputPlanes, - M4VIFI_ImagePlane *pOutputPlanes, - M4VSS3GPP_ExternalProgress *pProgress, - M4OSA_UInt32 uiExternalEffectId -); - - -/** - ****************************************************************************** - * prototype M4VSS3GPP_editVideoTransitionFct - * @brief External transition functions implemented by the integrator - * must match this prototype. - * @note The function is provided with the image of the first clip and - * the image of the second clip. It must build the output image - * from the two input images. - * The progress of the transition is given, on a scale from 0 to 1000. - * When the external function is called, all the image plane - * structures and buffers are valid and owned by the VSS 3GPP. - * - * @param pFunctionContext (IN) The function context, previously set by the integrator - * @param pClip1InputPlanes (IN) First input YUV420 image: pointer to an array of three - valid image planes (Y, U and V) - * @param pClip2InputPlanes (IN) Second input YUV420 image: pointer to an array of three - valid image planes (Y, U and V) - * @param pOutputPlanes (IN/OUT) Output (filtered) YUV420 image: pointer to an array - of three valid image planes (Y, U and V) - * @param pProgress (IN) Set of information about the video effect progress. - * @param uiExternalTransitionId (IN) Which transition function should be used - (for external transitions) - * - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - ****************************************************************************** - */ -typedef M4OSA_ERR (*M4VSS3GPP_editVideoTransitionFct) -( - M4OSA_Void *pFunctionContext, - M4VIFI_ImagePlane *pClip1InputPlanes, - M4VIFI_ImagePlane *pClip2InputPlanes, - M4VIFI_ImagePlane *pOutputPlanes, - M4VSS3GPP_ExternalProgress *pProgress, - M4OSA_UInt32 uiExternalTransitionId -); - - -/** - ****************************************************************************** - * struct M4VSS3GPP_EffectSettings - * @brief This structure defines an audio/video effect for the edition. - * @note Effect start time is relative to output clip. - ****************************************************************************** - */ -typedef struct -{ - M4OSA_UInt32 uiStartTime; /**< In ms */ - M4OSA_UInt32 uiDuration; /**< In ms */ - M4VSS3GPP_VideoEffectType VideoEffectType; /**< None, FadeIn, FadeOut, etc. */ - M4VSS3GPP_editVideoEffectFct ExtVideoEffectFct; /**< External effect function */ - M4OSA_Void *pExtVideoEffectFctCtxt;/**< Context given to the external - effect function */ - M4VSS3GPP_AudioEffectType AudioEffectType; /**< None, FadeIn, FadeOut */ - -#ifdef M4VSS_SUPPORT_EXTENDED_FEATURES - M4xVSS_EffectSettings xVSS; -#endif - -} M4VSS3GPP_EffectSettings; - - -/** - ****************************************************************************** - * enum M4VSS3GPP_TransitionBehaviour - * @brief Transition behavior - ****************************************************************************** - */ -typedef enum -{ - M4VSS3GPP_TransitionBehaviour_SpeedUp = 0, - M4VSS3GPP_TransitionBehaviour_Linear, - M4VSS3GPP_TransitionBehaviour_SpeedDown, - M4VSS3GPP_TransitionBehaviour_SlowMiddle, - M4VSS3GPP_TransitionBehaviour_FastMiddle -} M4VSS3GPP_TransitionBehaviour; - - -/** - ****************************************************************************** - * struct M4VSS3GPP_TransitionSettings - * @brief This structure defines the transition to be applied when assembling two clips. - ****************************************************************************** - */ -typedef struct -{ - /**< Duration of the transition, in milliseconds (set to 0 to get no transition) */ - M4OSA_UInt32 uiTransitionDuration; - - /**< Type of the video transition */ - M4VSS3GPP_VideoTransitionType VideoTransitionType; - - /**< External transition video effect function */ - M4VSS3GPP_editVideoTransitionFct ExtVideoTransitionFct; - - /**< Context of the external transition video effect function */ - M4OSA_Void *pExtVideoTransitionFctCtxt; - M4VSS3GPP_AudioTransitionType AudioTransitionType; /**< Type of the audio transition */ - M4VSS3GPP_TransitionBehaviour TransitionBehaviour; /**<Transition behaviour*/ - -#ifdef M4VSS_SUPPORT_EXTENDED_FEATURES - M4xVSS_TransitionSettings xVSS; -#endif - -} M4VSS3GPP_TransitionSettings; - - -/** - ****************************************************************************** - * struct M4VSS3GPP_ClipSettings - * @brief This structure defines an input clip for the edition. - * @note It also contains the settings for the cut and begin/end effects applied to the clip. - ****************************************************************************** - */ -typedef struct -{ - M4OSA_Void *pFile; /**< Clip file descriptor */ - M4VIDEOEDITING_FileType FileType; /**< .3gp, .amr, .mp3 */ - M4OSA_UInt32 filePathSize; /**< Clip path size - (add because of UTF16 conversion)*/ - M4VIDEOEDITING_ClipProperties ClipProperties; /**< Clip analysis previously computed - with M4VSS3GPP_editAnalyseClip */ - M4OSA_UInt32 uiBeginCutTime; /**< Begin cut time, in milliseconds */ - M4OSA_UInt32 uiEndCutTime; /**< End cut time, in milliseconds */ - M4OSA_Bool bTranscodingRequired; - -#ifdef M4VSS_SUPPORT_EXTENDED_FEATURES - M4xVSS_ClipSettings xVSS; -#endif - -} M4VSS3GPP_ClipSettings; - - -/** - ****************************************************************************** - * struct M4VSS3GPP_EditSettings - * @brief This structure gathers all the information needed to define a complete - * edition operation - ****************************************************************************** - */ -typedef struct -{ - /**< Number of element of the clip list pClipList */ - M4OSA_UInt8 uiClipNumber; - /**< The properties of this clip will be used as a reference for compatibility checking */ - M4OSA_UInt8 uiMasterClip; - /**< List of the input clips settings. Pointer to an array of uiClipNumber - clip settings pointers */ - M4VSS3GPP_ClipSettings **pClipList; - /**< List of the transition settings. Pointer to an array of uiClipNumber-1 - transition settings pointers */ - M4VSS3GPP_TransitionSettings **pTransitionList; - M4VSS3GPP_EffectSettings *Effects; /**< List of effects */ - M4OSA_UInt8 nbEffects; /**< Number of effects in the above list */ - /**< Frame rate at which the modified video sections will be encoded */ - M4VIDEOEDITING_VideoFramerate videoFrameRate; - M4OSA_Void *pOutputFile; /**< Output 3GPP clip file descriptor */ - M4OSA_UInt32 uiOutputPathSize; /**< Output file path size*/ - /**< Temporary file to store metadata ("moov.bin") */ - M4OSA_Void *pTemporaryFile; - -#ifdef M4VSS_SUPPORT_EXTENDED_FEATURES - M4xVSS_EditSettings xVSS; -#endif - M4OSA_Float PTVolLevel; -} M4VSS3GPP_EditSettings; - - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editAnalyseClip() - * @brief This function allows checking if a clip is compatible with VSS 3GPP editing - * @note It also fills a ClipAnalysis structure, which can be used to check if two - * clips are compatible - * @param pClip (IN) File descriptor of the input 3GPP/MP3 clip file. - * @param pClipProperties (IN) Pointer to a valid ClipProperties structure. - * @param FileType (IN) Type of the input file (.3gp, .amr, .mp3) - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - * @return M4VSS3GPP_ERR_H263_PROFILE_NOT_SUPPORTED - * @return M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_VERSION - * @return M4VSS3GPP_ERR_AMR_EDITING_UNSUPPORTED - * @return M4VSS3GPP_ERR_EDITING_UNSUPPORTED_H263_PROFILE - * @return M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_PROFILE - * @return M4VSS3GPP_ERR_EDITING_UNSUPPORTED_MPEG4_RVLC - * @return M4VSS3GPP_ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT - * @return M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_VIDEO_STREAM_IN_FILE - * @return M4VSS3GPP_ERR_EDITING_UNSUPPORTED_AUDIO_FORMAT - * @return M4VSS3GPP_ERR_EDITING_NO_SUPPORTED_STREAM_IN_FILE - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editAnalyseClip(M4OSA_Void *pClip, M4VIDEOEDITING_FileType FileType, - M4VIDEOEDITING_ClipProperties *pClipProperties, - M4OSA_FileReadPointer *pFileReadPtrFct); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editCheckClipCompatibility() - * @brief This function allows checking if two clips are compatible with each other - * for VSS 3GPP editing assembly feature. - * @note - * @param pClip1Properties (IN) Clip analysis of the first clip - * @param pClip2Properties (IN) Clip analysis of the second clip - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - * @return M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_VERSION - * @return M4VSS3GPP_ERR_INVALID_CLIP_ANALYSIS_PLATFORM - * @return M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FORMAT - * @return M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_FRAME_SIZE - * @return M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_TIME_SCALE - * @return M4VSS3GPP_ERR_INCOMPATIBLE_VIDEO_DATA_PARTITIONING - * @return M4VSS3GPP_ERR_UNSUPPORTED_MP3_ASSEMBLY - * @return M4VSS3GPP_ERR_UNSUPPORTED_INPUT_VIDEO_FORMAT - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editCheckClipCompatibility(M4VIDEOEDITING_ClipProperties *pClip1Properties, - M4VIDEOEDITING_ClipProperties *pClip2Properties); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editInit() - * @brief Initializes the VSS 3GPP edit operation (allocates an execution context). - * @note - * @param pContext (OUT) Pointer on the VSS 3GPP edit context to allocate - * @param pFileReadPtrFct (IN) Pointer to OSAL file reader functions - * @param pFileWritePtrFct (IN) Pointer to OSAL file writer functions - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL - * @return M4ERR_ALLOC: There is no more available memory - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editInit( - M4VSS3GPP_EditContext* pContext, - M4OSA_FileReadPointer* pFileReadPtrFct, - M4OSA_FileWriterPointer* pFileWritePtrFct ); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editCreateClipSettings() - * @brief Allows filling a clip settings structure with default values - * - * @note WARNING: 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 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 M4VSS3GPP_editCreateClipSettings(M4VSS3GPP_ClipSettings *pClipSettings, - M4OSA_Void* pFile, M4OSA_UInt32 filePathSize, - M4OSA_UInt8 nbEffects); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editDuplicateClipSettings() - * @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 (deprecated) - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editDuplicateClipSettings(M4VSS3GPP_ClipSettings *pClipSettingsDest, - M4VSS3GPP_ClipSettings *pClipSettingsOrig, - M4OSA_Bool bCopyEffects); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editFreeClipSettings() - * @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 M4VSS3GPP_editFreeClipSettings(M4VSS3GPP_ClipSettings *pClipSettings); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editOpen() - * @brief Set the VSS 3GPP input and output files, and set the settings. - * @note - * @param pContext (IN) VSS 3GPP edit context - * @param pSettings (IN) Edit settings - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - * @return M4ERR_STATE: VSS is not in an appropriate state for this function to be called - * @return M4ERR_ALLOC: There is no more available memory - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editOpen(M4VSS3GPP_EditContext pContext, M4VSS3GPP_EditSettings *pSettings); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editStep() - * @brief Perform one step of editing. - * @note - * @param pContext (IN) VSS 3GPP edit context - * @param pProgress (OUT) Progress percentage (0 to 100) of the editing operation - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - * @return M4ERR_STATE: VSS 3GPP is not in an appropriate state for this function to - * be called - * @return M4VSS3GPP_WAR_EDITING_DONE:Edition is done, user should now call M4VSS3GPP_editClose() - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editStep(M4VSS3GPP_EditContext pContext, M4OSA_UInt8 *pProgress); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editClose() - * @brief Finish the VSS 3GPP edit operation. - * @note The output 3GPP file is ready to be played after this call - * @param pContext (IN) VSS 3GPP edit context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - * @return M4ERR_STATE: VSS 3GPP is not in an appropriate state for this function - * to be called - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editClose(M4VSS3GPP_EditContext pContext); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_editCleanUp() - * @brief Free all resources used by the VSS 3GPP edit operation. - * @note The context is no more valid after this call - * @param pContext (IN) VSS 3GPP edit context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_editCleanUp(M4VSS3GPP_EditContext pContext); - -/** - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - * - * Audio Mixing Feature - * - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - */ -/** - * Public type of the VSS audio mixing context */ -typedef M4OSA_Void* M4VSS3GPP_AudioMixingContext; - - -/** - ****************************************************************************** - * struct M4VSS3GPP_AudioMixingSettings - * @brief This structure defines the settings of the audio mixing operation. - ****************************************************************************** - */ -typedef struct { - M4OSA_Void* pOriginalClipFile; /**< Input 3GPP clip file */ - M4OSA_Void* pAddedAudioTrackFile; /**< New audio track */ - M4VIDEOEDITING_FileType AddedAudioFileType; /**< File Format of the new audio file */ - M4OSA_UInt32 uiAddCts; /**< Time, in milliseconds, - at which the added audio track is inserted */ - M4OSA_UInt32 uiAddVolume; /**< Volume, in percentage, - of the added audio track */ - M4OSA_UInt32 uiBeginLoop; /**< Describes in milli-second the - start time of the loop */ - M4OSA_UInt32 uiEndLoop; /**< Describes in milli-second the end - time of the loop (0 means no loop) */ - M4OSA_Bool bRemoveOriginal; /**< If true, the original audio track - is not taken into account */ - M4OSA_Void* pOutputClipFile; /**< Output 3GPP clip file */ - M4OSA_Void* pTemporaryFile; /**< Temporary file to store metadata - ("moov.bin") */ - /**< The following parameters are optionnal. They are just used in case of MP3 replacement. */ - M4VIDEOEDITING_AudioSamplingFrequency outputASF; /**< Output sampling frequency */ - M4VIDEOEDITING_AudioFormat outputAudioFormat; /**< Output audio codec(AAC/AMR)*/ - M4VIDEOEDITING_Bitrate outputAudioBitrate; /**< Output audio bitrate */ - M4OSA_UInt8 outputNBChannels; /**< Output audio nb of channels */ - M4OSA_Bool b_DuckingNeedeed; - M4OSA_Int32 InDucking_threshold; - M4OSA_Float fBTVolLevel; - M4OSA_Float fPTVolLevel; - M4OSA_Float InDucking_lowVolume; - M4OSA_Bool bLoop; - M4OSA_UInt32 uiSamplingFrequency; - M4OSA_UInt32 uiNumChannels; -} M4VSS3GPP_AudioMixingSettings; - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_audioMixingInit(M4VSS3GPP_AudioMixingContext* pContext, - * M4VSS3GPP_AudioMixingSettings* pSettings) - * @brief Initializes the VSS audio mixing operation (allocates an execution context). - * @note - * @param pContext (OUT) Pointer on the VSS audio mixing context to allocate - * @param pSettings (IN) Pointer to valid audio mixing settings - * @param pFileReadPtrFct (IN) Pointer to OSAL file reader functions - * @param pFileWritePtrFct (IN) Pointer to OSAL file writer functions - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - * @return M4ERR_ALLOC: There is no more available memory - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_audioMixingInit( - M4VSS3GPP_AudioMixingContext* pContext, - M4VSS3GPP_AudioMixingSettings* pSettings, - M4OSA_FileReadPointer* pFileReadPtrFct, - M4OSA_FileWriterPointer* pFileWritePtrFct ); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_audioMixingStep() - * @brief Perform one step of audio mixing. - * @note - * @param pContext (IN) VSS 3GPP audio mixing context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - * @param pProgress (OUT) Progress percentage (0 to 100) - of the finalization operation - * @return M4ERR_STATE: VSS is not in an appropriate state for - this function to be called - * @return M4VSS3GPP_WAR_END_OF_AUDIO_MIXING: Audio mixing is over, user should - now call M4VSS3GPP_audioMixingCleanUp() - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_audioMixingStep(M4VSS3GPP_AudioMixingContext pContext, - M4OSA_UInt8 *pProgress); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_audioMixingCleanUp() - * @brief Free all resources used by the VSS audio mixing operation. - * @note The context is no more valid after this call - * @param pContext (IN) VSS 3GPP audio mixing context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_audioMixingCleanUp(M4VSS3GPP_AudioMixingContext pContext); - - -/** - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - * - * Extract Picture Feature - * - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - */ -/** - * Public type of the VSS extract picture context */ -typedef M4OSA_Void* M4VSS3GPP_ExtractPictureContext; - -/** - ****************************************************************************** - * struct M4VSS3GPP_ExtractPictureSettings - * @brief This structure defines the settings of the extract picture audio operation. - ****************************************************************************** - */ -typedef struct { - M4OSA_Void* pInputClipFile; /**< Input 3GPP clip file */ - M4OSA_Int32 iExtractionTime; /**< frame time (in ms) to be extracted */ - M4OSA_Void* pOutputYuvPic; /**< Output YUV picture name */ -} M4VSS3GPP_ExtractPictureSettings; - - -/****************************************************************************** - * M4OSA_ERR M4VSS3GPP_extractPictureInit() - * @brief Initializes the VSS extract picture operation (allocates an execution context). - * @note - * @param pContext (OUT) Pointer on the VSS extract picture context to allocate - * @param pSettings (IN) Pointer to valid extract picture settings - * @param pWidth (OUT) video stream width - * @param pHeight (OUT) video stream height - * @param pFileReadPtrFct (IN) Pointer to OSAL file reader functions - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) - * @return M4ERR_ALLOC: There is no more available memory - * @return M4VSS3GPP_ERR_INVALID_CLIP1: The input clip is empty - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_extractPictureInit( - M4VSS3GPP_ExtractPictureContext* pContext, - M4VSS3GPP_ExtractPictureSettings* pSettings, - M4OSA_UInt32 *pWidth, - M4OSA_UInt32 *pHeight, - M4OSA_FileReadPointer* pFileReadPtrFct ); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_extractPictureStep() - * @brief Perform one step of picture extraction. - * @note - * @param pContext (IN) VSS extract picture context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - * @param pDecPlanes (OUT) Plane in wich the extracted picture is copied - * @param pProgress (OUT) Progress percentage (0 to 100) - of the picture extraction - * @return M4ERR_STATE: VSS is not in an appropriate state for this - function to be called - * @return VSS_WAR_END_OF_EXTRACT_PICTURE: Picture extraction is over, user should now - call M4VSS3GPP_extractPictureCleanUp() - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_extractPictureStep(M4VSS3GPP_ExtractPictureContext pContext, - M4VIFI_ImagePlane *pDecPlanes, M4OSA_UInt8 *pProgress); - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_extractPictureCleanUp() - * @brief Free all resources used by the VSS picture extraction. - * @note The context is no more valid after this call - * @param pContext (IN) VSS extract picture context - * @return M4NO_ERROR: No error - * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_extractPictureCleanUp(M4VSS3GPP_ExtractPictureContext pContext); - -/** - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - * - * Common features - * - ****************************************************************************** - ****************************************************************************** - ****************************************************************************** - */ - -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_GetVersion() - * @brief Get the VSS version. - * @note Can be called anytime. Do not need any context. - * @param pVersionInfo (OUT) Pointer to a version info structure - * @return M4NO_ERROR: No error - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_GetVersion(M4_VersionInfo* pVersionInfo); - - -#ifdef WIN32 -/** - ****************************************************************************** - * M4OSA_ERR M4VSS3GPP_GetErrorMessage() - * @brief Return a string describing the given error code - * @note The input string must be already allocated (and long enough!) - * @param err (IN) Error code to get the description from - * @param sMessage (IN/OUT) Allocated string in which the description will be copied - * @return M4NO_ERROR: Input error is from the VSS3GPP module - * @return M4ERR_PARAMETER:Input error is not from the VSS3GPP module - ****************************************************************************** - */ -M4OSA_ERR M4VSS3GPP_GetErrorMessage(M4OSA_ERR err, M4OSA_Char* sMessage); -#endif /**< WIN32 */ - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __M4VSS3GPP_API_H__ */ - |