Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Hardware & Software > Software players

Reply
 
Thread Tools Search this Thread Display Modes
Old 20th October 2011, 22:44   #10301  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by madshi View Post
Well, I would be happy if there was a new external subtitle renderer available. That would save me from writing my own. I have to say, though, if I do feel the need to write my own subtitle renderer, at some point in the future (due to lack of available alternatives), then I will definitely make it a fixed part of madVR.
Then we have the same issue of “re-implement VSFilter's bugs” vs “implement the specification accurately”, though. Doesn't libass currently follow the spec which results in “incorrect” subtitles since they're made against the quirks of VSFilter? And instead of starting from scratch, it would certainly make sense to continue development of libass instead, unless it has any immediate jarring issues I'm not aware of that would require a redesign to fix.

Ps. madshi why aren't you on IRC?
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 20th October 2011, 22:51   #10302  |  Link
TheShadowRunner
Registered User
 
TheShadowRunner's Avatar
 
Join Date: Feb 2004
Posts: 396
0.76 corrects the OSD issues from 0.75, thanks.
I reported my findings regarding the slow ZP/seeking-freeze-bug-after-frequency-switch to Blight.
The crash in madVR.ax is now always at address 000047a0 with 0.76 (4770 with 0.74 / 47b0 with 0.75), if it gives any hints as to which part of the code doesn't interact well with ZP.
Unfortunately, no easy way to recreate the issue.
Btw, do you still plan to enhance madVR's internal frequency switcher taking media height into account?
__________________
XP SP3 / Geforce 8500 / Zoom Player
TheShadowRunner is offline   Reply With Quote
Old 20th October 2011, 22:53   #10303  |  Link
dansrfe
Registered User
 
Join Date: Jan 2009
Posts: 1,212
Hi madshi,

Just wanted to make sure saving frames to image format (png/jpg) is still on your list of things to do. It's a pretty handy feature... Thanks.
dansrfe is offline   Reply With Quote
Old 20th October 2011, 23:21   #10304  |  Link
jmonier
Registered User
 
Join Date: Oct 2008
Posts: 159
Quote:
Originally Posted by HeadlessCow View Post
The comma operator in C++ just ignores the value on the left and returns the value on the right. arr[0,0] is the same as just writing arr[0].
That's actually a case where the comma is not intended to be used. The real use of the comma in C++ is to separate expressions:

x = (y = 3, y + 1)

sets y = 3 and then sets x = (y + 1). Put another way, the comma separated expressions are executed one by one and the value of x is the value of the last expression.

It actually originated in 'C' and is very useful in 'for' statements but I can see how confusing it is when coming from another language that has a totally different use for it. C and C++ are very rich languages and that's why they've been around for so long, but nobody ever said they were easy to understand.
jmonier is offline   Reply With Quote
Old 20th October 2011, 23:35   #10305  |  Link
Budtz
Registered User
 
Join Date: Apr 2011
Posts: 130
Seems for a long time there has been a small bug where madvr ether crashes or exclusivemode fails. This happens if I switch to the next file in the folder in exclusivemode, but only if I have the mouse at the bottom of the screen so the search bar is showing. If there is no search bar then it works just fine switching video files. I have a setup where I press page-up or down to switch to the next video. It is when I press these buttons, it happens.
Budtz is offline   Reply With Quote
Old 20th October 2011, 23:36   #10306  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by jmonier View Post
That's actually a case where the comma is not intended to be used. The real use of the comma in C++ is to separate expressions:

x = (y = 3, y + 1)

sets y = 3 and then sets x = (y + 1). Put another way, the comma separated expressions are executed one by one and the value of x is the value of the last expression.

It actually originated in 'C' and is very useful in 'for' statements but I can see how confusing it is when coming from another language that has a totally different use for it. C and C++ are very rich languages and that's why they've been around for so long, but nobody ever said they were easy to understand.
A perfect example of a completely useless, counter-intuitive, unexplained and error-prone syntax “feature” that is only useful to code golfers. This is something I'd expect to see in perl, not C++.
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 00:26   #10307  |  Link
Boltron
Registered User
 
Boltron's Avatar
 
Join Date: May 2011
Posts: 94
The latest madVR has additional info with ^J. Among other things I see a "limited range (says upstream/bitstream)". Is this referring to RGB output levels 16-235 v.s. 0-255?

Also, I am in the process of doing 10 bit encoding of some of my movies. I noticed that movies I ripped with Clown_BD (uses eac3to) show "limited range (says upstream)" and once I re-encode with 10bit x264 I see "limited range (says bitstream)". If my assumption that by limited range refers to 16-235, is there a setting in the x264 encoder that will 0-255? Am I just hopelessly confused??

Can anyone please enlighten me

