2007-04-09, 13:51 | Link #1 |
Member
Join Date: Oct 2006
|
Color Levels: Ignored Issue?
One issue I started wondering about when I became more knowledgeable about encoding and fine tuning playback is color levels. For those that don't know, televisions and PC monitors have a slightly different scale for representing colors and their brightness or saturation. At first I thought it wasn't a problem as all the fansubs I came across used TV levels to encode their videos, however recently I have been coming across more encodes which are using the PC levels instead.
Now, the problem is that as far as I can tell, no renderer has the capability of displaying both PC and TV level encoded files correctly without re-configuration. So if some people encode with PC levels and some people encode with TV levels, the viewer would likely end up watching one of them wrong and might wonder why their colors looks overly dark or why their whites and blacks look grayer than they should. Here is an example of an encode which uses PC levels instead of TV levels and compares a correctly adjusted image to one which is adjusted for TV level encodes. Using VMR9, which assumes the video is PC leveled as does no scaling (correct for this case): http://img511.imageshack.us/img511/9...elsvmr9yh8.png Using Haali's Renderer, which assumes the video is TV leveled and scales it to PC levels (incorrect for this case): http://img511.imageshack.us/img511/1...lshaalixa7.png So, the questions then are: Is it worth making this issue more visible? Should fansubs be more cautious of which level range they use to encode their videos? And if they choose to use the less commonly used (Currently TV range is mostly used) level range, should they inform their viewers that they used a different color range so viewers can configure their player properly for playback? |
2007-04-09, 14:42 | Link #2 |
Member
Join Date: Nov 2003
|
You are indeed right. There are tons of problems with that, from clipping to bad dithering etc.
As a matter of fact, and in my humble opinion, TV Levels being dominant, they should be used. And the renderers should continue to do as some do, that is, map TV Levels to PC Levels(But this should be an option). The fact is it's not possible to detect it de facto from the headers, so there's no way for the decoding to know about it.(Unless it waits for some frames, but that gets really messy. So as a matter of fact... I think TV Levels should continue to be used, they are the standard mostly everywhere, and going against the flow will only create more problems.(But yes, i agree they are technically inferior) And in reference to the subject of proper rendering, I did some tests some time ago: http://forum.doom9.org/showthread.php?t=120946 |
2007-04-09, 15:16 | Link #3 |
Member
Join Date: Oct 2006
|
Nice work compiling all that information. I didn't realize VMR9 Windowed vs Renderless had any difference besides allowing the internal subtitle renderer. I'll definitely use that for watching PC level encodes now (I already used Haali for TV leveled encodes). Just doing a simple frame comparison I can definitely see the difference in sharpness.
One of the problems I have just had is trying to identify PC encodes. If the colors are not particularly rich (possibly a bad source), you might not notice the overexposure right away. The only definitive way I have been using to identify the encodes levels is using the FFDShow 'Levels' filter histogram, just watching it and seeing if the levels dip below 16 or above 235/240. Unfortunately it is annoying and not a particularly fast process. Especially if the encode is actually TV levels, I have to watch it for enough of a time that I expect that I would have seen it dip past the TV margins. It would sure be nice if media containers had the ability to store the levels the video is intended to be viewed with (Think user inputted, like aspect ratio). |
2007-04-09, 16:31 | Link #4 |
Excessively jovial fellow
Join Date: Dec 2005
Location: ISDB-T
Age: 37
|
Why should we need to care about this, again? There is no way of telling if a source is clamped to TV levels or not without playing through the entire thing (actually, there IS a flag in H.264 that lets you specify if the video is TV or PC range, but you have to set it manually and noone ever does that. reportedly CoreAVC actually reads this flag and does... something... depending on what it's set to (in pretty much every fansub encode it's undefined)). If you just encode a clamped-to-TV-levels source without adjusting any levels, both Avisynth and x264 (as well as XviD and pretty much any other encoder) will just assume it's PC range and give you... uh... an encode clamped to TV levels (since TV levels are a subset of PC levels and can be contained within them, so to speak). If it's PC levels to begin with, you get, surprise surprise, PC levels.
Anyway, in either case your conclusions about the renderers are wrong. Haali is the correct one, it just passes the levels through. What you see in the VMR screenshot is two very ancient bugs: 1. Both ATi's and nVidia's VMR9 implementations incorrectly assumes that the input is in PC range and maps it to TV range, resulting in a washing out-effect on the colors, and 2. Both ATi's and nVidia's VMR9 implementations for some inexplicable reason smoothes the image somewhat (notice how all the lines in your VMR screenshot seem less sharp than in the Haali one?). (there are also various other funny bugs with various implementations of VMR9, such as a distinct hue shift towards green (VERY common on some pretty much all nVidia cards, especially with older drivers) and some really horrible staircase effects/jagged edges with the resizer) It's pretty much been like that since the beginning of time (or at least since DirectX 9), and this (combined with the fact that VMR9 is slower than overlay) is the reason that CCCP has always defaulted to overlay and will continue to do so for the forseeable future. Interestingly, Microsoft doesn't seem to like this and has (with a suspicious move that almost is starting to look intentional) broken the overlay in Vista. Recommended reading (and don't forget the comments; Blight is the lead developer of ZoomPlayer): http://virtualdub.org/blog/pivot/entry.php?id=92#body http://virtualdub.org/blog/pivot/entry.php?id=149#body To conclude: what you SHOULD do is stop worrying about it and start living with it like everyone else without a perfectly calibrated monitor. Or go insane trying to find out what material uses what levels just by looking at it and adjusting the decoder/processing filter accordingly. I would not recommend trying to do this in the renderer, pretty much all implementations of VMR9 are far too buggy and/or deliberately broken to be useful. Keep Haali and do the levels adjustment in the decoder or in ffdshow instead. You know, it's an ignored issue for a reason. Have fun. Edit: also, in other news, CoreAVC 1.3.0.0 has a really funky checkbox that gives you incorrect levels on some sources no matter what state it is in - the difference between checked and unchecked is which sources you get incorrect levels on (apparently this is a "feature"). The obvious sensible solution is to do like ffdshow does: leave the levels alone by default but provide a levels filter that lets the user adjust one way or the other if he/she is so inclined.
__________________
Last edited by TheFluff; 2007-04-09 at 18:15. |
2007-04-09, 21:20 | Link #5 |
Member
Join Date: Oct 2006
|
The conclusions I got from the renderers were drawn from the Haali's Renderer forum thread on Doom 9. Here are the links to the relevant posts:
Haali's Renderer does TV->PC Scale conversion Use VMR9 for full range (PC scale) So you say Haali's just ports the levels through, but that seems opposite to what Haali himself posted unless a change was made since that post (which I do accept as a possibility). As for the softer image, it seems using VMR9 Windowless reduces this, I'll upload another comparison shot to see if its comparable to Haali's. But for levels, I can only image the cases for Haali's renderer does one of two things: 1) Passes the levels through as is, so TV leveled encodes will display greyish blacks and whites on a PC monitor but correct on a TV. PC leveled encodes look correct on a PC monitor. 2) Converts TV Scale to PC Scale, so a PC leveled encode will have problems such as clipping on a PC monitor. TV leveled encodes will look correct on a PC monitor. In such a case, knowing what levels the fansub is encoded with is necessary to know how to play it back correctly (Whether using a FFDShow levels setting or changing renderer.) Whether or not you think that is important is up to you, but that is one of my questions. Is it important if the colors are right or wrong? -EDIT- Here is the same shot from VMR9 Renderless. It is definitely sharper than the previous VMR9 shot. http://img392.imageshack.us/img392/2...r9rlessej5.png Also, here is a shot using FFDShow to change the levels from PC to TV and then displaying with Haali. http://img392.imageshack.us/img392/1...tvhaalinb7.png Last edited by Unearthly; 2007-04-09 at 22:19. Reason: Added new screenshots |
2007-04-10, 04:33 | Link #6 | |
uwu
Fansubber
Join Date: Dec 2005
|
Quote:
|
|
2007-04-10, 07:22 | Link #8 |
Senior Member
Join Date: Jan 2004
|
People's eyes can safely adjust to different 'whites' and brightness/contrast levels. It happens every day if change from flourescent lighting to sunlight or incandescent lighting. Unless you have an obvious problem like severe clipping, noticeable off-color, etc. it's not worth stressing out over. If a novice tries to fix something, he typically makes the problem worse -- look at all the oversharpened or white/black-clipped stuff out there as it is. Just like with non-normalized audio, in many cases it's best just to minimize changes to the source and if the end-watcher cares, there are filters/fixes that will account for and 'fix' it. Re-encoding anything, especially already compressed video or audio, should be avoided if possible.
Unlike still photography, where a 'bad' white balance picture will be noticeable -- when watching the show, one's full attention is focussed on it. I feel the same way about things like flashy effects and karaoke, it's extra effort and most people just don't care or aren't going to notice. Better to live your life than to spend time worreying about quibbles. |
2007-04-10, 08:19 | Link #9 | ||||
Excessively jovial fellow
Join Date: Dec 2005
Location: ISDB-T
Age: 37
|
Quote:
Quote:
In any case, VMR9 generally isn't a good idea at all because of the above-mentioned bugs (yes, the hue shift to green is there in your screenshot). Quote:
Quote:
__________________
|
||||
2007-04-10, 10:17 | Link #11 | ||
Member
Join Date: Oct 2006
|
Quote:
Quote:
|
||
2007-04-18, 22:18 | Link #14 | |
uwu
Fansubber
Join Date: Dec 2005
|
Quote:
EDIT: OH HEY, WHEN I OPEN THEM IN PHOTOSHOP AND CHANGE MY COLOR WORKSPACE, I CAN TOTALLY TELL A DIFFERENCE. |
|
2007-04-19, 21:17 | Link #15 |
Part 8
IT Support
|
If I open both images in firefox tabs and swap between them really quickly, I can see a difference. I doubt I would when watching an episode normally. When you have the sort of greenish hue swing from deen or a similar filter in old a4e encodes and the like, that's very noticeable. This level isn't, at least for me :P
|
|
|