diff options
Diffstat (limited to 'libvideoeditor/vss/3gpwriter/inc/M4MP4W_Writer.h')
-rwxr-xr-x | libvideoeditor/vss/3gpwriter/inc/M4MP4W_Writer.h | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/libvideoeditor/vss/3gpwriter/inc/M4MP4W_Writer.h b/libvideoeditor/vss/3gpwriter/inc/M4MP4W_Writer.h new file mode 100755 index 0000000..715a7c6 --- /dev/null +++ b/libvideoeditor/vss/3gpwriter/inc/M4MP4W_Writer.h @@ -0,0 +1,246 @@ +/* + * 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 M4MP4W_Writer.h + * @brief Core MP4 writer interface + * @note This file declares the MP4 writer interface functions. + * The MP4 writer specific types are defined in file M4MP4W_Types.h + ****************************************************************************** + */ +#ifndef M4MP4W_WRITER_H +#define M4MP4W_WRITER_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include "NXPSW_CompilerSwitches.h" + +#ifndef _M4MP4W_USE_CST_MEMORY_WRITER + +/* includes */ +#include "M4OSA_Types.h" +#include "M4OSA_Error.h" +#include "M4OSA_FileWriter.h" +#include "M4OSA_FileReader.h" +#include "M4SYS_AccessUnit.h" +#include "M4MP4W_Types.h" + +/** + ****************************************************************************** + * MP4W Errors & Warnings definition + ****************************************************************************** + */ +#define M4WAR_MP4W_OVERSIZE M4OSA_ERR_CREATE(M4_WAR, M4MP4_WRITER ,0x000001) +#define M4WAR_MP4W_NOT_EVALUABLE M4OSA_ERR_CREATE(M4_WAR, M4MP4_WRITER ,0x000002) + +/** + ****************************************************************************** + * @brief Get MP4W version + * @param major (OUT) Pointer to the 'major' version number. + * @param minor (OUT) Pointer to the 'minor' version number. + * @param revision (OUT) Pointer to the 'revision' number. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_getVersion(M4OSA_UInt8* major, + M4OSA_UInt8* minor, + M4OSA_UInt8* revision); + +/** + ****************************************************************************** + * @brief Initiation of the MP4 file creation + * @param contextPtr (OUT) Pointer to the MP4 writer context to create. + * @param outputFileDescriptor (IN) Descriptor of the output file to open. + * @param fileWriterFunction (IN) Pointer to structure containing the set of + * OSAL file write functions. + * @param tempFileDescriptor (IN) Descriptor of the temporary file to open. + * @param fileReaderFunction (IN) Pointer to structure containing the set of + * OSAL file read functions. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_ALLOC: Memory allocation failed + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_openWrite( M4OSA_Context* contextPtr, + void* outputFileDescriptor, + M4OSA_FileWriterPointer* fileWriterFunction, + void* tempFileDescriptor, + M4OSA_FileReadPointer* fileReaderFunction ); + +/** + ****************************************************************************** + * @brief Add a new track + * @param context (IN/OUT) MP4 writer context. + * @param streamDescPtr (IN) Pointer to the structure containing the + parameters for the new track. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_ALLOC: Memory allocation failed + * @return M4ERR_STATE: Invalid state + * @return M4ERR_BAD_CONTEXT: An audio (resp.video) stream has already been added + * to this context while attempting to add another one, + * which is forbidden. + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_addStream( M4OSA_Context context, + M4SYS_StreamDescription* streamDescPtr); + +/** + ****************************************************************************** + * @brief Signal to the core MP4 writer that there is no more tracks to add + * @param context (IN/OUT) MP4 writer context. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_ALLOC: Memory allocation failed + * @return M4ERR_STATE: Invalid state + * @return M4ERR_BAD_CONTEXT: Audio size estimation is required but not two streams + * have been added. + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_startWriting( M4OSA_Context context); + +/** + ****************************************************************************** + * @brief Asks the core MP4 writer to initiate the access unit creation in + * the streamID track + * @param context (IN/OUT) MP4 writer context. + * @param streamID (IN) Stream ID of the track. + * @param auPtr (IN/OUT) Access unit. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_BAD_STREAM_ID:Unknown stream ID + * @return M4ERR_ALLOC: Memory allocation failed + * @return M4ERR_STATE: Invalid state + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_startAU( M4OSA_Context context, + M4SYS_StreamID streamID, + M4SYS_AccessUnit* auPtr); + +/** + ****************************************************************************** + * @brief Ask the core MP4 writer to write the access unit in the streamID track + * @note If M4MP4W_WAR_OVERSIZE is returned, M4MP4W_startAU must not be called anymore, + * but directly M4MP4W_closeWrite(). + * @param context (IN/OUT) MP4 writer context. + * @param streamID (IN) Stream ID of the track. + * @param auPtr (IN/OUT) Access unit. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_BAD_STREAM_ID: Unknown stream ID + * @return M4ERR_ALLOC: Memory allocation failed + * @return M4ERR_STATE: Invalid state + * @return M4WAR_MP4W_NOT_EVALUABLE: It is not possible to evaluate audio size if audio + * samples don't have a constant size. + * @return M4WAR_MP4W_OVERSIZE: Max file size was reached + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_processAU( M4OSA_Context context, + M4SYS_StreamID streamID, + M4SYS_AccessUnit* auPtr); + +/** + ****************************************************************************** + * @brief Close the MP4 file + * @note In previous versions of the MP4 writer, the M4MP4W_freeContext method + * was in the interface, which is not the case anymore. + * The context is now always deallocated in the M4MP4W_closeWrite function. + * @param context (IN/OUT) MP4 writer context. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_closeWrite( M4OSA_Context context); + +/** + ****************************************************************************** + * @brief Ask the core MP4 writer to return the value associated with the optionID + * @param context (IN) MP4 writer context. + * @param option (IN) Option ID. + * @param valuePtr (OUT) Pointer to the option value. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_NOT_IMPLEMENTED: Not implemented in the current version + * @return M4ERR_BAD_OPTION_ID: Unknown optionID + * @return M4ERR_BAD_STREAM_ID: Bad stream ID in the option value + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_getOption( M4OSA_Context context, + M4OSA_OptionID option, + M4OSA_DataOption *valuePtr); + +/** + ****************************************************************************** + * @brief Ask the core MP4 writer to set the value associated with the optionID. + * @param context (IN/OUT) MP4 writer context. + * @param option (IN) Option ID. + * @param value (IN) Option value. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + * @return M4ERR_NOT_IMPLEMENTED: Not implemented in the current version + * @return M4ERR_BAD_OPTION_ID: Unknown optionID + * @return M4ERR_BAD_STREAM_ID: Bad stream ID in the option value + * @return M4ERR_ALLOC: A memory allocation failed + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_setOption( M4OSA_Context context, + M4OSA_OptionID option, + M4OSA_DataOption value); + +/** + ****************************************************************************** + * @brief Ask the core MP4 writer to return its state. + * @note By selecting a specific streamID (not null), the caller can obtain + * the state of a specific stream. By using 0 as streamID the returned + * state is not stream specific. + * @param context (IN/OUT) MP4 writer context. + * @param context (IN) Pointer to the state enumeration. + * @param context (IN/OUT) streamID of the stream to retrieve the + * micro-state (0 for global state). + * @return M4NO_ERROR: No error + * @return M4ERR_BAD_STREAM_ID: Unknown stream ID + * @return M4ERR_PARAMETER: At least one parameter is null or incorrect + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_getState( M4OSA_Context context, + M4MP4W_State* statePtr, + M4SYS_StreamID streamID); + +/** + ****************************************************************************** + * @brief Get the currently expected file size + * @param context (IN/OUT) MP4 writer context. + * @return M4NO_ERROR: No error + * @return M4ERR_PARAMETER: At least one parameter is null + ****************************************************************************** + */ +M4OSA_ERR M4MP4W_getCurrentFileSize( M4OSA_Context context, + M4OSA_UInt32* currentFileSize); + +#endif /* _M4MP4W_USE_CST_MEMORY_WRITER */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /*M4MP4W_WRITER_H*/ + |