I use MPC-HC, LAV Video, madVR. LAV and madVR set to 0-255 levels.

Last edited by Boltron; 21st October 2011 at 00:26. Reason: Typo
Boltron is offline   Reply With Quote
Old 21st October 2011, 00:40   #10308  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by Boltron View Post
The latest madVR has additional info with ^J. Among other things I see a "limited range (says upstream/bitstream)". Is this referring to RGB output levels 16-235 v.s. 0-255?
No, it's referring to the input levels. The output levels are always what you specified for your display in the settings.

Quote:
Also, I am in the process of doing 10 bit encoding of some of my movies. I noticed that movies I ripped with Clown_BD (uses eac3to) show "limited range (says upstream)" and once I re-encode with 10bit x264 I see "limited range (says bitstream)". If my assumption that by limited range refers to 16-235, is there a setting in the x264 encoder that will 0-255? Am I just hopelessly confused??
Don't worry, you generally want to encode 16-235. Also, about the “upstream” vs “bitstream” issue I'm guessing upstream means the filter guessed it, and bitstream means it's written into the file headers itself. Either that, or it's the other way around.
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 00:48   #10309  |  Link
Boltron
Registered User
 
Boltron's Avatar
 
Join Date: May 2011
Posts: 94
OK, so my 10bit 16-235 encode should be fine then. It just takes soooo long and I have already done several encodes this week to work out settings, I was scared I messed up rgb range.

I'm hoping when Ivy Bridge comes along and I upgrade, x264 will be able to take advantage of QuickSync... Looking forward to watching my first 10bit encode tomorrow night.

Last edited by Boltron; 21st October 2011 at 00:49. Reason: Typo
Boltron is offline   Reply With Quote
Old 21st October 2011, 00:57   #10310  |  Link
jmone
Registered User
 
Join Date: Dec 2007
Posts: 571
Quote:
Originally Posted by madshi View Post
Can you cross check this with a different media player? What happens if you turn Aero on/off? Currently I don't see how madVR could be responsible for this. madVR does not have any special code in it for 23.976/24.000Hz handling. It doesn't really matter to madVR whether the refresh rate is 24Hz or 240Hz. So I don't see how there could be a lipsync problem with 24Hz when there is none with higher refresh rates.
Turning Aero Off blows the present queue out by 100x times (I end up with 15 to 25ms times compared to 0.15ms) had results in lots of dropped frames with 50/60p material, though the Lip Sync looked better (but still not as good as Exclusive Mode). I'll upgraded the files in the MC plugin directory to the latest version so I'll see how that runs. The other issue I get in Windowed mode from time to time is that lots of dropped frames (very low present queues) but oddly one fix is to bring up the madVR GUI. As a last resort I'll try another player to see if that eliminates it but my HTPC is a minimal install.

Quote:
About the exclusive mode problem: I'd need a way to reproduce this, without having to wait hours or even days for the problem to appear.
Once it happens it tends to stay till the player is restarted. Is it possible to enable logging between plays and would this give you what you need. This is one that a few have commented on (incl nevcairiel).

FYI - Exclusive mode is my preferred mode and I was only investigating various Windowed mode setting due to the "exclusive mode failure" dropping me back to this.
jmone is offline   Reply With Quote
Old 21st October 2011, 05:58   #10311  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 8,739
Quote:
Originally Posted by nand chan View Post
Then we have the same issue of “re-implement VSFilter's bugs” vs “implement the specification accurately”, though. Doesn't libass currently follow the spec which results in “incorrect” subtitles since they're made against the quirks of VSFilter?
There are some minor differences between the rendered output, and i'm sure there will be some OCD people that complain, but alot of cases libass tried to behave similar to VSFilter, as long as it was not 100% obvious that VSFilter was just plain wrong.

The main point is that libass is faster, and still under active development (and actually quite easy to use), so writing a sub renderer with it is just a matter of figuring out how to blend the subs on a DX surface.

Maybe i feel like venturing into that land some day when i have the "major" blockers in LAV Filters taken care of.
I like a challenge, and to learn something new, and this would fit the bill perfectly.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders

Last edited by nevcairiel; 21st October 2011 at 06:01.
nevcairiel is offline   Reply With Quote
Old 21st October 2011, 15:00   #10312  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by nevcairiel View Post
There are some minor differences between the rendered output, and i'm sure there will be some OCD people that complain, but alot of cases libass tried to behave similar to VSFilter, as long as it was not 100% obvious that VSFilter was just plain wrong.

