| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef __M4VSS3GPP_EXTENDED_API_H__ |
| #define __M4VSS3GPP_EXTENDED_API_H__ |
| |
| /** |
| ****************************************************************************** |
| * @file M4VSS3GPP_Extended_API.h |
| * @brief API of xVSS |
| * @note |
| ****************************************************************************** |
| */ |
| |
| #ifndef M4VSS_SUPPORT_EXTENDED_FEATURES |
| #error "*** the flag M4VSS_SUPPORT_EXTENDED_FEATURES should be activated in CompilerSwitches\ |
| for VideoStudio ***" |
| #endif |
| |
| /** |
| ****************************************************************************** |
| * prototype M4xVSS_getTextRgbBufferFct |
| * @brief External text to RGB buffer functions implemented by the integrator |
| * must match this prototype. |
| * @note The function is provided with the renderingData, the text buffer and |
| * its size. It must build the output RGB image plane containing the text. |
| * |
| * @param pRenderingData (IN) The data given by the user in M4xVSS_EffectSettings |
| * @param pTextBuffer (IN) Text buffer given by the user in M4xVSS_EffectSettings |
| * @param textBufferSize (IN) Text buffer size given by the user in M4xVSS_EffectSettings |
| * @param pOutputPlane (IN/OUT) Output RGB565 image |
| * @return M4NO_ERROR: No error |
| * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL (debug only) |
| ****************************************************************************** |
| */ |
| typedef M4OSA_ERR (*M4xVSS_getTextRgbBufferFct) |
| ( |
| M4OSA_Void *pRenderingData, |
| M4OSA_Void *pTextBuffer, |
| M4OSA_UInt32 textBufferSize, |
| M4VIFI_ImagePlane **pOutputPlane |
| ); |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_BGMSettings |
| * @brief This structure gathers all the information needed to add Background music to 3gp file |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_Void *pFile; /**< Input file path */ |
| M4VIDEOEDITING_FileType FileType; /**< .3gp, .amr, .mp3 */ |
| M4OSA_UInt32 uiAddCts; /**< Time, in milliseconds, at which the added |
| audio track is inserted */ |
| M4OSA_UInt32 uiAddVolume; /**< Volume, in percentage, of the added audio track */ |
| M4OSA_UInt32 uiBeginLoop; /**< Describes in milli-second the start time |
| of the loop */ |
| M4OSA_UInt32 uiEndLoop; /**< Describes in milli-second the end time of the |
| loop (0 means no loop) */ |
| M4OSA_Bool b_DuckingNeedeed; |
| M4OSA_Int32 InDucking_threshold; /**< Threshold value at which background |
| music shall duck */ |
| M4OSA_Float lowVolume; /**< lower the background track to this factor |
| and increase the primary track to inverse of this factor */ |
| M4OSA_Bool bLoop; |
| M4OSA_UInt32 uiSamplingFrequency; |
| M4OSA_UInt32 uiNumChannels; |
| } M4xVSS_BGMSettings; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4VSS3GPP_VideoEffectType |
| * @brief This enumeration defines the video effect types of the VSS3GPP |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4VSS3GPP_kRGB888 = 0, /**< RGB888 data type */ |
| M4VSS3GPP_kRGB565 = 1 /**< RGB565 data type */ |
| |
| } M4VSS3GPP_RGBType; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_EffectSettings |
| * @brief This structure defines an audio/video effect for the edition. |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| /**< In percent of the cut clip duration */ |
| M4OSA_UInt32 uiStartPercent; |
| /**< In percent of the ((clip duration) - (effect starttime)) */ |
| M4OSA_UInt32 uiDurationPercent; |
| /**< Framing file path (GIF/PNG file), used only if VideoEffectType == framing */ |
| M4OSA_Void *pFramingFilePath; |
| /**< Framing RGB565 buffer, used only if VideoEffectType == framing */ |
| M4VIFI_ImagePlane *pFramingBuffer; |
| /**<RGB Buffer type,used only if VideoEffectType == framing */ |
| M4VSS3GPP_RGBType rgbType; |
| /**< The top-left X coordinate in the output picture where the added frame will be displayed. |
| Used only if VideoEffectType == framing || VideoEffectType == text */ |
| M4OSA_UInt32 topleft_x; |
| /**< The top-left Y coordinate in the output picture where the added frame will be displayed. |
| Used only if VideoEffectType == framing || VideoEffectType == text */ |
| M4OSA_UInt32 topleft_y; |
| /**< Does framing image is resized to output video size. |
| Used only if VideoEffectType == framing */ |
| M4OSA_Bool bResize; |
| M4VIDEOEDITING_VideoFrameSize framingScaledSize; |
| /**< Size to which the the framing file needs to be resized */ |
| /**< Text buffer. Used only if VideoEffectType == text */ |
| M4OSA_Void* pTextBuffer; |
| /**< Text buffer size. Used only if VideoEffectType == text */ |
| M4OSA_UInt32 textBufferSize; |
| /**< Pointer containing specific data used by the font engine (size, color...) */ |
| M4OSA_Void* pRenderingData; |
| /**< Text plane width. Used only if VideoEffectType == text */ |
| M4OSA_UInt32 uiTextBufferWidth; |
| /**< Text plane height. Used only if VideoEffectType == text */ |
| M4OSA_UInt32 uiTextBufferHeight; |
| /**< Processing rate of the effect added when using the Fifties effect */ |
| M4OSA_UInt32 uiFiftiesOutFrameRate; |
| /**< RGB16 input color of the effect added when using the rgb16 color effect */ |
| M4OSA_UInt16 uiRgb16InputColor; |
| |
| M4OSA_UInt8 uialphaBlendingStart; /*Start percentage of Alpha blending*/ |
| M4OSA_UInt8 uialphaBlendingMiddle; /*Middle percentage of Alpha blending*/ |
| M4OSA_UInt8 uialphaBlendingEnd; /*End percentage of Alpha blending*/ |
| M4OSA_UInt8 uialphaBlendingFadeInTime; /*Duration, in percentage of |
| effect duration, of the FadeIn phase*/ |
| M4OSA_UInt8 uialphaBlendingFadeOutTime; /*Duration, in percentage of effect |
| duration, of the FadeOut phase*/ |
| M4OSA_UInt32 width; /*width of the ARGB8888 clip . |
| Used only if video effect is framming */ |
| M4OSA_UInt32 height; /*height of the ARGB8888 clip . |
| Used only if video effect is framming */ |
| } M4xVSS_EffectSettings; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_AlphaMagicSettings |
| * @brief This structure defines the alpha magic transition settings |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_Void* pAlphaFilePath; /**< Alpha file path (JPG file) */ |
| M4OSA_Int32 blendingPercent; /**< Blending Percentage between 0 and 100 */ |
| M4OSA_Bool isreverse; /**< direct effect or reverse */ |
| /*To support ARGB8888 : get the width and height */ |
| M4OSA_UInt32 width; |
| M4OSA_UInt32 height; |
| } M4xVSS_AlphaMagicSettings; |
| |
| /** |
| ****************************************************************************** |
| * enum M4xVSS_SlideTransition_Direction |
| * @brief Defines directions for the slide transition |
| ****************************************************************************** |
| */ |
| |
| typedef enum { |
| M4xVSS_SlideTransition_RightOutLeftIn, |
| M4xVSS_SlideTransition_LeftOutRightIn, |
| M4xVSS_SlideTransition_TopOutBottomIn, |
| M4xVSS_SlideTransition_BottomOutTopIn |
| } M4xVSS_SlideTransition_Direction; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_AlphaMagicSettings |
| * @brief This structure defines the slide transition settings |
| ****************************************************************************** |
| */ |
| |
| typedef struct |
| { |
| M4xVSS_SlideTransition_Direction direction; /* direction of the slide */ |
| } M4xVSS_SlideTransitionSettings; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_TransitionSettings |
| * @brief This structure defines additional transition settings specific to |
| * xVSS, which are appended to the VSS3GPP transition settings |
| * structure. |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| /* Anything xVSS-specific, but common to all transitions, would go here, |
| before the union. */ |
| union { |
| /**< AlphaMagic settings, used only if VideoTransitionType == |
| M4xVSS_kVideoTransitionType_AlphaMagic */ |
| M4xVSS_AlphaMagicSettings *pAlphaMagicSettings; |
| /* only in case of slide transition. */ |
| M4xVSS_SlideTransitionSettings *pSlideTransitionSettings; |
| } transitionSpecific; |
| } M4xVSS_TransitionSettings; |
| |
| |
| /** |
| ****************************************************************************** |
| * enum M4xVSS_MediaRendering |
| * @brief This enum defines different media rendering using exif orientation |
| ****************************************************************************** |
| */ |
| typedef enum |
| { |
| M4xVSS_kResizing = 0, /*The picture is resized, the aspect ratio can be different |
| from the original one. All of the picture is rendered*/ |
| M4xVSS_kCropping, /*The picture is cropped, the aspect ratio is the same as |
| the original one. The picture is not rendered entirely*/ |
| M4xVSS_kBlackBorders /*Black borders are rendered in order to keep the original |
| aspect ratio. All the picture is rendered*/ |
| |
| } M4xVSS_MediaRendering; |
| |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_ClipSettings |
| * @brief This structure defines an input clip for the edition. |
| * @note It also contains the settings for the cut and begin/end effects applied to the clip. |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| M4OSA_UInt32 uiBeginCutPercent; /**< Begin cut time, in percent of clip |
| duration (only for 3GPP clip !) */ |
| M4OSA_UInt32 uiEndCutPercent; /**< End cut time, in percent of clip |
| duration (only for 3GPP clip !) */ |
| M4OSA_UInt32 uiDuration; /**< Duration of the clip, if different |
| from 0, has priority on |
| uiEndCutTime or uiEndCutPercent */ |
| M4OSA_Bool isPanZoom; /**< RC: Boolean used to know if the |
| pan and zoom mode is enabled */ |
| M4OSA_UInt16 PanZoomXa; /**< RC */ |
| M4OSA_UInt16 PanZoomTopleftXa; /**< RC */ |
| M4OSA_UInt16 PanZoomTopleftYa; /**< RC */ |
| M4OSA_UInt16 PanZoomXb; /**< RC */ |
| M4OSA_UInt16 PanZoomTopleftXb; /**< RC */ |
| M4OSA_UInt16 PanZoomTopleftYb; /**< RC */ |
| M4xVSS_MediaRendering MediaRendering; /**< FB only used with JPEG: to crop, |
| resize, or render black borders*/ |
| |
| } M4xVSS_ClipSettings; |
| |
| /** |
| ****************************************************************************** |
| * struct M4xVSS_EditSettings |
| * @brief This structure gathers all the information needed to define a complete |
| * edition operation |
| ****************************************************************************** |
| */ |
| typedef struct |
| { |
| /**< Output video size */ |
| M4VIDEOEDITING_VideoFrameSize outputVideoSize; |
| /**< Output video format (MPEG4 / H263) */ |
| M4VIDEOEDITING_VideoFormat outputVideoFormat; |
| /**< Output audio format (AAC, AMRNB ...) */ |
| M4VIDEOEDITING_AudioFormat outputAudioFormat; |
| /**< Output audio sampling freq (8000Hz,...) */ |
| M4VIDEOEDITING_AudioSamplingFrequency outputAudioSamplFreq; |
| /**< Maximum output file size in BYTES (if set to 0, no limit */ |
| M4OSA_UInt32 outputFileSize; |
| /**< Is output audio must be Mono ? Valid only for AAC */ |
| M4OSA_Bool bAudioMono; |
| /**< Output video bitrate*/ |
| M4OSA_UInt32 outputVideoBitrate; |
| /**< Output audio bitrate*/ |
| M4OSA_UInt32 outputAudioBitrate; |
| /**< Background music track settings */ |
| M4xVSS_BGMSettings *pBGMtrack; |
| /**< Function pointer on text rendering engine, if not used, must be set to NULL !! */ |
| M4xVSS_getTextRgbBufferFct pTextRenderingFct; |
| /** output video profile and level*/ |
| M4OSA_Int32 outputVideoProfile; |
| M4OSA_Int32 outputVideoLevel; |
| |
| } M4xVSS_EditSettings; |
| |
| #endif /* __M4VSS3GPP_EXTENDED_API_H__ */ |
| |