Files
ffmpeg-dev-go/avutil_stereo3d.go
2023-11-05 08:43:33 +08:00

108 lines
3.2 KiB
Go

// Copyright (c) 2023 QRTC. All rights reserved.
// Use of this source code is governed by a MIT
// license that can be found in the LICENSE file.
package ffmpeg
/*
#include <libavutil/stereo3d.h>
*/
import "C"
// AVStereo3DType
type AVStereo3DType = C.enum_AVStereo3DType
const (
AV_STEREO3D_2D = AVStereo3DType(C.AV_STEREO3D_2D)
AV_STEREO3D_SIDEBYSIDE = AVStereo3DType(C.AV_STEREO3D_SIDEBYSIDE)
AV_STEREO3D_TOPBOTTOM = AVStereo3DType(C.AV_STEREO3D_TOPBOTTOM)
AV_STEREO3D_FRAMESEQUENCE = AVStereo3DType(C.AV_STEREO3D_FRAMESEQUENCE)
AV_STEREO3D_CHECKERBOARD = AVStereo3DType(C.AV_STEREO3D_CHECKERBOARD)
AV_STEREO3D_SIDEBYSIDE_QUINCUNX = AVStereo3DType(C.AV_STEREO3D_SIDEBYSIDE_QUINCUNX)
AV_STEREO3D_LINES = AVStereo3DType(C.AV_STEREO3D_LINES)
AV_STEREO3D_COLUMNS = AVStereo3DType(C.AV_STEREO3D_COLUMNS)
)
// AVStereo3DView
type AVStereo3DView = C.enum_AVStereo3DView
const (
AV_STEREO3D_VIEW_PACKED = AVStereo3DView(C.AV_STEREO3D_VIEW_PACKED)
AV_STEREO3D_VIEW_LEFT = AVStereo3DView(C.AV_STEREO3D_VIEW_LEFT)
AV_STEREO3D_VIEW_RIGHT = AVStereo3DView(C.AV_STEREO3D_VIEW_RIGHT)
)
const (
AV_STEREO3D_FLAG_INVERT = C.AV_STEREO3D_FLAG_INVERT
)
// AVStereo3D
type AVStereo3D C.struct_AVStereo3D
// GetType gets `AVStereo3D.type` value.
func (s3d *AVStereo3D) GetType() AVStereo3DType {
return (AVStereo3DType)(s3d._type)
}
// SetType sets `AVStereo3D.type` value.
func (s3d *AVStereo3D) SetType(v AVStereo3DType) {
s3d._type = (C.enum_AVStereo3DType)(v)
}
// GetTypeAddr gets `AVStereo3D.type` address.
func (s3d *AVStereo3D) GetTypeAddr() *AVStereo3DType {
return (*AVStereo3DType)(&s3d._type)
}
// GetFlags gets `AVStereo3D.flags` value.
func (s3d *AVStereo3D) GetFlags() int32 {
return (int32)(s3d.flags)
}
// SetFlags sets `AVStereo3D.flags` value.
func (s3d *AVStereo3D) SetFlags(v int32) {
s3d.flags = (C.int32_t)(v)
}
// GetFlagsAddr gets `AVStereo3D.flags` address.
func (s3d *AVStereo3D) GetFlagsAddr() *int32 {
return (*int32)(&s3d.flags)
}
// GetView gets `AVStereo3D.view` value.
func (s3d *AVStereo3D) GetView() AVStereo3DView {
return (AVStereo3DView)(s3d.view)
}
// SetView sets `AVStereo3D.view` value.
func (s3d *AVStereo3D) SetView(v AVStereo3DView) {
s3d.view = (C.enum_AVStereo3DView)(v)
}
// GetViewAddr gets `AVStereo3D.view` address.
func (s3d *AVStereo3D) GetViewAddr() *AVStereo3DView {
return (*AVStereo3DView)(&s3d.view)
}
// AvStereo3dAlloc allocates an AVStereo3D structure and set its fields to default values.
func AvStereo3dAlloc() *AVStereo3D {
return (*AVStereo3D)(C.av_stereo3d_alloc())
}
// AvStereo3dCreateSideData allocates a complete AVFrameSideData and add it to the frame.
func AvStereo3dCreateSideData(frame *AVFrame) *AVStereo3D {
return (*AVStereo3D)(C.av_stereo3d_create_side_data((*C.struct_AVFrame)(frame)))
}
// AvStereo3dTypeName provides a human-readable name of a given stereo3d type.
func AvStereo3dTypeName(_type uint32) string {
return C.GoString(C.av_stereo3d_type_name((C.uint)(_type)))
}
// AvStereo3dFromName gets the AVStereo3DType form a human-readable name.
func AvStereo3dFromName(name string) int32 {
namePtr, nameFunc := StringCasting(name)
defer nameFunc()
return (int32)(C.av_stereo3d_from_name((*C.char)(namePtr)))
}