Skip to content

Commit 077c8d4

Browse files
committed
feat(ffmpeg): add support for libavutil common and pixelutils headers
- Add new type AVPixelutilsSadFn for av_pixelutils_sad_fn function pointer - Implement new array conversion functions for signed integer types (ToInt8Array, ToInt16Array, ToInt32Array) - Add support for common utility functions from libavutil (AVLog2, AVClipC, AVSatAdd32C, etc.) - Include libavutil/common.h and libavutil/pixelutils.h in generator configuration - Add primType mappings for int8_t to enable proper code generation
1 parent fe8f6d0 commit 077c8d4

8 files changed

Lines changed: 441 additions & 5 deletions

File tree

callbacks.gen.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import "unsafe"
3939
// #include <libavutil/camellia.h>
4040
// #include <libavutil/cast5.h>
4141
// #include <libavutil/channel_layout.h>
42+
// #include <libavutil/common.h>
4243
// #include <libavutil/container_fifo.h>
4344
// #include <libavutil/cpu.h>
4445
// #include <libavutil/crc.h>
@@ -77,6 +78,7 @@ import "unsafe"
7778
// #include <libavutil/murmur3.h>
7879
// #include <libavutil/opt.h>
7980
// #include <libavutil/parseutils.h>
81+
// #include <libavutil/pixelutils.h>
8082
// #include <libavutil/pixfmt.h>
8183
// #include <libavutil/random_seed.h>
8284
// #include <libavutil/rational.h>
@@ -131,5 +133,8 @@ type AVCspEotfFunction unsafe.Pointer
131133
// AVFifocb is a function pointer typedef for AVFifoCB.
132134
type AVFifocb unsafe.Pointer
133135

136+
// AVPixelutilsSadFn is a function pointer typedef for av_pixelutils_sad_fn.
137+
type AVPixelutilsSadFn unsafe.Pointer
138+
134139
// AVTxFn is a function pointer typedef for av_tx_fn.
135140
type AVTxFn unsafe.Pointer

constants.gen.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ package ffmpeg
3737
// #include <libavutil/camellia.h>
3838
// #include <libavutil/cast5.h>
3939
// #include <libavutil/channel_layout.h>
40+
// #include <libavutil/common.h>
4041
// #include <libavutil/container_fifo.h>
4142
// #include <libavutil/cpu.h>
4243
// #include <libavutil/crc.h>
@@ -75,6 +76,7 @@ package ffmpeg
7576
// #include <libavutil/murmur3.h>
7677
// #include <libavutil/opt.h>
7778
// #include <libavutil/parseutils.h>
79+
// #include <libavutil/pixelutils.h>
7880
// #include <libavutil/pixfmt.h>
7981
// #include <libavutil/random_seed.h>
8082
// #include <libavutil/rational.h>

enums.gen.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import "unsafe"
3939
// #include <libavutil/camellia.h>
4040
// #include <libavutil/cast5.h>
4141
// #include <libavutil/channel_layout.h>
42+
// #include <libavutil/common.h>
4243
// #include <libavutil/container_fifo.h>
4344
// #include <libavutil/cpu.h>
4445
// #include <libavutil/crc.h>
@@ -77,6 +78,7 @@ import "unsafe"
7778
// #include <libavutil/murmur3.h>
7879
// #include <libavutil/opt.h>
7980
// #include <libavutil/parseutils.h>
81+
// #include <libavutil/pixelutils.h>
8082
// #include <libavutil/pixfmt.h>
8183
// #include <libavutil/random_seed.h>
8284
// #include <libavutil/rational.h>

ffmpeg.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,25 @@ func ToUint8Array(ptr unsafe.Pointer) *Array[uint8] {
251251
}
252252
}
253253

254+
func ToInt8Array(ptr unsafe.Pointer) *Array[int8] {
255+
if ptr == nil {
256+
return nil
257+
}
258+
259+
return &Array[int8]{
260+
elemSize: int8Size,
261+
loadPtr: func(pointer unsafe.Pointer) int8 {
262+
ptr := (*C.int8_t)(pointer)
263+
return int8(*ptr)
264+
},
265+
ptr: ptr,
266+
storePtr: func(pointer unsafe.Pointer, value int8) {
267+
ptr := (*C.int8_t)(pointer)
268+
*ptr = C.int8_t(value)
269+
},
270+
}
271+
}
272+
254273
func ToUint16Array(ptr unsafe.Pointer) *Array[uint16] {
255274
if ptr == nil {
256275
return nil
@@ -270,6 +289,25 @@ func ToUint16Array(ptr unsafe.Pointer) *Array[uint16] {
270289
}
271290
}
272291

292+
func ToInt16Array(ptr unsafe.Pointer) *Array[int16] {
293+
if ptr == nil {
294+
return nil
295+
}
296+
297+
return &Array[int16]{
298+
elemSize: int16Size,
299+
loadPtr: func(pointer unsafe.Pointer) int16 {
300+
ptr := (*C.int16_t)(pointer)
301+
return int16(*ptr)
302+
},
303+
ptr: ptr,
304+
storePtr: func(pointer unsafe.Pointer, value int16) {
305+
ptr := (*C.int16_t)(pointer)
306+
*ptr = C.int16_t(value)
307+
},
308+
}
309+
}
310+
273311
func ToUint32Array(ptr unsafe.Pointer) *Array[uint32] {
274312
if ptr == nil {
275313
return nil
@@ -289,6 +327,25 @@ func ToUint32Array(ptr unsafe.Pointer) *Array[uint32] {
289327
}
290328
}
291329

330+
func ToInt32Array(ptr unsafe.Pointer) *Array[int32] {
331+
if ptr == nil {
332+
return nil
333+
}
334+
335+
return &Array[int32]{
336+
elemSize: intSize,
337+
loadPtr: func(pointer unsafe.Pointer) int32 {
338+
ptr := (*C.int32_t)(pointer)
339+
return int32(*ptr)
340+
},
341+
ptr: ptr,
342+
storePtr: func(pointer unsafe.Pointer, value int32) {
343+
ptr := (*C.int32_t)(pointer)
344+
*ptr = C.int32_t(value)
345+
},
346+
}
347+
}
348+
292349
func ToInt64Array(ptr unsafe.Pointer) *Array[int64] {
293350
if ptr == nil {
294351
return nil

0 commit comments

Comments
 (0)