wrap vpx_image into a struct

This commit is contained in:
Lei Kang
2025-09-04 15:00:14 -07:00
committed by Leo (Lei) Kang
parent 81cfc047d5
commit de517d790b
2 changed files with 43 additions and 2 deletions

View File

@@ -97,9 +97,10 @@ func (d *Decoder) Decode(data []byte) {
}
}
func (d *Decoder) GetFrame() *C.vpx_image_t {
func (d *Decoder) GetFrame() *VpxImage {
iter := C.newIter()
return C.getFrame(d.codec, iter)
img := C.getFrame(d.codec, iter)
return &VpxImage{img: img}
}
func (d *Decoder) FreeDecoderCtx() {

View File

@@ -0,0 +1,40 @@
package vpx
/*
#cgo pkg-config: vpx
#include <vpx/vpx_image.h>
*/
import "C"
import "unsafe"
type VpxImage struct {
img *C.vpx_image_t
}
func NewImageFromPtr(ptr *C.vpx_image_t) *VpxImage {
return &VpxImage{img: ptr}
}
func (i *VpxImage) Width() int {
return int(i.img.d_w)
}
func (i *VpxImage) Height() int {
return int(i.img.d_h)
}
func (i *VpxImage) YStride() int {
return int(i.img.stride[0])
}
func (i *VpxImage) UStride() int {
return int(i.img.stride[1])
}
func (i *VpxImage) VStride() int {
return int(i.img.stride[2])
}
func (i *VpxImage) Plane(n int) unsafe.Pointer {
return unsafe.Pointer(i.img.planes[n])
}