[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