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