Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (c) 2010 The Khronos Group Inc.
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining
      5  * a copy of this software and associated documentation files (the
      6  * "Software"), to deal in the Software without restriction, including
      7  * without limitation the rights to use, copy, modify, merge, publish,
      8  * distribute, sublicense, and/or sell copies of the Software, and to
      9  * permit persons to whom the Software is furnished to do so, subject
     10  * to the following conditions:
     11  * The above copyright notice and this permission notice shall be included
     12  * in all copies or substantial portions of the Software.
     13  *
     14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     16  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
     17  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
     18  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     19  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     20  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     21  *
     22  */
     23 
     24 /** OMX_VideoExt.h - OpenMax IL version 1.1.2
     25  * The OMX_VideoExt header file contains extensions to the
     26  * definitions used by both the application and the component to
     27  * access video items.
     28  */
     29 
     30 #ifndef OMX_VideoExt_h
     31 #define OMX_VideoExt_h
     32 
     33 #ifdef __cplusplus
     34 extern "C" {
     35 #endif /* __cplusplus */
     36 
     37 /* Each OMX header shall include all required header files to allow the
     38  * header to compile without errors.  The includes below are required
     39  * for this header file to compile successfully
     40  */
     41 #include <OMX_Core.h>
     42 #include <OMX_Video.h>
     43 
     44 /** NALU Formats */
     45 typedef enum OMX_NALUFORMATSTYPE {
     46     OMX_NaluFormatStartCodes = 1,
     47     OMX_NaluFormatOneNaluPerBuffer = 2,
     48     OMX_NaluFormatOneByteInterleaveLength = 4,
     49     OMX_NaluFormatTwoByteInterleaveLength = 8,
     50     OMX_NaluFormatFourByteInterleaveLength = 16,
     51     OMX_NaluFormatCodingMax = 0x7FFFFFFF
     52 } OMX_NALUFORMATSTYPE;
     53 
     54 /** NAL Stream Format */
     55 typedef struct OMX_NALSTREAMFORMATTYPE{
     56     OMX_U32 nSize;
     57     OMX_VERSIONTYPE nVersion;
     58     OMX_U32 nPortIndex;
     59     OMX_NALUFORMATSTYPE eNaluFormat;
     60 } OMX_NALSTREAMFORMATTYPE;
     61 
     62 /** Enum for standard video codingtype extensions */
     63 typedef enum OMX_VIDEO_CODINGEXTTYPE {
     64     OMX_VIDEO_ExtCodingUnused = OMX_VIDEO_CodingKhronosExtensions,
     65     OMX_VIDEO_CodingVP8,        /**< VP8/WebM */
     66 } OMX_VIDEO_CODINGEXTTYPE;
     67 
     68 /** VP8 profiles */
     69 typedef enum OMX_VIDEO_VP8PROFILETYPE {
     70     OMX_VIDEO_VP8ProfileMain = 0x01,
     71     OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF,
     72     OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF
     73 } OMX_VIDEO_VP8PROFILETYPE;
     74 
     75 /** VP8 levels */
     76 typedef enum OMX_VIDEO_VP8LEVELTYPE {
     77     OMX_VIDEO_VP8Level_Version0 = 0x01,
     78     OMX_VIDEO_VP8Level_Version1 = 0x02,
     79     OMX_VIDEO_VP8Level_Version2 = 0x04,
     80     OMX_VIDEO_VP8Level_Version3 = 0x08,
     81     OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF,
     82     OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF
     83 } OMX_VIDEO_VP8LEVELTYPE;
     84 
     85 /** VP8 Param */
     86 typedef struct OMX_VIDEO_PARAM_VP8TYPE {
     87     OMX_U32 nSize;
     88     OMX_VERSIONTYPE nVersion;
     89     OMX_U32 nPortIndex;
     90     OMX_VIDEO_VP8PROFILETYPE eProfile;
     91     OMX_VIDEO_VP8LEVELTYPE eLevel;
     92     OMX_U32 nDCTPartitions;
     93     OMX_BOOL bErrorResilientMode;
     94 } OMX_VIDEO_PARAM_VP8TYPE;
     95 
     96 /** Structure for configuring VP8 reference frames */
     97 typedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE {
     98     OMX_U32 nSize;
     99     OMX_VERSIONTYPE nVersion;
    100     OMX_U32 nPortIndex;
    101     OMX_BOOL bPreviousFrameRefresh;
    102     OMX_BOOL bGoldenFrameRefresh;
    103     OMX_BOOL bAlternateFrameRefresh;
    104     OMX_BOOL bUsePreviousFrame;
    105     OMX_BOOL bUseGoldenFrame;
    106     OMX_BOOL bUseAlternateFrame;
    107 } OMX_VIDEO_VP8REFERENCEFRAMETYPE;
    108 
    109 /** Structure for querying VP8 reference frame type */
    110 typedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE {
    111     OMX_U32 nSize;
    112     OMX_VERSIONTYPE nVersion;
    113     OMX_U32 nPortIndex;
    114     OMX_BOOL bIsIntraFrame;
    115     OMX_BOOL bIsGoldenOrAlternateFrame;
    116 } OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE;
    117 
    118 
    119 #ifdef __cplusplus
    120 }
    121 #endif /* __cplusplus */
    122 
    123 #endif /* OMX_VideoExt_h */
    124 /* File EOF */
    125