| /* |
| * 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_API.h |
| * @brief Media Conversion Service public API. |
| * @note MCS allows transcoding a 3gp/mp4 file into a new 3gp/mp4 file changing the |
| * video and audio encoding settings. |
| * It is a straightforward and fully synchronous API. |
| ****************************************************************************** |
| */ |
| |
| #ifndef __M4MCS_API_H__ |
| #define __M4MCS_API_H__ |
| |
| /** |
| * OSAL basic types and errors */ |
| #include "M4OSA_Types.h" |
| #include "M4OSA_Error.h" |
| |
| /** |
| * OSAL types for file access */ |
| #include "M4OSA_FileReader.h" |
| #include "M4OSA_FileWriter.h" |
| |
| /** |
| * Definition of M4_VersionInfo */ |
| #include "M4TOOL_VersionInfo.h" |
| |
| /** |
| * Common definitions of video editing components */ |
| #include "M4_VideoEditingCommon.h" |
| |
| /** |
| * To enable external audio codecs registering*/ |
| #include "M4AD_Common.h" |
| #include "M4ENCODER_AudioCommon.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * Public type of the MCS context */ |
| typedef M4OSA_Void* M4MCS_Context; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4MCS_MediaRendering |
| * @brief This enum defines different media rendering |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4MCS_kResizing = 0, /**< The media is resized, the aspect ratio can be |
| different from the original one. |
| All of the media is rendered */ |
| M4MCS_kCropping, /**< The media is cropped, the aspect ratio is the |
| same as the original one. |
| The media is not rendered entirely */ |
| M4MCS_kBlackBorders /**< Black borders are rendered in order to keep the |
| original aspect ratio. All the media is rendered */ |
| } M4MCS_MediaRendering; |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4MCS_ExternalProgress |
| * @brief This structure contains information provided to the external Effect functions |
| * @note The uiProgress value should be enough for most cases |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_UInt32 uiProgress; /**< Progress of the Effect from 0 to 1000 (one thousand) */ |
| M4OSA_UInt32 uiClipTime; /**< Current time, in milliseconds, |
| in the current clip time-line */ |
| M4OSA_UInt32 uiOutputTime; /**< Current time, in milliseconds, |
| in the output clip time-line */ |
| |
| } M4MCS_ExternalProgress; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4MCS_AudioEffectType |
| * @brief This enumeration defines the audio effect types of the MCS |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4MCS_kAudioEffectType_None = 0, |
| M4MCS_kAudioEffectType_FadeIn = 8, /**< Intended for begin effect */ |
| M4MCS_kAudioEffectType_FadeOut = 16, /**< Intended for end effect */ |
| M4MCS_kAudioEffectType_External = 256 |
| |
| } M4MCS_AudioEffectType; |
| |
| |
| /** |
| ****************************************************************************** |
| * prototype M4MCS_editAudioEffectFct |
| * @brief Audio effect functions implemented by the integrator |
| * must match this prototype. |
| * @note The function is provided with the original PCM data buffer and its size. |
| * Audio effect have to be applied on it. |
| * The progress of the effect is given, on a scale from 0 to 1000. |
| * When the effect function is called, all the buffers are valid and |
| * owned by the MCS. |
| * |
| * @param pFunctionContext (IN) The function context, previously set by the integrator |
| * @param pPCMdata (IN/OUT) valid PCM data buffer |
| * @param uiPCMsize (IN/OUT) PCM data buffer corresponding size |
| * @param pProgress (IN) Set of information about the audio effect progress. |
| * |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| typedef M4OSA_ERR (*M4MCS_editAudioEffectFct) |
| ( |
| M4OSA_Void *pFunctionContext, |
| M4OSA_Int16 *pPCMdata, |
| M4OSA_UInt32 uiPCMsize, |
| M4MCS_ExternalProgress *pProgress |
| ); |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4MCS_EffectSettings |
| * @brief This structure defines an audio effect for the edition. |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_UInt32 uiStartTime; /**< In ms */ |
| M4OSA_UInt32 uiDuration; /**< In ms */ |
| M4MCS_editAudioEffectFct ExtAudioEffectFct; /**< External effect function */ |
| M4OSA_Void *pExtAudioEffectFctCtxt; /**< Context given to the external |
| effect function */ |
| M4MCS_AudioEffectType AudioEffectType; /**< None, FadeIn, FadeOut */ |
| |
| } M4MCS_EffectSettings; |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4MCS_OutputParams |
| * @brief MCS Output parameters |
| * @note Following parameters are used for still picture inputs : |
| * - OutputFileType (must be set to M4VIDEOEDITING_kFileType_JPG) |
| * - bDiscardExif must be set to M4OSA_TRUE or M4OSA_FALSE |
| * - bAdjustOrientation must be set to M4OSA_TRUE or M4OSA_FALSE |
| * - (MediaRendering is not handled : output image resolution is always |
| set according to BestFit criteria) |
| * bDiscardExif and bAdjustOrientation are still picture only parameters |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| /**< Format of the output file */ |
| M4VIDEOEDITING_FileType OutputFileType; |
| /**< Output video compression format, see enum */ |
| M4VIDEOEDITING_VideoFormat OutputVideoFormat; |
| /**< Output frame size : QQVGA, QCIF or SQCIF */ |
| M4VIDEOEDITING_VideoFrameSize OutputVideoFrameSize; |
| /**< Targeted Output framerate, see enum */ |
| M4VIDEOEDITING_VideoFramerate OutputVideoFrameRate; |
| /**< Format of the audio in the stream */ |
| M4VIDEOEDITING_AudioFormat OutputAudioFormat; |
| /**< Sampling frequency of the audio in the stream */ |
| M4VIDEOEDITING_AudioSamplingFrequency OutputAudioSamplingFrequency; |
| /**< Set to M4OSA_TRUE if the output audio is mono */ |
| M4OSA_Bool bAudioMono; |
| /**< Output PCM file if not NULL */ |
| M4OSA_Char *pOutputPCMfile; |
| /**< To crop, resize, or render black borders*/ |
| M4MCS_MediaRendering MediaRendering; |
| /**< List of effects */ |
| M4MCS_EffectSettings *pEffects; |
| /**< Number of effects in the above list */ |
| M4OSA_UInt8 nbEffects; |
| |
| /*--- STILL PICTURE ---*/ |
| /**< TRUE: Even if the input file contains an EXIF section, |
| the output file won't contain any EXIF section.*/ |
| M4OSA_Bool bDiscardExif ; |
| |
| /**< =TRUE : picture must be rotated if Exif tags hold a rotation info |
| (and rotation info is set to 0)*/ |
| M4OSA_Bool bAdjustOrientation ; |
| /*--- STILL PICTURE ---*/ |
| M4OSA_Int32 outputVideoProfile; |
| M4OSA_Int32 outputVideoLevel; |
| } M4MCS_OutputParams; |
| |
| /*--- STILL PICTURE ---*/ |
| /** |
| ****************************************************************************** |
| * enum M4MCS_SPOutputResolution |
| * @brief Still picture specific : MCS output targeted file resolution |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4MCS_kResSameAsInput = 0x00, /*width x height*/ |
| M4MCS_kResQVGA = 0x01, /*320x240*/ |
| M4MCS_kResVGA = 0x02, /*640x480*/ |
| M4MCS_kResWQVGA = 0x03, /*400x240*/ |
| M4MCS_kResWVGA = 0x04, /*800x480*/ |
| M4MCS_kResXGA = 0x05, /*1024x768*/ |
| M4MCS_kResCustom = 0xFF /*Size is set via StillPictureCustomWidth/Height*/ |
| } M4MCS_SPOutputResolution ; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4MCS_SPStrategy |
| * @brief Still picture specific : MCS strategy to configure the encoding parameters |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4MCS_kFileSizeOnlyFixed = 0x00, /*StillPictureResolution and |
| QualityFactor are ignored*/ |
| M4MCS_kFileSizeAndResFixed = 0x01, /*QualityFactor is ignored*/ |
| M4MCS_kQualityAndResFixed = 0x02 /*OutputFileSize is ignored*/ |
| } M4MCS_SPStrategy ; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4MCS_SPCrop |
| * @brief Still picture specific : indicate whether cropping should be done |
| before changing the resolution |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4MCS_kNoCrop = 0x00, /*No Cropping is performed*/ |
| M4MCS_kCropBeforeResize = 0x01 /*Input image is cropped (before changing resolution)*/ |
| } M4MCS_SPCrop ; |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4MCS_EncodingParams |
| * @brief MCS file size, bitrate and cut parameters |
| * @note Following parameters are used for still picture inputs : |
| * - OutputFileSize |
| * - StillPictureResolution |
| * - QualityFactor |
| * - StillPictureStrategy |
| * - StillPictureCustomWidth/Height (if StillPictureResolution==M4MCS_kResCustom) |
| * Still picture only parameters : StillPictureResolution, QualityFactor, |
| * StillPictureStrategy and StillPictureCustomWidth/Height |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4VIDEOEDITING_Bitrate OutputVideoBitrate; /**< Targeted video bitrate */ |
| M4VIDEOEDITING_Bitrate OutputAudioBitrate; /**< Targeted audio bitrate */ |
| M4OSA_UInt32 BeginCutTime; /**< Beginning cut time in input file */ |
| M4OSA_UInt32 EndCutTime; /**< End cut time in input file */ |
| M4OSA_UInt32 OutputFileSize; /**< Expected resulting file size */ |
| M4OSA_UInt32 OutputVideoTimescale; /**< Optional parameter used to fix a |
| timescale during transcoding */ |
| |
| /*--- STILL PICTURE ---*/ |
| M4OSA_Int32 QualityFactor ; /**< =-1 (undefined) or 0(lowest).. |
| 50(best) : This parameter is the |
| quality indication for the JPEG output |
| file (if =-1 the MCS will set quality |
| automatically)*/ |
| M4MCS_SPStrategy StillPictureStrategy ; /**< Defines which input parameters |
| will be taken into account by MCS*/ |
| M4MCS_SPOutputResolution StillPictureResolution;/**< Desired output resolution for |
| a still picture file */ |
| /**< (only if Resolution==M4MCS_kResCustom) : Custom output image width */ |
| M4OSA_UInt32 StillPictureCustomWidth; |
| /**< (only if Resolution==M4MCS_kResCustom) : Custom output image height */ |
| M4OSA_UInt32 StillPictureCustomHeight; |
| /**< Indicate whether Crop should be performed */ |
| M4MCS_SPCrop StillPictureCrop; |
| /**< (only if cropping) X coordinate of topleft corner of the crop window */ |
| M4OSA_UInt32 StillPictureCrop_X; |
| /**< (only if cropping) Y coordinate of topleft corner of the crop window */ |
| M4OSA_UInt32 StillPictureCrop_Y; |
| /**< (only if cropping) Width of the crop window (in pixels) */ |
| M4OSA_UInt32 StillPictureCrop_W; |
| /**< (only if cropping) Height of the crop window (in pixels) */ |
| M4OSA_UInt32 StillPictureCrop_H; |
| /*--- STILL PICTURE ---*/ |
| } M4MCS_EncodingParams; |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_getVersion(M4_VersionInfo* pVersionInfo); |
| * @brief Get the MCS version. |
| * @note Can be called anytime. Do not need any context. |
| * @param pVersionInfo (OUT) Pointer to a version info structure |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pVersionInfo is M4OSA_NULL (If Debug Level >= 2) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_getVersion(M4_VersionInfo* pVersionInfo); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_init(M4MCS_Context* pContext, M4OSA_FileReadPointer* pFileReadPtrFct, |
| M4OSA_FileWriterPointer* pFileWritePtrFct); |
| * @brief Initializes the MCS (allocates an execution context). |
| * @note |
| * @param pContext (OUT) Pointer on the MCS context to allocate |
| * @param pFileReadPtrFct (IN) Pointer to OSAL file reader functions |
| * @param pFileWritePtrFct (IN) Pointer to OSAL file writer functions |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (If Debug Level >= 2) |
| * @return M4ERR_ALLOC: There is no more available memory |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_init(M4MCS_Context* pContext, M4OSA_FileReadPointer* pFileReadPtrFct, |
| M4OSA_FileWriterPointer* pFileWritePtrFct); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_open(M4MCS_Context pContext, M4OSA_Void* pFileIn, M4OSA_Void* pFileOut, |
| M4OSA_UInt32 uiMaxMetadataSize); |
| * @brief Set the MCS input and output files. |
| * @note It opens the input file, but the output file is not created yet. |
| * In case of still picture, four InputFileType are possible |
| * (M4VIDEOEDITING_kFileType_JPG/BMP/GIF/PNG |
| * If one of them is set, the OutputFileType SHALL be set to M4VIDEOEDITING_kFileType_JPG |
| * @param pContext (IN) MCS context |
| * @param pFileIn (IN) Input file to transcode (The type of this parameter |
| * (URL, pipe...) depends on the OSAL implementation). |
| * @param mediaType (IN) Container type (.3gp,.amr, ...) of input file. |
| * @param pFileOut (IN) Output file to create (The type of this parameter |
| * (URL, pipe...) depends on the OSAL implementation). |
| * @param pTempFile (IN) Temporary file for the constant memory writer to store |
| * metadata ("moov.bin"). |
| * @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 |
| * @return M4ERR_ALLOC: There is no more available memory |
| * @return M4ERR_FILE_NOT_FOUND: The input file has not been found |
| * @return M4MCS_ERR_INVALID_INPUT_FILE: The input file is not a valid file, or is corrupted |
| * @return M4MCS_ERR_INPUT_FILE_CONTAINS_NO_SUPPORTED_STREAM: The input file contains no |
| * supported audio or video stream |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_open(M4MCS_Context pContext, M4OSA_Void* pFileIn, |
| M4VIDEOEDITING_FileType InputFileType, |
| M4OSA_Void* pFileOut, M4OSA_Void* pTempFile); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_step(M4MCS_Context pContext, M4OSA_UInt8 *pProgress); |
| * @brief Perform one step of trancoding. |
| * @note |
| * @param pContext (IN) MCS context |
| * @param pProgress (OUT) Progress percentage (0 to 100) of the transcoding |
| * @note pProgress must be a valid address. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: One of the parameters is M4OSA_NULL (debug only) |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| * @return M4MCS_WAR_TRANSCODING_DONE: Transcoding is over, user should now call M4MCS_close() |
| * @return M4MCS_ERR_AUDIO_CONVERSION_FAILED: The audio conversion (AAC to AMR-NB, MP3) failed |
| * @return M4MCS_ERR_INVALID_AAC_SAMPLING_FREQUENCY: The input file contains an AAC audio track |
| * with an invalid sampling frequency |
| * (should never happen) |
| * @return M4MCS_WAR_PICTURE_AUTO_RESIZE: Picture will be automatically resized to fit |
| * into requirements |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_step(M4MCS_Context pContext, M4OSA_UInt8 *pProgress); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_pause(M4MCS_Context pContext); |
| * @brief Pause the transcoding i.e. release the (external hardware) video decoder. |
| * @note This function is not needed if no hardware accelerators are used. |
| * In that case, pausing the MCS is simply achieved by temporarily suspending |
| * the M4MCS_step function calls. |
| * @param pContext (IN) MCS context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_pause(M4MCS_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_resume(M4MCS_Context pContext); |
| * @brief Resume the transcoding after a pause (see M4MCS_pause). |
| * @note This function is not needed if no hardware accelerators are used. |
| * In that case, resuming the MCS is simply achieved by calling |
| * the M4MCS_step function. |
| * @param pContext (IN) MCS context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_resume(M4MCS_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_close(M4MCS_Context pContext); |
| * @brief Finish the MCS transcoding. |
| * @note The output 3GPP file is ready to be played after this call |
| * @param pContext (IN) MCS context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (If Debug Level >= 2) |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_close(M4MCS_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_cleanUp(M4MCS_Context pContext); |
| * @brief Free all resources used by the MCS. |
| * @note The context is no more valid after this call |
| * @param pContext (IN) MCS context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (If Debug Level >= 2) |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_cleanUp(M4MCS_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_abort(M4MCS_Context pContext); |
| * @brief Finish the MCS transcoding and free all resources used by the MCS |
| * whatever the state is. |
| * @note The context is no more valid after this call |
| * @param pContext (IN) MCS context |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: pContext is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_abort(M4MCS_Context pContext); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_getInputFileProperties(M4MCS_Context pContext, |
| * M4VIDEOEDITING_ClipProperties* pFileProperties); |
| * @brief Retrieves the properties of the audio and video streams from the input file. |
| * @param pContext (IN) MCS context |
| * @param pProperties (OUT) Pointer on an allocated M4VIDEOEDITING_ClipProperties |
| structure which is filled with the input stream properties. |
| * @note The structure pProperties must be allocated and further de-allocated |
| by the application. The function must be called in the opened state. |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL |
| * @return M4ERR_STATE: MCS is not in an appropriate state for this function to be called |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_getInputFileProperties(M4MCS_Context pContext, |
| M4VIDEOEDITING_ClipProperties *pFileProperties); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_setOutputParams(M4MCS_Context pContext, M4MCS_OutputParams* pParams); |
| * @brief Set the MCS video output parameters. |
| * @note Must be called after M4MCS_open. Must be called before M4MCS_step. |
| * @param pContext (IN) MCS context |
| * @param pParams (IN/OUT) Transcoding parameters |
| * @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 |
| * @return M4MCS_ERR_INVALID_VIDEO_FRAME_SIZE_FOR_H263 : Output video frame size parameter is |
| * incompatible with H263 encoding |
| * @return M4MCS_ERR_INVALID_VIDEO_FRAME_RATE_FOR_H263 : Output video frame size parameter is |
| * incompatible with H263 encoding |
| * @return M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FORMAT : Undefined output video format parameter |
| * @return M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_SIZE : Undefined output video frame size |
| * @return M4MCS_ERR_UNDEFINED_OUTPUT_VIDEO_FRAME_RATE : Undefined output video frame rate |
| * @return M4MCS_ERR_UNDEFINED_OUTPUT_AUDIO_FORMAT : Undefined output audio format parameter |
| * @return M4MCS_ERR_DURATION_IS_NULL : Specified output parameters define a null duration stream |
| * (no audio and video) |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_setOutputParams(M4MCS_Context pContext, M4MCS_OutputParams* pParams); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_setEncodingParams(M4MCS_Context pContext, M4MCS_EncodingParams* pRates) |
| * @brief Set the values of the encoding parameters |
| * @note Must be called before M4MCS_checkParamsAndStart(). |
| * @param pContext (IN) MCS context |
| * @param pRates (IN) Transcoding parameters |
| * @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 |
| * @return M4MCS_ERR_AUDIOBITRATE_TOO_HIGH: Audio bitrate too high (we limit to 96 kbps) |
| * @return M4MCS_ERR_AUDIOBITRATE_TOO_LOW: Audio bitrate is too low (16 kbps min for aac, |
| * 12.2 for amr, 8 for mp3) |
| * @return M4MCS_ERR_BEGIN_CUT_EQUALS_END_CUT: Begin cut and End cut are equals |
| * @return M4MCS_ERR_BEGIN_CUT_LARGER_THAN_DURATION: Begin cut time is larger than |
| * the input clip duration |
| * @return M4MCS_ERR_END_CUT_SMALLER_THAN_BEGIN_CUT: End cut time is smaller than begin cut time |
| * @return M4MCS_ERR_MAXFILESIZE_TOO_SMALL: Not enough space to store whole output |
| * file at given bitrates |
| * @return M4MCS_ERR_VIDEOBITRATE_TOO_HIGH: Video bitrate too high (we limit to 800 kbps) |
| * @return M4MCS_ERR_VIDEOBITRATE_TOO_LOW: Video bitrate too low |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_setEncodingParams(M4MCS_Context pContext, M4MCS_EncodingParams* pRates); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_getExtendedEncodingParams(M4MCS_Context pContext, M4MCS_EncodingParams* pRates) |
| * @brief Get the extended values of the encoding parameters |
| * @note Could be called after M4MCS_setEncodingParams. |
| * @param pContext (IN) MCS context |
| * @param pRates (OUT) Transcoding parameters |
| * @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 |
| * @return M4MCS_ERR_BEGIN_CUT_EQUALS_END_CUT: Encoding settings would produce a |
| * null duration clip = encoding is impossible |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_getExtendedEncodingParams(M4MCS_Context pContext, M4MCS_EncodingParams* pRates); |
| |
| /** |
| ****************************************************************************** |
| * M4OSA_ERR M4MCS_checkParamsAndStart(M4MCS_Context pContext) |
| * @brief |
| * @note |
| * @param pContext (IN) MCS context |
| * @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 |
| * @return M4MCS_ERR_AUDIOBITRATE_TOO_HIGH: Audio bitrate too high (we limit to 96 kbps) |
| * @return M4MCS_ERR_AUDIOBITRATE_TOO_LOW: Audio bitrate is too low (16 kbps min for aac, |
| * 12.2 for amr, 8 for mp3) |
| * @return M4MCS_ERR_BEGIN_CUT_EQUALS_END_CUT: Begin cut and End cut are equals |
| * @return M4MCS_ERR_BEGIN_CUT_LARGER_THAN_DURATION: Begin cut time is larger than |
| * the input clip duration |
| * @return M4MCS_ERR_END_CUT_SMALLER_THAN_BEGIN_CUT: End cut time is smaller than begin cut time |
| * @return M4MCS_ERR_MAXFILESIZE_TOO_SMALL: Not enough space to store whole output |
| * file at given bitrates |
| * @return M4MCS_ERR_VIDEOBITRATE_TOO_HIGH: Video bitrate too high (we limit to 800 kbps) |
| * @return M4MCS_ERR_VIDEOBITRATE_TOO_LOW: Video bitrate too low |
| ****************************************************************************** |
| */ |
| M4OSA_ERR M4MCS_checkParamsAndStart(M4MCS_Context pContext); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* __M4MCS_API_H__ */ |
| |