summaryrefslogtreecommitdiffstats
path: root/libvideoeditor/vss
diff options
context:
space:
mode:
authorhongteng <hongteng@google.com>2011-04-22 13:48:46 -0700
committerhongteng <hongteng@google.com>2011-04-22 13:48:46 -0700
commit0a389ab70db304fb840e33f33781ecc0503eae3c (patch)
tree85ef41c9a4b6a32c9647fe81c6330cb110aa94fa /libvideoeditor/vss
parent3b25fdc4a33b53cfcf67315c2d42ad699b8cefe2 (diff)
downloadframeworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.zip
frameworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.tar.gz
frameworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.tar.bz2
Fix for issue 3385135 "source code cleanup" engine part
- Removed below unused functions a. M4PTO3GPP_RegisterExternalVideoEncoder b. M4VSS3GPP_editRegisterExternalVideoDecoder c. M4VSS3GPP_editRegisterExternalVideoEncoder d. M4VSS3GPP_extractPictureRegisterExternalVideoDecoder e. M4VSS3GPP_editRegisterExternalCodec f. M4VSS3GPP_editSubscribeExternalCodecs g. M4VSS3GPP_intSubscribeExternalCodecs h. M4VSS3GPP_intClipRegisterExternalVideoDecoder i. M4xVSS_RegisterExternalVideoDecoder j. M4xVSS_RegisterExternalVideoEncoder k. M4MCS_registerExternalVideoDecoder l. M4MCS_registerExternalVideoEncoder m. M4MCS_registerExternalAudioDecoder n. M4MCS_registerExternalAudioEncoder o. M4DECODER_EXTERNAL_getInterface - Also remove small code associated with these functions and Remove below unsused src + header files a. M4CLOCK.h b. M4MDP_API.h c. M4VD_EXTERNAL_Internal.h d. M4VD_HW_API.h e. M4VE_API.h f. M4_Logo.h g. M4VD_EXTERNAL_Interface.c h. LV_Types.h i. M4OSA_FileAccess.h j. M4OSA_FileCache.h k. M4OSA_FileExtra.h l. M4OSA_FileReaderRam.h m. M4OSA_FileWriterRam.h n. M4OSA_String.h o. M4OSA_String_priv.h p. M4OSA_FileCache.c q. M4OSA_FileExtra.c r. M4OSA_FileReader_RAM.c s. M4OSA_FileWriter_RAM.c t. M4OSA_String.c u. M4OSA_String_priv.c Change-Id: I7271cbe92168e665a8e5b7afe7c7fe1c331eaa1e
Diffstat (limited to 'libvideoeditor/vss')
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4CLOCK.h50
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4ENCODER_AudioCommon.h3
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4MDP_API.h430
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4VD_EXTERNAL_Interface.h12
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4VD_EXTERNAL_Internal.h119
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4VD_HW_API.h159
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4VE_API.h824
-rwxr-xr-xlibvideoeditor/vss/common/inc/M4_Logo.h30
-rwxr-xr-xlibvideoeditor/vss/inc/M4PTO3GPP_API.h8
-rwxr-xr-xlibvideoeditor/vss/inc/M4PTO3GPP_InternalTypes.h7
-rwxr-xr-xlibvideoeditor/vss/inc/M4VSS3GPP_API.h140
-rwxr-xr-xlibvideoeditor/vss/inc/M4VSS3GPP_InternalFunctions.h11
-rwxr-xr-xlibvideoeditor/vss/inc/M4VSS3GPP_InternalTypes.h17
-rwxr-xr-xlibvideoeditor/vss/inc/M4xVSS_API.h44
-rwxr-xr-xlibvideoeditor/vss/inc/M4xVSS_Internal.h14
-rwxr-xr-xlibvideoeditor/vss/mcs/inc/M4MCS_API.h92
-rwxr-xr-xlibvideoeditor/vss/mcs/src/M4MCS_API.c296
-rwxr-xr-xlibvideoeditor/vss/mcs/src/M4MCS_BitstreamParser.c944
-rwxr-xr-xlibvideoeditor/vss/src/Android.mk1
-rwxr-xr-xlibvideoeditor/vss/src/M4ChannelCoverter.c2
-rwxr-xr-xlibvideoeditor/vss/src/M4PTO3GPP_API.c96
-rwxr-xr-xlibvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c1
-rwxr-xr-xlibvideoeditor/vss/src/M4VD_EXTERNAL_Interface.c1126
-rwxr-xr-xlibvideoeditor/vss/src/M4VSS3GPP_Clip.c81
-rwxr-xr-xlibvideoeditor/vss/src/M4VSS3GPP_Edit.c602
-rwxr-xr-xlibvideoeditor/vss/src/M4xVSS_API.c77
-rwxr-xr-xlibvideoeditor/vss/src/M4xVSS_internal.c95
27 files changed, 6 insertions, 5275 deletions
diff --git a/libvideoeditor/vss/common/inc/M4CLOCK.h b/libvideoeditor/vss/common/inc/M4CLOCK.h
deleted file mode 100755
index 963b135..0000000
--- a/libvideoeditor/vss/common/inc/M4CLOCK.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 M4CLOCK.h
- * @brief Clock and sleep functions types
- *
-*************************************************************************
-*/
-#ifndef __M4CLOCK_H__
-#define __M4CLOCK_H__
-
-#include "M4OSA_Types.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/**
- * Type of a function that returns time.
- */
-typedef M4OSA_Double (*M4CLOCK_getTime_fct) ( M4OSA_Void* pContext ) ;
-
-/**
- * Type of a function that suspends a task for a certain amount of time.
- */
-typedef M4OSA_Void (*M4CLOCK_sleep_fct) ( M4OSA_Void* pContext,\
- M4OSA_UInt32 durationInMs ) ;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __M4CLOCK_H__ */
-
diff --git a/libvideoeditor/vss/common/inc/M4ENCODER_AudioCommon.h b/libvideoeditor/vss/common/inc/M4ENCODER_AudioCommon.h
index 1386c8c..f63bcfe 100755
--- a/libvideoeditor/vss/common/inc/M4ENCODER_AudioCommon.h
+++ b/libvideoeditor/vss/common/inc/M4ENCODER_AudioCommon.h
@@ -29,6 +29,7 @@ extern "C" {
#endif /* __cplusplus */
#include "M4OSA_OptionID.h" /* for M4OSA_OPTION_ID_CREATE() */
+#include "M4OSA_CoreID.h"
#define M4ENCODER_AUDIO_NB_CHANNELS_MAX 2
/* WARNING: this value must be equal to the number of samples grabbed */
@@ -45,7 +46,7 @@ extern "C" {
typedef enum
{
/* Maximum generated AU size */
- M4ENCODER_Audio_maxAUsize = M4OSA_OPTION_ID_CREATE(M4_READ, M4ENCODER_AUDIO, 0x01)
+ M4ENCODER_Audio_maxAUsize = M4OSA_OPTION_ID_CREATE(M4_READ,M4ENCODER_AUDIO, 0x01)
} M4ENCODER_Audio_OptionID;
diff --git a/libvideoeditor/vss/common/inc/M4MDP_API.h b/libvideoeditor/vss/common/inc/M4MDP_API.h
deleted file mode 100755
index 1000cd8..0000000
--- a/libvideoeditor/vss/common/inc/M4MDP_API.h
+++ /dev/null
@@ -1,430 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 M4MDP_API.h
- * @brief Parser of metadata
- *
-*************************************************************************
-*/
-
-#ifndef __M4MDP_API_H__
-#define __M4MDP_API_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define MD4MDP_close M4MDP_close
-
-#include "M4READER_Common.h"
-#include "M4TOOL_VersionInfo.h"
-#include "M4OSA_FileReader.h"
-#include "M4OSA_FileWriter.h"
-
-/*define the buffer size for content detection*/
-#define M4MDP_INPUT_BUFFER_SIZE 8192
-
-/**
- ************************************************************************
- * Public type of the M4MDP_osaFilePtrSt
- ************************************************************************
-*/
-typedef struct
-{
- M4OSA_FileReadPointer* m_pFileReaderFcts;
- M4OSA_FileWriterPointer* m_pFileWriterFcts;
-} M4MDP_osaFilePtrSt;
-
-/**
- ************************************************************************
- * Public type of the MDP execution context
- ************************************************************************
-*/
-typedef M4OSA_Void* M4MDP_Context;
-
-/**
- ************************************************************************
- * Metadata Parser Errors & Warnings definition
- ************************************************************************
-*/
-#define M4WAR_MDP_MEDIATYPE_NOT_DETECTED M4OSA_ERR_CREATE(M4_WAR, M4MDP, 0x000001)
-
-#define M4ERR_MDP_FATAL M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000000)
-#define M4ERR_MDP_UNSUPPORTED_TAG_VERSION M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000001)
-#define M4ERR_MDP_UNSUPPORTED_ENCODING_TYPE M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000002)
-#define M4ERR_MDP_INIT_FAILED M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000003)
-#define M4ERR_MDP_ASSET_PARSING_ERROR M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000004)
-#define M4ERR_MDP_FILE_NOT_FOUND M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000005)
-#define M4ERR_MDP_INVALID_PATH M4OSA_ERR_CREATE(M4_ERR, M4MDP, 0x000006)
-
-/**
- ************************************************************************
- * Metadata parser FUNCTIONS
- ************************************************************************
-*/
-
-/**
- ************************************************************************
- * @brief Getting the version of the metadata parser
- * This function allows getting the version of the MDP library.
- *
- * @param pVersionInfo (OUT) Pointer on an allocated version info structure
- * After M4MDP_getVersion() successfully returns, this
- * structure is filled with the version numbers.
- * The structure must be allocated and further de-allocated
- * by the application.
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pVersionInfo is null (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getVersion(M4_VersionInfo* pVersionInfo);
-
-
-/**
- ************************************************************************
- * @brief Initializing the MDP
- * This function initializes the MDP and allocates the MDP execution
- * context and parses the metadata
- * @note This function allocates the memory needed to store metadata in
- * TAG ID3 V1&V2, ASF or 3gpp asset structure with the OSAL allocation
- * function.
- * This memory will be freed in M4MDP_cleanUp function
- *
- * @note This function is synchronous.
- *
- * @param pContext (OUT) Execution Context
- * @param pFilePath (IN) Pointer to the multimedia file path
- * @param pFileReaderFcts (IN) Pointer to a structure containing OSAL file reader
- * functions pointers
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER At least, one parameter is null (in DEBUG only)
- * @return M4ERR_ALLOC There is no more memory available
- * @return M4WAR_READER_NO_METADATA The input file doesn't contain metadata
- * @return M4ERR_UNSUPPORTED_MEDIA_TYPE The input file is not recognized
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_init(M4MDP_Context* pContext, M4OSA_Char* pFilePath,
- M4OSA_FileReadPointer* pFileReaderFcts);
-
-/**
- ************************************************************************
- * @brief This function frees the MDP execution context and all metadata
- * structures already allocated by M4MDP_init
- *
- * @note This function is synchronous.
- *
- * @param pContext (IN) Execution Context
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext is NULL. (in DEBUG only)
-************************************************************************
-*/
-M4OSA_ERR M4MDP_cleanUp(M4MDP_Context pContext);
-
-/**
- ************************************************************************
- * @brief This function Initializes the meta data parser only once to check several files one
- * after another.
- *
- * @note This function is synchronous.
- *
- * @param pContext (IN) Execution Context
- * @param pFileReaderFcts (IN) Pointer to a structure containing OSAL file reader
- * functions pointers
-*
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext is NULL. (in DEBUG only)
-************************************************************************
-*/
-M4OSA_ERR M4MDP_globalInit(M4MDP_Context* pContext, M4OSA_FileReadPointer* pFileReaderFcts);
-
-/**
- ************************************************************************
- * @brief This function opens a file in the meta data parser
- *
- * @note This function is synchronous.
- *
- * @param pContext (IN) Execution Context
- * @param pFilePath (IN) Pointer to the multimedia file path
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext is NULL. (in DEBUG only)
-************************************************************************
-*/
-M4OSA_ERR M4MDP_open(M4MDP_Context* pContext, M4OSA_Char* pFilePath);
-
-/**
- ************************************************************************
- * @brief This function closes a file in the meta data parser
- *
- * @note This function is synchronous.
- *
- * @param pContext (IN) Execution Context
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext is NULL. (in DEBUG only)
-************************************************************************
-*/
-M4OSA_ERR M4MDP_close(M4MDP_Context* pContext);
-
-
-/**
- ************************************************************************
- * @brief The function allows the retrieval of all fields of the
- * M4_MetaDataFields structure
- * It basically sets M4_MetaDataFields structure fields pointers to
- * the corresponding already retrieved metadata
- *
- * @note If metadata are retrieved from an MP3 or an AAC files, and both
- * TAG ID3 V1 and V2 are present, then, priority is for metadata of TAG ID3 V2
- *
- * @note This function is synchronous.
- * @note This function is used specially by the music manager project
- *
- * @param pContext (IN) Execution Context
- * @param pMetadata (OUT) Pointer to M4_MetaDataFields structure
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pMetadata is NULL. (in DEBUG only)
- * @return M4WAR_READER_NO_METADATA The input file doesn't contain metadata
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getMetadata(M4MDP_Context pContext, M4_MetaDataFields* pMetadata);
-
-/**
- ************************************************************************
- * @brief This function returns the audio and video media type
- *
- * @note This function is synchronous.
- * @note This function is used specially by the music manager project
- *
- * @param pContext (IN) Execution Context
- * @param pAudio (OUT) Audio media type pointer
- * @param pVideo (OUT) Video media type pointer
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER At least one parameter is NULL. (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getStreamsType(M4MDP_Context pContext,M4_StreamType* pAudio,M4_StreamType* pVideo);
-
-
-/**
- ************************************************************************
- * @brief This function returns the mediaType
- *
- * @note This function is synchronous.
- * @note This function is used specially by the music manager project
- *
- * @param pContext (IN) Execution Context
- * @param pMediaType (OUT) MediaType pointer
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER At least one parameter is NULL. (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getMediaType(M4MDP_Context pContext,M4READER_MediaType* pMediaType);
-
-/******************************************************************************
-* @brief returns mediaType found in a file
-* @note
-* @param pFileDescriptor (IN) : pointer to file descriptor
-* @param pFileFunction (IN) : pointer to file function
-* @param pMediaType (OUT) : mediaType if found
-* @return M4NO_ERROR / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR M4MDP_getMediaTypeFromFile(M4OSA_Void *pFileDescriptor,
- M4OSA_FileReadPointer *pFileFunction,
- M4READER_MediaType *pMediaType);
-
-/******************************************************************************
-* @brief return media type by extension and content detections
-* @note
-* @param pFileDescriptor (IN) : pointer to file descriptor
-* @param dataBuffer (IN) : memory buffer
-* @param bufferSize (IN) : buffer size
-* @param pMediaType (OUT) : mediaType if found
-* @return M4NO_ERROR / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR M4MDP_getMediaTypeFromExtensionAndContent(M4OSA_Void *pFileDescriptor,
- M4OSA_UInt8 *dataBuffer,
- M4OSA_UInt32 bufferSize,
- M4READER_MediaType *pMediaType);
-
-/******************************************************************************
-* @brief return media type by content detection
-* @note
-* @param dataBuffer (IN) : memory buffer
-* @param bufferSize (IN) : buffer size
-* @param pMediaType (OUT) : mediaType if found
-* @return M4NO_ERROR / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR M4MDP_getMediaTypeFromContent(M4OSA_UInt8 *dataBuffer, M4OSA_UInt32 bufferSize,
- M4READER_MediaType *pMediaType);
-
-/**
- ************************************************************************
- * @brief The function parses the buffer pAsfBuffer, extracts metadata,
- * allocates memory for pMetaData and fills in.
- *
- * @note pAsfBuffer owns the application (caller).
- * The application free pAsfBuffer and pMetaData
- *
- * @note This function is synchronous.
- *
- * @param pAsfBuffer (IN) input buffer
- * @param pMetaData (OUT) Pointer to the metadata structure
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pAsfBuffer is NULL. (in DEBUG only)
- * @return M4ERR_ALLOC There is no more memory available
- * @return M4WAR_READER_NO_METADATA The M4READER_Buffer doesn't contain metadata
- * @return M4ERR_UNSUPPORTED_MEDIA_TYPE The input file is not recognized
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_parseASFContentDesc(M4READER_Buffer* pAsfBuffer, M4_MetaDataFields *pMetaData);
-
-
-/**
- ************************************************************************
- * @brief The function allocates memory for pMetaData and copies its
- * pAssetFields fields
- *
- * @note The application which calls M4MDP_parse3GppAssetField MUST free pMetaData.
- *
- * @note This function is synchronous.
- *
- * @param pAssetFields (IN) Asset fields structure filled by the 3gpp reader
- * @param pMetaData (OUT) Metadata structure to be filled in
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pAssetFields is NULL. (in DEBUG only)
- * @return M4ERR_ALLOC There is no more memory available
- * @return M4ERR_UNSUPPORTED_MEDIA_TYPE The input file is not recognized
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_parse3GppAssetField(M4_MetaDataFields* pAssetFields, M4_MetaDataFields *pMetaData);
-
-
-/**
- ************************************************************************
- * @brief The function allocates memory for pMetaData and copies its
- * pExifFields fields
- *
- * @note The application which calls M4MDP_parseExifField MUST free pMetaData.
- *
- * @note This function is synchronous.
- *
- * @param pExifFields (IN) Exif fields structure filled by the exif reader
- * @param pMetaData (OUT) Metadata structure to be filled in
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pAssetFields is NULL. (in DEBUG only)
- * @return M4ERR_ALLOC There is no more memory available
- * @return M4ERR_UNSUPPORTED_MEDIA_TYPE The input file is not recognized
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_parseExifField(M4_MetaDataFields *pExifFields, M4_MetaDataFields *pMetaData);
-
-
-/**
- ************************************************************************
- * @brief The function allocates and fills the pMetaDataStruct by parsing
- * a buffer
- *
- * @note pMetaDataStruct owns the application (caller).
- * It is the responsibility of the application (caller) to free it
- *
- * @note This function is synchronous.
- *
- * @param pBuffer (IN) input buffer
- * @param mediaType (IN) media type of the buffer
- * @param pMetaDataStruct (OUT) Pointer to an array of metadata
- * @param pSize (OUT) pMetaDataStruct size
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pBuffer or pMetaDataStruct is NULL.
- * (in DEBUG only)
- * @return M4ERR_ALLOC There is no more memory available
- * @return M4ERR_UNSUPPORTED_MEDIA_TYPE The media type is not supported
- * @return M4WAR_READER_NO_METADATA No metadata detected
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getMetaDataFromBuffer(M4_MetadataBuffer* pBuffer,
- M4READER_MediaType mediaType,
- M4_MetaDataFields** pMetaDataStruct,
- M4OSA_UInt32* pSize);
-
-/**
- ************************************************************************
- * @brief The function initializes the metadata structure
- *
- * @param pMetadata (OUT) Pointer to M4_MetaDataFields structure
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pMetadata is NULL. (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_InitMetaDataFields(M4_MetaDataFields *pMetaDataTab);
-
-/**
- ************************************************************************
- * @brief The function frees the metadata structure
- *
- * @param pMetadata (IN) Pointer to M4_MetaDataFields structure
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pMetadata is NULL. (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_FreeMetaDataFields(M4_MetaDataFields *pMetaDataTab);
-
-/******************************************************************************
-* @brief returns mediaType found in a file
-* @note
-* @param pContext (IN) : pointer to file descriptor
-* @param pFileDescriptor (IN) : pointer to file descriptor
-* @param pFileFunction (IN) : pointer to file function
-* @param pMediaType (OUT) : mediaType if found
-* @return M4NO_ERROR / M4ERR_ALLOC
-******************************************************************************/
-M4OSA_ERR M4MDP_getMediaTypeFromFileExtended( M4MDP_Context pContext,
- M4OSA_Void *pFileDescriptor,
- M4OSA_FileReadPointer *pFileFunction,
- M4READER_MediaType *pMediaType);
-
-/**
- ************************************************************************
- * @brief The function to get file size
- *
- * @param pContext (IN) Pointer to M4MDP Context structure
- * @param pSize (OUT)Pointer to file size
- *
- * @return M4NO_ERROR No error
- * @return M4ERR_PARAMETER pContext or pMetadata is NULL. (in DEBUG only)
- ************************************************************************
-*/
-M4OSA_ERR M4MDP_getMetaDataFileSize(M4MDP_Context pContext, M4OSA_UInt32 *pSize);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __M4MDP_API_H__ */
diff --git a/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Interface.h b/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Interface.h
index 170620c..90df82b 100755
--- a/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Interface.h
+++ b/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Interface.h
@@ -20,22 +20,10 @@
#include "M4DECODER_Common.h"
-#include "M4VD_HW_API.h"/* M4VD_Interface */
-
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct
-{
- M4VD_Interface* externalFuncs;
- M4OSA_Void* externalUserData;
-}* M4DECODER_EXTERNAL_UserDataType;
-
-/* ----- Interface retrieval ----- */
-
-M4OSA_ERR M4DECODER_EXTERNAL_getInterface(M4DECODER_VideoInterface** pDecoderInterface);
-
/* ----- DSI bitstream parser ----- */
/* This function is available to clients of the shell to allow them to analyse clips
diff --git a/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Internal.h b/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Internal.h
deleted file mode 100755
index f2dacb2..0000000
--- a/libvideoeditor/vss/common/inc/M4VD_EXTERNAL_Internal.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 __M4VD_EXTERNAL_INTERNAL_H__
-#define __M4VD_EXTERNAL_INTERNAL_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "NXPSW_CompilerSwitches.h"
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
-#include "M4OSA_Semaphore.h"
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
-/*typedef enum
-{
- M4VS_THREAD_IS_IDLE = 0,
- M4VS_THREAD_IS_RUNNING = 1,
- M4VS_THREAD_IS_STOPPING = 2
-
-} M4VS_ThreadState_t;*/
-
-
-/* ----- internal VS context ----- */
-
-typedef struct
-{
- /* READER */
- /**< Reference to the reader data interface used to read access units */
- M4READER_DataInterface* m_pReader;
- /**< Reference to the access unit used read and decode one frame (the AU could be passed by
- the user instead of reading it from inside the decoder) */
- M4_AccessUnit* m_pNextAccessUnitToDecode;
- /**< Flag to know if we decode just after a (read) jump */
- M4OSA_Bool m_bJump;
- M4_MediaTime m_nextAUCts; /**< CTS of the AU above */
-
- /* DECODER */
-
- M4_MediaTime m_DecodeUpToCts; /**< Target Cts for the decode up to loop */
- M4_MediaTime m_CurrentDecodeCts; /**< Cts of the latest frame decoded */
- M4_MediaTime m_PreviousDecodeCts; /**< Cts of the previous frame decoded */
- M4OSA_UInt32 m_NbDecodedFrames; /**< Number of frames decoded in the decode
- up to loop (can be 0) */
- M4OSA_ERR m_uiDecodeError; /**< Error or warning code (from the VD
- reader or decoder) returned to the
- shell */
- M4OSA_Bool m_bDataDecodePending; /**< There is some data to decode */
- M4OSA_Bool m_bIsWaitNextDecode; /**< Do we need to wait for the anticipated
- decoding to finish ? */
-
- /* RENDER */
-
- M4_MediaTime m_TargetRenderCts; /**< Cts for the rendering step */
- M4_MediaTime m_CurrentRenderCts; /**< Cts of the latest frame decoded */
- M4OSA_ERR m_uiRenderError; /**< Error or warning code (from the
- VD render) returned to the shell */
- M4OSA_Bool m_bForceRender; /**< Force rendering even if 0 frames
- are decoded (i.e. already
- previously decoded) */
- M4OSA_Bool m_bDataRenderPending; /**< There is some data to render */
-
- /* STREAM PARAMS */
-
- M4_VideoStreamHandler* m_pVideoStreamhandler; /**< reference to the video
- stream description passed by
- the user */
- M4VD_StreamInfo* m_pStreamInfo;
- M4DECODER_VideoSize m_VideoSize;
- M4DECODER_MPEG4_DecoderConfigInfo m_Dci; /**< Information collected from
- DSI parsing */
- M4VIFI_ImagePlane* m_pOutputPlane; /**< Pointer to YUV output planes */
-
- /* VD API */
-
- M4VD_Interface* m_VD_Interface; /**< pointers to HW functions */
- M4VD_SignalingInterface m_VD_SignalingInterface; /**< pointers to Shell signaling
- functions */
- M4VD_Context m_VD_Context; /**< pointer to the real hardware
- context */
-
- /* THREAD STUFF */
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- M4OSA_Context m_SemSync;
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-} M4VS_VideoDecoder_Context;
-
-
-/* ----- bitstream parser ----- */
-/*
-typedef struct
-{
- M4OSA_UInt32 stream_byte;
- M4OSA_UInt32 stream_index;
- M4OSA_MemAddr8 in;
-
-} M4VS_Bitstream_ctxt;
-*/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __M4VD_EXTERNAL_INTERNAL_H__ */
diff --git a/libvideoeditor/vss/common/inc/M4VD_HW_API.h b/libvideoeditor/vss/common/inc/M4VD_HW_API.h
deleted file mode 100755
index ba33d14..0000000
--- a/libvideoeditor/vss/common/inc/M4VD_HW_API.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 __M4VD_HW_API_H__
-#define __M4VD_HW_API_H__
-
-#include "M4OSA_Types.h"
-#include "M4OSA_OptionID.h"
-#include "M4OSA_CoreID.h"
-#include "M4OSA_Error.h"
-#include "M4OSA_Memory.h" /* M4OSA_MemAddrN */
-
-#include "M4VIFI_FiltersAPI.h"
-
-/**
- ************************************************************************
- * @file M4VD_HW_API.H
- * @brief
- * @note
- ************************************************************************
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* ----- Hardware decoder errors and warnings ----- */
-
-#define M4ERR_VD_FATAL M4OSA_ERR_CREATE(M4_ERR, M4VD_EXTERNAL, 0x0001)
-
-
-/* ----- enum definitions ----- */
-
-typedef enum
-{
- M4VD_kOptionId_Dummy = 0
-
-} M4VD_OptionID;
-
-typedef enum
-{
- M4VD_kMpeg4VideoDec,
- M4VD_kH263VideoDec,
- M4VD_kH264VideoDec,
- M4VD_kVideoType_NB /* must remain last */
-} M4VD_VideoType;
-
-typedef enum
-{
- M4VD_kNone,
- M4VD_kYUV420,
- M4VD_kYUV422,
- M4VD_kYUYV422,
- M4VD_kRGB565,
- M4VD_kBGR565
-
-} M4VD_OutputFormat;
-
-
-/* ----- structure definitions ----- */
-
-typedef struct
-{
- M4OSA_MemAddr32 pBuffer; /**< pointer to video buffer - 32 bits aligned */
- M4OSA_UInt32 bufferSize; /**< the size in bytes of the buffer */
-
-} M4VD_VideoBuffer;
-
-typedef struct
-{
- M4OSA_UInt32 aWidth; /**< Width of the Image */
- M4OSA_UInt32 aHeight; /**< Height of the Image */
-
-} M4VD_ImageSize;
-
-typedef struct
-{
- M4OSA_MemAddr8 pBuffer; /**< Pointer to the decoder configuration */
- M4OSA_UInt32 aSize; /**< Size of the buffer */
-
-} M4VD_DecoderConfig;
-
-typedef struct
-{
- M4VD_ImageSize anImageSize; /**<Size of the image*/
- M4VD_DecoderConfig decoderConfiguration; /**<configuration of the decoder*/
-
-} M4VD_StreamInfo;
-
-
-/* ----- callbacks prototypes ----- */
-
-typedef M4OSA_ERR (M4VD_CB_signalDecoderOver_fct)( M4OSA_Void* signalTarget,
- M4OSA_Double frameTime, M4OSA_ERR err);
-typedef M4OSA_ERR (M4VD_CB_signalRenderOver_fct) ( M4OSA_Void* signalTarget,
- M4OSA_Double frameTime, M4OSA_ERR err);
-
-typedef struct
-{
- M4OSA_Void* m_pSignalTarget;
-
- /* decoder callbacks that need to be raised by HW decoder functions */
- M4VD_CB_signalDecoderOver_fct* m_pFctSignalDecoderOver;
- M4VD_CB_signalRenderOver_fct* m_pFctSignalRenderOver;
-
-} M4VD_SignalingInterface;
-
-
-/* ----- Hardware decoder functions set ----- */
-
-typedef void* M4VD_Context; /* Video Decoder context (for M4VD_HW_xxxx functions) */
-
-
-/* common */
-typedef M4OSA_ERR (M4VD_init_fct) ( M4VD_Context*, M4VD_SignalingInterface* );
-typedef M4OSA_ERR (M4VD_setOption_fct) ( M4VD_Context, M4VD_OptionID, M4OSA_DataOption );
-typedef M4OSA_ERR (M4VD_getOption_fct) ( M4VD_Context, M4VD_OptionID, M4OSA_DataOption* );
-typedef M4OSA_ERR (M4VD_openDecoder_fct) ( M4VD_Context, M4VD_VideoType, M4VD_StreamInfo*,
- M4VD_OutputFormat*, M4OSA_Void* );
-typedef M4OSA_ERR (M4VD_stepDecode_fct) ( M4VD_Context, M4VD_VideoBuffer*, M4OSA_Double );
-typedef M4OSA_ERR (M4VD_stepRender_fct) ( M4VD_Context, M4VIFI_ImagePlane*, M4OSA_Double );
-typedef M4OSA_ERR (M4VD_closeDecoder_fct)( M4VD_Context );
-typedef M4OSA_ERR (M4VD_cleanUp_fct) ( M4VD_Context );
-typedef M4OSA_ERR (M4VD_setOutputFilter_fct)( M4VD_Context, M4VIFI_PlanConverterFunctionType*,
- M4OSA_Void*);
-
-typedef struct
-{
- M4VD_init_fct* m_pFctInitVideoDecoder;
- M4VD_setOption_fct* m_pFctSetOption;
- M4VD_getOption_fct* m_pFctGetOption;
- M4VD_openDecoder_fct* m_pFctOpenDecoder;
- M4VD_stepDecode_fct* m_pFctStepDecode;
- M4VD_stepRender_fct* m_pFctStepRender;
- M4VD_closeDecoder_fct* m_pFctClose;
- M4VD_cleanUp_fct* m_pFctCleanUp;
- M4VD_setOutputFilter_fct* m_pFctSetOutputFilter;
-} M4VD_Interface;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __M4VD_HW_API_H__ */
diff --git a/libvideoeditor/vss/common/inc/M4VE_API.h b/libvideoeditor/vss/common/inc/M4VE_API.h
deleted file mode 100755
index 5c27003..0000000
--- a/libvideoeditor/vss/common/inc/M4VE_API.h
+++ /dev/null
@@ -1,824 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 M4VE_API.h
- * @note This file declares the generic shell interface retrieving function
- * of any external encoder.
-******************************************************************************
-*/
-
-#ifndef __M4VE_API_H__
-#define __M4VE_API_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * OSAL types definition */
-#include "M4OSA_Types.h"
-#include "M4OSA_Time.h"
-#include "M4OSA_Memory.h"
-#include "M4OSA_CoreID.h"
-#include "M4OSA_OptionID.h"
-
-/**
- * Include Video filters interface definition (for the M4VIFI_ImagePlane type) */
-#include "M4VIFI_FiltersAPI.h"
-
-
-/**
- ************************************************************************
- * VE Errors & Warnings definition
- ************************************************************************
-*/
-#define M4ERR_VE_FATAL ((M4OSA_ERR)M4OSA_ERR_CREATE(M4_ERR, M4VE_EXTERNAL, 0x000000))
-
-
-/**
- *********************************************************************************************
- * enum M4VE_EncoderMode
- * @brief This enum defines in which mode the external encoder will be used
- * ("Standalone encoder" or "Encoder + Grabber").
- *********************************************************************************************
- */
-typedef enum
-{
- M4VE_kSEMode, /**< "Standalone Encoder" mode */
- M4VE_kEGMode /**< "Encoder + Grabber" mode */
-} M4VE_EncoderMode;
-
-
-/**
- *********************************************************************************************
- * enum M4VE_EncoderType
- * @brief This enum defines the supported encoder types.
- *********************************************************************************************
- */
-typedef enum
-{
- M4VE_kMpeg4VideoEnc, /**< MPEG-4 */
- M4VE_kH263VideoEnc, /**< H263 */
- M4VE_kH264VideoEnc, /**< H264 */
- M4VE_kMJPEGEnc, /**< MJPEG */
- M4VE_kEncoderType_NB
-} M4VE_EncoderType;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_ImageSize
- * @brief This structure defines video frame size (for both grabbing and encoding).
- *********************************************************************************************
- */
-typedef struct
-{
- M4OSA_UInt32 width; /**< Width of the Image */
- M4OSA_UInt32 height; /**< Height of the Image */
-} M4VE_ImageSize;
-
-
-/**
- *********************************************************************************************
- * enum M4VE_FormatConfig
- * @brief This enum defines the frame format we have in input for the grabbing
- * part of the external encoder.
- *********************************************************************************************
-*/
-typedef enum
-{
- M4VE_kYUV420=0, /**< YUV 4:2:0 planar (standard input for mpeg-4 video) */
- M4VE_kYUV422, /**< YUV422 planar */
- M4VE_kYUYV, /**< YUV422 interlaced, luma first */
- M4VE_kUYVY, /**< YUV422 interlaced, chroma first */
- M4VE_kJPEG, /**< JPEG compressed frames */
- M4VE_kRGB444, /**< RGB 12 bits 4:4:4 */
- M4VE_kRGB555, /**< RGB 15 bits 5:5:5 */
- M4VE_kRGB565, /**< RGB 16 bits 5:6:5 */
- M4VE_kRGB24, /**< RGB 24 bits 8:8:8 */
- M4VE_kRGB32, /**< RGB 32 bits */
- M4VE_kBGR444, /**< BGR 12 bits 4:4:4 */
- M4VE_kBGR555, /**< BGR 15 bits 5:5:5 */
- M4VE_kBGR565, /**< BGR 16 bits 5:6:5 */
- M4VE_kBGR24, /**< BGR 24 bits 8:8:8 */
- M4VE_kBGR32 /**< BGR 32 bits */
-} M4VE_FormatConfig;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_Framerate
- * @brief This structure defines the maximum framerate the encoder will have
- * at input and will generate at output (in frames per second).
- *********************************************************************************************
-*/
-typedef struct
-{
- M4OSA_UInt32 framerateNum; /**< Framerate numerator */
- M4OSA_UInt32 framerateDen; /**< Framrate denominator */
-} M4VE_Framerate;
-/**< For example, a framerate of 29.97 fps for H263 encoding will be expressed as:
- FramerateNum = 30000
- FramerateDen = 1001 */
-
-
-/**
- *********************************************************************************************
- * struct M4VE_GrabbingParameters
- * @brief This structure defines the grabbing parameters set at open step.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_ImageSize size; /**< Size of grabbed frames */
- M4VE_FormatConfig format; /**< Format of the grabbed frames (YUV420, RGB565,etc.) */
-} M4VE_GrabbingParameters;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_EncodingParameters
- * @brief This structure defines the encoding parameters set at open step.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_EncoderType type; /**< coding type (H263/H264/MPEG-4)*/
- M4VE_ImageSize size; /**< Size of frames to encode */
- M4OSA_Bool bRateControlEnable; /**< Flag to enable/disable rate control */
- M4OSA_Bool bLowDelay; /**< force encoder in "low delay" mode */
- M4OSA_UInt32 bitrate; /**< Average targeted bitrate in bit per sec */
- M4VE_Framerate framerate; /**< Maximum input framerate */
- M4OSA_UInt32 timescale; /**< timescale of the video bitstream */
- M4OSA_Context pUserSettings; /**< Additionnal user settings passed by the
- application to the service at Codec registration */
-} M4VE_EncodingParameters;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_VideoBuffer
- * @brief This structure defines the output buffer where the encoded data
- * are stored by the encoder.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr32 pBuffer; /**< pointer to video buffer 32 bits aligned */
- M4OSA_UInt32 bufferSize; /**< the size in bytes of the buffer */
-} M4VE_VideoBuffer;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_ParameterSet
- * @brief Parameter set structure used for H264 headers.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4OSA_UInt16 length; /**< Number of items*/
- M4OSA_UInt8* pParameterSetUnit; /**< Array of items*/
-} M4VE_ParameterSet;
-
-
-/**
- *********************************************************************************************
- * struct M4VE_H264HeaderBuffer
- * @brief This structure defines the buffer where the stream header is stored
- * by the encoder, in case of H264
- *********************************************************************************************
-*/
-typedef struct
-{
- M4OSA_UInt8 NALUnitLength; /**< length in bytes of a NAL access Unit */
- M4OSA_UInt8 nOfSequenceParametersSets; /**< Number of sequence parameter sets*/
- M4OSA_UInt8 nOfPictureParametersSets; /**< Number of picture parameter sets*/
- M4VE_ParameterSet *pSequenceParameterSets; /**< Sequence parameter set array */
- M4VE_ParameterSet *pPictureParameterSets; /**< Picture parameter set array */
-} M4VE_H264HeaderBuffer;
-
-
-
-/**
- *********************************************************************************************
- * struct M4VE_HeaderBuffer
- * @brief This structure defines the buffer where the stream header is stored
- * by the encoder.
- *********************************************************************************************
-*/
-typedef struct
-{
- union
- {
- M4VE_VideoBuffer header; /**< MPEG-4, H263, MJPEG */
- M4VE_H264HeaderBuffer H264Header; /**< H264 */
- }M4VE_SpecificHeader;
-} M4VE_HeaderBuffer;
-
-
-/**
- *********************************************************************************************
- * enum M4VE_OptionID
- * @brief This defines the supported options handled by the video encoder interface.
- *********************************************************************************************
-*/
-typedef enum
-{
- dummy=0
-} M4VE_OptionID;
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalOpenEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the external encoder is opened.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalOpenEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalHeaderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode,
- * M4VE_HeaderBuffer *pBuffer);
- * @brief This function signals to the service that the stream header is ready.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @param pBuffer : (IN) Stream header.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER pBuffer field is null or invalid.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalHeaderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode,
- M4VE_HeaderBuffer *pBuffer);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalStartGrabberDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the grabbing part is started.
- * This callback is unused in the "standalone encoder" mode.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalStartGrabberDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalStartEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the external encoder is started.
- * This callback is unused in the "standalone encoder" mode.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalStartEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalEncodeDone)(M4OSA_Context pUserData, M4OSA_ERR errCode,
- M4OSA_UInt32 cts, M4VE_VideoBuffer* pBuffer);
- * @brief This function signals to the service that the encoding of a frame is done.
- * The integrator must call this function when the encoding of the video
- * frame is completed (for example in an interrupt callback).
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @param cts : (IN) Time of the encoded frame (from stepEncode).
- * @param pBuffer : (IN) Encoded data Buffer.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER At least one parameter is null or invalid.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalEncodeDone)(M4OSA_Context pUserData, M4OSA_ERR errCode,
- M4OSA_Time cts, M4VE_VideoBuffer* pBuffer);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalStopGrabberDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the grabbing part is stopped.
- * This callback is unused in the "standalone encoder" mode.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalStopGrabberDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalStopEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the external encoder is stopped.
- * This callback is unused in the "standalone encoder" mode.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalStopEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-/**
- *********************************************************************************************
- * M4OSA_Int32 (*M4VE_SignalCloseEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
- * @brief This function signals to the service that the external encoder is closed.
- * @note The external encoder returns one of the following codes in the errCode parameter:
- * M4NO_ERROR There is no error
- * M4ERR_VE_FATAL a fatal error occurred
- * @param pUserData: (IN) User data provided by the service at init step.
- * @param errCode : (IN) Error code returned to the service internal layers.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_VE_FATAL: a fatal error occurred.
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SignalCloseEncoderDone)(M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-
-
-
-/**
- *********************************************************************************************
- * struct M4VE_GenericCallback
- * @brief This structure is used to pass the generic callbacks, i.e. the ones that are used
- * in both "Standalone Encoder" and "Encoder + Grabber" modes.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_SignalOpenEncoderDone pOpenEncoderDone; /**< Callback to use at open completion */
- M4VE_SignalHeaderDone pHeaderDone; /**< Callback to use when the stream
- header is ready */
- M4VE_SignalEncodeDone pEncodeDone; /**< Callback to use for any frame
- encoding completion */
- M4VE_SignalCloseEncoderDone pCloseEncoderDone;/**< Callback to use at close completion */
-} M4VE_GenericCallback; /**< Callbacks used in all encoder modes */
-
-/**
- *********************************************************************************************
- * struct M4VE_EGModeCallback
- * @brief This structure is used to pass the callbacks used in the "Encoder + Grabber" mode
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_SignalStartGrabberDone pStartGrabberDone;/**< Callback to use at start
- completion of the grabber part*/
- M4VE_SignalStartEncoderDone pStartEncoderDone;/**< Callback to use at start
- completion of the encoder part*/
- M4VE_SignalStopGrabberDone pStopGrabberDone; /**< Callback to use at stop
- completion of the grabber part*/
- M4VE_SignalStopEncoderDone pStopEncoderDone; /**< Callback to use at stop
- completion of the encoder part*/
-} M4VE_EGModeCallback; /**< Callbacks used in "Encoder + Grabber" mode */
-
-/**
- *********************************************************************************************
- * struct M4VE_SEModeCallback
- * @brief This structure is used to pass the callbacks used in the "Standalone Encoder" mode
- * @note There's no specific callback for the standalone encoder mode,
- * but we have to declare one
- * @note for some compilers
- *********************************************************************************************
-*/
-typedef M4OSA_Int32 (*M4VE_SEDummyCB) (M4OSA_Context pUserData, M4OSA_ERR errCode);
-
-typedef struct
-{
- M4VE_SEDummyCB pDummySECB; /**< No specific callback for
- Standalone encoder mode */
-} M4VE_SEModeCallback; /**< Callbacks used in "Standalone Encoder" mode */
-
-
-/**
- *********************************************************************************************
- * struct M4VE_CallbackInterface
- * @brief This structure is the container for the whole set of callback used by external encoder
- *********************************************************************************************
-*/
-
-typedef struct
-{
- M4VE_GenericCallback genericCallback;/**< Callbacks used in all modes */
- union
- {
- M4VE_EGModeCallback EGModeCallback; /**< Callbacks used in "Encoder + Grabber" mode */
- M4VE_SEModeCallback SEModeCallback; /**< Callbacks used in "Standalone Encoder" mode */
- } M4VE_SpecificModeCallBack;
- M4OSA_Context pUserData; /**< Internal user data to be retrieved in each
- callbach above */
-} M4VE_CallbackInterface;
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_initEncoder_fct)(M4OSA_Context* pContext,
- * M4VE_CallbackInterface* pCallbackInterface);
- * @brief This function initializes the external video encoder API.
- * @note This function typically allocates the user context that will be provided
- * to the other functions as their first argument. The second argument is
- * the callback interface given by the service. Encoder implementation is supposed
- * to use these callbacks in response to each asynchronous API function.
- * All these callbacks must be called with the pUserData field specified
- * by the service inside the M4VE_CallbackInterface structure.
- * @param pContext: (OUT) Execution context of the encoder.
- * @param pCallbackInterface: (IN) Callback interface.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: At least one parameter is not correct (NULL or invalid).
- * @return M4ERR_ALLOC: there is no more available memory.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_initEncoder_fct)(M4OSA_Context* pContext,
- M4VE_CallbackInterface* pCallbackInterface);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_setOption_fct)(M4OSA_Context, M4VE_OptionID, M4OSA_DataOption);
- * @brief This function is used to set an option in the video encoder interface.
- * @note none
- * @param pContext: (IN) Execution context of the encoder.
- * @param optionId: (IN) Id of the option to set.
- * @param pValue: (IN) Pointer of the option data to set.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: At least one parameter is not correct (NULL or invalid).
- * @return M4ERR_BAD_OPTION_ID:The requested option Id is invalid.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_setOption_fct)(M4OSA_Context pContext, M4VE_OptionID optionId,
- M4OSA_DataOption pValue);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_getOption_fct)(M4OSA_Context, M4VE_OptionID, M4OSA_DataOption*);
- * @brief This function is used to retrieve an option in the video interface.
- * @note none
- * @param pContext: (IN) Execution context of the encoder.
- * @param optionId: (IN) Id of the option to set.
- * @param pValue: (OUT) Pointer to the location where the requested option will
- * be stored.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: At least one parameter is not correct (NULL or invalid).
- * @return M4ERR_BAD_OPTION_ID:The requested option Id is invalid.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_getOption_fct)(M4OSA_Context pContext, M4VE_OptionID optionId,
- M4OSA_DataOption* pValue);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_openEncoder_fct)(M4OSA_Context pContext,
- * M4VE_GrabbingParameters *pGrabbingParams,
- * M4VE_EncodingParameters *pEncodingParams);
- * @brief This function opens an instance of the video encoder.
- * Both encoding and grabbing parameters are specified here.
- * @note This function is asynchronous, thus the external encoder must call the corresponding
- * M4VE_SignalOpenEncoderDone callback function when the opening step is internally
- * completed.
- * Please note that both grabber and encoder components are opened at this step in
- * the "encoder + grabber" mode. In response to this open, the encoder must also return
- * the stream header (including VOS, VO & VOL) using the M4VE_SignalHeaderDone callback
- * function. Usually the service waits for this callback between the
- * M4VE_SignalOpenEncoderDone
- * callback and the M4VE_SignalCloseEncoderDone callback in order to handle it.
- * @param pContext: (IN) Execution context of the encoder.
- * @param pGrabbingParams: (IN) Grabbing parameters (can be optional, in this case is
- * must be NULL).
- * @param pEncodingParams: (IN) Encoding parameters.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: At least one parameter is not correct (NULL or invalid).
- * @return M4ERR_ALLOC: there is no more available memory.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not be opened
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_openEncoder_fct)(M4OSA_Context pContext,
- M4VE_GrabbingParameters *pGrabbingParams,
- M4VE_EncodingParameters *pEncodingParams);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_forceIFrame_fct)(M4OSA_Context pContext);
- * @brief This function is used by the service to signal the external encoder that an Intra
- * refresh frame must be encoded. This function is used in both "Standalone Encoder" and
- * "Encoder + grabber" modes and can be called at any time during the encoding session.
- * @note For the "Encoder + Grabber" mode, this function can be called between the reception
- * of the M4VE_SignalStartEncoderDone callback and the call to M4VE_stopEncoder_fct.
- * For the "Standalone Encoder" mode, this function can be called between the reception
- * of the M4VE_SignalOpenEncoderDone callback and the call to M4VE_closeEncoder_fct.
- * The expected behavior is that the external encoder encodes an intra refresh frame
- * for one of the frames coming next to the call of M4VE_forceIFrame_fct.
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not handle this call
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_forceIFrame_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_releaseOutputBuffer_fct)(M4OSA_Context pContext, M4VE_VideoBuffer *pBuffer);
- * @brief This function is called by the service to signal that a particular output buffer,
- * provided in the M4VE_SignalEncodeDone callback by the external encoder, is no more
- * needed by the service and can be considered as free for any remaining data processing.
- * @note none.
- * @param pContext: (IN) Execution context of the encoder.
- * @param pBuffer: (IN) Encoded data Buffer.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: At least one parameter is not correct (NULL or invalid).
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not acknowledge the buffer release for any
- * other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_releaseOutputBuffer_fct)(M4OSA_Context pContext,
- M4VE_VideoBuffer *pBuffer);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_closeEncoder_fct)(M4OSA_Context pContext);
- * @brief This function closes the encoding session.
- * @note This function is asynchronous, thus the external encoder must call the corresponding
- * M4VE_SignalCloseEncoderDone callback function when the closing step is internally
- * completed.
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext pointer is null or invalid.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not be closed for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_closeEncoder_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_cleanUpEncoder_fct)(M4OSA_Context pContext);
- * @brief The function cleans up the encoder context.
- * @note none
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext pointer is null or invalid.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not be closed for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_cleanUpEncoder_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_stepEncode_fct)(M4OSA_Context pContext,M4VIFI_ImagePlane *pInputPlane,
- * M4OSA_Time cts);
- * @brief The function gives a video frame to the external encoder in the "Standalone encoder"
- * mode. The input buffer consists of a raw YUV420 planar frame,
- * allocated by the service.
- * The time (cts) is the composition time stamp of the frame to encode and is unique
- * for each frame. This time is expressed in milliseconds.
- * @note This function is asynchronous and its completion is signaled by the
- * M4VE_SignalEncodeDone callback. It applies that the input buffer is maintained valid
- * by the service till the call of this callback. The encoded data are retrieved in
- * this callback function in a dedicated structure, allocated by the external encoder.
- * The input buffer (YUV raw frame) is considered by the service as free for any
- * remaining data processing after receiving the M4VE_SignalEncodeDone callback.
- * @param pContext: (IN) Execution context of the encoder.
- * @param pInputPlane: (IN) Input buffer where video frame is stored.
- * @param cts: (IN) Composition time stamp in milliseconds.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_ALLOC: there is no more available memory.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: The encoder could not encode the frame for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_stepEncode_fct)(M4OSA_Context pContext,M4VIFI_ImagePlane *pInputPlane,
- M4OSA_Time cts);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_startGrabber_fct)(M4OSA_Context pContext);
- * @brief This function starts the grabber sub-component of the external encoder, in the
- * "encoder + grabber" mode. This function is asynchronous, thus the external
- * encoder must call the corresponding M4VE_SignalStartGrabberDone callback function
- * when this start is internally effective.
- * @note During this step, the service waits for the grabber to launch any video preview if
- * needed.
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_ALLOC: there is no more available memory.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: the encoder could not be started for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_startGrabber_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_startEncoder_fct)(M4OSA_Context pContext);
- * @brief This function starts the video encoder in the "encoder + grabber" mode.
- * @note This function is asynchronous, thus the external encoder must call the corresponding
- * M4VE_SignalStartEncoderDone callback function when this start is internally
- * effective.
- * After the completion of this asynchronous function, the service waits for the
- * external encoder to periodically call the M4VE_SignalEncodeDone callback each time
- * a new frame has been encoded. The external encoder must expect to have several
- * M4VE_startEncoder_fct calls before being closed. See the description of
- * M4VE_stopEncoder_fct function for the expected behaviour.
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_ALLOC: there is no more available memory.
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: the encoder could not be started for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_startEncoder_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR M4OSA_ERR (*M4VE_stopGrabber_fct)(M4OSA_Context pContext);
- * @brief This function stops the video grabber in the "encoder + grabber" mode.
- * @note This function is asynchronous, thus the external encoder must call the corresponding
- * M4VE_SignalStopGrabberDone callback function when this stop is internally effective.
- * During this step, the service waits for the grabber to stop the video preview
- * if needed.
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_FATAL: the encoder could not be stopped for any other reason.
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_stopGrabber_fct)(M4OSA_Context pContext);
-
-
-/**
- *********************************************************************************************
- * M4OSA_ERR (*M4VE_stopEncoder_fct)(M4OSA_Context pContext);
- * @brief This function stops the video encoder in the "encoder + grabber" mode.
- * @note This function is asynchronous, thus the external encoder must call the corresponding
- * M4VE_SignalStopEncoderDone callback function when this stop is internally effective.
- * After the reception of this callback, the service considers that no new frame will be
- * retrieved via the M4VE_SignalEncodeDone callback.
- * The external encoder must expect to have a possible call to M4VE_startEncoder_fct
- * after M4VE_stopEncoder_fct. In this case, the external encoder must consider that it
- * has been paused/resumed. The expected behaviour is the following one:
- * - The result from this two encoding sessions is a Standalone stream, no header is
- * generated for this new session. The external encoder is free to encode a refresh
- * frame (like I VOP) for this new session.
- * - The time stamps of this new session must directly follow the time stamps of the
- * previous one (ie: no time hole coming from the delay between the stop of the first
- * session and the start of the new one).
- * @param pContext: (IN) Execution context of the encoder.
- * @return M4NO_ERROR: there is no error.
- * @return M4ERR_PARAMETER: pContext field is not valid
- * @return M4ERR_STATE: This call is not allowed in the current encoder state.
- * @return M4ERR_VE_ERR_FATAL: the encoder could not be stopped for any other reason
- *********************************************************************************************
-*/
-typedef M4OSA_ERR (*M4VE_stopEncoder_fct)(M4OSA_Context pContext);
-
-
-
-
-
-/**
- *********************************************************************************************
- * struct M4VE_GenericInterface
- * @brief The M4VE_GenericInterface structure defines the set of functions used in
- * both encoder modes.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_initEncoder_fct m_pFctInitEncoder;
- M4VE_setOption_fct m_pFctSetOption;
- M4VE_getOption_fct m_pFctGetOption;
- M4VE_openEncoder_fct m_pFctOpenEncoder;
- M4VE_forceIFrame_fct m_pFctForceIFrame;
- M4VE_releaseOutputBuffer_fct m_pFctReleaseOutputBuffer;
- M4VE_closeEncoder_fct m_pFctCloseEncoder;
- M4VE_cleanUpEncoder_fct m_pFctCleanUpEncoder;
-} M4VE_GenericInterface; /**< Functions used in both "Standalone Encoder" and
- "Encoder + Grabber" modes */
-
-
-/**
- *********************************************************************************************
- * struct M4VE_SEModeInterface
- * @brief The M4VE_SEModeInterface structure defines the set of functions used in
- * "Standalone Encoder" mode.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_stepEncode_fct m_pFctStepEncode;
-} M4VE_SEModeInterface; /**< Functions used only in "Standalone Encoder" mode */
-
-
-/**
- *********************************************************************************************
- * struct M4VE_EGModeInterface
- * @brief The M4VE_EGModeInterface structure defines the set of functions used in
- * "Encoder + Grabber" mode.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_startGrabber_fct m_pFctStartGrabber;
- M4VE_startEncoder_fct m_pFctStartEncoder;
- M4VE_stopGrabber_fct m_pFctStopGrabber;
- M4VE_stopEncoder_fct m_pFctStopEncoder;
-} M4VE_EGModeInterface; /**< Functions used only in "Encoder + Grabber" mode */
-
-
-
-/**
- *********************************************************************************************
- * struct M4VE_Interface
- * @brief The M4VE_Interface structure stores pointers to the video encoder functions.
- *********************************************************************************************
-*/
-typedef struct
-{
- M4VE_GenericInterface genericInterface; /**< Functions used everytime */
- M4VE_EncoderMode encoderMode; /**< "Standalone Encoder"
- or "Encoder + Grabber" */
- union
- {
- M4VE_SEModeInterface SEModeInterface; /**< Functions used only in
- "Standalone Encoder" mode */
- M4VE_EGModeInterface EGModeInterface; /**< Functions used only in
- "Encoder + Grabber" mode */
- }M4VE_SpecificInterface;
-} M4VE_Interface;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /*__M4VE_API_H__*/
diff --git a/libvideoeditor/vss/common/inc/M4_Logo.h b/libvideoeditor/vss/common/inc/M4_Logo.h
deleted file mode 100755
index 79a2e1c..0000000
--- a/libvideoeditor/vss/common/inc/M4_Logo.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 M4_Logo_h
-#define M4_Logo_h
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-extern const unsigned char logo[];
-extern const int logo_width;
-extern const int logo_height;
-#ifdef __cplusplus
-}
-#endif
-#endif
-
diff --git a/libvideoeditor/vss/inc/M4PTO3GPP_API.h b/libvideoeditor/vss/inc/M4PTO3GPP_API.h
index 86c6b93..693f249 100755
--- a/libvideoeditor/vss/inc/M4PTO3GPP_API.h
+++ b/libvideoeditor/vss/inc/M4PTO3GPP_API.h
@@ -44,8 +44,6 @@
* Definitions of M4VIFI_ImagePlane */
#include "M4VIFI_FiltersAPI.h"
-#include "M4VE_API.h"
-
/**
* Common definitions of video editing components */
#include "M4_VideoEditingCommon.h"
@@ -249,12 +247,6 @@ M4OSA_ERR M4PTO3GPP_Close(M4PTO3GPP_Context pContext);
M4OSA_ERR M4PTO3GPP_CleanUp(M4PTO3GPP_Context pContext);
-M4OSA_ERR M4PTO3GPP_RegisterExternalVideoEncoder(M4PTO3GPP_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface* pEncoderInterface,
- M4OSA_Void* pUserData);
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/libvideoeditor/vss/inc/M4PTO3GPP_InternalTypes.h b/libvideoeditor/vss/inc/M4PTO3GPP_InternalTypes.h
index a858cb2..e6e830d 100755
--- a/libvideoeditor/vss/inc/M4PTO3GPP_InternalTypes.h
+++ b/libvideoeditor/vss/inc/M4PTO3GPP_InternalTypes.h
@@ -193,13 +193,6 @@ typedef struct
* Audio padding mode */
M4OSA_Bool m_bAudioPaddingSilence; /**< A boolean that signals that audio
AU will be padded by silence */
-
- struct
- {
- M4VE_Interface* pEncoderInterface;
- M4OSA_Void* pUserData;
- M4OSA_Bool registered;
- } registeredExternalEncs[M4VE_kEncoderType_NB];
} M4PTO3GPP_InternalContext;
diff --git a/libvideoeditor/vss/inc/M4VSS3GPP_API.h b/libvideoeditor/vss/inc/M4VSS3GPP_API.h
index f6f8daa..a1cf225 100755
--- a/libvideoeditor/vss/inc/M4VSS3GPP_API.h
+++ b/libvideoeditor/vss/inc/M4VSS3GPP_API.h
@@ -48,11 +48,6 @@
/**
* Common definitions of video editing components */
#include "M4_VideoEditingCommon.h"
-
-
-#include "M4VD_HW_API.h"
-#include "M4VE_API.h"
-
#include "M4ENCODER_AudioCommon.h"
#include "M4AD_Common.h"
#include "M4DA_Types.h"
@@ -591,54 +586,6 @@ M4OSA_ERR M4VSS3GPP_editCleanUp(M4VSS3GPP_EditContext pContext);
/**
******************************************************************************
- * M4OSA_ERR M4VSS3GPP_editRegisterExternalVideoDecoder(M4VSS3GPP_EditContext pContext,
- * M4VD_VideoType decoderType,
- * M4VD_Interface* pDecoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video decoder
- * @note
- * @param pContext (IN) VSS3GPP context
- * @param decoderType (IN) Type of decoder (MPEG4 ...)
- * @param pDecoderInterface (IN) Decoder interface
- * @param pUserData (IN) Pointer on a user data to give to external decoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for this function
- * to be called
- ******************************************************************************
- */
-M4OSA_ERR M4VSS3GPP_editRegisterExternalVideoDecoder(M4VSS3GPP_EditContext pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface* pDecoderInterface,
- M4OSA_Void* pUserData);
-
-/**
- ******************************************************************************
- *M4OSA_ERR M4VSS3GPP_editRegisterExternalVideoEncoder(M4VSS3GPP_EditContext pContext,
- * M4VE_EncoderType encoderType,
- * M4VE_Interface* pEncoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video encoder
- * @note
- * @param pContext (IN) VSS3GPP context
- * @param encoderType (IN) Type of encoder (MPEG4 ...)
- * @param pEncoderInterface (IN) Encoder interface
- * @param pUserData (IN) Pointer on a user data to give to external encoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for this function
- * to be called
- ******************************************************************************
- */
-M4OSA_ERR M4VSS3GPP_editRegisterExternalVideoEncoder(M4VSS3GPP_EditContext pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface* pEncoderInterface,
- M4OSA_Void* pUserData);
-
-
-
-/**
- ******************************************************************************
******************************************************************************
******************************************************************************
*
@@ -828,33 +775,6 @@ M4OSA_ERR M4VSS3GPP_extractPictureCleanUp(M4VSS3GPP_ExtractPictureContext pConte
/**
******************************************************************************
- * M4OSA_ERR M4VSS3GPP_extractPictureRegisterExternalVideoDecoder(
- * M4VSS3GPP_ExtractPictureContext pContext,
- * M4VD_VideoType decoderType,
- * M4VD_Interface* pDecoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video decoder
- * @note
- * @param pContext (IN) Extract picture context
- * @param decoderType (IN) Type of decoder (MPEG4 ...)
- * @param pDecoderInterface (IN) Decoder interface
- * @param pUserData (IN) Pointer on a user data to give to external decoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: Extract picture is not in an appropriate state for this
- * function to be called
- ******************************************************************************
- */
-M4OSA_ERR M4VSS3GPP_extractPictureRegisterExternalVideoDecoder(\
- M4VSS3GPP_ExtractPictureContext pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface* pDecoderInterface,
- M4OSA_Void* pUserData);
-
-
-
-/**
- ******************************************************************************
******************************************************************************
******************************************************************************
*
@@ -893,66 +813,6 @@ M4OSA_ERR M4VSS3GPP_GetErrorMessage(M4OSA_ERR err, M4OSA_Char* sMessage);
#endif /**< WIN32 */
-
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_editRegisterExternalCodec(
- * M4VSS3GPP_EditContext pContext,
- * M4VSS3GPP_codecType codecType,
- * M4OSA_Context pCodecInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video/Audio codec with VSS3GPP
- * @note This is much different from the other external codec registration API to
- * cope up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @param codecType (IN) Type of codec (MPEG4 ...)
- * @param pCodecInterface (IN) Codec interface
- * @param pUserData (IN) Pointer on a user data to give to external codec
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for this function to be called
- ******************************************************************************
- */
- M4OSA_ERR M4VSS3GPP_editRegisterExternalCodec(M4VSS3GPP_EditContext pContext,
- M4VSS3GPP_codecType codecType,
- M4OSA_Context pCodecInterface,
- M4OSA_Void* pUserData);
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_editSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext)
- * @brief Subscribes to previously registered external Video/Audio codec
- * @note This is much different from the other external codec registration API to
- * cope up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for this function to be called
- ******************************************************************************
- */
- M4OSA_ERR M4VSS3GPP_editSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext);
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_intSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext,
- * M4OSA_Context pShellCtxt)
- * @brief Subscribes to previously registered external Video/Audio codec
- * @note This is much different from the other external codec registration API to
- * cope up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @param pShellContext (IN) Media Codec shell context
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for this function to be called
- ******************************************************************************
- */
- M4OSA_ERR M4VSS3GPP_intSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext,
- M4OSA_Context pShellCtxt);
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/libvideoeditor/vss/inc/M4VSS3GPP_InternalFunctions.h b/libvideoeditor/vss/inc/M4VSS3GPP_InternalFunctions.h
index aeddd97..ea09caa 100755
--- a/libvideoeditor/vss/inc/M4VSS3GPP_InternalFunctions.h
+++ b/libvideoeditor/vss/inc/M4VSS3GPP_InternalFunctions.h
@@ -39,10 +39,6 @@
#include "M4READER_Common.h" /**< for M4_AccessUnit definition */
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-#include "M4VD_HW_API.h"
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -607,13 +603,6 @@ M4OSA_ERR M4VSS3GPP_intAudioMixingCompatibility(M4VSS3GPP_InternalAudioMixingCon
*/
M4OSA_Void M4VSS3GPP_intClipDeleteAudioTrack(M4VSS3GPP_ClipContext *pClipCtxt);
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-M4OSA_ERR M4VSS3GPP_intClipRegisterExternalVideoDecoder(M4VSS3GPP_ClipContext *pClipCtxt,
- M4VD_VideoType decoderType,
- M4VD_Interface* pDecoderInterface,
- M4OSA_Void* pUserData);
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
/******************************************************************************
* M4OSA_ERR M4VSS3GPP_intStartAU()
* @brief StartAU writer-like interface used for the VSS 3GPP only
diff --git a/libvideoeditor/vss/inc/M4VSS3GPP_InternalTypes.h b/libvideoeditor/vss/inc/M4VSS3GPP_InternalTypes.h
index bf627c7..f01e371 100755
--- a/libvideoeditor/vss/inc/M4VSS3GPP_InternalTypes.h
+++ b/libvideoeditor/vss/inc/M4VSS3GPP_InternalTypes.h
@@ -53,10 +53,6 @@
#include "From2iToMono_16.h" /**< Stereo to Mono */
#include "MonoTo2I_16.h" /**< Mono to Stereo */
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-#include "M4VD_HW_API.h"
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -599,19 +595,6 @@ typedef struct
* Interfaces of the used modules */
M4VSS3GPP_MediaAndCodecCtxt ShellAPI; /**< Filesystem and shell reader,
decoder functions */
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
- struct
- {
- M4VD_Interface* pDecoderInterface;
- M4OSA_Void* pUserData;
- M4OSA_Bool registered;
- } registeredExternalDecs[M4VD_kVideoType_NB];
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-#ifdef M4VSS_SUPPORT_OMX_CODECS
- M4OSA_Context m_codecInterface[M4VSS3GPP_kCodecType_NB];
- M4OSA_Context pOMXUserData;
-#endif
M4OSA_Bool bIssecondClip;
M4OSA_UInt8 *pActiveEffectsList1; /**< List of the active effects settings. Array of nbEffects RC */
M4OSA_UInt8 nbActiveEffects1; /**< Numbers of active effects RC */
diff --git a/libvideoeditor/vss/inc/M4xVSS_API.h b/libvideoeditor/vss/inc/M4xVSS_API.h
index d69a17c..a66211b 100755
--- a/libvideoeditor/vss/inc/M4xVSS_API.h
+++ b/libvideoeditor/vss/inc/M4xVSS_API.h
@@ -374,50 +374,6 @@ M4OSA_ERR M4xVSS_CloseCommand(M4OSA_Context pContext);
M4OSA_ERR M4xVSS_CleanUp(M4OSA_Context pContext);
/**
-******************************************************************************
- * M4OSA_ERR M4xVSS_RegisterExternalVideoDecoder(M4OSA_Context pContext,
- * M4VD_VideoType decoderType,
- * M4VD_Interface* pDecoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video decoder
- * @note
- * @param pContext (IN) xVSS context
- * @param decoderType (IN) Type of decoder (MPEG4 ...)
- * @param pDecoderInterface (IN) Decoder interface
- * @param pUserData (IN) Pointer on a user data to give to external decoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: xVSS is not in an appropriate state for this function to be called
-******************************************************************************
-*/
-M4OSA_ERR M4xVSS_RegisterExternalVideoDecoder(M4OSA_Context pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface* pDecoderInterface,
- M4OSA_Void* pUserData);
-
-/**
-******************************************************************************
- * M4OSA_ERR M4xVSS_RegisterExternalVideoEncoder(M4OSA_Context pContext,
- * M4VE_EncoderType encoderType,
- * M4VE_Interface* pEncoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video decoder
- * @note
- * @param pContext (IN) xVSS context
- * @param encoderType (IN) Type of encoder (MPEG4 ...)
- * @param pEncoderInterface (IN) Encoder interface
- * @param pUserData (IN) Pointer on a user data to give to external encoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: xVSS is not in an appropriate state for this function to be called
-******************************************************************************
-*/
-M4OSA_ERR M4xVSS_RegisterExternalVideoEncoder(M4OSA_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface* pEncoderInterface,
- M4OSA_Void* pUserData);
-
-/**
******************************************************************************
* prototype M4xVSS_GetVersion(M4_VersionInfo *pVersion)
* @brief This function get the version of the Video Studio 2.1
diff --git a/libvideoeditor/vss/inc/M4xVSS_Internal.h b/libvideoeditor/vss/inc/M4xVSS_Internal.h
index 0f99632..e999867 100755
--- a/libvideoeditor/vss/inc/M4xVSS_Internal.h
+++ b/libvideoeditor/vss/inc/M4xVSS_Internal.h
@@ -479,20 +479,6 @@ typedef struct {
/*UTF Conversion support*/
M4xVSS_UTFConversionContext UTFConversionContext; /*UTF conversion context structure*/
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
- struct
- {
- M4VD_Interface* pDecoderInterface;
- M4OSA_Void* pUserData;
- M4OSA_Bool registered;
- } registeredExternalDecs[M4VD_kVideoType_NB];
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
- struct
- {
- M4VE_Interface* pEncoderInterface;
- M4OSA_Void* pUserData;
- M4OSA_Bool registered;
- } registeredExternalEncs[M4VE_kEncoderType_NB];
} M4xVSS_Context;
/**
diff --git a/libvideoeditor/vss/mcs/inc/M4MCS_API.h b/libvideoeditor/vss/mcs/inc/M4MCS_API.h
index 2592fb4..7fb64e8 100755
--- a/libvideoeditor/vss/mcs/inc/M4MCS_API.h
+++ b/libvideoeditor/vss/mcs/inc/M4MCS_API.h
@@ -46,9 +46,6 @@
* Common definitions of video editing components */
#include "M4_VideoEditingCommon.h"
-#include "M4VD_HW_API.h"
-#include "M4VE_API.h"
-
/**
* To enable external audio codecs registering*/
#include "M4AD_Common.h"
@@ -259,27 +256,6 @@ typedef enum
M4MCS_kCropBeforeResize = 0x01 /*Input image is cropped (before changing resolution)*/
} M4MCS_SPCrop ;
-/**
- ******************************************************************************
- * enum M4MCS_ExifInfos
- * @brief Still picture specific : The following structure contains all available exif field
- ******************************************************************************
- */
-typedef struct {
- M4OSA_Char* ImageTitle; /* Image title */
- M4OSA_Char* EquipmentManufacturer; /* Image input equipment manufacturer */
- M4OSA_Char* EquipmentModel; /* Image input equipment model */
- M4OSA_Char* Software; /* Software used */
- M4OSA_Char* Artist; /* Artist */
- M4OSA_Char* Copyright; /* Copyright */
- M4OSA_Char* CreationDateTime; /* Creation date and time */
- M4OSA_UInt32 Orientation; /* Orientation of the picture */
- M4OSA_Char* LastChangeDateTime; /* Last Change date and time*/
- M4OSA_UInt32 PixelXDimension; /* Image width*/
- M4OSA_UInt32 PixelYDimension; /* Image Height*/
-} M4MCS_ExifInfos;
-
-/*--- STILL PICTURE ---*/
/**
******************************************************************************
@@ -590,74 +566,6 @@ M4OSA_ERR M4MCS_getExtendedEncodingParams(M4MCS_Context pContext, M4MCS_Encoding
*/
M4OSA_ERR M4MCS_checkParamsAndStart(M4MCS_Context pContext);
-/**
- ******************************************************************************
- * M4OSA_ERR M4MCS_registerExternalVideoDecoder(M4MCS_Context pContext,
- * M4VD_VideoType decoderType,
- * M4VD_Interface* pDecoderInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video decoder
- * @note
- * @param pContext (IN) MCS context
- * @param decoderType (IN) Type of decoder (MPEG4 ...)
- * @param pDecoderInterface (IN) Decoder interface
- * @param pUserData (IN) Pointer on a user data to give to external decoder
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called
- ******************************************************************************
- */
-M4OSA_ERR M4MCS_registerExternalVideoDecoder(M4MCS_Context pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface* pDecoderInterface,
- M4OSA_Void* pUserData);
-
-M4OSA_ERR M4MCS_registerExternalVideoEncoder(M4MCS_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface* pEncoderInterface,
- M4OSA_Void* pUserData);
-
-
-/**
- ************************************************************************
- * M4OSA_ERR M4MCS_registerExternalAudioDecoder(M4MCS_Context pContext,
- * M4AD_Type decoderType,
- * M4AD_Interface *pDecoderInterface);
- * @brief This function will register a specific external audio decoder.
- * @note According to the decoderType, this function will store in the internal context
- * the decoder interface.
- * @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_registerExternalAudioDecoder(M4MCS_Context pContext,
- M4AD_Type decoderType,
- M4AD_Interface *pDecoderInterface);
-
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4MCS_registerExternalAudioEncoder(M4MCS_Context pContext,
- * M4ENCODER_AudioFormat mediaType,
- * M4ENCODER_AudioGlobalInterface *pEncGlobalInterface)
- * @brief This function will register a specific external audio encoder.
- * @note According to the Mediatype, this function will store in the internal context
- * the encoder interface.
- * @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_registerExternalAudioEncoder(M4MCS_Context pContext,
- M4ENCODER_AudioFormat MediaType,
- M4ENCODER_AudioGlobalInterface *pEncGlobalInterface);
-
-
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/libvideoeditor/vss/mcs/src/M4MCS_API.c b/libvideoeditor/vss/mcs/src/M4MCS_API.c
index 91e3b96..db6d92f 100755
--- a/libvideoeditor/vss/mcs/src/M4MCS_API.c
+++ b/libvideoeditor/vss/mcs/src/M4MCS_API.c
@@ -10799,299 +10799,3 @@ M4OSA_ERR M4MCS_open_normalMode(M4MCS_Context pContext, M4OSA_Void* pFileIn,
return M4NO_ERROR;
}
-
-M4OSA_ERR M4MCS_registerExternalVideoDecoder( M4MCS_Context pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface *pDecoderInterface,
- M4OSA_Void *pUserData )
-{
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
- M4OSA_ERR err = M4NO_ERROR;
- M4DECODER_VideoInterface *shellInterface;
- M4DECODER_VideoType nativeType;
- M4DECODER_EXTERNAL_UserDataType shellUserData;
-
- switch( decoderType )
- {
- case M4VD_kMpeg4VideoDec:
- case M4VD_kH263VideoDec:
- nativeType = M4DECODER_kVideoTypeMPEG4;
- break;
-
- case M4VD_kH264VideoDec:
- nativeType = M4DECODER_kVideoTypeAVC;
- break;
-
- default:
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoDecoder: unknown decoderType %d",
- decoderType);
- return M4ERR_PARAMETER;
- break;
- }
-
- shellUserData =
- (M4DECODER_EXTERNAL_UserDataType)M4OSA_32bitAlignedMalloc(sizeof(*shellUserData),
- M4MCS,
- (M4OSA_Char *)"userData structure for the external shell decoder");
-
- if( M4OSA_NULL == shellUserData )
- {
- M4OSA_TRACE1_0(
- "M4MCS_registerExternalVideoDecoder:\
- failed to allocate userData structure for the external shell decoder");
- return M4ERR_ALLOC;
- }
-
- shellUserData->externalFuncs = pDecoderInterface;
- shellUserData->externalUserData = pUserData;
-
- err = M4DECODER_EXTERNAL_getInterface(&shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoDecoder:\
- M4DECODER_EXTERNAL_getInterface failed with error 0x%08X",
- err);
- free(shellUserData);
- return err;
- }
-
- err = M4MCS_registerVideoDecoder(pContext, nativeType, shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoDecoder:\
- M4MCS_registerVideoDecoder failed with error 0x%08X",
- err);
- free(shellInterface);
- free(shellUserData);
- return err;
- }
-
- ( (M4MCS_InternalContext
- *)pContext)->m_pVideoDecoderUserDataTable[nativeType] = shellUserData;
-
- return M4NO_ERROR;
-#else
-
- return M4ERR_NOT_IMPLEMENTED;
-
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-}
-
-M4OSA_ERR M4MCS_registerExternalVideoEncoder( M4MCS_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface *pEncoderInterface,
- M4OSA_Void *pUserData )
-{
-#ifdef M4VSS_ENABLE_EXTERNAL_ENCODERS
-
- M4OSA_ERR err = M4NO_ERROR;
- M4ENCODER_GlobalInterface *shellInterface;
- M4ENCODER_Format nativeType;
-
- switch( encoderType )
- {
- case M4VE_kH263VideoEnc:
- err = M4EGE_H263_getInterfaces(&nativeType, &shellInterface,
- M4ENCODER_OPEN_ADVANCED);
-
- break;
-
- case M4VE_kMpeg4VideoEnc:
- err = M4EGE_MPEG4_getInterfaces(&nativeType, &shellInterface,
- M4ENCODER_OPEN_ADVANCED);
- break;
-
- case M4VE_kH264VideoEnc:
- M4OSA_TRACE1_0(
- "M4MCS_registerExternalVideoEncoder: H264 encoder type not implemented yet");
- return M4ERR_NOT_IMPLEMENTED;
- break;
-
- default:
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoEncoder: unknown encoderType %d",
- encoderType);
- return M4ERR_PARAMETER;
- break;
- }
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoDecoder: M4EGE_getInterface failed with error 0x%08X",
- err);
- return err;
- }
-
- err = M4MCS_registerVideoEncoder(pContext, nativeType, shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalVideoEncoder:\
- M4MCS_registerVideoEncoder failed with error 0x%08X",
- err);
- free(shellInterface);
- return err;
- }
-
- ( (M4MCS_InternalContext
- *)pContext)->pVideoEncoderExternalAPITable[nativeType]
- = pEncoderInterface;
- ( (M4MCS_InternalContext
- *)pContext)->pVideoEncoderUserDataTable[nativeType] = pUserData;
-
- return M4NO_ERROR;
-
-#else
-
- return M4ERR_NOT_IMPLEMENTED;
-
-#endif
-
-}
-
-/**
- ************************************************************************
- * M4OSA_ERR M4MCS_registerExternalAudioDecoder(M4MCS_Context pContext,
- * M4AD_Type decoderType,
- * M4AD_Interface *pDecoderInterface);
- * @brief This function will register a specific external audio decoder.
- * @note According to the decoderType, this function will store in the internal context the
- * decoder interface.
- * @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_registerExternalAudioDecoder( M4MCS_Context pContext,
- M4AD_Type decoderType,
- M4AD_Interface *pDecoderInterface )
-{
- M4MCS_InternalContext *pC = (M4MCS_InternalContext *)pContext;
-
- M4OSA_DEBUG_IF1((M4OSA_NULL == pC), M4ERR_PARAMETER,
- "M4MCS_registerExternalAudioDecoder: invalid context pointer");
- M4OSA_DEBUG_IF1((M4OSA_NULL == pDecoderInterface), M4ERR_PARAMETER,
- "M4MCS_registerExternalAudioDecoder: invalid pointer on decoder interface");
-
- if( M4MCS_kState_CREATED != pC->State )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalAudioDecoder(): Wrong State (%d), returning M4ERR_STATE",
- pC->State);
- return M4ERR_STATE;
- }
-
- if( decoderType >= M4AD_kType_NB )
- {
- M4OSA_DEBUG_IF1(M4OSA_TRUE, M4ERR_PARAMETER,
- "M4MCS_registerExternalAudioDecoder: Invalid audio decoder type");
- return M4ERR_PARAMETER;
- }
-
- if( pC->m_pAudioDecoderFlagTable[decoderType] == M4OSA_TRUE
- && pC->m_pAudioDecoderItTable[decoderType] != M4OSA_NULL )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalAudioDecoder: error parameter: an external decoder of type\
- %i is already registered",
- decoderType);
- return M4ERR_PARAMETER;
- }
-
- if( pC->m_pAudioDecoderItTable[decoderType] != M4OSA_NULL )
- {
- free(pC->m_pAudioDecoderItTable[decoderType]);
- pC->m_pAudioDecoderItTable[decoderType] = M4OSA_NULL;
- }
-
- pC->m_pAudioDecoderItTable[decoderType] = pDecoderInterface;
- pC->m_pAudioDecoderFlagTable[decoderType] =
- M4OSA_TRUE; /* external decoder */
-
- return M4NO_ERROR;
-}
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4MCS_registerExternalAudioEncoder(M4MCS_Context pContext,
- * M4ENCODER_AudioFormat mediaType,
- * M4ENCODER_AudioGlobalInterface *pEncGlobalInterface)
- * @brief This function will register a specific external 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_registerExternalAudioEncoder( M4MCS_Context pContext,
- M4ENCODER_AudioFormat MediaType,
- M4ENCODER_AudioGlobalInterface *pEncGlobalInterface )
-{
- M4MCS_InternalContext *pC = (M4MCS_InternalContext *)pContext;
-
- /**
- * Check input parameters */
- M4OSA_DEBUG_IF2((pC == M4OSA_NULL), M4ERR_PARAMETER,
- "MCS: context is M4OSA_NULL in M4MCS_registerExternalAudioEncoder");
- M4OSA_DEBUG_IF2((pEncGlobalInterface == M4OSA_NULL), M4ERR_PARAMETER,
- "pEncGlobalInterface is M4OSA_NULL in M4MCS_registerExternalAudioEncoder");
-
- M4OSA_TRACE3_2(
- "MCS: M4MCS_registerExternalAudioEncoder called with pContext=0x%x, \
- pEncGlobalInterface=0x%x",
- pC, pEncGlobalInterface);
-
- if( M4MCS_kState_CREATED != pC->State )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalAudioEncoder(): Wrong State (%d), returning M4ERR_STATE",
- pC->State);
- return M4ERR_STATE;
- }
-
- if( MediaType >= M4ENCODER_kAudio_NB )
- {
- M4OSA_DEBUG_IF1(M4OSA_TRUE, M4ERR_PARAMETER,
- "M4MCS_registerExternalAudioEncoder(): Invalid audio encoder type");
- return M4ERR_PARAMETER;
- }
-
- if( pC->pAudioEncoderFlag[MediaType] == M4OSA_TRUE
- && pC->pAudioEncoderInterface[MediaType] != M4OSA_NULL )
- {
- M4OSA_TRACE1_1(
- "M4MCS_registerExternalAudioEncoder: error parameter:\
- an external encoder of type %i is already registered",
- MediaType);
- return M4ERR_PARAMETER;
- }
-
- if( pC->pAudioEncoderInterface[MediaType] != M4OSA_NULL )
- {
- free(pC->pAudioEncoderInterface[MediaType]);
- pC->pAudioEncoderInterface[MediaType] = M4OSA_NULL;
- }
-
- /*
- * Save encoder interface in context */
- pC->pAudioEncoderInterface[MediaType] = pEncGlobalInterface;
- pC->pAudioEncoderFlag[MediaType] = M4OSA_TRUE; /* external encoder */
-
- return M4NO_ERROR;
-}
-
diff --git a/libvideoeditor/vss/mcs/src/M4MCS_BitstreamParser.c b/libvideoeditor/vss/mcs/src/M4MCS_BitstreamParser.c
deleted file mode 100755
index 8c05191..0000000
--- a/libvideoeditor/vss/mcs/src/M4MCS_BitstreamParser.c
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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_Parsing.c
- * @brief MCS implementation (Video Compressor Service)
- * @note This file implements the VOL parsing and timescale 'on the fly' modification
- *************************************************************************
- **/
-
-/**
- ********************************************************************
- * Includes
- ********************************************************************
- */
-
-/* Core headers */
-#include "M4MCS_API.h"
-#include "M4MCS_InternalTypes.h"
-#include "M4VD_Tools.h"
-
-
-#ifdef TIMESCALE_BUG
-
-/*typedef struct
-{
- M4OSA_UInt32 stream_byte;
- M4OSA_UInt32 stream_index;
- M4OSA_MemAddr8 in;
-
-} M4MCS_Bitstream_ctxt;*/
-typedef M4VS_Bitstream_ctxt M4MCS_Bitstream_ctxt;
-
-/*
- ************************************************************************
- * M4OSA_UInt32 M4MCS_GetBitsFromMemory( )
- * @brief
- * @return
- ************************************************************************
- */
-static M4OSA_UInt32 M4MCS_GetBitsFromMemory(
- M4MCS_Bitstream_ctxt* parsingCtxt,
- M4OSA_UInt32 nb_bits)
-{
- return(M4VD_Tools_GetBitsFromMemory((M4VS_Bitstream_ctxt*) parsingCtxt, nb_bits));
-}
-
-/**
- ***********************************************************************
- * M4OSA_ERR M4MCS_WriteBitsToMemory( )
- * @brief
- * @return
- ***********************************************************************
- */
-static M4OSA_ERR M4MCS_WriteBitsToMemory( M4OSA_UInt32 bitsToWrite,
- M4OSA_MemAddr32 dest_bits,
- M4OSA_UInt8 offset,
- M4OSA_UInt8 nb_bits)
-{
- return (M4VD_Tools_WriteBitsToMemory(bitsToWrite,
- dest_bits,
- offset, nb_bits));
-}
-
-/**
- ************************************************************************
- * M4OSA_ERR M4MCS_WriteByteToMemory( )
- * @brief
- * @return
- ************************************************************************
- */
-static M4OSA_ERR M4MCS_WriteByteToMemory( M4OSA_UInt8 BytesToWrite,
- M4OSA_MemAddr8 dest_bytes)
-{
- M4OSA_MemAddr8 addr = dest_bytes;
-
- *addr = BytesToWrite;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * M4OSA_Void M4MCS_intCheckIndex( )
- * @brief :
- * @note : This function can be used to write until 15 bits ...
- * Depending on the bits offset, it increases or not the 8 bits pointer.
- * It must be called if more than 8 bits have to be written not consequently.
- * @return
- ************************************************************************
- */
-static M4OSA_Void M4MCS_intCheckIndex( M4OSA_UInt8 *index,
- M4OSA_UInt32 a,
- M4OSA_MemAddr8* in)
-{
- M4OSA_UInt32 offset = a;
-
- if(offset > 8 && offset <=16)
- {
- offset-=8;
- (*in)++;
- }
- if((*index+offset) >= 8)
- {
- *index = (*index+offset)-8;
- (*in)++;
- }
- else
- {
- *index += offset;
- }
-}
-
-/**
- ************************************************************************
- * M4OSA_ERR M4MCS_intParseVideoDSI( )
- * @brief : This function parses video DSI and changes writer vop time increment resolution
- * @note : It also calculates the number of bits on which the vop_time_increment is coded in
- * the input stream
- * @return
- ************************************************************************
- */
-M4OSA_ERR M4MCS_intParseVideoDSI(M4MCS_InternalContext* pC)
-{
- M4MCS_Bitstream_ctxt parsingCtxt;
- M4OSA_UInt32 code,j;
- M4OSA_MemAddr8 start, in;
- M4OSA_UInt8 i;
- M4OSA_UInt32 time_incr_length, new_time_incr_length;
- M4OSA_UInt8 vol_verid=0, b_hierarchy_type;
-
- /* Fill default values */
- pC->volParsing.video_object_layer_shape = 0;
- pC->volParsing.sprite_enable = 0;
- pC->volParsing.reduced_resolution_vop_enable = 0;
- pC->volParsing.scalability = 0;
- pC->volParsing.enhancement_type = 0;
- pC->volParsing.complexity_estimation_disable = 0;
- pC->volParsing.interlaced = 0;
- pC->volParsing.sprite_warping_points = 0;
- pC->volParsing.sprite_brightness_change = 0;
- pC->volParsing.quant_precision = 5;
-
- parsingCtxt.stream_byte = 0;
- parsingCtxt.stream_index = 8;
- parsingCtxt.in = pC->WriterVideoStreamInfo.Header.pBuf;
-
- start = pC->WriterVideoStreamInfo.Header.pBuf;
-
- while (parsingCtxt.in - start\
- < pC->pReaderVideoStream->m_basicProperties.m_decoderSpecificInfoSize)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if (code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if (code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if (code == 1)
- {
- /* start code found */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if(code == 0xB5) /* Visual object start code */
- {
- /* is object layer identifier */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code == 1)
- {
- /* visual object verid */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 4);
- vol_verid = code;
- /* visual object layer priority */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3);
- }
- else
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 7); /* Realign on byte */
- vol_verid = 1;
- }
- }
- else if ((code > 0x1F) && (code < 0x30))
- { /* find vol start code */
- /* random accessible vol */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
-
- /* video object type indication */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
-
- /* is object layer identifier */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code == 1)
- {
- /* video object layer verid */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 4);
- vol_verid = code;
- /* video object layer priority */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3);
- }
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 4);/* aspect ratio */
- if (code == 15)
- /* par_width and par_height (8+8) */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 16);
- /* vol control parameters */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code == 1)
- {
- /* chroma format + low delay (3+1) */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3);
- /* vbv parameters */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code == 1)
- {
- /* first and latter half bitrate + 2 marker bits
- (15 + 1 + 15 + 1)*/
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 32);
-
- /* first and latter half vbv buffer size + first half
- vbv occupancy
- + marker bits (15+1+3+11+1)*/
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 31);
-
- /* first half vbv occupancy + marker bits (15+1)*/
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 16);
- }
- }
- /* video object layer shape */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 2);
-
- /* Need to save it for vop parsing */
- pC->volParsing.video_object_layer_shape = code;
-
- if (code != 0) return 0; /* only rectangular case supported */
- /* Marker bit */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- /* VOP time increment resolution */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 16);
-
- /* Computes time increment length */
- j = code - 1;
- for (i = 0; (i < 32) && (j != 0); j >>=1)
- {
- i++;
- }
- time_incr_length = (i == 0) ? 1 : i;
- /* Save time increment length and original timescale */
- pC->uiOrigTimescaleLength = time_incr_length;
- pC->uiOrigVideoTimescale = code;
-
- /* Compute new time increment length */
- j = pC->uiVideoTimescale - 1;
- for (i = 0; (i < 32) && (j != 0); j >>=1)
- {
- i++;
- }
- time_incr_length = (i == 0) ? 1 : i;
- /* Save new time increment length */
- pC->uiTimescaleLength = time_incr_length;
-
- /* Write new VOP time increment resolution */
- if(parsingCtxt.stream_index == 0)
- {
- in = parsingCtxt.in - 2;
- }
- else
- {
- in = parsingCtxt.in - 3;
- }
- M4MCS_WriteByteToMemory(pC->uiVideoTimescale, in,
- parsingCtxt.stream_index, 16 );
-
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* Marker bit */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* Fixed VOP rate */
- if (code == 1)
- {
- /* Fixed VOP time increment resolution */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- time_incr_length);
- }
-
- if(pC->volParsing.video_object_layer_shape != 1) /* 1 = Binary */
- {
- if(pC->volParsing.video_object_layer_shape == 0) /* 0 = rectangular */
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* Marker bit */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13);/* Width */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* Marker bit */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13);/* Height */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* Marker bit */
- }
- }
-
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* interlaced */
- pC->volParsing.interlaced = code;
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* OBMC disable */
-
- if(vol_verid == 1)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* sprite enable */
- pC->volParsing.sprite_enable = code;
- }
- else
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 2);/* sprite enable */
- pC->volParsing.sprite_enable = code;
- }
- if ((pC->volParsing.sprite_enable == 1) ||
- (pC->volParsing.sprite_enable == 2))
- /* Sprite static = 1 and Sprite GMC = 2 */
- {
- if (pC->volParsing.sprite_enable != 2)
- {
- /* sprite width */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 13);
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* Marker bit */
- /* sprite height */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 13);
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* Marker bit */
- /* sprite l coordinate */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 13);
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* Marker bit */
- /* sprite top coordinate */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 13);
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* Marker bit */
- }
- /* sprite warping points */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 6);
- pC->volParsing.sprite_warping_points = code;
- /* sprite warping accuracy */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 2);
-
- /* sprite brightness change */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- pC->volParsing.sprite_brightness_change = code;
- if (pC->volParsing.sprite_enable != 2)
- {
- /* low latency sprite enable */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- }
- }
- if ((vol_verid != 1) && (pC->volParsing.video_object_layer_shape != 0))
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* sadct disable */
- }
-
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1); /* not 8 bits */
- if (code)
- { /* quant precision */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 4);
- pC->volParsing.quant_precision = code;
- /* bits per pixel */
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 4);
- }
-
- /* greyscale not supported */
- if(pC->volParsing.video_object_layer_shape == 3)
- {
- /* nogray quant update + composition method + linear composition */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3);
- }
-
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* quant type */
- if (code)
- {
- /* load intra quant mat */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 8);
- i = 1;
- while (i < 64)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 8);
- if (code == 0)
- break;
- i++;
- }
- }
- /* load non intra quant mat */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if (code)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 8);
- i = 1;
- while (i < 64)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 8);
- if (code == 0)
- break;
- i++;
- }
- }
- }
-
- if (vol_verid != 1)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* quarter sample */
- }
- /* complexity estimation disable */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- pC->volParsing.complexity_estimation_disable = code;
- if (!code)
- {
- return M4ERR_NOT_IMPLEMENTED;
- }
-
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* resync marker disable*/
-
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* data partitionned */
- if (code)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);/* reversible VLC */
- }
-
- if (vol_verid != 1)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* newpred */
- if (code)
- {
- return M4ERR_PARAMETER;
- }
- /* reduced resolution vop enable */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- pC->volParsing.reduced_resolution_vop_enable = code;
- }
-
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* scalability */
- pC->volParsing.scalability = code;
- if (code)
- {
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 1);/* hierarchy type */
- b_hierarchy_type = code;
- code = M4MCS_GetBitsFromMemory(
- &parsingCtxt, 4);/* ref layer id */
-
- /* ref sampling direct */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
-
- /* hor sampling factor N */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
-
- /* hor sampling factor M */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
-
- /* vert sampling factor N */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
-
- /* vert sampling factor M */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
-
- /* enhancement type */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- pC->volParsing.enhancement_type = code;
- if ((!b_hierarchy_type) &&
- (pC->volParsing.video_object_layer_shape == 1))
- {
- /* use ref shape */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- /* use ref texture */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- /* shape hor sampling factor N */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
- /* shape hor sampling factor M */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
- /* shape vert sampling factor N */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
- /* shape vert sampling factor M */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 5);
- }
- }
- break;
- }
- }
- else
- {
- if ((code >> 2) == 0x20)
- {
- /* H263 ...-> wrong*/
- break;
- }
- }
- }
- }
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * M4OSA_ERR M4MCS_intChangeAUVideoTimescale( )
- * @brief
- * @return
- ************************************************************************
- */
-M4OSA_ERR M4MCS_intChangeAUVideoTimescale(M4MCS_InternalContext* pC)
-{
- M4MCS_Bitstream_ctxt parsingCtxt;
- M4OSA_UInt32 code;
- M4OSA_MemAddr8 start, in;
- M4OSA_MemAddr32 in_temp;
- M4OSA_UInt8 i, in_index=0; /* in_index is the bit index in the input buffer */
- M4OSA_UInt32 new_time_incr;
- M4OSA_Int32 diff_timescale= 0 ;
- M4OSA_UInt32 stuffing_byte=0;
- M4OSA_UInt8 vopCodingType, vop_fcode_forward, vop_fcode_backward, nb_zeros;
-
- parsingCtxt.stream_byte = 0;
- parsingCtxt.stream_index = 8;
- parsingCtxt.in = pC->ReaderVideoAU.m_dataAddress;
-
- start = pC->ReaderVideoAU.m_dataAddress;
- in = pC->WriterVideoAU.dataAddress;
-
- memset((void *)in, 0, pC->ReaderVideoAU.m_size);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, 0, 8);
- in++;
- if (code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, 0, 8);
- in++;
- if (code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, 0, 8);
- in++;
- if (code == 1)
- {
- /* start code found */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, 0, 8);
- in++;
- if (code == 0xB6)
- { /* find vop start code */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 2); /* VOP coding type */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 2);
- M4MCS_intCheckIndex(&in_index,2,&in);
- vopCodingType = code; /* Save it before needed further in parsing */
- do
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Modulo time base */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- } while(code != 0);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- pC->uiOrigTimescaleLength);
- /* VOP time increment */
-
- /* Calculates new time increment and write it to AU */
- new_time_incr = (pC->uiVideoTimescale * code) /
- pC->uiOrigVideoTimescale;
- M4MCS_WriteByteToMemory(new_time_incr, in,
- in_index, pC->uiTimescaleLength );
- M4MCS_intCheckIndex(&in_index,pC->uiTimescaleLength,
- &in);
-
- /* VOP not coded */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* VOP not coded bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- if(code == 1)
- {
- //break; /* TODO !!! -> Goto stuffing */
- }
- /* newpred ignored */
-
- if((pC->volParsing.video_object_layer_shape != 2) &&
- (vopCodingType == 1 || vopCodingType == 3 &&
- pC->volParsing.sprite_enable == 2))
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* VOP rounding type */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- }
-
- if(pC->volParsing.reduced_resolution_vop_enable &&
- pC->volParsing.video_object_layer_shape == 0 &&
- (vopCodingType == 0 || vopCodingType == 1))
- {
- /* VOP reduced resolution */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- }
-
- if(pC->volParsing.video_object_layer_shape != 0)
- {
- if(pC->volParsing.sprite_enable == 1 &&
- vopCodingType == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13); /* VOP width */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 13);
- M4MCS_intCheckIndex(&in_index,13,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13); /* VOP height */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 13);
- M4MCS_intCheckIndex(&in_index,13,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13); /* VOP horizontal
- mc spatial ref */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 13);
- M4MCS_intCheckIndex(&in_index,13,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 13); /* VOP vertical
- mc spatial ref */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 13);
- M4MCS_intCheckIndex(&in_index,13,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* Marker bit */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- }
- if(pC->volParsing.video_object_layer_shape != 1 &&
- pC->volParsing.scalability &&
- pC->volParsing.enhancement_type)
- {
- /* Background composition */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
-
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- }
- /* Change conv ratio disable */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
-
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* VOP constant alpha */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- if(code)
- {
- /* VOP constant alpha value */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
-
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- }
- }
-
- if(pC->volParsing.video_object_layer_shape != 2)
- {
- if(!pC->volParsing.complexity_estimation_disable)
- {
- return M4ERR_NOT_IMPLEMENTED;
- }
- }
-
- if(pC->volParsing.video_object_layer_shape != 2)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3); /* intra dc vlc thr */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 3);
- M4MCS_intCheckIndex(&in_index,3,&in);
- if(pC->volParsing.interlaced)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* top field first */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1); /* alternate vertical
- scan flag */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- }
- }
-
- if((pC->volParsing.sprite_enable == 1 || pC->volParsing.sprite_enable == 2) &&
- vopCodingType == 3)
- {
- if(pC->volParsing.sprite_warping_points > 0 ||
- (pC->volParsing.sprite_brightness_change))
- {
- return M4ERR_NOT_IMPLEMENTED;
- }
- if(pC->volParsing.sprite_enable == 1)
- {
- return M4ERR_NOT_IMPLEMENTED;
- }
- }
-
- if(pC->volParsing.video_object_layer_shape != 2)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- pC->volParsing.quant_precision); /* vop_quant */
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index,
- pC->volParsing.quant_precision);
- M4MCS_intCheckIndex(&in_index,pC->volParsing.quant_precision,&in);
- if(pC->volParsing.video_object_layer_shape == 3)
- {
- return M4ERR_NOT_IMPLEMENTED;
- }
- if(vopCodingType != 0) /* P-VOP or S-VOP or B-VOP case */
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3); /* vop fcode forward*/
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 3);
- M4MCS_intCheckIndex(&in_index,3,&in);
- vop_fcode_forward = code;
- }
- if(vopCodingType == 2) /* B-VOP */
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 3); /* vop fcode forward*/
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 3);
- M4MCS_intCheckIndex(&in_index,3,&in);
- vop_fcode_backward = code;
- }
-
- }
-
-#if 1
- /* Align on read */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8-(parsingCtxt.stream_index));
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 8-(parsingCtxt.stream_index));
- M4MCS_intCheckIndex(&in_index,8-(parsingCtxt.stream_index),&in);
-
- do
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if(code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- if(code == 0)
- {
- nb_zeros = 0;
- if((vopCodingType == 1 || vopCodingType == 3)
- && vop_fcode_forward > 1) /* P-VOP or S-VOP case */
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- vop_fcode_forward-1);
- nb_zeros = vop_fcode_forward-1;
- }
- else if(vopCodingType == 2 && (vop_fcode_forward > 1 ||
- vop_fcode_backward > 1)) /* B-VOP case */
- {
- if(vop_fcode_forward > vop_fcode_backward)
- {
- if(15+vop_fcode_forward > 17)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- vop_fcode_forward-1);
- }
- else
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- }
- nb_zeros = vop_fcode_forward-1;
- }
- else
- {
- if(15+vop_fcode_backward > 17)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- vop_fcode_backward-1);
- }
- else
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- }
- nb_zeros = vop_fcode_backward-1;
- }
- if(code == 0)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if(code != 1)
- {
- M4MCS_WriteByteToMemory(0, (M4OSA_MemAddr32)in,
- in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- M4MCS_WriteByteToMemory(0, (M4OSA_MemAddr32)in,
- in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
- goto realign;
- }
- else
- {
- M4MCS_intChangeVideoPacketVideoTimescale(pC );
- }
- }
- else
- {
-
- goto realign;
- }
- }
- else /* I-VOP case or P-VOP or S-VOP case with
- vop_fcode_forward = 1 */
- {
- /* Read next bit that must be one */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 1);
- if(code != 1)
- {
- goto realign;
- }
- else
- {
- /* Realign on byte */
-
- /* Write resync marker */
- M4MCS_WriteByteToMemory(0, (M4OSA_MemAddr32)in,
- in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- M4MCS_WriteByteToMemory(0, (M4OSA_MemAddr32)in,
- in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in,
- in_index, 1);
- M4MCS_intCheckIndex(&in_index,1,&in);
-
- /* Change timescale into video packet header */
- M4MCS_intChangeVideoPacketVideoTimescale(pC );
- }
-
- }
- }
- else
- {
- M4MCS_WriteByteToMemory(0, (M4OSA_MemAddr32)in, in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
-realign:
- /* Realign on read */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt,
- 8-(parsingCtxt.stream_index));
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index,
- 8-(parsingCtxt.stream_index));
- M4MCS_intCheckIndex(&in_index,8-(parsingCtxt.stream_index),&in);
- }
- }
- else
- {
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 8);
- M4MCS_intCheckIndex(&in_index,8,&in);
- }
- } while(parsingCtxt.in - pC->ReaderVideoAU.m_dataAddress\
- < pC->ReaderVideoAU.m_size);
-#else
- /* Align on write */
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8-in_index);
- M4MCS_WriteByteToMemory(code, (M4OSA_MemAddr32)in, in_index, 8-in_index);
- M4MCS_intCheckIndex(&in_index,8-in_index,&in);
-
- /* Read 8 bits words, and write them to the output AU
- (write is 8 bits aligned) */
- diff_timescale = pC->uiOrigTimescaleLength - pC->uiTimescaleLength;
- if(diff_timescale > 0)
- {
- while (parsingCtxt.in - start <= pC->ReaderVideoAU.m_size)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- //WritebyteToMemory(code, in);
- *in = code;
- in++;
- }
- }
- else
- {
- while (parsingCtxt.in - start < pC->ReaderVideoAU.m_size)
- {
- code = M4MCS_GetBitsFromMemory(&parsingCtxt, 8);
- //WritebyteToMemory(code, in);
- *in = code;
- in++;
- }
- }
-#endif
- in--;
-
- for(i=0;i<parsingCtxt.stream_index;i++)
- {
- stuffing_byte = stuffing_byte << 1;
- stuffing_byte += 1;
- }
- M4MCS_WriteByteToMemory(stuffing_byte, (M4OSA_MemAddr32)in,
- 8-parsingCtxt.stream_index, parsingCtxt.stream_index);
- pC->WriterVideoAU.size = in + 1 - pC->WriterVideoAU.dataAddress;
- //*in ;
- }
- }
- }
- }
-
- return M4NO_ERROR;
-}
-
-#endif /* TIMESCALE_BUG */
-
diff --git a/libvideoeditor/vss/src/Android.mk b/libvideoeditor/vss/src/Android.mk
index 55a000d..c6fc64a 100755
--- a/libvideoeditor/vss/src/Android.mk
+++ b/libvideoeditor/vss/src/Android.mk
@@ -40,7 +40,6 @@ LOCAL_SRC_FILES:= \
M4VSS3GPP_MediaAndCodecSubscription.c \
M4ChannelCoverter.c \
M4VD_EXTERNAL_BitstreamParser.c \
- M4VD_EXTERNAL_Interface.c \
M4AIR_API.c \
M4READER_Pcm.c \
M4PCMR_CoreReader.c \
diff --git a/libvideoeditor/vss/src/M4ChannelCoverter.c b/libvideoeditor/vss/src/M4ChannelCoverter.c
index eee62d8..5d89820 100755
--- a/libvideoeditor/vss/src/M4ChannelCoverter.c
+++ b/libvideoeditor/vss/src/M4ChannelCoverter.c
@@ -44,7 +44,7 @@ void From2iToMono_16( const short *src,
{
short ii;
long Temp;
- for (ii = n; ii != 0; ii--) {
+ for (ii = n; ii != 0; ii--){
Temp = (long)*(src++);
Temp += (long)*(src++);
*(dst++) = (short)(Temp >>1);
diff --git a/libvideoeditor/vss/src/M4PTO3GPP_API.c b/libvideoeditor/vss/src/M4PTO3GPP_API.c
index e3fe84f..2ce22f6 100755
--- a/libvideoeditor/vss/src/M4PTO3GPP_API.c
+++ b/libvideoeditor/vss/src/M4PTO3GPP_API.c
@@ -242,13 +242,6 @@ M4OSA_ERR M4PTO3GPP_Init( M4PTO3GPP_Context* pContext,
pC->pSavedPlane = M4OSA_NULL;
pC->uiSavedDuration = 0;
- for (i=0; i<M4VE_kEncoderType_NB; i++)
- {
- pC->registeredExternalEncs[i].pEncoderInterface = M4OSA_NULL;
- pC->registeredExternalEncs[i].pUserData = M4OSA_NULL;
- pC->registeredExternalEncs[i].registered = M4OSA_FALSE;
- }
-
M4OSA_TRACE3_0("M4PTO3GPP_Init(): returning M4NO_ERROR");
return M4NO_ERROR;
}
@@ -265,7 +258,7 @@ M4OSA_ERR M4PTO3GPP_Init( M4PTO3GPP_Context* pContext,
* @return M4NO_ERROR: No error
* @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL
* @return M4ERR_STATE: M4PTO3GPP is not in an appropriate state for this function to be
- called
+ called
* @return M4ERR_ALLOC: There is no more available memory
* @return ERR_PTO3GPP_INVALID_VIDEO_FRAME_SIZE_FOR_H263 The output video frame
* size parameter is incompatible with H263 encoding
@@ -317,7 +310,7 @@ M4OSA_ERR M4PTO3GPP_Open(M4PTO3GPP_Context pContext, M4PTO3GPP_Params* pParams)
/**
* Video Format */
- if ((M4VIDEOEDITING_kH263 != pParams->OutputVideoFormat) &&
+ if( (M4VIDEOEDITING_kH263 != pParams->OutputVideoFormat) &&
(M4VIDEOEDITING_kMPEG4 != pParams->OutputVideoFormat) &&
(M4VIDEOEDITING_kMPEG4_EMP != pParams->OutputVideoFormat) &&
(M4VIDEOEDITING_kH264 != pParams->OutputVideoFormat))
@@ -328,7 +321,7 @@ M4OSA_ERR M4PTO3GPP_Open(M4PTO3GPP_Context pContext, M4PTO3GPP_Params* pParams)
/**
* Video Bitrate */
- if (!((M4VIDEOEDITING_k16_KBPS == pParams->OutputVideoBitrate) ||
+ if(!((M4VIDEOEDITING_k16_KBPS == pParams->OutputVideoBitrate) ||
(M4VIDEOEDITING_k24_KBPS == pParams->OutputVideoBitrate) ||
(M4VIDEOEDITING_k32_KBPS == pParams->OutputVideoBitrate) ||
(M4VIDEOEDITING_k48_KBPS == pParams->OutputVideoBitrate) ||
@@ -1263,23 +1256,6 @@ M4OSA_ERR M4PTO3GPP_Ready4Processing(M4PTO3GPP_InternalContext* pC)
{
case M4VIDEOEDITING_kMPEG4_EMP: bActivateEmp = M4OSA_TRUE; /* no break */
case M4VIDEOEDITING_kMPEG4:
- if (pC->registeredExternalEncs[M4VE_kMpeg4VideoEnc].registered)
- {
-#ifdef M4VSS_ENABLE_EXTERNAL_ENCODERS
- pC->m_pEncoderExternalAPI = pC->registeredExternalEncs[M4VE_kMpeg4VideoEnc]
- .pEncoderInterface;
- pC->m_pEncoderUserData = pC->registeredExternalEncs[M4VE_kMpeg4VideoEnc].pUserData;
-
- err = M4EGE_MPEG4_getInterfaces(&encFormat, &pC->m_pEncoderInt,
- M4ENCODER_OPEN_ADVANCED);
-#else
- M4OSA_TRACE1_0("No external MPEG4 encoder available!\
- Did you forget to register one?");
- err = M4ERR_STATE;
-#endif
- }
- else
- {
#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
err = VideoEditorVideoEncoder_getInterface_MPEG4(&encFormat, &pC->m_pEncoderInt,
M4ENCODER_OPEN_ADVANCED);
@@ -1287,26 +1263,8 @@ M4OSA_ERR M4PTO3GPP_Ready4Processing(M4PTO3GPP_InternalContext* pC)
M4OSA_TRACE1_0("No MPEG4 encoder available! Did you forget to register one?");
err = M4ERR_STATE;
#endif /* software MPEG4 encoder available? */
- }
break;
case M4VIDEOEDITING_kH263:
- if (pC->registeredExternalEncs[M4VE_kH263VideoEnc].registered)
- {
-#ifdef M4VSS_ENABLE_EXTERNAL_ENCODERS
- pC->m_pEncoderExternalAPI = pC->registeredExternalEncs[M4VE_kH263VideoEnc]
- .pEncoderInterface;
- pC->m_pEncoderUserData = pC->registeredExternalEncs[M4VE_kH263VideoEnc].pUserData;
-
- err = M4EGE_H263_getInterfaces(&encFormat, &pC->m_pEncoderInt,
- M4ENCODER_OPEN_ADVANCED);
-#else
- M4OSA_TRACE1_0("No external H263 encoder available! Did you forget to register\
- one?");
- err = M4ERR_STATE;
-#endif
- }
- else
- {
#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
err = VideoEditorVideoEncoder_getInterface_H263(&encFormat, &pC->m_pEncoderInt,
M4ENCODER_OPEN_ADVANCED);
@@ -1314,17 +1272,8 @@ M4OSA_ERR M4PTO3GPP_Ready4Processing(M4PTO3GPP_InternalContext* pC)
M4OSA_TRACE1_0("No H263 encoder available! Did you forget to register one?");
err = M4ERR_STATE;
#endif /* software H263 encoder available? */
- }
break;
case M4VIDEOEDITING_kH264:
- if (pC->registeredExternalEncs[M4VE_kH264VideoEnc].registered)
- {
- M4OSA_TRACE1_0("M4PTO3GPP_Ready4Processing: No external H264 encoder available! \
- Did you forget to register one?");
- err = M4ERR_STATE;
- }
- else
- {
#ifdef M4VSS_SUPPORT_ENCODER_AVC
err = VideoEditorVideoEncoder_getInterface_H264(&encFormat, &pC->m_pEncoderInt,
M4ENCODER_OPEN_ADVANCED);
@@ -1333,7 +1282,6 @@ M4OSA_ERR M4PTO3GPP_Ready4Processing(M4PTO3GPP_InternalContext* pC)
Did you forget to register one?");
err = M4ERR_STATE;
#endif /* software H264 encoder available? */
- }
break;
default:
M4OSA_TRACE1_1("M4PTO3GPP_Ready4Processing: unknown format 0x%x returning \
@@ -2020,41 +1968,3 @@ static M4OSA_ERR M4PTO3GPP_writeAmrSilence048Frame(M4WRITER_DataInterface* pWrit
}
-M4OSA_ERR M4PTO3GPP_RegisterExternalVideoEncoder(M4PTO3GPP_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface* pEncoderInterface,
- M4OSA_Void* pUserData)
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4PTO3GPP_InternalContext *pC = (M4PTO3GPP_InternalContext*)(pContext);
-
- switch (encoderType)
- {
- case M4VE_kMpeg4VideoEnc:
- case M4VE_kH263VideoEnc:
- /* OK */
- break;
-
- case M4VE_kH264VideoEnc:
- M4OSA_TRACE1_0("M4PTO3GPP_RegisterExternalVideoEncoder: \
- H264 encoder type not implemented yet");
- return M4ERR_NOT_IMPLEMENTED;
- break;
-
- default:
- M4OSA_TRACE1_1("M4PTO3GPP_RegisterExternalVideoEncoder:\
- unknown encoderType %d", encoderType);
- return M4ERR_PARAMETER;
- break;
- }
-
- pC->registeredExternalEncs[encoderType].pEncoderInterface = pEncoderInterface;
- pC->registeredExternalEncs[encoderType].pUserData = pUserData;
- pC->registeredExternalEncs[encoderType].registered = M4OSA_TRUE;
-
- /* Notice it overwrites any HW encoder that may already have been registered for this type;
- this is normal. */
-
- return M4NO_ERROR;
-}
-
diff --git a/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c b/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
index b2e8e6f..c8a8aca 100755
--- a/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
+++ b/libvideoeditor/vss/src/M4VD_EXTERNAL_BitstreamParser.c
@@ -19,7 +19,6 @@
#include "M4OSA_Debug.h"
#include "M4VD_EXTERNAL_Interface.h"
-#include "M4VD_EXTERNAL_Internal.h"
#include "M4VD_Tools.h"
/**
diff --git a/libvideoeditor/vss/src/M4VD_EXTERNAL_Interface.c b/libvideoeditor/vss/src/M4VD_EXTERNAL_Interface.c
deleted file mode 100755
index 8258eca..0000000
--- a/libvideoeditor/vss/src/M4VD_EXTERNAL_Interface.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * 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 M4VD_EXTERNAL_Interface.c
- * @brief
- * @note
- ******************************************************************************
- */
-
-#include "NXPSW_CompilerSwitches.h"
-
-#include "M4OSA_CoreID.h"
-#include "M4OSA_Types.h"
-#include "M4OSA_Debug.h"
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
-#include "M4OSA_Semaphore.h"
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
-#include "M4VD_EXTERNAL_Interface.h"
-#include "M4VD_EXTERNAL_Internal.h"
-
-/* Warning: the decode thread has finished decoding all the frames */
-#define M4WAR_DECODE_FINISHED M4OSA_ERR_CREATE(M4_WAR,\
- M4DECODER_EXTERNAL, 0x0001)
-/* Warning: the render thread has finished rendering the frame */
-#define M4WAR_RENDER_FINISHED M4OSA_ERR_CREATE(M4_WAR,\
- M4DECODER_EXTERNAL, 0x0002)
-
-#define M4ERR_CHECK(x) if(M4NO_ERROR!=x) return x;
-#define M4ERR_EXIT(x) do { err = x; goto exit_with_error; } while(0)
-
-
-/* ----- shell API ----- */
-
-static M4OSA_ERR M4DECODER_EXTERNAL_create(M4OSA_Context *pVS_Context,
- M4_StreamHandler *pStreamHandler,
- M4READER_DataInterface *pReaderDataInterface,
- M4_AccessUnit* pAccessUnit, M4OSA_Void* pUserData);
-static M4OSA_ERR M4DECODER_EXTERNAL_destroy(M4OSA_Context pVS_Context);
-static M4OSA_ERR M4DECODER_EXTERNAL_getOption(M4OSA_Context pVS_Context, M4OSA_OptionID optionId,
- M4OSA_DataOption* pValue);
-static M4OSA_ERR M4DECODER_EXTERNAL_setOption(M4OSA_Context pVS_Context, M4OSA_OptionID optionId,
- M4OSA_DataOption pValue);
-static M4OSA_ERR M4DECODER_EXTERNAL_decode(M4OSA_Context pVS_Context, M4_MediaTime* pTime,
- M4OSA_Bool bJump);
-static M4OSA_ERR M4DECODER_EXTERNAL_render(M4OSA_Context pVS_Context, M4_MediaTime* pTime,
- M4VIFI_ImagePlane* pOutputPlane,
- M4OSA_Bool bForceRender);
-
-/* ----- Signaling functions ----- */
-
-static M4OSA_ERR M4DECODER_EXTERNAL_signalDecoderOver(M4OSA_Context pVS_Context,
- M4_MediaTime aTime, M4OSA_ERR aUserError);
-static M4OSA_ERR M4DECODER_EXTERNAL_signalRenderOver(M4OSA_Context pVS_Context,
- M4_MediaTime aTime, M4OSA_ERR aUserError);
-
-/* ----- static internal functions ----- */
-
-static M4OSA_ERR M4DECODER_EXTERNAL_Init(void** pVS_Context, M4VD_Interface* p_HWInterface,
- M4_StreamHandler *pStreamHandler);
-static M4OSA_ERR M4DECODER_EXTERNAL_StreamDescriptionInit(M4VD_StreamInfo** ppStreamInfo,
- M4_StreamHandler *pStreamHandler);
-static M4OSA_ERR M4DECODER_EXTERNAL_SetUpReadInput(void* pVS_Context,
- M4READER_DataInterface* pReader,
- M4_AccessUnit* pAccessUnit);
-static M4OSA_ERR M4DECODER_EXTERNAL_GetNextAu(M4VS_VideoDecoder_Context* pStreamContext,
- M4VD_VideoBuffer *nextBuffer,
- M4_MediaTime* nextFrameTime);
-static M4OSA_ERR M4DECODER_EXTERNAL_SynchronousDecode(M4OSA_Context pVS_Context);
-static M4OSA_ERR M4DECODER_EXTERNAL_AsynchronousDecode(M4OSA_Context pVS_Context);
-static M4OSA_ERR M4DECODER_EXTERNAL_AsynchronousRender(M4OSA_Context pVS_Context);
-
-
-/* ___________________________________________________________________ */
-/*| |*/
-/*| |*/
-/*|___________________________________________________________________|*/
-
-/**
- ************************************************************************
- * @brief Retrieves the interface implemented by the decoder
- * @note
- *
- * @param pDecoderInterface: (OUT) address of a pointer that will be set to the interface
- * implemented by this decoder. The interface is a structure
- * allocated by the function and must be unallocated by the
- * caller.
- *
- * @returns : M4NO_ERROR if OK
- * M4ERR_ALLOC if allocation failed
- ************************************************************************
- */
-M4OSA_ERR M4DECODER_EXTERNAL_getInterface(M4DECODER_VideoInterface **pDecoderInterface)
-{
- /* Allocates memory for the decoder shell pointer to function */
- *pDecoderInterface =
- (M4DECODER_VideoInterface*)M4OSA_32bitAlignedMalloc( sizeof(M4DECODER_VideoInterface),
- M4DECODER_EXTERNAL, (M4OSA_Char *)"M4DECODER_VideoInterface" );
- if (M4OSA_NULL == *pDecoderInterface)
- {
- M4OSA_TRACE1_0("M4DECODER_EXTERNAL_getInterface:\
- unable to allocate M4DECODER_VideoInterface, returning M4ERR_ALLOC");
- return M4ERR_ALLOC;
- }
-
- (*pDecoderInterface)->m_pFctCreate = M4DECODER_EXTERNAL_create;
- (*pDecoderInterface)->m_pFctDestroy = M4DECODER_EXTERNAL_destroy;
- (*pDecoderInterface)->m_pFctGetOption = (M4DECODER_getOption_fct*)M4DECODER_EXTERNAL_getOption;
- (*pDecoderInterface)->m_pFctSetOption = M4DECODER_EXTERNAL_setOption;
- (*pDecoderInterface)->m_pFctDecode = M4DECODER_EXTERNAL_decode;
- (*pDecoderInterface)->m_pFctRender = M4DECODER_EXTERNAL_render;
-
- return M4NO_ERROR;
-}
-
-
-/* ___________________________________________________________________ */
-/*| |*/
-/*| shell API |*/
-/*|___________________________________________________________________|*/
-
-/**
- ************************************************************************
- * @brief Creates the external video decoder
- * @note This function creates internal video decoder context and
- * initializes it.
- *
- * @param pVS_Context (OUT) Context of the video hw shell
- * @param pStreamHandler (IN) Pointer to a video stream description
- * @param pReaderDataInterface: (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
- * @param pExternalAPI (IN) Interface of the client video decoder
- * @param pUserData (IN) User data of the external video decoder
- *
- * @return M4NO_ERROR There is no error
- * @return M4ERR_ALLOC a memory allocation has failed
- * @return M4ERR_PARAMETER at least one parameter is not properly set (in DEBUG only)
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_create(M4OSA_Context *pVS_Context,
- M4_StreamHandler *pStreamHandler,
- M4READER_DataInterface *pReaderDataInterface,
- M4_AccessUnit* pAccessUnit, M4OSA_Void* pUserData)
-{
- M4VD_VideoType videoDecoderKind;
- M4VD_StreamInfo* pStreamInfo;
- M4VD_OutputFormat outputFormat;
-
- M4VS_VideoDecoder_Context* pStreamContext;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_create");
-
- /* Video Shell Creation */
- err = M4DECODER_EXTERNAL_Init(pVS_Context,
- ((M4DECODER_EXTERNAL_UserDataType)pUserData)->externalFuncs, pStreamHandler);
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create :\
- M4VD_EXTERNAL_Init RETURNS THE ERROR CODE = 0x%x", err);
- return err;
- }
-
- err = M4DECODER_EXTERNAL_SetUpReadInput(*pVS_Context, pReaderDataInterface, pAccessUnit);
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create :\
- M4VD_EXTERNAL_SetUpReadInput RETURNS THE ERROR CODE = 0x%x", err);
- return err;
- }
-
- pStreamContext = (M4VS_VideoDecoder_Context*)(*pVS_Context);
-
- /* Stream Description init */
- err = M4DECODER_EXTERNAL_StreamDescriptionInit(&pStreamInfo, pStreamHandler);
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create :\
- M4VD_EXTERNAL_StreamDescriptionInit RETURNS THE ERROR CODE = 0x%x", err);
- return err;
- }
-
- pStreamContext->m_pStreamInfo = pStreamInfo;
-
- /* HW context creation */
- err = pStreamContext->m_VD_Interface->m_pFctInitVideoDecoder(&(pStreamContext->m_VD_Context),
- &(pStreamContext->m_VD_SignalingInterface));
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create : m_pFctInitVideoDecoder() error 0x%x", err);
- return err;
- }
-
- /* HW decoder creation */
- switch(pStreamHandler->m_streamType)
- {
- case M4DA_StreamTypeVideoH263 :
- videoDecoderKind = M4VD_kH263VideoDec;
- break;
-
- default :
- case M4DA_StreamTypeVideoMpeg4 :
- videoDecoderKind = M4VD_kMpeg4VideoDec;
- break;
- }
-
- err = pStreamContext->m_VD_Interface->m_pFctOpenDecoder(pStreamContext->m_VD_Context,
- videoDecoderKind, pStreamContext->m_pStreamInfo, &outputFormat,
- ((M4DECODER_EXTERNAL_UserDataType)pUserData)->externalUserData);
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create : m_pFctOpenDecoder() error 0x%x", err);
- return err;
- }
-
- /* Parse the VOL header */
- err = M4DECODER_EXTERNAL_ParseVideoDSI((M4OSA_UInt8 *)pStreamContext->m_pStreamInfo->\
- decoderConfiguration.pBuffer,
- pStreamContext->m_pStreamInfo->\
- decoderConfiguration.aSize,
- &pStreamContext->m_Dci, &pStreamContext->m_VideoSize);
-
- if (err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_create :\
- M4DECODER_EXTERNAL_ParseVideoDSI() error 0x%x", err);
- return err;
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief destroy the instance of the decoder
- * @note after this call the context is invalid
- *
- * @param pVS_Context: (IN) Context of the decoder
- *
- * @return M4NO_ERROR There is no error
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_destroy(M4OSA_Context pVS_Context)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_destroy");
-
- if(M4OSA_NULL != pStreamContext)
- {
- /* Call external API destroy function */
- pStreamContext->m_VD_Interface->m_pFctClose(pStreamContext->m_VD_Context);
-
- /* Destroy context */
- pStreamContext->m_VD_Interface->m_pFctCleanUp(pStreamContext->m_VD_Context);
-
- if(M4OSA_NULL != pStreamContext->m_pStreamInfo)
- {
- free(pStreamContext->m_pStreamInfo);
- pStreamContext->m_pStreamInfo = M4OSA_NULL;
- }
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- if (M4OSA_NULL != pStreamContext->m_SemSync)
- {
- M4OSA_semaphoreClose(pStreamContext->m_SemSync);
- }
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
- free(pStreamContext);
- pStreamContext = M4OSA_NULL;
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief Get an option value from the decoder
- * @note It allows the caller to retrieve a property value:
- * - the size (width x height) of the image
- * - the DSI properties
- *
- * @param pVS_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
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_getOption(M4OSA_Context pVS_Context, M4OSA_OptionID optionId,
- M4OSA_DataOption *pValue)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_getOption");
-
- switch (optionId)
- {
- case M4DECODER_kOptionID_VideoSize:
- *((M4DECODER_VideoSize*)pValue) = pStreamContext->m_VideoSize;
- err = M4NO_ERROR;
- break;
-
- case M4DECODER_MPEG4_kOptionID_DecoderConfigInfo:
- *((M4DECODER_MPEG4_DecoderConfigInfo*)pValue) = pStreamContext->m_Dci;
- err = M4NO_ERROR;
- break;
-
- default:
- err = pStreamContext->m_VD_Interface->m_pFctGetOption(pStreamContext->m_VD_Context,
- optionId, pValue);
- break;
- }
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief set en option value of the decoder
- * @note It allows the caller to set a property value:
- * - Nothing implemented at this time
- *
- * @param pVS_Context: (IN) Context of the external video decoder shell
- * @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
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_setOption(M4OSA_Context pVS_Context, M4OSA_OptionID optionId,
- M4OSA_DataOption pValue)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
- M4OSA_ERR err;
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_setOption");
-
- switch (optionId)
- {
- case M4DECODER_kOptionID_OutputFilter:
- {
- M4DECODER_OutputFilter* pOutputFilter = (M4DECODER_OutputFilter*) pValue;
- err =
- pStreamContext->m_VD_Interface->m_pFctSetOutputFilter(pStreamContext->m_VD_Context,
- (M4VIFI_PlanConverterFunctionType*)pOutputFilter->m_pFilterFunction,
- pOutputFilter->m_pFilterUserData);
- }
- break;
-
- case M4DECODER_kOptionID_DeblockingFilter:
- err = M4NO_ERROR;
- break;
-
- default:
- err = pStreamContext->m_VD_Interface->m_pFctSetOption(pStreamContext->m_VD_Context,
- optionId, pValue);
- break;
- }
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief Decode video Access Units up to a target time
- * @note Parse and decode the video until it can 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 passed to M4DECODER_EXTERNAL_create.
- * If threaded mode, waits until previous decoding is over,
- * and fill decoding parameters used by the decoding thread.
- *
- * @param pVS_Context:(IN) Context of the external video decoder shell
- * @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
- *
- * @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)
- * @return M4WAR_VIDEORENDERER_NO_NEW_FRAME No frame to render
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_decode(M4OSA_Context pVS_Context, M4_MediaTime* pTime,
- M4OSA_Bool bJump)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_2("M4DECODER_EXTERNAL_decode : up to %lf bjump = 0x%x", *pTime, bJump);
-
- pStreamContext->m_DecodeUpToCts = *pTime;
- pStreamContext->m_bJump = bJump;
- if (bJump)
- {
- pStreamContext->m_CurrentDecodeCts = -1.0;
- pStreamContext->m_CurrentRenderCts = -1.0;
- }
-
- if(pStreamContext->m_DecodeUpToCts < pStreamContext->m_nextAUCts &&
- pStreamContext->m_CurrentRenderCts > pStreamContext->m_DecodeUpToCts)
- {
- /* It means that we do not need to launch another predecode, as we will reuse
- the previously decoded frame*/
- /* a warning is returned to the service to warn it about that .*/
- /* In that case, the service MUST NOT call render function, and must keep the
- previous frame */
- /* if necessary (i.e force render case)*/
- M4OSA_TRACE2_0("No decode is needed, same frame reused");
- return M4WAR_VIDEORENDERER_NO_NEW_FRAME;
- }
-
- /* If render has not been called for frame n, it means that n+1 frame decoding has
- not been launched
- -> do not wait for its decoding completion ...*/
- if(pStreamContext->m_bIsWaitNextDecode == M4OSA_TRUE)
- {
- /* wait for decode n+1 to complete */
- //M4semvalue--;
- //printf("Semaphore wait: %d\n", M4semvalue);
- pStreamContext->m_bIsWaitNextDecode = M4OSA_FALSE;
- M4OSA_semaphoreWait(pStreamContext->m_SemSync, M4OSA_WAIT_FOREVER);
- }
- if(pStreamContext->m_CurrentDecodeCts >= *pTime)
- {
- /* If we are not in this condition, it means that we ask for a frame after the
- "predecoded" frame */
- *pTime = pStreamContext->m_CurrentDecodeCts;
- return M4NO_ERROR;
- }
-
- pStreamContext->m_NbDecodedFrames = 0;
- pStreamContext->m_uiDecodeError = M4NO_ERROR;
- pStreamContext->m_bDataDecodePending = M4OSA_TRUE;
- pStreamContext->m_uiDecodeError = M4NO_ERROR;
-
- /* Launch DecodeUpTo process in synchronous mode */
- while(pStreamContext->m_uiDecodeError == M4NO_ERROR)
- {
- M4DECODER_EXTERNAL_SynchronousDecode(pVS_Context);
- /* return code is ignored, it is used only in M4OSA_Thread api */
- }
-
- *pTime = pStreamContext->m_CurrentDecodeCts;
-
- if ( (M4WAR_DECODE_FINISHED == pStreamContext->m_uiDecodeError)
- || (M4WAR_VIDEORENDERER_NO_NEW_FRAME == pStreamContext->m_uiDecodeError) )
- {
- pStreamContext->m_uiDecodeError = M4NO_ERROR;
- }
-
- return pStreamContext->m_uiDecodeError;
-}
-
-/**
- ************************************************************************
- * @brief Renders the video at the specified time.
- * @note If threaded mode, this function unlock the decoding thread,
- * which also call the external rendering function.
- * Else, just call external rendering function, and waits for its
- * completion.
- *
- * @param pVS_Context: (IN) Context of the video decoder shell
- * @param pTime: (IN/OUT) IN: Time to render to (in milli secondes)
- * OUT:Time of the effectively rendered frame (in ms)
- * @param pOutputPlane:(OUT) Output plane filled with decoded data (converted)
- * If NULL, the rendering is made by the external
- * component.
- * @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
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_render(M4OSA_Context pVS_Context, M4_MediaTime* pTime,
- M4VIFI_ImagePlane* pOutputPlane,
- M4OSA_Bool bForceRender)
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_TRACE2_2("M4DECODER_EXTERNAL_render : pTime = %lf, forceRender: %d ", *pTime,
- bForceRender);
-
- pStreamContext->m_TargetRenderCts = *pTime;
- pStreamContext->m_pOutputPlane = pOutputPlane;
- pStreamContext->m_bForceRender = bForceRender;
- pStreamContext->m_uiRenderError = M4NO_ERROR;
- pStreamContext->m_bDataRenderPending = M4OSA_TRUE;
-
- /* Launch Render process in synchronous mode */
- while(pStreamContext->m_uiRenderError == M4NO_ERROR)
- {
- M4DECODER_EXTERNAL_AsynchronousRender(pVS_Context);
- /* return code is ignored, it is used only in M4OSA_Thread */
- }
-
-
- *pTime = pStreamContext->m_CurrentRenderCts;
-
-
- if (M4WAR_RENDER_FINISHED == pStreamContext->m_uiRenderError)
- {
- pStreamContext->m_uiRenderError = M4NO_ERROR;
- }
-
- return pStreamContext->m_uiRenderError;
-}
-
-
-/* ___________________________________________________________________ */
-/*| |*/
-/*| Signaling functions |*/
-/*|___________________________________________________________________|*/
-
-/**
- ************************************************************************
- * @brief Called by the HW video decoder to signal that a decoding is
- * over
- * @note The function gets another AU in the internal AU buffer, and
- * launches the decoding.
- * If no more AU are available, the M4DECODER_EXTERNAL_decode
- * (or M4DECODER_EXTERNAL_render if threaded) function is unlocked
- *
- * @param pVS_Context: (IN) context of the video hw shell
- * @param aTime: (IN) time of the decoded frame
- * @param aUserError (IN) error code returned to the VPS
- *
- * @return M4NO_ERROR There is no error
- * @return M4ERR_HW_DECODER_xxx A fatal error occured
- * @return M4ERR_PARAMETER At least one parameter is NULL
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_signalDecoderOver(M4OSA_Context pVS_Context,
- M4_MediaTime aTime, M4OSA_ERR aUserError)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_TRACE2_1("M4DECODER_EXTERNAL_signalDecoderOver : aTime = %lf", aTime);
-
- pStreamContext->m_NbDecodedFrames++;
- pStreamContext->m_uiDecodeError = aUserError;
- pStreamContext->m_CurrentDecodeCts = aTime;
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- /* give control back to stepDecode */
- //M4semvalue++;
- //printf("Semaphore post: %d\n", M4semvalue);
- M4OSA_semaphorePost(pStreamContext->m_SemSync);
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief Called by the HW video renderer to signal that a rendering is
- * over
- * @note The function just post a semaphore to unblock
- * M4DECODER_EXTERNAL_render function
- *
- * @param pVS_Context: (IN) context of the video hw shell
- * @param aTime: (IN) time of the decoded frame
- * @param aUserError (IN) error code returned to the VPS
- *
- * @return M4NO_ERROR There is no error
- * @return M4ERR_HW_DECODER_xxx A fatal error occured
- * @return M4ERR_PARAMETER At least one parameter is NULL
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_signalRenderOver(M4OSA_Context pVS_Context,
- M4_MediaTime aTime, M4OSA_ERR aUserError)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_TRACE3_1("M4DECODER_EXTERNAL_signalRenderOver : aTime = %lf", aTime);
-
- pStreamContext->m_uiRenderError = aUserError;
- pStreamContext->m_CurrentRenderCts = aTime;
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- /* give control back to stepRender */
- //M4semvalue++;
- //printf("Semaphore post: %d\n", M4semvalue);
- M4OSA_semaphorePost(pStreamContext->m_SemSync);
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
- return M4NO_ERROR;
-}
-
-
-/* ___________________________________________________________________ */
-/*| |*/
-/*| Internals |*/
-/*|___________________________________________________________________|*/
-
-/**
- ************************************************************************
- * @brief Initializes the video decoder shell/handler
- * @note allocates an execution context
- *
- * @param pVS_Context: (OUT) Output context allocated
- * @param p_HWInterface: (IN) Pointer on the set of external HW codec functions
- * @param pStreamHandler: (IN) Pointer to a video stream description
- *
- * @return M4NO_ERROR There is no error
- * @return M4ERR_ALLOC There is no more available memory
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_Init(M4OSA_Context* pVS_Context,
- M4VD_Interface* p_HWInterface,
- M4_StreamHandler *pStreamHandler)
-{
- M4VS_VideoDecoder_Context* pStreamContext;
-
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_Init");
-
- /* Allocate the internal context */
- *pVS_Context = M4OSA_NULL;
-
- pStreamContext = (M4VS_VideoDecoder_Context*)M4OSA_32bitAlignedMalloc(sizeof(M4VS_VideoDecoder_Context),
- M4DECODER_EXTERNAL,(M4OSA_Char *) "M4VS_VideoDecoder_Context");
- if (M4OSA_NULL == pStreamContext)
- {
- M4OSA_TRACE1_0("M4DECODER_EXTERNAL_Init : error, cannot allocate context !");
- return M4ERR_ALLOC;
- }
-
- /* Reset internal context structure */
- *pVS_Context = pStreamContext;
-
- /* --- READER --- */
- pStreamContext->m_pReader = M4OSA_NULL;
- pStreamContext->m_pNextAccessUnitToDecode = M4OSA_NULL;
- pStreamContext->m_bJump = M4OSA_FALSE;
- pStreamContext->m_nextAUCts = -1;
-
- /* --- DECODER --- */
- pStreamContext->m_DecodeUpToCts = -1;
- pStreamContext->m_CurrentDecodeCts = -1;
- pStreamContext->m_NbDecodedFrames = 0;
- pStreamContext->m_uiDecodeError = M4NO_ERROR;
- pStreamContext->m_bDataDecodePending = M4OSA_FALSE;
- pStreamContext->m_PreviousDecodeCts = 0;
- pStreamContext->m_bIsWaitNextDecode = M4OSA_FALSE;
-
- /* --- RENDER --- */
- pStreamContext->m_TargetRenderCts = -1;
- pStreamContext->m_CurrentRenderCts = -1;
- pStreamContext->m_uiRenderError = M4NO_ERROR;
- pStreamContext->m_bForceRender = M4OSA_TRUE;
- pStreamContext->m_bDataRenderPending = M4OSA_FALSE;
-
- /* --- STREAM PARAMS --- */
- pStreamContext->m_pVideoStreamhandler = (M4_VideoStreamHandler*)pStreamHandler;
- pStreamContext->m_pStreamInfo = M4OSA_NULL;
- pStreamContext->m_pOutputPlane = M4OSA_NULL;
-
- /* --- VD API --- */
- pStreamContext->m_VD_Interface = p_HWInterface;
- pStreamContext->m_VD_Context = M4OSA_NULL;
-
- pStreamContext->m_VD_SignalingInterface.m_pSignalTarget = pStreamContext;
- pStreamContext->m_VD_SignalingInterface.m_pFctSignalDecoderOver =
- M4DECODER_EXTERNAL_signalDecoderOver;
- pStreamContext->m_VD_SignalingInterface.m_pFctSignalRenderOver =
- M4DECODER_EXTERNAL_signalRenderOver;
-
- /* --- THREAD STUFF --- */
-
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- pStreamContext->m_SemSync = M4OSA_NULL;
- //M4semvalue=0;
- err = M4OSA_semaphoreOpen(&(pStreamContext->m_SemSync), 0);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_Init: can't open sync semaphore (err 0x%08X)", err);
- return err;
- }
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief Fills the stream info structure
- * @note This function is called at decoder's creation time,
- * allocates and fills video info structure
- *
- * @param ppStreamInfo (OUT) Video info structure
- * @param pStreamHandler (IN) Pointer to a video stream description
- *
- * @return M4ERR_ALLOC Memory allocation error
- * @return M4NO_ERROR There is no error
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_StreamDescriptionInit(M4VD_StreamInfo** ppStreamInfo,
- M4_StreamHandler *pStreamHandler)
-{
- M4_VideoStreamHandler* pVideoStreamHandler = M4OSA_NULL;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_StreamDescriptionInit");
-
- pVideoStreamHandler = (M4_VideoStreamHandler*)pStreamHandler;
-
- /* M4VD_StreamInfo allocation */
- *ppStreamInfo = (M4VD_StreamInfo*)M4OSA_32bitAlignedMalloc(sizeof(M4VD_StreamInfo),
- M4DECODER_EXTERNAL, (M4OSA_Char *)"M4VD_StreamInfo");
- if(M4OSA_NULL == *ppStreamInfo)
- {
- return M4ERR_ALLOC;
- }
-
- /* init values */
- (*ppStreamInfo)->anImageSize.aWidth = pVideoStreamHandler->m_videoWidth;
- (*ppStreamInfo)->anImageSize.aHeight = pVideoStreamHandler->m_videoHeight;
-
- (*ppStreamInfo)->decoderConfiguration.pBuffer =
- (M4OSA_MemAddr8)pStreamHandler->m_pDecoderSpecificInfo;
- (*ppStreamInfo)->decoderConfiguration.aSize = pStreamHandler->m_decoderSpecificInfoSize;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief Initializes current AU parameters
- * @note It is called at decoder's creation time to initialize
- * current decoder's AU.
- *
- * @param pVS_Context (IN) Context of the video decoder shell
- * @param pReader (IN) Reader interface
- * @param pAccessUnit (IN) Access Unit structure used bu decoder
- *
- * @return
- * @return
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_SetUpReadInput(M4OSA_Context pVS_Context,
- M4READER_DataInterface* pReader,
- M4_AccessUnit* pAccessUnit)
-{
- M4VS_VideoDecoder_Context* pStreamContext=(M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_SetUpReadInput");
-
- M4OSA_DEBUG_IF1((M4OSA_NULL == pStreamContext), M4ERR_PARAMETER,
- "M4DECODER_EXTERNAL_SetUpReadInput: invalid context pointer");
- M4OSA_DEBUG_IF1((M4OSA_NULL == pReader), M4ERR_PARAMETER,
- "M4DECODER_EXTERNAL_SetUpReadInput: invalid pReader pointer");
- M4OSA_DEBUG_IF1((M4OSA_NULL == pAccessUnit), M4ERR_PARAMETER,
- "M4DECODER_EXTERNAL_SetUpReadInput: invalid pAccessUnit pointer");
-
- pStreamContext->m_pReader = pReader;
- pStreamContext->m_pNextAccessUnitToDecode = pAccessUnit;
-
- pAccessUnit->m_streamID = 0;
- pAccessUnit->m_size = 0;
- pAccessUnit->m_CTS = 0;
- pAccessUnit->m_DTS = 0;
- pAccessUnit->m_attribute = 0;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief Gets the next AU from internal AU buffer
- * @note This function is necessary to be able to have a decodeUpTo
- * interface with the VPS.
- * The AU are read from file by M4DECODER_EXTERNAL_decode function
- * and stored into a buffer. This function is called internally
- * to get these stored AU.
- *
- * @param pStreamContext: (IN) context of the video hw shell
- * @param nextFrameTime: (IN/OUT) time of the AU
- *
- * @return M4NO_ERROR There is no error
- * @return M4WAR_NO_MORE_AU No more AU in internal buffer
- * @return M4ERR_PARAMETER One invalid parameter
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_GetNextAu(M4VS_VideoDecoder_Context* pStreamContext,
- M4VD_VideoBuffer *nextBuffer,
- M4_MediaTime* nextFrameTime)
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4_AccessUnit* pAccessUnit;
-
- M4OSA_TRACE3_0("M4DECODER_EXTERNAL_GetNextAu");
-
- /* Check context is valid */
- if(M4OSA_NULL == pStreamContext)
- {
- M4OSA_TRACE1_0("M4DECODER_EXTERNAL_GetNextAu : error pStreamContext is NULL");
- return M4ERR_PARAMETER;
- }
-
- /* Read the AU */
- pAccessUnit = pStreamContext->m_pNextAccessUnitToDecode;
-
- err = pStreamContext->m_pReader->m_pFctGetNextAu(pStreamContext->m_pReader->m_readerContext,
- (M4_StreamHandler*)pStreamContext->m_pVideoStreamhandler, pAccessUnit);
-
- if((err == M4WAR_NO_DATA_YET) || (err == M4WAR_NO_MORE_AU))
- {
- M4OSA_TRACE2_1("M4DECODER_EXTERNAL_GetNextAu : no data avalaible 0x%x", err);
- }
- else if(err != M4NO_ERROR)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_GetNextAu : filesystem error 0x%x", err);
-
- *nextFrameTime = 0;
- nextBuffer->pBuffer = M4OSA_NULL;
- nextBuffer->bufferSize = 0;
-
- return err;
- }
-
- /* Fill buffer */
- *nextFrameTime = pAccessUnit->m_CTS;
- nextBuffer->pBuffer = (M4OSA_MemAddr32)pAccessUnit->m_dataAddress;
- nextBuffer->bufferSize = pAccessUnit->m_size;
-
- M4OSA_TRACE3_1("M4DECODER_EXTERNAL_GetNextAu: AU obtained, time is %f", *nextFrameTime);
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief
- * @note
- *
- * @param pVS_Context: (IN) Context of the video hw shell
- *
- * @return M4NO_ERROR There is no error
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_SynchronousDecode(M4OSA_Context pVS_Context)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_ERR err = M4NO_ERROR;
- M4VD_VideoBuffer nextBuffer;
-
-
- /* ----- decode process ----- */
-
- if(M4OSA_TRUE == pStreamContext->m_bDataDecodePending)
- {
- /* Targeted time is reached */
- if( pStreamContext->m_CurrentDecodeCts >= pStreamContext->m_DecodeUpToCts )
- {
- M4OSA_TRACE2_0("M4DECODER_EXTERNAL_SynchronousDecode :\
- skip decode because synchronisation");
-
- if(pStreamContext->m_NbDecodedFrames > 0)
- {
- pStreamContext->m_uiDecodeError = M4WAR_DECODE_FINISHED;
- }
- else
- {
- pStreamContext->m_uiDecodeError = M4WAR_VIDEORENDERER_NO_NEW_FRAME;
- }
-
- M4ERR_EXIT(M4NO_ERROR);
- }
-
- pStreamContext->m_PreviousDecodeCts = pStreamContext->m_CurrentDecodeCts;
-
- /* Get the next AU */
- pStreamContext->m_uiDecodeError = M4DECODER_EXTERNAL_GetNextAu(pStreamContext,
- &nextBuffer, &pStreamContext->m_CurrentDecodeCts);
-
- if( M4NO_ERROR != pStreamContext->m_uiDecodeError )
- {
- if ( M4WAR_NO_MORE_AU != pStreamContext->m_uiDecodeError)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_SynchronousDecode :\
- M4DECODER_EXTERNAL_GetNextAu error 0x%x", pStreamContext->m_uiDecodeError);
- }
- M4ERR_EXIT(pStreamContext->m_uiDecodeError);
- }
-
- /* Decode the AU */
- if(nextBuffer.bufferSize > 0)
- {
- pStreamContext->m_uiDecodeError =
- pStreamContext->m_VD_Interface->m_pFctStepDecode(pStreamContext->m_VD_Context,
- &nextBuffer, pStreamContext->m_CurrentDecodeCts);
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- if ( (M4NO_ERROR == pStreamContext->m_uiDecodeError)
- /*|| (M4WAR_IO_PENDING == pStreamContext->m_uiDecodeError)*/ )
- {
- /* wait for decode to complete */
- //M4semvalue--;
- //printf("Semaphore wait 2: %d\n", M4semvalue);
- M4OSA_semaphoreWait(pStreamContext->m_SemSync, M4OSA_WAIT_FOREVER);
- /* by now the actual m_uiDecodeError has been set by signalDecode */
- }
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
- if(M4NO_ERROR != pStreamContext->m_uiDecodeError)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_SynchronousDecode : HW decoder error 0x%x",
- pStreamContext->m_uiDecodeError);
- M4ERR_EXIT(M4NO_ERROR);
- }
- }
- else
- {
- M4ERR_EXIT(M4NO_ERROR);
- }
- }
-
- return M4NO_ERROR;
-
-
-/* ----- Release resources if an error occured */
-exit_with_error:
-
- /* Abort decoding */
- pStreamContext->m_bDataDecodePending = M4OSA_FALSE;
-
- if((M4NO_ERROR == pStreamContext->m_uiDecodeError) && (M4NO_ERROR != err))
- {
- pStreamContext->m_uiDecodeError = err;
- }
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief
- * @note
- *
- * @param pVS_Context: (IN) Context of the video hw shell
- *
- * @return M4NO_ERROR There is no error
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_AsynchronousDecode(M4OSA_Context pVS_Context)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_ERR err = M4NO_ERROR;
- M4VD_VideoBuffer nextBuffer;
-
-
- /* ----- decode process ----- */
-
- if(M4OSA_TRUE == pStreamContext->m_bDataDecodePending)
- {
- pStreamContext->m_PreviousDecodeCts = pStreamContext->m_CurrentDecodeCts;
-
- /* Get the next AU */
- pStreamContext->m_uiDecodeError = M4DECODER_EXTERNAL_GetNextAu(pStreamContext,
- &nextBuffer, &pStreamContext->m_nextAUCts);
-
- if( M4NO_ERROR != pStreamContext->m_uiDecodeError )
- {
- if ( M4WAR_NO_MORE_AU != pStreamContext->m_uiDecodeError)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_AsynchronousDecode :\
- M4DECODER_EXTERNAL_GetNextAu error 0x%x", pStreamContext->m_uiDecodeError);
- }
- //M4semvalue++;
- //printf("Semaphore post: %d\n", M4semvalue);
- //M4OSA_semaphorePost(pStreamContext->m_SemSync);
- M4ERR_EXIT(pStreamContext->m_uiDecodeError);
- }
-
- /* Decode the AU if needed */
- if(nextBuffer.bufferSize > 0)
- {
- pStreamContext->m_uiDecodeError =
- pStreamContext->m_VD_Interface->m_pFctStepDecode(pStreamContext->m_VD_Context,
- &nextBuffer, pStreamContext->m_nextAUCts\
- /*pStreamContext->m_CurrentDecodeCts*/);
- if(M4NO_ERROR != pStreamContext->m_uiDecodeError)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_AsynchronousDecode : HW decoder error 0x%x",
- pStreamContext->m_uiDecodeError);
- M4ERR_EXIT(M4NO_ERROR);
- }
- pStreamContext->m_bIsWaitNextDecode = M4OSA_TRUE;
- }
- else
- {
- M4ERR_EXIT(M4NO_ERROR);
- }
- }
-
- return M4NO_ERROR;
-
-
-/* ----- Release resources if an error occured */
-exit_with_error:
-
- /* Abort decoding */
- pStreamContext->m_bDataDecodePending = M4OSA_FALSE;
-
- if((M4NO_ERROR == pStreamContext->m_uiDecodeError) && (M4NO_ERROR != err))
- {
- pStreamContext->m_uiDecodeError = err;
- }
-
- return err;
-}
-
-/**
- ************************************************************************
- * @brief
- * @note
- *
- * @param pVS_Context: (IN) Context of the video hw shell
- *
- * @return M4NO_ERROR There is no error
- ************************************************************************
- */
-static M4OSA_ERR M4DECODER_EXTERNAL_AsynchronousRender(M4OSA_Context pVS_Context)
-{
- M4VS_VideoDecoder_Context* pStreamContext = (M4VS_VideoDecoder_Context*)pVS_Context;
-
- M4OSA_ERR err = M4NO_ERROR;
-
-
- /* ----- Render one frame ----- */
-
- if(M4OSA_TRUE == pStreamContext->m_bDataRenderPending)
- {
- /* Render the frame */
- pStreamContext->m_CurrentRenderCts = pStreamContext->m_CurrentDecodeCts;
-
- pStreamContext->m_uiRenderError =
- pStreamContext->m_VD_Interface->m_pFctStepRender(pStreamContext->m_VD_Context,
- pStreamContext->m_pOutputPlane, pStreamContext->m_CurrentRenderCts);
-#ifndef M4DECODER_EXTERNAL_SYNC_EXT_DECODE
- if ( (M4NO_ERROR == pStreamContext->m_uiRenderError)
- /* || (M4WAR_IO_PENDING == pStreamContext->m_uiRenderError) */ )
- {
- /* wait for render to complete */
- //M4semvalue--;
- //printf("Semaphore wait: %d\n", M4semvalue);
- M4OSA_semaphoreWait(pStreamContext->m_SemSync, M4OSA_WAIT_FOREVER);
- /* by now the actual m_uiRenderError has been set by signalRender */
- }
-#endif /* not M4DECODER_EXTERNAL_SYNC_EXT_DECODE */
- if(M4NO_ERROR != pStreamContext->m_uiRenderError)
- {
- M4OSA_TRACE1_1("M4DECODER_EXTERNAL_AsynchronousRender : HW render error 0x%x", err);
- pStreamContext->m_bDataRenderPending = M4OSA_FALSE;
-
- return M4NO_ERROR;
- }
-
- /* Launch in asynchronous mode the predecoding of the next frame */
- pStreamContext->m_NbDecodedFrames = 0;
- pStreamContext->m_uiDecodeError = M4NO_ERROR;
- pStreamContext->m_bDataDecodePending = M4OSA_TRUE;
- M4DECODER_EXTERNAL_AsynchronousDecode(pVS_Context);
-
- pStreamContext->m_uiRenderError = M4WAR_RENDER_FINISHED;
- }
-
- return M4NO_ERROR;
-
-
-/* ----- Release resources if an error occured */
-exit_with_error:
-
- /* Abort the rendering */
- pStreamContext->m_bDataRenderPending = M4OSA_FALSE;
-
- if((M4NO_ERROR == pStreamContext->m_uiRenderError) && (M4NO_ERROR != err))
- {
- pStreamContext->m_uiRenderError = err;
- }
-
-
- return err;
-}
-
diff --git a/libvideoeditor/vss/src/M4VSS3GPP_Clip.c b/libvideoeditor/vss/src/M4VSS3GPP_Clip.c
index 6311cd6..d9b6eb5 100755
--- a/libvideoeditor/vss/src/M4VSS3GPP_Clip.c
+++ b/libvideoeditor/vss/src/M4VSS3GPP_Clip.c
@@ -1817,87 +1817,6 @@ M4OSA_ERR M4VSS3GPP_intClipCleanUp( M4VSS3GPP_ClipContext *pClipCtxt )
return err;
}
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
-M4OSA_ERR
-M4VSS3GPP_intClipRegisterExternalVideoDecoder( M4VSS3GPP_ClipContext *pClipCtxt,
- M4VD_VideoType decoderType,
- M4VD_Interface *pDecoderInterface,
- M4OSA_Void *pUserData )
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4DECODER_VideoInterface *shellInterface;
- M4DECODER_VideoType nativeType;
- M4DECODER_EXTERNAL_UserDataType shellUserData;
-
- switch( decoderType )
- {
- case M4VD_kMpeg4VideoDec:
- case M4VD_kH263VideoDec:
- nativeType = M4DECODER_kVideoTypeMPEG4;
- break;
-
- case M4VD_kH264VideoDec:
- nativeType = M4DECODER_kVideoTypeAVC;
- break;
-
- default:
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intClipRegisterExternalVideoDecoder: unknown decoderType %d",
- decoderType);
- return M4ERR_PARAMETER;
- break;
- }
-
- shellUserData =
- (M4DECODER_EXTERNAL_UserDataType)M4OSA_32bitAlignedMalloc(sizeof(*shellUserData),
- M4VSS3GPP, (M4OSA_Char *)"userData structure for the external shell decoder");
-
- if( M4OSA_NULL == shellUserData )
- {
- M4OSA_TRACE1_0(
- "M4VSS3GPP_intClipRegisterExternalVideoDecoder:\
- failed to allocate userData structure for the external shell decoder");
- return M4ERR_ALLOC;
- }
-
- shellUserData->externalFuncs = pDecoderInterface;
- shellUserData->externalUserData = pUserData;
-
- err = M4DECODER_EXTERNAL_getInterface(&shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intClipRegisterExternalVideoDecoder:\
- M4DECODER_EXTERNAL_getInterface failed with error 0x%08X",
- err);
- free(shellUserData);
- return err;
- }
-
- err = M4VSS3GPP_registerVideoDecoder(&(pClipCtxt->ShellAPI), nativeType,
- shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intClipRegisterExternalVideoDecoder:\
- M4VSS3GPP_registerVideoDecoder failed with error 0x%08X",
- err);
- free(shellInterface);
- free(shellUserData);
- return err;
- }
-
- pClipCtxt->ShellAPI.m_pVideoDecoderUserDataTable[nativeType] =
- shellUserData;
-
- return M4NO_ERROR;
-}
-
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
/**
******************************************************************************
* M4OSA_UInt32 M4VSS3GPP_intGetFrameSize_AMRNB()
diff --git a/libvideoeditor/vss/src/M4VSS3GPP_Edit.c b/libvideoeditor/vss/src/M4VSS3GPP_Edit.c
index e778b52..efdda9b 100755
--- a/libvideoeditor/vss/src/M4VSS3GPP_Edit.c
+++ b/libvideoeditor/vss/src/M4VSS3GPP_Edit.c
@@ -190,24 +190,6 @@ M4OSA_ERR M4VSS3GPP_editInit( M4VSS3GPP_EditContext *pContext,
pC->pOsaFileReadPtr = pFileReadPtrFct;
pC->pOsaFileWritPtr = pFileWritePtrFct;
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
- for ( i = 0; i < M4VD_kVideoType_NB; i++ )
- {
- pC->registeredExternalDecs[i].pDecoderInterface = M4OSA_NULL;
- pC->registeredExternalDecs[i].pUserData = M4OSA_NULL;
- pC->registeredExternalDecs[i].registered = M4OSA_FALSE;
- }
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-#ifdef M4VSS_SUPPORT_OMX_CODECS
-
- for ( i = 0; i < M4VSS3GPP_kCodecType_NB; i++ )
- {
- pC->m_codecInterface[i] = M4OSA_NULL;
- }
- pC->pOMXUserData = M4OSA_NULL;
-#endif /* M4VSS_SUPPORT_OMX_CODECS */
/*
* Reset pointers for media and codecs interfaces */
@@ -1659,119 +1641,6 @@ M4OSA_ERR M4VSS3GPP_editCleanUp( M4VSS3GPP_EditContext pContext )
return M4NO_ERROR;
}
-M4OSA_ERR
-M4VSS3GPP_editRegisterExternalVideoDecoder( M4VSS3GPP_EditContext pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface *pDecoderInterface,
- M4OSA_Void *pUserData )
-{
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
- M4VSS3GPP_InternalEditContext *pC =
- (M4VSS3GPP_InternalEditContext *)pContext;
- /* Here the situation is a bit special: we need to record the registrations that are made,
- so that we can replay them for each clip we create. */
-
- if( decoderType >= M4VD_kVideoType_NB )
- {
- return M4ERR_PARAMETER;
- }
-
- pC->registeredExternalDecs[decoderType].pDecoderInterface
- = pDecoderInterface;
- pC->registeredExternalDecs[decoderType].pUserData = pUserData;
- pC->registeredExternalDecs[decoderType].registered = M4OSA_TRUE;
-
- /* Notice it overwrites any HW decoder that may already have been registered for this type;
- this is normal.*/
-
- return M4NO_ERROR;
-
-#else
-
- return M4ERR_NOT_IMPLEMENTED;
-
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-}
-
-M4OSA_ERR
-M4VSS3GPP_editRegisterExternalVideoEncoder( M4VSS3GPP_EditContext pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface *pEncoderInterface,
- M4OSA_Void *pUserData )
-{
-#ifdef M4VSS_ENABLE_EXTERNAL_ENCODERS
-
- M4VSS3GPP_InternalEditContext *pC =
- (M4VSS3GPP_InternalEditContext *)pContext;
- M4OSA_ERR err = M4NO_ERROR;
- M4ENCODER_GlobalInterface *shellInterface;
- M4ENCODER_Format nativeType;
-
- switch( encoderType )
- {
- case M4VE_kH263VideoEnc:
- err = M4EGE_H263_getInterfaces(&nativeType, &shellInterface,
- M4ENCODER_OPEN_ADVANCED);
-
- break;
-
- case M4VE_kMpeg4VideoEnc:
- err = M4EGE_MPEG4_getInterfaces(&nativeType, &shellInterface,
- M4ENCODER_OPEN_ADVANCED);
- break;
-
- case M4VE_kH264VideoEnc:
- M4OSA_TRACE1_0(
- "M4VSS3GPP_editRegisterExternalVideoEncoder:\
- H264 encoder type not implemented yet");
- return M4ERR_NOT_IMPLEMENTED;
- break;
-
- default:
- M4OSA_TRACE1_1(
- "M4VSS3GPP_editRegisterExternalVideoEncoder: unknown encoderType %d",
- encoderType);
- return M4ERR_PARAMETER;
- break;
- }
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_editRegisterExternalVideoEncoder:\
- M4EGE_getInterface failed with error 0x%08X",
- err);
- return err;
- }
-
- err = M4VSS3GPP_registerVideoEncoder(&(pC->ShellAPI), nativeType,
- shellInterface);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_editRegisterExternalVideoEncoder:\
- M4VSS3GPP_registerVideoEncoder failed with error 0x%08X",
- err);
- free(shellInterface);
- return err;
- }
-
- pC->ShellAPI.pVideoEncoderExternalAPITable[nativeType] = pEncoderInterface;
- pC->ShellAPI.pVideoEncoderUserDataTable[nativeType] = pUserData;
-
- return M4NO_ERROR;
-
-#else
-
- return M4ERR_NOT_IMPLEMENTED;
-
-#endif
-
-}
-
#ifdef WIN32
/**
******************************************************************************
@@ -3303,49 +3172,6 @@ M4OSA_ERR M4VSS3GPP_intOpenClip( M4VSS3GPP_InternalEditContext *pC,
* Set shortcut */
pClip = *hClip;
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
- /* replay recorded external decoder registrations on the clip */
-
- for ( i = 0; i < M4VD_kVideoType_NB; i++ )
- {
- if( pC->registeredExternalDecs[i].registered )
- {
- err = M4VSS3GPP_intClipRegisterExternalVideoDecoder(pClip, i,
- pC->registeredExternalDecs[i].pDecoderInterface,
- pC->registeredExternalDecs[i].pUserData);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intOpenClip:\
- M4VSS3GPP_intClipRegisterExternalVideoDecoder() returns 0x%x!",
- err);
- M4VSS3GPP_intClipCleanUp(pClip);
- return err;
- }
- }
- }
-
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-#ifdef M4VSS_SUPPORT_OMX_CODECS
-
- M4OSA_TRACE3_1("M4VSS3GPP_intOpenClip: pClip->ShellAPI = 0x%x",
- &pClip->ShellAPI);
- err = M4VSS3GPP_intSubscribeExternalCodecs((M4VSS3GPP_EditContext *)pC,
- (M4OSA_Context) &pClip->ShellAPI);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intOpenClip: M4VSS3GPP_intSubscribeExternalCodecs returned err 0x%x",
- err);
- }
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intOpenClip: M4VSS3GPP_intSubscribeExternalCodecs returned 0x%x",
- err);
-#endif /* M4VSS_SUPPORT_OMX_CODECS */
-
err = M4VSS3GPP_intClipOpen(pClip, pClipSettings, M4OSA_FALSE, M4OSA_FALSE,
M4OSA_FALSE);
@@ -3595,431 +3421,3 @@ static M4OSA_Void M4VSS3GPP_intComputeOutputAverageVideoBitrate(
pC->ewc.uiVideoBitrate = ( total_bitsum / total_duration) * 1000;
}
-#ifdef M4VSS_SUPPORT_OMX_CODECS
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_editRegisterExternalCodec(M4VSS3GPP_EditContext pContext,
- * M4VSS3GPP_codecType codecType,
- * M4OSA_Context pCodecInterface,
- * M4OSA_Void* pUserData)
- * @brief Registers an external Video/Audio codec with VSS3GPP
- * @note This is much different from the other external codec registration API to cope
- * up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @param codecType (IN) Type of codec (MPEG4 ...)
- * @param pCodecInterface (IN) Codec interface
- * @param pUserData (IN) Pointer on a user data to give to external codec
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for
- * this function to be called
- ******************************************************************************
- */
-
-M4OSA_ERR M4VSS3GPP_editRegisterExternalCodec( M4VSS3GPP_EditContext pContext,
- M4VSS3GPP_codecType codecType,
- M4OSA_Context pCodecInterface,
- M4OSA_Void *pUserData )
-{
- M4VSS3GPP_InternalEditContext *pC =
- (M4VSS3GPP_InternalEditContext *)pContext;
- M4OSA_ERR err = M4NO_ERROR;
-
- if( ( M4OSA_NULL == pContext) || (M4OSA_NULL == pCodecInterface) )
- {
- M4OSA_TRACE1_2(
- "M4VSS3GPP_editRegisterExternalCodec: NULL input parameter; pContext=0x%x,\
- pCodecInterface=0x%x",
- pContext, pCodecInterface);
- return M4ERR_PARAMETER;
- }
-
- if( codecType >= M4VSS3GPP_kCodecType_NB )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_editRegisterExternalCodec: invalid codec Type; codecType=0x%x",
- codecType);
- return M4ERR_PARAMETER;
- }
-
- pC->m_codecInterface[codecType] = pCodecInterface;
- pC->pOMXUserData = pUserData;
-
- M4OSA_TRACE3_2(
- "M4VSS3GPP_editRegisterExternalCodec: pC->m_codecInterface[%d] = 0x%x",
- codecType, pCodecInterface);
- M4OSA_TRACE3_1(
- "M4VSS3GPP_editRegisterExternalCodec: pC->pOMXUserDatat = 0x%x",
- pUserData);
-
- return M4NO_ERROR;
-}
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_editSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext)
- * @brief Subscribes to previously registered external Video/Audio codec
- * @note This is much different from the other external codec registration API to cope
- * up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for
- * this function to be called
- ******************************************************************************
- */
-M4OSA_ERR M4VSS3GPP_editSubscribeExternalCodecs(
- M4VSS3GPP_EditContext pContext )
-{
- M4VSS3GPP_InternalEditContext *pC =
- (M4VSS3GPP_InternalEditContext *)pContext;
- M4OSA_ERR err = M4NO_ERROR;
-
- if( M4OSA_NULL == pContext )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_editSubscribeExternalCodecs: NULL input parameter; pContext=0x%x",
- pContext);
- return M4ERR_PARAMETER;
- }
-
- M4OSA_TRACE3_1(
- "M4VSS3GPP_editSubscribeExternalCodecs: &pC->ShellAPI = 0x%x",
- &pC->ShellAPI);
- err = M4VSS3GPP_intSubscribeExternalCodecs(pContext,
- (M4OSA_Context) &pC->ShellAPI);
- M4OSA_TRACE3_1(
- "M4VSS3GPP_editSubscribeExternalCodecs:\
- M4VSS3GPP_intSubscribeExternalCodecs returns 0x%x",
- err);
- return err;
-}
-
-/**
- ******************************************************************************
- * M4OSA_ERR M4VSS3GPP_intSubscribeExternalCodecs(M4VSS3GPP_EditContext pContext,
- * M4OSA_Context pShellCtxt)
- * @brief Subscribes to previously registered external Video/Audio codec
- * @note This is much different from the other external codec registration API to cope
- * up with specific requirement of OMX codec implementation.
- *
- * @param pContext (IN) VSS3GPP context
- * @param pShellContext (IN) Media Codec shell context
- * @return M4NO_ERROR: No error
- * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only)
- * @return M4ERR_STATE: VSS3GPP is not in an appropriate state for
- * this function to be called
- ******************************************************************************
- */
-M4OSA_ERR M4VSS3GPP_intSubscribeExternalCodecs( M4VSS3GPP_EditContext pContext,
- M4OSA_Context pShellCtxt )
-{
- M4VSS3GPP_InternalEditContext *pC =
- (M4VSS3GPP_InternalEditContext *)pContext;
- M4VSS3GPP_MediaAndCodecCtxt *pShellContext =
- (M4VSS3GPP_MediaAndCodecCtxt *)pShellCtxt;
- M4OSA_ERR err = M4NO_ERROR;
-
- if( ( M4OSA_NULL == pContext) || (M4OSA_NULL == pShellContext) )
- {
- M4OSA_TRACE1_2(
- "M4VSS3GPP_intSubscribeExternalCodecs: NULL input parameter; pContext=0x%x,\
- pShellContext=0x%x",
- pContext, pShellContext);
- return M4ERR_PARAMETER;
- }
-
- M4OSA_TRACE3_1("M4VSS3GPP_intSubscribeExternalCodecs: pShellContext=0x%x",
- pShellContext);
-
-#ifdef M4VSS_SUPPORT_VIDEC_3GP
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kVideoDecMPEG4] )
- {
- err = M4VSS3GPP_registerVideoDecoder(pShellContext,
- M4DECODER_kVideoTypeMPEG4, (M4DECODER_VideoInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoDecMPEG4]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoDecoder(Mpeg4) returned err 0x%x",
- err);
- return err;
- }
- /** Provide the application user data back to the interface functions. **
- **/
- pShellContext->m_pVideoDecoderUserDataTable[M4DECODER_kVideoTypeMPEG4] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoDecoder(Mpeg4) OK: 0x%x",
- (M4DECODER_VideoInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoDecMPEG4]);
- }
-
-#endif /* M4VSS_SUPPORT_VIDEC_3GP */
-
-#ifdef M4VSS_SUPPORT_VIDEO_AVC
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kVideoDecH264] )
- {
- err = M4VSS3GPP_registerVideoDecoder(pShellContext,
- M4DECODER_kVideoTypeAVC, (M4DECODER_VideoInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoDecH264]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoDecoder(AVC) returned err 0x%x",
- err);
- return err;
- }
- /** Provide the application user data back to the interface functions. **
- **/
- pShellContext->m_pVideoDecoderUserDataTable[M4DECODER_kVideoTypeAVC] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerVideoDecoder(H264) OK: 0x%x",
- (M4DECODER_VideoInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoDecH264]);
- }
-
-#endif /* M4VSS_SUPPORT_VIDEO_AVC*/
-
-#ifdef M4VSS_SUPPORT_ENCODER_MPEG4
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kVideoEncMPEG4] )
- {
- err = M4VSS3GPP_registerVideoEncoder(pShellContext, M4ENCODER_kMPEG4,
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncMPEG4]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoEncoder(Mpeg4) returned err 0x%x",
- err);
- return err;
- }
- /** Provide the application user data back to the interface functions. **
- **/
- pShellContext->pVideoEncoderUserDataTable[M4ENCODER_kMPEG4] =
- pC->pOMXUserData;
- pShellContext->pVideoEncoderExternalAPITable[M4ENCODER_kMPEG4] =
- pC->m_codecInterface[M4VSS3GPP_kVideoEncMPEG4];
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoEncoder(Mpeg4) OK: 0x%x",
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncMPEG4]);
- }
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kVideoEncH263] )
- {
- err = M4VSS3GPP_registerVideoEncoder(pShellContext, M4ENCODER_kH263,
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncH263]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoEncoder(H263) returned err 0x%x",
- err);
- return err;
- }
- /** Provide the application user data back to the interface functions. **
- **/
- pShellContext->pVideoEncoderUserDataTable[M4ENCODER_kH263] =
- pC->pOMXUserData;
- pShellContext->pVideoEncoderExternalAPITable[M4ENCODER_kH263] =
- pC->m_codecInterface[M4VSS3GPP_kVideoEncH263];
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerVideoEncoder(H263) OK: 0x%x",
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncH263]);
- }
-
-#endif /* M4VSS_SUPPORT_ENCODER_MPEG4 */
-
-#ifdef M4VSS_SUPPORT_ENCODER_AVC
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kVideoEncH264] )
- {
- err = M4VSS3GPP_registerVideoEncoder(pShellContext, M4ENCODER_kH264,
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncH264]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerVideoEncoder(H264) returned err 0x%x",
- err);
- return err;
- }
- /** Provide the application user data back to the interface functions. **
- **/
- pShellContext->pVideoEncoderUserDataTable[M4ENCODER_kH264] =
- pC->pOMXUserData;
- pShellContext->pVideoEncoderExternalAPITable[M4ENCODER_kH264] =
- pC->m_codecInterface[M4VSS3GPP_kVideoEncH264];
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerVideoEncoder(H264) OK: 0x%x",
- (M4ENCODER_GlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kVideoEncH264]);
- }
-
-#endif /* M4VSS_SUPPORT_ENCODER_AVC */
-
-#ifdef M4VSS_SUPPORT_AUDEC_AAC
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kAudioDecAAC] )
- {
- err = M4VSS3GPP_registerAudioDecoder(pShellContext, M4AD_kTypeAAC,
- (M4AD_Interface *)pC->m_codecInterface[M4VSS3GPP_kAudioDecAAC]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioDecoder(AAC) returned err 0x%x",
- err);
- return err;
- }
- pShellContext->pAudioDecoderUserDataTable[M4AD_kTypeAAC] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerAudioDecoder(AAC) OK: 0x%x",
- (M4AD_Interface *)pC->m_codecInterface[M4VSS3GPP_kAudioDecAAC]);
- }
-
-#endif /* M4VSS_SUPPORT_AUDEC_AAC*/
-
-#ifdef M4VSS_SUPPORT_AUDEC_AMRNB
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kAudioDecAMRNB] )
- {
- err = M4VSS3GPP_registerAudioDecoder(pShellContext, M4AD_kTypeAMRNB,
- (M4AD_Interface
- *)pC->m_codecInterface[M4VSS3GPP_kAudioDecAMRNB]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioDecoder(AMRNB) returned err 0x%x",
- err);
- return err;
- }
- pShellContext->pAudioDecoderUserDataTable[M4AD_kTypeAMRNB] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioDecoder(AMRNB) OK: 0x%x",
- (M4AD_Interface *)pC->m_codecInterface[M4VSS3GPP_kAudioDecAMRNB]);
- }
-
-#endif /* M4VSS_SUPPORT_AUDEC_AMRNB*/
-
-#ifdef M4VSS_SUPPORT_AUDEC_MP3
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kAudioDecMP3] )
- {
- err = M4VSS3GPP_registerAudioDecoder(pShellContext, M4AD_kTypeMP3,
- (M4AD_Interface *)pC->m_codecInterface[M4VSS3GPP_kAudioDecMP3]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioDecoder(MP3) returned err 0x%x",
- err);
- return err;
- }
- pShellContext->pAudioDecoderUserDataTable[M4AD_kTypeMP3] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerAudioDecoder(MP3) OK: 0x%x",
- (M4AD_Interface *)pC->m_codecInterface[M4VSS3GPP_kAudioDecMP3]);
- }
-
-#endif /* M4VSS_SUPPORT_AUDEC_MP3*/
-
-#ifdef M4VSS_SUPPORT_ENCODER_AAC
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kAudioEncAAC] )
- {
- err = M4VSS3GPP_registerAudioEncoder(pShellContext, M4ENCODER_kAAC,
- (M4ENCODER_AudioGlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kAudioEncAAC]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioEncoder(AAC) returned err 0x%x",
- err);
- return err;
- }
- pShellContext->pAudioEncoderUserDataTable[M4ENCODER_kAAC] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs: M4VSS3GPP_registerAudioEncoder(AAC) OK: 0x%x",
- (M4ENCODER_AudioGlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kAudioEncAAC]);
- }
-
-#endif /* M4VSS_SUPPORT_ENCODER_AAC*/
-
-#ifdef M4VSS_SUPPORT_ENCODER_AMR
-
- if( M4OSA_NULL != pC->m_codecInterface[M4VSS3GPP_kAudioEncAMRNB] )
- {
- err = M4VSS3GPP_registerAudioEncoder(pShellContext, M4ENCODER_kAMRNB,
- (M4ENCODER_AudioGlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kAudioEncAMRNB]);
-
- if( M4NO_ERROR != err )
- {
- M4OSA_TRACE1_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioEncoder(AMRNB) returned err 0x%x",
- err);
- return err;
- }
- pShellContext->pAudioEncoderUserDataTable[M4ENCODER_kAMRNB] =
- pC->pOMXUserData;
- M4OSA_TRACE3_1(
- "M4VSS3GPP_intSubscribeExternalCodecs:\
- M4VSS3GPP_registerAudioEncoder(AMRNB) OK: 0x%x",
- (M4ENCODER_AudioGlobalInterface
- *)pC->m_codecInterface[M4VSS3GPP_kAudioEncAMRNB]);
- }
-
-#endif /* M4VSS_SUPPORT_ENCODER_AMR*/
-
- if( M4OSA_NULL != pC->pOMXUserData )
- {
- /* If external OMX codecs are already registered with VSS3GPP internal context
- * and are being subscribed by application, *
- * then set boolean to prevent unregistration of external codec interfaces. *
- * This is to prevent external codec interfaces from being reset
- during VSS3GPP step function. *
- * External OMX codecs are registered only once by application.
- So pointers should remain valid*
- * throughout life cycle of the application */
-
- pShellContext->bAllowFreeingOMXCodecInterface = M4OSA_FALSE;
- }
-
- return M4NO_ERROR;
-}
-#endif /* M4VSS_SUPPORT_OMX_CODECS */
diff --git a/libvideoeditor/vss/src/M4xVSS_API.c b/libvideoeditor/vss/src/M4xVSS_API.c
index 8750fec..e99cfe5 100755
--- a/libvideoeditor/vss/src/M4xVSS_API.c
+++ b/libvideoeditor/vss/src/M4xVSS_API.c
@@ -30,7 +30,6 @@
#include "M4OSA_Debug.h"
#include "M4OSA_FileReader.h"
#include "M4OSA_FileWriter.h"
-#include "M4OSA_FileExtra.h"
#include "M4OSA_CoreID.h"
#include "M4OSA_CharStar.h"
// StageFright encoders require %16 resolution
@@ -218,23 +217,6 @@ M4OSA_ERR M4xVSS_Init( M4OSA_Context *pContext, M4xVSS_InitParams *pParams )
/*FB: initialize to avoid crash when error during the editing*/
xVSS_context->pCurrentEditSettings = M4OSA_NULL;
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
- for ( i = 0; i < M4VD_kVideoType_NB; i++ )
- {
- xVSS_context->registeredExternalDecs[i].pDecoderInterface = M4OSA_NULL;
- xVSS_context->registeredExternalDecs[i].pUserData = M4OSA_NULL;
- xVSS_context->registeredExternalDecs[i].registered = M4OSA_FALSE;
- }
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
- for ( i = 0; i < M4VE_kEncoderType_NB; i++ )
- {
- xVSS_context->registeredExternalEncs[i].pEncoderInterface = M4OSA_NULL;
- xVSS_context->registeredExternalEncs[i].pUserData = M4OSA_NULL;
- xVSS_context->registeredExternalEncs[i].registered = M4OSA_FALSE;
- }
-
/* Initialize state if all initializations are corrects */
xVSS_context->m_state = M4xVSS_kStateInitialized;
@@ -6101,65 +6083,6 @@ M4OSA_ERR M4xVSS_CleanUp( M4OSA_Context pContext )
return M4NO_ERROR;
}
-M4OSA_ERR M4xVSS_RegisterExternalVideoDecoder( M4OSA_Context pContext,
- M4VD_VideoType decoderType,
- M4VD_Interface *pDecoderInterface,
- M4OSA_Void *pUserData )
-{
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
-
- M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
- /* Here the situation is a bit special: we need to record the registrations that are made,
- so that we can replay them for each clip we create. */
-
- if( decoderType >= M4VD_kVideoType_NB )
- {
- return M4ERR_PARAMETER;
- }
-
- xVSS_context->registeredExternalDecs[decoderType].pDecoderInterface =
- pDecoderInterface;
- xVSS_context->registeredExternalDecs[decoderType].pUserData = pUserData;
- xVSS_context->registeredExternalDecs[decoderType].registered = M4OSA_TRUE;
-
- /* Notice it overwrites any HW decoder that may already have been registered for this type;
- this is normal.*/
-
- return M4NO_ERROR;
-
-#else
-
- return M4ERR_NOT_IMPLEMENTED;
-
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
-}
-
-M4OSA_ERR M4xVSS_RegisterExternalVideoEncoder( M4OSA_Context pContext,
- M4VE_EncoderType encoderType,
- M4VE_Interface *pEncoderInterface,
- M4OSA_Void *pUserData )
-{
- M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
- /* Here the situation is a bit special: we need to record the registrations that are made,
- so that we can replay them for each clip we create. */
-
- if( encoderType >= M4VE_kEncoderType_NB )
- {
- return M4ERR_PARAMETER;
- }
-
- xVSS_context->registeredExternalEncs[encoderType].pEncoderInterface =
- pEncoderInterface;
- xVSS_context->registeredExternalEncs[encoderType].pUserData = pUserData;
- xVSS_context->registeredExternalEncs[encoderType].registered = M4OSA_TRUE;
-
- /* Notice it overwrites any HW encoder that may already have been registered for this type;
- this is normal.*/
-
- return M4NO_ERROR;
-}
-
/**
******************************************************************************
* prototype M4xVSS_GetVersion(M4_VersionInfo *pVersion)
diff --git a/libvideoeditor/vss/src/M4xVSS_internal.c b/libvideoeditor/vss/src/M4xVSS_internal.c
index e7e2dfd..391c945 100755
--- a/libvideoeditor/vss/src/M4xVSS_internal.c
+++ b/libvideoeditor/vss/src/M4xVSS_internal.c
@@ -23,7 +23,6 @@
*/
#include "M4OSA_Debug.h"
#include "M4OSA_CharStar.h"
-#include "M4OSA_FileExtra.h"
#include "NXPSW_CompilerSwitches.h"
@@ -94,44 +93,6 @@ M4OSA_ERR M4xVSS_internalStartTranscoding(M4OSA_Context pContext)
return err;
}
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
- /* replay recorded external decoder registrations on the MCS */
- for (i=0; i<M4VD_kVideoType_NB; i++)
- {
- if (xVSS_context->registeredExternalDecs[i].registered)
- {
- err = M4MCS_registerExternalVideoDecoder(mcs_context, i,
- xVSS_context->registeredExternalDecs[i].pDecoderInterface,
- xVSS_context->registeredExternalDecs[i].pUserData);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4xVSS_internalStartTranscoding:\
- M4MCS_registerExternalVideoDecoder() returns 0x%x!", err);
- M4MCS_abort(mcs_context);
- return err;
- }
- }
- }
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
- /* replay recorded external encoder registrations on the MCS */
- for (i=0; i<M4VE_kEncoderType_NB; i++)
- {
- if (xVSS_context->registeredExternalEncs[i].registered)
- {
- err = M4MCS_registerExternalVideoEncoder(mcs_context, i,
- xVSS_context->registeredExternalEncs[i].pEncoderInterface,
- xVSS_context->registeredExternalEncs[i].pUserData);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4xVSS_internalStartTranscoding:\
- M4MCS_registerExternalVideoEncoder() returns 0x%x!", err);
- M4MCS_abort(mcs_context);
- return err;
- }
- }
- }
-
err = M4MCS_open(mcs_context, xVSS_context->pMCScurrentParams->pFileIn,
xVSS_context->pMCScurrentParams->InputFileType,
xVSS_context->pMCScurrentParams->pFileOut,
@@ -1550,24 +1511,6 @@ M4OSA_ERR M4xVSS_internalStartConvertPictureTo3gp(M4OSA_Context pContext)
return err;
}
- /* replay recorded external encoder registrations on the PTO3GPP */
- for (i=0; i<M4VE_kEncoderType_NB; i++)
- {
- if (xVSS_context->registeredExternalEncs[i].registered)
- {
- err = M4PTO3GPP_RegisterExternalVideoEncoder(pM4PTO3GPP_Ctxt, i,
- xVSS_context->registeredExternalEncs[i].pEncoderInterface,
- xVSS_context->registeredExternalEncs[i].pUserData);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4xVSS_internalGenerateEditedFile:\
- M4PTO3GPP_registerExternalVideoEncoder() returns 0x%x!", err);
- M4PTO3GPP_CleanUp(pM4PTO3GPP_Ctxt);
- return err;
- }
- }
- }
-
pCallBackCtxt = (M4xVSS_PictureCallbackCtxt*)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_PictureCallbackCtxt),
M4VS,(M4OSA_Char *) "Pto3gpp callback struct");
if(pCallBackCtxt == M4OSA_NULL)
@@ -2406,44 +2349,6 @@ M4OSA_ERR M4xVSS_internalGenerateEditedFile(M4OSA_Context pContext)
return err;
}
-#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS
- /* replay recorded external decoder registrations on the VSS3GPP */
- for (i=0; i<M4VD_kVideoType_NB; i++)
- {
- if (xVSS_context->registeredExternalDecs[i].registered)
- {
- err = M4VSS3GPP_editRegisterExternalVideoDecoder(pVssCtxt, i,
- xVSS_context->registeredExternalDecs[i].pDecoderInterface,
- xVSS_context->registeredExternalDecs[i].pUserData);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4xVSS_internalGenerateEditedFile: \
- M4VSS3GPP_editRegisterExternalVideoDecoder() returns 0x%x!", err);
- M4VSS3GPP_editCleanUp(pVssCtxt);
- return err;
- }
- }
- }
-#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */
-
- /* replay recorded external encoder registrations on the VSS3GPP */
- for (i=0; i<M4VE_kEncoderType_NB; i++)
- {
- if (xVSS_context->registeredExternalEncs[i].registered)
- {
- err = M4VSS3GPP_editRegisterExternalVideoEncoder(pVssCtxt, i,
- xVSS_context->registeredExternalEncs[i].pEncoderInterface,
- xVSS_context->registeredExternalEncs[i].pUserData);
- if (M4NO_ERROR != err)
- {
- M4OSA_TRACE1_1("M4xVSS_internalGenerateEditedFile:\
- M4VSS3GPP_editRegisterExternalVideoEncoder() returns 0x%x!", err);
- M4VSS3GPP_editCleanUp(pVssCtxt);
- return err;
- }
- }
- }
-
/* In case of MMS use case, we fill directly into the VSS context the targeted bitrate */
if(xVSS_context->targetedBitrate != 0)
{