616
612
if current_frame < trans_begin_frame:
618
self.CreateCompositeXML(dom, current_frame, trans_begin_frame, "filler")
614
self.CreateCompositeXML(dom, current_frame, trans_begin_frame, "filler", fps=fps)
621
617
current_frame = trans_begin_frame
623
self.CreateCompositeXML(dom, current_frame, end, "right", has_right)
619
self.CreateCompositeXML(dom, current_frame, end, "right", has_right, fps=fps)
624
620
current_frame = end
626
622
elif self.video_fade_out:
628
624
begin_of_fade_out = end_frame - round(self.video_fade_amount * fps)
629
625
if current_frame < begin_of_fade_out:
631
self.CreateCompositeXML(dom, current_frame, begin_of_fade_out, "filler")
627
self.CreateCompositeXML(dom, current_frame, begin_of_fade_out, "filler", fps=fps)
633
629
current_frame = begin_of_fade_out
635
self.CreateCompositeXML(dom, current_frame, end, "fade out")
631
self.CreateCompositeXML(dom, current_frame, end, "fade out", fps=fps)
636
632
current_frame = end
639
635
#### ADD FINAL FILLER, IF NEEDED ####
640
636
if current_frame < end_frame:
642
self.CreateCompositeXML(dom, current_frame, end_frame, "filler")
645
def CreateCompositeXML(self, dom, current_frame, end_frame, comment, t = None):
638
self.CreateCompositeXML(dom, current_frame, end_frame, "filler", fps=fps)
641
def CreateCompositeXML(self, dom, current_frame, end_frame, comment, t = None, fps = None):
647
643
# get the frames per second (from the project)
648
644
project = self.parent.parent.project
651
646
# dont' add composite for a "filler" (if requested)
652
647
if self.composite == False and comment == "filler":
650
# get length and geometry key frames of clip (in frames)
651
clip_length_frames = self.length() * fps
652
kf_start = self.keyframes["start"]
653
kf_end = self.keyframes["end"]
655
h1, h2 = self.get_keyframe_values("height", current_frame, end_frame)
656
w1, w2 = self.get_keyframe_values("width", current_frame, end_frame)
657
x1, x2 = self.get_keyframe_values("x", current_frame, end_frame)
658
y1, y2 = self.get_keyframe_values("y", current_frame, end_frame)
659
a1, a2 = self.get_keyframe_values("alpha", current_frame, end_frame)
655
h1, h2 = self.get_keyframe_values("height", current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end)
656
w1, w2 = self.get_keyframe_values("width", current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end)
657
x1, x2 = self.get_keyframe_values("x", current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end)
658
y1, y2 = self.get_keyframe_values("y", current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end)
659
a1, a2 = self.get_keyframe_values("alpha", current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end)
661
661
# get the root tractor node
662
662
tractor_node = dom.getElementsByTagName("tractor")[0]
664
# Get clip index. Subtract this from the IN / OUT frame. This is
665
# to correct a problem with the blank space (in the XML) getting offset from the composites
666
# for some reason. Not really sure, but this seems to fix it. =)
667
#clip_index = self.parent.clips.index(self) + 1
669
664
# get the IN / OUT frame for the Transistion (absolute frame # of the project)
670
trans_in_frame_number = current_frame #- clip_index
671
trans_out_frame_number = end_frame #- clip_index
665
trans_in_frame_number = current_frame
666
trans_out_frame_number = end_frame
673
668
# Get the track index (i.e. track 0, 1, 2, 3, etc...)
674
669
if self.parent.name != "Background Track":
794
def get_keyframe_values(self, prop_name, current_frame, end_frame):
787
def get_keyframe_values(self, prop_name, current_frame, end_frame, fps, clip_length_frames, kf_start, kf_end):
795
789
# get the frames per second (from the project)
796
790
project = self.parent.parent.project
799
# get length of clip (in frames)
800
clip_length_frames = self.length() * fps
802
# get geometry key frames (since they have to be calculated across many composites)
803
kf_start = self.keyframes["start"]
804
kf_end = self.keyframes["end"]
806
792
if prop_name == "height":
807
793
prop_start = kf_start.height