Welcome Guest ( Log In | Register )


Important

The forums will be closing permanently the weekend of March 15th. Please see the notice in the announcements forum for details.

 
Full range video spurce, Split from external encoder thread
« Next Oldest | Next Newest » Track this topic | Email this topic | Print this topic
supermax
Posted: Sep 9 2014, 08:36 AM


Member


Group: Members
Posts: 15
Member No.: 38193
Joined: 1-August 14



QUOTE (raffriff42 @ Aug 9 2013, 08:15 PM)
Per VirtualDub Help, Using External Encoders:
Color space is 4:2:0 YCbCr using Rec. 601 limited-range, 8-bit per channel encoding
Rec.601 color was a real issue for me, as I mostly work with Rec.709. I tried everything to get around this, but nothing worked very well.

Now I see it though (was this obvious to everyone but me?) - as long as you keep the video in YUV color space from end to end, the matrix doesn't matter - it will be passed through unchanged. This can be done by staying in fast recompress mode, or by using full processing mode and just being careful about using only YUV filters.

EDIT 2-Sep-13: Converting RGB to Rec.601 for external encoders.
Try this! Seems to work; needs more testing
  • Source = RGB or YUV-709 upsampled to RGB (many VfW and DirectShow decoders do this)
  • Full processing mode
  • Filter 1: Convert Format 4:2:0 YV12 Rec.709
  • Filter 2: Alias Format color=Rec.601, range=no change
  • for x264.exe, use VUI flags --colorprim bt709 --transfer bt709 --colormatrix bt709


I have a video that is rec.709 full range (0-255)
https://mega.co.nz/#!UZ8g0TID!RNHQZ...QWNDCyxPUO1py-Q

to open it in VirtualDub the video input is not full range. Should not be as full range? How do I get the video input to be identified and displayed as full range?
user posted image

If I use the filter alias format, video output looks like full range. But was not there a conversion there?

In this case, in addition to its recommendations (--colorprim bt709 --transfer bt709 --colormatrix bt709) would need to use --input range and --range

already, thank you once again for your attention


Edit: I've tried changing all the options Color Depth, but the video is not full input range

This post has been edited by supermax on Sep 9 2014, 09:04 PM
 
     Top
raffriff42
Posted: Sep 10 2014, 09:10 PM


Advanced Member


Group: Members
Posts: 384
Member No.: 35081
Joined: 25-June 12



QUOTE (supermax @ Sep 9 2014, 08:36 AM)
I have a video that is rec.709 full range (0-255)
https://mega.co.nz/#!UZ8g0TID!RNHQZ...QWNDCyxPUO1py-Q

to open it in VirtualDub the video input is not full range. Should not be as full range? How do I get the video input to be identified and displayed as full range?
...

If I use the filter alias format, video output looks like full range. But was not there a conversion there?

If I understand your question, your video is fine. Alias Format does not do any conversion; it simply tells VirtualDub how to display the video - whether to display the digital value "235" on screen as 235 (full range source, 235 in=235 out) or 255 (limited range source, 235 in=255 out)

QUOTE (supermax @ Sep 9 2014, 08:36 AM)
in addition to its recommendations (--colorprim bt709 --transfer bt709 --colormatrix bt709) would need to use --input range and --range
Without those flags, the output after compressing with either 264vfw or x264 external will be limited range - which is usually what you want. (try it!)

This post has been edited by raffriff42 on Sep 10 2014, 09:31 PM
 
     Top
dloneranger
Posted: Sep 11 2014, 04:52 AM


Moderator


Group: Moderators
Posts: 2366
Member No.: 22158
Joined: 26-September 07



@supermax
The reason the video isn't picked up as full range is because the file it isn't flagged as full range, so ffmpeg plugin reports it as limited range and gives that format back to virtualdub
They are flagged as 709 though, so ffmpeg plugin knows that and handles it correctly

@raffriff42
Yes, the alias format filter just changes what virtualdub assumes the current format is without altering the video frames at all


-------------

I haven't seen any predictable way of guessing if a video is limited or full range from what information is available in a file when it doesn't have a full range flag unfortunately
According to available info, if it's not flagged as full range it should be limited, but there seems a 50/50 chance it's either
I guess we're lucky that more videos have started to flag the colourspace lately

More on this should be in a new thread, as it's an ffpeg plugin thing, not an external encoder thing
(apart from correctly flagging your output file as tv or pc when you encode)

--------------------
MultiAdjust JoinWav WavNormalize FFMPeg Input Plugin v1827 UnSharpMask
Windows7/8 Codec Chooser
All FccHandlers Stuff inc. Installers for acm codecs AAC, AC3, LameMp3
 
    Top
supermax
Posted: Sep 12 2014, 12:03 PM


Member


