CVB++ 15.0
c_codec_bridge.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include <cstddef>
8#include <cstdint>
9
10#include "../namespace.hpp"
11
12#include "c_img.h"
13
14namespace Cvb
15{
16
17 CVB_BEGIN_INLINE_NS
18
19 namespace CExports
20 {
21
22 typedef void* CVCBFORMATCONVERTER;
23 typedef void* CVCBCODECCONFIG;
24 typedef void* CVCBENCODER;
25 typedef void* CVCBDECODER;
26 typedef void* CVCBFRAME;
27 typedef void* CVCBPACKET;
28 typedef void* CVCBINPUTCONTAINER;
29 typedef void* CVCBOUTPUTCONTAINER;
30
31 enum CVCBLogLevel
32 {
33 CVCBLL_Quiet = -8,
34 CVCBLL_Panic = 0,
35 CVCBLL_Fatal = 8,
36 CVCBLL_Error = 16,
37 CVCBLL_Warning = 24,
38 CVCBLL_Info = 32,
39 CVCBLL_Verbose = 40,
40 CVCBLL_Debug = 48,
41 CVCBLL_Trace = 56,
42 };
43
44 enum CVCBPixelFormat
45 {
46 CVCBPF_None = -1,
47 CVCBPF_YUV420P = 0,
48 CVCBPF_YUYV422 = 1,
49 CVCBPF_RGB24 = 2,
50 CVCBPF_BGR24 = 3,
51 CVCBPF_YUV422P = 4,
52 CVCBPF_YUV444P = 5,
53 CVCBPF_GRAY8 = 8,
54 CVCBPF_NV12 = 23,
55 CVCBPF_NV21 = 24,
56 CVCBPF_RGBA = 26,
57 CVCBPF_BGRA = 28,
58 CVCBPF_YUV444P16LE = 49,
59 CVCBPF_DXVA2_VLD = 51,
60 CVCBPF_YUV420P10LE = 62,
61 CVCBPF_YUV422P10LE = 64,
62 CVCBPF_YUV444P10LE = 68,
63 CVCBPF_GBRP = 71,
64 CVCBPF_GBRP10LE = 75,
65 CVCBPF_GBRP16LE = 77,
66 CVCBPF_NV16 = 101,
67 CVCBPF_NV20LE = 102,
68 CVCBPF_QSV = 114,
69 CVCBPF_CUDA = 117,
70 CVCBPF_RGB0 = 119,
71 CVCBPF_BGR0 = 121,
72 CVCBPF_YUV420P12LE = 123,
73 CVCBPF_YUV422P12LE = 127,
74 CVCBPF_YUV444P12LE = 131,
75 CVCBPF_GBRP12LE = 135,
76 CVCBPF_P010LE = 159,
77 CVCBPF_GRAY12LE = 167,
78 CVCBPF_GRAY10LE = 169,
79 CVCBPF_P016LE = 170,
80 CVCBPF_D3D11 = 172,
81 CVCBPF_Y210LE = 193,
82 CVCBPF_X2RGB10LE = 194,
83 CVCBPF_X2BGR10LE = 196,
84 };
85
86 enum CVCBInterpolation
87 {
88 CVCBI_BilinearFast = 1,
89 CVCBI_Bilinear = 2,
90 CVCBI_Bicubic = 4,
91 };
92
93 enum CVCBCodecStatus
94 {
95 CVCBCS_Ok,
96 CVCBCS_ReadoutRequired
97 };
98
99 enum CVCBFrameProperty
100 {
101 CVCBFP_Width,
102 CVCBFP_Height,
103 CVCBFP_PixelFormat,
104 CVCBFP_SEIUserData,
105 CVCBFP_PresentationTimestamp,
106 CVCBFP_TimeBase,
107 };
108
109 enum CVCBCodecProperty
110 {
111 CVCBCP_Name,
112 CVCBCP_Width,
113 CVCBCP_Height,
114 CVCBCP_PixelFormat,
115 CVCBCP_Bitrate,
116 CVCBCP_GOPSize,
117 CVCBCP_MaxBFrames,
118 CVCBCP_TimeBase,
119 CVCBCP_StringOption,
120 CVCBCP_IntOption,
121 CVCBCP_DoubleOption,
122 CVCBCP_RationalOption,
123 CVCBCP_URL,
124 CVCBCP_SDP,
125 CVCBCP_JSON,
126 CVCBCP_ID
127 };
128
129 enum CVCBDecoderProperty
130 {
131 CVCBDP_StreamIndex
132 };
133
134 enum CVCBPacketProperty
135 {
136 CVCBPP_StreamIndex,
137 CVCBPP_PresentationTimestamp,
138 CVCBPP_TimeBase
139 };
140
141 struct CVCBRational
142 {
143 cvbdim_t Numerator = 0;
144 cvbdim_t Denominator = 1;
145 };
146
147 CVB_DEF_CAPI(cvbres_t, CVCBSetBackendLogLevel, (CVCBLogLevel LogLevel));
148
149 CVB_DEF_CAPI(cvbres_t, CVCBCreateFrame, (cvbdim_t Width, cvbdim_t Height, CVCBPixelFormat Format, void* Buffer, CVCBFRAME& Frame))
150 CVB_DEF_CAPI(cvbres_t, CVCBFrameGetProperty, (CVCBFRAME Frame, CVCBFrameProperty Property, void* Buffer, size_t& Size))
151 CVB_DEF_CAPI(cvbres_t, CVCBFrameSetProperty, (CVCBFRAME Frame, CVCBFrameProperty Property, void* Buffer, size_t Size))
152
153 CVB_DEF_CAPI(cvbres_t, CVCBCreateFormatConverter, (cvbdim_t WidthSrc, cvbdim_t HeightSrc, CVCBPixelFormat FormatSrc,
154 cvbdim_t WidthDst, cvbdim_t HeightDst, CVCBPixelFormat FormatDst,
155 CVCBInterpolation Interpolation, CVCBFORMATCONVERTER& FormatConverter))
156 CVB_DEF_CAPI(cvbres_t, CVCBFormatConverterExecute, (CVCBFORMATCONVERTER FormatConverter, CVCBFRAME FrameSrc, CVCBFRAME FrameDst))
157
158 CVB_DEF_CAPI(cvbres_t, CVCBCreateCodecConfig, (const char* Provider, CVCBCODECCONFIG& CodecConfig))
159 CVB_DEF_CAPI(cvbres_t, CVCBCreateCodecConfigW, (const wchar_t* Provider, CVCBCODECCONFIG& CodecConfig))
160
161 CVB_DEF_CAPI(cvbres_t, CVCBCodecConfigGetProperty, (CVCBCODECCONFIG CodecConfig, CVCBCodecProperty Property, void* Buffer, size_t& Size, const char* OptionName))
162 CVB_DEF_CAPI(cvbres_t, CVCBCodecConfigSetProperty, (CVCBCODECCONFIG CodecConfig, CVCBCodecProperty Property, void* Buffer, size_t Size, const char* OptionName))
163
164 CVB_DEF_CAPI(cvbres_t, CVCBCreateEncoder, (CVCBCODECCONFIG CodecConfig, CVCBENCODER& Encoder))
165 CVB_DEF_CAPI(cvbres_t, CVCBEncoderSendFrame, (CVCBENCODER Encoder, CVCBFRAME Frame, CVCBCodecStatus& CodecStatus))
166 CVB_DEF_CAPI(cvbres_t, CVCBEncoderReceivePacket, (CVCBENCODER Encoder, CVCBPACKET& Packet))
167
168
169 CVB_DEF_CAPI(cvbres_t, CVCBCreateOutputContainer, (CVCBENCODER Encoder, const char* FileName, CVCBOUTPUTCONTAINER& OutputContainer))
170 CVB_DEF_CAPI(cvbres_t, CVCBCreateOutputContainerW, (CVCBENCODER Encoder, const wchar_t* FileName, CVCBOUTPUTCONTAINER& OutputContainer))
171 CVB_DEF_CAPI(cvbres_t, CVCBOutputContainerWriteHeader, (CVCBOUTPUTCONTAINER OutputContainer))
172 CVB_DEF_CAPI(cvbres_t, CVCBOutputContainerWriteTrailer, (CVCBOUTPUTCONTAINER OutputContainer))
173 CVB_DEF_CAPI(cvbres_t, CVCBOutputContainerWritePacket, (CVCBOUTPUTCONTAINER OutputContainer, CVCBPACKET& Packet))
174
175 CVB_DEF_CAPI(cvbres_t, CVCBCreateInputContainer, (const char* FileName, CVCBINPUTCONTAINER& InputContainer))
176 CVB_DEF_CAPI(cvbres_t, CVCBCreateInputContainerW, (const wchar_t* FileName, CVCBINPUTCONTAINER& InputContainer))
177 CVB_DEF_CAPI(cvbres_t, CVCBInputContainerCreateDecoder,(CVCBINPUTCONTAINER InputContainer, const char* DecoderName, CVCBPixelFormat Format, CVCBDECODER& Decoder))
178 CVB_DEF_CAPI(cvbres_t, CVCBInputContainerNextPacket, (CVCBINPUTCONTAINER InputContainer, CVCBPACKET& Packet))
179
180 CVB_DEF_CAPI(cvbres_t, CVCBDecoderSendPacket, (CVCBDECODER Decoeder, CVCBPACKET Packet, CVCBCodecStatus& CodecStatus))
181 CVB_DEF_CAPI(cvbres_t, CVCBDecoderReceiveFrame, (CVCBDECODER Decoeder, CVCBFRAME& Frame))
182 CVB_DEF_CAPI(cvbres_t, CVCBDecoderGetProperty, (CVCBDECODER Decoder, CVCBDecoderProperty Property, void* Buffer, size_t& Size))
183
184 CVB_DEF_CAPI(cvbres_t, CVCBPacketGetProperty, (CVCBPACKET Packet, CVCBPacketProperty Property, void* Buffer, size_t& Size))
185
186
187 inline cvbres_t _ppCVCBCreateCodecConfigTyped(const char* Provider, CVCBCODECCONFIG& CodecConfig)
188 {
189 return CVCBCreateCodecConfig(Provider, CodecConfig);
190 }
191
192 inline cvbres_t _ppCVCBCreateCodecConfigTyped(const wchar_t* Provider, CVCBCODECCONFIG& CodecConfig)
193 {
194 return CVCBCreateCodecConfigW(Provider, CodecConfig);
195 }
196
197 inline cvbres_t _ppCVCBCreateOutputContainerTyped(CVCBENCODER Encoder, const char* FileName, CVCBOUTPUTCONTAINER& OutputContainer)
198 {
199 return CVCBCreateOutputContainer(Encoder, FileName, OutputContainer);
200 }
201
202 inline cvbres_t _ppCVCBCreateOutputContainerTyped(CVCBENCODER Encoder, const wchar_t* FileName, CVCBOUTPUTCONTAINER& OutputContainer)
203 {
204 return CVCBCreateOutputContainerW(Encoder, FileName, OutputContainer);
205 }
206
207 inline cvbres_t _ppCVCBCreateInputContainerTyped(const char* FileName, CVCBINPUTCONTAINER& InputContainer)
208 {
209 return CVCBCreateInputContainer(FileName, InputContainer);
210 }
211
212 inline cvbres_t _ppCVCBCreateInputContainerTyped(const wchar_t* FileName, CVCBINPUTCONTAINER& InputContainer)
213 {
214 return CVCBCreateInputContainerW(FileName, InputContainer);
215 }
216 }
217
218 CVB_END_INLINE_NS
219
220}
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17