Skip to content

Commit 1e263c0

Browse files
JoeSchiffWyattBlue
authored andcommitted
Convert deprecated cython extension class properties to new syntax part 4
1 parent 4407056 commit 1e263c0

File tree

8 files changed

+343
-311
lines changed

8 files changed

+343
-311
lines changed

av/codec/codec.pyx

+11-11
Original file line numberDiff line numberDiff line change
@@ -209,17 +209,17 @@ cdef class Codec:
209209
from .context import CodecContext
210210
return CodecContext.create(self)
211211

212-
property is_decoder:
213-
def __get__(self):
214-
return not self.is_encoder
212+
@property
213+
def is_decoder(self):
214+
return not self.is_encoder
215215

216-
property descriptor:
217-
def __get__(self): return wrap_avclass(self.ptr.priv_class)
216+
@property
217+
def descriptor(self): return wrap_avclass(self.ptr.priv_class)
218218

219-
property name:
220-
def __get__(self): return self.ptr.name or ""
221-
property long_name:
222-
def __get__(self): return self.ptr.long_name or ""
219+
@property
220+
def name(self): return self.ptr.name or ""
221+
@property
222+
def long_name(self): return self.ptr.long_name or ""
223223

224224
@property
225225
def type(self):
@@ -231,8 +231,8 @@ cdef class Codec:
231231
"""
232232
return lib.av_get_media_type_string(self.ptr.type)
233233

234-
property id:
235-
def __get__(self): return self.ptr.id
234+
@property
235+
def id(self): return self.ptr.id
236236

237237
@property
238238
def frame_rates(self):

av/codec/context.pyx

+135-131
Original file line numberDiff line numberDiff line change
@@ -215,44 +215,45 @@ cdef class CodecContext:
215215
skip_manual = flags2.flag_property("SKIP_MANUAL")
216216
ro_flush_noop = flags2.flag_property("RO_FLUSH_NOOP")
217217

218-
property extradata:
219-
def __get__(self):
220-
if self.ptr.extradata_size > 0:
221-
return <bytes>(<uint8_t*>self.ptr.extradata)[:self.ptr.extradata_size]
222-
else:
223-
return None
224-
225-
def __set__(self, data):
226-
if not self.is_decoder:
227-
raise ValueError("Can only set extradata for decoders.")
228-
229-
if data is None:
230-
lib.av_freep(&self.ptr.extradata)
231-
self.ptr.extradata_size = 0
232-
else:
233-
source = bytesource(data)
234-
self.ptr.extradata = <uint8_t*>lib.av_realloc(self.ptr.extradata, source.length + lib.AV_INPUT_BUFFER_PADDING_SIZE)
235-
if not self.ptr.extradata:
236-
raise MemoryError("Cannot allocate extradata")
237-
memcpy(self.ptr.extradata, source.ptr, source.length)
238-
self.ptr.extradata_size = source.length
239-
self.extradata_set = True
240-
241-
property extradata_size:
242-
def __get__(self):
243-
return self.ptr.extradata_size
244-
245-
property is_open:
246-
def __get__(self):
247-
return lib.avcodec_is_open(self.ptr)
248-
249-
property is_encoder:
250-
def __get__(self):
251-
return lib.av_codec_is_encoder(self.ptr.codec)
252-
253-
property is_decoder:
254-
def __get__(self):
255-
return lib.av_codec_is_decoder(self.ptr.codec)
218+
@property
219+
def extradata(self):
220+
if self.ptr.extradata_size > 0:
221+
return <bytes>(<uint8_t*>self.ptr.extradata)[:self.ptr.extradata_size]
222+
else:
223+
return None
224+
225+
@extradata.setter
226+
def extradata(self, data):
227+
if not self.is_decoder:
228+
raise ValueError("Can only set extradata for decoders.")
229+
230+
if data is None:
231+
lib.av_freep(&self.ptr.extradata)
232+
self.ptr.extradata_size = 0
233+
else:
234+
source = bytesource(data)
235+
self.ptr.extradata = <uint8_t*>lib.av_realloc(self.ptr.extradata, source.length + lib.AV_INPUT_BUFFER_PADDING_SIZE)
236+
if not self.ptr.extradata:
237+
raise MemoryError("Cannot allocate extradata")
238+
memcpy(self.ptr.extradata, source.ptr, source.length)
239+
self.ptr.extradata_size = source.length
240+
self.extradata_set = True
241+
242+
@property
243+
def extradata_size(self):
244+
return self.ptr.extradata_size
245+
246+
@property
247+
def is_open(self):
248+
return lib.avcodec_is_open(self.ptr)
249+
250+
@property
251+
def is_encoder(self):
252+
return lib.av_codec_is_encoder(self.ptr.codec)
253+
254+
@property
255+
def is_decoder(self):
256+
return lib.av_codec_is_decoder(self.ptr.codec)
256257

257258
cpdef open(self, bint strict=True):
258259
if lib.avcodec_is_open(self.ptr):
@@ -521,122 +522,125 @@ cdef class CodecContext:
521522

522523
frame.index = self.ptr.frame_number - 1
523524

524-
property name:
525-
def __get__(self):
526-
return self.codec.name
527-
528-
property type:
529-
def __get__(self):
530-
return self.codec.type
531-
532-
property profile:
533-
def __get__(self):
534-
if self.ptr.codec and lib.av_get_profile_name(self.ptr.codec, self.ptr.profile):
535-
return lib.av_get_profile_name(self.ptr.codec, self.ptr.profile)
536-
537-
property time_base:
538-
def __get__(self):
539-
if self.is_decoder:
540-
warnings.warn(
541-
"Using CodecContext.time_base for decoders is deprecated.",
542-
AVDeprecationWarning
543-
)
544-
return avrational_to_fraction(&self.ptr.time_base)
545-
546-
def __set__(self, value):
547-
if self.is_decoder:
548-
warnings.warn(
549-
"Using CodecContext.time_base for decoders is deprecated.",
550-
AVDeprecationWarning
551-
)
552-
to_avrational(value, &self.ptr.time_base)
553-
554-
property codec_tag:
555-
def __get__(self):
556-
return self.ptr.codec_tag.to_bytes(4, byteorder="little", signed=False).decode(
557-
encoding="ascii")
558-
559-
def __set__(self, value):
560-
if isinstance(value, str) and len(value) == 4:
561-
self.ptr.codec_tag = int.from_bytes(value.encode(encoding="ascii"),
562-
byteorder="little", signed=False)
563-
else:
564-
raise ValueError("Codec tag should be a 4 character string.")
565-
566-
property ticks_per_frame:
567-
def __get__(self):
568-
return self.ptr.ticks_per_frame
569-
570-
property bit_rate:
571-
def __get__(self):
572-
return self.ptr.bit_rate if self.ptr.bit_rate > 0 else None
573-
574-
def __set__(self, int value):
575-
self.ptr.bit_rate = value
576-
577-
property max_bit_rate:
578-
def __get__(self):
579-
if self.ptr.rc_max_rate > 0:
580-
return self.ptr.rc_max_rate
581-
else:
582-
return None
583-
584-
property bit_rate_tolerance:
585-
def __get__(self):
586-
self.ptr.bit_rate_tolerance
587-
588-
def __set__(self, int value):
589-
self.ptr.bit_rate_tolerance = value
590-
591-
property thread_count:
525+
@property
526+
def name(self):
527+
return self.codec.name
528+
529+
@property
530+
def type(self):
531+
return self.codec.type
532+
533+
@property
534+
def profile(self):
535+
if self.ptr.codec and lib.av_get_profile_name(self.ptr.codec, self.ptr.profile):
536+
return lib.av_get_profile_name(self.ptr.codec, self.ptr.profile)
537+
538+
@property
539+
def time_base(self):
540+
if self.is_decoder:
541+
warnings.warn(
542+
"Using CodecContext.time_base for decoders is deprecated.",
543+
AVDeprecationWarning
544+
)
545+
return avrational_to_fraction(&self.ptr.time_base)
546+
547+
@time_base.setter
548+
def time_base(self, value):
549+
if self.is_decoder:
550+
warnings.warn(
551+
"Using CodecContext.time_base for decoders is deprecated.",
552+
AVDeprecationWarning
553+
)
554+
to_avrational(value, &self.ptr.time_base)
555+
556+
@property
557+
def codec_tag(self):
558+
return self.ptr.codec_tag.to_bytes(4, byteorder="little", signed=False).decode(
559+
encoding="ascii")
560+
561+
@codec_tag.setter
562+
def codec_tag(self, value):
563+
if isinstance(value, str) and len(value) == 4:
564+
self.ptr.codec_tag = int.from_bytes(value.encode(encoding="ascii"),
565+
byteorder="little", signed=False)
566+
else:
567+
raise ValueError("Codec tag should be a 4 character string.")
568+
569+
@property
570+
def ticks_per_frame(self):
571+
return self.ptr.ticks_per_frame
572+
573+
@property
574+
def bit_rate(self):
575+
return self.ptr.bit_rate if self.ptr.bit_rate > 0 else None
576+
577+
@bit_rate.setter
578+
def bit_rate(self, int value):
579+
self.ptr.bit_rate = value
580+
581+
@property
582+
def max_bit_rate(self):
583+
if self.ptr.rc_max_rate > 0:
584+
return self.ptr.rc_max_rate
585+
else:
586+
return None
587+
588+
@property
589+
def bit_rate_tolerance(self):
590+
self.ptr.bit_rate_tolerance
591+
592+
@bit_rate_tolerance.setter
593+
def bit_rate_tolerance(self, int value):
594+
self.ptr.bit_rate_tolerance = value
595+
596+
@property
597+
def thread_count(self):
592598
"""How many threads to use; 0 means auto.
593599
594600
Wraps :ffmpeg:`AVCodecContext.thread_count`.
595601
596602
"""
603+
return self.ptr.thread_count
597604

598-
def __get__(self):
599-
return self.ptr.thread_count
600-
601-
def __set__(self, int value):
602-
if lib.avcodec_is_open(self.ptr):
603-
raise RuntimeError("Cannot change thread_count after codec is open.")
604-
self.ptr.thread_count = value
605+
@thread_count.setter
606+
def thread_count(self, int value):
607+
if lib.avcodec_is_open(self.ptr):
608+
raise RuntimeError("Cannot change thread_count after codec is open.")
609+
self.ptr.thread_count = value
605610

606-
property thread_type:
611+
@property
612+
def thread_type(self):
607613
"""One of :class:`.ThreadType`.
608614
609615
Wraps :ffmpeg:`AVCodecContext.thread_type`.
610616
611617
"""
618+
return ThreadType.get(self.ptr.thread_type, create=True)
612619

613-
def __get__(self):
614-
return ThreadType.get(self.ptr.thread_type, create=True)
615-
616-
def __set__(self, value):
617-
if lib.avcodec_is_open(self.ptr):
618-
raise RuntimeError("Cannot change thread_type after codec is open.")
619-
self.ptr.thread_type = ThreadType[value].value
620+
@thread_type.setter
621+
def thread_type(self, value):
622+
if lib.avcodec_is_open(self.ptr):
623+
raise RuntimeError("Cannot change thread_type after codec is open.")
624+
self.ptr.thread_type = ThreadType[value].value
620625

621-
property skip_frame:
626+
@property
627+
def skip_frame(self):
622628
"""One of :class:`.SkipType`.
623629
624630
Wraps ffmpeg:`AVCodecContext.skip_frame`.
625631
626632
"""
633+
return SkipType._get(self.ptr.skip_frame, create=True)
627634

628-
def __get__(self):
629-
return SkipType._get(self.ptr.skip_frame, create=True)
630-
631-
def __set__(self, value):
632-
self.ptr.skip_frame = SkipType[value].value
635+
@skip_frame.setter
636+
def skip_frame(self, value):
637+
self.ptr.skip_frame = SkipType[value].value
633638

634-
property delay:
639+
@property
640+
def delay(self):
635641
"""Codec delay.
636642
637643
Wraps :ffmpeg:`AVCodecContext.delay`.
638644
639645
"""
640-
641-
def __get__(self):
642-
return self.ptr.delay
646+
return self.ptr.delay

av/container/input.pyx

+21-21
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,27 @@ cdef class InputContainer(Container):
8787
def __dealloc__(self):
8888
close_input(self)
8989

90-
property start_time:
91-
def __get__(self):
92-
self._assert_open()
93-
if self.ptr.start_time != lib.AV_NOPTS_VALUE:
94-
return self.ptr.start_time
95-
96-
property duration:
97-
def __get__(self):
98-
self._assert_open()
99-
if self.ptr.duration != lib.AV_NOPTS_VALUE:
100-
return self.ptr.duration
101-
102-
property bit_rate:
103-
def __get__(self):
104-
self._assert_open()
105-
return self.ptr.bit_rate
106-
107-
property size:
108-
def __get__(self):
109-
self._assert_open()
110-
return lib.avio_size(self.ptr.pb)
90+
@property
91+
def start_time(self):
92+
self._assert_open()
93+
if self.ptr.start_time != lib.AV_NOPTS_VALUE:
94+
return self.ptr.start_time
95+
96+
@property
97+
def duration(self):
98+
self._assert_open()
99+
if self.ptr.duration != lib.AV_NOPTS_VALUE:
100+
return self.ptr.duration
101+
102+
@property
103+
def bit_rate(self):
104+
self._assert_open()
105+
return self.ptr.bit_rate
106+
107+
@property
108+
def size(self):
109+
self._assert_open()
110+
return lib.avio_size(self.ptr.pb)
111111

112112
def close(self):
113113
close_input(self)

0 commit comments

Comments
 (0)