1 /*@@@+++@@@@******************************************************************
2 
3  Microsoft Skype Engineering
4  Copyright (C) 2014 Microsoft Corporation.
5 
6 MIT License
7 
8 Permission is hereby granted, free of charge, to any person obtaining a copy
9  of this software and associated documentation files (the "Software"), to deal
10  in the Software without restriction, including without limitation the rights
11  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12  copies of the Software, and to permit persons to whom the Software is
13  furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24  THE SOFTWARE.
25 
26 *@@@---@@@@******************************************************************/
27 
28 
29 #ifndef __OMX_SKYPE_VIDEOEXTENSIONS_H__
30 #define __OMX_SKYPE_VIDEOEXTENSIONS_H__
31 
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
37 #include <OMX_Core.h>
38 
39 #pragma pack(push, 1)
40 
41 
42 typedef enum OMX_SKYPE_VIDEO_SliceControlMode
43 {
44     OMX_SKYPE_VIDEO_SliceControlModeNone        = 0,
45     OMX_SKYPE_VIDEO_SliceControlModeMB          = 1,
46     OMX_SKYPE_VIDEO_SliceControlModeByte        = 2,
47     OMX_SKYPE_VIDEO_SliceControlModMBRow        = 3,
48 } OMX_SKYPE_VIDEO_SliceControlMode;
49 
50 
51 typedef enum OMX_SKYPE_VIDEO_HierarType
52 {
53     OMX_SKYPE_VIDEO_HierarType_P                = 0x01,
54     OMX_SKYPE_VIDEO_HierarType_B                = 0x02,
55 } OMX_SKYPE_VIDEO_HIERAR_HierarType;
56 
57 typedef enum OMX_VIDEO_EXTENSION_AVCPROFILETYPE
58 {
59     OMX_VIDEO_EXT_AVCProfileConstrainedBaseline = 0x01,
60     OMX_VIDEO_EXT_AVCProfileConstrainedHigh     = 0x02,
61 } OMX_VIDEO_EXTENSION_AVCPROFILETYPE;
62 
63 typedef struct OMX_SKYPE_VIDEO_ENCODERPARAMS {
64     OMX_BOOL bLowLatency;
65     OMX_BOOL bUseExtendedProfile;
66     OMX_BOOL bSequenceHeaderWithIDR;
67     OMX_VIDEO_EXTENSION_AVCPROFILETYPE eProfile;
68     OMX_U32 nLTRFrames;
69     OMX_SKYPE_VIDEO_HierarType eHierarType;
70     OMX_U32 nMaxTemporalLayerCount;
71     OMX_SKYPE_VIDEO_SliceControlMode eSliceControlMode;
72     OMX_U32 nSarIndex;
73     OMX_U32 nSarWidth;
74     OMX_U32 nSarHeight;
75 } OMX_SKYPE_VIDEO_ENCODERPARAMS;
76 
77 typedef struct OMX_SKYPE_VIDEO_PARAM_ENCODERSETTING {
78     OMX_U32 nSize;
79     OMX_VERSIONTYPE nVersion;
80     OMX_U32 nPortIndex;
81     OMX_SKYPE_VIDEO_ENCODERPARAMS stEncParam;
82 } OMX_SKYPE_VIDEO_PARAM_ENCODESETTING;
83 
84 typedef struct OMX_SKYPE_VIDEO_ENCODERCAP {
85     OMX_BOOL bLowLatency;
86     OMX_U32 nMaxFrameWidth;
87     OMX_U32 nMaxFrameHeight;
88     OMX_U32 nMaxInstances;
89     OMX_U32 nMaxTemporaLayerCount;
90     OMX_U32 nMaxRefFrames;
91     OMX_U32 nMaxLTRFrames;
92     OMX_VIDEO_AVCLEVELTYPE nMaxLevel;
93     OMX_U32 nSliceControlModesBM;
94     OMX_U32 nMaxMacroblockProcessingRate;
95     OMX_U32 xMinScaleFactor;
96 } OMX_SKYPE_VIDEO_ENCODERCAP;
97 
98 typedef struct OMX_SKYPE_VIDEO_PARAM_ENCODERCAP {
99     OMX_U32 nSize;
100     OMX_VERSIONTYPE nVersion;
101     OMX_U32 nPortIndex;
102     OMX_SKYPE_VIDEO_ENCODERCAP stEncCap;
103 } OMX_SKYPE_VIDEO_PARAM_ENCODERCAP;
104 
105 typedef struct OMX_SKYPE_VIDEO_DECODERCAP {
106     OMX_BOOL bLowLatency;
107     OMX_U32 nMaxFrameWidth;
108     OMX_U32 nMaxFrameHeight;
109     OMX_U32 nMaxInstances;
110     OMX_VIDEO_AVCLEVELTYPE nMaxLevel;
111     OMX_U32 nMaxMacroblockProcessingRate;
112 } OMX_SKYPE_VIDEO_DECODERCAP;
113 
114 typedef struct OMX_SKYPE_VIDEO_PARAM_DECODERCAP {
115     OMX_U32 nSize;
116     OMX_VERSIONTYPE nVersion;
117     OMX_U32 nPortIndex;
118     OMX_SKYPE_VIDEO_DECODERCAP stDecoderCap;
119 } OMX_SKYPE_VIDEO_PARAM_DECODERCAP;
120 
121 typedef struct OMX_SKYPE_VIDEO_CONFIG_QP {
122     OMX_U32 nSize;
123     OMX_VERSIONTYPE nVersion;
124     OMX_U32 nPortIndex;
125     OMX_U32 nQP;
126 } OMX_SKYPE_VIDEO_CONFIG_QP;
127 
128 typedef struct OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID{
129     OMX_U32 nSize;
130     OMX_VERSIONTYPE nVersion;
131     OMX_U32 nPortIndex;
132     OMX_U32 nPID;
133 } OMX_SKYPE_VIDEO_CONFIG_BASELAYERPID;
134 
135 typedef struct OMX_SKYPE_VIDEO_PARAM_DRIVERVER {
136     OMX_U32 nSize;
137     OMX_VERSIONTYPE nVersion;
138     OMX_U32 nPortIndex;
139     OMX_U64 nDriverVersion;
140 } OMX_SKYPE_VIDEO_PARAM_DRIVERVER;
141 
142 typedef enum OMX_SKYPE_VIDEO_DownScaleFactor
143 {
144     OMX_SKYPE_VIDEO_DownScaleFactor_1_1         = 0,
145     OMX_SKYPE_VIDEO_DownScaleFactor_Equal_AR    = 1,
146     OMX_SKYPE_VIDEO_DownScaleFactor_Any         = 2,
147 } OMX_SKYPE_VIDEO_DownScaleFactor;
148 
149 #pragma pack(pop)
150 
151 #ifdef __cplusplus
152 }
153 #endif
154 
155 #endif
156