Comments (9)
P.S. I just saw your Doom9 forum thread. I signed up for Doom9 but it does not let me post until I have been registered for 5 days. I will post there 5 days later.
In the meantime, I would really appreciate if a Github user with a Doom9 account can copy/paste and post the above feature request message to the following thread:
http://forum.doom9.org/showthread.php?t=166504
Thanks
from fmtconv.
I carried it to Doom9.
from fmtconv.
Dear Benmanw,
Thanks for moving the message to Doom9. I won't be able to post on Doom9 until I have been registered for 5 days (until 3/19/2016). I would appreciate if you can also move the following message along with the source code patches that I generated.
I attached the source code patch zip file for fmtconv r18 that modifies SMPTE-ST-2084 function to "0 cd/m2 to 1000 cd/m2" luminance range and adds the "dci-p3" preset to primaries function. I also attached a zip file that contains the complete fmtconv r18 source code that is already patched. I would appreciate if somebody with Visual Studio can compile the 64bit fmtconv.dll for Windows 7. No matter how hard I tried in the last 2 days, I could not compile fmtconv.dll on Windows 7 by using MSYS2 and mingw64.
I saw that fmtconv uses the "Dolby Labs recommended version of SMPTE-ST-2084 function" specified on page 17/58 of the following PDF document.
http://www.mediaandbroadcast.bt.com/wp-content/uploads/D2936-UHDTV-final.pdf
I think that was good choice because Dolby Labs version is designed for easy scalability between luminance ranges. Upper bound of the range can be changed by dividing or multiplying the right hand side of the function shown on page 17/58 of the PDF document. That's how I modified lines 78 and 83 of the TransOp2084.cpp file.
I am sure that fmtconv author, Laurent, can find a good way to accept the upper bound (or an upper bound multiplier) for the luminance range as an input to SMPTE-ST-2084 function. Instead of hard coding the upper bound of the range into the function (as I did in my patch), it is better to have the ability to play with it.
I added "dci-p3" primaries preset after line 356 of Primaries.cpp function.
fmtconv-r18-HDR1000-patch-only.zip
fmtconv-r18-patched-with-HDR1000features.zip
Best Regards
from fmtconv.
that patchset is linux compatible?
greetings
from fmtconv.
This is only about the range. But why can't you simply modify it with Expr? All you've added on that side is a simple multiplication.
from fmtconv.
Dear sl1pkn07,
I do not have linux. I only have Windows 7. Having said that, in theory the patch should be compatible with all platforms (including linux) that fmtconv currently supports since the changes I made are very minor. For SMPTE-ST-2084 function there are only two lines of multiplication changes. For the primaries there are 7 lines added for "dci-p3" preset that follow the exact same preset format that fmtconv author used for other presets.
from fmtconv.
Dear Myrsloik,
Thanks for the feedback. How can I change the luminance mapping range of Fmtconv's SMPTE-ST-2084 function from the original "0 cd/m2 to 10000 cd/m2" range to the desired "0 cd/m2 to 1000 cd/m2" range by using Expr function? Please let me know. That would be very useful to me.
The main reason why I created the patch is to clearly show which modification is necessary to fmtconv's SMPTE-ST-2084 function for HDR1000 compatibility. All that is needed for HDR1000 compatibility is a very very simple multiplication change in the source code (as you also pointed out by examining the changes I made). If I just pointed Laurent to the PDF file with Dolby Labs SMPTE-ST-2084 formula and asked him to figure out how to make the changes, it would take him much much longer to figure out what he needs to change.
Laurent's final implementation will probably be different. As I said in my message, instead of hard coding the upper bound of the range into the function (as I did in my patch), it is better to have the ability to play with it. He will probably find a good way to accept the upper bound (or an upper bound multiplier) for the luminance range as an input to SMPTE-ST-2084 function. I don't have enough programming experience to make major changes like that in the source code.
from fmtconv.
Simple multiplication by 10 for everything. This way you can do it without modifying fmtconv itself
clip = core.std.Expr(clip, expr="x 10 *")
from fmtconv.
– I added the DCI-P3 preset to primaries
→ 22cefbc
– Use cont=1000.0/10000.0
in transfer
when converting from a transfer characteristic where 1.0 represents 1000 cd/m² to the ST 2084 characteristic.
from fmtconv.
Related Issues (20)
- fmtc.bitdepth(bits=14) does not work HOT 2
- Segfault on FreeBSD - debug build has undefined symbol at runtime HOT 2
- Problem with spline16 HOT 9
- "cannot find avstp.dll.Usage restricted to single threading" debug message in vapoursynth HOT 3
- bitdepth() does not set _ColorRange property after conversion HOT 3
- Matrix col_fam and the cm* constants in future VS versions HOT 8
- r24 fails to build on IA32 (32-bit x86) HOT 2
- cplaced (avs+) HOT 2
- vapoursynth.Error: transfer: Function does not take argument(s) named logceis, logceid HOT 1
- Matrix will raise error when convert between RGB and OPP HOT 1
- matrix: unsupported color family for output. HOT 1
- transfer: Vapoursynth crash when use r26 HOT 1
- Feature request: convert YV12 interlaced <--> YV12 progressive HOT 3
- Fail to build on m1 macOS. HOT 3
- version 27 fail to build with static assertion failed: 128-bit atomic operations are not lock-fre HOT 9
- error: '_mm_storeu_si32' was not declared in this scope; did you mean '_mm_storeu_si64'? HOT 3
- Does not work correctly on Apple Silicon after successful compilation HOT 7
- recipe for target '../../src/fmtcl/libavx2_la-TransLut_avx2.lo' failed HOT 2
- Typo in src/fstb/Vu32.hpp HOT 1
- Catch i14 input in fmtc.resample HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fmtconv.