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_API_H__ 18 #define __M4XVSS_API_H__ 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 /** 24 ****************************************************************************** 25 * @file M4xVSS_API.h 26 * @brief API of Video Studio 2.1 27 * @note 28 ****************************************************************************** 29 */ 30 31 #define M4VSS_SUPPORT_EXTENDED_FEATURES 32 33 #include "M4VSS3GPP_API.h" 34 #include "M4VSS3GPP_Extended_API.h" 35 #include "M4DECODER_Common.h" 36 /* Errors codes */ 37 38 /** 39 * End of analyzing => the user can call M4xVSS_PreviewStart or M4xVSS_SaveStart */ 40 #define M4VSS3GPP_WAR_ANALYZING_DONE M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0001) 41 42 /** 43 * End of preview generating => the user can launch vps to see preview. Once preview is over, 44 the user must call M4xVSS_PreviewStop() to be able to save edited file, or to call another 45 M4xVSS_SendCommand() */ 46 #define M4VSS3GPP_WAR_PREVIEW_READY M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0002) 47 48 /** 49 * End of saved file generation => the user must call M4xVSS_SaveStop() */ 50 #define M4VSS3GPP_WAR_SAVING_DONE M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0003) 51 52 /** 53 * Transcoding is necessary to go further -> if the user does not want to continue, 54 he must call M4xVSS_sendCommand() */ 55 #define M4VSS3GPP_WAR_TRANSCODING_NECESSARY M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0004) 56 57 /** 58 * In case of MMS, the output file size won't be reached */ 59 #define M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0005) 60 61 /** 62 * JPG input file dimensions are too high */ 63 #define M4VSS3GPP_ERR_JPG_TOO_BIG M4OSA_ERR_CREATE( M4_ERR, M4VS, 0x0001) 64 65 /** 66 * UTF Conversion, warning on the size of the temporary converted buffer*/ 67 #define M4xVSSWAR_BUFFER_OUT_TOO_SMALL M4OSA_ERR_CREATE( M4_WAR, M4VS, 0x0006) 68 69 /** 70 * SWIKAR :Error whan NO_MORE_SPACE*/ 71 #define M4xVSSERR_NO_MORE_SPACE M4OSA_ERR_CREATE( M4_ERR, M4VS, 0x0007) 72 73 /** 74 ****************************************************************************** 75 * enum M4xVSS_VideoEffectType 76 * @brief This enumeration defines the video effect types of the xVSS 77 ****************************************************************************** 78 */ 79 typedef enum 80 { 81 M4xVSS_kVideoEffectType_BlackAndWhite = M4VSS3GPP_kVideoEffectType_External+1, /* 257 */ 82 M4xVSS_kVideoEffectType_Pink, /* 258 */ 83 M4xVSS_kVideoEffectType_Green, /* 259 */ 84 M4xVSS_kVideoEffectType_Sepia, /* 260 */ 85 M4xVSS_kVideoEffectType_Negative, /* 261 */ 86 M4xVSS_kVideoEffectType_Framing, /* 262 */ 87 M4xVSS_kVideoEffectType_Text, /* Text overlay */ /* 263 */ 88 M4xVSS_kVideoEffectType_ZoomIn, /* 264 */ 89 M4xVSS_kVideoEffectType_ZoomOut, /* 265 */ 90 M4xVSS_kVideoEffectType_Fifties, /*266 */ 91 M4xVSS_kVideoEffectType_ColorRGB16, /*267 */ 92 M4xVSS_kVideoEffectType_Gradient /*268*/ 93 } M4xVSS_VideoEffectType; 94 95 /** 96 ****************************************************************************** 97 * enum M4xVSS_VideoTransitionType 98 * @brief This enumeration defines the video effect that can be applied during a transition. 99 ****************************************************************************** 100 */ 101 typedef enum 102 { 103 M4xVSS_kVideoTransitionType_External = M4VSS3GPP_kVideoTransitionType_External, /*256*/ 104 M4xVSS_kVideoTransitionType_AlphaMagic, 105 M4xVSS_kVideoTransitionType_SlideTransition, 106 M4xVSS_kVideoTransitionType_FadeBlack 107 108 } M4xVSS_VideoTransitionType; 109 110 /** 111 ****************************************************************************** 112 * struct M4xVSS_PreviewSettings 113 * @brief This structure gathers all the information needed by the VPS for preview 114 ****************************************************************************** 115 */ 116 typedef struct 117 { 118 M4OSA_Void *p3gpPreviewFile; 119 M4OSA_Void *pPCMFile; 120 M4VIDEOEDITING_AudioSamplingFrequency outPCM_ASF; 121 M4OSA_Bool bAudioMono; 122 M4VSS3GPP_EffectSettings *Effects; 123 M4OSA_UInt8 nbEffects; 124 125 } M4xVSS_PreviewSettings; 126 127 /** 128 ****************************************************************************** 129 * prototype M4xVSS_toUTF8Fct 130 * @brief This prototype defines the function implemented by the integrator 131 * to convert a string encoded in any format to an UTF8 string. 132 * @note 133 * 134 * @param pBufferIn IN Buffer containing the string to convert to UTF8 135 * @param pBufferOut IN Buffer containing the UTF8 converted string 136 * @param bufferOutSize IN/OUT IN: Size of the given output buffer 137 * OUT: Size of the converted buffer 138 * 139 ****************************************************************************** 140 */ 141 typedef M4OSA_ERR (*M4xVSS_toUTF8Fct) 142 ( 143 M4OSA_Void *pBufferIn, 144 M4OSA_UInt8 *pBufferOut, 145 M4OSA_UInt32 *bufferOutSize 146 ); 147 148 149 /** 150 ****************************************************************************** 151 * prototype M4xVSS_fromUTF8Fct 152 * @brief This prototype defines the function implemented by the integrator 153 * to convert an UTF8 string to a string encoded in any format. 154 * @note 155 * 156 * @param pBufferIn IN Buffer containing the UTF8 string to convert 157 * to the desired format. 158 * @param pBufferOut IN Buffer containing the converted string 159 * @param bufferOutSize IN/OUT IN: Size of the given output buffer 160 * OUT: Size of the converted buffer 161 * 162 ****************************************************************************** 163 */ 164 typedef M4OSA_ERR (*M4xVSS_fromUTF8Fct) 165 ( 166 M4OSA_UInt8 *pBufferIn, 167 M4OSA_Void *pBufferOut, 168 M4OSA_UInt32 *bufferOutSize 169 ); 170 171 172 173 174 /** 175 ****************************************************************************** 176 * struct M4xVSS_InitParams 177 * @brief This structure defines parameters for xVSS. 178 * @note 179 ****************************************************************************** 180 */ 181 typedef struct 182 { 183 M4OSA_FileReadPointer* pFileReadPtr; 184 M4OSA_FileWriterPointer* pFileWritePtr; 185 M4OSA_Void* pTempPath; 186 /*Function pointer on an external text conversion function */ 187 M4xVSS_toUTF8Fct pConvToUTF8Fct; 188 /*Function pointer on an external text conversion function */ 189 M4xVSS_fromUTF8Fct pConvFromUTF8Fct; 190 191 192 193 } M4xVSS_InitParams; 194 195 /** 196 ****************************************************************************** 197 * prototype M4xVSS_Init 198 * @brief This function initializes the xVSS 199 * @note Initializes the xVSS edit operation (allocates an execution context). 200 * 201 * @param pContext (OUT) Pointer on the xVSS edit context to allocate 202 * @param params (IN) Parameters mandatory for xVSS 203 * @return M4NO_ERROR: No error 204 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 205 * @return M4ERR_ALLOC: Memory allocation has failed 206 ****************************************************************************** 207 */ 208 M4OSA_ERR M4xVSS_Init(M4OSA_Context* pContext, M4xVSS_InitParams* params); 209 210 /** 211 ****************************************************************************** 212 * prototype M4xVSS_ReduceTranscode 213 * @brief This function changes the given editing structure in order to 214 * minimize the transcoding time. 215 * @note The xVSS analyses this structure, and if needed, changes the 216 * output parameters (Video codec, video size, audio codec, 217 * audio nb of channels) to minimize the transcoding time. 218 * 219 * @param pContext (OUT) Pointer on the xVSS edit context to allocate 220 * @param pSettings (IN) Edition settings (allocated by the user) 221 * @return M4NO_ERROR: No error 222 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 223 * @return M4ERR_ALLOC: Memory allocation has failed 224 * @return M4ERR_STATE: This function cannot not be called at this time 225 ****************************************************************************** 226 */ 227 M4OSA_ERR M4xVSS_ReduceTranscode(M4OSA_Context pContext, M4VSS3GPP_EditSettings* pSettings); 228 229 /** 230 ****************************************************************************** 231 * prototype M4xVSS_SendCommand 232 * @brief This function gives to the xVSS an editing structure 233 * @note The xVSS analyses this structure, and prepare edition 234 * This function must be called after M4xVSS_Init, after 235 * M4xVSS_CloseCommand, or after M4xVSS_PreviewStop. 236 * After this function, the user must call M4xVSS_Step until 237 * it returns another error than M4NO_ERROR. 238 * 239 * @param pContext (IN) Pointer on the xVSS edit context 240 * @param pSettings (IN) Edition settings (allocated by the user) 241 * @return M4NO_ERROR: No error 242 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 243 * @return M4ERR_ALLOC: Memory allocation has failed 244 * @return M4ERR_STATE: This function cannot not be called at this time 245 ****************************************************************************** 246 */ 247 M4OSA_ERR M4xVSS_SendCommand(M4OSA_Context pContext, M4VSS3GPP_EditSettings* pSettings); 248 249 /** 250 ****************************************************************************** 251 * prototype M4xVSS_PreviewStart 252 * @brief This function prepare the preview 253 * @note The xVSS create 3GP preview file and fill pPreviewSettings with 254 * preview parameters. 255 * This function must be called once M4xVSS_Step has returned 256 * M4VSS3GPP_WAR_ANALYZING_DONE 257 * After this function, the user must call M4xVSS_Step until 258 * it returns another error than M4NO_ERROR. 259 * 260 * @param pContext (IN) Pointer on the xVSS edit context 261 * @param pPreviewSettings (IN) Preview settings (allocated by the user) 262 * @return M4NO_ERROR: No error 263 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 264 * @return M4ERR_ALLOC: Memory allocation has failed 265 * @return M4ERR_STATE: This function cannot not be called at this time 266 ****************************************************************************** 267 */ 268 M4OSA_ERR M4xVSS_PreviewStart(M4OSA_Context pContext, M4xVSS_PreviewSettings* pPreviewSettings); 269 270 /** 271 ****************************************************************************** 272 * prototype M4xVSS_PreviewStop 273 * @brief This function unallocate preview ressources and change xVSS 274 * internal state to allow saving or resend an editing command 275 * @note This function must be called once M4xVSS_Step has returned 276 * M4VSS3GPP_WAR_PREVIEW_READY 277 * 278 * @param pContext (IN) Pointer on the xVSS edit context 279 * @return M4NO_ERROR: No error 280 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 281 * @return M4ERR_STATE: This function cannot not be called at this time 282 ****************************************************************************** 283 */ 284 M4OSA_ERR M4xVSS_PreviewStop(M4OSA_Context pContext); 285 286 /** 287 ****************************************************************************** 288 * prototype M4xVSS_SaveStart 289 * @brief This function prepare the save 290 * @note The xVSS create 3GP edited final file 291 * This function must be called once M4xVSS_Step has returned 292 * M4VSS3GPP_WAR_ANALYZING_DONE 293 * After this function, the user must call M4xVSS_Step until 294 * it returns another error than M4NO_ERROR. 295 * 296 * @param pContext (IN) Pointer on the xVSS edit context 297 * @param pFilePath (IN) If the user wants to provide a different 298 * output filename, else can be NULL (allocated by the user) 299 * @return M4NO_ERROR: No error 300 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 301 * @return M4ERR_ALLOC: Memory allocation has failed 302 * @return M4ERR_STATE: This function cannot not be called at this time 303 ****************************************************************************** 304 */ 305 M4OSA_ERR M4xVSS_SaveStart(M4OSA_Context pContext, M4OSA_Void* pFilePath, 306 M4OSA_UInt32 filePathSize); 307 308 /** 309 ****************************************************************************** 310 * prototype M4xVSS_SaveStop 311 * @brief This function unallocate save ressources and change xVSS 312 * internal state. 313 * @note This function must be called once M4xVSS_Step has returned 314 * M4VSS3GPP_WAR_SAVING_DONE 315 * 316 * @param pContext (IN) Pointer on the xVSS edit context 317 * @return M4NO_ERROR: No error 318 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 319 * @return M4ERR_STATE: This function cannot not be called at this time 320 ****************************************************************************** 321 */ 322 M4OSA_ERR M4xVSS_SaveStop(M4OSA_Context pContext); 323 324 /** 325 ****************************************************************************** 326 * prototype M4xVSS_Step 327 * @brief This function executes differents tasks, depending of xVSS 328 * internal state. 329 * @note This function: 330 * - analyses editing structure if called after M4xVSS_SendCommand 331 * - generates preview file if called after M4xVSS_PreviewStart 332 * - generates final edited file if called after M4xVSS_SaveStart 333 * 334 * @param pContext (IN) Pointer on the xVSS edit context 335 * @param pContext (OUT) Progress indication from 0 to 100 336 * @return M4NO_ERROR: No error, the user must call M4xVSS_Step again 337 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 338 * @return M4ERR_STATE: This function cannot not be called at this time 339 * @return M4VSS3GPP_WAR_PREVIEW_READY: Preview file is generated 340 * @return M4VSS3GPP_WAR_SAVING_DONE: Final edited file is generated 341 * @return M4VSS3GPP_WAR_ANALYZING_DONE: Analyse is done 342 ****************************************************************************** 343 */ 344 M4OSA_ERR M4xVSS_Step(M4OSA_Context pContext, M4OSA_UInt8 *pProgress); 345 346 /** 347 ****************************************************************************** 348 * prototype M4xVSS_CloseCommand 349 * @brief This function deletes current editing profile, unallocate 350 * ressources and change xVSS internal state. 351 * @note After this function, the user can call a new M4xVSS_SendCommand 352 * 353 * @param pContext (IN) Pointer on the xVSS edit context 354 * @return M4NO_ERROR: No error 355 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 356 * @return M4ERR_STATE: This function cannot not be called at this time 357 ****************************************************************************** 358 */ 359 M4OSA_ERR M4xVSS_CloseCommand(M4OSA_Context pContext); 360 361 /** 362 ****************************************************************************** 363 * prototype M4xVSS_CleanUp 364 * @brief This function deletes all xVSS ressources 365 * @note This function must be called after M4xVSS_CloseCommand. 366 * 367 * @param pContext (IN) Pointer on the xVSS edit context 368 * @return M4NO_ERROR: No error 369 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 370 * @return M4ERR_STATE: This function cannot not be called at this time 371 ****************************************************************************** 372 */ 373 M4OSA_ERR M4xVSS_CleanUp(M4OSA_Context pContext); 374 375 /** 376 ****************************************************************************** 377 * prototype M4xVSS_GetVersion(M4_VersionInfo *pVersion) 378 * @brief This function get the version of the Video Studio 2.1 379 * 380 * @param pVersion (IN) Pointer on the version info struct 381 * @return M4NO_ERROR: No error 382 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 383 ****************************************************************************** 384 */ 385 M4OSA_ERR M4xVSS_GetVersion(M4_VersionInfo *pVersion); 386 387 /** 388 ****************************************************************************** 389 * prototype M4VSS3GPP_externalVideoEffectColor(M4OSA_Void *pFunctionContext, 390 * M4VIFI_ImagePlane *PlaneIn, 391 * M4VIFI_ImagePlane *PlaneOut, 392 * M4VSS3GPP_ExternalProgress *pProgress, 393 * M4OSA_UInt32 uiEffectKind) 394 * 395 * @brief This function apply a color effect on an input YUV420 planar frame 396 * @note The prototype of this effect function is exposed because it needs to 397 * called by the VPS during the preview 398 * @param pFunctionContext(IN) Contains which color to apply (not very clean ...) 399 * @param PlaneIn (IN) Input YUV420 planar 400 * @param PlaneOut (IN/OUT) Output YUV420 planar 401 * @param pProgress (IN/OUT) Progress indication (0-100) 402 * @param uiEffectKind (IN) Unused 403 * 404 * @return M4VIFI_OK: No error 405 ****************************************************************************** 406 */ 407 M4OSA_ERR M4VSS3GPP_externalVideoEffectColor 408 ( 409 M4OSA_Void *pFunctionContext, 410 M4VIFI_ImagePlane *pInputPlanes, 411 M4VIFI_ImagePlane *pOutputPlanes, 412 M4VSS3GPP_ExternalProgress *pProgress, 413 M4OSA_UInt32 uiEffectKind 414 ); 415 416 /** 417 ****************************************************************************** 418 * prototype M4VSS3GPP_externalVideoEffectFraming(M4OSA_Void *pFunctionContext, 419 * M4VIFI_ImagePlane *PlaneIn, 420 * M4VIFI_ImagePlane *PlaneOut, 421 * M4VSS3GPP_ExternalProgress *pProgress, 422 * M4OSA_UInt32 uiEffectKind) 423 * 424 * @brief This function add a fixed or animated image on an input YUV420 planar frame 425 * @note The prototype of this effect function is exposed because it needs to 426 * called by the VPS during the preview 427 * @param pFunctionContext(IN) Contains which color to apply (not very clean ...) 428 * @param PlaneIn (IN) Input YUV420 planar 429 * @param PlaneOut (IN/OUT) Output YUV420 planar 430 * @param pProgress (IN/OUT) Progress indication (0-100) 431 * @param uiEffectKind (IN) Unused 432 * 433 * @return M4VIFI_OK: No error 434 ****************************************************************************** 435 */ 436 M4OSA_ERR M4VSS3GPP_externalVideoEffectFraming 437 ( 438 M4OSA_Void *pFunctionContext, 439 M4VIFI_ImagePlane *pInputPlanes, 440 M4VIFI_ImagePlane *pOutputPlanes, 441 M4VSS3GPP_ExternalProgress *pProgress, 442 M4OSA_UInt32 uiEffectKind 443 ); 444 445 /** 446 ****************************************************************************** 447 * prototype M4VSS3GPP_externalVideoEffectFifties(M4OSA_Void *pFunctionContext, 448 * M4VIFI_ImagePlane *PlaneIn, 449 * M4VIFI_ImagePlane *PlaneOut, 450 * M4VSS3GPP_ExternalProgress *pProgress, 451 * M4OSA_UInt32 uiEffectKind) 452 * 453 * @brief This function make a video look as if it was taken in the fifties 454 * @note 455 * @param pUserData (IN) Context 456 * @param pPlaneIn (IN) Input YUV420 planar 457 * @param pPlaneOut (IN/OUT) Output YUV420 planar 458 * @param pProgress (IN/OUT) Progress indication (0-100) 459 * @param uiEffectKind (IN) Unused 460 * 461 * @return M4VIFI_OK: No error 462 * @return M4ERR_PARAMETER: pFiftiesData, pPlaneOut or pProgress are NULL (DEBUG only) 463 ****************************************************************************** 464 */ 465 M4OSA_ERR M4VSS3GPP_externalVideoEffectFifties 466 ( 467 M4OSA_Void *pUserData, 468 M4VIFI_ImagePlane *pInputPlanes, 469 M4VIFI_ImagePlane *pPlaneOut, 470 M4VSS3GPP_ExternalProgress *pProgress, 471 M4OSA_UInt32 uiEffectKind 472 ); 473 474 475 /** 476 ****************************************************************************** 477 * prototype M4VSS3GPP_externalVideoEffectZoom(M4OSA_Void *pFunctionContext, 478 * M4VIFI_ImagePlane *PlaneIn, 479 * M4VIFI_ImagePlane *PlaneOut, 480 * M4VSS3GPP_ExternalProgress *pProgress, 481 * M4OSA_UInt32 uiEffectKind) 482 * 483 * @brief This function add a fixed or animated image on an input YUV420 planar frame 484 * @note The prototype of this effect function is exposed because it needs to 485 * called by the VPS during the preview 486 * @param pFunctionContext(IN) Contains which zoom to apply (In/Out) 487 * @param PlaneIn (IN) Input YUV420 planar 488 * @param PlaneOut (IN/OUT) Output YUV420 planar 489 * @param pProgress (IN/OUT) Progress indication (0-100) 490 * @param uiEffectKind (IN) Unused 491 * 492 * @return M4VIFI_OK: No error 493 ****************************************************************************** 494 */ 495 M4OSA_ERR M4VSS3GPP_externalVideoEffectZoom 496 ( 497 M4OSA_Void *pFunctionContext, 498 M4VIFI_ImagePlane *pInputPlanes, 499 M4VIFI_ImagePlane *pOutputPlanes, 500 M4VSS3GPP_ExternalProgress *pProgress, 501 M4OSA_UInt32 uiEffectKind 502 ); 503 504 /** 505 ****************************************************************************** 506 * M4OSA_ERR M4xVSS_CreateClipSettings() 507 * @brief Allows filling a clip settings structure with default values 508 * 509 * @note WARNING: pClipSettings->Effects[ ] will be allocated in this function. 510 * pClipSettings->pFile will be allocated in this function. 511 * 512 * @param pClipSettings (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure 513 * @param pFile (IN) Clip file name 514 * @param filePathSize (IN) Size of the clip path (needed for the UTF16 conversion) 515 * @param nbEffects (IN) Nb of effect settings to allocate 516 * @return M4NO_ERROR: No error 517 * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) 518 ****************************************************************************** 519 */ 520 M4OSA_ERR M4xVSS_CreateClipSettings(M4VSS3GPP_ClipSettings *pClipSettings, M4OSA_Void* pFile, 521 M4OSA_UInt32 filePathSize, M4OSA_UInt8 nbEffects); 522 523 /** 524 ****************************************************************************** 525 * M4OSA_ERR M4xVSS_DuplicateClipSettings() 526 * @brief Duplicates a clip settings structure, performing allocations if required 527 * 528 * @param pClipSettingsDest (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure 529 * @param pClipSettingsOrig (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure 530 * @param bCopyEffects (IN) Flag to know if we have to duplicate effects 531 * @return M4NO_ERROR: No error 532 * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) 533 ****************************************************************************** 534 */ 535 M4OSA_ERR M4xVSS_DuplicateClipSettings(M4VSS3GPP_ClipSettings *pClipSettingsDest, 536 M4VSS3GPP_ClipSettings *pClipSettingsOrig, 537 M4OSA_Bool bCopyEffects); 538 539 /** 540 ****************************************************************************** 541 * M4OSA_ERR M4xVSS_FreeClipSettings() 542 * @brief Free the pointers allocated in the ClipSetting structure (pFile, Effects). 543 * 544 * @param pClipSettings (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure 545 * @return M4NO_ERROR: No error 546 * @return M4ERR_PARAMETER: pClipSettings is M4OSA_NULL (debug only) 547 ****************************************************************************** 548 */ 549 M4OSA_ERR M4xVSS_FreeClipSettings(M4VSS3GPP_ClipSettings *pClipSettings); 550 551 /** 552 ****************************************************************************** 553 * prototype M4OSA_ERR M4xVSS_getMCSContext(M4OSA_Context pContext, M4OSA_Context* mcsContext) 554 * @brief This function returns the MCS context within the xVSS internal context 555 * @note This function must be called only after VSS state has moved to analyzing state 556 * or beyond 557 * 558 * @param pContext (IN) Pointer on the xVSS edit context 559 * @param mcsContext (OUT) Pointer to pointer of mcs context to return 560 * @return M4NO_ERROR: No error 561 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 562 * @return M4ERR_STATE: This function cannot not be called at this time 563 ****************************************************************************** 564 */ 565 M4OSA_ERR M4xVSS_getMCSContext(M4OSA_Context pContext, M4OSA_Context* mcsContext); 566 567 /** 568 ****************************************************************************** 569 * prototype M4OSA_ERR M4xVSS_getVSS3GPPContext(M4OSA_Context pContext, 570 * M4OSA_Context* mcsContext) 571 * @brief This function returns the VSS3GPP context within the xVSS internal context 572 * @note This function must be called only after VSS state has moved to Generating 573 * preview or beyond 574 * 575 * @param pContext (IN) Pointer on the xVSS edit context 576 * @param vss3gppContext (OUT) Pointer to pointer of vss3gpp context to return 577 * @return M4NO_ERROR: No error 578 * @return M4ERR_PARAMETER: At least one parameter is M4OSA_NULL 579 * @return M4ERR_STATE: This function cannot not be called at this time 580 ****************************************************************************** 581 */ 582 M4OSA_ERR M4xVSS_getVSS3GPPContext(M4OSA_Context pContext, M4OSA_Context* vss3gppContext); 583 584 // Get supported video decoders and capabilities. 585 M4OSA_ERR M4xVSS_getVideoDecoderCapabilities(M4DECODER_VideoDecoders **decoders); 586 #ifdef __cplusplus 587 } 588 #endif /* __cplusplus */ 589 #endif /* __M4XVSS_API_H__ */ 590 591