[mythtv] HDTV patches

Daniel Thor Kristjansson danielk at cat.nyu.edu
Fri Apr 30 13:14:51 EDT 2004

]If that were so, why are:
]void SetRecorderFramesPlayed(long long played) { recorder_frames_played =
]played; }
]void SetFramesPlayed(long long played) { recorder_frames_played = played; }

This is just to avoid breaking the build, I am planning to remove
SetFramesPlayed() in the next patch. I thought this patch had already
grown too large.

]identical?  And:
]-    long long framesPlayed;
]+    long long recorder_frames_played;
]And why is it called 'Recorder' when the recorder has absolutely nothing to do
]with it?

I guess it would make more sense if I changed "Recorder" to "Recorded".
It's not really the frames played anymore, but the frame in the
recording we are at. With this patch there are two functions for the
frame rate, GetPlayerFrameRate(void) and GetRecorderFrameRate(void). The
first returns the number of actual frames we are drawing per second, and
thesecond returns the number of frames we progress through the recorded
video per second. I renamed SetFramesPlayed() to SetRecorderFramesPlayed()
so that it corresponds to the new GetRecorderFrameRate().

The recorder frame rate is used by things that consider every frame
in the recorded video, such as commercial detection, commercial skipping,
fast forward, and rewind. The player frame rate is used to set the frame
interval and to adjust audio warping.

]I tested 1080i, 480i, 480p, and 720p.  All looked much worse with your patch
]than before.
Can you try it with this in NuppelVideoPlayer.cpp:
  int fields = (interlaced) ? 1:3;
changed to
  int fields = (interlaced) ? 1:3;

If it looks alright with that change then it's the deinterlacing.

Otherwise, the only thing I can think of is the IDCT acceleration
to turn that off, change this in videoout_xvmc.cpp:
  XvMCSurfaceTypes::find(width, height, chroma,
                         true, 2, 0, 0,
                         data->XJ_disp, ai[i].base_id,
                         ai[i].base_id + ai[i].num_ports - 1,
                         p, s);
  XvMCSurfaceTypes::find(width, height, chroma,
                         false, 2, 0, 0,
                         data->XJ_disp, ai[i].base_id,
                         ai[i].base_id + ai[i].num_ports - 1,
                         p, s);

-- Daniel

More information about the mythtv-dev mailing list