@@ -215,44 +215,45 @@ cdef class CodecContext:
215
215
skip_manual = flags2.flag_property(" SKIP_MANUAL" )
216
216
ro_flush_noop = flags2.flag_property(" RO_FLUSH_NOOP" )
217
217
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)
256
257
257
258
cpdef open (self , bint strict = True ):
258
259
if lib.avcodec_is_open(self .ptr):
@@ -521,122 +522,125 @@ cdef class CodecContext:
521
522
522
523
frame.index = self .ptr.frame_number - 1
523
524
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 ):
592
598
""" How many threads to use; 0 means auto.
593
599
594
600
Wraps :ffmpeg:`AVCodecContext.thread_count`.
595
601
596
602
"""
603
+ return self .ptr.thread_count
597
604
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
605
610
606
- property thread_type :
611
+ @property
612
+ def thread_type (self ):
607
613
""" One of :class:`.ThreadType`.
608
614
609
615
Wraps :ffmpeg:`AVCodecContext.thread_type`.
610
616
611
617
"""
618
+ return ThreadType.get(self .ptr.thread_type, create = True )
612
619
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
620
625
621
- property skip_frame :
626
+ @property
627
+ def skip_frame (self ):
622
628
""" One of :class:`.SkipType`.
623
629
624
630
Wraps ffmpeg:`AVCodecContext.skip_frame`.
625
631
626
632
"""
633
+ return SkipType._get(self .ptr.skip_frame, create = True )
627
634
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
633
638
634
- property delay :
639
+ @property
640
+ def delay (self ):
635
641
""" Codec delay.
636
642
637
643
Wraps :ffmpeg:`AVCodecContext.delay`.
638
644
639
645
"""
640
-
641
- def __get__ (self ):
642
- return self .ptr.delay
646
+ return self .ptr.delay
0 commit comments