diff --git a/av/audio/layout.py b/av/audio/layout.py index 344efa220..f3adb3514 100644 --- a/av/audio/layout.py +++ b/av/audio/layout.py @@ -28,6 +28,9 @@ def get_audio_layout(c_layout: lib.AVChannelLayout) -> AudioLayout: @cython.final @cython.cclass class AudioLayout: + def __dealloc__(self): + lib.av_channel_layout_uninit(cython.address(self.layout)) + def __cinit__(self, layout): if layout is _cinit_bypass_sentinel: return diff --git a/include/avcodec.pxd b/include/avcodec.pxd index 21b5e8324..f2123ce0d 100644 --- a/include/avcodec.pxd +++ b/include/avcodec.pxd @@ -16,6 +16,7 @@ cdef extern from "libavutil/channel_layout.h" nogil: int av_channel_description(char *buf, size_t buf_size, AVChannel channel_id) int av_channel_layout_compare(AVChannelLayout *chl, AVChannelLayout *chl1) AVChannel av_channel_layout_channel_from_index(AVChannelLayout *channel_layout, unsigned int idx) + void av_channel_layout_uninit(AVChannelLayout *channel_layout) cdef extern from "libavcodec/avcodec.h" nogil: cdef int avcodec_version()