Fix T65398 - Fix frame rate base use in Python SMPTE functions
Differential Revision: https://developer.blender.org/D5064 Reviewed By: brecht
This commit is contained in:
@@ -450,12 +450,12 @@ def preset_paths(subdir):
|
||||
return dirs
|
||||
|
||||
|
||||
def smpte_from_seconds(time, fps=None):
|
||||
def smpte_from_seconds(time, fps=None, fps_base=None):
|
||||
"""
|
||||
Returns an SMPTE formatted string from the *time*:
|
||||
``HH:MM:SS:FF``.
|
||||
|
||||
If the *fps* is not given the current scene is used.
|
||||
If *fps* and *fps_base* are not given the current scene is used.
|
||||
|
||||
:arg time: time in seconds.
|
||||
:type time: int, float or ``datetime.timedelta``.
|
||||
@@ -463,7 +463,11 @@ def smpte_from_seconds(time, fps=None):
|
||||
:rtype: string
|
||||
"""
|
||||
|
||||
return smpte_from_frame(time_to_frame(time, fps=fps), fps)
|
||||
return smpte_from_frame(
|
||||
time_to_frame(time, fps=fps, fps_base=fps_base),
|
||||
fps=fps,
|
||||
fps_base=fps_base
|
||||
)
|
||||
|
||||
|
||||
def smpte_from_frame(frame, fps=None, fps_base=None):
|
||||
@@ -485,8 +489,9 @@ def smpte_from_frame(frame, fps=None, fps_base=None):
|
||||
if fps_base is None:
|
||||
fps_base = _bpy.context.scene.render.fps_base
|
||||
|
||||
fps = fps / fps_base
|
||||
sign = "-" if frame < 0 else ""
|
||||
frame = abs(frame * fps_base)
|
||||
frame = abs(frame)
|
||||
|
||||
return (
|
||||
"%s%02d:%02d:%02d:%02d" % (
|
||||
@@ -516,9 +521,11 @@ def time_from_frame(frame, fps=None, fps_base=None):
|
||||
if fps_base is None:
|
||||
fps_base = _bpy.context.scene.render.fps_base
|
||||
|
||||
fps = fps / fps_base
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
return timedelta(0, (frame * fps_base) / fps)
|
||||
return timedelta(0, frame / fps)
|
||||
|
||||
|
||||
def time_to_frame(time, fps=None, fps_base=None):
|
||||
@@ -540,12 +547,14 @@ def time_to_frame(time, fps=None, fps_base=None):
|
||||
if fps_base is None:
|
||||
fps_base = _bpy.context.scene.render.fps_base
|
||||
|
||||
fps = fps / fps_base
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
if isinstance(time, timedelta):
|
||||
time = time.total_seconds()
|
||||
|
||||
return (time / fps_base) * fps
|
||||
return time * fps
|
||||
|
||||
|
||||
def preset_find(name, preset_path, display_name=False, ext=".py"):
|
||||
|
||||
Reference in New Issue
Block a user