[Bf-blender-cvs] [da83f70754b] master: Fix T65398 - Fix frame rate base use in Python SMPTE functions

Richard Antalik noreply at git.blender.org
Wed Jun 19 19:53:11 CEST 2019


Commit: da83f70754b6e5eb6d96b94b0d1d554bdb9120fd
Author: Richard Antalik
Date:   Wed Jun 19 10:49:37 2019 -0700
Branches: master
https://developer.blender.org/rBda83f70754b6e5eb6d96b94b0d1d554bdb9120fd

Fix T65398 - Fix frame rate base use in Python SMPTE functions

Differential Revision: https://developer.blender.org/D5064

Reviewed By: brecht

===================================================================

M	release/scripts/modules/bpy/utils/__init__.py

===================================================================

diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py
index c96b0b88c6b..e6424de0742 100644
--- a/release/scripts/modules/bpy/utils/__init__.py
+++ b/release/scripts/modules/bpy/utils/__init__.py
@@ -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"):



More information about the Bf-blender-cvs mailing list