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 39 extern "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 50 allocate 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 */ 72 typedef 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 */ 91 typedef 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 */ 129 typedef 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 */ 187 typedef 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 */ 223 typedef 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 */ 239 typedef 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 */ 252 typedef 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 */ 272 typedef 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 */ 290 typedef 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 */ 303 typedef 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 */ 322 typedef 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 */ 361 typedef 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 381 typedef 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 */ 399 typedef 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 */ 420 typedef 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 488 M4OSA_ERR M4xVSS_internalStartTranscoding(M4OSA_Context pContext, 489 M4OSA_UInt32 *rotationDegree); 490 491 M4OSA_ERR M4xVSS_internalStopTranscoding(M4OSA_Context pContext); 492 493 M4OSA_ERR M4xVSS_internalDecodeJPG(M4OSA_Void* pFileIn, M4OSA_FileReadPointer* pFileReadPtr, 494 M4VIFI_ImagePlane** pImagePlanes); 495 496 M4OSA_ERR M4xVSS_internalConvertARGB8888toYUV420(M4OSA_Void* pFileIn, 497 M4OSA_FileReadPointer* pFileReadPtr, 498 M4VIFI_ImagePlane** pImagePlanes, 499 M4OSA_UInt32 width,M4OSA_UInt32 height); 500 M4OSA_ERR M4xVSS_internalDecodeAndResizeJPG(M4OSA_Void* pFileIn, 501 M4OSA_FileReadPointer* pFileReadPtr, 502 M4VIFI_ImagePlane* pImagePlanes); 503 M4OSA_ERR M4xVSS_internalConvertAndResizeARGB8888toYUV420(M4OSA_Void* pFileIn, 504 M4OSA_FileReadPointer* pFileReadPtr, 505 M4VIFI_ImagePlane* pImagePlanes, 506 M4OSA_UInt32 width,M4OSA_UInt32 height); 507 508 M4OSA_ERR M4xVSS_internalStartConvertPictureTo3gp(M4OSA_Context pContext); 509 510 M4OSA_ERR M4xVSS_internalStopConvertPictureTo3gp(M4OSA_Context pContext); 511 512 M4OSA_ERR M4xVSS_internalConvertRGBtoYUV(M4xVSS_FramingStruct* framingCtx); 513 514 #ifdef DECODE_GIF_ON_SAVING 515 M4OSA_ERR M4xVSS_internalDecodeGIF(M4OSA_Context pContext); 516 517 M4OSA_ERR M4xVSS_internalDecodeGIF_Initialization(M4OSA_Context pContext); 518 519 M4OSA_ERR M4xVSS_internalDecodeGIF_Cleaning(M4OSA_Context pContext); 520 521 #else 522 M4OSA_ERR M4xVSS_internalDecodeGIF(M4OSA_Context pContext, M4VSS3GPP_EffectSettings* pEffect, 523 M4xVSS_FramingStruct* framingCtx); 524 #endif /*DECODE_GIF_ON_SAVING*/ 525 526 M4OSA_ERR M4xVSS_internalConvertARGB888toYUV420_FrammingEffect(M4OSA_Context pContext, 527 M4VSS3GPP_EffectSettings* pEffect, 528 M4xVSS_FramingStruct* framingCtx, 529 M4VIDEOEDITING_VideoFrameSize \ 530 OutputVideoResolution); 531 532 M4OSA_ERR M4xVSS_internalGenerateEditedFile(M4OSA_Context pContext); 533 534 M4OSA_ERR M4xVSS_internalCloseEditedFile(M4OSA_Context pContext); 535 536 M4OSA_ERR M4xVSS_internalGenerateAudioMixFile(M4OSA_Context pContext); 537 538 M4OSA_ERR M4xVSS_internalCloseAudioMixedFile(M4OSA_Context pContext); 539 540 M4OSA_ERR M4xVSS_internalFreePreview(M4OSA_Context pContext); 541 542 M4OSA_ERR M4xVSS_internalFreeSaving(M4OSA_Context pContext); 543 544 M4OSA_ERR M4xVSS_freeSettings(M4VSS3GPP_EditSettings* pSettings); 545 546 M4OSA_ERR M4xVSS_freeCommand(M4OSA_Context pContext); 547 548 M4OSA_ERR M4xVSS_internalGetProperties(M4OSA_Context pContext, M4OSA_Char* pFile, 549 M4VIDEOEDITING_ClipProperties *pFileProperties); 550 551 M4OSA_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 556 M4OSA_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 561 M4OSA_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 566 M4OSA_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 571 M4OSA_ERR M4xVSS_internalGetTargetedTimeScale(M4OSA_Context pContext, 572 M4VSS3GPP_EditSettings* pSettings, 573 M4OSA_UInt32* pTargetedTimeScale); 574 575 M4OSA_ERR M4xVSS_internalConvertToUTF8(M4OSA_Context pContext, M4OSA_Void* pBufferIn, 576 M4OSA_Void* pBufferOut, M4OSA_UInt32* convertedSize); 577 578 579 M4OSA_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