View Issue Details

IDProjectCategoryView StatusLast Update
0000635Cinelerra-GG[All Projects] Featurepublic2023-06-13 21:42
Reportergoat Assigned ToPhyllisSmith  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status acknowledgedResolutionopen 
Product Version 
Target VersionFixed in Version 
Summary0000635: add hue correct effect
DescriptionI think that cinelerra-gg should have a "Hue correct" effect like in blender or natron for easier color correction.
Tagseffects, New Feature

Activities

Andrea_Paz

Andrea_Paz

2023-06-13 21:42

manager   ~0005503

https://dyne.org/software/frei0r/
Section: Acknowledgments
[...]
Frei0r is the result of a collective effort in coordination with several software developers meeting at Piksel between 2003 and 2005 to find a common standard for video effect plugins to be used among their applications: Andraz Tori (Cinelerra/CVS), ...

Perhaps looking at the code of CinCVS you can find the implementation of frei0r?
Andrew-R

Andrew-R

2023-06-12 18:41

reporter   ~0005500

Another non-native idea is to use GIMP + G'MIC filters
like described here on one sample image from video

http://gimpchat.com/viewtopic.php?f=28&t=11231

(HSV modes included, tested on gmic 2.2.3 + gimp 2.10.32)

for making CLUT file, then apply such file as usual :)
Andrew-R

Andrew-R

2023-06-12 18:02

reporter   ~0005499

on RGB curves in general apparently you can use ffmpeg's levels filter with Photoshop' ACV file ... converted from GIMP's curve preset!

https://github.com/fehlfarbe/gimp2acv
https://video.stackexchange.com/questions/16352/converting-gimp-curves-files-to-photoshop-acv-for-ffmpeg
Andrew-R

Andrew-R

2023-06-12 17:35

reporter   ~0005498

in theory frei0r set of effects provides irs own (8 bpc) version of curves apparently working with hue/saturation values too:

https://github.com/balint256/frei0r/blob/master/src/filter/curves/curves.c

right now this plugin is disabled, but you can try to enable it if you added frei0r plugins to your ffmpeg compilation, as I tried in 2020:

"I tried to recompile CinGG's version of ffmpeg with those plugins enabled:

FFMPEG_EXTRA_CFG="--enable-frei0r" (I have frei0r plugins 1.7.0 installed) and after tweaking /usr/share/cin/ffmpeg/plugin.opts (added frei0r filter_name=vignette at very end of it) I can see this plugin and even use some effects. "
Andrew-R

Andrew-R

2023-02-18 02:17

reporter   ~0005461

@Andrea_Paz, @PhyllisSmith - thanks for testing! It seems cinelerra really re-reads whole filter chain on actual rendering even if background render files present for given range.

I tried Oil Painting plugin with bigger parameter - so it was clearly much slower than decoding/encoding. I'll try to put my addition inside name-generated function with ext. added as parameter, but I agree this is deviation from this bugreport's goal.

Attempt at cheating away from some more serious work not worked, huh :-)
PhyllisSmith

PhyllisSmith

2023-02-17 19:29

manager   ~0005460

Last edited: 2023-02-17 19:30

View 2 revisions

@Andrew-R
ALMOST, but not quite. Tested Render Farm by itself with Background Rendering turned off - still works great. Background Rendering by itself with the extension added also works great. BUT the problem is that if you turn on both the Render Farm AND Background Rendering, some files are created with the extension and some are not and then when playing, you get many errors of missing brenderxxx.extension files (because the Render Farm created them without the extension; or somebody did).

I guess the reason for enabling BOTH background rendering and render farm is for a speedup. I did not even know you could do this, but it has been working as documented.
     "Frames per background rendering job This only works if a Render Farm is being
     used; otherwise, background rendering creates a single job for the entire
     timeline."

Although, not impacted, still tested rendering to a JPEG sequence list because wasn't sure about it and it works as expected.

Andrew-R

Andrew-R

2023-02-17 03:53

reporter   ~0005459

It seems Natron can re-read its own output, but you need to link writer and reader nodes?

https://github.com/NatronGitHub/Natron/issues/545

I hope it also works with sequences ...
PhyllisSmith

PhyllisSmith

2023-02-17 02:51

manager   ~0005458

