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 1st November 2015, 13:27   #34001  |  Link
KoD
Registered User
 
Join Date: Mar 2006
Posts: 567
A feature request, if possible: some keyboard shortcut to switch the display refresh rate. I have files badly tagged as 23.976 fps, but when played at 23.976 the number of dropped frames increases continuously. However, when played at 60fps, everything is smooth, no dropped frames.

Another question is, what happens when the file has VFR? The file is tagged as 23.976fps, but in fact the duration of the frames varies continuously. How does madVR handle this?

And a bug report: when using the "switch to matching display mode", the switch does not really happen if the "list all display modes madVR may switch to" list is empty. Settings used:

switch to matching display mode = enabled
switch to matching display mode = when media player goes fullscreen
restore original display mode = enabled
restore original display mode = when media player is closed
general settings - delay playback start until render queue is full = on
general settings - delay playback start after seeking, too = on
general settings - enable windowed overlay = off
general settings - enable automatic fullscreen exclusive mode = off
general settings - disable desktop composition = off
general settings - use Direct3D 11 for presentation (Windows 7 and newer) = on
general settings - present a frame for every VSync = on
general settings - use a separate device for presentation = off
general settings - use a separate device for DXVA processing = off

Happens for any file fps (23.976p, 29.970p, etc).

In nvidia control panel, this is the list of available display modes (and they all work when switched to manually, or specifically including them in the "list all display modes madVR may switch to" list):
23Hz, 24Hz, 29Hz, 30Hz, 50Hz, 59Hz, 60Hz

PS: my 500th post! yay!

Last edited by KoD; 1st November 2015 at 13:45. Reason: added bug report
KoD is offline   Reply With Quote
Old 1st November 2015, 13:37   #34002  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,921
in most cases "display modes" will choice the wrong refreshrate because it is usually selected by the AVG FPS. but smoothmotion at 60 hz can handle VFR perfectly.

theoretically there are ways to add informations like min FPS, max FPS and AVG FPS. but this is rarely used in practice and AFAIK madVR can't make use of it.
huhn is offline   Reply With Quote
Old 1st November 2015, 13:52   #34003  |  Link
MokrySedeS
I am the one who knocks
 
MokrySedeS's Avatar
 
Join Date: Aug 2009
Posts: 104
Quote:
Originally Posted by KoD View Post
A feature request, if possible: some keyboard shortcut to switch the display refresh rate. I have files badly tagged as 23.976 fps, but when played at 23.976 the number of dropped frames increases continuously. However, when played at 60fps, everything is smooth, no dropped frames.
You should probably fix the affected files, but if you insist then you can use madVR's file tagging system, which is even better than suggested shorcuts in your case.
Quote:
Originally Posted by madVR v0.85.4 changelog
* added tag "frameRate=%value%", e.g. 23.976, 24.000, 23, 24, ...
* added tag "refreshRate=%value%", e.g. 23.976, 24.000, 23, 24, ...


Quote:
Originally Posted by KoD View Post
And a bug report: when using the "switch to matching display mode", the switch does not really happen if the "list all display modes madVR may switch to" list is empty.
It's not a bug, it's a feature! :P
But seriously, madVR by design will switch only to the modes listed it this field.
MokrySedeS is offline   Reply With Quote
Old 1st November 2015, 13:55   #34004  |  Link
Ver Greeneyes
Registered User
 
Join Date: May 2012
Posts: 447
Is there a keyboard shortcut to toggle black bar detection or cropping? I don't need black bar detection that often, and there will probably always be videos on which it doesn't quite work, but I'd like to be able to enable it easily when the black bars are obvious and consistent.
Ver Greeneyes is offline   Reply With Quote
Old 1st November 2015, 14:05   #34005  |  Link
KoD
Registered User
 
Join Date: Mar 2006
Posts: 567
Quote:
Originally Posted by huhn View Post
in most cases "display modes" will choice the wrong refreshrate because it is usually selected by the AVG FPS. but smoothmotion at 60 hz can handle VFR perfectly.

