mirror of
https://github.com/mappu/miqt.git
synced 2024-12-22 08:58:37 +00:00
321 lines
11 KiB
Go
321 lines
11 KiB
Go
package multimedia
|
|
|
|
/*
|
|
|
|
#include "gen_qvideoframe.h"
|
|
#include <stdlib.h>
|
|
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"github.com/mappu/miqt/qt"
|
|
"runtime"
|
|
"unsafe"
|
|
)
|
|
|
|
type QVideoFrame__FieldType int
|
|
|
|
const (
|
|
QVideoFrame__ProgressiveFrame QVideoFrame__FieldType = 0
|
|
QVideoFrame__TopField QVideoFrame__FieldType = 1
|
|
QVideoFrame__BottomField QVideoFrame__FieldType = 2
|
|
QVideoFrame__InterlacedFrame QVideoFrame__FieldType = 3
|
|
)
|
|
|
|
type QVideoFrame__PixelFormat int
|
|
|
|
const (
|
|
QVideoFrame__Format_Invalid QVideoFrame__PixelFormat = 0
|
|
QVideoFrame__Format_ARGB32 QVideoFrame__PixelFormat = 1
|
|
QVideoFrame__Format_ARGB32_Premultiplied QVideoFrame__PixelFormat = 2
|
|
QVideoFrame__Format_RGB32 QVideoFrame__PixelFormat = 3
|
|
QVideoFrame__Format_RGB24 QVideoFrame__PixelFormat = 4
|
|
QVideoFrame__Format_RGB565 QVideoFrame__PixelFormat = 5
|
|
QVideoFrame__Format_RGB555 QVideoFrame__PixelFormat = 6
|
|
QVideoFrame__Format_ARGB8565_Premultiplied QVideoFrame__PixelFormat = 7
|
|
QVideoFrame__Format_BGRA32 QVideoFrame__PixelFormat = 8
|
|
QVideoFrame__Format_BGRA32_Premultiplied QVideoFrame__PixelFormat = 9
|
|
QVideoFrame__Format_BGR32 QVideoFrame__PixelFormat = 10
|
|
QVideoFrame__Format_BGR24 QVideoFrame__PixelFormat = 11
|
|
QVideoFrame__Format_BGR565 QVideoFrame__PixelFormat = 12
|
|
QVideoFrame__Format_BGR555 QVideoFrame__PixelFormat = 13
|
|
QVideoFrame__Format_BGRA5658_Premultiplied QVideoFrame__PixelFormat = 14
|
|
QVideoFrame__Format_AYUV444 QVideoFrame__PixelFormat = 15
|
|
QVideoFrame__Format_AYUV444_Premultiplied QVideoFrame__PixelFormat = 16
|
|
QVideoFrame__Format_YUV444 QVideoFrame__PixelFormat = 17
|
|
QVideoFrame__Format_YUV420P QVideoFrame__PixelFormat = 18
|
|
QVideoFrame__Format_YV12 QVideoFrame__PixelFormat = 19
|
|
QVideoFrame__Format_UYVY QVideoFrame__PixelFormat = 20
|
|
QVideoFrame__Format_YUYV QVideoFrame__PixelFormat = 21
|
|
QVideoFrame__Format_NV12 QVideoFrame__PixelFormat = 22
|
|
QVideoFrame__Format_NV21 QVideoFrame__PixelFormat = 23
|
|
QVideoFrame__Format_IMC1 QVideoFrame__PixelFormat = 24
|
|
QVideoFrame__Format_IMC2 QVideoFrame__PixelFormat = 25
|
|
QVideoFrame__Format_IMC3 QVideoFrame__PixelFormat = 26
|
|
QVideoFrame__Format_IMC4 QVideoFrame__PixelFormat = 27
|
|
QVideoFrame__Format_Y8 QVideoFrame__PixelFormat = 28
|
|
QVideoFrame__Format_Y16 QVideoFrame__PixelFormat = 29
|
|
QVideoFrame__Format_Jpeg QVideoFrame__PixelFormat = 30
|
|
QVideoFrame__Format_CameraRaw QVideoFrame__PixelFormat = 31
|
|
QVideoFrame__Format_AdobeDng QVideoFrame__PixelFormat = 32
|
|
QVideoFrame__Format_ABGR32 QVideoFrame__PixelFormat = 33
|
|
QVideoFrame__Format_YUV422P QVideoFrame__PixelFormat = 34
|
|
QVideoFrame__NPixelFormats QVideoFrame__PixelFormat = 35
|
|
QVideoFrame__Format_User QVideoFrame__PixelFormat = 1000
|
|
)
|
|
|
|
type QVideoFrame struct {
|
|
h *C.QVideoFrame
|
|
isSubclass bool
|
|
}
|
|
|
|
func (this *QVideoFrame) cPointer() *C.QVideoFrame {
|
|
if this == nil {
|
|
return nil
|
|
}
|
|
return this.h
|
|
}
|
|
|
|
func (this *QVideoFrame) UnsafePointer() unsafe.Pointer {
|
|
if this == nil {
|
|
return nil
|
|
}
|
|
return unsafe.Pointer(this.h)
|
|
}
|
|
|
|
// newQVideoFrame constructs the type using only CGO pointers.
|
|
func newQVideoFrame(h *C.QVideoFrame) *QVideoFrame {
|
|
if h == nil {
|
|
return nil
|
|
}
|
|
|
|
return &QVideoFrame{h: h}
|
|
}
|
|
|
|
// UnsafeNewQVideoFrame constructs the type using only unsafe pointers.
|
|
func UnsafeNewQVideoFrame(h unsafe.Pointer) *QVideoFrame {
|
|
return newQVideoFrame((*C.QVideoFrame)(h))
|
|
}
|
|
|
|
// NewQVideoFrame constructs a new QVideoFrame object.
|
|
func NewQVideoFrame() *QVideoFrame {
|
|
|
|
ret := newQVideoFrame(C.QVideoFrame_new())
|
|
ret.isSubclass = true
|
|
return ret
|
|
}
|
|
|
|
// NewQVideoFrame2 constructs a new QVideoFrame object.
|
|
func NewQVideoFrame2(bytes int, size *qt.QSize, bytesPerLine int, format QVideoFrame__PixelFormat) *QVideoFrame {
|
|
|
|
ret := newQVideoFrame(C.QVideoFrame_new2((C.int)(bytes), (*C.QSize)(size.UnsafePointer()), (C.int)(bytesPerLine), (C.int)(format)))
|
|
ret.isSubclass = true
|
|
return ret
|
|
}
|
|
|
|
// NewQVideoFrame3 constructs a new QVideoFrame object.
|
|
func NewQVideoFrame3(image *qt.QImage) *QVideoFrame {
|
|
|
|
ret := newQVideoFrame(C.QVideoFrame_new3((*C.QImage)(image.UnsafePointer())))
|
|
ret.isSubclass = true
|
|
return ret
|
|
}
|
|
|
|
// NewQVideoFrame4 constructs a new QVideoFrame object.
|
|
func NewQVideoFrame4(other *QVideoFrame) *QVideoFrame {
|
|
|
|
ret := newQVideoFrame(C.QVideoFrame_new4(other.cPointer()))
|
|
ret.isSubclass = true
|
|
return ret
|
|
}
|
|
|
|
func (this *QVideoFrame) OperatorAssign(other *QVideoFrame) {
|
|
C.QVideoFrame_OperatorAssign(this.h, other.cPointer())
|
|
}
|
|
|
|
func (this *QVideoFrame) OperatorEqual(other *QVideoFrame) bool {
|
|
return (bool)(C.QVideoFrame_OperatorEqual(this.h, other.cPointer()))
|
|
}
|
|
|
|
func (this *QVideoFrame) OperatorNotEqual(other *QVideoFrame) bool {
|
|
return (bool)(C.QVideoFrame_OperatorNotEqual(this.h, other.cPointer()))
|
|
}
|
|
|
|
func (this *QVideoFrame) IsValid() bool {
|
|
return (bool)(C.QVideoFrame_IsValid(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) PixelFormat() QVideoFrame__PixelFormat {
|
|
return (QVideoFrame__PixelFormat)(C.QVideoFrame_PixelFormat(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) HandleType() QAbstractVideoBuffer__HandleType {
|
|
return (QAbstractVideoBuffer__HandleType)(C.QVideoFrame_HandleType(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) Size() *qt.QSize {
|
|
_goptr := qt.UnsafeNewQSize(unsafe.Pointer(C.QVideoFrame_Size(this.h)))
|
|
_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
|
|
return _goptr
|
|
}
|
|
|
|
func (this *QVideoFrame) Width() int {
|
|
return (int)(C.QVideoFrame_Width(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) Height() int {
|
|
return (int)(C.QVideoFrame_Height(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) FieldType() QVideoFrame__FieldType {
|
|
return (QVideoFrame__FieldType)(C.QVideoFrame_FieldType(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) SetFieldType(fieldType QVideoFrame__FieldType) {
|
|
C.QVideoFrame_SetFieldType(this.h, (C.int)(fieldType))
|
|
}
|
|
|
|
func (this *QVideoFrame) IsMapped() bool {
|
|
return (bool)(C.QVideoFrame_IsMapped(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) IsReadable() bool {
|
|
return (bool)(C.QVideoFrame_IsReadable(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) IsWritable() bool {
|
|
return (bool)(C.QVideoFrame_IsWritable(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) MapMode() QAbstractVideoBuffer__MapMode {
|
|
return (QAbstractVideoBuffer__MapMode)(C.QVideoFrame_MapMode(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) Map(mode QAbstractVideoBuffer__MapMode) bool {
|
|
return (bool)(C.QVideoFrame_Map(this.h, (C.int)(mode)))
|
|
}
|
|
|
|
func (this *QVideoFrame) Unmap() {
|
|
C.QVideoFrame_Unmap(this.h)
|
|
}
|
|
|
|
func (this *QVideoFrame) BytesPerLine() int {
|
|
return (int)(C.QVideoFrame_BytesPerLine(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) BytesPerLineWithPlane(plane int) int {
|
|
return (int)(C.QVideoFrame_BytesPerLineWithPlane(this.h, (C.int)(plane)))
|
|
}
|
|
|
|
func (this *QVideoFrame) Bits() *byte {
|
|
return (*byte)(unsafe.Pointer(C.QVideoFrame_Bits(this.h)))
|
|
}
|
|
|
|
func (this *QVideoFrame) BitsWithPlane(plane int) *byte {
|
|
return (*byte)(unsafe.Pointer(C.QVideoFrame_BitsWithPlane(this.h, (C.int)(plane))))
|
|
}
|
|
|
|
func (this *QVideoFrame) Bits2() *byte {
|
|
return (*byte)(unsafe.Pointer(C.QVideoFrame_Bits2(this.h)))
|
|
}
|
|
|
|
func (this *QVideoFrame) Bits3(plane int) *byte {
|
|
return (*byte)(unsafe.Pointer(C.QVideoFrame_Bits3(this.h, (C.int)(plane))))
|
|
}
|
|
|
|
func (this *QVideoFrame) MappedBytes() int {
|
|
return (int)(C.QVideoFrame_MappedBytes(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) PlaneCount() int {
|
|
return (int)(C.QVideoFrame_PlaneCount(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) Handle() *qt.QVariant {
|
|
_goptr := qt.UnsafeNewQVariant(unsafe.Pointer(C.QVideoFrame_Handle(this.h)))
|
|
_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
|
|
return _goptr
|
|
}
|
|
|
|
func (this *QVideoFrame) StartTime() int64 {
|
|
return (int64)(C.QVideoFrame_StartTime(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) SetStartTime(time int64) {
|
|
C.QVideoFrame_SetStartTime(this.h, (C.longlong)(time))
|
|
}
|
|
|
|
func (this *QVideoFrame) EndTime() int64 {
|
|
return (int64)(C.QVideoFrame_EndTime(this.h))
|
|
}
|
|
|
|
func (this *QVideoFrame) SetEndTime(time int64) {
|
|
C.QVideoFrame_SetEndTime(this.h, (C.longlong)(time))
|
|
}
|
|
|
|
func (this *QVideoFrame) AvailableMetaData() map[string]qt.QVariant {
|
|
var _mm C.struct_miqt_map = C.QVideoFrame_AvailableMetaData(this.h)
|
|
_ret := make(map[string]qt.QVariant, int(_mm.len))
|
|
_Keys := (*[0xffff]C.struct_miqt_string)(unsafe.Pointer(_mm.keys))
|
|
_Values := (*[0xffff]*C.QVariant)(unsafe.Pointer(_mm.values))
|
|
for i := 0; i < int(_mm.len); i++ {
|
|
var _mapkey_ms C.struct_miqt_string = _Keys[i]
|
|
_mapkey_ret := C.GoStringN(_mapkey_ms.data, C.int(int64(_mapkey_ms.len)))
|
|
C.free(unsafe.Pointer(_mapkey_ms.data))
|
|
_entry_Key := _mapkey_ret
|
|
_mapval_goptr := qt.UnsafeNewQVariant(unsafe.Pointer(_Values[i]))
|
|
_mapval_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
|
|
_entry_Value := *_mapval_goptr
|
|
|
|
_ret[_entry_Key] = _entry_Value
|
|
}
|
|
return _ret
|
|
}
|
|
|
|
func (this *QVideoFrame) MetaData(key string) *qt.QVariant {
|
|
key_ms := C.struct_miqt_string{}
|
|
key_ms.data = C.CString(key)
|
|
key_ms.len = C.size_t(len(key))
|
|
defer C.free(unsafe.Pointer(key_ms.data))
|
|
_goptr := qt.UnsafeNewQVariant(unsafe.Pointer(C.QVideoFrame_MetaData(this.h, key_ms)))
|
|
_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
|
|
return _goptr
|
|
}
|
|
|
|
func (this *QVideoFrame) SetMetaData(key string, value *qt.QVariant) {
|
|
key_ms := C.struct_miqt_string{}
|
|
key_ms.data = C.CString(key)
|
|
key_ms.len = C.size_t(len(key))
|
|
defer C.free(unsafe.Pointer(key_ms.data))
|
|
C.QVideoFrame_SetMetaData(this.h, key_ms, (*C.QVariant)(value.UnsafePointer()))
|
|
}
|
|
|
|
func (this *QVideoFrame) Image() *qt.QImage {
|
|
_goptr := qt.UnsafeNewQImage(unsafe.Pointer(C.QVideoFrame_Image(this.h)))
|
|
_goptr.GoGC() // Qt uses pass-by-value semantics for this type. Mimic with finalizer
|
|
return _goptr
|
|
}
|
|
|
|
func QVideoFrame_PixelFormatFromImageFormat(format qt.QImage__Format) QVideoFrame__PixelFormat {
|
|
return (QVideoFrame__PixelFormat)(C.QVideoFrame_PixelFormatFromImageFormat((C.int)(format)))
|
|
}
|
|
|
|
func QVideoFrame_ImageFormatFromPixelFormat(format QVideoFrame__PixelFormat) qt.QImage__Format {
|
|
return (qt.QImage__Format)(C.QVideoFrame_ImageFormatFromPixelFormat((C.int)(format)))
|
|
}
|
|
|
|
// Delete this object from C++ memory.
|
|
func (this *QVideoFrame) Delete() {
|
|
C.QVideoFrame_Delete(this.h, C.bool(this.isSubclass))
|
|
}
|
|
|
|
// GoGC adds a Go Finalizer to this pointer, so that it will be deleted
|
|
// from C++ memory once it is unreachable from Go memory.
|
|
func (this *QVideoFrame) GoGC() {
|
|
runtime.SetFinalizer(this, func(this *QVideoFrame) {
|
|
this.Delete()
|
|
runtime.KeepAlive(this.h)
|
|
})
|
|
}
|