mirror of
https://github.com/asticode/go-astiav.git
synced 2024-05-28 13:53:18 +08:00
767f28bc3d
* Adding HW Context * Check for hw pixel format and transfer data on ReciveFrame when its hw pixel format * Remove hw_decoding example and update demuxing_dec example * unref hw_device_ctx, and improve example Unref correctly hw_device_ctx on free decoding example has now a flag for hw decoding Use error on hw context because its good to know the error that happen Add a method to list supported hw codecs so user could check if system has a specif hwcodec before the create a hw context * Fix test to use err, and update hw with device to also return error * revert changes in demux example * Add/Modify according to review Seperate Hardware Device Context and Test Renaming HW to Hardware Create dedicated hardware_decoding Example Update Readme Add TransferHardwareData to frame.go Add SetHardwareDeviceContext to codec_context.go * Review changes add HardwareConfigs to codec create codec_hardware_config create codec_hardware_config_method_flag update example update flags better error handling in TransferHardwareData update CreateHardwareDeviceContext, better null handling remove hw ctx test because it fails when no nvidia is present some reordering of conss in hardware_device_type * Minor tweaks (review changes) HardwareConfigs only returns a slice an no error anymore remove if HardwareDeviceType checking in codec.go this should be done by user order codec hw_config_method_flags constants alphabetically some small changes in example ## hardware_device_context.go change link update optionsC
37 lines
1.5 KiB
Go
37 lines
1.5 KiB
Go
package astiav
|
|
|
|
//#cgo pkg-config: libavutil
|
|
//#include <libavutil/hwcontext.h>
|
|
import "C"
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
// https://github.com/FFmpeg/FFmpeg/blob/n5.0/libavutil/hwcontext.h#L27
|
|
type HardwareDeviceType C.enum_AVHWDeviceType
|
|
|
|
const (
|
|
HardwareDeviceTypeCUDA = HardwareDeviceType(C.AV_HWDEVICE_TYPE_CUDA)
|
|
HardwareDeviceTypeD3D11VA = HardwareDeviceType(C.AV_HWDEVICE_TYPE_D3D11VA)
|
|
HardwareDeviceTypeDRM = HardwareDeviceType(C.AV_HWDEVICE_TYPE_DRM)
|
|
HardwareDeviceTypeDXVA2 = HardwareDeviceType(C.AV_HWDEVICE_TYPE_DXVA2)
|
|
HardwareDeviceTypeMediaCodec = HardwareDeviceType(C.AV_HWDEVICE_TYPE_MEDIACODEC)
|
|
HardwareDeviceTypeNone = HardwareDeviceType(C.AV_HWDEVICE_TYPE_NONE)
|
|
HardwareDeviceTypeOpenCL = HardwareDeviceType(C.AV_HWDEVICE_TYPE_OPENCL)
|
|
HardwareDeviceTypeQSV = HardwareDeviceType(C.AV_HWDEVICE_TYPE_QSV)
|
|
HardwareDeviceTypeVAAPI = HardwareDeviceType(C.AV_HWDEVICE_TYPE_VAAPI)
|
|
HardwareDeviceTypeVDPAU = HardwareDeviceType(C.AV_HWDEVICE_TYPE_VDPAU)
|
|
HardwareDeviceTypeVideoToolbox = HardwareDeviceType(C.AV_HWDEVICE_TYPE_VIDEOTOOLBOX)
|
|
HardwareDeviceTypeVulkan = HardwareDeviceType(C.AV_HWDEVICE_TYPE_VULKAN)
|
|
)
|
|
|
|
func (t HardwareDeviceType) String() string {
|
|
return C.GoString(C.av_hwdevice_get_type_name((C.enum_AVHWDeviceType)(t)))
|
|
}
|
|
|
|
func FindHardwareDeviceTypeByName(n string) HardwareDeviceType {
|
|
cn := C.CString(n)
|
|
defer C.free(unsafe.Pointer(cn))
|
|
return HardwareDeviceType(C.av_hwdevice_find_type_by_name(cn))
|
|
}
|