import cython from cython.cimports import libav as lib from cython.cimports.av.error import err_check from cython.cimports.av.packet import Packet from cython.cimports.av.subtitles.subtitle import SubtitleProxy, SubtitleSet @cython.cclass class SubtitleCodecContext(CodecContext): @cython.cfunc def _send_packet_and_recv(self, packet: Packet | None): if packet is None: raise RuntimeError("packet cannot be None") proxy: SubtitleProxy = SubtitleProxy() got_frame: cython.int = 0 err_check( lib.avcodec_decode_subtitle2( self.ptr, cython.address(proxy.struct), cython.address(got_frame), packet.ptr, ) ) if got_frame: return SubtitleSet(proxy) return [] @cython.ccall def decode2(self, packet: Packet): """ Returns SubtitleSet if you really need it. """ if not self.codec.ptr: raise ValueError("cannot decode unknown codec") self.open(strict=False) proxy: SubtitleProxy = SubtitleProxy() got_frame: cython.int = 0 err_check( lib.avcodec_decode_subtitle2( self.ptr, cython.address(proxy.struct), cython.address(got_frame), packet.ptr, ) ) if got_frame: return SubtitleSet(proxy) return None
Memory