package goffmpeg /* #include #include "libcffmpeg.h" */ import "C" import "unsafe" // CloseStream close stream func (h *GoFFMPEG) CloseStream() { C.wrap_fn_close_stream(unsafe.Pointer(libcffmpeg), h.ffmpeg) } //GetAVPacket get AVPacket func (h *GoFFMPEG) GetAVPacket() ([]byte, int, int) { var key C.int var size C.int p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key) defer C.free(unsafe.Pointer(p)) if size <= 0 { return nil, 0, -1 } d := C.GoBytes(p, size) s := int(size) k := int(key) return d, s, k } //GetAVPacket2 get AVPacket func (h *GoFFMPEG) GetAVPacket2() (unsafe.Pointer, []byte, int, int) { var key C.int var size C.int p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key) if size <= 0 { return nil, nil, 0, -1 } const maxLen = 0x7fffffff length := int(size) data := (*[maxLen]byte)(unsafe.Pointer(p))[:length:length] k := int(key) return p, data, length, k }