diff --git a/av/video/stream.pyx b/av/video/stream.py similarity index 65% rename from av/video/stream.pyx rename to av/video/stream.py index 383cc13a6..0a7032b09 100644 --- a/av/video/stream.pyx +++ b/av/video/stream.py @@ -1,12 +1,12 @@ -cimport libav as lib +import cython +from cython.cimports import libav as lib +from cython.cimports.av.packet import Packet +from cython.cimports.av.utils import avrational_to_fraction, to_avrational +from cython.cimports.av.video.frame import VideoFrame -from av.packet cimport Packet -from av.utils cimport avrational_to_fraction, to_avrational -from .frame cimport VideoFrame - - -cdef class VideoStream(Stream): +@cython.cclass +class VideoStream(Stream): def __repr__(self): return ( f"= 4.0 - cdef lib.AVRational val = lib.av_guess_frame_rate(NULL, self.ptr, NULL) - return avrational_to_fraction(&val) + val: lib.AVRational = lib.av_guess_frame_rate( + cython.NULL, self.ptr, cython.NULL + ) + return avrational_to_fraction(cython.address(val)) @property def sample_aspect_ratio(self): @@ -96,9 +98,11 @@ def sample_aspect_ratio(self): :type: fractions.Fraction | None """ - cdef lib.AVRational sar = lib.av_guess_sample_aspect_ratio(self.container.ptr, self.ptr, NULL) - return avrational_to_fraction(&sar) - + sar: lib.AVRational = lib.av_guess_sample_aspect_ratio( + self.container.ptr, self.ptr, cython.NULL + ) + return avrational_to_fraction(cython.address(sar)) + @property def display_aspect_ratio(self): """The guessed display aspect ratio (DAR) of this stream. @@ -107,11 +111,13 @@ def display_aspect_ratio(self): :type: fractions.Fraction | None """ - cdef lib.AVRational dar - + dar = cython.declare(lib.AVRational) lib.av_reduce( - &dar.num, &dar.den, + cython.address(dar.num), + cython.address(dar.den), self.format.width * self.sample_aspect_ratio.num, - self.format.height * self.sample_aspect_ratio.den, 1024*1024) + self.format.height * self.sample_aspect_ratio.den, + 1024 * 1024, + ) - return avrational_to_fraction(&dar) + return avrational_to_fraction(cython.address(dar))