00001 /* 00002 * Copyright (c) 2011, Texas Instruments Incorporated 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 00009 * * Redistributions of source code must retain the above copyright 00010 * notice, this list of conditions and the following disclaimer. 00011 * 00012 * * Redistributions in binary form must reproduce the above copyright 00013 * notice, this list of conditions and the following disclaimer in the 00014 * documentation and/or other materials provided with the distribution. 00015 * 00016 * * Neither the name of Texas Instruments Incorporated nor the names of 00017 * its contributors may be used to endorse or promote products derived 00018 * from this software without specific prior written permission. 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00021 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00022 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00023 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 00024 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 00027 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00028 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 00029 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 00030 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00031 * 00032 */ 00033 00047 #ifndef ti_xdais_dm_IVIDTRANSCODE_ 00048 #define ti_xdais_dm_IVIDTRANSCODE_ 00049 00050 #include <ti/xdais/ialg.h> 00051 #include <ti/xdais/xdas.h> 00052 #include "xdm.h" 00053 #include "ivideo.h" 00054 00055 #ifdef __cplusplus 00056 extern "C" { 00057 #endif 00058 00061 00062 #define IVIDTRANSCODE_EOK XDM_EOK 00063 #define IVIDTRANSCODE_EFAIL XDM_EFAIL 00064 #define IVIDTRANSCODE_EUNSUPPORTED XDM_EUNSUPPORTED 00066 #define IVIDTRANSCODE_MAXOUTSTREAMS 2 00072 typedef struct IVIDTRANSCODE_Obj { 00073 struct IVIDTRANSCODE_Fxns *fxns; 00074 } IVIDTRANSCODE_Obj; 00075 00076 00080 typedef struct IVIDTRANSCODE_Obj *IVIDTRANSCODE_Handle; 00081 00082 00089 typedef struct IVIDTRANSCODE_Params { 00090 XDAS_Int32 size; 00091 XDAS_Int32 numOutputStreams; 00096 XDAS_Int32 formatInput; 00104 XDAS_Int32 formatOutput[IVIDTRANSCODE_MAXOUTSTREAMS]; 00114 XDAS_Int32 maxHeightInput; 00115 XDAS_Int32 maxWidthInput; 00116 XDAS_Int32 maxFrameRateInput; 00121 XDAS_Int32 maxBitRateInput; 00125 XDAS_Int32 maxHeightOutput[IVIDTRANSCODE_MAXOUTSTREAMS]; 00128 XDAS_Int32 maxWidthOutput[IVIDTRANSCODE_MAXOUTSTREAMS]; 00131 XDAS_Int32 maxFrameRateOutput[IVIDTRANSCODE_MAXOUTSTREAMS]; 00138 XDAS_Int32 maxBitRateOutput[IVIDTRANSCODE_MAXOUTSTREAMS]; 00145 XDAS_Int32 dataEndianness; 00149 } IVIDTRANSCODE_Params; 00150 00151 00166 typedef struct IVIDTRANSCODE_DynamicParams { 00167 XDAS_Int32 size; 00168 XDAS_Int32 readHeaderOnlyFlag; 00174 XDAS_Int32 keepInputResolutionFlag[IVIDTRANSCODE_MAXOUTSTREAMS]; 00183 XDAS_Int32 outputHeight[IVIDTRANSCODE_MAXOUTSTREAMS]; 00192 XDAS_Int32 outputWidth[IVIDTRANSCODE_MAXOUTSTREAMS]; 00201 XDAS_Int32 keepInputFrameRateFlag[IVIDTRANSCODE_MAXOUTSTREAMS]; 00209 XDAS_Int32 inputFrameRate; 00220 XDAS_Int32 outputFrameRate[IVIDTRANSCODE_MAXOUTSTREAMS]; 00232 XDAS_Int32 targetBitRate[IVIDTRANSCODE_MAXOUTSTREAMS]; 00236 XDAS_Int32 rateControl[IVIDTRANSCODE_MAXOUTSTREAMS]; 00242 XDAS_Int32 keepInputGOPFlag[IVIDTRANSCODE_MAXOUTSTREAMS]; 00249 XDAS_Int32 intraFrameInterval[IVIDTRANSCODE_MAXOUTSTREAMS]; 00266 XDAS_Int32 interFrameInterval[IVIDTRANSCODE_MAXOUTSTREAMS]; 00286 XDAS_Int32 forceFrame[IVIDTRANSCODE_MAXOUTSTREAMS]; 00310 XDAS_Int32 frameSkipTranscodeFlag[IVIDTRANSCODE_MAXOUTSTREAMS]; 00323 } IVIDTRANSCODE_DynamicParams; 00324 00325 00334 typedef struct IVIDTRANSCODE_InArgs { 00335 XDAS_Int32 size; 00336 XDAS_Int32 numBytes; 00339 XDAS_Int32 inputID; 00344 } IVIDTRANSCODE_InArgs; 00345 00346 00354 typedef struct IVIDTRANSCODE_Status { 00355 XDAS_Int32 size; 00356 XDAS_Int32 extendedError; 00357 XDM1_SingleBufDesc data; 00378 XDM_AlgBufInfo bufInfo; 00390 } IVIDTRANSCODE_Status; 00391 00392 00401 typedef struct IVIDTRANSCODE_OutArgs { 00402 XDAS_Int32 size; 00403 XDAS_Int32 extendedError; 00404 XDAS_Int32 bitsConsumed; 00407 XDAS_Int32 bitsGenerated[IVIDTRANSCODE_MAXOUTSTREAMS]; 00412 XDAS_Int32 decodedPictureType; 00416 XDAS_Int32 decodedPictureStructure; 00420 XDAS_Int32 encodedPictureType[IVIDTRANSCODE_MAXOUTSTREAMS]; 00425 XDAS_Int32 encodedPictureStructure[IVIDTRANSCODE_MAXOUTSTREAMS]; 00431 XDAS_Int32 decodedHeight; 00432 XDAS_Int32 decodedWidth; 00433 XDAS_Int32 outputID[IVIDTRANSCODE_MAXOUTSTREAMS]; 00446 XDAS_Int32 inputFrameSkipTranscodeFlag[IVIDTRANSCODE_MAXOUTSTREAMS]; 00454 XDM1_SingleBufDesc encodedBuf[IVIDTRANSCODE_MAXOUTSTREAMS]; 00460 XDAS_Int32 outBufsInUseFlag; 00470 } IVIDTRANSCODE_OutArgs; 00471 00472 00483 typedef IALG_Cmd IVIDTRANSCODE_Cmd; 00484 00485 00489 typedef struct IVIDTRANSCODE_Fxns { 00490 IALG_Fxns ialg; 00559 XDAS_Int32 (*process)(IVIDTRANSCODE_Handle handle, XDM1_BufDesc *inBufs, 00560 XDM_BufDesc *outBufs, IVIDTRANSCODE_InArgs *inArgs, 00561 IVIDTRANSCODE_OutArgs *outArgs); 00562 00563 00599 XDAS_Int32 (*control)(IVIDTRANSCODE_Handle handle, IVIDTRANSCODE_Cmd id, 00600 IVIDTRANSCODE_DynamicParams *params, IVIDTRANSCODE_Status *status); 00601 00602 } IVIDTRANSCODE_Fxns; 00603 00604 00607 #ifdef __cplusplus 00608 } 00609 #endif 00610 00611 #endif 00612 /* 00613 * @(#) ti.xdais.dm; 1, 0, 7,7; 6-14-2011 10:34:32; /db/wtree/library/trees/dais/dais.git/src/ dais-u02 00614 */ 00615