mirror of
https://github.com/asticode/go-astiav.git
synced 2024-05-28 13:53:18 +08:00
37 lines
771 B
Go
37 lines
771 B
Go
package astiav
|
|
|
|
//#cgo pkg-config: libavutil
|
|
//#include <libavutil/frame.h>
|
|
import "C"
|
|
import (
|
|
"math"
|
|
"unsafe"
|
|
)
|
|
|
|
// https://github.com/FFmpeg/FFmpeg/blob/n5.0/libavutil/frame.h#L223
|
|
type FrameSideData struct {
|
|
c *C.struct_AVFrameSideData
|
|
}
|
|
|
|
func newFrameSideDataFromC(c *C.struct_AVFrameSideData) *FrameSideData {
|
|
if c == nil {
|
|
return nil
|
|
}
|
|
return &FrameSideData{c: c}
|
|
}
|
|
|
|
func (d *FrameSideData) Data() []byte {
|
|
return bytesFromC(func(size *C.size_t) *C.uint8_t {
|
|
*size = d.c.size
|
|
return d.c.data
|
|
})
|
|
}
|
|
|
|
func (d *FrameSideData) SetData(b []byte) {
|
|
C.memcpy(unsafe.Pointer(d.c.data), unsafe.Pointer(&b[0]), C.size_t(math.Min(float64(len(b)), float64(d.c.size))))
|
|
}
|
|
|
|
func (d *FrameSideData) Type() FrameSideDataType {
|
|
return FrameSideDataType(d.c._type)
|
|
}
|