@Andrew-R
I will test tomorrow.
Andrew-R

Andrew-R

2023-02-17 01:46

reporter   ~0005456

Last edited: 2023-02-17 18:32

View 2 revisions

@Andrea_Paz, my idea behind using background rendered set of images was to modify them "behind cinelerra's back", so we can play and render from them as usual, without manually creating fileluit index (there is script for this, as far as I remember).

Not sure if Natron can just overwrite all images in sequence? You need to skip very first 0 sized pseudo-index file, but apart from this it should work?

Note, if you change timeline in cingg she will overwrite part you worked on, so Natron actions (is there way to make macros in there?) must be redone (at least on image range modded by cingg). Hopefully renderfarm + bg render also still work ( Phyllis, can you test at least on your big machine?) so, cinelerra-specific operations still benefit from all connected computes with cinelerra render (but you need to update cins on render nodes, so they agree on image format extension we just added).

Andrea_Paz

Andrea_Paz

2023-02-16 21:37

manager   ~0005455

Thank you Andrew. With your patch the background render produces the images with extension, so you can import them and work in Natron (and I guess also in Blender or DaVinci Resolve, etc). So we can apply Hue curves, but also Rotoscoping and tracking. Then we can render a video or again a new sequence of images to import into CinGG. If we choose a new sequence of images we have to create an index (filelist) that is recognized by CinGG; how can we do that? Natron does not create a filelist and therefore CinGG cannot import it.

Or do you think it is possible to import the edited images from Natron without having to do a rendering?
Andrew-R

Andrew-R

2023-02-16 19:46

reporter   ~0005454

Oh, I was blind, there already was filename extension variable!

use on top of 0001 or just add this line to original file manually.

0002-EXPERIMENTAL-simplify-adding-extension-to-brender-fi.patch (849 bytes)
From 17dd61c8f815df7120c356d7908f8f4f570b53d0 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Thu, 16 Feb 2023 22:43:48 +0300
Subject: [PATCH 2/2] EXPERIMENTAL: simplify adding extension to brender files

---
 cinelerra-5.1/cinelerra/filelist.C | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/cinelerra-5.1/cinelerra/filelist.C b/cinelerra-5.1/cinelerra/filelist.C
index 4ad2efc4..891c38df 100644
--- a/cinelerra-5.1/cinelerra/filelist.C
+++ b/cinelerra-5.1/cinelerra/filelist.C
@@ -511,9 +511,7 @@ char* FileList::calculate_path(int number, char *string)
 			number,
 			number_digits,
 			number_start);
-			strcat(string, ".");
-			strcat(string, File::get_tag(asset->format));
-			string[strlen(string) - 1] ='\0';
+			strcat(string, file_extension);
 	}
 
 	return string;
-- 
2.39.2

Andrew-R

Andrew-R

2023-02-16 19:26

reporter   ~0005453

I tried to make cingg add filelist extension automatically for brender files. It seems to work but obv. need more testing with renderfarm and usual lists ...

0001-EXPERIMENTAL-add-extension-to-brender-files.patch (781 bytes)
From 61d227a5b1c369649fffeb5ad1b925378fcc1465 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <[email protected]>
Date: Thu, 16 Feb 2023 22:21:01 +0300
Subject: [PATCH] EXPERIMENTAL: add extension to brender files

---
 cinelerra-5.1/cinelerra/filelist.C | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/cinelerra-5.1/cinelerra/filelist.C b/cinelerra-5.1/cinelerra/filelist.C
index 3443a8b4..4ad2efc4 100644
--- a/cinelerra-5.1/cinelerra/filelist.C
+++ b/cinelerra-5.1/cinelerra/filelist.C
@@ -511,6 +511,9 @@ char* FileList::calculate_path(int number, char *string)
 			number,
 			number_digits,
 			number_start);
+			strcat(string, ".");
+			strcat(string, File::get_tag(asset->format));
+			string[strlen(string) - 1] ='\0';
 	}
 
 	return string;
-- 
2.39.2

Andrea_Paz

Andrea_Paz

2023-02-16 15:16

manager   ~0005452