The main point is that libass is faster, and still under active development (and actually quite easy to use), so writing a sub renderer with it is just a matter of figuring out how to blend the subs on a DX surface.
Well, the straightforward way would be to draw onto a buffer in RAM, copy that to VRAM, and do the blending on-GPU. I suppose the limiting factor here might just be available bandwidth. What would you suggest, only uploading smaller fragments (the parts you need to render?). The renderer would have to take care of positioning etc that way but it would probably be much more efficient.
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 15:11   #10313  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 8,739
I have not all that much experience with Direct3D stuff, thats the real problem there.
Its probably more efficient to track a "dirty region" and only copy that over to a texture for blending. Positioning shouldn't be that problematic, thats good old math.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders
nevcairiel is offline   Reply With Quote
Old 21st October 2011, 15:12   #10314  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by nevcairiel View Post
I have not all that much experience with Direct3D stuff, thats the real problem there.
Its probably more efficient to track a "dirty region" and only copy that over to a texture for blending. Positioning shouldn't be that problematic, thats good old math.
The problem would be having every renderer respect it

Do you know if libass is capable of using an alpha channel whatsoever?
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 15:13   #10315  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 8,739
The way the subtitle interface works right now is simple. You get the surface with the video image from the renderer, and you paint your subtitles on there. The renderer doesn't have to do anything.

libass is a rendering library, it just provides you with the info where to paint which pixel in which RGBA color (including alpha).

Edit:
http://code.google.com/p/libass/sour...e/libass/ass.h

See the ASS_Image structure. From the looks of it, i assume you get one structure for every color required, equiped with a 1bpp alpha map specifying where to paint the pixel in the specified RGBA color, and where not.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders

Last edited by nevcairiel; 21st October 2011 at 15:20.
nevcairiel is offline   Reply With Quote
Old 21st October 2011, 15:20   #10316  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by nevcairiel View Post
The way the subtitle interface works right now is simple. You get the surface with the video image from the renderer, and you paint your subtitles on there. The renderer doesn't have to do anything.

libass is a rendering library, it just provides you with the info where to paint which pixel in which RGBA color (including alpha).

Edit:
http://code.google.com/p/libass/sour...e/libass/ass.h

See the ASS_Image structure. From the looks of it, i assume you get one structure for every color required, equiped with a 1bpp alpha map specifying where to pain the pixel in the specified RGBA color, and where not.
Oh, I see what you mean now. Basically passing the entire subtitle image in one go, then detecting the dirty regions (or using the included 1bpp map) inside the renderer itself, just to save upload bandwidth. I thought what you were suggesting was basically rewriting libass to output a list of small textures and their positions directly.

Yeah, that way it should work fine with all renderers.
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 15:43   #10317  |  Link
6233638
Registered User
 
Join Date: Apr 2009
Posts: 1,019
Quote:
Originally Posted by nand chan View Post
That's like saying you want to master audio in the next room. Simply silly/stupid, no offense intended. You *NEVER* want to tweak the no-dither results, since those results will be wrong. Tweaking those until they're right will end up with a LUT that's completely off. You're shooting yourself in the foot. And if you calibrate against these faulty procedures, of course madVR is going to give you undesirable results.
I took the time to measure the results I get with madVR and the built-in yCMS calibration, when giving it accurate data. (no hand-tweaking to try and control the results)

On the left are the automatically calculated madVR/yCMS results, on the right are hand-tweaked values (outside of madVR) to show what the display is capable of.




Pay particular attention to the scale of the error charts for gamut. The only errors that remain in the hand-tweaked data are caused by the display's limited gamut.

It should be possible to get these results, the tools just don't seem to be there for it.


Quote:
Originally Posted by nand chan View Post
10, 20 points? ArgyllCMS which you've previously denounced can calibrate using up to 2400 points. And yes, these are better calibrated than your rounded “hand-crafted” LUT.
I disagree. 2400 points is too much data and you will actually be introducing errors into the LUT as the meter & display drift over the length of time it takes to make that many measurements with consumer-grade equipment. (even the higher-end stuff)

It's not that I am against using interpolated data in LUTs, but I want to have proper control over at least some of the points to shape the results.

Quote:
Originally Posted by nand chan View Post
Would you mind testing multiple scaling algorithms to see how much each of them ring when in linear light? I'm guessing Lanczos might be too extreme in this mode. What about Catmull-Rom and friends?
Lanczos and Spline are out, far too much ringing even at their lowest settings. (interestingly, spline seemed worse)
Personally, I have never liked the results from either Mitchell-Netravali or Catmull-Rom. Initially, MN was my choice for luma upscaling when I first used madVR, but I soon found that there was too much aliasing being introduced into the image.
SoftCubic is just too soft for downscaling, which leaves Bicubic.

I haven't done extensive testing, but I could see almost no difference whatsoever between Bicubic 50 and 75 with the material I tried.

Bicubic 50 in linear light, didn't seem too different from Lanczos 3 without it, except it is now gamma-correct, so that would be my choice for now.


