@@ -86,10 +86,10 @@ def test_serialize(self):
8686 clip .timing_sample_rate = (Fraction (24000 , 1001 ), Fraction (24000 , 1001 ))
8787 clip .timing_timecode = (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
8888 frame_rate = StrictlyPositiveRational (24 , 1 ),
89- sub_frame = 0 ),
89+ sub_frame = 0 , dropFrame = False ),
9090 Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 5 ,
9191 frame_rate = StrictlyPositiveRational (24 , 1 ),
92- sub_frame = 0 ))
92+ sub_frame = 0 , dropFrame = False ))
9393 sync = Synchronization (
9494 frequency = Fraction (24000 , 1001 ),
9595 locked = True ,
@@ -778,7 +778,7 @@ def test_timecode(self):
778778 with self .assertRaises (ValueError ):
779779 Timecode (hours = 0 , minutes = 0 , seconds = 0 , frames = 0 ,
780780 frame_rate = StrictlyPositiveRational (0 ,1 ),
781- sub_frame = 0 )
781+ sub_frame = 0 , dropFrame = False )
782782 self .assertTrue (TimingTimecode .validate (Timecode (hours = 0 , minutes = 0 , seconds = 0 , frames = 0 ,
783783 frame_rate = StrictlyPositiveRational (24 , 1 ))))
784784 self .assertTrue (TimingTimecode .validate (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
@@ -787,48 +787,49 @@ def test_timecode(self):
787787 frame_rate = StrictlyPositiveRational (24 , 1 ))))
788788 with self .assertRaises (ValueError ):
789789 Timecode (hours = - 1 , seconds = 2 , minutes = 3 , frames = 4 ,
790- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
790+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
791791 with self .assertRaises (ValueError ):
792792 Timecode (hours = 24 , seconds = 2 , minutes = 3 , frames = 4 ,
793- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
793+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
794794 with self .assertRaises (ValueError ):
795795 Timecode (hours = 1 , seconds = - 1 , minutes = 3 , frames = 4 ,
796- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
796+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
797797 with self .assertRaises (ValueError ):
798798 Timecode (hours = 1 , seconds = 60 , minutes = 3 , frames = 4 ,
799- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
799+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
800800 with self .assertRaises (ValueError ):
801801 Timecode (hours = 1 , seconds = 2 , minutes = - 1 , frames = 4 ,
802- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
802+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
803803 with self .assertRaises (ValueError ):
804804 Timecode (hours = 1 , seconds = 2 , minutes = 60 , frames = 4 ,
805- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
805+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
806806 with self .assertRaises (ValueError ):
807807 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = - 1 ,
808- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
808+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
809809 with self .assertRaises (ValueError ):
810810 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 24 ,
811- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 )
811+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 0 , dropFrame = False )
812812 with self .assertRaises (ValueError ):
813813 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 24 ,
814- frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 1 )
814+ frame_rate = StrictlyPositiveRational (24 , 1 ), sub_frame = 1 , dropFrame = False )
815815 with self .assertRaises (ValueError ):
816816 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 25 ,
817- frame_rate = StrictlyPositiveRational (25 , 1 ), sub_frame = 1 )
817+ frame_rate = StrictlyPositiveRational (25 , 1 ), sub_frame = 1 , dropFrame = False )
818818 with self .assertRaises (ValueError ):
819819 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 30 ,
820- frame_rate = StrictlyPositiveRational (30 , 1 ), sub_frame = 1 )
820+ frame_rate = StrictlyPositiveRational (30 , 1 ), sub_frame = 1 , dropFrame = False )
821821 with self .assertRaises (ValueError ):
822822 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 30 ,
823- frame_rate = StrictlyPositiveRational (30 , 1 ), sub_frame = 1 )
823+ frame_rate = StrictlyPositiveRational (30 , 1 ), sub_frame = 1 , dropFrame = False )
824824 self .assertTrue (TimingTimecode .validate (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 119 ,
825- frame_rate = StrictlyPositiveRational (120 , 1 ), sub_frame = 0 )))
825+ frame_rate = StrictlyPositiveRational (120 , 1 ),
826+ sub_frame = 0 , dropFrame = False )))
826827 with self .assertRaises (ValueError ):
827828 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 120 ,
828- frame_rate = StrictlyPositiveRational (120 , 1 ), sub_frame = 0 )
829+ frame_rate = StrictlyPositiveRational (120 , 1 ), sub_frame = 0 , dropFrame = False )
829830 with self .assertRaises (ValueError ):
830831 Timecode (hours = 1 , seconds = 2 , minutes = 3 , frames = 120 ,
831- frame_rate = StrictlyPositiveRational (121 , 1 ), sub_frame = 0 )
832+ frame_rate = StrictlyPositiveRational (121 , 1 ), sub_frame = 0 , dropFrame = False )
832833
833834 def test_timecode_from_dict (self ):
834835 r = TimingTimecode .from_json ({
@@ -841,16 +842,17 @@ def test_timecode_from_dict(self):
841842 "denom" : 1
842843 },
843844 "subFrame" : 0 ,
845+ "dropFrame" : False ,
844846 })
845847 self .assertEqual (str (r ), str (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
846848 frame_rate = StrictlyPositiveRational (24 , 1 ),
847- sub_frame = 0 )))
849+ sub_frame = 0 , dropFrame = False )))
848850
849851 def test_timecode_to_dict (self ):
852+ # If the explicit sub-frame or drop-frame is the default, it isn't serialized
850853 j0 = TimingTimecode .to_json (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
851854 frame_rate = StrictlyPositiveRational (24 , 1 ),
852- sub_frame = 0 ))
853- # since the explicit sub_frame of zero matches the default, it isn't serialized
855+ sub_frame = 0 , dropFrame = False ))
854856 self .assertDictEqual (j0 , {
855857 "hours" : 1 ,
856858 "minutes" : 2 ,
@@ -862,7 +864,7 @@ def test_timecode_to_dict(self):
862864 }})
863865 j1 = TimingTimecode .to_json (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
864866 frame_rate = StrictlyPositiveRational (24 , 1 ),
865- sub_frame = 1 ))
867+ sub_frame = 1 , dropFrame = False ))
866868 self .assertDictEqual (j1 , {
867869 "hours" : 1 ,
868870 "minutes" : 2 ,
@@ -873,6 +875,20 @@ def test_timecode_to_dict(self):
873875 "denom" : 1
874876 },
875877 "subFrame" : 1 })
878+ j2 = TimingTimecode .to_json (Timecode (hours = 1 , minutes = 2 , seconds = 3 , frames = 4 ,
879+ frame_rate = StrictlyPositiveRational (24 , 1 ),
880+ sub_frame = 1 , dropFrame = True ))
881+ self .assertDictEqual (j2 , {
882+ "hours" : 1 ,
883+ "minutes" : 2 ,
884+ "seconds" : 3 ,
885+ "frames" : 4 ,
886+ "frameRate" : {
887+ "num" : 24 ,
888+ "denom" : 1
889+ },
890+ "subFrame" : 1 ,
891+ "dropFrame" : True })
876892
877893 def test_lens_encoders_limits (self ):
878894 clip = Clip ()
0 commit comments