theoretically there are ways to add informations like min FPS, max FPS and AVG FPS. but this is rarely used in practice and AFAIK madVR can't make use of it.
Hmm, I don't know. Does madVR really know the duration of each frame in order for its smooth motion algorithm to transition from one frame to the next at the right time, and not at multiples of, let's say, 23.976fps if the file is tagged with 23.976fps? And if a frame has a long duration, will it show a blend of frames only close to the transition points, or will it show blended frames for most of the duration of that single long frame? It's not min and max fps that would be required for proper VFR handling, but knowing the duration of the frame, I think. After all, a container such as mkv lets you specify that avg fps (like 23.976fps), but the actual duration of each frame is in no way linked to the value of this field. The frame timecodes can be anything - this is how VFR is actually implemented. One can make a 5 minutes video file which contains only one frame. I don't know if and how this info gets sent through the playback chain, maybe it would require a new API on the renderer for the player to send this info from the splitter? And you are right, it's not possible to properly see VFR content at a display refresh rate of 23.976Hz. One would need to set the display rate as high as possible (60Hz for most TVs), so that frames in the VFR file with durations smaller than 41.71ms would be properly displayed at the right moment.

Quote:
Originally Posted by MokrySedeS View Post
You should probably fix the affected files, but if you insist then you can use madVR's file tagging system, which is even better than suggested shorcuts in your case.
I was going through a folder of anime music videos. It's quite a big list of files collected over a large period of time, many of them are fan made (so, no chance of getting them redone), and in all media container formats used over years: mpg, avi, ogm, mp4, mkv.

Renaming them would involve opening each one several times, each time at a different display rate selected before starting playback, finding the one that does not cause jitter, and then remuxing them. It would be too time consuming to manually do this for every one to add a tag to its filename, and I don't see any automated way of doing this.

Last edited by KoD; 1st November 2015 at 15:13. Reason: removed some incorrect comments about smooth motion and VFR
KoD is offline   Reply With Quote
Old 1st November 2015, 14:43   #34006  |  Link
SweetLow
Registered User
 
Join Date: Jul 2015
Posts: 76
Quote:
Originally Posted by madshi View Post
What purpose would you use that for?
Enable or disable madVR dithering (right now). Intel well dither in hardware when out 10 bit on 10 bit device (HDMI TV in my case), but when out 10 bit on 6 bit (internal eDP panel of notebook in my case) it not dither properly (only dither from 8 bit to 6 bit, AFAIK by my tests).

Quote:
Originally Posted by madshi
Intel/NVidia: DXVA2 image + Bilinear chroma upscaling -> DXVA chroma up
Thanks. Very fast reaction

P.S. To Intel users - as i see in my tests, dxva deinterlacing + dx11 rendering path don't work well with "frames present in advace" set to more then 2 (easy visible jumps in motion parts of image). dx9 work well with 4 frames. But lower value slightly increase GPU and power consumtion.

Last edited by SweetLow; 1st November 2015 at 14:54.
SweetLow is offline   Reply With Quote
Old 1st November 2015, 15:08   #34007  |  Link
JohnLai
Registered User
 
Join Date: Mar 2008
Posts: 448
Question, is it possible to use madvr's smooth motion together with SVP? (gtx 980 and core i7 for instance)
JohnLai is offline   Reply With Quote
Old 1st November 2015, 15:29   #34008  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,921
AFAIK SVP provides proper timestamps. so yes.
huhn is offline   Reply With Quote
Old 1st November 2015, 15:46   #34009  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,921
Quote:
Originally Posted by KoD View Post
Hmm, I don't know. Does madVR really know the duration of each frame in order for its smooth motion algorithm to transition from one frame to the next at the right time, and not at multiples of, let's say, 23.976fps if the file is tagged with 23.976fps? And if a frame has a long duration, will it show a blend of frames only close to the transition points, or will it show blended frames for most of the duration of that single long frame? It's not min and max fps that would be required for proper VFR handling, but knowing the duration of the frame, I think. After all, a container such as mkv lets you specify that avg fps (like 23.976fps), but the actual duration of each frame is in no way linked to the value of this field. The frame timecodes can be anything - this is how VFR is actually implemented. One can make a 5 minutes video file which contains only one frame. I don't know if and how this info gets sent through the playback chain, maybe it would require a new API on the renderer for the player to send this info from the splitter? And you are right, it's not possible to properly see VFR content at a display refresh rate of 23.976Hz. One would need to set the display rate as high as possible (60Hz for most TVs), so that frames in the VFR file with durations smaller than 41.71ms would be properly displayed at the right moment.
mkv doesn't use FPS it only uses timestamps for each individual frame. so VFR in mkv is a no problem for madVR. a VFR file without timestamps(or something similar) would ran async so they all have "timestamps" or they are broken. and this information is provided.

