[gegl] gcut: make floating point serialization locale independent
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] gcut: make floating point serialization locale independent
- Date: Mon, 14 Aug 2017 17:26:38 +0000 (UTC)
commit 96f30e26c2d50dafc6277604f77c76e38ca2e421
Author: Øyvind Kolås <pippin gimp org>
Date: Mon Aug 14 19:26:15 2017 +0200
gcut: make floating point serialization locale independent
gcut/default.edl | 46 ++++++++++++++--------------
gcut/default.edl.inc | 46 ++++++++++++++--------------
gcut/gcut.c | 79 +++++++++++++++++++++++++++++++++++++++----------
3 files changed, 109 insertions(+), 62 deletions(-)
---
diff --git a/gcut/default.edl b/gcut/default.edl
index d19d2cc..a520460 100644
--- a/gcut/default.edl
+++ b/gcut/default.edl
@@ -3,30 +3,30 @@ proxy-height=240
output-path=gcut.mp4
video-width=800
video-height=600
-fps=25.000000
-selection-start=291.000
-selection-end=291.000
+fps=25
+selection-start=291
+selection-end=291
frame-scale=0.398424
t0=56.702866
-frame-pos=0.000
+frame-pos=0
--- 21.000s 23.000s pixelize x-size=0.1rel y-size=0.1rel
-gegl:color value=black gegl:crop width=400 height=400 1.240s 2.000s --
-gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 2.000s -- [fade=1.040s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='note: this is a gcut video\nproject for testing features\nit relies
on synthetic GEGL\npatterns instead of\nvideo footage\nto be to minimie size\nfor inclusion in gcut
sources\nbeing able to create this project \nfrom scratch in the gcut ui\nis a current goal.'
size=0.071811296045780182rel color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0
x=0.10000000000000001rel y=0.051874876022338867rel ]
-gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0.000s 3.200s -- svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel color='rgb(1.0000,
1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={ 0.000000=0.400000rel
2.560000=0.000084rel } std-dev-y={ 0.000000=0.200000rel } clip-extent=false gegl:translate opi=0:0
x=0.10000000000000001rel y=0.3304142951965332rel ] gegl:lens-flare opi=0:0 pos-x={ 0.000000=-2.000000
2.400000=0.293004 4.000000=2.000000 } pos-y={ 0.000000=0.100000 2.400000=0.360697 25.000000=0.910000 }
-gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 2.000s -- [fade=2.560s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='video editing\nfileformat+render / ui' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.55924856662750244rel ]
-gegl:cell-noise opi=0:0 shape={ 0.000000=1.000000 1.600000=1.850000 } palettize=true gegl:translate
opi=0:0 x={ 20.000000=50.000000 } y={ 20.000000=500.000000 } gegl:crop opi=0:0 width=400 height=400
0.000s 1.600s -- [fade=0.920s]
-gegl:simplex-noise opi=0:0 seed=605124352 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=0.560s] gegl:threshold opi=0:0 value=0.13152152299880981 gegl:gaussian-blur opi=0:0
std-dev-x=0.012467504478991032rel std-dev-y=0.0055317822843790054rel gegl:exposure opi=1:0
black-level=0.029268454760313034 exposure=2.5591373443603516 gegl:levels opi=0:0 out-high=0.99985802173614502
-gegl:simplex-noise opi=0:0 scale=1.1438060998916626 seed=168548944 gegl:exposure opi=1:0
exposure=4.4479846954345703 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.360s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track ui with\ncross fade'
size=0.12115363776683807rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:dropshadow opi=0:0
x=0.0018535566050559282rel y=0.0019916105084121227rel radius=0.028898788616061211rel
opacity=1.9511399269104004 gegl:translate opi=0:0 x=0.063941836357116699rel y=0.14936363697052002rel ]
-gegl:simplex-noise opi=0:0 scale=2.982180118560791 iterations=3 gegl:crop opi=0:0 width=400 height=400
0.000s 1.000s -- [fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='multi-process rendering'
size=0.093153767287731171rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.16329610347747803rel ]
-gegl:simplex-noise opi=0:0 seed=1031312640 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=1.360s]
-gegl:simplex-noise opi=0:0 seed=331734624 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track editing'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.80000000000000004rel ]
-gegl:simplex-noise gegl:crop width=400 height=400 0.000s 1.440s -- [fade=1.360s]
-gegl:fractal-explorer zoom={ 0=120 2.4=1300} shiftx={ 0=-320 2.4=-2500} shifty=-180 gegl:crop width=480
height=640 0.000s 2.400s -- [fade=1.200s]
-gegl:sinus opi=0:0 complexity={ 0.040000=0.500000 1.600000=4.000000 3.200000=0.200000 } gegl:crop
opi=0:0 width=400 height=400 0.000s 3.200s -- [fade=2.400s]
-gegl:noise-solid opi=0:0 y-size=4.6258320808410645 seed=668093247 gegl:crop opi=0:0 width=400 height=400
0.000s 1.000s -- [fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='TODO'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.050000000000000003rel y=0.29999999999999999rel ]
-gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.440s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='crash recovery by default' size=0.081632360816001892rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.42925620079040527rel ]
-gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.360s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='overlays:audio filter' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.48208630084991455rel ]
-gegl:noise-solid gegl:crop width=400 height=400 0.000s 1.000s -- [fade=1.360s] over aux=[ text size=0.1rel
string='network rendering' color=yellow translate x=0.1rel y=0.8rel ]
-gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 18.960s -- svg:src-over opi=0:0 aux=[
gegl:text opi=0:0 string='end titles\n\nfull of newlines\n\nand some images and more\n\nmost of the
time\n\n\nthough\n\nusing an image that one pans\nwill provide better typographic control\nperhaps based on a
pdf/svg\n\nthis is is also where I should stick misc info' size=0.040000000000000001rel color='rgb(1.0000,
1.0000, 1.0000)' width=1 height=8 gegl:translate opi=0:0 x=0.10000000000000001rel y={ 0.000000=1.000000rel
32.000000=-2.000000rel } ]
+-- 21s 23s pixelize x-size=0.1rel y-size=0.1rel
+gegl:color value=black gegl:crop width=400 height=400 1.24s 2s --
+gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=1.04s] svg:src-over opi=0:0 aux=[
gegl:text opi=0:0 string='note: this is a gcut video\nproject for testing features\nit relies on synthetic
GEGL\npatterns instead of\nvideo footage\nto be to minimie size\nfor inclusion in gcut sources\nbeing able to
create this project \nfrom scratch in the gcut ui\nis a current goal.' size=0.071811296045780182rel
color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.051874876022338867rel ]
+gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0s 3.2000000000000002s --
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={
0.000000=0.400000rel 2.560000=0.000084rel } std-dev-y={ 0.000000=0.200000rel } clip-extent=false
gegl:translate opi=0:0 x=0.10000000000000001rel y=0.3304142951965332rel ] gegl:lens-flare opi=0:0 pos-x={
0.000000=-2.000000 2.400000=0.293004 4.000000=2.000000 } pos-y={ 0.000000=0.100000 2.400000=0.360697
25.000000=0.910000 }
+gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=2.5600000000000001s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='video editing\nfileformat+render / ui' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.55924856662750244rel ]
+gegl:cell-noise opi=0:0 shape={ 0.000000=1.000000 1.600000=1.850000 } palettize=true gegl:translate
opi=0:0 x={ 20.000000=50.000000 } y={ 20.000000=500.000000 } gegl:crop opi=0:0 width=400 height=400 0s
1.6000000000000001s -- [fade=0.92000000000000004s]
+gegl:simplex-noise opi=0:0 seed=605124352 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=0.56000000000000005s] gegl:threshold opi=0:0 value=0.13152152299880981 gegl:gaussian-blur opi=0:0
std-dev-x=0.012467504478991032rel std-dev-y=0.0055317822843790054rel gegl:exposure opi=1:0
black-level=0.029268454760313034 exposure=2.5591373443603516 gegl:levels opi=0:0 out-high=0.99985802173614502
+gegl:simplex-noise opi=0:0 scale=1.1438060998916626 seed=168548944 gegl:exposure opi=1:0
exposure=4.4479846954345703 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.3600000000000001s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track ui with\ncross fade'
size=0.12115363776683807rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:dropshadow opi=0:0
x=0.0018535566050559282rel y=0.0019916105084121227rel radius=0.028898788616061211rel
opacity=1.9511399269104004 gegl:translate opi=0:0 x=0.063941836357116699rel y=0.14936363697052002rel ]
+gegl:simplex-noise opi=0:0 scale=2.982180118560791 iterations=3 gegl:crop opi=0:0 width=400 height=400 0s 1s
-- [fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='multi-process rendering'
size=0.093153767287731171rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.16329610347747803rel ]
+gegl:simplex-noise opi=0:0 seed=1031312640 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=1.3600000000000001s]
+gegl:simplex-noise opi=0:0 seed=331734624 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track editing'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.80000000000000004rel ]
+gegl:simplex-noise gegl:crop width=400 height=400 0s 1.4399999999999999s -- [fade=1.3600000000000001s]
+gegl:fractal-explorer zoom={ 0=120 2.4=1300} shiftx={ 0=-320 2.4=-2500} shifty=-180 gegl:crop width=480
height=640 0s 2.3999999999999999s -- [fade=1.2s]
+gegl:sinus opi=0:0 complexity={ 0.040000=0.500000 1.600000=4.000000 3.200000=0.200000 } gegl:crop
opi=0:0 width=400 height=400 0s 3.2000000000000002s -- [fade=2.3999999999999999s]
+gegl:noise-solid opi=0:0 y-size=4.6258320808410645 seed=668093247 gegl:crop opi=0:0 width=400 height=400 0s
1s -- [fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='TODO'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.050000000000000003rel y=0.29999999999999999rel ]
+gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.4399999999999999s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='crash recovery by default' size=0.081632360816001892rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.42925620079040527rel ]
+gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.3600000000000001s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='overlays:audio filter' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.48208630084991455rel ]
+gegl:noise-solid gegl:crop width=400 height=400 0s 1s -- [fade=1.3600000000000001s] over aux=[ text
size=0.1rel string='network rendering' color=yellow translate x=0.1rel y=0.8rel ]
+gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 18.960000000000001s -- svg:src-over opi=0:0
aux=[ gegl:text opi=0:0 string='end titles\n\nfull of newlines\n\nand some images and more\n\nmost of the
time\n\n\nthough\n\nusing an image that one pans\nwill provide better typographic control\nperhaps based on a
pdf/svg\n\nthis is is also where I should stick misc info' size=0.040000000000000001rel color='rgb(1.0000,
1.0000, 1.0000)' width=1 height=8 gegl:translate opi=0:0 x=0.10000000000000001rel y={ 0.000000=1.000000rel
32.000000=-2.000000rel } ]
-----
diff --git a/gcut/default.edl.inc b/gcut/default.edl.inc
index 8054cdb..e3760c6 100644
--- a/gcut/default.edl.inc
+++ b/gcut/default.edl.inc
@@ -3,30 +3,30 @@
"output-path=gcut.mp4\n"
"video-width=800\n"
"video-height=600\n"
-"fps=25.000000\n"
-"selection-start=291.000\n"
-"selection-end=291.000\n"
+"fps=25\n"
+"selection-start=291\n"
+"selection-end=291\n"
"frame-scale=0.398424\n"
"t0=56.702866\n"
-"frame-pos=0.000\n"
+"frame-pos=0\n"
"\n"
-"-- 21.000s 23.000s pixelize x-size=0.1rel y-size=0.1rel\n"
-"gegl:color value=black gegl:crop width=400 height=400 1.240s 2.000s -- \n"
-"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 2.000s -- [fade=1.040s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='note: this is a gcut video\\nproject for testing features\\nit
relies on synthetic GEGL\\npatterns instead of\\nvideo footage\\nto be to minimie size\\nfor inclusion in
gcut sources\\nbeing able to create this project \\nfrom scratch in the gcut ui\\nis a current goal.'
size=0.071811296045780182rel color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0
x=0.10000000000000001rel y=0.051874876022338867rel ]\n"
-"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0.000s 3.200s -- svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel color='rgb(1.0000,
1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={ 0.000000=0.400000rel
2.560000=0.000084rel } std-dev-y={ 0.000000=0.200000rel } clip-extent=false gegl:translate opi=0:0
x=0.10000000000000001rel y=0.3304142951965332rel ] gegl:lens-flare opi=0:0 pos-x={ 0.000000=-2.000000
2.400000=0.293004 4.000000=2.000000 } pos-y={ 0.000000=0.100000 2.400000=0.360697 25.000000=0.910000
}\n"
-"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 2.000s -- [fade=2.560s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='video editing\\nfileformat+render / ui' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.55924856662750244rel ]\n"
-"gegl:cell-noise opi=0:0 shape={ 0.000000=1.000000 1.600000=1.850000 } palettize=true gegl:translate
opi=0:0 x={ 20.000000=50.000000 } y={ 20.000000=500.000000 } gegl:crop opi=0:0 width=400 height=400
0.000s 1.600s -- [fade=0.920s] \n"
-"gegl:simplex-noise opi=0:0 seed=605124352 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=0.560s] gegl:threshold opi=0:0 value=0.13152152299880981 gegl:gaussian-blur opi=0:0
std-dev-x=0.012467504478991032rel std-dev-y=0.0055317822843790054rel gegl:exposure opi=1:0
black-level=0.029268454760313034 exposure=2.5591373443603516 gegl:levels opi=0:0
out-high=0.99985802173614502\n"
-"gegl:simplex-noise opi=0:0 scale=1.1438060998916626 seed=168548944 gegl:exposure opi=1:0
exposure=4.4479846954345703 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.360s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track ui with\\ncross fade'
size=0.12115363776683807rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:dropshadow opi=0:0
x=0.0018535566050559282rel y=0.0019916105084121227rel radius=0.028898788616061211rel
opacity=1.9511399269104004 gegl:translate opi=0:0 x=0.063941836357116699rel y=0.14936363697052002rel ]\n"
-"gegl:simplex-noise opi=0:0 scale=2.982180118560791 iterations=3 gegl:crop opi=0:0 width=400 height=400
0.000s 1.000s -- [fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='multi-process rendering'
size=0.093153767287731171rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.16329610347747803rel ]\n"
-"gegl:simplex-noise opi=0:0 seed=1031312640 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=1.360s] \n"
-"gegl:simplex-noise opi=0:0 seed=331734624 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s --
[fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track editing'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.80000000000000004rel ]\n"
-"gegl:simplex-noise gegl:crop width=400 height=400 0.000s 1.440s -- [fade=1.360s] \n"
-"gegl:fractal-explorer zoom={ 0=120 2.4=1300} shiftx={ 0=-320 2.4=-2500} shifty=-180 gegl:crop width=480
height=640 0.000s 2.400s -- [fade=1.200s] \n"
-"gegl:sinus opi=0:0 complexity={ 0.040000=0.500000 1.600000=4.000000 3.200000=0.200000 } gegl:crop
opi=0:0 width=400 height=400 0.000s 3.200s -- [fade=2.400s] \n"
-"gegl:noise-solid opi=0:0 y-size=4.6258320808410645 seed=668093247 gegl:crop opi=0:0 width=400 height=400
0.000s 1.000s -- [fade=1.360s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='TODO'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.050000000000000003rel y=0.29999999999999999rel ]\n"
-"gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.440s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='crash recovery by default' size=0.081632360816001892rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.42925620079040527rel ]\n"
-"gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 1.000s -- [fade=1.360s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='overlays:audio filter' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.48208630084991455rel ]\n"
-"gegl:noise-solid gegl:crop width=400 height=400 0.000s 1.000s -- [fade=1.360s] over aux=[ text size=0.1rel
string='network rendering' color=yellow translate x=0.1rel y=0.8rel ]\n"
-"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0.000s 18.960s -- svg:src-over opi=0:0 aux=[
gegl:text opi=0:0 string='end titles\\n\\nfull of newlines\\n\\nand some images and more\\n\\nmost of the
time\\n\\n\\nthough\\n\\nusing an image that one pans\\nwill provide better typographic control\\nperhaps
based on a pdf/svg\\n\\nthis is is also where I should stick misc info' size=0.040000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=8 gegl:translate opi=0:0 x=0.10000000000000001rel y={
0.000000=1.000000rel 32.000000=-2.000000rel } ]\n"
+"-- 21s 23s pixelize x-size=0.1rel y-size=0.1rel\n"
+"gegl:color value=black gegl:crop width=400 height=400 1.24s 2s -- \n"
+"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=1.04s] svg:src-over opi=0:0 aux=[
gegl:text opi=0:0 string='note: this is a gcut video\\nproject for testing features\\nit relies on synthetic
GEGL\\npatterns instead of\\nvideo footage\\nto be to minimie size\\nfor inclusion in gcut sources\\nbeing
able to create this project \\nfrom scratch in the gcut ui\\nis a current goal.' size=0.071811296045780182rel
color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.051874876022338867rel ]\n"
+"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0s 3.2000000000000002s --
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={
0.000000=0.400000rel 2.560000=0.000084rel } std-dev-y={ 0.000000=0.200000rel } clip-extent=false
gegl:translate opi=0:0 x=0.10000000000000001rel y=0.3304142951965332rel ] gegl:lens-flare opi=0:0 pos-x={
0.000000=-2.000000 2.400000=0.293004 4.000000=2.000000 } pos-y={ 0.000000=0.100000 2.400000=0.360697
25.000000=0.910000 }\n"
+"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=2.5600000000000001s] svg:src-over
opi=0:0 aux=[ gegl:text opi=0:0 string='video editing\\nfileformat+render / ui' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.55924856662750244rel ]\n"
+"gegl:cell-noise opi=0:0 shape={ 0.000000=1.000000 1.600000=1.850000 } palettize=true gegl:translate
opi=0:0 x={ 20.000000=50.000000 } y={ 20.000000=500.000000 } gegl:crop opi=0:0 width=400 height=400 0s
1.6000000000000001s -- [fade=0.92000000000000004s] \n"
+"gegl:simplex-noise opi=0:0 seed=605124352 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=0.56000000000000005s] gegl:threshold opi=0:0 value=0.13152152299880981 gegl:gaussian-blur opi=0:0
std-dev-x=0.012467504478991032rel std-dev-y=0.0055317822843790054rel gegl:exposure opi=1:0
black-level=0.029268454760313034 exposure=2.5591373443603516 gegl:levels opi=0:0
out-high=0.99985802173614502\n"
+"gegl:simplex-noise opi=0:0 scale=1.1438060998916626 seed=168548944 gegl:exposure opi=1:0
exposure=4.4479846954345703 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.3600000000000001s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track ui with\\ncross fade'
size=0.12115363776683807rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:dropshadow opi=0:0
x=0.0018535566050559282rel y=0.0019916105084121227rel radius=0.028898788616061211rel
opacity=1.9511399269104004 gegl:translate opi=0:0 x=0.063941836357116699rel y=0.14936363697052002rel ]\n"
+"gegl:simplex-noise opi=0:0 scale=2.982180118560791 iterations=3 gegl:crop opi=0:0 width=400 height=400 0s
1s -- [fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='multi-process
rendering' size=0.093153767287731171rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate
opi=0:0 x=0.059999999999999998rel y=0.16329610347747803rel ]\n"
+"gegl:simplex-noise opi=0:0 seed=1031312640 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=1.3600000000000001s] \n"
+"gegl:simplex-noise opi=0:0 seed=331734624 gegl:crop opi=0:0 width=400 height=400 0s 1s --
[fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='single track editing'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.059999999999999998rel y=0.80000000000000004rel ]\n"
+"gegl:simplex-noise gegl:crop width=400 height=400 0s 1.4399999999999999s -- [fade=1.3600000000000001s] \n"
+"gegl:fractal-explorer zoom={ 0=120 2.4=1300} shiftx={ 0=-320 2.4=-2500} shifty=-180 gegl:crop width=480
height=640 0s 2.3999999999999999s -- [fade=1.2s] \n"
+"gegl:sinus opi=0:0 complexity={ 0.040000=0.500000 1.600000=4.000000 3.200000=0.200000 } gegl:crop
opi=0:0 width=400 height=400 0s 3.2000000000000002s -- [fade=2.3999999999999999s] \n"
+"gegl:noise-solid opi=0:0 y-size=4.6258320808410645 seed=668093247 gegl:crop opi=0:0 width=400 height=400 0s
1s -- [fade=1.3600000000000001s] svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='TODO'
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0
x=0.050000000000000003rel y=0.29999999999999999rel ]\n"
+"gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.4399999999999999s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='crash recovery by default' size=0.081632360816001892rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.42925620079040527rel ]\n"
+"gegl:noise-solid opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 1s -- [fade=1.3600000000000001s]
svg:src-over opi=0:0 aux=[ gegl:text opi=0:0 string='overlays:audio filter' size=0.10000000000000001rel
color='rgb(1.0000, 1.0000, 0.0000)' width=1 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel
y=0.48208630084991455rel ]\n"
+"gegl:noise-solid gegl:crop width=400 height=400 0s 1s -- [fade=1.3600000000000001s] over aux=[ text
size=0.1rel string='network rendering' color=yellow translate x=0.1rel y=0.8rel ]\n"
+"gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 18.960000000000001s -- svg:src-over opi=0:0
aux=[ gegl:text opi=0:0 string='end titles\\n\\nfull of newlines\\n\\nand some images and more\\n\\nmost of
the time\\n\\n\\nthough\\n\\nusing an image that one pans\\nwill provide better typographic control\\nperhaps
based on a pdf/svg\\n\\nthis is is also where I should stick misc info' size=0.040000000000000001rel
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=8 gegl:translate opi=0:0 x=0.10000000000000001rel y={
0.000000=1.000000rel 32.000000=-2.000000rel } ]\n"
"-----\n"
diff --git a/gcut/gcut.c b/gcut/gcut.c
index 81e111e..8352b00 100644
--- a/gcut/gcut.c
+++ b/gcut/gcut.c
@@ -295,7 +295,9 @@ gchar *gcut_get_pos_hash_full (GeglEDL *edl, double pos,
char *clip0_hash = clip_get_pos_hash (clip, clip_frame_pos);
char *clip1_hash = clip_get_pos_hash (prev, pos - prev_clip_start + clip_get_start (prev));
double ratio = 0.5 + ((pos -clip_start) * 1.0 / prev_fade_len)/2;
- g_string_append_printf (str, "%s %s %f", clip1_hash, clip0_hash, ratio);
+ gchar fstr[G_ASCII_DTOSTR_BUF_SIZE];
+ g_ascii_dtostr (fstr, sizeof(fstr), ratio);
+ g_string_append_printf (str, "%s %s %s", clip1_hash, clip0_hash, fstr);
g_free (clip0_hash);
g_free (clip1_hash);
@@ -312,7 +314,9 @@ gchar *gcut_get_pos_hash_full (GeglEDL *edl, double pos,
char *clip0_hash = clip_get_pos_hash (clip, clip_frame_pos);
char *clip1_hash = clip_get_pos_hash (next, pos - (clip_start + clip_duration) + clip_get_start
(next));
double ratio = (1.0-(clip_duration -(pos -clip_start)) * 1.0 / next_fade_len)/2;
- g_string_append_printf (str, "%s %s %f", clip0_hash, clip1_hash, ratio);
+ gchar fstr[G_ASCII_DTOSTR_BUF_SIZE];
+ g_ascii_dtostr (fstr, sizeof(fstr), ratio);
+ g_string_append_printf (str, "%s %s %s", clip0_hash, clip1_hash, fstr);
g_free (clip0_hash);
g_free (clip1_hash);
if (clip0) *clip0 = clip;
@@ -1360,6 +1364,8 @@ int main (int argc, char **argv)
int frames;
double duration;
double fps;
+ gchar fstr[G_ASCII_DTOSTR_BUF_SIZE];
+
GeglNode *gegl = gegl_node_new ();
GeglNode *probe = gegl_node_new_child (gegl, "operation",
"gegl:ff-load", "path", edl_path,
@@ -1371,7 +1377,8 @@ int main (int argc, char **argv)
duration = frames / fps;
g_object_unref (gegl);
- sprintf (str, "%s 0.0s %.3fs\n", edl_path, duration);
+ g_ascii_dtostr (fstr, sizeof(fstr), duration);
+ sprintf (str, "%s 0.0s %ss\n", edl_path, fstr);
{
char * path = realpath (edl_path, NULL);
char * rpath = g_strdup_printf ("%s.edl", path);
@@ -1459,6 +1466,7 @@ char *gcut_serialize (GeglEDL *edl)
GList *l;
char *ret;
GString *ser = g_string_new ("");
+ gchar fstr[G_ASCII_DTOSTR_BUF_SIZE];
if (edl->proxy_width != DEFAULT_proxy_width)
g_string_append_printf (ser, "proxy-width=%i\n", edl->proxy_width);
@@ -1488,23 +1496,45 @@ char *gcut_serialize (GeglEDL *edl)
if (edl->audio_samplerate != DEFAULT_audio_samplerate)
g_string_append_printf (ser, "audio-samplerate=%i\n", edl->audio_samplerate);
- g_string_append_printf (ser, "fps=%f\n", gcut_get_fps (edl));
+ g_ascii_dtostr (fstr, sizeof(fstr), gcut_get_fps (edl));
+ g_string_append_printf (ser, "fps=%s\n", fstr);
if (edl->range_start != DEFAULT_range_start)
- g_string_append_printf (ser, "range-start=%.3f\n", edl->range_start);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->range_start);
+ g_string_append_printf (ser, "range-start=%s\n", fstr);
+ }
if (edl->range_end != DEFAULT_range_end)
- g_string_append_printf (ser, "range-end=%.3f\n", edl->range_end);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->range_end);
+ g_string_append_printf (ser, "range-end=%s\n", fstr);
+ }
if (edl->selection_start != DEFAULT_selection_start)
- g_string_append_printf (ser, "selection-start=%.3f\n", edl->selection_start);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->selection_start);
+ g_string_append_printf (ser, "selection-start=%s\n", fstr);
+ }
+
if (edl->selection_end != DEFAULT_selection_end)
- g_string_append_printf (ser, "selection-end=%.3f\n", edl->selection_end);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->selection_end);
+ g_string_append_printf (ser, "selection-end=%s\n", fstr);
+ }
+
if (edl->scale != 1.0)
- g_string_append_printf (ser, "frame-scale=%f\n", edl->scale);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->scale);
+ g_string_append_printf (ser, "frame-scale=%s\n", fstr);
+ }
if (edl->t0 != 1.0)
- g_string_append_printf (ser, "t0=%f\n", edl->t0);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->t0);
+ g_string_append_printf (ser, "t0=%s\n", fstr);
+ }
- g_string_append_printf (ser, "frame-pos=%.3f\n", edl->frame_pos_ui);
+ g_ascii_dtostr (fstr, sizeof(fstr), edl->frame_pos_ui);
+ g_string_append_printf (ser, "frame-pos=%s\n", fstr);
g_string_append_printf (ser, "\n");
for (l = edl->clips; l; l = l->next)
@@ -1521,7 +1551,12 @@ char *gcut_serialize (GeglEDL *edl)
if (clip->start == 0 && clip->end == 0)
g_string_append_printf (ser, "-- ");
else
- g_string_append_printf (ser, "-- %.3fs %.3fs ", clip->start, clip->end);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->start);
+ g_string_append_printf (ser, "-- %ss", fstr);
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->end);
+ g_string_append_printf (ser, " %ss ", fstr);
+ }
g_string_append_printf (ser, "%s\n", clip->filter_graph);
}
else if (strlen(path)== 0 &&
@@ -1533,15 +1568,27 @@ char *gcut_serialize (GeglEDL *edl)
}
else
{
- g_string_append_printf (ser, "%s %.3fs %.3fs ", path, clip->start, clip->end);
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->start);
+ g_string_append_printf (ser, "%s %ss ", path, fstr);
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->end);
+ g_string_append_printf (ser, "%ss ", fstr);
if (clip->filter_graph||clip->fade)
g_string_append_printf (ser, "-- ");
if (clip->fade)
- g_string_append_printf (ser, "[fade=%.3fs] ", clip->fade);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->fade);
+ g_string_append_printf (ser, "[fade=%ss] ", fstr);
+ }
if (clip->fps>0.001)
- g_string_append_printf (ser, "[fps=%.3f] ", clip->fps);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->fps);
+ g_string_append_printf (ser, "[fps=%s] ", fstr);
+ }
if (fabs(clip->rate - 1.0 )>0.001)
- g_string_append_printf (ser, "[rate=%.5f] ", clip->rate);
+ {
+ g_ascii_dtostr (fstr, sizeof(fstr), clip->rate);
+ g_string_append_printf (ser, "[rate=%s] ", fstr);
+ }
if (clip->filter_graph)
g_string_append_printf (ser, "%s", clip->filter_graph);
g_string_append_printf (ser, "\n");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]