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