M4xVSS_Internal.h revision 3b25fdc4a33b53cfcf67315c2d42ad699b8cefe2
1/* 2 * Copyright (C) 2004-2011 NXP Software 3 * Copyright (C) 2011 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18#ifndef __M4XVSS_INTERNAL_H__ 19#define __M4XVSS_INTERNAL_H__ 20 21/** 22 ****************************************************************************** 23 * @file M4xVSS_Internal.h 24 * @brief Internal of Video Authoring. 25 * @note 26 ****************************************************************************** 27*/ 28 29#include "NXPSW_CompilerSwitches.h" 30 31#include "M4MCS_API.h" 32#include "M4MCS_ErrorCodes.h" 33 34#include "M4PTO3GPP_API.h" 35#include "M4PTO3GPP_ErrorCodes.h" 36 37#include "M4AIR_API.h" 38 39#ifdef __cplusplus 40extern "C" { 41#endif 42 43#define M4_xVSS_MAJOR 1 44#define M4_xVSS_MINOR 5 45#define M4_xVSS_REVISION 5 46 47/* The following defines describe the max dimensions of an input JPG */ 48#define M4XVSS_MX_JPG_NB_OF_PIXELS 3926016 49 50/*Size of the UTF temporary conversion buffer keep in the VA internal context and 51allocate at the initialization*/ 52#define UTF_CONVERSION_BUFFER_SIZE 2048 53 54/* Max path length size */ 55#define M4XVSS_MAX_PATH_LEN 256 56 57/** Determine absolute value of a. */ 58#define M4xVSS_ABS(a) ( ( (a) < (0) ) ? (-(a)) : (a) ) 59 60/** Y,U,V values in case of black borders rendering */ 61#define Y_PLANE_BORDER_VALUE 0x00 62#define U_PLANE_BORDER_VALUE 0x80 63#define V_PLANE_BORDER_VALUE 0x80 64 65/** 66 ****************************************************************************** 67 * struct M4xVSS_EffectsAlphaBlending 68 * @brief Internal effects alpha blending parameters 69 * @note This structure contains all internal informations to create an alpha 70 * blending for the effects text and framing 71 ****************************************************************************** 72*/ 73typedef struct 74{ 75 M4OSA_UInt8 m_fadeInTime; /*Start percentage of Alpha blending*/ 76 M4OSA_UInt8 m_fadeOutTime; /*Middle percentage of Alpha blending*/ 77 M4OSA_UInt8 m_end; /*End percentage of Alpha blending*/ 78 M4OSA_UInt8 m_middle; /*Duration, in percentage of effect duration, 79 of the FadeIn phase*/ 80 M4OSA_UInt8 m_start; /*Duration, in percentage of effect duration, 81 of the FadeOut phase*/ 82 83} M4xVSS_internalEffectsAlphaBlending; 84 85/** 86 ****************************************************************************** 87 * THIS STRUCTURE MUST NOT BE MODIFIED 88 * struct M4xVSS_FramingStruct 89 * @brief It is used internally by xVSS for framing effect, and by VPS for previewing 90 ****************************************************************************** 91*/ 92typedef struct 93{ 94 M4VIFI_ImagePlane *FramingRgb; /**< decoded BGR565 plane */ 95 M4VIFI_ImagePlane *FramingYuv; /**< converted YUV420 planar plane */ 96 M4OSA_Int32 duration; /**< Duration of the frame */ 97 M4OSA_Int32 previousClipTime; /**< Previous clip time, used by framing 98 filter for SAVING */ 99 M4OSA_Int32 previewOffsetClipTime; /**< Previous clip time, used by framing 100 filter for PREVIEW */ 101 M4OSA_Int32 previewClipTime; /**< Current clip time, used by framing 102 filter for PREVIEW */ 103 M4OSA_Void* pCurrent; /**< Current M4xVSS_FramingStruct used by 104 framing filter */ 105 M4OSA_Void* pNext; /**< Next M4xVSS_FramingStruct, if no more, 106 point on current M4xVSS_FramingStruct */ 107 M4OSA_UInt32 topleft_x; /**< The top-left X coordinate in the output 108 picture of the first decoded pixel */ 109 M4OSA_UInt32 topleft_y; /**< The top-left Y coordinate in the output 110 picture of the first decoded pixel */ 111 M4xVSS_internalEffectsAlphaBlending* alphaBlendingStruct; /* Alpha blending Struct */ 112/*To support ARGB8888 : get the width and height in case of file ARGB888 used in framing 113 as video effect */ 114 M4OSA_UInt32 width; /*width of the ARGB8888 clip 115 .Used only if video effect is framming */ 116 M4OSA_UInt32 height; /*height of the ARGB8888 clip . 117 Used only if video effect is framming */ 118 119} M4xVSS_FramingStruct; 120 121#ifdef DECODE_GIF_ON_SAVING 122/** 123 ****************************************************************************** 124 * THIS STRUCTURE MUST NOT BE MODIFIED 125 * struct M4xVSS_FramingContext 126 * @brief It is used internally by xVSS for framing effect, when the flag 127 DECODE_GIF_ON_SAVING is activated 128 ****************************************************************************** 129*/ 130typedef struct 131{ 132 M4xVSS_FramingStruct* aFramingCtx; /**<Framing struct for the decoding 133 of the current frame of the gif*/ 134 M4xVSS_FramingStruct* aFramingCtx_last; /**<Framing struct for the decoding of 135 the previous frame of the gif*/ 136 M4OSA_FileReadPointer* pFileReadPtr; /**< Pointer on OSAL file read functions */ 137 M4OSA_FileWriterPointer* pFileWritePtr; /**< Pointer on OSAL file write functions */ 138 M4OSA_Void* pSPSContext; /**<SPS context for the GIF decoding*/ 139 //M4SPS_Stream inputStream; /**<GIF input stream buffer pointer*/ 140 M4OSA_Void* pEffectFilePath; /**<file path of the gif*/ 141 M4VIDEOEDITING_VideoFrameSize outputVideoSize; /**< Output video size RC */ 142 //M4SPS_DisposalMode disposal; /**<previous frame GIF disposal*/ 143 M4OSA_UInt16 b_animated; /**<Is the GIF animated?*/ 144 M4OSA_Bool bEffectResize; /**<Is the gif resize*/ 145 M4OSA_UInt32 topleft_x; /**< The top-left X coordinate in the 146 output picture of the first 147 decoded pixel */ 148 M4OSA_UInt32 topleft_y; /**< The top-left Y coordinate in the 149 output picture of the first 150 decoded pixel */ 151 M4OSA_UInt32 width; /**<GIF width, fill during the 152 initialization with the SPS*/ 153 M4OSA_UInt32 height; /**<GIF height, fill during the 154 initialization with the SPS*/ 155 M4OSA_UInt32 effectDuration; /**<Effect duration*/ 156 M4OSA_Int32 effectStartTime; /**<Effect start time*/ 157 M4OSA_UInt32 clipTime; /**<current output clip time for the 158 current frame*/ 159 M4OSA_UInt32 last_clipTime; /**<previous output clip time for the 160 previous frame*/ 161 M4OSA_UInt32 lastStepDuration; /**<Time interval between the previous 162 frame and the current frame*/ 163 M4OSA_Bool b_IsFileGif; /**<Is the framing using a gif file*/ 164 M4OSA_UInt32 last_width; /**<Last frame width*/ 165 M4OSA_UInt32 last_height; /**<Last frame height*/ 166 M4OSA_UInt32 last_topleft_x; /**<Last frame x topleft*/ 167 M4OSA_UInt32 last_topleft_y; /**<Last frame y topleft*/ 168 M4OSA_UInt32 current_gif_time; /**< Current time os the GIF in output 169 file time */ 170 M4OSA_Float frameDurationRatio; /**< Frame duration ratio */ 171 M4xVSS_internalEffectsAlphaBlending* alphaBlendingStruct;/*Alpha blending structure*/ 172#ifdef DEBUG_GIF 173 M4OSA_UInt8 uiDebug_fileCounter;/**<for debug purpose, 174 count the frame of the gif*/ 175#endif /*DEBUG_GIF*/ 176}M4xVSS_FramingContext; 177#endif /*DECODE_GIF_ON_SAVING*/ 178 179/** 180 ****************************************************************************** 181 * struct M4xVSS_Pto3GPP_params 182 * @brief Internal xVSS parameter for Pto3GPP module 183 * @note This structure is filled by M4xVSS_sendCommand function, 184 * @note and is used during M4xVSS_Step function to initialize Pto3GPP module 185 * @note All the JPG files to transform to 3GP are chained 186 ****************************************************************************** 187*/ 188typedef struct { 189 M4OSA_Char* pFileIn; 190 M4OSA_Char* pFileOut; 191 M4OSA_Char* pFileTemp; /**< temporary file used for 192 metadata writing, NULL is cstmem 193 writer not used */ 194 M4OSA_UInt32 duration; 195 M4VIDEOEDITING_FileType InputFileType; 196 M4OSA_Bool isCreated; /**< This boolean is used to know if 197 the output file is already 198 created or not */ 199 M4OSA_Bool isPanZoom; /**< RC: Boolean used to know if the 200 pan and zoom mode is enabled */ 201 M4OSA_UInt16 PanZoomXa; /**< RC */ 202 M4OSA_UInt16 PanZoomTopleftXa; /**< RC */ 203 M4OSA_UInt16 PanZoomTopleftYa; /**< RC */ 204 M4OSA_UInt16 PanZoomXb; /**< RC */ 205 M4OSA_UInt16 PanZoomTopleftXb; /**< RC */ 206 M4OSA_UInt16 PanZoomTopleftYb; /**< RC */ 207 M4xVSS_MediaRendering MediaRendering; /**< FB: to render or not picture 208 aspect ratio */ 209 M4VIDEOEDITING_VideoFramerate framerate; /**< RC */ 210 M4OSA_Void* pNext; /**< Address of next M4xVSS_Pto3GPP_params* 211 element */ 212 /*To support ARGB8888:width and height */ 213 M4OSA_UInt32 width; 214 M4OSA_UInt32 height; 215 216} M4xVSS_Pto3GPP_params; 217 218/** 219 ****************************************************************************** 220 * struct M4xVSS_fiftiesStruct 221 * @brief It is used internally by xVSS for fifties effect 222 ****************************************************************************** 223*/ 224typedef struct 225{ 226 M4OSA_UInt32 fiftiesEffectDuration; /**< Duration of the same effect in a video */ 227 M4OSA_Int32 previousClipTime; /**< Previous clip time, used by framing filter 228 for SAVING */ 229 M4OSA_UInt32 shiftRandomValue; /**< Vertical shift of the image */ 230 M4OSA_UInt32 stripeRandomValue; /**< Horizontal position of the stripe */ 231 232} M4xVSS_FiftiesStruct; 233 234/** 235 ****************************************************************************** 236 * struct M4xVSS_ColorRGB16 237 * @brief It is used internally by xVSS for RGB16 color effect 238 ****************************************************************************** 239*/ 240typedef struct 241{ 242 M4xVSS_VideoEffectType colorEffectType; /*Color type of effect*/ 243 M4OSA_UInt16 rgb16ColorData; /*RGB16 color only for the RGB16 color effect*/ 244} M4xVSS_ColorStruct; 245 246 247/** 248 ****************************************************************************** 249 * struct M4xVSS_PictureCallbackCtxt 250 * @brief The Callback Context parameters for Pto3GPP 251 ****************************************************************************** 252*/ 253typedef struct 254{ 255 M4OSA_Char* m_FileIn; 256 M4OSA_UInt32 m_NbImage; 257 M4OSA_UInt32 m_ImageCounter; 258 M4OSA_Double m_timeDuration; 259 M4OSA_FileReadPointer* m_pFileReadPtr; 260 M4VIFI_ImagePlane* m_pDecodedPlane; /* Used for Pan and Zoom only */ 261 M4xVSS_Pto3GPP_params* m_pPto3GPPparams; 262 M4OSA_Context m_air_context; 263 M4xVSS_MediaRendering m_mediaRendering; 264 265} M4xVSS_PictureCallbackCtxt; 266 267/** 268 ****************************************************************************** 269 * enum M4xVSS_State 270 * @brief Internal State of the xVSS 271 ****************************************************************************** 272*/ 273typedef enum 274{ 275 M4xVSS_kStateInitialized = 0, 276 M4xVSS_kStateAnalyzing, 277 M4xVSS_kStateOpened, 278 //M4xVSS_kStateGeneratingPreview, 279 //M4xVSS_kStatePreview, 280 M4xVSS_kStateSaving, 281 M4xVSS_kStateSaved 282 283} M4xVSS_State; 284 285/** 286 ****************************************************************************** 287 * enum M4xVSS_editMicroState 288 * @brief Internal Micro state of the xVSS for previewing/saving states 289 ****************************************************************************** 290*/ 291typedef enum 292{ 293 M4xVSS_kMicroStateEditing = 0, 294 M4xVSS_kMicroStateAudioMixing 295 296} M4xVSS_editMicroState; 297 298/** 299 ****************************************************************************** 300 * enum M4xVSS_editMicroState 301 * @brief Internal Micro state of the xVSS for analyzing states 302 ****************************************************************************** 303*/ 304typedef enum 305{ 306 M4xVSS_kMicroStateAnalysePto3GPP = 0, 307 M4xVSS_kMicroStateConvertPto3GPP, 308 M4xVSS_kMicroStateAnalyzeMCS, 309 M4xVSS_kMicroStateTranscodeMCS 310 311} M4xVSS_analyseMicroState; 312 313 314/** 315 ****************************************************************************** 316 * struct M4xVSS_MCS_params 317 * @brief Internal xVSS parameter for MCS module 318 * @note This structure is filled by M4xVSS_sendCommand function, 319 * @note and is used during M4xVSS_Step function to initialize MCS module 320 * @note All the input files to transcode are chained 321 ****************************************************************************** 322*/ 323typedef struct { 324 M4OSA_Void* pFileIn; 325 M4OSA_Void* pFileOut; 326 /**< temporary file used for metadata writing, NULL is cstmem writer not used */ 327 M4OSA_Void* pFileTemp; 328 M4VIDEOEDITING_FileType InputFileType; 329 M4VIDEOEDITING_FileType OutputFileType; 330 M4VIDEOEDITING_VideoFormat OutputVideoFormat; 331 M4VIDEOEDITING_VideoFrameSize OutputVideoFrameSize; 332 M4VIDEOEDITING_VideoFramerate OutputVideoFrameRate; 333 M4VIDEOEDITING_AudioFormat OutputAudioFormat; 334 M4VIDEOEDITING_AudioSamplingFrequency OutputAudioSamplingFrequency; 335 M4OSA_Bool bAudioMono; 336 M4VIDEOEDITING_Bitrate OutputVideoBitrate; 337 M4VIDEOEDITING_Bitrate OutputAudioBitrate; 338 M4OSA_Bool isBGM; 339 /**< This boolean is used to know if the output file is already created or not */ 340 M4OSA_Bool isCreated; 341 /**< Address of next M4xVSS_MCS_params* element */ 342 M4OSA_Void* pNext; 343 344 /*FB: transcoding per parts*/ 345 M4OSA_UInt32 BeginCutTime; /**< Beginning cut time in input file */ 346 M4OSA_UInt32 EndCutTime; /**< End cut time in input file */ 347 M4OSA_UInt32 OutputVideoTimescale; /*Output timescale*/ 348 349 M4MCS_MediaRendering MediaRendering; /**< FB: to crop, resize, or render 350 black borders*/ 351 352} M4xVSS_MCS_params; 353 354/** 355 ****************************************************************************** 356 * struct M4xVSS_internal_AlphaMagicSettings 357 * @brief This structure defines the alpha magic transition settings 358 ****************************************************************************** 359*/ 360typedef struct { 361 M4VIFI_ImagePlane *pPlane; 362 M4OSA_Int32 blendingthreshold; /**< Blending Range */ 363 M4OSA_Bool isreverse; /**< direct effect or reverse */ 364 365} M4xVSS_internal_AlphaMagicSettings; 366 367 368/** 369 ****************************************************************************** 370 * struct M4xVSS_internal_SlideTransitionSettings 371 * @brief This structure defines the internal slide transition settings 372 * @note This type happens to match the external transition settings 373 * structure (i.e. the one which is given by the application), but are 374 * conceptually different types, so that if (or rather when) some day 375 * translation needs to occur when loading the settings from the app, 376 * this separate type will already be ready. 377 ****************************************************************************** 378*/ 379 380typedef M4xVSS_SlideTransitionSettings M4xVSS_internal_SlideTransitionSettings; 381 382/** 383 ****************************************************************************** 384 * struct M4xVSS_internalJpegChunkMode 385 * @brief This structure defines the parameters of the chunk callback to decode 386 * a JPEG by chunk mode. 387 ****************************************************************************** 388*/ 389 390/** 391 ****************************************************************************** 392 * struct M4xVSS_UTFConversionContext 393 * @brief Internal UTF conversion context 394 * @note This structure contains the UTF conversion informations 395 * needed by the xVSS to manage the different formats (UTF8/16/ASCII) 396 ****************************************************************************** 397*/ 398typedef struct 399{ 400 /*Function pointer on an external text conversion function */ 401 M4xVSS_toUTF8Fct pConvToUTF8Fct; 402 /*Function pointer on an external text conversion function */ 403 M4xVSS_fromUTF8Fct pConvFromUTF8Fct; 404 /*Temporary buffer that contains the result of each conversion*/ 405 M4OSA_Void* pTempOutConversionBuffer; 406 /*Size of the previous buffer, the size is prederminated*/ 407 M4OSA_UInt32 m_TempOutConversionSize; 408} M4xVSS_UTFConversionContext; 409 410 411 412/** 413 ****************************************************************************** 414 * struct M4xVSS_Context 415 * @brief Internal context of the xVSS 416 * @note This structure contains all internal informations needed by the xVSS 417 ****************************************************************************** 418*/ 419typedef struct { 420 /**< Pointer on OSAL file read functions */ 421 M4OSA_FileReadPointer* pFileReadPtr; 422 /**< Pointer on OSAL file write functions */ 423 M4OSA_FileWriterPointer* pFileWritePtr; 424 /**< Local copy of video editor settings */ 425 M4VSS3GPP_EditSettings* pSettings; 426 /**< Current Settings of video editor to use in step functions for preview/save */ 427 M4VSS3GPP_EditSettings* pCurrentEditSettings; 428 /**< Current context of video editor to use in step functions for preview/save */ 429 M4VSS3GPP_EditContext pCurrentEditContext; 430 /**< This is to know if a previous M4xVSS_sendCommand has already been called */ 431 M4OSA_UInt8 previousClipNumber; 432 /**< Audio mixing settings, needed to free it in M4xVSS_internalCloseAudioMixedFile function*/ 433 M4VSS3GPP_AudioMixingSettings* pAudioMixSettings; 434 /**< Audio mixing context */ 435 M4VSS3GPP_AudioMixingContext pAudioMixContext; 436 /**< File path for PCM output file: used for preview, given to user */ 437 M4OSA_Char* pcmPreviewFile; 438 /**< Duplication of output file pointer, to be able to use audio mixing */ 439 M4OSA_Char* pOutputFile; 440 /**< Duplication of temporary file pointer, to be able to use audio mixing */ 441 M4OSA_Char* pTemporaryFile; 442 /**< Micro state for Saving/Previewing state */ 443 M4xVSS_editMicroState editingStep; 444 /**< Micro state for Analyzing state */ 445 M4xVSS_analyseMicroState analyseStep; 446 /**< Nb of step for analysis or save/preview. Used to compute progression 447 of analysis or save/preview */ 448 M4OSA_UInt8 nbStepTotal; 449 /**< Current step number for analysis or save/preview */ 450 M4OSA_UInt8 currentStep; 451 /**< To be able to free pEffects during preview close */ 452 M4xVSS_PreviewSettings* pPreviewSettings; 453 /**< Temporary file path: all temporary files are created here */ 454 M4OSA_Char* pTempPath; 455 /**< Current state of xVSS */ 456 M4xVSS_State m_state; 457 /**< List of still pictures input to convert to 3GP with parameters */ 458 M4xVSS_Pto3GPP_params* pPTo3GPPparamsList; 459 /**< Current element of the above chained list beeing processd by the Pto3GPP */ 460 M4xVSS_Pto3GPP_params* pPTo3GPPcurrentParams; 461 /**< Current Pto3GPP context, needed to call Pto3GPP_step function in M4xVSS_step function */ 462 M4PTO3GPP_Context pM4PTO3GPP_Ctxt; 463 /**< Pointer on the callback function of the Pto3GPP module */ 464 M4xVSS_PictureCallbackCtxt* pCallBackCtxt; 465 /**< List of files to transcode with parameters */ 466 M4xVSS_MCS_params* pMCSparamsList; 467 /**< Current element of the above chained list beeing processd by the MCS */ 468 M4xVSS_MCS_params* pMCScurrentParams; 469 /**< Current MCS context, needed to call MCS_step function in M4xVSS_step function*/ 470 M4MCS_Context pMCS_Ctxt; 471 /**< Index to have unique temporary filename */ 472 M4OSA_UInt32 tempFileIndex; 473 /**< In case of MMS use case, targeted bitrate to reach output file size */ 474 M4OSA_UInt32 targetedBitrate; 475 /**< If the sendCommand fct is called twice or more, the first computed timescale 476 recorded here must be reused */ 477 M4OSA_UInt32 targetedTimescale; 478 479 /*UTF Conversion support*/ 480 M4xVSS_UTFConversionContext UTFConversionContext; /*UTF conversion context structure*/ 481 482#ifdef M4VSS_ENABLE_EXTERNAL_DECODERS 483 struct 484 { 485 M4VD_Interface* pDecoderInterface; 486 M4OSA_Void* pUserData; 487 M4OSA_Bool registered; 488 } registeredExternalDecs[M4VD_kVideoType_NB]; 489#endif /* M4VSS_ENABLE_EXTERNAL_DECODERS */ 490 struct 491 { 492 M4VE_Interface* pEncoderInterface; 493 M4OSA_Void* pUserData; 494 M4OSA_Bool registered; 495 } registeredExternalEncs[M4VE_kEncoderType_NB]; 496} M4xVSS_Context; 497 498/** 499 * Internal function prototypes */ 500 501M4OSA_ERR M4xVSS_internalStartTranscoding(M4OSA_Context pContext); 502 503M4OSA_ERR M4xVSS_internalStopTranscoding(M4OSA_Context pContext); 504 505M4OSA_ERR M4xVSS_internalDecodeJPG(M4OSA_Void* pFileIn, M4OSA_FileReadPointer* pFileReadPtr, 506 M4VIFI_ImagePlane** pImagePlanes); 507 508M4OSA_ERR M4xVSS_internalConvertARGB8888toYUV420(M4OSA_Void* pFileIn, 509 M4OSA_FileReadPointer* pFileReadPtr, 510 M4VIFI_ImagePlane** pImagePlanes, 511 M4OSA_UInt32 width,M4OSA_UInt32 height); 512M4OSA_ERR M4xVSS_internalDecodeAndResizeJPG(M4OSA_Void* pFileIn, 513 M4OSA_FileReadPointer* pFileReadPtr, 514 M4VIFI_ImagePlane* pImagePlanes); 515M4OSA_ERR M4xVSS_internalConvertAndResizeARGB8888toYUV420(M4OSA_Void* pFileIn, 516 M4OSA_FileReadPointer* pFileReadPtr, 517 M4VIFI_ImagePlane* pImagePlanes, 518 M4OSA_UInt32 width,M4OSA_UInt32 height); 519 520M4OSA_ERR M4xVSS_internalStartConvertPictureTo3gp(M4OSA_Context pContext); 521 522M4OSA_ERR M4xVSS_internalStopConvertPictureTo3gp(M4OSA_Context pContext); 523 524M4OSA_ERR M4xVSS_internalConvertRGBtoYUV(M4xVSS_FramingStruct* framingCtx); 525 526#ifdef DECODE_GIF_ON_SAVING 527M4OSA_ERR M4xVSS_internalDecodeGIF(M4OSA_Context pContext); 528 529M4OSA_ERR M4xVSS_internalDecodeGIF_Initialization(M4OSA_Context pContext); 530 531M4OSA_ERR M4xVSS_internalDecodeGIF_Cleaning(M4OSA_Context pContext); 532 533#else 534M4OSA_ERR M4xVSS_internalDecodeGIF(M4OSA_Context pContext, M4VSS3GPP_EffectSettings* pEffect, 535 M4xVSS_FramingStruct* framingCtx); 536#endif /*DECODE_GIF_ON_SAVING*/ 537 538M4OSA_ERR M4xVSS_internalConvertARGB888toYUV420_FrammingEffect(M4OSA_Context pContext, 539 M4VSS3GPP_EffectSettings* pEffect, 540 M4xVSS_FramingStruct* framingCtx, 541 M4VIDEOEDITING_VideoFrameSize \ 542 OutputVideoResolution); 543 544M4OSA_ERR M4xVSS_internalGenerateEditedFile(M4OSA_Context pContext); 545 546M4OSA_ERR M4xVSS_internalCloseEditedFile(M4OSA_Context pContext); 547 548M4OSA_ERR M4xVSS_internalGenerateAudioMixFile(M4OSA_Context pContext); 549 550M4OSA_ERR M4xVSS_internalCloseAudioMixedFile(M4OSA_Context pContext); 551 552M4OSA_ERR M4xVSS_internalFreePreview(M4OSA_Context pContext); 553 554M4OSA_ERR M4xVSS_internalFreeSaving(M4OSA_Context pContext); 555 556M4OSA_ERR M4xVSS_freeSettings(M4VSS3GPP_EditSettings* pSettings); 557 558M4OSA_ERR M4xVSS_freeCommand(M4OSA_Context pContext); 559 560M4OSA_ERR M4xVSS_internalGetProperties(M4OSA_Context pContext, M4OSA_Char* pFile, 561 M4VIDEOEDITING_ClipProperties *pFileProperties); 562 563M4OSA_ERR M4xVSS_AlphaMagic( M4OSA_Void *userData, M4VIFI_ImagePlane PlaneIn1[3], 564 M4VIFI_ImagePlane PlaneIn2[3], M4VIFI_ImagePlane *PlaneOut, 565 M4VSS3GPP_ExternalProgress *pProgress, 566 M4OSA_UInt32 uiTransitionKind); 567 568M4OSA_ERR M4xVSS_AlphaMagicBlending( M4OSA_Void *userData, M4VIFI_ImagePlane PlaneIn1[3], 569 M4VIFI_ImagePlane PlaneIn2[3], M4VIFI_ImagePlane *PlaneOut, 570 M4VSS3GPP_ExternalProgress *pProgress, 571 M4OSA_UInt32 uiTransitionKind); 572 573M4OSA_ERR M4xVSS_SlideTransition( M4OSA_Void *userData, M4VIFI_ImagePlane PlaneIn1[3], 574 M4VIFI_ImagePlane PlaneIn2[3], M4VIFI_ImagePlane *PlaneOut, 575 M4VSS3GPP_ExternalProgress *pProgress, 576 M4OSA_UInt32 uiTransitionKind); 577 578M4OSA_ERR M4xVSS_FadeBlackTransition(M4OSA_Void *userData, M4VIFI_ImagePlane PlaneIn1[3], 579 M4VIFI_ImagePlane PlaneIn2[3],M4VIFI_ImagePlane *PlaneOut, 580 M4VSS3GPP_ExternalProgress *pProgress, 581 M4OSA_UInt32 uiTransitionKind); 582 583M4OSA_ERR M4xVSS_internalGetTargetedTimeScale(M4OSA_Context pContext, 584 M4VSS3GPP_EditSettings* pSettings, 585 M4OSA_UInt32* pTargetedTimeScale); 586 587M4OSA_ERR M4xVSS_internalConvertToUTF8(M4OSA_Context pContext, M4OSA_Void* pBufferIn, 588 M4OSA_Void* pBufferOut, M4OSA_UInt32* convertedSize); 589 590 591M4OSA_ERR M4xVSS_internalConvertFromUTF8(M4OSA_Context pContext, M4OSA_Void* pBufferIn, 592 M4OSA_Void* pBufferOut, M4OSA_UInt32* convertedSize); 593#ifdef __cplusplus 594} 595#endif /* __cplusplus */ 596 597 598#endif /* __M4XVSS_INTERNAL_H__ */ 599 600