-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparameters.go
262 lines (217 loc) · 6.07 KB
/
parameters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
package mmal
/*
#include <stdlib.h>
#include <string.h>
#include <interface/mmal/mmal.h>
#include <interface/mmal/mmal_parameters.h>
*/
import "C"
//go:generate go run internal/paragen/paragen.go
import (
"unsafe"
)
type Parameter interface {
header() unsafe.Pointer
}
type ParameterChangeEventRequest _parameterChangeEventRequest
type ParameterZeroCopy _parameterBoolean
type ParameterBufferRequirements _parameterBufferRequirements
type ParameterStatistics _parameterStatistics
type ParameterCoreStatistics _parameterCoreStatistics
type ParameterMemUsage _parameterMemUsage
type ParameterBufferFlagFilter _parameterUint32
type ParameterSeek _parameterSeek
type ParameterPowermonEnable _parameterBoolean
type ParameterLogging _parameterLogging
type ParameterSystemTime _parameterUint64
type ParameterNoImagePadding _parameterBoolean
type ParameterLockstepEnable _parameterBoolean
type ParameterURI struct {
raw parameterURI
}
type ParameterSupportedEncodings struct {
raw parameterEncoding
}
type _parameterHeader struct {
id uint32 // Parameter ID.
size uint32 // Size in bytes of the _parameter (including the header)
}
type _parameterBoolean struct {
hdr _parameterHeader
Enable int32
}
type _parameterBufferRequirements struct {
hdr _parameterHeader
BufferNumMin uint32
BufferSizeMin uint32
BufferAlignmentMin uint32
BufferNumRecommended uint32
BufferSizeRecommended uint32
}
type _parameterBytes struct {
hdr _parameterHeader
data [1]byte
_ [3]byte
}
type _parameterChangeEventRequest struct {
hdr _parameterHeader
ChangeID uint32
Enable int32
}
type _parameterConfigfileChunk struct {
hdr _parameterHeader
Size uint32
Offset uint32
data [1]byte
_ [3]byte
}
type _parameterConfigfile struct {
hdr _parameterHeader
FileSize uint32
}
type CoreStatsDir uint32
const (
CoreStatsRx CoreStatsDir = iota
CoreStatsTx
CoreStatsMax = 0x7fffffff /* Force 32 bit size for this enum */
)
type _parameterCoreStatistics struct {
hdr _parameterHeader
Dir CoreStatsDir
Reset int32
Stats CoreStatistics
}
type _parameterEncoding struct {
hdr _parameterHeader
encoding [1]uint32
}
type _parameterFrameRate struct {
hdr _parameterHeader
FrameRate Rational
}
type _parameterInt32 struct {
hdr _parameterHeader
Value int32
}
type _parameterInt64 struct {
hdr _parameterHeader
Value int64
}
type _parameterLogging struct {
hdr _parameterHeader
Set uint32
Clear uint32
}
type _parameterMemUsage struct {
hdr _parameterHeader
PoolMemAllocSize uint32
}
type ParamMirror uint32
const (
ParamMirrorNone ParamMirror = iota
ParamMirrorVertical
ParamMirrorHorizontal
ParamMirrorBoth
)
type _parameterMirror struct {
hdr _parameterHeader
Value ParamMirror
}
type _parameterRational struct {
hdr _parameterHeader
Value Rational
}
type _parameterScalefactor struct {
hdr _parameterHeader
ScaleX uint32
ScaleY uint32
}
type _parameterSeek struct {
hdr _parameterHeader
Offset int64
Flags uint32
_ [4]byte
}
type _parameterStatistics struct {
hdr _parameterHeader
BufferCount uint32
FrameCount uint32
FramesSkipped uint32
FramesDiscarded uint32
EOSSeen uint32
MaximumFrameBytes uint32
TotalBytes int64
CorruptMacroblocks uint32
_ [4]byte
}
type _parameterString struct {
hdr _parameterHeader
str [1]byte
_ [3]byte
}
type _parameterUint32 struct {
hdr _parameterHeader
Value uint32
}
type _parameterUint64 struct {
hdr _parameterHeader
Value uint64
}
type _parameterURI struct {
hdr _parameterHeader
uri [1]byte
_ [3]byte
}
// Allocated parameters
type parameterURI []byte
func (p parameterURI) string() string {
ptr := unsafe.Pointer(uintptr(unsafe.Pointer(&p[0])) + unsafe.Offsetof(_parameterURI{}.uri))
return C.GoString((*C.char)(ptr))
}
func newParameterURIString(s string) parameterURI {
return newParameterURISlice(append([]byte(s), 0))
}
type parameterEncoding []byte
func (p *ParameterSupportedEncodings) Data() []uint32 {
return p.raw.data()
}
func NewParameterSupportedEncodings(ln int) *ParameterSupportedEncodings {
return &ParameterSupportedEncodings{newParameterEncoding(ln)}
}
func NewParameterSupportedEncodingsSlice(data []uint32) *ParameterSupportedEncodings {
return &ParameterSupportedEncodings{newParameterEncodingSlice(data)}
}
func (p *ParameterURI) String() string {
return p.raw.string()
}
func NewParameterURI(ln int) *ParameterURI {
return &ParameterURI{newParameterURI(ln)}
}
func NewParameterURIString(s string) *ParameterURI {
return &ParameterURI{newParameterURIString(s)}
}
// for sizeof and alignof test
type _MMAL_PARAMETER_HEADER_T C.MMAL_PARAMETER_HEADER_T
type _MMAL_PARAMETER_UINT64_T C.MMAL_PARAMETER_UINT64_T
type _MMAL_PARAMETER_INT64_T C.MMAL_PARAMETER_INT64_T
type _MMAL_PARAMETER_UINT32_T C.MMAL_PARAMETER_UINT32_T
type _MMAL_PARAMETER_INT32_T C.MMAL_PARAMETER_INT32_T
type _MMAL_PARAMETER_RATIONAL_T C.MMAL_PARAMETER_RATIONAL_T
type _MMAL_PARAMETER_BOOLEAN_T C.MMAL_PARAMETER_BOOLEAN_T
type _MMAL_PARAMETER_STRING_T C.MMAL_PARAMETER_STRING_T
type _MMAL_PARAMETER_BYTES_T C.MMAL_PARAMETER_BYTES_T
type _MMAL_PARAMETER_SCALEFACTOR_T C.MMAL_PARAMETER_SCALEFACTOR_T
type _MMAL_PARAM_MIRROR_T C.MMAL_PARAM_MIRROR_T
type _MMAL_PARAMETER_MIRROR_T C.MMAL_PARAMETER_MIRROR_T
type _MMAL_PARAMETER_URI_T C.MMAL_PARAMETER_URI_T
type _MMAL_PARAMETER_ENCODING_T C.MMAL_PARAMETER_ENCODING_T
type _MMAL_PARAMETER_FRAME_RATE_T C.MMAL_PARAMETER_FRAME_RATE_T
type _MMAL_PARAMETER_CONFIGFILE_T C.MMAL_PARAMETER_CONFIGFILE_T
type _MMAL_PARAMETER_CONFIGFILE_CHUNK_T C.MMAL_PARAMETER_CONFIGFILE_CHUNK_T
type _MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T C.MMAL_PARAMETER_CHANGE_EVENT_REQUEST_T
type _MMAL_PARAMETER_BUFFER_REQUIREMENTS_T C.MMAL_PARAMETER_BUFFER_REQUIREMENTS_T
type _MMAL_PARAMETER_SEEK_T C.MMAL_PARAMETER_SEEK_T
type _MMAL_PARAMETER_STATISTICS_T C.MMAL_PARAMETER_STATISTICS_T
type _MMAL_PARAMETER_CORE_STATISTICS_T C.MMAL_PARAMETER_CORE_STATISTICS_T
type _MMAL_PARAMETER_MEM_USAGE_T C.MMAL_PARAMETER_MEM_USAGE_T
type _MMAL_PARAMETER_LOGGING_T C.MMAL_PARAMETER_LOGGING_T