Modify

Opened 3 years ago

Closed 3 years ago

Last modified 2 years ago

#11432 closed Bug Report - General (fixed)

5cced61dd causes stuttering on UK Channel 4 HD recordings

Reported by: mythtv@… Owned by: stichnot
Priority: minor Milestone: 0.27
Component: MythTV - Video Playback Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

Since updating past https://github.com/MythTV/mythtv/commit/5ccedb61ddd2fa87b426cd1c0fbc43d2645cb9a5 recordings from channel 4 HD have become unwatchable. It plays about half a second of video + audio, then freezes for a second etc.

There was a frontend error message about not being enough video frames buffered - I will grab a frontend log when I get a chance.

I built latest master with this one commit removed (using git rebase) and playback performs normally once again.

Attachments (0)

Change History (5)

comment:1 Changed 3 years ago by mythtv@…

I have also tried rebuilding the seektable of a broken recording, which doesn't seem to fix the issue.

comment:2 Changed 3 years ago by mythtv@…

I'm not sure if this is relevant, but part of the patch doesn't look consistent with itself.

In dtvrecorder.cpp, there is a frameRateMap array, which is initialized using the FrameRate? constructor. For fractional values, these are initialised as FrameRate?(24000, 1001), FrameRate?(30000, 1001) and FrameRate?(60000, 1001). The prototype for this constructor is FrameRate?(uint n, uint d=1).

Elsewhere in the code, AVRational is initialised with a similar constructor AVRational AVRationalInit(int num, int den = 1), and it is called in avformatdecoder.cpp with pkt_dur = AVRationalInit(1001, 60000);

I am not entirely sure of the usage of AVRational, but it would seem that the arguments are swapped (den = 1001 in the FrameRate? constructor, num = 1001 in the AVRational one). Looking at the code I suspect that the FrameRate? constructor is being called incorrectly, but I can't be sure.

comment:3 Changed 3 years ago by stichnot

  • Component changed from MythTV - General to MythTV - Video Playback
  • Milestone changed from unknown to 0.27
  • Owner set to stichnot
  • Status changed from new to accepted

comment:4 Changed 3 years ago by Jim Stichnoth <jstichnoth@…>

  • Resolution set to fixed
  • Status changed from accepted to closed

In b174418db53559939cad7b8f9642c0b298849bcf/mythtv:

Fixes #11432. Remove a now-unnecessary scaling operation.

H264Parser::frameRate() was modified in
5ccedb61ddd2fa87b426cd1c0fbc43d2645cb9a55ccedb61ddd2fa87b426 to return
frames per second instead of frames per thousand seconds, but the one
remaining call to frameRate() was still trying to convert to frames
per second. This caused big problems in the AVSync mechanism.

comment:5 Changed 2 years ago by Jim Stichnoth <jstichnoth@…>

In 444e8ee017acc4cf0fa6a04a1bc8e350430108e4/mythtv:

Fixes #11432. Remove a now-unnecessary scaling operation.

H264Parser::frameRate() was modified in
5ccedb61ddd2fa87b426cd1c0fbc43d2645cb9a55ccedb61ddd2fa87b426 to return
frames per second instead of frames per thousand seconds, but the one
remaining call to frameRate() was still trying to convert to frames
per second. This caused big problems in the AVSync mechanism.

Add Comment

Modify Ticket

Action
as closed The owner will remain stichnot.
The resolution will be deleted. Next status will be 'new'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.