mirror of
https://github.com/iluvcapra/pycmx.git
synced 2025-12-31 08:50:54 +00:00
retyping some CDL items
This commit is contained in:
@@ -139,26 +139,17 @@ class Edit:
|
||||
return self._clip_name_statement.name
|
||||
|
||||
@property
|
||||
def asc_sop(self) -> Optional[AscSopComponents[str]]:
|
||||
def asc_sop(self) -> Optional[AscSopComponents[float]]:
|
||||
"""
|
||||
Get ASC CDL Slope-Offset-Power transfer function for clip, if present
|
||||
"""
|
||||
if self._asc_sop_statement is None:
|
||||
return None
|
||||
|
||||
s = self._asc_sop_statement
|
||||
|
||||
return AscSopComponents(
|
||||
slope=Rgb(red=s.slope_r, green=s.slope_g,
|
||||
blue=s.slope_b),
|
||||
offset=Rgb(red=s.offset_r, green=s.offset_g,
|
||||
blue=s.offset_g),
|
||||
power=Rgb(red=s.power_r, green=s.power_g,
|
||||
blue=s.power_b)
|
||||
)
|
||||
return self._asc_sop_statement.cdl_sop
|
||||
|
||||
@property
|
||||
def asc_sat(self) -> Optional[str]:
|
||||
def asc_sat(self) -> Optional[float]:
|
||||
"""
|
||||
Get ASC CDL saturation value for clip, if present
|
||||
"""
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
import re
|
||||
from typing import TextIO, List
|
||||
|
||||
from pycmx.cdl import AscSopComponents, Rgb
|
||||
|
||||
from .statements import (StmtCdlSat, StmtCdlSop, StmtFrmc, StmtRemark,
|
||||
StmtTitle, StmtUnrecognized, StmtFCM, StmtAudioExt,
|
||||
StmtClipName, StmtEffectsName, StmtEvent,
|
||||
@@ -117,11 +119,19 @@ def _parse_remark(line, line_number) -> object:
|
||||
return StmtRemark(line, line_number)
|
||||
|
||||
else:
|
||||
return StmtCdlSop(slope_r=v[0][0], slope_g=v[0][1],
|
||||
slope_b=v[0][2], offset_r=v[1][0],
|
||||
offset_g=v[1][1], offset_b=v[1][2],
|
||||
power_r=v[2][0], power_g=v[2][1],
|
||||
power_b=v[2][2], line_number=line_number)
|
||||
try:
|
||||
return StmtCdlSop(cdl_sop=AscSopComponents(
|
||||
slope=Rgb(red=float(v[0][0]), green=float(v[0][1]),
|
||||
blue=float(v[0][2])),
|
||||
offset=Rgb(red=float(v[1][0]), green=float(v[1][1]),
|
||||
blue=float(v[1][2])),
|
||||
power=Rgb(red=float(v[2][0]), green=float(v[2][1]),
|
||||
blue=float(v[2][2]))
|
||||
),
|
||||
line_number=line_number)
|
||||
|
||||
except ValueError:
|
||||
return StmtRemark(line, line_number)
|
||||
|
||||
elif line.startswith("ASC_SAT"):
|
||||
value = re.findall(r'(-?\d+(\.\d+)?)', line)
|
||||
@@ -130,7 +140,12 @@ def _parse_remark(line, line_number) -> object:
|
||||
return StmtRemark(line, line_number)
|
||||
|
||||
else:
|
||||
return StmtCdlSat(value=value[0][0], line_number=line_number)
|
||||
try:
|
||||
return StmtCdlSat(value=float(value[0][0]),
|
||||
line_number=line_number)
|
||||
|
||||
except ValueError:
|
||||
return StmtRemark(line, line_number)
|
||||
|
||||
elif line.startswith("FRMC"):
|
||||
match = re.match(
|
||||
|
||||
@@ -5,6 +5,8 @@ from collections import namedtuple
|
||||
|
||||
from typing import NamedTuple
|
||||
|
||||
from pycmx.cdl import AscSopComponents
|
||||
|
||||
|
||||
class StmtTitle(NamedTuple):
|
||||
title: str
|
||||
@@ -48,20 +50,12 @@ class StmtSourceFile(NamedTuple):
|
||||
|
||||
|
||||
class StmtCdlSop(NamedTuple):
|
||||
slope_r: str
|
||||
slope_g: str
|
||||
slope_b: str
|
||||
offset_r: str
|
||||
offset_g: str
|
||||
offset_b: str
|
||||
power_r: str
|
||||
power_g: str
|
||||
power_b: str
|
||||
cdl_sop: AscSopComponents[float]
|
||||
line_number: int
|
||||
|
||||
|
||||
class StmtCdlSat(NamedTuple):
|
||||
value: str
|
||||
value: float
|
||||
line_number: int
|
||||
|
||||
|
||||
|
||||
@@ -146,13 +146,13 @@ class TestParse(TestCase):
|
||||
sop = event.edits[0].asc_sop
|
||||
self.assertIsNotNone(sop)
|
||||
assert sop
|
||||
self.assertEqual(sop.slope.red, "0.9405")
|
||||
self.assertEqual(sop.offset.green, "-0.0276")
|
||||
self.assertEqual(sop.slope.red, float("0.9405"))
|
||||
self.assertEqual(sop.offset.green, float("-0.0276"))
|
||||
|
||||
sat = event.edits[0].asc_sat
|
||||
self.assertIsNotNone(sat)
|
||||
assert sat
|
||||
self.assertEqual(sat, '0.9640')
|
||||
self.assertEqual(sat, float('0.9640'))
|
||||
|
||||
def test_frmc(self):
|
||||
with open("tests/edls/cdl_frmc_example01.edl", "r") as f:
|
||||
|
||||
Reference in New Issue
Block a user