[mythtv] MPEG-4 trouble on SMP

Isaac Richards mythtv-dev@snowman.net
Thu, 31 Oct 2002 10:01:45 -0500


On Wednesday 30 October 2002 10:35 pm, Samit Basu wrote:
> Hi -
>
> I've got a strange problem with mythtv when I use MPEG-4 encoding.
> Recordings
> work fine, as do playbacks, but when I watch live TV, the video is
> corrupted.  It looks
> mostly fine, but there are blocking artifacts -- blocks of color, white and
> black that
> fade in and out periodically.  I don't have the same problem with rtjpeg,
> and the problem
> doesn't go away with reduced capture resolution (I tried down to 320 x
> 200). I'm running
> on a dual 1GHz PIII, and the artifacts go away when I run a non-SMP kernel.
> (hence
> the subject line)...  I looked at the rwlocks in RingBuffer.cpp, but wasn't
> familiar
> enough with the code to spot the problem (e.g., why is a read-lock used in
> the Write
> method?).  Any ideas?

Probably thread-safety issues in libavcodec that are exposed when running SMP.  
Anyone feel like checking that out?

Oh, and the rw locks in the RingBuffer class are locking the 'dumpfd' 
variable, which only gets read in the Write method, and modified in 
TransitionToFile and TransitionToRing..  It currently is overlocking in there 
(the Read method doesn't need a lock), but the additional overhead should be 
minimal.

Isaac