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