mirror of
https://github.com/asticode/go-astiav.git
synced 2025-10-06 08:37:06 +08:00
Added hardware device/frame context Free() method
This commit is contained in:
@@ -136,6 +136,7 @@ func main() {
|
|||||||
if s.hardwareDeviceContext, err = astiav.CreateHardwareDeviceContext(hardwareDeviceType, *hardwareDeviceName, nil, 0); err != nil {
|
if s.hardwareDeviceContext, err = astiav.CreateHardwareDeviceContext(hardwareDeviceType, *hardwareDeviceName, nil, 0); err != nil {
|
||||||
log.Fatal(fmt.Errorf("main: creating hardware device context failed: %w", err))
|
log.Fatal(fmt.Errorf("main: creating hardware device context failed: %w", err))
|
||||||
}
|
}
|
||||||
|
defer s.hardwareDeviceContext.Free()
|
||||||
|
|
||||||
// Update decoder context
|
// Update decoder context
|
||||||
s.decCodecContext.SetHardwareDeviceContext(s.hardwareDeviceContext)
|
s.decCodecContext.SetHardwareDeviceContext(s.hardwareDeviceContext)
|
||||||
|
@@ -53,6 +53,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(fmt.Errorf("main: creating hardware device context failed: %w", err))
|
log.Fatal(fmt.Errorf("main: creating hardware device context failed: %w", err))
|
||||||
}
|
}
|
||||||
|
defer hardwareDeviceContext.Free()
|
||||||
|
|
||||||
// Find encoder codec
|
// Find encoder codec
|
||||||
encCodec := astiav.FindEncoderByName(*encoderCodecName)
|
encCodec := astiav.FindEncoderByName(*encoderCodecName)
|
||||||
@@ -85,6 +86,7 @@ func main() {
|
|||||||
if hardwareFrameContext == nil {
|
if hardwareFrameContext == nil {
|
||||||
log.Fatal("main: hardware frame context is nil")
|
log.Fatal("main: hardware frame context is nil")
|
||||||
}
|
}
|
||||||
|
defer hardwareFrameContext.Free()
|
||||||
|
|
||||||
// Get software pixel format
|
// Get software pixel format
|
||||||
softwarePixelFormat := astiav.FindPixelFormatByName(*softwarePixelFormatName)
|
softwarePixelFormat := astiav.FindPixelFormatByName(*softwarePixelFormatName)
|
||||||
|
@@ -29,3 +29,9 @@ func CreateHardwareDeviceContext(t HardwareDeviceType, device string, options *D
|
|||||||
}
|
}
|
||||||
return &hdc, nil
|
return &hdc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (hdc *HardwareDeviceContext) Free() {
|
||||||
|
if hdc.c != nil {
|
||||||
|
C.av_buffer_unref(&hdc.c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -23,6 +23,12 @@ func AllocHardwareFrameContext(hdc *HardwareDeviceContext) *HardwareFrameContext
|
|||||||
return newHardwareFrameContextFromC(C.av_hwframe_ctx_alloc(hdc.c))
|
return newHardwareFrameContextFromC(C.av_hwframe_ctx_alloc(hdc.c))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (hfc *HardwareFrameContext) Free() {
|
||||||
|
if hfc.c != nil {
|
||||||
|
C.av_buffer_unref(&hfc.c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (hfc *HardwareFrameContext) data() *C.AVHWFramesContext {
|
func (hfc *HardwareFrameContext) data() *C.AVHWFramesContext {
|
||||||
return (*C.AVHWFramesContext)(unsafe.Pointer((hfc.c.data)))
|
return (*C.AVHWFramesContext)(unsafe.Pointer((hfc.c.data)))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user