Haven't had any time to test linear light upscaling yet, so it's still on SoftCubic 70 for now.
6233638 is offline   Reply With Quote
Old 21st October 2011, 15:50   #10318  |  Link
nand chan
( ≖‿≖)
 
Join Date: Jul 2011
Location: BW, Germany
Posts: 380
Quote:
Originally Posted by 6233638 View Post
I took the time to measure the results I get with madVR and the built-in yCMS calibration, when giving it accurate data. (no hand-tweaking to try and control the results)

On the left are the automatically calculated madVR/yCMS results, on the right are hand-tweaked values (outside of madVR) to show what the display is capable of.




Pay particular attention to the scale of the error charts for gamut. The only errors that remain in the hand-tweaked data are caused by the display's limited gamut.
This seems to be a result of yCMS inaccuracies, not the methodology. I assume you recorded these values through madVR itself? (Ie. not using some bastardized test program which doesn't dither)

Quote:
It should be possible to get these results, the tools just don't seem to be there for it.

I disagree. 2400 points is too much data and you will actually be introducing errors into the LUT as the meter & display drift over the length of time it takes to make that many measurements with consumer-grade equipment. (even the higher-end stuff)
I said up to 2400, and ArgyllCMS even includes drift compensation support (by monitoring how much the known values change).

Quote:
It's not that I am against using interpolated data in LUTs, but I want to have proper control over at least some of the points to shape the results.
Then again, use ArgyllCMS. Or create your own table and interpolate it, it doesn't really matter.

Quote:
Lanczos and Spline are out, far too much ringing even at their lowest settings. (interestingly, spline seemed worse)
Personally, I have never liked the results from either Mitchell-Netravali or Catmull-Rom. Initially, MN was my choice for luma upscaling when I first used madVR, but I soon found that there was too much aliasing being introduced into the image.
SoftCubic is just too soft for downscaling, which leaves Bicubic.

I haven't done extensive testing, but I could see almost no difference whatsoever between Bicubic 50 and 75 with the material I tried.

Bicubic 50 in linear light, didn't seem too different from Lanczos 3 without it, except it is now gamma-correct, so that would be my choice for now.


Haven't had any time to test linear light upscaling yet, so it's still on SoftCubic 70 for now.
I don't think downscaling is actually important, unless you have some magical access to 4k masters. Blu-ray resolution is only 1920×1080 which basically every display encompasses by now.
__________________
Forget about my old .3dlut stuff, just use mpv if you want accurate color management
nand chan is offline   Reply With Quote
Old 21st October 2011, 16:35   #10319  |  Link
6233638
Registered User
 
Join Date: Apr 2009
Posts: 1,019
Quote:
Originally Posted by nand chan View Post
This seems to be a result of yCMS inaccuracies, not the methodology. I assume you recorded these values through madVR itself? (Ie. not using some bastardized test program which doesn't dither)
Yes, through madVR.

Quote:
Originally Posted by nand chan View Post
I don't think downscaling is actually important, unless you have some magical access to 4k masters. Blu-ray resolution is only 1920×1080 which basically every display encompasses by now.
Lots of people are still using 720p projectors, Sony are just about to launch this in a few weeks, which is 720p native. It's still relevant.

I can't imagine the upscaling results being too different from downscaling, though I'm curious to see if there's the same amount of ringing introduced with some algorithms. (that said, most already introduce a lot of ringing as it is)
6233638 is offline   Reply With Quote
Old 21st October 2011, 17:28   #10320  |  Link
6233638
Registered User
 
Join Date: Apr 2009
Posts: 1,019
OK, I've done some preliminary testing with linear light upscaling.

The short answer is that the only settings it should be used with are SoftCubic 80/100. (possibly only 100)
It does really bad things with everything else.

Here's a very quick upscaling comparison taken from a low resolution, highly compressed video upscaled considerably. (one of my standard tests)

Lanczos 3:


SoftCubic 70 (my current preferred choice)


SoftCubic 70 with linear light scaling enabled:



I'd go as far as saying that the option probably shouldn't even be available with anything other than the higher levels of SoftCubic when upscaling, and disabled on Lanczos/Spline when downscaling.


I've yet to test it on DVDs or 720p videos, but I doubt that the results will change.


And as a side-note, it would be really nice if selecting madVR from the filters list brought up the preferences right away as it used to do, rather than it being a two-step process. It really slows things down when trying to do a comparison like this.

Last edited by 6233638; 21st October 2011 at 17:31.
6233638 is offline   Reply With Quote
Reply

Tags
direct compute, dithering, error diffusion, madvr, ngu, nnedi3, quality, renderer, scaling, upsampling

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 00:55.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.