I also think the idea is great.
I tried a background render (exr sequences) and noticed that it doesn't put the extension to the images created. Natron doesn't recognize them and can't import them.
Reading Natron's documentation you can see that it wants a simple list of images, without the need for a filelist ("name.exrs") as an index. So the background render is perfectly suitable if you can assign the extension to the various files you create.

However, you don't get out of the usual mode of making exchange renderings between programs...
PhyllisSmith

PhyllisSmith

2023-02-16 13:57

manager   ~0005451

@Andrew-R
That is an interesting possibility and would be useful for other potential plugins too.
Andrew-R

Andrew-R

2023-02-16 02:14

reporter   ~0005450

Thinking about possible workaround - may be Natron can work over our background render files, and then if not owerwriting them but at least create new set, and then bash script just renames natron-modified files back into format cinelerra accepts?
Andrea_Paz

Andrea_Paz

2023-02-15 09:37

manager   ~0005447

Last edited: 2023-02-15 09:39

View 2 revisions

Hue curves are complementary to the histogram (also called RGB curves).
https://helpx.adobe.com/my_en/premiere-pro/using/adjust-color-rgb-hsl-curves.html

It would be nice to be able to implement ofx in CinGG, it would fill the few shortcomings of CinGG in CC and Compositing.

As Phyllis said, one workaround is the Banana Blue plugin, but it is complex to use and inaccurate as results.

Andrew-R

Andrew-R

2023-02-15 05:39

reporter   ~0005446

also, just looking at GUI may be Histogram Bezier can be modified
for HSV in addition to RGB?

https://cinelerra-gg.org/download/CinelerraGG_Manual/Histogram_Bezier_Curves.html
Andrew-R

Andrew-R

2023-02-15 04:21

reporter   ~0005445

code for this effect in Natron seems to be here:

https://github.com/NatronGitHub/openfx-misc/blob/master/HueCorrect/HueCorrect.cpp

but may be whole ofx host work will be better idea?
PhyllisSmith

PhyllisSmith

2023-02-14 18:05

manager   ~0005444

@goat
We definitely need this effect. I checked to see if this could be done with Blue Banana, but it does not appear to be able to.

Issue History

Date Modified Username Field Change
2023-02-14 12:48 goat New Issue
2023-02-14 12:48 goat Tag Attached: effects
2023-02-14 12:48 goat Tag Attached: New Feature
2023-02-14 18:05 PhyllisSmith Assigned To => PhyllisSmith
2023-02-14 18:05 PhyllisSmith Status new => acknowledged
2023-02-14 18:05 PhyllisSmith Note Added: 0005444
2023-02-15 04:21 Andrew-R Note Added: 0005445
2023-02-15 05:39 Andrew-R Note Added: 0005446
2023-02-15 09:37 Andrea_Paz Note Added: 0005447
2023-02-15 09:39 Andrea_Paz Note Edited: 0005447 View Revisions
2023-02-16 02:14 Andrew-R Note Added: 0005450
2023-02-16 13:57 PhyllisSmith Note Added: 0005451
2023-02-16 15:16 Andrea_Paz Note Added: 0005452
2023-02-16 19:26 Andrew-R File Added: 0001-EXPERIMENTAL-add-extension-to-brender-files.patch
2023-02-16 19:26 Andrew-R Note Added: 0005453
2023-02-16 19:46 Andrew-R File Added: 0002-EXPERIMENTAL-simplify-adding-extension-to-brender-fi.patch
2023-02-16 19:46 Andrew-R Note Added: 0005454
2023-02-16 21:37 Andrea_Paz Note Added: 0005455
2023-02-17 01:46 Andrew-R Note Added: 0005456
2023-02-17 02:51 PhyllisSmith Note Added: 0005458
2023-02-17 03:53 Andrew-R Note Added: 0005459
2023-02-17 18:32 PhyllisSmith Note Edited: 0005456 View Revisions
2023-02-17 19:29 PhyllisSmith Note Added: 0005460
2023-02-17 19:30 PhyllisSmith Note Edited: 0005460 View Revisions
2023-02-18 02:17 Andrew-R Note Added: 0005461
2023-06-12 17:35 Andrew-R Note Added: 0005498
2023-06-12 18:02 Andrew-R Note Added: 0005499
2023-06-12 18:41 Andrew-R Note Added: 0005500
2023-06-13 21:42 Andrea_Paz Note Added: 0005503