1/*@@@+++@@@@******************************************************************
2
3 Microsoft Skype Engineering
4 Copyright (C) 2014 Microsoft Corporation.
5
6MIT License
7
8Permission 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
15The above copyright notice and this permission notice shall be included in
16 all copies or substantial portions of the Software.
17
18THE 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
33extern "C"
34{
35#endif
36
37#include <OMX_Core.h>
38
39#pragma pack(push, 1)
40
41
42typedef 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
51typedef 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
57typedef enum OMX_VIDEO_EXTENSION_AVCPROFILETYPE
58{
59    OMX_VIDEO_EXT_AVCProfileConstrainedBaseline = 0x01,
60    OMX_VIDEO_EXT_AVCProfileConstrainedHigh     = 0x02,
61} OMX_VIDEO_EXTENSION_AVCPROFILETYPE;
62
63typedef 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
77typedef 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
84typedef 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
98typedef 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
105typedef 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
114typedef 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
121typedef 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
128typedef 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
135typedef 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
142typedef 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