[mythtv-commits] mythtv commits

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Sat Apr 23 02:05:02 UTC 2005


----------------------------------------------------------------------------
Changes committed by danielk on Sat Apr 23 02:04:33 2005

Modified Files:
   in mythtv/libs/libmyth:
        DisplayRes.cpp DisplayRes.h settings.h 
   in mythtv/libs/libmythtv:
        NuppelVideoPlayer.cpp NuppelVideoPlayer.h avformatdecoder.cpp 
        avformatdecoder.h decoderbase.h libmythtv.pro tv_play.cpp 
        videobuffers.cpp videobuffers.h videoout_directfb.cpp 
        videoout_directfb.h videoout_dx.cpp videoout_dx.h 
        videoout_null.cpp videoout_null.h videoout_quartz.cpp 
        videoout_quartz.h videoout_xv.cpp videoout_xv.h 
        videooutbase.cpp videooutbase.h 
   in mythtv/programs/mythfrontend:
        globalsettings.cpp 
Removed Files:
   in mythtv/libs/libmythtv:
        videoout_xvmc.cpp videoout_xvmc.h 
Log Message:

NOTE: I recommend a make distclean...

This is the fabled XV/XvMC merge patch. Of course, it does a 
little more than that.

In videooutbase.h all the videobuffer management code has been
   removed and placed in videobuffers.h.

videobuffers.h provides the same "available", and "used/busy" 
states/queues as well as tracking the limbo state between 
available and used (after GetNextFreeFrame, and before 
ReleaseFrame), and optionally tracking the paused and
displayed state. These are used for XvMC, the paused state
because we can't waste a buffer on pause all the time, when
we have just eight buffers, and the displayed state because
we can't recycle XvMC frames until after any frames depending
on them have finished rendering. There is doxygen documentation
in VideoOutput, VideoOutputXv and VideoBuffers that sheds more
light on this. VideoBuffers also contains optional frame
locking and frame dependence tracking, this is currently
only used by XvMC.

Because of the VideoOutput changes there are minor changes in
all the other VideoOutput subclasses, for the most part this
just replaces code copied from VideoOutput with VideoBuffer
calls.

In DisplayRes the backward compatibility calls have been removed,
because the only class using them VideoOutputXvMC is gone.

Finally, VideoOutputXv has all the big changes. We now do automatic
fallback from XvMC-VLD to XvMC-IDCT to XvMC-MC to XVideo to XShm to
Xlib. The VLD to IDCT/MC fallback is only available if you have 
libXvMCW installed, otherwise you must chose at compile time which
one you need. This library will ship with the next X.org release.
XvMC has been greatly improved. We do more granular locking, which
allows us to feed the hardware with new frames more aggressively.
We serialize all calls used to render, composite and show a frame,
which should prevent lockups with non-threadsafe drivers. We had
this back in 0.16, but because the locks were less granular XvMC
HDTV wasn't really possible. Also, there is now support for more
than one OSD composite for XvMC buffer, I've set this at 2, but
1 and 3 are also safe. This helps a little on more powerful 
systems, but decent OSD on HDTV will have to wait for 
chromakey-osd.

There are some changes to NVP and the AVFD. Some of these are to
support fallback; In particular ffmpeg needs to be reinitialized
if we are using an XvMC surface, and we can only use an XvMC 
surface if the video is MPEG2 compatible. There are also some
provisions made in NVP for dealing with a VideoOutput where all
the buffers have been used up and they aren't getting drained.
In this error condition DiscardFrames() is called and the video
output is restarted. This shouldn't ever be triggered, but will
give us a more graceful recovery if buffers get lost. If your
code triggers this you need to call DoneDisplayingFrame()
or DiscardFrame() at more often....

Finally, the globalsettings change is to inform the user less 
cryptically of the incompatibility of libmpeg2 and XvMC. And, 
the settings.h change lets us disable the XvMC options if 
libmpeg2 is selected. (I'm planning to revisit settings.h
with a more generic solution, but I figured everyone is
going to need to recompile everything now anyway...)

-- dtk

----------------------------------------------------------------------------


More information about the mythtv-commits mailing list