+++ /dev/null
---- libmpdemux/demux_mov.c (revision 24724)
-+++ libmpdemux/demux_mov.c (working copy)
-@@ -173,11 +173,12 @@
- i=trak->chunkmap_size;
- while(i>0){
- --i;
-- for(j=trak->chunkmap[i].first;j<last;j++){
-+ j=FFMAX(trak->chunkmap[i].first, 0);
-+ for(;j<last;j++){
- trak->chunks[j].desc=trak->chunkmap[i].sdid;
- trak->chunks[j].size=trak->chunkmap[i].spc;
- }
-- last=trak->chunkmap[i].first;
-+ last=FFMIN(trak->chunkmap[i].first, trak->chunks_size);
- }
-
- #if 0
-@@ -235,6 +236,8 @@
- s=0;
- for(j=0;j<trak->durmap_size;j++){
- for(i=0;i<trak->durmap[j].num;i++){
-+ if (s >= trak->samples_size)
-+ break;
- trak->samples[s].pts=pts;
- ++s;
- pts+=trak->durmap[j].dur;
-@@ -246,6 +249,8 @@
- for(j=0;j<trak->chunks_size;j++){
- off_t pos=trak->chunks[j].pos;
- for(i=0;i<trak->chunks[j].size;i++){
-+ if (s >= trak->samples_size)
-+ break;
- trak->samples[s].pos=pos;
- mp_msg(MSGT_DEMUX, MSGL_DBG3, "Sample %5d: pts=%8d off=0x%08X size=%d\n",s,
- trak->samples[s].pts,
-@@ -1568,8 +1573,7 @@
- if( udta_len>udta_size)
- udta_len=udta_size;
- {
-- char dump[udta_len-4];
-- stream_read(demuxer->stream, (char *)&dump, udta_len-4-4);
-+ stream_skip(demuxer->stream, udta_len-4-4);
- udta_size -= udta_len;
- }
- }
+++ /dev/null
---- MPlayer-20020320/etc/codecs.conf.wiget Tue Mar 19 08:07:06 2002
-+++ MPlayer-20020320/etc/codecs.conf Wed Mar 20 15:05:40 2002
-@@ -8,54 +8,6 @@
- ; VIDEO CODECS
- ;=============================================================================
-
--; =============== Win32/libmpeg2/ProjectMayo MPEG CODECS =====================
--
--videocodec vivo
-- info "Vivo H.263"
-- status working
-- fourcc VIVO,vivo vivo
-- fourcc viv1,viv2 vivo
-- driver vfw
-- dll "ivvideo.dll"
-- out BGR32,BGR24,BGR15 flip
-- in BGR24
-- cpuflags mmx
--
--videocodec u263
-- info "UB Video H.263+ Decoder"
-- comment "added by Juanjo"
-- status working
-- fourcc U263
-- fourcc vivo,VIVO U263
-- fourcc viv1 U263
-- driver dshow
-- dll "ubv263d+.ax"
-- guid 0x00af1181, 0x6ebb, 0x11d4, 0x9d, 0x5a, 0x00, 0x50, 0x04, 0x79, 0x6c, 0xc0
--; out I420 flip
--; out YVYU flip,noflip
--; out YV12 flip
--; out UYVY flip,noflip
--; out YUY2 flip
-- out BGR24 flip
-- cpuflags mmx
--
--videocodec divxds
-- info "DivX ;-) (MS MPEG-4 v3)"
-- comment "with postprocessing"
-- status working
-- fourcc MP43,mp43 div3 ; fourcc mapping to div3
-- fourcc DIV5,div5 div3
-- fourcc DIV6,div6 div4
-- fourcc DIV3,div3,DIV4,div4
-- fourcc AP41 div3 ; AngelPotion stuff
-- driver dshow
-- dll "divx_c32.ax"
-- guid 0x82CCd3E0, 0xF71A, 0x11D0, 0x9f, 0xe5, 0x00, 0x60, 0x97, 0x78, 0xaa, 0xaa
--; out YV12
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
- videocodec mpeg12
- info "MPEG 1 or 2"
- comment "with postprocessing"
-@@ -65,47 +17,6 @@
- driver libmpeg2
- dll "libmpeg2"
- out YV12
--
--videocodec mpeg4ds
-- info "Microsoft MPEG-4 v1/v2"
-- status working
-- comment "with postprocessing"
-- fourcc DIV2,div2 mp42
-- fourcc MP4S,mp4s ; ISO MPEG-4 Video V1
-- fourcc MPG4,mpg4
-- fourcc MP42,mp42
-- driver dshow
-- dll "mpg4ds32.ax"
-- guid 0x82CCD3E0, 0xF71A, 0x11D0, 0x9F, 0xE5, 0x00, 0x60, 0x97, 0x78, 0xEA, 0x66
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
--videocodec mpeg4
-- info "Microsoft MPEG-4 v1/v2"
-- status working
-- fourcc MPG4,mpg4
-- fourcc MP42,mp42
-- fourcc DIV2 mp42
-- driver vfw
-- dll "mpg4c32.dll"
-- out YUY2 yuvhack
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec divx
-- info "DivX ;-) (MS MPEG-4 v3)"
-- status working
-- fourcc MP43,mp43 div3 ; M$ MPEG4 v3 (fourcc mapping to div3)
-- fourcc DIV5,div5 div3 ; DivX 3.20
-- fourcc DIV6,div6 div4 ; -||-
-- fourcc DIV3,div3,DIV4,div4
-- fourcc AP41 div3 ; AngelPotion stuff
-- driver vfw
-- dll "divxc32.dll"
-- out YUY2 yuvhack
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
-
- videocodec odivx
- info "OpenDivX (MPEG-4 v2)"
-@@ -143,63 +54,6 @@
- out UYVY
- out BGR32,BGR24,BGR16,BGR15
-
--videocodec divx4vfw
-- info "DivX4Windows-VFW (DivX 3.x, DivX4)"
-- status working
-- comment "with postprocessing!!!"
-- fourcc DIVX,divx ; opendivx / divx4
-- fourcc DIV1,div1 divx
--; fourcc MP4S,mp4s ; ISO MPEG-4 Video V1
-- fourcc MP43,mp43,DIV3,div3,DIV4,div4 DIV3 ; for DivX4Linux only!
-- fourcc AP41 DIV3 ; AngelPotion stuff
-- format 0x4
-- driver vfw
-- dll "divx.dll"
--; out YV12 ; buggy
-- out YUY2
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec i263
-- info "I263"
-- status working
-- fourcc I263,i263,I420,i420
-- fourcc vivo,VIVO I263
-- fourcc viv1 I263
-- driver vfw
-- dll "i263_32.drv"
--; out I420
-- out YUY2
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec m3jpeg
-- info "Morgan Motion JPEG Codec"
-- status working
-- fourcc MJPG
-- fourcc mjpa,mjpb,mjpg MJPG ; MOV files
-- fourcc dmb1 MJPG ; MJPEG by Matrox Rainbow Runner
-- driver vfw
-- dll "m3jpeg32.dll"
-- out YUY2
-- out UYVY
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec mjpeg
-- info "MainConcept Motion JPEG"
-- status working
-- fourcc MJPG
-- fourcc mjpa,mjpb,mjpg MJPG ; MOV files
-- fourcc AVRn,AVDJ MJPG ; AVID
-- driver vfw
-- dll "mcmjpg32.dll"
-- out YUY2
-- out UYVY
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--
- ; =============== FFMPEG MPEG CODECS =========================
-
- videocodec ffmjpeg
-@@ -434,315 +288,6 @@
- fourcc mp4a,MP4A
- driver faad
-
--; =============== WINDOWS DLL's ==============
--
--videocodec vp3
-- info "On2 OpenSource VP3-Codec"
-- status working
-- comment "For SSE-systems use hacked dll from ftp://mplayerhq.hu/MPlayer/samples/drivers32/"
-- fourcc VP30,vp30,VP31,vp31
-- driver vfwex
-- dll "vp31vfw.dll"
-- out YUY2
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec indeo5ds
-- info "Intel Indeo 5"
-- status working
-- fourcc IV50,iv50
-- driver dshow
-- dll "ir50_32.dll"
-- guid 0x30355649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
-- out YV12
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
--videocodec indeo5
-- info "Intel Indeo 5"
-- status working
-- fourcc IV50,iv50
-- driver vfw
-- dll "ir50_32.dll"
--; out YV12,I420 ; flickering
-- out YUY2
-- out BGR32,BGR24,BGR15
--
--videocodec indeo4
-- info "Intel Indeo 4.1"
-- status working
--; comment "upside-down"
-- fourcc IV41,iv41
-- driver vfw
-- dll "ir41_32.dll"
-- out BGR24,BGR15
-- cpuflags mmx
--
--videocodec indeo3
-- info "Intel Indeo 3.1/3.2"
-- status buggy
-- comment "upside-down with some vo drivers, (no yuv)"
-- fourcc IV31,iv31
-- fourcc IV32,iv32
-- driver vfw
-- dll "ir32_32.dll"
-- out BGR24,BGR15 flip
-- cpuflags mmx
--
--videocodec cvidvfw
-- info "Cinepak Video"
-- status working
-- fourcc cvid
-- driver vfw
-- dll "iccvid.dll"
--; out YUY2
--; out UYVY
-- out BGR24,BGR15
-- cpuflags mmx
--
--videocodec cram
-- info "Microsoft Video 1"
-- comment "Input bpp = output bpp (8bpp is only supported by vo_ggi)"
-- status working
-- fourcc cram,CRAM CRAM
-- fourcc msvc,MSVC CRAM
-- fourcc wham,WHAM CRAM
-- driver vfw
-- dll "msvidc32.dll"
-- out BGR8,BGR15,BGR24
--
--videocodec vcr2
-- info "ATI VCR-2"
-- status crashing
-- comment "segfault"
-- fourcc VCR2
-- driver vfw
-- dll "ativcr2.dll"
-- out YUY2
-- out BGR32,BGR24,BGR15
-- cpuflags mmx
--
--videocodec wmv7
-- info "Windows Media Video 7"
-- status working
-- fourcc WMV1
-- driver dshow
-- dll "wmvds32.ax"
-- guid 0x4facbba1, 0xffd8, 0x4cd7, 0x82, 0x28, 0x61, 0xe2, 0xf6, 0x5c, 0xb1, 0xae
--; out I420
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
--videocodec wmv8
-- info "Windows Media Video 8"
-- status working
-- fourcc WMV2
-- driver dshow
-- dll "wmv8ds32.ax"
-- guid 0x521fb373, 0x7654, 0x49f2, 0xbd, 0xb1, 0x0c, 0x6e, 0x66, 0x60, 0x71, 0x4f
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
--videocodec tm20
-- info "TrueMotion 2.0"
-- status crashing
-- comment "segfault in the DLL"
-- fourcc TM20
-- driver dshow
-- dll "tm20dec.ax"
-- guid 0x4cb63e61, 0xc611, 0x11D0, 0x83, 0xaa, 0x00, 0x00, 0x92, 0x90, 0x01, 0x84
--; out UYVY
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
--
--videocodec qdv
-- info "Sony Digital Video (DV)"
-- status working
-- fourcc DVSD,dvsd,dvcp dvsd
--; fourcc "dvc " dvsd
-- driver dshow
-- dll "qdv.dll"
-- guid 0xB1B77C00, 0xC3E4, 0x11CF, 0xAF, 0x79, 0x00, 0xAA, 0x00, 0xB6, 0x7A, 0x42
-- out YUY2
-- out UYVY
-- out BGR32,BGR24,BGR16,BGR15
-- cpuflags mmx
--
--videocodec mcdv
-- info "MainConcept DV Codec"
-- status working
-- fourcc DVSD,dvsd,dvcp dvsd # dvcp stands for PAL DV in mov
-- fourcc "dvc " dvsd
-- driver vfw
-- dll "mcdvd_32.dll"
-- out YUY2
-- out UYVY
-- out BGR32,BGR24,BGR15
--
--videocodec morgands
-- info "Morgan MJPEG"
-- status crashing
-- fourcc MJPG mjpg
-- driver dshow
-- dll "M3JPEGdec.ax"
-- guid 0x6988b440, 0x8352, 0x11d3, 0x9b, 0xda, 0xca, 0x86, 0x73, 0x7c, 0x71, 0x68
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
--
--videocodec huffyuv
-- info "HuffYUV"
-- status buggy
-- comment "YUY2 _or_ 24/32bpp only (depending on file encoding)"
-- fourcc HFYU
-- driver vfw
-- dll "huffyuv.dll"
-- out YUY2 flip,noflip
--; out UYVY flip
-- out BGR32,BGR24 flip
--
--videocodec mszh
-- info "AVImszh"
-- status buggy
-- comment "24bpp only"
-- fourcc MSZH
-- driver vfw
-- dll "avimszh.dll"
--; out YUY2
--; out BGR32,BGR24,BGR15
-- out BGR24
--
--videocodec zlib
-- info "AVIzlib"
-- status buggy
-- comment "24bpp only"
-- fourcc ZLIB
-- driver vfw
-- dll "avizlib.dll"
--; out YUY2
--; out BGR32,BGR24,BGR15
-- out BGR24
--
--videocodec mwv1
-- info "Motion Wavelets"
-- status buggy
-- comment "no yuv, flip requires"
-- fourcc MWV1
-- driver vfw
-- dll "icmw_32.dll"
--; out YV12 flip
--; out YUY2 flip
-- out BGR32,BGR24,BGR15 flip
-- cpuflags mmx
--
--videocodec m261
-- info "M261"
-- status untested
-- fourcc m261,M261
-- driver vfw
-- dll "msh261.drv"
-- out BGR32,BGR24,BGR15
--
--videocodec asv2
-- info "ASUS V2"
-- status buggy
-- comment "rgb upside down, yuv ok"
-- fourcc ASV2
-- driver vfw
-- dll "asusasv2.dll"
--; out YVYU
-- out UYVY
-- out BGR32,BGR24,BGR15 flip
-- cpuflags mmx
--
--videocodec asv1
-- info "ASUS V1"
-- status buggy
-- comment "rgb upside down, yuv ok"
-- fourcc ASV1
-- driver vfw
-- dll "asusasvd.dll"
--; out YVYU
-- out UYVY
-- out BGR32,BGR24,BGR15 flip
-- cpuflags mmx
--
--videocodec 3ivX
-- info "3ivX Delta 3.5"
-- status crashing
-- fourcc 3IV1
-- driver dshow
-- dll "3ivxdmo.dll"
-- guid 0x0E6772C0, 0xDD80, 0x11D4, 0xB5, 0x8f, 0xA8, 0x6B, 0x66, 0xd0, 0x61, 0x1c
-- out YV12
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
--
--videocodec mss1
-- info "Windows Screen Video"
-- status crashing
-- fourcc MSS1
-- driver dshow
-- dll "msscds32.ax"
-- guid 0x3301a7c4, 0x0a8d, 0x11d4, 0x91, 0x4d, 0x00, 0xc0, 0x4f, 0x61, 0x0d, 0x24
--; out I420
--; out YUY2
-- out BGR32,BGR24,BGR16,BGR15
--
--videocodec pim1
-- info "PIM1"
-- status buggy
-- comment "no picture. use ffmpeg12!"
-- fourcc PIM1
-- driver vfw
-- dll "PCLEPIM1.DLL"
-- out BGR24 flip
--; out I420
--; out YUY2
--; out BGR32,BGR24,BGR16,BGR15
--
--videocodec 3ivXqtx
-- info "3ivX Delta 3.5"
-- status crashing
-- fourcc 3IV1
-- driver vfw
-- dll "qtx/3ivx.qtx"
-- out YV12
-- out YUY2
-- out BGR32,BGR24,BGR16,BGR15
--
--videocodec alaris
-- info "Alaris VideoGramPiX"
--; http://www.alaris.com/movies/toocool.vgm
--; Martin Schuster <schuster@ap.univie.ac.at>
-- status buggy
-- comment "only produces strange patterns"
-- fourcc VGPX,VTLP VGPX
-- driver vfwex
-- dll "vgpix32d.dll"
-- out UYVY
--
--videocodec avid
-- info "AVID"
-- status working
-- fourcc AVRn
-- fourcc AVDJ AVRn
-- fourcc MJPG,mjpg AVRn
-- driver vfw
-- dll "AvidAVICodec.dll"
-- out BGR24 flip
--
--videocodec CJPG
-- info "CJPG"
-- status untested
-- fourcc CJPG
-- driver vfw
-- dll "CtWbJpg.DLL"
-- out YUY2
-- out UYVY
-- out BGR24,BGR15
-
- ; =============== XANIM DLL's =============
-
-@@ -933,22 +478,6 @@
- driver pcm
- dll "uncompressed"
-
--audiocodec divx
-- info "DivX audio (WMA)"
-- status working
-- format 0x160
-- format 0x161
-- driver acm
-- dll "divxa32.acm"
-- cpuflags mmx
--
--audiocodec msadpcmacm
-- info "MS ADPCM"
-- status working
-- format 0x2
-- driver acm
-- dll "msadp32.acm"
--
- audiocodec mp3
- info "MPEG layer-2, layer-3"
- status working
-@@ -985,39 +514,6 @@
- dll "mpegaudio"
- flags seekable
-
--audiocodec mp3acm
-- info "MPEG layer-3"
-- status working
-- comment "conflicts with security kernel patches"
-- format 0x55
-- driver acm
-- dll "l3codeca.acm"
-- flags seekable
--
--audiocodec imaadpcmacm
-- info "IMA ADPCM"
-- status working
-- format 0x11
-- driver acm
-- dll "imaadp32.acm"
--
--audiocodec msgsmacm
-- info "MS GSM"
-- status working
-- format 0x31
-- format 0x32
-- driver acm
-- dll "msnaudio.acm"
--; dll "msgsm32.acm"
--
--audiocodec msgsm
-- info "MS GSM"
-- status working
-- format 0x31
-- format 0x32
-- driver msgsm
-- dll "xa_gsm.c"
--
- audiocodec alaw
- info "aLaw"
- status working
-@@ -1054,30 +550,6 @@
- driver libac3
- dll "libac3"
-
--audiocodec voxware
-- info "VoxWare"
-- status working
-- format 0x75
-- driver dshow
-- dll "voxmsdec.ax"
-- guid 0x73f7a062, 0x8829, 0x11d1, 0xb5, 0x50, 0x00, 0x60, 0x97, 0x24, 0x2d, 0x8d
--
--audiocodec acelp
-- info "ACELP.net Sipro Lab Audio Decoder"
-- status working
-- format 0x130
-- driver dshow
-- dll "acelpdec.ax"
-- guid 0x4009f700, 0xaeba, 0x11d1, 0x83, 0x44, 0x00, 0xc0, 0x4f, 0xb9, 0x2e, 0xb7
--
--audiocodec imc
-- info "Intel Music Coder"
-- status working
-- comment "driver at http://codeczone.virtualave.net/FXIMCAUD.zip"
-- format 0x401
-- driver acm
-- dll "imc32.acm"
--
- audiocodec hwac3
- info "AC3 through SPDIF"
- status working
-@@ -1097,14 +569,6 @@
- ; driver acm
- ; dll "vorbis.acm"
-
--audiocodec vivoaudio
-- info "Vivo G.723/Siren Audio Codec"
-- status working
-- format 0x111 ; vivo g.723
-- format 0x112 ; siren
-- driver acm
-- dll "vivog723.acm"
--
- audiocodec g72x
- info "G.711/G.721/G.723"
- status untested
-@@ -1114,20 +578,3 @@
- driver g72x
- dll "g72x.c"
-
--audiocodec atrac3
-- info "Sony ATRAC3"
-- status buggy
-- format 0x270
-- driver acm
-- dll "atrac3.acm"
--
--audiocodec ALF2
--; http://www.nctsoft.com/products/NCTALFCD/
--; jdp@mail.sonofon.dk
-- info "ALF2"
-- status untested
-- comment "Working so try it"
-- format 0x1FC4 ; ALF2
-- driver acm
-- dll "alf2cd.acm"
--
+++ /dev/null
---- MPlayer-1.0pre8/libvo/Makefile.gnome-screensaver 2006-06-11 20:35:43.000000000 +0200
-+++ MPlayer-1.0pre8/libvo/Makefile 2006-06-12 15:42:21.000000000 +0200
-@@ -62,6 +62,9 @@
- vo_mpegpes.o: vo_mpegpes.c
- $(CC) -c $(CFLAGS) $(DVB_INC) -o $@ $<
-
-+gnome_screensaver.o: gnome_screensaver.c
-+ $(CC) -c $(CFLAGS) $(DBUS_GLIB_INC) -o $@ $<
-+
- all: $(LIBNAME)
-
- clean:
---- MPlayer-1.0pre8/libvo/gnome_screensaver.c.gnome-screensaver 2006-06-12 15:42:21.000000000 +0200
-+++ MPlayer-1.0pre8/libvo/gnome_screensaver.c 2006-06-12 15:42:21.000000000 +0200
-@@ -0,0 +1,120 @@
-+/*
-+ * gnome_screensaver.c v0.0.7
-+ *
-+ * Enable/Disable the GNOME screensaver
-+ * Supports GNOME screensaver API 2.14 and 2.15 and 2.16
-+ *
-+ * Call gnome_screensaver_control(1) to enable and
-+ * gnome_screensaver_control(0) to disable
-+ *
-+ */
-+
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <dbus/dbus-glib.h>
-+
-+#include "gnome_screensaver.h"
-+#include "mp_msg.h"
-+#include "help_mp.h"
-+
-+#define GS_SERVICE "org.gnome.ScreenSaver"
-+#define GS_PATH "/org/gnome/ScreenSaver"
-+#define GS_INTERFACE "org.gnome.ScreenSaver"
-+
-+#define GS_APPLICATION_NAME "MPlayer"
-+#define GS_REASON_FOR_INHIBIT "Playing a movie"
-+
-+static guint32 cookie;
-+
-+void gnome_screensaver_control(int enable)
-+{
-+ DBusGConnection *connection;
-+ GError *error;
-+ DBusGProxy *proxy;
-+ gboolean ret;
-+ char *funcname = "gnome_screensaver_control()";
-+
-+ g_type_init();
-+
-+ /* Get a connection to the session bus */
-+ error = NULL;
-+ connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
-+ if (connection == NULL) {
-+ mp_msg(MSGT_VO, MSGL_ERR,
-+ funcname, MSGTR_OpenBusConnectionError, error->message);
-+ g_error_free(error);
-+ return;
-+ }
-+
-+ /* Create a proxy object */
-+ proxy = dbus_g_proxy_new_for_name(connection,
-+ GS_SERVICE, GS_PATH, GS_INTERFACE);
-+
-+ /* Enable the screensaver */
-+ if (enable) {
-+ /* First call the GNOME screensaver 2.15 API method */
-+ error = NULL;
-+ ret =
-+ dbus_g_proxy_call(proxy, "UnInhibit", &error, G_TYPE_UINT,
-+ cookie, G_TYPE_INVALID);
-+
-+ /* If this fails, try the GNOME screensaver 2.14 API */
-+ if (!ret && error->domain == DBUS_GERROR
-+ && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
-+ mp_msg(MSGT_VO, MSGL_V,
-+ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
-+ funcname);
-+ g_error_free(error);
-+ error = NULL;
-+ ret =
-+ dbus_g_proxy_call(proxy, "AllowActivation", &error,
-+ G_TYPE_INVALID, G_TYPE_INVALID);
-+ }
-+ }
-+ /* Disable the screensaver */
-+ else {
-+ /* First call the GNOME screensaver 2.15 API method */
-+ error = NULL;
-+ ret =
-+ dbus_g_proxy_call(proxy, "Inhibit", &error, G_TYPE_STRING,
-+ GS_APPLICATION_NAME, G_TYPE_STRING,
-+ GS_REASON_FOR_INHIBIT, G_TYPE_INVALID,
-+ G_TYPE_UINT, cookie, G_TYPE_INVALID);
-+
-+ /* If this fails, try the GNOME screensaver 2.14 API */
-+ if (!ret && error->domain == DBUS_GERROR
-+ && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
-+ mp_msg(MSGT_VO, MSGL_V,
-+ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
-+ funcname);
-+ g_error_free(error);
-+ error = NULL;
-+ ret =
-+ dbus_g_proxy_call(proxy, "InhibitActivation", &error,
-+ G_TYPE_STRING, GS_REASON_FOR_INHIBIT,
-+ G_TYPE_INVALID, G_TYPE_INVALID);
-+ }
-+ }
-+
-+ if (!ret) {
-+ /* Check if it's a remote exception or a regular GError */
-+ if (error->domain == DBUS_GERROR
-+ && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
-+ mp_msg(MSGT_VO, MSGL_ERR,
-+ funcname, MSGTR_RemoteMethodException,
-+ dbus_g_error_get_name(error), error->message);
-+ }
-+ else {
-+ mp_msg(MSGT_VO, MSGL_ERR,
-+ funcname, MSGTR_GError, error->message);
-+ }
-+ g_error_free(error);
-+ }
-+ else {
-+ mp_msg(MSGT_VO, MSGL_INFO,
-+ enable ? MSGTR_GNOMEScreensaverEnabled :
-+ MSGTR_GNOMEScreensaverDisabled);
-+ }
-+
-+ g_object_unref(proxy);
-+}
---- MPlayer-1.0pre8/libvo/gnome_screensaver.h.gnome-screensaver 2006-06-12 15:42:21.000000000 +0200
-+++ MPlayer-1.0pre8/libvo/gnome_screensaver.h 2006-06-12 15:42:21.000000000 +0200
-@@ -0,0 +1,6 @@
-+#ifndef _GNOME_SCREENSAVER_H
-+#define _GNOME_SCREENSAVER_H
-+
-+extern void gnome_screensaver_control(int enable);
-+
-+#endif /* !_GNOME_SCREENSAVER_H */
---- MPlayer-1.0pre8/libvo/x11_common.c.gnome-screensaver 2006-06-11 20:35:43.000000000 +0200
-+++ MPlayer-1.0pre8/libvo/x11_common.c 2006-06-12 15:42:21.000000000 +0200
-@@ -58,6 +58,10 @@
- #include "mplayer.h"
- #endif
-
-+#ifdef HAVE_DBUS_GLIB
-+#include "gnome_screensaver.h"
-+#endif
-+
- #define WIN_LAYER_ONBOTTOM 2
- #define WIN_LAYER_NORMAL 4
- #define WIN_LAYER_ONTOP 6
-@@ -1691,8 +1695,12 @@
- timeout_save = 0;
- }
-
-- if (stop_xscreensaver)
-+ if (stop_xscreensaver) {
- xscreensaver_enable();
-+#ifdef HAVE_DBUS_GLIB
-+ gnome_screensaver_control(1);
-+#endif
-+ }
- if (kdescreensaver_was_running && stop_xscreensaver)
- {
- system
-@@ -1737,8 +1745,12 @@
- allow_exp);
- }
- // turning off screensaver
-- if (stop_xscreensaver)
-+ if (stop_xscreensaver) {
- xscreensaver_disable(mDisplay);
-+#ifdef HAVE_DBUS_GLIB
-+ gnome_screensaver_control(0);
-+#endif
-+ }
- if (stop_xscreensaver && !kdescreensaver_was_running)
- {
- kdescreensaver_was_running =
---- MPlayer-1.0pre8/help/help_mp-en.h.gnome-screensaver 2006-06-11 20:35:45.000000000 +0200
-+++ MPlayer-1.0pre8/help/help_mp-en.h 2006-06-12 15:42:21.000000000 +0200
-@@ -678,6 +678,13 @@
- #define MSGTR_InsertingAfVolume "[Mixer] No hardware mixing, inserting volume filter.\n"
- #define MSGTR_NoVolume "[Mixer] No volume control available.\n"
-
-+// gnome_screensaver.c
-+#define MSGTR_OpenBusConnectionError "%s: Failed to open connection to bus: %s\n"
-+#define MSGTR_RemoteMethodException "%s: Caught remote method exception %s: %s\n"
-+#define MSGTR_GError "%s: Error: %s\n"
-+#define MSGTR_GNOMEScreensaverEnabled "GNOME screensaver enabled\n"
-+#define MSGTR_GNOMEScreensaverDisabled "GNOME screensaver disabled\n"
-+
- // ====================== GUI messages/buttons ========================
-
- #ifdef HAVE_NEW_GUI
---- MPlayer-1.0pre8/Makefile.gnome-screensaver 2006-06-11 20:35:47.000000000 +0200
-+++ MPlayer-1.0pre8/Makefile 2006-06-12 15:42:21.000000000 +0200
-@@ -74,6 +74,7 @@
- $(DIRECTFB_LIB) \
- $(CACA_LIB) \
- $(VESA_LIB) \
-+ $(DBUS_GLIB_LIB) \
-
- ifeq ($(EXTERNAL_VIDIX),yes)
- VO_LIBS += $(EXTERNAL_VIDIX_LIB)
---- MPlayer-1.0pre8/configure.gnome-screensaver 2006-06-11 20:35:47.000000000 +0200
-+++ MPlayer-1.0pre8/configure 2006-06-12 15:43:24.000000000 +0200
-@@ -248,6 +248,7 @@
- --disable-ftp Disable ftp support [enabled]
- --disable-vstream Disable tivo vstream client support [autodetect]
- --disable-pthreads Disable Posix threads support [autodetect]
-+ --disable-dbus-glib Disable D-BUS GLib interface (required for GNOME scr\eensaver support) [autodetect]
- --disable-ass Disable internal SSA/ASS subtitles support [autodetect]
- --enable-rpath Enable runtime linker path for extra libs [disabled]
-
-@@ -1692,6 +1693,7 @@
- _musepack=auto
- _vstream=auto
- _pthreads=auto
-+_dbus_glib=auto
- _ass=auto
- _rpath=no
- _disable_altivec=no
-@@ -1975,6 +1977,8 @@
- --disable-vstream) _vstream=no ;;
- --enable-pthreads) _pthreads=yes ;;
- --disable-pthreads) _pthreads=no ;;
-+ --enable-dbus-glib) _dbus_glib=yes ;;
-+ --disable-dbus-glib) _dbus_glib=no ;;
- --enable-ass) _ass=yes ;;
- --disable-ass) _ass=no ;;
- --enable-rpath) _rpath=yes ;;
-@@ -6971,6 +6975,24 @@
- fi
- echores "$_gethostbyname2"
-
-+echocheck "D-BUS GLib interface"
-+if test "$_dbus_glib" = auto && pkg-config --exists dbus-glib-1; then
-+ _dbus_glib=yes
-+ _inc_dbus_glib=`pkg-config --cflags dbus-glib-1 2>/dev/null`
-+ _ld_dbus_glib=`pkg-config --libs dbus-glib-1 2>/dev/null`
-+fi
-+
-+if test "$_dbus_glib" = yes; then
-+ _def_dbus_glib='#define HAVE_DBUS_GLIB 1'
-+ # Enable GNOME screensaver support if both D-BUS GLib and X11 are present
-+ if test "$_x11" = yes; then
-+ _vosrc="$_vosrc gnome_screensaver.c"
-+ fi
-+else
-+ _def_dbus_glib='#undef HAVE_DBUS_GLIB'
-+fi
-+echores "$_dbus_glib"
-+
- # --------------- GUI specific tests begin -------------------
- echocheck "GUI"
- echo "$_gui"
-@@ -7449,6 +7471,8 @@
- AA_LIB = $_ld_aa
- CACA_INC = $_inc_caca
- CACA_LIB = $_ld_caca
-+DBUS_GLIB_INC = $_inc_dbus_glib
-+DBUS_GLIB_LIB = $_ld_dbus_glib
-
- # audio output
- ALSA_LIB = $_ld_alsa
-@@ -8258,6 +8282,7 @@
- $_def_tga
- $_def_toolame
- $_def_twolame
-+$_def_dbus_glib
-
- /* used by GUI: */
- $_def_xshape
+++ /dev/null
-diff -Nur Mplayer-0.90pre4.orig/get_path.c MPlayer-0.90pre4.chng/get_path.c
---- Mplayer-0.90pre4.orig/get_path.c Tue Dec 25 21:41:04 2001
-+++ MPlayer-0.90pre4.chng/get_path.c Tue Jun 4 11:46:43 2002
-@@ -2,22 +2,30 @@
- char *get_path(char *filename){
- char *homedir;
- char *buff;
-- static char *config_dir = "/.mplayer";
-+ static char *config_dir;
-+ char *cfgdir;
- int len;
-
- if ((homedir = getenv("HOME")) == NULL)
- return NULL;
-- len = strlen(homedir) + strlen(config_dir) + 1;
-- if (filename == NULL) {
-- if ((buff = (char *) malloc(len)) == NULL)
-- return NULL;
-- sprintf(buff, "%s%s", homedir, config_dir);
-+
-+ cfgdir = getenv("CONFIG_DIR");
-+ if (filename) {
-+ if (cfgdir) config_dir = "/mplayer/";
-+ else { config_dir = "/.mplayer/"; cfgdir = ""; }
- } else {
-- len += strlen(filename) + 1;
-- if ((buff = (char *) malloc(len)) == NULL)
-- return NULL;
-- sprintf(buff, "%s%s/%s", homedir, config_dir, filename);
-+ filename = "";
-+ if (cfgdir) config_dir = "/mplayer";
-+ else { config_dir = "/.mplayer"; cfgdir = ""; }
- }
-+
-+ len = strlen(cfgdir) + strlen(config_dir)
-+ + strlen(homedir) + strlen(filename) + 2;
-+
-+ if ((buff = (char *) malloc(len)) == NULL)
-+ return NULL;
-+
-+ sprintf(buff, "%s/%s%s%s", homedir, cfgdir, config_dir, filename);
- mp_msg(MSGT_GLOBAL,MSGL_V,"get_path('%s') -> '%s'\n",filename,buff);
- return buff;
- }
+++ /dev/null
---- MPlayer-1.0pre7try2/Makefile~ 2006-05-02 02:14:36.000000000 +0200
-+++ MPlayer-1.0pre7try2/Makefile 2006-05-02 12:48:57.000000000 +0200
-@@ -35,7 +35,7 @@
- CODEC_LIBS = $(AV_LIB) $(FAME_LIB) $(MAD_LIB) $(VORBIS_LIB) $(THEORA_LIB) $(FAAD_LIB) $(LIBLZO_LIB) $(DECORE_LIB) $(XVID_LIB) $(DTS_LIB) $(PNG_LIB) $(Z_LIB) $(JPEG_LIB) $(ALSA_LIB) $(XMMS_LIB) $(X264_LIB)
- COMMON_LIBS = libmpcodecs/libmpcodecs.a $(W32_LIB) $(DS_LIB) libaf/libaf.a libmpdemux/libmpdemux.a input/libinput.a postproc/libswscale.a osdep/libosdep.a $(DVDREAD_LIB) $(CODEC_LIBS) $(FREETYPE_LIB) $(TERMCAP_LIB) $(CDPARANOIA_LIB) $(MPLAYER_NETWORK_LIB) $(WIN32_LIB) $(GIF_LIB) $(MACOSX_FRAMEWORKS) $(SMBSUPPORT_LIB) $(FRIBIDI_LIB) $(FONTCONFIG_LIB) $(ENCA_LIB)
-
--CFLAGS = $(OPTFLAGS) -I. $(FREETYPE_INC) $(EXTRA_INC) $(CDPARANOIA_INC) $(SDL_INC) $(X11_INC) $(FRIBIDI_INC) $(DVB_INC) $(XVID_INC) $(FONTCONFIG_INC) $(CACA_INC) # -Wall
-+CFLAGS = -I. $(OPTFLAGS) $(FREETYPE_INC) $(EXTRA_INC) $(CDPARANOIA_INC) $(SDL_INC) $(X11_INC) $(FRIBIDI_INC) $(DVB_INC) $(XVID_INC) $(FONTCONFIG_INC) $(CACA_INC) # -Wall
- ifeq ($(TOOLAME),yes)
- CFLAGS += $(TOOLAME_EXTRAFLAGS)
- CODEC_LIBS += $(TOOLAME_LIB)
---- MPlayer-1.0pre7try2/input/Makefile~ 2004-06-24 14:52:15.000000000 +0200
-+++ MPlayer-1.0pre7try2/input/Makefile 2006-05-02 12:50:52.000000000 +0200
-@@ -6,7 +6,7 @@
- SRCS=input.c joystick.c lirc.c
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -I.. $(EXTRA_INC)
-+CFLAGS = -I. -I.. $(OPTFLAGS) $(EXTRA_INC)
-
- .SUFFIXES: .c .o
-
---- MPlayer-1.0pre7try2/libaf/Makefile~ 2005-02-21 18:08:45.000000000 +0100
-+++ MPlayer-1.0pre7try2/libaf/Makefile 2006-05-02 12:51:34.000000000 +0200
-@@ -9,7 +9,7 @@
-
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -Wall $(EXTRA_INC)
-+CFLAGS = -I. $(OPTFLAGS) -Wall $(EXTRA_INC)
-
- ifeq ($(TARGET_OS),MINGW32)
- CFLAGS += -D_IO_H_
---- MPlayer-1.0pre7try2/libvo/Makefile~ 2004-10-24 00:43:19.000000000 +0200
-+++ MPlayer-1.0pre7try2/libvo/Makefile 2006-05-02 12:52:34.000000000 +0200
-@@ -10,7 +10,7 @@
- SRCS += vosub_vidix.c
- endif
-
--CFLAGS = $(OPTFLAGS) -I. -I.. -I../osdep $(FREETYPE_INC) $(SDL_INC) $(X11_INC) $(EXTRA_INC) $(DXR2_INC) $(DIRECTFB_INC) -DMPG12PLAY #-Wall
-+CFLAGS = -I. -I.. -I../osdep $(OPTFLAGS) $(FREETYPE_INC) $(SDL_INC) $(X11_INC) $(EXTRA_INC) $(DXR2_INC) $(DIRECTFB_INC) -DMPG12PLAY #-Wall
-
- .SUFFIXES: .c .o
-
---- MPlayer-1.0pre7try2/osdep/Makefile~ 2004-11-10 17:43:40.000000000 +0100
-+++ MPlayer-1.0pre7try2/osdep/Makefile 2006-05-02 12:53:29.000000000 +0200
-@@ -34,7 +34,7 @@
-
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -I.. $(EXTRA_INC)
-+CFLAGS = -I. -I.. $(OPTFLAGS) $(EXTRA_INC)
- # -I/usr/X11R6/include/
-
- .SUFFIXES: .c .o
---- MPlayer-1.0pre7try2/libmenu/Makefile~ 2004-06-24 14:52:15.000000000 +0200
-+++ MPlayer-1.0pre7try2/libmenu/Makefile 2006-05-02 12:54:20.000000000 +0200
-@@ -10,7 +10,7 @@
- endif
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -I.. -I../libmpcodecs $(EXTRA_INC) -Wall
-+CFLAGS = -I. -I.. -I../libmpcodecs $(OPTFLAGS) $(EXTRA_INC) -Wall
-
- .SUFFIXES: .c .o
-
---- MPlayer-1.0pre7try2/postproc/Makefile~ 2004-06-27 02:07:15.000000000 +0200
-+++ MPlayer-1.0pre7try2/postproc/Makefile 2006-05-02 12:59:14.000000000 +0200
-@@ -11,7 +11,7 @@
- SWSOBJS += yuv2rgb_altivec.o
- endif
-
--CFLAGS = $(OPTFLAGS) $(MLIB_INC) -I. -I.. $(EXTRA_INC)
-+CFLAGS = -I. -I.. $(OPTFLAGS) $(MLIB_INC) $(EXTRA_INC)
- # -I/usr/X11R6/include/
-
- .SUFFIXES: .c .o
---- MPlayer-1.0pre7try2/libavcodec/libpostproc/Makefile~ 2005-04-16 22:41:13.000000000 +0200
-+++ MPlayer-1.0pre7try2/libavcodec/libpostproc/Makefile 2006-05-02 13:00:04.000000000 +0200
-@@ -12,7 +12,7 @@
- PPOBJS=postprocess.o
- SPPOBJS=postprocess_pic.o
-
--CFLAGS = $(OPTFLAGS) $(MLIB_INC) -I. -I.. $(EXTRA_INC)
-+CFLAGS = -I. -I.. $(OPTFLAGS) $(MLIB_INC) $(EXTRA_INC)
- # -I/usr/X11R6/include/
-
- .SUFFIXES: .c .o
---- MPlayer-1.0pre7try2/libdha/Makefile~ 2005-01-01 15:45:11.000000000 +0100
-+++ MPlayer-1.0pre7try2/libdha/Makefile 2006-05-02 13:01:57.000000000 +0200
-@@ -25,7 +25,7 @@
- SRCS=libdha.c mtrr.c pci.c pci_names.c
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -fPIC -I. -I..
-+CFLAGS = -I. -I.. $(OPTFLAGS) -fPIC
- LIBS =
- ifeq ($(TARGET_OS),OpenBSD)
- ifeq ($(TARGET_ARCH_X86),yes)
---- MPlayer-1.0pre7try2/libavcodec/Makefile~ 2006-05-01 23:54:31.000000000 +0200
-+++ MPlayer-1.0pre7try2/libavcodec/Makefile 2006-05-02 00:44:15.000000000 +0200
-@@ -7,7 +7,7 @@
- VPATH=$(SRC_PATH)/libavcodec
-
- # NOTE: -I.. is needed to include config.h
--CFLAGS=$(OPTFLAGS) -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE $(AMR_CFLAGS)
-+CFLAGS=-I.. $(OPTFLAGS) -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE $(AMR_CFLAGS)
-
- OBJS= bitstream.o utils.o mem.o allcodecs.o \
- mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o\
---- MPlayer-1.0pre7try2/libavformat/Makefile~ 2005-04-16 22:41:13.000000000 +0200
-+++ MPlayer-1.0pre7try2/libavformat/Makefile 2006-05-02 01:12:33.000000000 +0200
-@@ -6,7 +6,7 @@
-
- VPATH=$(SRC_PATH)/libavformat
-
--CFLAGS=$(OPTFLAGS) -I.. -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
-+CFLAGS=-I.. $(OPTFLAGS) -I$(SRC_PATH) -I$(SRC_PATH)/libavcodec -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
-
- OBJS= utils.o cutils.o os_support.o allformats.o
- PPOBJS=
---- MPlayer-1.0pre7try2/libmpcodecs/Makefile~ 2004-12-29 20:51:56.000000000 +0100
-+++ MPlayer-1.0pre7try2/libmpcodecs/Makefile 2006-05-02 01:31:15.000000000 +0200
-@@ -50,7 +50,7 @@
- SRCS2=$(ENCODER_SRCS)
- OBJS2=$(SRCS2:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -Inative -I.. -I../libmpdemux -I../loader $(EXTRA_INC) $(X264_INC) -D_GNU_SOURCE
-+CFLAGS =-I. -I.. -Inative -I../libmpdemux -I../loader $(OPTFLAGS) $(EXTRA_INC) $(X264_INC) -D_GNU_SOURCE
-
- .SUFFIXES: .c .o
-
---- MPlayer-1.0pre7try2/libao2/Makefile~ 2004-12-27 20:34:42.000000000 +0100
-+++ MPlayer-1.0pre7try2/libao2/Makefile 2006-05-02 11:57:08.000000000 +0200
-@@ -6,7 +6,7 @@
-
- OBJS=$(SRCS:.c=.o)
-
--CFLAGS = $(OPTFLAGS) -I. -I.. $(ARTS_INC) $(ESD_INC) $(JACK_INC) $(SDL_INC) $(X11_INC) $(EXTRA_INC) $(DXR2_INC) $(DVB_INC) $(POLYP_INC)
-+CFLAGS =-I. -I.. $(OPTFLAGS) $(ARTS_INC) $(ESD_INC) $(JACK_INC) $(SDL_INC) $(X11_INC) $(EXTRA_INC) $(DXR2_INC) $(DVB_INC) $(POLYP_INC)
-
- .SUFFIXES: .c .o
-
+++ /dev/null
---- mplayer-export-2007-06-26/Makefile~ 2007-06-27 00:38:01.436453184 +0300
-+++ mplayer-export-2007-06-26/Makefile 2007-06-27 00:38:04.506522197 +0300
-@@ -69,6 +75,9 @@
- COMMON_LIBS-$(DVDCSS_INTERNAL) += libdvdcss/libdvdcss.a
- COMMON_LIBS-$(ASS) += libass/libass.a
-
-+# tried -- but more link reference errors occour
-+COMMON_LIBS-$(STREAMING_LIVE555) += /usr/lib/liveMedia/BasicUsageEnvironment/libBasicUsageEnvironment.a /usr/lib/liveMedia/UsageEnvironment/libUsageEnvironment.a /usr/lib/liveMedia/groupsock/libgroupsock.a /usr/lib/liveMedia/liveMedia/libliveMedia.a
-+
- LIBS_MPLAYER = libvo/libvo.a \
- libao2/libao2.a \
- input/libinput.a \
+++ /dev/null
-diff -ru MPlayer-0.90/libmpcodecs/native/nuppelvideo.c MPlayer-0.90+mdz/libmpcodecs/native/nuppelvideo.c
---- MPlayer-0.90/libmpcodecs/native/nuppelvideo.c 2002-08-28 18:45:45.000000000 -0400
-+++ MPlayer-0.90+mdz/libmpcodecs/native/nuppelvideo.c 2003-04-07 09:49:51.000000000 -0400
-@@ -33,6 +33,7 @@
- static unsigned char *previous_buffer = 0; /* to support Last-frame-copy */
- #endif
- static int is_lzo_inited = 0;
-+ static int is_rtjpeg_inited = 0;
-
- // printf("frametype: %c, comtype: %c, encoded_size: %d, width: %d, height: %d\n",
- // encodedh->frametype, encodedh->comptype, encoded_size, width, height);
-@@ -44,6 +45,7 @@
- /* tables are in encoded */
- if (encodedh->comptype == 'R')
- {
-+ is_rtjpeg_inited = 1;
- RTjpeg_init_decompress ( (unsigned long *)(encoded+12), width, height );
- mp_msg(MSGT_DECVIDEO, MSGL_V, "Found RTjpeg tables (size: %d, width: %d, height: %d)\n",
- encoded_size-12, width, height);
-@@ -91,7 +93,10 @@
- mp_msg(MSGT_DECVIDEO, MSGL_ERR, "Nuppelvideo: error decompressing\n");
- break;
- }
-- RTjpeg_decompressYUV420 ( ( __s8 * ) buffer, decoded );
-+ if(is_rtjpeg_inited)
-+ RTjpeg_decompressYUV420 ( ( __s8 * ) buffer, decoded );
-+ else /* MythTV */
-+ RTjpeg_decompressYUV420 ( ( __s8 * ) buffer + 12, decoded );
- break;
- case '3': /* raw YUV420 with LZO */
- r = lzo1x_decompress ( encoded + 12, encodedh->packetlength, decoded, &out_len, NULL );
-diff -ru MPlayer-0.90/libmpdemux/demux_nuv.c MPlayer-0.90+mdz/libmpdemux/demux_nuv.c
---- MPlayer-0.90/libmpdemux/demux_nuv.c 2002-09-30 17:10:41.000000000 -0400
-+++ MPlayer-0.90+mdz/libmpdemux/demux_nuv.c 2003-04-07 09:50:30.000000000 -0400
-@@ -43,6 +43,60 @@
- nuv_position_t *current_position;
- } nuv_priv_t;
-
-+/* stolen from libmp3lame -mdz */
-+
-+/* Used to find nearest matching bitrate
-+ * we need bitrate-based values
-+ * determined using tables
-+ *
-+ * bitrate in kbps
-+ *
-+ * Gabriel Bouvigne 2002-11-03
-+ */
-+int nearestBitrate(const int bitrate)
-+{
-+ /* borrowed from DM abr presets*/
-+
-+ int index; // resolved range
-+
-+ const int bitrate_table[] = {8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320};
-+
-+
-+ int lower_range = 0, lower_range_kbps = 0,
-+ upper_range = 0, upper_range_kbps = 0;
-+
-+
-+ int b;
-+
-+
-+ // We assume specified bitrate will be 320kbps
-+ upper_range_kbps = bitrate_table[16];
-+ upper_range = 16;
-+ lower_range_kbps = bitrate_table[16];
-+ lower_range = 16;
-+
-+ // Determine which significant bitrates the value specified falls between,
-+ // if loop ends without breaking then we were correct above that the value was 320
-+ for (b = 0; b < 16; b++) {
-+ if (bitrate < bitrate_table[b+1]) {
-+ upper_range_kbps = bitrate_table[b+1];
-+ upper_range = b+1;
-+ lower_range_kbps = bitrate_table[b];
-+ lower_range = (b);
-+ break; // We found upper range
-+ }
-+ }
-+
-+ // Determine which range the value specified is closer to
-+ if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps))
-+ index = lower_range;
-+ else
-+ index = upper_range;
-+
-+ return bitrate_table[index];
-+}
-+
-+#define MKTAG(a,b,c,d) (a | (b << 8) | (c << 16) | (d << 24))
-
- /**
- * Seek to a position relative to the current position, indicated in time.
-@@ -147,17 +201,25 @@
- return 0; /* EOF */
-
- #if 0
-- printf("NUV frame: frametype: %c, comptype: %c, packetlength: %d\n",
-+ printf("NUV frame: frametype: %c, comptype: %c, packetlength: %d, timecode: %d\n",
- rtjpeg_frameheader.frametype, rtjpeg_frameheader.comptype,
-- rtjpeg_frameheader.packetlength);
-+ rtjpeg_frameheader.packetlength, rtjpeg_frameheader.timecode);
- #endif
-
-- /* Skip Seekpoint, Text and Sync for now */
-+ /* Skip Seekpoint, Extended header and Sync for now */
- if ((rtjpeg_frameheader.frametype == 'R') ||
-- (rtjpeg_frameheader.frametype == 'T') ||
-- (rtjpeg_frameheader.frametype == 'S'))
-+ (rtjpeg_frameheader.frametype == 'X') ||
-+ (rtjpeg_frameheader.frametype == 'S'))
- return 1;
--
-+
-+ /* Skip seektable and text (these have a payload) */
-+ if (rtjpeg_frameheader.frametype == 'Q' ||
-+ rtjpeg_frameheader.frametype == 'T') {
-+ stream_skip(demuxer->stream, rtjpeg_frameheader.packetlength);
-+ return 1;
-+ }
-+
-+
- if (((rtjpeg_frameheader.frametype == 'D') &&
- (rtjpeg_frameheader.comptype == 'R')) ||
- (rtjpeg_frameheader.frametype == 'V'))
-@@ -175,13 +237,13 @@
- /* put RTjpeg tables, Video info to video buffer */
- stream_seek ( demuxer->stream, orig_pos );
- ds_read_packet ( demuxer->video, demuxer->stream, rtjpeg_frameheader.packetlength + 12,
-- rtjpeg_frameheader.timecode*0.001, orig_pos, 0 );
-+ rtjpeg_frameheader.timecode*0.001, orig_pos, 0 );
-
-
- } else
- /* copy PCM only */
- if (demuxer->audio && (rtjpeg_frameheader.frametype == 'A') &&
-- (rtjpeg_frameheader.comptype == '0'))
-+ 1 /*(rtjpeg_frameheader.comptype == '0')*/)
- {
- priv->current_audio_frame++;
- if (want_audio) {
-@@ -192,15 +254,110 @@
- orig_pos + 12, 0 );
- } else {
- /* skip audio block */
-- stream_seek ( demuxer->stream,
-- stream_tell ( demuxer->stream )
-- + rtjpeg_frameheader.packetlength );
-+ stream_skip ( demuxer->stream,
-+ rtjpeg_frameheader.packetlength );
- }
- }
-
- return 1;
- }
-
-+/* Scan for the extended data in MythTV nuv streams */
-+int demux_xscan_nuv ( demuxer_t* demuxer, int width, int height )
-+{
-+ int i;
-+ struct rtframeheader rtjpeg_frameheader;
-+ struct extendeddata ext;
-+ sh_video_t* sh_video = demuxer->video->sh;
-+ sh_audio_t* sh_audio = demuxer->audio->sh;
-+
-+ for( i = 0 ; i < 2 ; ++i ) {
-+ if (stream_read ( demuxer->stream, (char*)& rtjpeg_frameheader, sizeof ( rtjpeg_frameheader ) ) < sizeof(rtjpeg_frameheader))
-+ return 0; /* EOF */
-+
-+ if (rtjpeg_frameheader.frametype != 'X')
-+ stream_skip( demuxer->stream, rtjpeg_frameheader.packetlength );
-+ }
-+
-+ if ( rtjpeg_frameheader.frametype != 'X' ) {
-+ stream_reset( demuxer->stream );
-+ return 0; /* No X frame in the expected place */
-+ }
-+
-+ if ( rtjpeg_frameheader.packetlength != sizeof(ext) ) {
-+ printf("NUV extended frame does not have expected length, ignoring\n");
-+ stream_reset( demuxer->stream );
-+ return 0;
-+ }
-+
-+ if (stream_read( demuxer->stream, (char*)& ext, sizeof(ext)) < sizeof(ext)) {
-+ stream_reset( demuxer->stream );
-+ return 0; /* EOF */
-+ }
-+
-+ if ( ext.version != 1 ) {
-+ printf("NUV extended frame has unknown version number (%d), ignoring\n",
-+ ext.version);
-+ stream_reset( demuxer->stream );
-+ return 0;
-+ }
-+
-+ printf("Detected MythTV stream, reading extended format information\n");
-+
-+ /* Video parameters */
-+ printf("FOURCC: %c%c%c%c\n",
-+ (ext.video_fourcc >> 24) & 0xff,
-+ (ext.video_fourcc >> 16) & 0xff,
-+ (ext.video_fourcc >> 8) & 0xff,
-+ (ext.video_fourcc) & 0xff);
-+ if ( ext.video_fourcc == mmioFOURCC('R', 'J', 'P', 'G') ) {
-+ long buf[128];
-+
-+ /* Ignore the fact that this is initialising the compression
-+ Doing this will set the quality factor correctly */
-+ RTjpeg_init_compress(buf,width,height,ext.rtjpeg_quality);
-+ RTjpeg_init_decompress(buf,width,height);
-+
-+ sh_video->format = mmioFOURCC('N', 'U', 'V', '1');
-+ } else {
-+ sh_video->format = ext.video_fourcc;
-+ sh_video->i_bps = ext.lavc_bitrate;
-+ }
-+
-+ /* Audio parameters */
-+ if ( ext.audio_fourcc == mmioFOURCC('L', 'A', 'M', 'E') ) {
-+ sh_audio->format = 0x55;
-+ } else if ( ext.audio_fourcc == mmioFOURCC('R', 'A', 'W', 'A') ) {
-+ sh_audio->format = 0x1;
-+ } else {
-+ printf("Warning! unknown audio format %d\n", ext.audio_fourcc);
-+ }
-+
-+ sh_audio->samplerate = ext.audio_sample_rate;
-+ sh_audio->channels = ext.audio_channels;
-+
-+ /* this is a little silly so that we can use libmp3lame's
-+ nearestBitrate verbatim */
-+ if (sh_audio->format != 0x1)
-+ sh_audio->i_bps = nearestBitrate(ext.audio_channels
-+ * ext.audio_bits_per_sample
-+ * ext.audio_sample_rate /
-+ ext.audio_compression_ratio / 1000) * 1000;
-+
-+ sh_audio->wf->wBitsPerSample = ext.audio_bits_per_sample;
-+ sh_audio->wf->nAvgBytesPerSec = sh_audio->i_bps / 8;
-+ sh_audio->wf->nBlockAlign = sh_audio->channels * 2;
-+ sh_audio->wf->cbSize = 0;
-+ sh_audio->wf->nSamplesPerSec = ext.audio_sample_rate;
-+ sh_audio->wf->wFormatTag = sh_audio->format;
-+ sh_audio->wf->nChannels = ext.audio_channels;
-+
-+ printf("channels=%d bitspersample=%d samplerate=%d audio_compression_ratio=%d\n", ext.audio_channels, ext.audio_bits_per_sample, ext.audio_sample_rate, ext.audio_compression_ratio);
-+
-+ stream_reset( demuxer->stream );
-+
-+ return 1;
-+}
-
- demuxer_t* demux_open_nuv ( demuxer_t* demuxer )
- {
-@@ -240,8 +397,6 @@
- */
- sh_video->ds = demuxer->video;
-
-- /* Custom fourcc for internal MPlayer use */
-- sh_video->format = mmioFOURCC('N', 'U', 'V', '1');
-
- sh_video->disp_w = rtjpeg_fileheader.width;
- sh_video->disp_h = rtjpeg_fileheader.height;
-@@ -258,26 +413,44 @@
- sh_video->fps = rtjpeg_fileheader.fps;
- sh_video->frametime = 1 / sh_video->fps;
-
-- if (rtjpeg_fileheader.audioblocks != 0)
-- {
-- sh_audio = new_sh_audio(demuxer, 0);
-- demuxer->audio->sh = sh_audio;
-- sh_audio->ds = demuxer->audio;
-- sh_audio->format = 0x1;
-- sh_audio->channels = 2;
-- sh_audio->samplerate = 44100;
--
-- sh_audio->wf = malloc(sizeof(WAVEFORMATEX));
-- memset(sh_audio->wf, 0, sizeof(WAVEFORMATEX));
-- sh_audio->wf->wFormatTag = sh_audio->format;
-- sh_audio->wf->nChannels = sh_audio->channels;
-- sh_audio->wf->wBitsPerSample = 16;
-- sh_audio->wf->nSamplesPerSec = sh_audio->samplerate;
-- sh_audio->wf->nAvgBytesPerSec = sh_audio->wf->nChannels*
-- sh_audio->wf->wBitsPerSample*sh_audio->wf->nSamplesPerSec/8;
-- sh_audio->wf->nBlockAlign = sh_audio->channels * 2;
-- sh_audio->wf->cbSize = 0;
-- }
-+ if (rtjpeg_fileheader.audioblocks != 0)
-+ {
-+ sh_audio = new_sh_audio(demuxer, 0);
-+ demuxer->audio->sh = sh_audio;
-+ sh_audio->ds = demuxer->audio;
-+ sh_audio->wf = malloc(sizeof(WAVEFORMATEX));
-+ memset(sh_audio->wf, 0, sizeof(WAVEFORMATEX));
-+ }
-+
-+ /* Check for extended data (X frame) and read settings from it */
-+ if (! demux_xscan_nuv( demuxer,
-+ rtjpeg_fileheader.width,
-+ rtjpeg_fileheader.height) ) {
-+ /* Otherwise assume defaults */
-+ printf("No NUV extended frame, using defaults\n");
-+
-+ /* Custom fourcc for internal MPlayer use */
-+ sh_video->format = mmioFOURCC('N', 'U', 'V', '1');
-+
-+ if (rtjpeg_fileheader.audioblocks != 0)
-+ {
-+ sh_audio->format = 0x1;
-+ sh_audio->channels = 2;
-+ sh_audio->samplerate = 44100;
-+ sh_audio->wf->wBitsPerSample = 16;
-+ }
-+
-+ if (rtjpeg_fileheader.audioblocks != 0)
-+ {
-+ sh_audio->wf->wFormatTag = sh_audio->format;
-+ sh_audio->wf->nChannels = sh_audio->channels;
-+ sh_audio->wf->nSamplesPerSec = sh_audio->samplerate;
-+ sh_audio->wf->nAvgBytesPerSec = sh_audio->wf->nChannels*
-+ sh_audio->wf->wBitsPerSample*sh_audio->wf->nSamplesPerSec/8;
-+ sh_audio->wf->nBlockAlign = sh_audio->channels * 2;
-+ sh_audio->wf->cbSize = 0;
-+ }
-+ }
-
- priv->index_list = (nuv_position_t*) malloc(sizeof(nuv_position_t));
- priv->index_list->frame = 0;
-@@ -300,9 +473,12 @@
-
- stream_read(demuxer->stream,(char*)&ns,sizeof(ns));
-
-- if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) )
-+ if ( strncmp ( ns.finfo, "NuppelVideo", 12 ) &&
-+ strncmp ( ns.finfo, "MythTVVideo", 12 ) )
- return 0; /* Not a NuppelVideo file */
-- if ( strncmp ( ns.version, "0.05", 5 ) )
-+ if ( strncmp ( ns.version, "0.05", 5 ) &&
-+ strncmp ( ns.version, "0.06", 5 ) &&
-+ strncmp ( ns.version, "0.07", 5 ) )
- return 0; /* Wrong version NuppelVideo file */
-
- /* Return to original position */
-Only in MPlayer-0.90+mdz/libmpdemux: demux_nuv.c~
-diff -ru MPlayer-0.90/libmpdemux/nuppelvideo.h MPlayer-0.90+mdz/libmpdemux/nuppelvideo.h
---- MPlayer-0.90/libmpdemux/nuppelvideo.h 2001-12-27 17:20:15.000000000 -0500
-+++ MPlayer-0.90+mdz/libmpdemux/nuppelvideo.h 2003-04-07 09:49:51.000000000 -0400
-@@ -90,3 +90,30 @@
- unsigned char *buffer_offset;
- } audbuffertyp;
-
-+/* for MythTV */
-+typedef struct extendeddata
-+{
-+ int version; // yes, this is repeated from the file header
-+ int video_fourcc; // video encoding method used
-+ int audio_fourcc; // audio encoding method used
-+ // generic data
-+ int audio_sample_rate;
-+ int audio_bits_per_sample;
-+ int audio_channels;
-+ // codec specific
-+ // mp3lame
-+ int audio_compression_ratio;
-+ int audio_quality;
-+ // rtjpeg
-+ int rtjpeg_quality;
-+ int rtjpeg_luma_filter;
-+ int rtjpeg_chroma_filter;
-+ // libavcodec
-+ int lavc_bitrate;
-+ int lavc_qmin;
-+ int lavc_qmax;
-+ int lavc_maxqdiff;
-+ // unused for later -- total size of 128 integers.
-+ // new fields must be added at the end, above this comment.
-+ int expansion[113];
-+} extendeddata;
+++ /dev/null
-diff -urN MPlayer-1.0pre5/libao2/ao_pcmsplt.c MPlayer-1.0pre5-orig/libao2/ao_pcmsplt.c
---- MPlayer-1.0pre5/libao2/ao_pcmsplt.c 1970-01-01 01:00:00.000000000 +0100
-+++ MPlayer-1.0pre5-orig/libao2/ao_pcmsplt.c 2004-11-06 15:17:29.852357504 +0100
-@@ -0,0 +1,214 @@
-+#include "config.h"
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <time.h>
-+#include "bswap.h"
-+#include "libaf/af_format.h"
-+#include "audio_out.h"
-+#include "audio_out_internal.h"
-+
-+static ao_info_t info =
-+{
-+ "RAW PCM/WAVE file writer audio output with split",
-+ "pcmsplt",
-+ "adasi",
-+ ""
-+};
-+
-+LIBAO_EXTERN(pcmsplt)
-+
-+extern int vo_pts;
-+
-+char *ao_outputfileprefix = "audiodump";
-+extern char *ao_outputfilename;
-+
-+#define WAV_ID_RIFF 0x46464952 /* "RIFF" */
-+#define WAV_ID_WAVE 0x45564157 /* "WAVE" */
-+#define WAV_ID_FMT 0x20746d66 /* "fmt " */
-+#define WAV_ID_DATA 0x61746164 /* "data" */
-+#define WAV_ID_PCM 0x0001
-+
-+struct WaveHeader
-+{
-+ uint32_t riff;
-+ uint32_t file_length;
-+ uint32_t wave;
-+ uint32_t fmt;
-+ uint32_t fmt_length;
-+ uint16_t fmt_tag;
-+ uint16_t channels;
-+ uint32_t sample_rate;
-+ uint32_t bytes_per_second;
-+ uint16_t block_align;
-+ uint16_t bits;
-+ uint32_t data;
-+ uint32_t data_length;
-+};
-+
-+/* init with default values */
-+static struct WaveHeader wavhdr = {
-+ le2me_32(WAV_ID_RIFF),
-+ /* same conventions than in sox/wav.c/wavwritehdr() */
-+ 0, //le2me_32(0x7ffff024),
-+ le2me_32(WAV_ID_WAVE),
-+ le2me_32(WAV_ID_FMT),
-+ le2me_32(16),
-+ le2me_16(WAV_ID_PCM),
-+ le2me_16(2),
-+ le2me_32(44100),
-+ le2me_32(192000),
-+ le2me_16(4),
-+ le2me_16(16),
-+ le2me_32(WAV_ID_DATA),
-+ 0, //le2me_32(0x7ffff000)
-+};
-+
-+static FILE *fp = NULL;
-+static int mlength = 1024*1024*50;
-+// to set/get/query special features/parameters
-+static int control(int cmd,void *arg){
-+ return -1;
-+}
-+static void open_ofile()
-+{
-+ char tmp1[200], tmp2[200];
-+ time_t tt;
-+ tt=time(NULL);
-+ strftime (tmp1,200,"%F-%H-%M-%S",gmtime(&tt));
-+ snprintf(tmp2, 200, "%s-%s.wav", ao_outputfileprefix,tmp1);
-+ fp = fopen(tmp2, "wb");
-+ if(fp) {
-+ fwrite(&wavhdr,sizeof(wavhdr),1,fp);
-+ wavhdr.file_length=wavhdr.data_length=0;
-+ }
-+}
-+static void close_ofile()
-+{
-+ if(fseek(fp, 0, SEEK_SET) == 0){ /* Write wave header */
-+ wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8;
-+ wavhdr.file_length = le2me_32(wavhdr.file_length);
-+ wavhdr.data_length = le2me_32(wavhdr.data_length);
-+ fwrite(&wavhdr,sizeof(wavhdr),1,fp);
-+ }
-+ fclose(fp);
-+}
-+
-+
-+// open & setup audio device
-+// return: 1=success 0=fail
-+static int init(int rate,int channels,int format,int flags){
-+ int bits;
-+ if(ao_outputfilename)
-+ ao_outputfileprefix = strdup(ao_outputfilename);
-+
-+ /* bits is only equal to format if (format == 8) or (format == 16);
-+ this means that the following "if" is a kludge and should
-+ really be a switch to be correct in all cases */
-+
-+ bits=8;
-+ switch(format){
-+ case AF_FORMAT_S8:
-+ format=AF_FORMAT_U8;
-+ case AF_FORMAT_U8:
-+ break;
-+ default:
-+ format=AF_FORMAT_S16_LE;
-+ bits=16;
-+ break;
-+ }
-+ if(ao_subdevice && (atoi(ao_subdevice)>0) )
-+ mlength=atoi(ao_subdevice)*1024*1024;
-+ ao_data.outburst = 65536;
-+ ao_data.buffersize= 2*65536;
-+ ao_data.channels=channels;
-+ ao_data.samplerate=rate;
-+ ao_data.format=format;
-+ ao_data.bps=channels*rate*(bits/8);
-+
-+ wavhdr.channels = le2me_16(ao_data.channels);
-+ wavhdr.sample_rate = le2me_32(ao_data.samplerate);
-+ wavhdr.bytes_per_second = le2me_32(ao_data.bps);
-+ wavhdr.bits = le2me_16(bits);
-+
-+ wavhdr.data_length=le2me_32(0x7ffff000);
-+ wavhdr.file_length = wavhdr.data_length + sizeof(wavhdr) - 8;
-+
-+ open_ofile();
-+ if(fp) return 1;
-+ return 0;
-+}
-+
-+// close audio device
-+static void uninit(int immed){
-+ close_ofile();
-+}
-+
-+// stop playing and empty buffers (for seeking/pause)
-+static void reset(){
-+
-+}
-+
-+// stop playing, keep buffers (for pause)
-+static void audio_pause()
-+{
-+ // for now, just call reset();
-+ reset();
-+}
-+
-+static void switch_ofile()
-+{
-+close_ofile();
-+open_ofile();
-+}
-+// resume playing, after audio_pause()
-+static void audio_resume()
-+{
-+}
-+
-+// return: how many bytes can be played without blocking
-+static int get_space(){
-+
-+ if(vo_pts)
-+ return ao_data.pts < vo_pts ? ao_data.outburst : 0;
-+ return ao_data.outburst;
-+}
-+
-+// plays 'len' bytes of 'data'
-+// it should round it down to outburst*n
-+// return: number of bytes played
-+static int play(void* data,int len,int flags){
-+
-+// let libaf to do the conversion...
-+#if 0
-+//#ifdef WORDS_BIGENDIAN
-+ if (ao_data.format == AFMT_S16_LE) {
-+ unsigned short *buffer = (unsigned short *) data;
-+ register int i;
-+ for(i = 0; i < len/2; ++i) {
-+ buffer[i] = le2me_16(buffer[i]);
-+ }
-+ }
-+#endif
-+
-+ //printf("PCM: Writing chunk!\n");
-+ fwrite(data,len,1,fp);
-+
-+ wavhdr.data_length += len;
-+ if (wavhdr.data_length>mlength)
-+ switch_ofile();
-+ return len;
-+}
-+
-+// return: delay in seconds between first and last sample in buffer
-+static float get_delay(){
-+
-+ return 0.0;
-+}
-+
-+
-+
-+
-+
-+
---- MPlayer-1.0pre7/libao2/Makefile.orig 2004-12-27 20:34:42.000000000 +0100
-+++ MPlayer-1.0pre7/libao2/Makefile 2005-04-21 19:54:04.134837488 +0200
-@@ -2,7 +2,7 @@
-
- LIBNAME = libao2.a
-
--SRCS=audio_out.c ao_mpegpes.c ao_null.c ao_pcm.c $(OPTIONAL_SRCS)
-+SRCS=audio_out.c ao_mpegpes.c ao_null.c ao_pcmsplt.c ao_pcm.c $(OPTIONAL_SRCS)
-
- OBJS=$(SRCS:.c=.o)
-
---- MPlayer-1.0pre7/libao2/audio_out.c.orig 2005-04-06 13:57:09.000000000 +0200
-+++ MPlayer-1.0pre7/libao2/audio_out.c 2005-04-21 19:54:26.137492576 +0200
-@@ -64,6 +64,7 @@
- #endif
- extern ao_functions_t audio_out_mpegpes;
- extern ao_functions_t audio_out_pcm;
-+extern ao_functions_t audio_out_pcmsplt;
- extern ao_functions_t audio_out_pss;
-
- ao_functions_t* audio_out_drivers[] =
-@@ -123,6 +124,7 @@
- &audio_out_null,
- // should not be auto-selected:
- &audio_out_pcm,
-+ &audio_out_pcmsplt,
- NULL
- };
-
+++ /dev/null
---- MPlayer-1.0rc2/libavcodec/libx264.c.org 2008-10-25 15:36:54.737536974 +0200
-+++ MPlayer-1.0rc2/libavcodec/libx264.c 2008-10-25 15:40:51.770207449 +0200
-@@ -162,7 +162,7 @@
-
- x4->params.i_bframe = avctx->max_b_frames;
- x4->params.b_cabac = avctx->coder_type == FF_CODER_TYPE_AC;
-- x4->params.b_bframe_adaptive = avctx->b_frame_strategy;
-+ x4->params.i_bframe_adaptive = avctx->b_frame_strategy;
- x4->params.i_bframe_bias = avctx->bframebias;
- x4->params.b_bframe_pyramid = (avctx->flags2 & CODEC_FLAG2_BPYRAMID);
- avctx->has_b_frames= (avctx->flags2 & CODEC_FLAG2_BPYRAMID) ? 2 : !!avctx->max_b_frames;
-@@ -225,8 +225,6 @@
- x4->params.analyse.i_me_range = avctx->me_range;
- x4->params.analyse.i_subpel_refine = avctx->me_subpel_quality;
-
-- x4->params.analyse.b_bidir_me = (avctx->bidir_refine > 0);
-- x4->params.analyse.b_bframe_rdo = (avctx->flags2 & CODEC_FLAG2_BRDO);
- x4->params.analyse.b_mixed_references =
- (avctx->flags2 & CODEC_FLAG2_MIXED_REFS);
- x4->params.analyse.b_chroma_me = (avctx->me_cmp & FF_CMP_CHROMA);
-@@ -251,7 +249,6 @@
- x4->params.rc.f_ip_factor = 1/fabs(avctx->i_quant_factor);
- x4->params.rc.f_pb_factor = avctx->b_quant_factor;
- x4->params.analyse.i_chroma_qp_offset = avctx->chromaoffset;
-- x4->params.rc.psz_rc_eq = avctx->rc_eq;
-
- x4->params.analyse.b_psnr = (avctx->flags & CODEC_FLAG_PSNR);
- x4->params.i_log_level = X264_LOG_DEBUG;
+++ /dev/null
---- Makefile 29 Dec 2005 18:01:22 -0000 1.334
-+++ Makefile 1 Jan 2006 08:45:36 -0000
-@@ -210,7 +210,9 @@ endif
- ifeq ($(TREMOR),yes)
- PARTS += tremor
- endif
--
-+ifeq ($(HAVE_XVMC_ACCEL),yes)
-+CODEC_LIBS += $(X_LIB)
-+endif
- ALL_PRG = $(PRG)
- ifeq ($(MENCODER),yes)
- ALL_PRG += $(PRG_MENCODER)
---- codec-cfg.c 7 Dec 2005 05:12:07 -0000 1.123
-+++ codec-cfg.c 1 Jan 2006 08:45:36 -0000
-@@ -171,6 +171,7 @@ static int add_to_format(char *s, char *
- {"ZRMJPEGIT", IMGFMT_ZRMJPEGIT},
- {"ZRMJPEGIB", IMGFMT_ZRMJPEGIB},
-
-+ {"VLD_MPEG2",IMGFMT_XVMC_VLD_MPEG2},
- {"IDCT_MPEG2",IMGFMT_XVMC_IDCT_MPEG2},
- {"MOCO_MPEG2",IMGFMT_XVMC_MOCO_MPEG2},
-
---- configure 30 Dec 2005 05:15:26 -0000 1.1116
-+++ configure 1 Jan 2006 08:45:38 -0000
-@@ -388,7 +388,8 @@ multiple paths separated by ':'):
- --with-xmmslibdir=DIR libxmms.so.1 in DIR
- --with-cdparanoiaincdir=DIR cdparanoia headers in DIR (*)
- --with-cdparanoialibdir=DIR cdparanoia libraries (libcdda_*) in DIR (*)
-- --with-xvmclib=NAME name of adapter-specific library (e.g. XvMCNVIDIA)
-+ --with-xvmclib=NAME name of adapter-specific library
-+ (e.g. XvMCNVIDIA/I810XvMC/viaXvMC/viaXvMCPro)
- --with-termcaplib=NAME name of library with termcap functionality
- name should be given without leading "lib"
- checks for "termcap" and "tinfo"
-@@ -1448,7 +1449,7 @@ EOF
- cc_check -pipe && _pipe="-pipe" && echores "yes" || echores "no"
-
- _prefix="/usr/local"
--_xvmclib="XvMCNVIDIA"
-+_xvmclib=""
-
- # GOTCHA: the variables below defines the default behavior for autodetection
- # and have - unless stated otherwise - at least 2 states : yes no
-@@ -3719,31 +3720,88 @@ fi
- echores "$_xv"
-
-
--echocheck "XvMC"
--if test "$_x11" = yes && test "$_xv" = yes && test "$_xvmc" != no ; then
-- _xvmc=no
-- cat > $TMPC <<EOF
--#include <X11/Xlib.h>
-+xvmc_check()
-+{
-+ if test "$_xvmcvld" = yes; then
-+ _xvmcinc="vldXvMC.h"
-+ else
-+ _xvmcinc="XvMClib.h"
-+ fi
-+
-+ echo "#include <X11/Xlib.h>
- #include <X11/extensions/Xvlib.h>
--#include <X11/extensions/XvMClib.h>
-+#include <X11/extensions/$_xvmcinc>
- int main(void) {
- (void) XvMCQueryExtension(0,0,0);
- (void) XvMCCreateContext(0,0,0,0,0,0,0);
-- return 0; }
--EOF
-- cc_check $_inc_x11 -lXvMC -l$_xvmclib $_ld_xv $_ld_x11 && _xvmc=yes
--fi
--if test "$_xvmc" = yes ; then
-- _def_xvmc='#define HAVE_XVMC 1'
-- _ld_xvmc="-lXvMC -l$_xvmclib"
-- _vosrc="$_vosrc vo_xvmc.c"
-- _vomodules="xvmc $_vomodules"
--else
-- _def_xvmc='#undef HAVE_XVMC'
-- _novomodules="xvmc $_novomodules"
--fi
--echores "$_xvmc"
-+ return 0; }" > $TMPC
-+
-+ _success=0
-+ cc_check $_inc_x11 -lXvMC -l$_xvmclib $_ld_xv $_ld_x11 && _success=1
-+ return $_ok
-+}
-
-+# Note: here we try to determine what xvmc capability is available
-+# if the xvmc wrapper is available then we link to that, also we
-+# check whether we can include the vld (slice) level xvmc include file
-+if test "$_x11" = yes && test "$_xv" = yes && test "$_xvmc" != no ; then
-+ _xvmc=no
-+
-+# No explicit xvmc lib specified so try and find one
-+ if test "$_xvmclib" = ""; then
-+# Try with the xvmc wrapper+vld first
-+ echocheck "XvMC (Wrapper+vld)"
-+ _xvmclib="XvMCW"
-+ _xvmcvld=yes
-+ xvmc_check && _xvmc=yes
-+ echores $_xvmc
-+
-+# Try with the xvmc wrapper
-+ if test "$_xvmc" = no ; then
-+ echocheck "XvMC (Wrapper)"
-+ _xvmcvld=no
-+ xvmc_check && _xvmc=yes
-+ echores $_xvmc
-+ fi
-+
-+# Try with the nvidia lib
-+ if test "$_xvmc" = no ; then
-+ echocheck "XvMC (NVIDIA)"
-+ _xvmclib="XvMCNVIDIA"
-+ xvmc_check && _xvmc=yes
-+ echores $_xvmc
-+ fi
-+ else
-+# check for specified xvmc lib
-+ echocheck "XvMC vld+("$_xvmclib")"
-+ _xvmcvld=yes
-+ xvmc_check && _xvmc=yes
-+ echores $_xvmc
-+
-+ if test "$_xvmc" = no ; then
-+ echocheck "XvMC ("$_xvmclib")"
-+ _xvmcvld=no
-+ xvmc_check && _xvmc=yes
-+ echores $_xvmc
-+ fi
-+ fi
-+
-+ if test "$_xvmc" = yes ; then
-+ _def_xvmc='#define HAVE_XVMC 1'
-+ _ld_xvmc="-lXvMC -l$_xvmclib"
-+ _vosrc="$_vosrc vo_xvmc.c"
-+ _vomodules="xvmc $_vomodules"
-+ else
-+ _novomodules="xvmc $_novomodules"
-+ _def_xvmc='#undef HAVE_XVMC'
-+ fi
-+
-+ if test "$_xvmcvld" = yes; then
-+ _def_xvmc_vld='#define HAVE_XVMC_VLD 1'
-+ else
-+ _def_xvmc_vld='#undef HAVE_XVMC_VLD'
-+ fi
-+fi
-
- echocheck "Xinerama"
- if test "$_x11" = yes && test "$_xinerama" != no ; then
-@@ -7897,6 +7955,7 @@ $_def_vis // only define if you have VIS
- $_def_x11
- $_def_xv
- $_def_xvmc
-+$_def_xvmc_vld
- $_def_vm
- $_def_xf86keysym
- $_def_xinerama
---- xvmc_render.h 25 Aug 2003 21:40:35 -0000 1.3
-+++ xvmc_render.h 1 Jan 2006 08:45:38 -0000
-@@ -5,6 +5,9 @@
- #include <X11/extensions/Xvlib.h>
- #include <X11/extensions/XvMClib.h>
-
-+#ifdef HAVE_XVMC_VLD
-+#include <X11/extensions/vldXvMC.h>
-+#endif
-
- //the surface should be shown, video driver manipulate this
- #define MP_XVMC_STATE_DISPLAY_PENDING 1
-@@ -27,7 +30,20 @@ typedef struct{
- int idct;//does we use IDCT acceleration?
- int chroma_format;//420,422,444
- int unsigned_intra;//+-128 for intra pictures after clip
-+
-+#ifdef HAVE_XVMC_VLD
-+ int reserved1[3];
-+ // These are for the XVMC VLD slice interface
-+ int pict_type; //this is for skipping frames
-+ int slice_code;
-+ int slice_datalen;
-+ unsigned char *slice_data;
-+ Display *disp;
-+ XvMCContext *ctx;
-+#else
- int reserved1[12];//future extenstions (e.g. gmc,qpel)
-+#endif
-+
- void * p_osd_target_surface_render;//pointer to the surface where subpicture is rendered
- XvMCSurface* p_surface;//pointer to rendered surface, never changed
-
-@@ -47,4 +63,6 @@ typedef struct{
-
- int next_free_data_block_num;//used in add_mv_block, pointer to next free block
-
-+
-+
- } xvmc_render_state_t;
---- etc/codecs.conf 31 Dec 2005 18:24:00 -0000 1.443
-+++ etc/codecs.conf 1 Jan 2006 08:45:39 -0000
-@@ -90,6 +90,7 @@ videocodec ffmpeg12mc
- fourcc VCR2
- driver ffmpeg
- dll "mpegvideo_xvmc"
-+ out VLD_MPEG2
- out IDCT_MPEG2
- out MOCO_MPEG2
-
---- libmpcodecs/img_format.c 11 Aug 2004 01:41:43 -0000 1.11
-+++ libmpcodecs/img_format.c 1 Jan 2006 08:45:39 -0000
-@@ -64,6 +64,7 @@ char *vo_format_name(int format)
- case IMGFMT_ZRMJPEGIB: return("Zoran MJPEG bottom field first");
- case IMGFMT_XVMC_MOCO_MPEG2: return("MPEG1/2 Motion Compensation");
- case IMGFMT_XVMC_IDCT_MPEG2: return("MPEG1/2 Motion Compensation and IDCT");
-+ case IMGFMT_XVMC_VLD_MPEG2: return("MPEG1/2 Motion Compensation and VLD");
- }
- return("Unknown");
- }
---- libmpcodecs/img_format.h 11 Aug 2004 01:41:43 -0000 1.16
-+++ libmpcodecs/img_format.h 1 Jan 2006 08:45:39 -0000
-@@ -106,6 +106,7 @@
- //these are chroma420
- #define IMGFMT_XVMC_MOCO_MPEG2 (IMGFMT_XVMC|0x02)
- #define IMGFMT_XVMC_IDCT_MPEG2 (IMGFMT_XVMC|0x82)
-+#define IMGFMT_XVMC_VLD_MPEG2 (IMGFMT_XVMC|0x42)
-
- typedef struct {
- void* data;
---- libmpcodecs/vd_ffmpeg.c 19 Dec 2005 19:38:28 -0000 1.156
-+++ libmpcodecs/vd_ffmpeg.c 1 Jan 2006 08:45:39 -0000
-@@ -182,6 +182,8 @@ static int control(sh_video_t *sh,int cm
- case IMGFMT_XVMC_IDCT_MPEG2:
- case IMGFMT_XVMC_MOCO_MPEG2:
- if(avctx->pix_fmt==PIX_FMT_XVMC_MPEG2_IDCT) return CONTROL_TRUE;
-+ case IMGFMT_XVMC_VLD_MPEG2:
-+ if(avctx->pix_fmt==PIX_FMT_XVMC_MPEG2_VLD) return CONTROL_TRUE;
- #endif
- }
- return CONTROL_FALSE;
-@@ -566,6 +568,7 @@ static int init_vo(sh_video_t *sh, enum
- #ifdef HAVE_XVMC
- case PIX_FMT_XVMC_MPEG2_MC:ctx->best_csp=IMGFMT_XVMC_MOCO_MPEG2;break;
- case PIX_FMT_XVMC_MPEG2_IDCT:ctx->best_csp=IMGFMT_XVMC_IDCT_MPEG2;break;
-+ case PIX_FMT_XVMC_MPEG2_VLD:ctx->best_csp=IMGFMT_XVMC_VLD_MPEG2;break;
- #endif
- default:
- ctx->best_csp=0;
-@@ -969,7 +972,11 @@ int i;
- avctx->get_buffer= mc_get_buffer;
- avctx->release_buffer= mc_release_buffer;
- avctx->draw_horiz_band = mc_render_slice;
-+ if (avctx->xvmc_acceleration != 4)
- printf("vd_ffmpeg: XVMC accelerated MPEG2\n");
-+ else
-+ printf("vd_ffmpeg: XVMC-VLD accelerated MPEG2\n");
-+
- assert(ctx->do_dr1);//these are must to!
- assert(ctx->do_slices); //it is (vo_)ffmpeg bug if this fails
- avctx->flags|= CODEC_FLAG_EMU_EDGE;//do i need that??!!
---- libvo/vo_xvmc.c 20 Dec 2005 19:04:17 -0000 1.25
-+++ libvo/vo_xvmc.c 1 Jan 2006 08:45:40 -0000
-@@ -24,6 +24,10 @@
- #include <X11/extensions/Xvlib.h>
- #include <X11/extensions/XvMClib.h>
-
-+#ifdef HAVE_XVMC_VLD
-+#include <X11/extensions/vldXvMC.h>
-+#endif
-+
- #include "x11_common.h"
- #include "xvmc_render.h"
-
-@@ -115,7 +119,7 @@ static vo_info_t info = {
- "XVideo Motion Compensation",
- "xvmc",
- "Ivan Kalvachev <iive@users.sf.net>",
-- ""
-+ "Ivor Hewitt <ivor@ivor.org> - VIA VLD support"
- };
-
- LIBVO_EXTERN(xvmc);
-@@ -188,7 +192,23 @@ static void deallocate_xvimage()
- }
- //end of vo_xv shm/xvimage code
-
-+int hasVLDAcceleration()
-+{
-+#ifdef HAVE_XVMC_VLD
-+ return XVMC_VLD == (surface_info.mc_type & XVMC_VLD);
-+#else
-+ return 0;
-+#endif
-+}
-+
- static int xvmc_check_surface_format(uint32_t format, XvMCSurfaceInfo * surf_info){
-+#ifdef HAVE_XVMC_VLD
-+ if (format == IMGFMT_XVMC_VLD_MPEG2 ){
-+ if( surf_info->mc_type != (XVMC_VLD|XVMC_MPEG_2) ) return -1;
-+ if( surf_info->chroma_format != XVMC_CHROMA_FORMAT_420 ) return -1;
-+ return 0;
-+ }
-+#endif
- if ( format == IMGFMT_XVMC_IDCT_MPEG2 ){
- if( surf_info->mc_type != (XVMC_IDCT|XVMC_MPEG_2) ) return -1;
- if( surf_info->chroma_format != XVMC_CHROMA_FORMAT_420 ) return -1;
-@@ -467,6 +487,8 @@ static uint32_t vm_height;
- if(surface_info.chroma_format == XVMC_CHROMA_FORMAT_444)
- blocks_per_macroblock = 12;
-
-+if (!hasVLDAcceleration())
-+{
- rez = XvMCCreateBlocks(mDisplay,&ctx,numblocks*blocks_per_macroblock,&data_blocks);
- if( rez != Success ){
- XvMCDestroyContext(mDisplay,&ctx);
-@@ -482,6 +504,8 @@ static uint32_t vm_height;
- }
- printf("vo_xvmc: mv_blocks allocated\n");
-
-+}
-+
- if(surface_render==NULL)
- surface_render=malloc(MAX_SURFACES*sizeof(xvmc_render_state_t));//easy mem debug
- memset(surface_render,0,MAX_SURFACES*sizeof(xvmc_render_state_t));
-@@ -500,6 +524,11 @@ static uint32_t vm_height;
- surface_render[i].chroma_format = surface_info.chroma_format;
- surface_render[i].unsigned_intra = (surface_info.flags & XVMC_INTRA_UNSIGNED) == XVMC_INTRA_UNSIGNED;
- surface_render[i].p_surface = &surface_array[i];
-+
-+ surface_render[i].state = 0;
-+ surface_render[i].disp = mDisplay;
-+ surface_render[i].ctx = &ctx;
-+
- if( verbose > 3 )
- printf("vo_xvmc: surface[%d] = %p .rndr=%p\n",i,&surface_array[i], &surface_render[i]);
- }
-@@ -1134,9 +1163,11 @@ int i;
-
- if( number_of_surfaces ){
-
-+ if (!hasVLDAcceleration())
-+ {
- XvMCDestroyMacroBlocks(mDisplay,&mv_blocks);
- XvMCDestroyBlocks(mDisplay,&data_blocks);
--
-+ }
- for(i=0; i<number_of_surfaces; i++)
- {
- XvMCHideSurface(mDisplay,&surface_array[i]);//it doesn't hurt, I hope
-@@ -1211,6 +1242,17 @@ int rez;
- assert( rndr != NULL );
- assert( rndr->magic == MP_XVMC_RENDER_MAGIC );
-
-+ if (hasVLDAcceleration())
-+ {
-+ rez = XvMCPutSlice2(mDisplay,&ctx,(char*)rndr->slice_data,
-+ rndr->slice_datalen,
-+ rndr->slice_code);
-+ if (rez)
-+ printf("vo_xxmc::slice Error %d\n",rez);
-+
-+ }
-+ else
-+ {
- rez = XvMCRenderSurface(mDisplay,&ctx,rndr->picture_structure,
- rndr->p_surface,
- rndr->p_past_surface,
-@@ -1222,7 +1264,7 @@ int rez;
- if(rez != Success)
- {
- int i;
-- printf("vo_xvmc::slice: RenderSirface returned %d\n",rez);
-+ printf("vo_xvmc::slice: RenderSurface returned %d\n",rez);
-
- printf("vo_xvmc::slice: pict=%d,flags=%x,start_blocks=%d,num_blocks=%d\n",
- rndr->picture_structure,rndr->flags,rndr->start_mv_blocks_num,
-@@ -1250,6 +1292,7 @@ int rez;
- rez = XvMCFlushSurface(mDisplay, rndr->p_surface);
- assert(rez==Success);
-
-+}
- // rndr->start_mv_blocks_num += rndr->filled_mv_blocks_num;
- rndr->start_mv_blocks_num = 0;
- rndr->filled_mv_blocks_num = 0;
-@@ -1342,8 +1385,16 @@ assert(rndr->next_free_data_block_num ==
-
- // these are shared!! so watch out
- // do call RenderSurface before overwriting
-+if (!hasVLDAcceleration())
-+{
- mpi->planes[0] = (char*)data_blocks.blocks;
- mpi->planes[1] = (char*)mv_blocks.macro_blocks;
-+}
-+else
-+{
-+ mpi->planes[0] = 1;
-+ mpi->planes[1] = 0;
-+}
- mpi->priv =
- mpi->planes[2] = (char*)rndr;
-
---- libavcodec/avcodec.h 29 Dec 2005 07:24:23 -0000 1.438
-+++ libavcodec/avcodec.h 1 Jan 2006 08:45:44 -0000
-@@ -253,6 +253,7 @@ enum PixelFormat {
- PIX_FMT_XVMC_MPEG2_IDCT,
- PIX_FMT_UYVY422, ///< Packed pixel, Cb Y0 Cr Y1
- PIX_FMT_UYVY411, ///< Packed pixel, Cb Y0 Y1 Cr Y2 Y3
-+ PIX_FMT_XVMC_MPEG2_VLD,
- PIX_FMT_NB,
- };
-
-@@ -2113,6 +2114,7 @@ extern AVCodec mpeg1video_decoder;
- extern AVCodec mpeg2video_decoder;
- extern AVCodec mpegvideo_decoder;
- extern AVCodec mpeg_xvmc_decoder;
-+extern AVCodec mpeg_xxmc_decoder;
- extern AVCodec h263i_decoder;
- extern AVCodec flv_decoder;
- extern AVCodec rv10_decoder;
---- libavcodec/xvmcvideo.c 22 Dec 2005 01:10:09 -0000 1.13
-+++ libavcodec/xvmcvideo.c 1 Jan 2006 08:45:45 -0000
-@@ -70,11 +70,68 @@ const int mb_block_count = 4+(1<<s->chro
- }
- }
-
-+#ifdef HAVE_XVMC_VLD
-+static XvMCSurface* findPastSurface(MpegEncContext *s,
-+ xvmc_render_state_t *render)
-+{
-+ Picture *lastp = s->last_picture_ptr;
-+ xvmc_render_state_t *last = NULL;
-+
-+ if (NULL!=lastp) {
-+ last = (xvmc_render_state_t*)(lastp->data[2]);
-+ if (B_TYPE==last->pict_type)
-+ av_log(s->avctx,AV_LOG_DEBUG, "Past frame is a B frame in findPastSurface, this is bad.\n");
-+ //assert(B_TYPE!=last->pict_type);
-+ }
-+
-+ if (NULL==last)
-+ if (!s->first_field)
-+ last = render; // predict second field from the first
-+ else
-+ return 0;
-+
-+ if (last->magic != MP_XVMC_RENDER_MAGIC)
-+ return 0;
-+
-+ return (last->state & MP_XVMC_STATE_PREDICTION) ? last->p_surface : 0;
-+}
-+
-+static XvMCSurface* findFutureSurface(MpegEncContext *s)
-+{
-+ Picture *nextp = s->next_picture_ptr;
-+ xvmc_render_state_t *next = NULL;
-+
-+ if (NULL!=nextp) {
-+ next = (xvmc_render_state_t*)(nextp->data[2]);
-+ if (B_TYPE==next->pict_type)
-+ av_log(s->avctx,AV_LOG_DEBUG, "Next frame is a B frame in findFutureSurface, thisis bad.\n");
-+ //assert(B_TYPE!=next->pict_type);
-+ }
-+
-+ assert(NULL!=next);
-+
-+ if (next->magic != MP_XVMC_RENDER_MAGIC)
-+ return 0;
-+
-+ return (next->state & MP_XVMC_STATE_PREDICTION) ? next->p_surface : 0;
-+}
-+#endif //HAVE_XVMC_VLD
-+
- //these functions should be called on every new field or/and frame
- //They should be safe if they are called few times for same field!
- int XVMC_field_start(MpegEncContext*s, AVCodecContext *avctx){
--xvmc_render_state_t * render,* last, * next;
-+ xvmc_render_state_t * render, * last, * next;
-+
-+#ifdef HAVE_XVMC_VLD
-+ XvMCMpegControl binfo;
-+ XvMCQMatrix qmatrix;
-+ int i;
-+ Status status;
-
-+ memset(&binfo, 0, sizeof(binfo));
-+ memset(&qmatrix, 0, sizeof(qmatrix));
-+#endif
-+
- assert(avctx != NULL);
-
- render = (xvmc_render_state_t*)s->current_picture.data[2];
-@@ -85,12 +142,53 @@ xvmc_render_state_t * render,* last, * n
- render->picture_structure = s->picture_structure;
- render->flags = (s->first_field)? 0: XVMC_SECOND_FIELD;
-
-+#ifdef HAVE_XVMC_VLD
-+ if (s->avctx->xvmc_acceleration == 4)
-+ {
-+ if (render->picture_structure == PICT_FRAME)
-+ render->flags |= XVMC_FRAME_PICTURE;
-+ else if (render->picture_structure == PICT_TOP_FIELD)
-+ render->flags |= XVMC_TOP_FIELD;
-+ else if (render->picture_structure == PICT_BOTTOM_FIELD)
-+ render->flags |= XVMC_BOTTOM_FIELD;
-+ }
-+ else
-+#endif
-+ {
- //make sure that all data is drawn by XVMC_end_frame
- assert(render->filled_mv_blocks_num==0);
-+ }
-
- render->p_future_surface = NULL;
- render->p_past_surface = NULL;
-
-+ render->pict_type = s->pict_type; // for later frame dropping use
-+
-+#ifdef HAVE_XVMC_VLD
-+ if (s->avctx->xvmc_acceleration == 4)
-+{
-+ switch(s->pict_type){
-+ case I_TYPE:
-+ break;
-+ case B_TYPE:
-+ render->p_past_surface = findPastSurface(s, render);
-+ render->p_future_surface = findFutureSurface(s);
-+ if (!render->p_past_surface)
-+ av_log(avctx, AV_LOG_ERROR, "error: decoding B frame and past frame is null!");
-+ else if (!render->p_future_surface)
-+ av_log(avctx, AV_LOG_ERROR, "error: decoding B frame and future frame is null!");
-+ break;
-+
-+ case P_TYPE:
-+ render->p_past_surface = findPastSurface(s, render);
-+ render->p_future_surface = render->p_surface;
-+ if (!render->p_past_surface)
-+ av_log(avctx, AV_LOG_ERROR, "error: decoding P frame and past frame is null!");
-+ break;
-+ }
-+} else
-+#endif
-+{
- switch(s->pict_type){
- case I_TYPE:
- return 0;// no prediction from other frames
-@@ -111,8 +209,96 @@ xvmc_render_state_t * render,* last, * n
- render->p_past_surface = last->p_surface;
- return 0;
- }
-+}
-+
-+#ifdef HAVE_XVMC_VLD
-+ if (s->avctx->xvmc_acceleration == 4)
-+ {
-+ for (i = 0; i < 64; i++){
-+ qmatrix.intra_quantiser_matrix[i] = s->intra_matrix[s->dsp.idct_permutation[i]];
-+ qmatrix.non_intra_quantiser_matrix[i] = s->inter_matrix[s->dsp.idct_permutation[i]];
-+ qmatrix.chroma_intra_quantiser_matrix[i] = s->chroma_intra_matrix[s->dsp.idct_permutation[i]];
-+ qmatrix.chroma_non_intra_quantiser_matrix[i] = s->chroma_inter_matrix[s->dsp.idct_permutation[i]];
-+ }
-
--return -1;
-+ qmatrix.load_intra_quantiser_matrix = 1;
-+ qmatrix.load_non_intra_quantiser_matrix = 1;
-+ qmatrix.load_chroma_intra_quantiser_matrix = 1;
-+ qmatrix.load_chroma_non_intra_quantiser_matrix = 1;
-+
-+
-+ binfo.flags = 0;
-+ if (s->alternate_scan)
-+ binfo.flags |= XVMC_ALTERNATE_SCAN;
-+ if (s->top_field_first)
-+ binfo.flags |= XVMC_TOP_FIELD_FIRST;
-+ if (s->frame_pred_frame_dct)
-+ binfo.flags |= XVMC_PRED_DCT_FRAME;
-+ else
-+ binfo.flags |= XVMC_PRED_DCT_FIELD;
-+
-+ if (s->intra_vlc_format)
-+ binfo.flags |= XVMC_INTRA_VLC_FORMAT;
-+ if (!s->first_field && !s->progressive_sequence)
-+ binfo.flags |= XVMC_SECOND_FIELD;
-+ if (s->q_scale_type)
-+ binfo.flags |= XVMC_Q_SCALE_TYPE;
-+ if (s->concealment_motion_vectors)
-+ binfo.flags |= XVMC_CONCEALMENT_MOTION_VECTORS;
-+ if (s->progressive_sequence)
-+ binfo.flags |= XVMC_PROGRESSIVE_SEQUENCE;
-+
-+ binfo.picture_structure = s->picture_structure;
-+ switch (s->pict_type)
-+ {
-+ case I_TYPE: binfo.picture_coding_type = XVMC_I_PICTURE; break;
-+ case P_TYPE: binfo.picture_coding_type = XVMC_P_PICTURE; break;
-+ case B_TYPE: binfo.picture_coding_type = XVMC_B_PICTURE; break;
-+ default: av_log(avctx, AV_LOG_ERROR, "%s: Unknown picture coding type: %d\n", __FUNCTION__, s->pict_type);
-+ }
-+
-+ binfo.intra_dc_precision = s->intra_dc_precision;;
-+
-+ if (s->codec_id == CODEC_ID_MPEG2VIDEO)
-+ binfo.mpeg_coding = 2;
-+ else
-+ binfo.mpeg_coding = 1;
-+
-+ s->mb_width = (s->width + 15) / 16;
-+ s->mb_height = (s->codec_id == CODEC_ID_MPEG2VIDEO && !s->progressive_sequence) ?
-+ 2 * ((s->height + 31) / 32) : (s->height + 15) / 16;
-+
-+ if (s->codec_id == CODEC_ID_MPEG2VIDEO)
-+{
-+ binfo.FVMV_range = (s->mpeg_f_code[0][1] - 1);
-+ binfo.FHMV_range = (s->mpeg_f_code[0][0] - 1);
-+ binfo.BVMV_range = (s->mpeg_f_code[1][1] - 1);
-+ binfo.BHMV_range = (s->mpeg_f_code[1][0] - 1);
-+}
-+else
-+{
-+ binfo.FVMV_range = (s->mpeg_f_code[0][0] - 1);
-+ binfo.FHMV_range = (s->mpeg_f_code[0][0] - 1);
-+ binfo.BVMV_range = (s->mpeg_f_code[1][1] - 1);
-+ binfo.BHMV_range = (s->mpeg_f_code[1][1] - 1);
-+}
-+
-+ status = XvMCLoadQMatrix(render->disp, render->ctx, &qmatrix);
-+ if (status)
-+ av_log(avctx,AV_LOG_ERROR, "XvMCLoadQMatrix: Error: %d\n", status);
-+
-+ status = XvMCBeginSurface(render->disp, render->ctx, render->p_surface,
-+ render->p_past_surface, render->p_future_surface,
-+ &binfo);
-+ if (status)
-+ av_log(avctx,AV_LOG_ERROR, "XvMCBeginSurface: Error: %d\n", status);
-+
-+ if (!status)
-+ return 0;
-+ }
-+#endif
-+
-+ return -1;
- }
-
- void XVMC_field_end(MpegEncContext *s){
-@@ -120,10 +306,22 @@ xvmc_render_state_t * render;
- render = (xvmc_render_state_t*)s->current_picture.data[2];
- assert(render != NULL);
-
-+#ifdef HAVE_XVMC_VLD
-+ if (s->avctx->xvmc_acceleration == 4)
-+ {
-+ XvMCFlushSurface(render->disp, render->p_surface);
-+ XvMCSyncSurface(render->disp, render->p_surface);
-+
-+ s->error_count = 0;
-+ }
-+ else
-+#endif
-+ {
- if(render->filled_mv_blocks_num > 0){
- // printf("xvmcvideo.c: rendering %d left blocks after last slice!!!\n",render->filled_mv_blocks_num );
- ff_draw_horiz_band(s,0,0);
- }
-+ }
- }
-
- void XVMC_decode_mb(MpegEncContext *s){
-@@ -313,4 +511,50 @@ const int mb_xy = s->mb_y * s->mb_stride
-
- }
-
-+#ifdef HAVE_XVMC_VLD
-+static int length_to_next_start(uint8_t* pbuf_ptr, int buf_size)
-+{
-+ uint8_t* buf_ptr;
-+ unsigned int state = 0xFFFFFFFF, v;
-+
-+ buf_ptr = pbuf_ptr;
-+ while (buf_ptr < pbuf_ptr + buf_size)
-+ {
-+ v = *buf_ptr++;
-+ if (state == 0x000001) {
-+ return buf_ptr - pbuf_ptr - 4;
-+ }
-+ state = ((state << 8) | v) & 0xffffff;
-+ }
-+ return -1;
-+}
-+
-+#define SLICE_MIN_START_CODE 0x00000101
-+#define SLICE_MAX_START_CODE 0x000001af
-+
-+void XVMC_decode_slice(MpegEncContext *s, int mb_y, uint8_t* buffer, int buf_size)
-+{
-+ int slicelen = length_to_next_start(buffer, buf_size);
-+ xvmc_render_state_t* render;
-+
-+ if (slicelen < 0)
-+ {
-+ if ((mb_y == s->mb_height - 1) ||
-+ (!s->progressive_sequence && mb_y == (s->mb_height >> 1) -1) ||
-+ (s->codec_id != CODEC_ID_MPEG2VIDEO))
-+ slicelen = buf_size;
-+ else
-+ return;
-+ }
-+
-+ render = (xvmc_render_state_t*)s->current_picture.data[2];
-+ render->slice_code = SLICE_MIN_START_CODE + mb_y;
-+ render->slice_data = buffer;
-+ render->slice_datalen = slicelen;
-+
-+ ff_draw_horiz_band(s, 0, 0);
-+}
- #endif
-+
-+#endif
-+
---- libavcodec/allcodecs.c 2006-02-01 23:04:31.931705000 +0100
-+++ libavcodec/allcodecs.c 2006-02-01 23:05:33.760775000 +0100
-@@ -138,6 +138,9 @@
- register_avcodec(&mpeg1video_decoder);
- register_avcodec(&mpeg2video_decoder);
- register_avcodec(&mpegvideo_decoder);
-+#ifdef HAVE_XVMC_VLD
-+ register_avcodec(&mpeg_xxmc_decoder);
-+#endif
- #ifdef HAVE_XVMC
- register_avcodec(&mpeg_xvmc_decoder);
- #endif
---- libavcodec/mpeg12.c 2006-02-01 23:22:48.353926000 +0100
-+++ libavcodec/mpeg12.c 2006-02-01 23:21:06.863926000 +0100
-@@ -82,10 +82,16 @@
- extern void XVMC_init_block(MpegEncContext *s);//set s->block
- #endif
-
-+#ifdef HAVE_XVMC_VLD
-+extern int XVMC_decode_slice(MpegEncContext *s, int start_code,
-+ uint8_t *buffer, int buf_size);
-+#endif
-+
- const enum PixelFormat pixfmt_yuv_420[]= {PIX_FMT_YUV420P,-1};
- const enum PixelFormat pixfmt_yuv_422[]= {PIX_FMT_YUV422P,-1};
- const enum PixelFormat pixfmt_yuv_444[]= {PIX_FMT_YUV444P,-1};
- const enum PixelFormat pixfmt_xvmc_mpg2_420[] = {
-+ PIX_FMT_XVMC_MPEG2_VLD,
- PIX_FMT_XVMC_MPEG2_IDCT,
- PIX_FMT_XVMC_MPEG2_MC,
- -1};
-@@ -2432,6 +2438,16 @@
- av_log(s->avctx, AV_LOG_ERROR, "slice below image (%d >= %d)\n", mb_y, s->mb_height);
- return -1;
- }
-+
-+#ifdef HAVE_XVMC_VLD
-+ if (s->avctx->xvmc_acceleration == 4){
-+ int used = XVMC_decode_slice(s, mb_y, *buf, buf_size);
-+ if (used < 0)
-+ return DECODE_SLICE_ERROR;
-+ *buf += used - 1;
-+ return DECODE_SLICE_OK;
-+ }
-+#endif
-
- init_get_bits(&s->gb, *buf, buf_size*8);
-
-@@ -3206,6 +3222,43 @@
-
- #endif
-
-+
-+#ifdef HAVE_XVMC_VLD
-+static int mpeg_xxmc_decode_init(AVCodecContext *avctx){
-+ Mpeg1Context *s;
-+ if( avctx->thread_count > 1)
-+ return -1;
-+ if( !(avctx->slice_flags & SLICE_FLAG_CODED_ORDER) )
-+ return -1;
-+ if( !(avctx->slice_flags & SLICE_FLAG_ALLOW_FIELD) )
-+ dprintf("mpeg12.c: XVMC_VLD decoder will work better if SLICE_FLAG_ALLOW_FIELD is set\n");
-+
-+ mpeg_decode_init(avctx);
-+ s = avctx->priv_data;
-+
-+ avctx->pix_fmt = PIX_FMT_XVMC_MPEG2_VLD;
-+ avctx->xvmc_acceleration = 4;
-+
-+ return 0;
-+}
-+
-+AVCodec mpeg_xxmc_decoder = {
-+ "mpegvideo_xvmc",
-+ CODEC_TYPE_VIDEO,
-+ CODEC_ID_MPEG2VIDEO_XVMC,
-+ sizeof(Mpeg1Context),
-+ mpeg_xxmc_decode_init,
-+ NULL,
-+ mpeg_decode_end,
-+ mpeg_decode_frame,
-+ CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1 | CODEC_CAP_TRUNCATED| CODEC_CAP_HWACCEL,
-+ .flush= ff_mpeg_flush,
-+};
-+
-+#endif
-+
-+
-+
- /* this is ugly i know, but the alternative is too make
- hundreds of vars global and prefix them with ff_mpeg1_
- which is far uglier. */
+++ /dev/null
-Index: libmpdemux/demux_real.c
-===================================================================
---- libmpdemux/demux_real.c (revision 27605)
-+++ libmpdemux/demux_real.c (working copy)
-@@ -947,6 +947,7 @@
- // last fragment!
- if(dp_hdr->len!=vpkg_length-vpkg_offset)
- mp_msg(MSGT_DEMUX,MSGL_V,"warning! assembled.len=%d frag.len=%d total.len=%d \n",dp->len,vpkg_offset,vpkg_length-vpkg_offset);
-+ if (vpkg_offset > dp->len - sizeof(dp_hdr_t) - dp_hdr->len) vpkg_offset = dp->len - sizeof(dp_hdr_t) - dp_hdr->len;
- stream_read(demuxer->stream, dp_data+dp_hdr->len, vpkg_offset);
- if((dp_data[dp_hdr->len]&0x20) && (sh_video->format==0x30335652)) --dp_hdr->chunks; else
- dp_hdr->len+=vpkg_offset;
-@@ -970,6 +971,7 @@
- // non-last fragment:
- if(dp_hdr->len!=vpkg_offset)
- mp_msg(MSGT_DEMUX,MSGL_V,"warning! assembled.len=%d offset=%d frag.len=%d total.len=%d \n",dp->len,vpkg_offset,len,vpkg_length);
-+ if (len > dp->len - sizeof(dp_hdr_t) - dp_hdr->len) len = dp->len - sizeof(dp_hdr_t) - dp_hdr->len;
- stream_read(demuxer->stream, dp_data+dp_hdr->len, len);
- if((dp_data[dp_hdr->len]&0x20) && (sh_video->format==0x30335652)) --dp_hdr->chunks; else
- dp_hdr->len+=len;
-@@ -992,6 +994,7 @@
- extra[0]=1; extra[1]=0; // offset of the first chunk
- if(0x00==(vpkg_header&0xc0)){
- // first fragment:
-+ if (len > dp->len - sizeof(dp_hdr_t)) len = dp->len - sizeof(dp_hdr_t);
- dp_hdr->len=len;
- stream_read(demuxer->stream, dp_data, len);
- ds->asf_packet=dp;
+++ /dev/null
---- stream/stream_cddb.c (revision 24724)
-+++ stream/stream_cddb.c (working copy)
-@@ -53,6 +53,7 @@
- #include "version.h"
- #include "stream.h"
- #include "network.h"
-+#include "libavutil/intreadwrite.h"
-
- #define DEFAULT_FREEDB_SERVER "freedb.freedb.org"
- #define DEFAULT_CACHE_DIR "/.cddb/"
-@@ -453,8 +454,9 @@
- } else {
- len = ptr2-ptr+1;
- }
-+ len = FFMIN(sizeof(album_title) - 1, len);
- strncpy(album_title, ptr, len);
-- album_title[len-2]='\0';
-+ album_title[len]='\0';
- }
- mp_msg(MSGT_DEMUX, MSGL_STATUS, MSGTR_MPDEMUX_CDDB_ParseOKFoundAlbumTitle, album_title);
- return 0;
-@@ -490,8 +492,9 @@
- } else {
- len = ptr2-ptr+1;
- }
-+ len = FFMIN(sizeof(album_title) - 1, len);
- strncpy(album_title, ptr, len);
-- album_title[len-2]='\0';
-+ album_title[len]='\0';
- }
- mp_msg(MSGT_DEMUX, MSGL_STATUS, MSGTR_MPDEMUX_CDDB_ParseOKFoundAlbumTitle, album_title);
- return cddb_request_titles(cddb_data);