[mythtv-commits] Ticket #12047: mythplayer picks the wrong fps for 1080i matroska, degrading to 1xHW deint
MythTV
noreply at mythtv.org
Thu Feb 6 00:25:05 UTC 2014
#12047: mythplayer picks the wrong fps for 1080i matroska, degrading to 1xHW deint
-----------------------------------------+---------------------------------
Reporter: angela.schmid@… | Owner:
Type: Patch - Bug Fix | Status: new
Priority: minor | Milestone: unknown
Component: MythTV - Video Playback | Version: Master Head
Severity: high | Keywords: deinterlace mkv
Ticket locked: 0 | 1080i
-----------------------------------------+---------------------------------
mythplayer chooses to use the avg_fps (50) instead of the codec_fps (25)
for 1080i matroska movies, therefor mythplayer decides to degrade
deinterlacing to max 1xHW.
The problem is most clearly with a movie with extreme horizontal panning.
I have a movie which I want to archive in mkv (lossless_cut) with a view
on a large Chinese dragon wall.
{{{
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High at L4.0
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Format settings, GOP : M=4, N=28
Codec ID : V_MPEG4/ISO/AVC
Bit rate : 2 884 Kbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Original frame rate : 25.000 fps
Standard : Component
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Bottom Field First
}}}
{{{
CoreContext avformatdecoder.cpp:1247 (normalized_fps) - AFD: Selected FPS
is 50 (avg 50 codec 25 container 1000 estimated 50)
}}}
Setting primary deinterlacing option (2xHW):
{{{
CoreContext videodisplayprofile.cpp:354 (GetFilteredDeint) - VDP:
GetFilteredDeint() : vdpau -> 'vdpaubasicdoublerate'
}}}
Degrade to fallback deinterlacing option (max 1xHW):
{{{
CoreContext mythplayer.cpp:2384 (VideoStart) - Player(0): Video sync
method can't support double framerate (refresh rate too low for 2x deint)
CoreContext videodisplayprofile.cpp:354 (GetFilteredDeint) - VDP:
GetFilteredDeint(vdpauadvanced) : vdpau -> 'vdpauadvanced'
}}}
Mythplayer should use the codec_fps, which is correct for 1080i.
The following dirty patch fixes the problem:
{{{
diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp
b/mythtv/libs/libmythtv/avformatdecoder.cpp
index 3a42b40..6698484 100644
--- a/mythtv/libs/libmythtv/avformatdecoder.cpp
+++ b/mythtv/libs/libmythtv/avformatdecoder.cpp
@@ -1221,7 +1221,11 @@ float AvFormatDecoder::normalized_fps(AVStream
*stream, AVCodecContext *enc)
// matroska demuxer sets the default_duration to avg_frame_rate
// mov,mp4,m4a,3gp,3g2,mj2 demuxer sets avg_frame_rate
- if ((QString(ic->iformat->name).contains("matroska") ||
+ if ((QString(ic->iformat->name).contains("matroska")) &&
+ container_fps < 121.0f && container_fps > 3.0f)
+ fps = container_fps;
+ else
+ if ((QString(ic->iformat->name).contains("xmatroska") ||
QString(ic->iformat->name).contains("mov")) &&
avg_fps < 121.0f && avg_fps > 3.0f)
fps = avg_fps;
}}}
--
Ticket URL: <https://code.mythtv.org/trac/ticket/12047>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list