max FPS is a good way to choice a good refreshrate by simply using that value. for SM the highest value is by far the best but not everyone wants to use SM.

madVR SM blending is very simple (in theory at least...) for example it has to display a frame for 20 ms and the time stamps of the frames show frame 1 should get the first 5 ms of these 20 ms and frame 2 the other 15 ms than they are blending.

so a "long" frame isn't blended most of the time only maybe at the end or the start if other frames share some time of that display interval.
huhn is offline   Reply With Quote
Old 1st November 2015, 17:38   #34010  |  Link
KoD
Registered User
 
Join Date: Mar 2006
Posts: 567
Quote:
Originally Posted by huhn View Post
mkv doesn't use FPS it only uses timestamps for each individual frame. so VFR in mkv is a no problem for madVR. a VFR file without timestamps(or something similar) would ran async so they all have "timestamps" or they are broken. and this information is provided.

max FPS is a good way to choice a good refreshrate by simply using that value. for SM the highest value is by far the best but not everyone wants to use SM.

madVR SM blending is very simple (in theory at least...) for example it has to display a frame for 20 ms and the time stamps of the frames show frame 1 should get the first 5 ms of these 20 ms and frame 2 the other 15 ms than they are blending.

so a "long" frame isn't blended most of the time only maybe at the end or the start if other frames share some time of that display interval.
There is no explicit avg frame rate field in mkv files, indeed. But that purpose is fulfilled by a tag called "DefaultDuration". This is why you can have mkv files which madVR says they have 23.976fps, but when you set the display rate at 23.976Hz and try to play the file, it's a stuttering mess, and the dropped frame counter increases continuously. Perhaps this is the reason for the frame rate in filename tag functionality, to explicitly tell madVR what the framerate actually is, instead of trusting the one the splitter reads from the file and passes it up the chain. This only works for constant frame rate content, however.

The issue, I imagine, is that madVR does not honor frame durations, but instead bases its computations on the average frame rate. Which works fine most of the times, for straight to mkv remuxes or encodes of BluRay or DVD content (well, some DVDs), and that's why most people are not affected.

Or maybe the implementation is fine, it honors the proper individual frame duration, and works ok if I keep watching everything at 60Hz (with smooth motion on, and smooth motion only affecting the one or two frames around each transition point)? In that case it would just be my fault for drinking the videofile kool-aid and insisting on switching the display refresh rate to what the file is supposed to be at.

To be honest, I would welcome a proper implementation of frame duration display more than the constantly increasing number of resizing algorithms. The available algorithms have reached a level where the difference in quality is indistinguishable (and I mean here during actual movie viewing, and not doing comparisons of zoomed in screenshots). The stuttering during the playback of some files is so much more visible than whether there is any benefit when using anything above Jinc3.

Last edited by KoD; 1st November 2015 at 18:22.
KoD is offline   Reply With Quote
Old 1st November 2015, 18:15   #34011  |  Link
SweetLow
Registered User
 
Join Date: Jul 2015
Posts: 76
Quote:
Originally Posted by madshi View Post
* added new profile rule script variables "display"
Umm... If this is my wish realization - it's work not as expected. In my case this variable always equal to the name of first device in devices list, not actual device of player window
SweetLow is offline   Reply With Quote
Old 1st November 2015, 18:19   #34012  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,346
Quote:
Originally Posted by KoD View Post
To be honest, I would welcome a proper implementation of frame duration display
madVR implements frame timings quite well, however the entire system is quite limited by hardware.

