from av.packet cimport Packet
from .frame cimport AudioFrame
cdef class AudioStream(Stream):
def __repr__(self):
form = self.format.name if self.format else None
return (
f"<av.AudioStream #{self.index} {self.name} at {self.rate}Hz,"
f" {self.layout.name}, {form} at 0x{id(self):x}>"
)
def __getattr__(self, name):
return getattr(self.codec_context, name)
cpdef encode(self, AudioFrame frame=None):
"""
Encode an :class:`.AudioFrame` and return a list of :class:`.Packet`.
:rtype: list[Packet]
.. seealso:: This is mostly a passthrough to :meth:`.CodecContext.encode`.
"""
packets = self.codec_context.encode(frame)
cdef Packet packet
for packet in packets:
packet._stream = self
packet.ptr.stream_index = self.ptr.index
return packets
cpdef decode(self, Packet packet=None):
"""
Decode a :class:`.Packet` and return a list of :class:`.AudioFrame`.
:rtype: list[AudioFrame]
.. seealso:: This is a passthrough to :meth:`.CodecContext.decode`.
"""
return self.codec_context.decode(packet)