Group: Members
Posts: 15
Member No.: 38193
Joined: 1-August 14



QUOTE (raffriff42 @ Aug 9 2013, 08:15 PM)

Now I see it though (was this obvious to everyone but me?) - as long as you keep the video in YUV color space from end to end, the matrix doesn't matter - it will be passed through unchanged. This can be done by staying in fast recompress mode, or by using full processing mode and just being careful about using only YUV filters.


Now understand this, really I do not touch anything, not even appearing exactly as the video is, at the time of the video encoder output will be as input.
Even without any filter I use the end result was a video file with the range 255 (even appearing in only 235 virtualdub)

QUOTE

Yes, the alias format filter just changes what virtualdub assumes the current format is without altering the video frames at all

I did not understand it very well because I did some tests by changing the settings of this filter (alias format) and resulted in videos with different results. So there was some conversion.
 
     Top
dloneranger
Posted: Sep 12 2014, 01:05 PM


Moderator


Group: Moderators
Posts: 2366
Member No.: 22158
Joined: 26-September 07



QUOTE
I did not understand it very well because I did some tests by changing the settings of this filter (alias format) and resulted in videos with different results. So there was some conversion

This is just a misunderstanding, what you're seeing on the monitor is an rgb conversion of the image as monitors don't do yuv - the image data itself hasn't changed, the only thing that's changed is what virtualdub thinks it is
The image is converted on as needed eg for rgb display on the monitor, or whatever output format you have chosen when saving
All the alias format filter does is tell virtualdub 'trust me here, this is really <whatever>'
When virtualdub has to display the image on screen it does a <whatever>-to-rgb conversion, the alias format changes the <whatever> to your choice
Then virtualdub will do eg a yuv-601-limited->rgb or yuv-709-full->rgb when displaying it
The image data hasn't been altered, but it will be treated differently from then on if it needs to be


--------------------
MultiAdjust JoinWav WavNormalize FFMPeg Input Plugin v1827 UnSharpMask
Windows7/8 Codec Chooser
All FccHandlers Stuff inc. Installers for acm codecs AAC, AC3, LameMp3
 
    Top
supermax
Posted: Sep 12 2014, 01:47 PM


Member


Group: Members
Posts: 15
Member No.: 38193
Joined: 1-August 14



QUOTE (dloneranger @ Sep 12 2014, 01:05 PM)
QUOTE
I did not understand it very well because I did some tests by changing the settings of this filter (alias format) and resulted in videos with different results. So there was some conversion

This is just a misunderstanding, what you're seeing on the monitor is an rgb conversion of the image as monitors don't do yuv - the image data itself hasn't changed, the only thing that's changed is what virtualdub thinks it is
The image is converted on as needed eg for rgb display on the monitor, or whatever output format you have chosen when saving
All the alias format filter does is tell virtualdub 'trust me here, this is really <whatever>'
When virtualdub has to display the image on screen it does a <whatever>-to-rgb conversion, the alias format changes the <whatever> to your choice
Then virtualdub will do eg a yuv-601-limited->rgb or yuv-709-full->rgb when displaying it
The image data hasn't been altered, but it will be treated differently from then on if it needs to be

Now I understood.
thank you
 
     Top
raffriff42
Posted: Sep 12 2014, 06:24 PM


Advanced Member


Group: Members
Posts: 384
Member No.: 35081
Joined: 25-June 12



I have found the best way to check true luma range on a video is with a simple Avisynth Script. It requires FFMS2 (because many DirectShow decoders automatically convert from YUV to RGB, so you have no idea what the levels actually are in the video itself)
CODE
FFVideoSource("myvideo.mp4")  ## any video format
(IsRGB) ? RGBAdjust(analyze=true): ColorYUV(analyze=true)

You save the code in the box above with an .avs extension, then after installing Avisynth, you drag the file into VirtualDub. You will see an on-screen display of color statistics; for limited range, Loose Minimum should be near 16; Loose Maximum should be near 235.

If you analyze a lot of videos, I have a batch script that does the above by drag-and-drop or a Send To shortcut.

(dloneranger, is there any way to move this conversation to a new thread? As you have noted, it's going way off topic)

 
     Top
dloneranger
Posted: Sep 12 2014, 06:34 PM


Moderator


Group: Moderators
Posts: 2366
Member No.: 22158
Joined: 26-September 07



[mod edit]
Moved to a new thread

--------------------
MultiAdjust JoinWav WavNormalize FFMPeg Input Plugin v1827 UnSharpMask
Windows7/8 Codec Chooser
All FccHandlers Stuff inc. Installers for acm codecs AAC, AC3, LameMp3
 
    Top
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
7 replies since Sep 9 2014, 08:36 AM Track this topic | Email this topic | Print this topic

<< Back to Codec Discussion