The "problem" is of course that you can only present a new frame in every VSYNC, so if your display is set to 23.976, then you can present exactly 23.976 frames per second (and exactly at pre-defined times as well, a new frame every 41.7ms). If your file happens to have more frames per second, then madVR has to do the best it can, which means dropping a lot of frames. This can easily result in rather stuttery playback - but its not madVRs fault really, since it just can't show you anymore frames. Of course you could blame it for picking the wrong refresh rate, but it can only act on the information provided to it - scanning the entire file for the greatest common denominator of frame rates is hardly viable.

Assuming your file has both 23.976 and 29.970 parts, then you could set it to 29.970 Hz instead (or 59.94, which is more common), but then you couldn't show the 23.976 parts properly, because the frame timings of a 23.976 stream don't match a 59.94Hz VSYNC interval, and some frames would fall in-between VSYNCs.

If you want all possible videos to look properly, you need an infinite refresh rate monitor (or variable refresh rate for that matter). You can usually get pretty close by running at say 120Hz, as that is a clear multiple of 24 and 30, which are rates many "vfr" files use internally (some animes seem to like to switch between 24 and 30 for some reason). But if your video is real variable frame rate, then that won't save you either - although the short individual frame times at 120Hz (just 8.3ms) make any judder from a mis-matching framerate far less obvious.

One solution to that is Smooth Motion, which simulates an infinite refresh rate display, and then uses blending to map the frames as good as it can to your display refresh rate.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders

Last edited by nevcairiel; 1st November 2015 at 18:27.
nevcairiel is offline   Reply With Quote
Old 1st November 2015, 18:23   #34013  |  Link
chros
Registered User
 
chros's Avatar
 
Join Date: Mar 2002
Posts: 2,323
Quote:
Originally Posted by SweetLow View Post
Enable or disable madVR dithering (right now). Intel well dither in hardware when out 10 bit on 10 bit device (HDMI TV in my case), but when out 10 bit on 6 bit (internal eDP panel of notebook in my case) it not dither properly (only dither from 8 bit to 6 bit, AFAIK by my tests).
Which CPU , chipset, driver, OS do you have?
I don't see any 10bit option in my driver settings (see my signature for details).
Thanks
__________________
Ryzen 5 2600,Asus Prime b450-Plus,16GB,MSI GTX 1060 Gaming X 6GB(v398.18),Win10 LTSC 1809,MPC-BEx64+LAV+MadVR,Yamaha RX-A870,LG OLED77G2(2160p@23/24/25/29/30/50/59/60Hz) | madvr config
chros is offline   Reply With Quote
Old 1st November 2015, 19:54   #34014  |  Link
SweetLow
Registered User
 
Join Date: Jul 2015
Posts: 76
Quote:
Originally Posted by chros View Post
Which CPU , chipset, driver, OS do you have?
I don't see any 10bit option in my driver settings (see my signature for details).
Thanks
It's not the driver setting, it's settings of madVR - use of DX 11 presentation + set more then 8 bitdepth in device properties+use of exclusive FS.

Last edited by SweetLow; 1st November 2015 at 19:58.
SweetLow is offline   Reply With Quote
Old 1st November 2015, 20:00   #34015  |  Link
Ruben0
Registered User
 
Join Date: Oct 2015
Posts: 3
Quote:
Originally Posted by madshi View Post
I'm using the highest quality algo the GPU offers. What performance hit do you mean? GPU power? YADIF is done by LAV via CPU, so the GPU doesn't suffer. DXVA deinterlacing is done by the GPU. So it's clear that the GPU has more work to do when doing DXVA deinterlacing. It depends on the GPU model, though, because some have dedicated hard wired circuits to do deinterlacing, while others use pixel shader power for that. When using YADIF, make sure you use 50p/60p (Video) output, because that's what DXVA does (by default), too.
thanks for your answer.
I was mistaken the rendering and deinterlace stats, the big performance hit is in rendering while using nnedi3-32 in chroma upscaling and image doubling for dvd playing. The deinterlace stats are always low. I have an nvidia gtx 770 4GB.

keep up your excellent work!

Last edited by Ruben0; 1st November 2015 at 20:47.
Ruben0 is offline   Reply With Quote
Old 1st November 2015, 20:07   #34016  |  Link
chros
Registered User
 
chros's Avatar
 
