View Issue Details

IDProjectCategoryView StatusLast Update
0000360madVRbugpublic2015-12-21 14:52
Reporterromulous Assigned Tomadshi  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Summary0000360: Actual FPS Value Incorrect
DescriptionI logged this one into the Zoom Player tracker originally, but bLight says it is a madVR issue, so here we go.

When a specific option in madVR is enabled, the 'Actual FPS' value from the Playing Information dialog in Zoom Player is often wrong (just over double the correct value).

The option is 'Present Several Frames in Advance' in Rendering->Windowed Mode Settings. Note there is a similar setting in Rendering->Exclusive Mode Settings. With the option enabled, Actual FPS will often be wrong. With it disabled - on the same video - Actual FPS will be correct.

bLight said that Zoom Player just reports the information madVR passes it through the frame rate API.
TagsNo tags attached.
madVR Version0.89.16
Media Player (with version info)Zoom Player v11.1 Beta 2
Splitter (with version info)LAV 0.66.33 Nightly
Decoder (with version info)LAV 0.66.33 Nightly
DecodingSoftware
Deinterlacingauto mode
DXVA2 Scaling Activeno
Aero / Desktop CompositionOn
Problem occurs with modeall modes
GPU ManufacturerNVidia
GPU ModelGTX-660Ti
GPU Driver Version358.91

Activities

madshi

2015-11-12 10:00

administrator   ~0001231

I don't think this can be considered a bug. The Microsoft interface ZP uses to ask this information from madVR is "IQualProp::get_AvgFrameRate", and the description says:

> The get_AvgFrameRate method retrieves the actual
> average frame rate since streaming started.

And the documentation of VIDEOINFOHEADER says:

> if the intended rate is 60,000/1001 (NTSC TV)
> and the monitor's refresh rate is 60Hz, the
> intended rate and the actual rate will never
> match. To retrieve the actual frame rate achieved
> during playback, use the IQualProp::get_AvgFrameRate
> method on the video renderer.

So madVR reports the number of frames sent to Direct3D to ZP. When using "present several frames in advance", madVR sends one frame per VSync to Direct3D.

The Microsoft API explicitly does *NOT* reference the "authored" or "intended" frame rate, but the actually achieved playback frame rate.

romulous

2015-11-12 11:11

reporter   ~0001232

Alright, makes sense (to both me and bLight). Thanks.

madshi

2015-11-12 11:17

administrator   ~0001233

Last edited: 2015-11-12 11:17

If bLight wants to know the source movie framerate, he can ask the decoder's output pin for "AvgTimePerFrame". Or if bLight wants to know the frame rate after deinterlacing, he can use "IMadVRInfo::GetUlonglong("frameRate")":

frameRate, ulonglong, frame rate of the video after deinterlacing (REFERENCE_TIME)

There's more information available through IMadVRInfo, see "developers\mvrInterfaces.h".

Issue History

Date Modified Username Field Change
2015-11-12 09:50 romulous New Issue
2015-11-12 10:00 madshi Note Added: 0001231
2015-11-12 11:11 romulous Note Added: 0001232
2015-11-12 11:17 madshi Note Added: 0001233
2015-11-12 11:17 madshi Note Edited: 0001233
2015-12-21 14:52 madshi Status new => closed
2015-12-21 14:52 madshi Assigned To => madshi
2015-12-21 14:52 madshi Resolution open => no change required