I have also been having problems playing streams directly from my HD-PVR. The video plays smooth but it does so in what almost looks like slow motion.
From the log output "Assuming NTSC or 60i..." leads to
CEdl::ReadEditDecisionLists(). It seems that XBMC has some what of a hack to determine interlaced content fps:
Code:
if (int(fFrameRate * 100) == 5994) // 59.940 fps = NTSC or 60i content
{
fFramesPerSecond = fFrameRate / 2; // ~29.97f - division used to retain accuracy of original.
CLog::Log(LOGDEBUG, "%s - Assuming NTSC or 60i interlaced content. Adjusted frames per second from %.3f (~59.940 fps) to %.3f",
__FUNCTION__, fFrameRate, fFramesPerSecond);
}
I'm guessing when this was put in there wasn't much 60p content and it was safe to assume that it was 60i content coming from some NTSC capture card. Now that 60p content is beginning to become more common this hack no longer works. I'm going to try changing the check to this:
Code:
if (iHeight == 486 && int(fFrameRate * 100) == 5994) // 59.940 fps = NTSC or 60i content
{ ...
Not sure if this is change is appropriate or if there are other clues in the stream that can differentiate 60i from 60p but this seems safe as i would assume most 60i material is at an NTSC resolution while the 60p content is not.
I'll build from source tonight and let you guys know how it goes. I haven't tried building the ATV XBMC from source before so hopefully i don't run into any issues. Seems pretty simple though.