Join Date: Mar 2002
Posts: 2,323
Quote:
Originally Posted by SweetLow View Post
It's not the driver setting, it's settings of madVR - use of DX 11 presentation + set more then 8 bitdepth in device properties+use of exclusive FS.
Yes, I know. Maybe my TV and/or my receiver doesn't support it.
__________________
Ryzen 5 2600,Asus Prime b450-Plus,16GB,MSI GTX 1060 Gaming X 6GB(v398.18),Win10 LTSC 1809,MPC-BEx64+LAV+MadVR,Yamaha RX-A870,LG OLED77G2(2160p@23/24/25/29/30/50/59/60Hz) | madvr config
chros is offline   Reply With Quote
Old 1st November 2015, 20:26   #34017  |  Link
SweetLow
Registered User
 
Join Date: Jul 2015
Posts: 76
Maybe, but it's easy to see actual state by moninfo or any other EDID info viewer. And, more important, the 10 bit device is not necessary to get 10 bit rendering.
SweetLow is offline   Reply With Quote
Old 1st November 2015, 23:18   #34018  |  Link
pankov
Registered User
 
Join Date: Mar 2002
Location: Sofia, Bulgaria
Posts: 661
madshi,
is it intentional that the hidden option to show the black bar detection using the ShowBlackBars empty file doesn't actually work if the "crop black bars" option is not enabled?
I want to debug a few situations with some TV stations with weird aspect ratios and hard coded black bars and it will be very useful if I can see what madVR detects and would crop but without actually cropping it so I can verify it visually.

I'd like also to ask a question about the new rotation feature.
Is it intentional that the subtitles (both external and internal ones) are rotated together with the picture ... and moved almost to the center of the image? While the centering seems like a bug I'm not exactly sure about the rotation ... I can see merit in both behaviors - showing the subtitles normally/horizontally while rotating only the video (because for example it was shot in "portrait" and not "landscape" mode) ... or rotating everything because the display that's used for presentation is rotated and the user wants everything rotated ... so it seems it might need to be optional.
__________________
Z370M Pro4 | i3-8100 | 16GB RAM | 256GB SSD + 40TB NAS
NVIDIA GTX 1060 6GB (385.28) | LG OLED65B7V
Win 10 64bit 1803 + Zoom Player v14
pankov is offline   Reply With Quote
Old 2nd November 2015, 09:34   #34019  |  Link
AngelGraves13
Registered User
 
Join Date: Dec 2010
Posts: 255
Quote:
Originally Posted by madshi View Post
Those threads you linked to don't look like simple deblocking at all. They seem to be targetted at low quality Anime content, and they do all sorts of things, like removing noise, tighten up edges etc etc. You could use AviSynth via ffdshow raw video processor to do *exactly* what those 2 threads suggest in real time video playback (if your CPU is fast enough).
Fair enough. I'd settle a simple deblocker that has 3 settings like the debanding. Low, Medium, High. I'd likely just leave it on High just like the debanding filter.

Does deblocking just work on 4x4, 8x8, and 16x16 blocks? MPEG-2 was 8x8 only? I hardly notice any blocks in MPEG-4 unless it's a low bitrate file. MPEG-2 needs deblocking regardless of bitrate or resolution. Even the early blu-rays with MPEG-2 can look quite bad.

If it was to be implemented, would the deblocking be done before or after image and chroma upscaling?

Last edited by AngelGraves13; 2nd November 2015 at 09:41.
AngelGraves13 is offline   Reply With Quote
Old 2nd November 2015, 09:44   #34020  |  Link
nevcairiel
Registered Developer
 
Join Date: Mar 2010
Location: Hamburg/Germany
Posts: 10,346
Quote:
Originally Posted by AngelGraves13 View Post
If it was to be implemented, would the deblocking be done before or after image and chroma upscaling?
Before image upscaling would be best, not sure about chroma though.
Image upscaling could otherwise create new artifacts around the block edges (or smooth them, depending on the scaler) which makes a deblock filters job ever so much harder.
__________________
LAV Filters - open source ffmpeg based media splitter and decoders
nevcairiel is offline   Reply With Quote
Reply

Tags
direct compute, dithering, error diffusion, madvr, ngu, nnedi3, quality, renderer, scaling, uhd upscaling, 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 20:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.