summaryrefslogtreecommitdiff
path: root/multimedia/xine-lib
diff options
context:
space:
mode:
authordrochner <drochner>2012-03-21 16:37:15 +0000
committerdrochner <drochner>2012-03-21 16:37:15 +0000
commit8e8240ea329be65acd421edcee8940d89b5c60e2 (patch)
tree402e0832d3a21dfdefb4f43549f153530828849d /multimedia/xine-lib
parent49cada7406c6fed504cf9d4d707403f017f96e8f (diff)
downloadpkgsrc-8e8240ea329be65acd421edcee8940d89b5c60e2.tar.gz
update to 1.2.1
changes: -Rewrite of VDPAU OSD handling -sndio plugin is now buildable -Various bug fixes
Diffstat (limited to 'multimedia/xine-lib')
-rw-r--r--multimedia/xine-lib/Makefile4
-rw-r--r--multimedia/xine-lib/Makefile.common8
-rw-r--r--multimedia/xine-lib/PLIST.common160
-rw-r--r--multimedia/xine-lib/buildlink3.mk4
-rw-r--r--multimedia/xine-lib/distinfo29
-rw-r--r--multimedia/xine-lib/patches/patch-ag94
-rw-r--r--multimedia/xine-lib/patches/patch-ap15
-rw-r--r--multimedia/xine-lib/patches/patch-at13
-rw-r--r--multimedia/xine-lib/patches/patch-au13
-rw-r--r--multimedia/xine-lib/patches/patch-cd6
-rw-r--r--multimedia/xine-lib/patches/patch-da848
-rw-r--r--multimedia/xine-lib/patches/patch-db1566
-rw-r--r--multimedia/xine-lib/patches/patch-dc372
-rw-r--r--multimedia/xine-lib/patches/patch-include_Makefile.am14
-rw-r--r--multimedia/xine-lib/patches/patch-input_dvb.c15
-rw-r--r--multimedia/xine-lib/patches/patch-na36
-rw-r--r--multimedia/xine-lib/patches/patch-src-xine-engine-post.h6
-rw-r--r--multimedia/xine-lib/patches/patch-src_audio__out_Makefile.am10
-rw-r--r--multimedia/xine-lib/patches/patch-src_libw32dll_wine_Makefile.am10
19 files changed, 205 insertions, 3018 deletions
diff --git a/multimedia/xine-lib/Makefile b/multimedia/xine-lib/Makefile
index d49d4db5e54..72b20ddd621 100644
--- a/multimedia/xine-lib/Makefile
+++ b/multimedia/xine-lib/Makefile
@@ -1,16 +1,16 @@
-# $NetBSD: Makefile,v 1.95 2012/02/06 12:41:09 wiz Exp $
+# $NetBSD: Makefile,v 1.96 2012/03/21 16:37:15 drochner Exp $
PKG_DESTDIR_SUPPORT= user-destdir
.include "Makefile.common"
-PKGREVISION= 1
COMMENT= Multimedia player library
CONFLICTS+= xine-xcb-[0-9]*
CONFIGURE_ARGS+= --disable-v4l
CONFIGURE_ARGS+= --disable-real-codecs
+CONFIGURE_ARGS+= --disable-aalib
BUILDLINK_API_DEPENDS.vcdimager+= vcdimager>=0.7.20nb1
diff --git a/multimedia/xine-lib/Makefile.common b/multimedia/xine-lib/Makefile.common
index eb35c499b19..97f3661af32 100644
--- a/multimedia/xine-lib/Makefile.common
+++ b/multimedia/xine-lib/Makefile.common
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.74 2012/01/09 17:20:01 drochner Exp $
+# $NetBSD: Makefile.common,v 1.75 2012/03/21 16:37:15 drochner Exp $
#
# used by audio/xine-alsa/Makefile
# used by audio/xine-arts/Makefile
@@ -7,8 +7,8 @@
# used by multimedia/xine-v4l/Makefile
# used by multimedia/xine-v4l2/Makefile
-DISTNAME= xine-lib-1.1.20.1
-XINE_PKGNAME= xine-lib-1.1.20.1
+DISTNAME= xine-lib-1.2.1
+XINE_PKGNAME= xine-lib-1.2.1
PKGNAME?= ${XINE_PKGNAME}
CATEGORIES?= multimedia
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=xine/}
@@ -17,7 +17,7 @@ EXTRACT_SUFX= .tar.bz2
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= http://xinehq.de/
-XINE_MOD_DIR_VER= 1.30
+XINE_MOD_DIR_VER= 2.1
PLIST_SUBST+= XINE_MOD_DIR_VER=${XINE_MOD_DIR_VER:Q}
DISTINFO_FILE= ${.CURDIR}/../../multimedia/xine-lib/distinfo
diff --git a/multimedia/xine-lib/PLIST.common b/multimedia/xine-lib/PLIST.common
index 1d3634796cd..8840706ceb1 100644
--- a/multimedia/xine-lib/PLIST.common
+++ b/multimedia/xine-lib/PLIST.common
@@ -1,6 +1,6 @@
-@comment $NetBSD: PLIST.common,v 1.32 2011/11/16 19:45:37 drochner Exp $
+@comment $NetBSD: PLIST.common,v 1.33 2012/03/21 16:37:15 drochner Exp $
bin/xine-config
-bin/xine-list-1.1
+bin/xine-list-1.2
include/xine.h
include/xine/alphablend.h
include/xine/array.h
@@ -27,19 +27,22 @@ include/xine/resample.h
include/xine/ring_buffer.h
include/xine/scratch.h
include/xine/sorted_array.h
+include/xine/spu.h
include/xine/spu_decoder.h
+include/xine/vdr.h
+include/xine/version.h
include/xine/video_decoder.h
include/xine/video_out.h
include/xine/video_overlay.h
include/xine/vo_scale.h
include/xine/xine_buffer.h
include/xine/xine_internal.h
-include/xine/xine_mmx.h
include/xine/xine_plugin.h
include/xine/xineintl.h
include/xine/xineutils.h
include/xine/xmllexer.h
include/xine/xmlparser.h
+lib/libxine-interface.la
lib/libxine.la
lib/pkgconfig/libxine.pc
lib/xine/plugins/${XINE_MOD_DIR_VER}/mime.types
@@ -75,8 +78,6 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_ff.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_ff.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_gsm610.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_gsm610.so
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_image.a
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_image.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_lpcm.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_lpcm.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_mad.a
@@ -85,12 +86,10 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_mpc.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_mpc.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_mpeg2.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_mpeg2.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_nsf.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_nsf.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_qt.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_qt.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_rgb.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_rgb.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_speex.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_speex.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spu.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spu.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spucc.a
@@ -101,12 +100,8 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spudvb.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spudvb.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spuhdmv.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_spuhdmv.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_sputext.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_sputext.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_theora.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_theora.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_vorbis.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_vorbis.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_w32dll.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_w32dll.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_yuv.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_decode_yuv.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_asf.a
@@ -123,8 +118,6 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_games.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_games.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_iff.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_iff.so
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_image.a
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_image.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_matroska.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_matroska.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_mng.a
@@ -141,8 +134,8 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_mpeg_ts.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_mpeg_ts.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_nsv.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_nsv.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_ogg.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_ogg.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_playlist.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_playlist.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_pva.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_pva.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_qt.a
@@ -153,16 +146,14 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_real.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_real.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_slave.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_slave.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_sputext.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_sputext.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_vc1_es.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_vc1_es.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_yuv4mpeg2.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_yuv4mpeg2.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_yuv_frames.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_dmx_yuv_frames.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_cdda.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_cdda.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_dvb.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_dvb.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_dvd.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_dvd.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_file.a
@@ -175,26 +166,28 @@ lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_net.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_net.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_pnm.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_pnm.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_pvr.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_pvr.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_rtp.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_rtp.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_rtsp.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_rtsp.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_stdin_fifo.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_stdin_fifo.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_v4l2.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_v4l2.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_vcd.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_vcd.so
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_vcdo.a
-lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_inp_vcdo.so
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_aa.a
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_aa.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_nsf.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_nsf.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_sputext.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_sputext.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vdr.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vdr.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_none.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_none.so
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_opengl.a
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_opengl.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_raw.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_raw.so
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_sdl.a
-@comment lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_sdl.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xcbshm.a
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xcbshm.so
lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xcbxv.a
@@ -207,8 +200,10 @@ ${PLIST.xvmc}lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xvmc.a
${PLIST.xvmc}lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xvmc.so
${PLIST.xvmc}lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xxmc.a
${PLIST.xvmc}lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_vo_out_xxmc.so
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_xiph.a
+lib/xine/plugins/${XINE_MOD_DIR_VER}/xineplug_xiph.so
man/man1/xine-config.1
-man/man1/xine-list-1.1.1
+man/man1/xine-list-1.2.1
man/man5/xine.5
share/aclocal/xine.m4
share/doc/xine-lib/COPYING
@@ -218,14 +213,15 @@ share/doc/xine-lib/NEWS
share/doc/xine-lib/README
share/doc/xine-lib/README.MINGWCROSS
share/doc/xine-lib/README.WIN32
+share/doc/xine-lib/README.cetus
share/doc/xine-lib/README.dvb
share/doc/xine-lib/README.dxr3
share/doc/xine-lib/README.freebsd
share/doc/xine-lib/README.irix
+share/doc/xine-lib/README.macosx
share/doc/xine-lib/README.network_dvd
share/doc/xine-lib/README.opengl
share/doc/xine-lib/README.solaris
-share/doc/xine-lib/README.syncfb
share/doc/xine-lib/README_xxmc.html
share/doc/xine-lib/TODO
share/doc/xine-lib/faq.html
@@ -235,52 +231,52 @@ share/doc/xine-lib/hackersguide/hackersguide.html
share/doc/xine-lib/hackersguide/library.png
share/doc/xine-lib/hackersguide/overlays.png
share/doc/xine-lib/hackersguide/post_frame.png
-share/locale/cs/LC_MESSAGES/libxine1.mo
-share/locale/de/LC_MESSAGES/libxine1.mo
-share/locale/en_US/LC_MESSAGES/libxine1.mo
-share/locale/eo/LC_MESSAGES/libxine1.mo
-share/locale/es/LC_MESSAGES/libxine1.mo
-share/locale/eu/LC_MESSAGES/libxine1.mo
-share/locale/fr/LC_MESSAGES/libxine1.mo
-share/locale/it/LC_MESSAGES/libxine1.mo
-share/locale/ja/LC_MESSAGES/libxine1.mo
-share/locale/pl/LC_MESSAGES/libxine1.mo
-share/locale/pt_BR/LC_MESSAGES/libxine1.mo
-share/locale/sk/LC_MESSAGES/libxine1.mo
-share/locale/tr/LC_MESSAGES/libxine1.mo
-share/xine/libxine1/fonts/cc-16.xinefont.gz
-share/xine/libxine1/fonts/cc-20.xinefont.gz
-share/xine/libxine1/fonts/cc-24.xinefont.gz
-share/xine/libxine1/fonts/cc-32.xinefont.gz
-share/xine/libxine1/fonts/cc-48.xinefont.gz
-share/xine/libxine1/fonts/cc-64.xinefont.gz
-share/xine/libxine1/fonts/cci-16.xinefont.gz
-share/xine/libxine1/fonts/cci-20.xinefont.gz
-share/xine/libxine1/fonts/cci-24.xinefont.gz
-share/xine/libxine1/fonts/cci-32.xinefont.gz
-share/xine/libxine1/fonts/cci-48.xinefont.gz
-share/xine/libxine1/fonts/cci-64.xinefont.gz
-share/xine/libxine1/fonts/cetus-16.xinefont.gz
-share/xine/libxine1/fonts/cetus-20.xinefont.gz
-share/xine/libxine1/fonts/cetus-24.xinefont.gz
-share/xine/libxine1/fonts/cetus-32.xinefont.gz
-share/xine/libxine1/fonts/cetus-48.xinefont.gz
-share/xine/libxine1/fonts/cetus-64.xinefont.gz
-share/xine/libxine1/fonts/mono-16.xinefont.gz
-share/xine/libxine1/fonts/mono-20.xinefont.gz
-share/xine/libxine1/fonts/mono-24.xinefont.gz
-share/xine/libxine1/fonts/mono-32.xinefont.gz
-share/xine/libxine1/fonts/mono-48.xinefont.gz
-share/xine/libxine1/fonts/mono-64.xinefont.gz
-share/xine/libxine1/fonts/sans-16.xinefont.gz
-share/xine/libxine1/fonts/sans-20.xinefont.gz
-share/xine/libxine1/fonts/sans-24.xinefont.gz
-share/xine/libxine1/fonts/sans-32.xinefont.gz
-share/xine/libxine1/fonts/sans-48.xinefont.gz
-share/xine/libxine1/fonts/sans-64.xinefont.gz
-share/xine/libxine1/fonts/serif-16.xinefont.gz
-share/xine/libxine1/fonts/serif-20.xinefont.gz
-share/xine/libxine1/fonts/serif-24.xinefont.gz
-share/xine/libxine1/fonts/serif-32.xinefont.gz
-share/xine/libxine1/fonts/serif-48.xinefont.gz
-share/xine/libxine1/fonts/serif-64.xinefont.gz
+share/locale/cs/LC_MESSAGES/libxine2.mo
+share/locale/de/LC_MESSAGES/libxine2.mo
+share/locale/en_US/LC_MESSAGES/libxine2.mo
+share/locale/eo/LC_MESSAGES/libxine2.mo
+share/locale/es/LC_MESSAGES/libxine2.mo
+share/locale/eu/LC_MESSAGES/libxine2.mo
+share/locale/fr/LC_MESSAGES/libxine2.mo
+share/locale/it/LC_MESSAGES/libxine2.mo
+share/locale/ja/LC_MESSAGES/libxine2.mo
+share/locale/pl/LC_MESSAGES/libxine2.mo
+share/locale/pt_BR/LC_MESSAGES/libxine2.mo
+share/locale/sk/LC_MESSAGES/libxine2.mo
+share/locale/tr/LC_MESSAGES/libxine2.mo
+share/xine-lib/fonts/cc-16.xinefont.gz
+share/xine-lib/fonts/cc-20.xinefont.gz
+share/xine-lib/fonts/cc-24.xinefont.gz
+share/xine-lib/fonts/cc-32.xinefont.gz
+share/xine-lib/fonts/cc-48.xinefont.gz
+share/xine-lib/fonts/cc-64.xinefont.gz
+share/xine-lib/fonts/cci-16.xinefont.gz
+share/xine-lib/fonts/cci-20.xinefont.gz
+share/xine-lib/fonts/cci-24.xinefont.gz
+share/xine-lib/fonts/cci-32.xinefont.gz
+share/xine-lib/fonts/cci-48.xinefont.gz
+share/xine-lib/fonts/cci-64.xinefont.gz
+share/xine-lib/fonts/cetus-16.xinefont.gz
+share/xine-lib/fonts/cetus-20.xinefont.gz
+share/xine-lib/fonts/cetus-24.xinefont.gz
+share/xine-lib/fonts/cetus-32.xinefont.gz
+share/xine-lib/fonts/cetus-48.xinefont.gz
+share/xine-lib/fonts/cetus-64.xinefont.gz
+share/xine-lib/fonts/mono-16.xinefont.gz
+share/xine-lib/fonts/mono-20.xinefont.gz
+share/xine-lib/fonts/mono-24.xinefont.gz
+share/xine-lib/fonts/mono-32.xinefont.gz
+share/xine-lib/fonts/mono-48.xinefont.gz
+share/xine-lib/fonts/mono-64.xinefont.gz
+share/xine-lib/fonts/sans-16.xinefont.gz
+share/xine-lib/fonts/sans-20.xinefont.gz
+share/xine-lib/fonts/sans-24.xinefont.gz
+share/xine-lib/fonts/sans-32.xinefont.gz
+share/xine-lib/fonts/sans-48.xinefont.gz
+share/xine-lib/fonts/sans-64.xinefont.gz
+share/xine-lib/fonts/serif-16.xinefont.gz
+share/xine-lib/fonts/serif-20.xinefont.gz
+share/xine-lib/fonts/serif-24.xinefont.gz
+share/xine-lib/fonts/serif-32.xinefont.gz
+share/xine-lib/fonts/serif-48.xinefont.gz
+share/xine-lib/fonts/serif-64.xinefont.gz
diff --git a/multimedia/xine-lib/buildlink3.mk b/multimedia/xine-lib/buildlink3.mk
index 7abffb03110..09015105350 100644
--- a/multimedia/xine-lib/buildlink3.mk
+++ b/multimedia/xine-lib/buildlink3.mk
@@ -1,4 +1,4 @@
-# $NetBSD: buildlink3.mk,v 1.22 2009/03/20 19:25:06 joerg Exp $
+# $NetBSD: buildlink3.mk,v 1.23 2012/03/21 16:37:15 drochner Exp $
BUILDLINK_TREE+= xine-lib
@@ -9,6 +9,8 @@ BUILDLINK_API_DEPENDS.xine-lib+= xine-lib>=1rc3c
BUILDLINK_ABI_DEPENDS.xine-lib+=xine-lib>=1.0.3a
BUILDLINK_ABI_DEPENDS.xine-lib?= xine-lib>=1.1.3nb1
BUILDLINK_PKGSRCDIR.xine-lib?= ../../multimedia/xine-lib
+
+.include "../../multimedia/ffmpeg/buildlink3.mk"
.endif # XINE_LIB_BUILDLINK3_MK
BUILDLINK_TREE+= -xine-lib
diff --git a/multimedia/xine-lib/distinfo b/multimedia/xine-lib/distinfo
index 5f8df4bb5b4..bcbee137c3d 100644
--- a/multimedia/xine-lib/distinfo
+++ b/multimedia/xine-lib/distinfo
@@ -1,23 +1,22 @@
-$NetBSD: distinfo,v 1.79 2012/01/09 17:20:01 drochner Exp $
+$NetBSD: distinfo,v 1.80 2012/03/21 16:37:15 drochner Exp $
-SHA1 (xine-lib-1.1.20.1.tar.bz2) = 68e85049723b491ccb22d5123bf8fa780529868a
-RMD160 (xine-lib-1.1.20.1.tar.bz2) = 73adb48ca4e3bd73018eaeb92ea4740b2c004d29
-Size (xine-lib-1.1.20.1.tar.bz2) = 7569871 bytes
+SHA1 (xine-lib-1.2.1.tar.bz2) = c86591ff9fb6b073b8d115fa31b5a74a305e8628
+RMD160 (xine-lib-1.2.1.tar.bz2) = eb6dab8418eebf0ee5f210efd085ae09367f624e
+Size (xine-lib-1.2.1.tar.bz2) = 6197175 bytes
SHA1 (patch-Makefile.am) = 3cfff7a6941015921c166f9a67159a5bb3ca0204
SHA1 (patch-ad) = 94aaac03f74c72a1ca753d1320aac07d1bb8a846
-SHA1 (patch-ag) = 96a2bab961ca90d7e3c1d67b6aa09388f9478d35
+SHA1 (patch-ag) = ee91008cf6dc3afec3f7f1280bd8983a3be8e273
SHA1 (patch-aj) = 4215c3bc37cf636e563a509f9a391081ed8e773b
SHA1 (patch-ak) = 987700e6526b5112ac66bd6a8f9ee41f338c3508
-SHA1 (patch-ap) = 4bc0c3923b50049f166f3bec703705ae33c166e9
+SHA1 (patch-ap) = d48fa83879895d4b1f56bfbcbe31087dd57d8a82
SHA1 (patch-as) = a0a93a256589e87a66eef31494441aa1b200f834
+SHA1 (patch-at) = 15a810379ccb345aeeb374b0148096684f5f179b
+SHA1 (patch-au) = 7f78d400ac606e2f73eb4caf347013f2b55f9430
SHA1 (patch-cb) = db4ff27418e05e97bf30b554beecc24d6e578d15
-SHA1 (patch-cd) = a080c745d08ded46db7c1173fe55350c1eb9ff33
-SHA1 (patch-da) = f79701d7c036e78d760c12119d88fe3f0dd1762d
-SHA1 (patch-db) = 3ad4ca6f43a379b251211477972cd6d34b1f821a
-SHA1 (patch-dc) = 11c4212029e67f22796e57706b42400a0dbcac3a
+SHA1 (patch-cd) = 192530e79568ea165b1fc675c7e794133a06c734
SHA1 (patch-fa) = 9312a3bab4ae8482a208948277f1d11fb7eaaf8c
-SHA1 (patch-include_Makefile.am) = 9fa5a83a340358b1d3651ce2cc18f61772e9d128
-SHA1 (patch-input_dvb.c) = 37aa191dca0df058dc09477624ff76dbc3a2f9b9
+SHA1 (patch-input_dvb.c) = 712291f38e5eec79daecb524e990e67af0d2c427
+SHA1 (patch-na) = b1158183f6caa772c1f3e08cb9abedc28326523f
SHA1 (patch-src-demuxers-demux_qt.c) = 2942911c09c0580c6017474af2a14f5b1f193c1d
SHA1 (patch-src-post-audio-stretch.c) = bc083541c410e8b8c2b5c23bc7b2b0ae312272a5
SHA1 (patch-src-post-audio-upmix.c) = ab01e157b42b8dd99622a17b5a8ecdb464ee694e
@@ -35,6 +34,6 @@ SHA1 (patch-src-post-planar-expand.c) = 7c532feeae4078f40d6f9a28dfa207e5cbee60a1
SHA1 (patch-src-post-planar-noise.c) = b3baf82e150ca9a27e73753398c18839066748f1
SHA1 (patch-src-post-planar-pp.c) = 147dc05a09ff851af99c488112c6a77926ae5afb
SHA1 (patch-src-post-planar-unsharp.c) = 964ec33c8c3cfcc8783b5fae1093c8fba76ff2a9
-SHA1 (patch-src-xine-engine-post.h) = 9a768aa3558bcde6f382f6945758a969f669338c
-SHA1 (patch-src_audio__out_Makefile.am) = a4b5b55eb2b5e7a8d85fb58100f71fb89bd9d79c
-SHA1 (patch-src_libw32dll_wine_Makefile.am) = 6be7574a5e0d120f1598b6cc34c39f1bf98a2a69
+SHA1 (patch-src-xine-engine-post.h) = 3b96d1279bbec48b2f3df50a576bfa8ec25f796f
+SHA1 (patch-src_audio__out_Makefile.am) = 5f8ba2ce81a63cb195407c3ce6649007ce15408f
+SHA1 (patch-src_libw32dll_wine_Makefile.am) = 17c717c84531780dc06c3cd5db8f879a560aeb3a
diff --git a/multimedia/xine-lib/patches/patch-ag b/multimedia/xine-lib/patches/patch-ag
index b47335dde9f..1ff816b358e 100644
--- a/multimedia/xine-lib/patches/patch-ag
+++ b/multimedia/xine-lib/patches/patch-ag
@@ -1,94 +1,26 @@
-$NetBSD: patch-ag,v 1.23 2011/10/12 17:30:22 hans Exp $
+$NetBSD: patch-ag,v 1.24 2012/03/21 16:37:15 drochner Exp $
---- configure.ac.orig 2010-07-25 14:37:30.000000000 +0000
+--- configure.ac.orig 2012-02-04 00:41:43.000000000 +0000
+++ configure.ac
-@@ -581,6 +581,9 @@ AC_CHECK_LIB(socket, socket, NET_LIBS="-
- AC_CHECK_LIB(nsl, gethostbyname, NET_LIBS="-lnsl $NET_LIBS",)
+@@ -272,6 +272,10 @@ AC_CHECK_LIB([nsl], [gethostbyname],
+ AC_CHECK_LIB([resolv], [hstrerror], [NET_LIBS="-lresolv $NET_LIBS"])
AC_SUBST(NET_LIBS)
+WINE_LIBS=""
+AC_CHECK_LIB(i386, i386_set_ldt, WINE_LIBS="-li386 $WINE_LIBS",)
+AC_SUBST(WINE_LIBS)
-
- dnl ---------------------------------------------
- dnl socklen_t
-@@ -710,6 +713,10 @@ if test "x$have_v4l2" = xyes && test "x$
- fi
- fi
++
+ AC_CHECK_LIB([rt], [clock_getres],
+ [RT_LIBS="-lrt"
+ AC_DEFINE(HAVE_POSIX_TIMERS, 1, [Define this if you have POSIX timers.])],
+@@ -361,6 +365,10 @@ case "$host_os" in
+ esac
+ AC_CHECK_HEADERS([sys/dvdio.h sys/cdio.h sys/scsiio.h])
+dnl ----------------------------------------------
+dnl Check for NetBSD DTV headers
+dnl ----------------------------------------------
+AC_CHECK_HEADERS([dev/dtv/dtvio.h])
- dnl ----------------------------------------------
- dnl Check for Xv and XvMC support
-@@ -968,7 +975,6 @@ if test "x$enable_xinerama" != "xno"; th
- ])
- if test "x$ac_have_xinerama" = "xyes"; then
- AC_DEFINE(HAVE_XINERAMA,1,[Define this if you have libXinerama installed])
-- X_LIBS="${X_LIBS} ${XINERAMA_LIBS}"
- fi
- else
- ac_have_xinerama=no
-@@ -1480,8 +1486,21 @@ AC_ARG_ENABLE([oss],
- AS_HELP_STRING([--disable-oss], [Do not build OSS audio output support]))
-
- if test "x$enable_oss" != "xno"; then
-+
-+ case "$host" in
-+ *-*-netbsd*|*-*-openbsd*)
-+ OSS_LIBS="-lossaudio"
-+ ;;
-+ *)
-+ OSS_LIBS=""
-+ ;;
-+ esac
-+
- AC_CHECK_HEADERS([sys/soundcard.h machine/soundcard.h soundcard.h], [break])
- AC_CHECK_DECL([SNDCTL_DSP_SETFRAGMENT], [have_ossaudio=yes], [], [
-+ #ifdef __NetBSD__
-+ #include <sys/ioctl.h>
-+ #endif
- #ifdef HAVE_SYS_SOUNDCARD_H
- # include <sys/soundcard.h>
- #endif
-@@ -1499,6 +1518,7 @@ if test "x$enable_oss" != "xno"; then
- fi
-
- AM_CONDITIONAL(HAVE_OSS, test "x$have_ossaudio" = "xyes")
-+AC_SUBST(OSS_LIBS)
-
-
- dnl ---------------------------------------------
-@@ -1630,9 +1650,10 @@ AC_ARG_ENABLE([gnomevfs],
- [with_gnome_vfs=$enableval], [with_gnome_vfs=yes])
-
- if test "x$with_gnome_vfs" = "xyes"; then
-- PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0,
-- no_gnome_vfs=no,
-- no_gnome_vfs=yes)
-+dnl PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0,
-+dnl no_gnome_vfs=no,
-+dnl no_gnome_vfs=yes)
-+no_gnome_vfs=yes
- AC_SUBST(GNOME_VFS_CFLAGS)
- AC_SUBST(GNOME_VFS_LIBS)
- if test "x$no_gnome_vfs" != "xyes"; then
-@@ -1973,7 +1994,7 @@ int has_timeout=sizeof(test.timeout);]])
- AC_DEFINE([HAVE_WIN32_CDROM], [1],
- [Define 1 if you have MinGW CD-ROM support])
- ;;
-- freebsd4.*|kfreebsd*-gnu)
-+ freebsd4.*|kfreebsd*-gnu|dragonfly*)
- AC_DEFINE([HAVE_FREEBSD_CDROM], [1],
- [Define 1 if you have FreeBSD CD-ROM support])
- ;;
-@@ -2234,6 +2255,7 @@ if test "x$some_snprintf" != "xyes" -o \
- fi
- AC_FUNC_FSEEKO
- AC_CHECK_HEADERS(assert.h byteswap.h malloc.h execinfo.h ucontext.h sys/mman.h sys/mixer.h libgen.h netdb.h dirent.h sys/times.h sys/ioctl.h sys/param.h alloca.h)
-+AC_LIBOBJ(dummy)
- AC_REPLACE_FUNCS(asprintf basename gettimeofday setenv strcasestr strndup strpbrk strsep strtok_r timegm unsetenv memmem)
-
- AC_LIBSOURCE(hstrerror.c)
+ dnl ----------------
+ dnl checks for types
diff --git a/multimedia/xine-lib/patches/patch-ap b/multimedia/xine-lib/patches/patch-ap
index 8826935ca91..a7f094347a4 100644
--- a/multimedia/xine-lib/patches/patch-ap
+++ b/multimedia/xine-lib/patches/patch-ap
@@ -1,13 +1,10 @@
-$NetBSD: patch-ap,v 1.11 2011/12/24 03:02:25 sbd Exp $
+$NetBSD: patch-ap,v 1.12 2012/03/21 16:37:15 drochner Exp $
---- src/dxr3/Makefile.am.orig 2011-10-04 21:42:53.000000000 +0000
+--- src/dxr3/Makefile.am.orig 2012-02-04 00:41:43.000000000 +0000
+++ src/dxr3/Makefile.am
-@@ -45,7 +48,7 @@ xineplug_vo_out_dxr3_la_SOURCES = \
- dxr3_scr.c \
+@@ -49,4 +49,4 @@ xineplug_vo_out_dxr3_la_SOURCES = \
video_out_dxr3.c
--xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm
-+xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(DYNAMIC_LD_LIBS) -lm $(XINERAMA_LIBS)
- xineplug_vo_out_dxr3_la_CFLAGS = $(VISIBILITY_FLAG) $(AM_CFLAGS)
- xineplug_vo_out_dxr3_la_LDFLAGS = $(xineplug_ldflags)
-
+ xineplug_vo_out_dxr3_la_CFLAGS = $(AM_CFLAGS) $(AVUTIL_CFLAGS) $(FFMPEG_CFLAGS)
+-xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(AVUTIL_LIBS) $(FFMPEG_LIBS) -lm
++xineplug_vo_out_dxr3_la_LIBADD = $(XINE_LIB) $(link_fame) $(link_rte) $(link_x_libs) $(LTLIBINTL) $(AVUTIL_LIBS) $(FFMPEG_LIBS) -lm $(XINERAMA_LIBS)
diff --git a/multimedia/xine-lib/patches/patch-at b/multimedia/xine-lib/patches/patch-at
new file mode 100644
index 00000000000..83ebe944ead
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-at
@@ -0,0 +1,13 @@
+$NetBSD: patch-at,v 1.7 2012/03/21 16:37:15 drochner Exp $
+
+--- src/xine-utils/memcpy.c.orig 2012-02-05 15:31:10.000000000 +0000
++++ src/xine-utils/memcpy.c
+@@ -414,7 +414,7 @@ static uint64_t memcpy_timing[sizeof(mem
+ static int64_t _x_gettime(void)
+ {
+ struct timespec tm;
+- return (clock_gettime (CLOCK_THREAD_CPUTIME_ID, &tm) == -1)
++ return (clock_gettime (CLOCK_MONOTONIC, &tm) == -1)
+ ? times (NULL)
+ : (int64_t)tm.tv_sec * 1e9 + tm.tv_nsec;
+ }
diff --git a/multimedia/xine-lib/patches/patch-au b/multimedia/xine-lib/patches/patch-au
new file mode 100644
index 00000000000..da95a636874
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-au
@@ -0,0 +1,13 @@
+$NetBSD: patch-au,v 1.8 2012/03/21 16:37:15 drochner Exp $
+
+--- src/audio_dec/xine_musepack_decoder.c.orig 2012-02-05 15:44:05.000000000 +0000
++++ src/audio_dec/xine_musepack_decoder.c
+@@ -53,7 +53,7 @@
+ #elif defined(HAVE_MPC_MPCDEC_H)
+ # include <mpc/mpcdec.h>
+ #else
+-# include "musepack/musepack.h"
++# include "mpcdec/mpcdec.h"
+ #endif
+
+ #define MPC_DECODER_MEMSIZE 65536
diff --git a/multimedia/xine-lib/patches/patch-cd b/multimedia/xine-lib/patches/patch-cd
index 574c1b183fe..1194620993e 100644
--- a/multimedia/xine-lib/patches/patch-cd
+++ b/multimedia/xine-lib/patches/patch-cd
@@ -1,7 +1,7 @@
-$NetBSD: patch-cd,v 1.1 2005/10/10 22:51:04 joerg Exp $
+$NetBSD: patch-cd,v 1.2 2012/03/21 16:37:15 drochner Exp $
---- src/video_out/libdha/sysdep/pci_freebsd.c.orig 2005-07-10 21:02:09.000000000 +0000
-+++ src/video_out/libdha/sysdep/pci_freebsd.c
+--- contrib/libdha/sysdep/pci_freebsd.c.orig 2005-07-10 21:02:09.000000000 +0000
++++ contrib/libdha/sysdep/pci_freebsd.c
@@ -8,7 +8,7 @@
/* machine/console.h seems to be outdated by recent FreeBSD *
* however pcvt_ioctl.h seems to exist for very long time */
diff --git a/multimedia/xine-lib/patches/patch-da b/multimedia/xine-lib/patches/patch-da
deleted file mode 100644
index b73ce23ac91..00000000000
--- a/multimedia/xine-lib/patches/patch-da
+++ /dev/null
@@ -1,848 +0,0 @@
-$NetBSD: patch-da,v 1.3 2007/02/07 20:04:00 drochner Exp $
-
-Move some inlined functions to a place before they are used,
-otherwise GCC barfs when -fno-unit-a-time is active.
-
---- src/libffmpeg/libavcodec/h263.c.orig 2007-01-28 19:38:33.000000000 +0100
-+++ src/libffmpeg/libavcodec/h263.c
-@@ -3459,6 +3459,53 @@ static inline int get_amv(MpegEncContext
- }
-
- /**
-+ * decodes the dc value.
-+ * @param n block index (0-3 are luma, 4-5 are chroma)
-+ * @param dir_ptr the prediction direction will be stored here
-+ * @return the quantized dc
-+ */
-+static inline int mpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr)
-+{
-+ int level, code;
-+
-+ if (n < 4)
-+ code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1);
-+ else
-+ code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1);
-+ if (code < 0 || code > 9 /* && s->nbit<9 */){
-+ av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n");
-+ return -1;
-+ }
-+ if (code == 0) {
-+ level = 0;
-+ } else {
-+ if(IS_3IV1){
-+ if(code==1)
-+ level= 2*get_bits1(&s->gb)-1;
-+ else{
-+ if(get_bits1(&s->gb))
-+ level = get_bits(&s->gb, code-1) + (1<<(code-1));
-+ else
-+ level = -get_bits(&s->gb, code-1) - (1<<(code-1));
-+ }
-+ }else{
-+ level = get_xbits(&s->gb, code);
-+ }
-+
-+ if (code > 8){
-+ if(get_bits1(&s->gb)==0){ /* marker */
-+ if(s->error_resilience>=2){
-+ av_log(s->avctx, AV_LOG_ERROR, "dc marker bit missing\n");
-+ return -1;
-+ }
-+ }
-+ }
-+ }
-+
-+ return ff_mpeg4_pred_dc(s, n, level, dir_ptr, 0);
-+}
-+
-+/**
- * decodes first partition.
- * @return number of MBs decoded or <0 if an error occured
- */
-@@ -3764,124 +3811,380 @@ int ff_mpeg4_decode_partitions(MpegEncCo
- }
-
- /**
-- * decode partition C of one MB.
-+ * decodes a block.
- * @return <0 if an error occured
- */
--static int mpeg4_decode_partitioned_mb(MpegEncContext *s, DCTELEM block[6][64])
-+static inline int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
-+ int n, int coded, int intra, int rvlc)
- {
-- int cbp, mb_type;
-- const int xy= s->mb_x + s->mb_y*s->mb_stride;
--
-- mb_type= s->current_picture.mb_type[xy];
-- cbp = s->cbp_table[xy];
-+ int level, i, last, run;
-+ int dc_pred_dir;
-+ RLTable * rl;
-+ RL_VLC_ELEM * rl_vlc;
-+ const uint8_t * scan_table;
-+ int qmul, qadd;
-
-- s->use_intra_dc_vlc= s->qscale < s->intra_dc_threshold;
-+ //Note intra & rvlc should be optimized away if this is inlined
-
-- if(s->current_picture.qscale_table[xy] != s->qscale){
-- ff_set_qscale(s, s->current_picture.qscale_table[xy] );
-- }
-+ if(intra) {
-+ if(s->use_intra_dc_vlc){
-+ /* DC coef */
-+ if(s->partitioned_frame){
-+ level = s->dc_val[0][ s->block_index[n] ];
-+ if(n<4) level= FASTDIV((level + (s->y_dc_scale>>1)), s->y_dc_scale);
-+ else level= FASTDIV((level + (s->c_dc_scale>>1)), s->c_dc_scale);
-+ dc_pred_dir= (s->pred_dir_table[s->mb_x + s->mb_y*s->mb_stride]<<n)&32;
-+ }else{
-+ level = mpeg4_decode_dc(s, n, &dc_pred_dir);
-+ if (level < 0)
-+ return -1;
-+ }
-+ block[0] = level;
-+ i = 0;
-+ }else{
-+ i = -1;
-+ ff_mpeg4_pred_dc(s, n, 0, &dc_pred_dir, 0);
-+ }
-+ if (!coded)
-+ goto not_coded;
-
-- if (s->pict_type == P_TYPE || s->pict_type==S_TYPE) {
-- int i;
-- for(i=0; i<4; i++){
-- s->mv[0][i][0] = s->current_picture.motion_val[0][ s->block_index[i] ][0];
-- s->mv[0][i][1] = s->current_picture.motion_val[0][ s->block_index[i] ][1];
-+ if(rvlc){
-+ rl = &rvlc_rl_intra;
-+ rl_vlc = rvlc_rl_intra.rl_vlc[0];
-+ }else{
-+ rl = &rl_intra;
-+ rl_vlc = rl_intra.rl_vlc[0];
- }
-- s->mb_intra = IS_INTRA(mb_type);
-+ if (s->ac_pred) {
-+ if (dc_pred_dir == 0)
-+ scan_table = s->intra_v_scantable.permutated; /* left */
-+ else
-+ scan_table = s->intra_h_scantable.permutated; /* top */
-+ } else {
-+ scan_table = s->intra_scantable.permutated;
-+ }
-+ qmul=1;
-+ qadd=0;
-+ } else {
-+ i = -1;
-+ if (!coded) {
-+ s->block_last_index[n] = i;
-+ return 0;
-+ }
-+ if(rvlc) rl = &rvlc_rl_inter;
-+ else rl = &rl_inter;
-
-- if (IS_SKIP(mb_type)) {
-- /* skip mb */
-- for(i=0;i<6;i++)
-- s->block_last_index[i] = -1;
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv_type = MV_TYPE_16X16;
-- if(s->pict_type==S_TYPE && s->vol_sprite_usage==GMC_SPRITE){
-- s->mcsel=1;
-- s->mb_skipped = 0;
-+ scan_table = s->intra_scantable.permutated;
-+
-+ if(s->mpeg_quant){
-+ qmul=1;
-+ qadd=0;
-+ if(rvlc){
-+ rl_vlc = rvlc_rl_inter.rl_vlc[0];
- }else{
-- s->mcsel=0;
-- s->mb_skipped = 1;
-+ rl_vlc = rl_inter.rl_vlc[0];
- }
-- }else if(s->mb_intra){
-- s->ac_pred = IS_ACPRED(s->current_picture.mb_type[xy]);
-- }else if(!s->mb_intra){
--// s->mcsel= 0; //FIXME do we need to init that
--
-- s->mv_dir = MV_DIR_FORWARD;
-- if (IS_8X8(mb_type)) {
-- s->mv_type = MV_TYPE_8X8;
-- } else {
-- s->mv_type = MV_TYPE_16X16;
-+ }else{
-+ qmul = s->qscale << 1;
-+ qadd = (s->qscale - 1) | 1;
-+ if(rvlc){
-+ rl_vlc = rvlc_rl_inter.rl_vlc[s->qscale];
-+ }else{
-+ rl_vlc = rl_inter.rl_vlc[s->qscale];
- }
- }
-- } else { /* I-Frame */
-- s->mb_intra = 1;
-- s->ac_pred = IS_ACPRED(s->current_picture.mb_type[xy]);
- }
-+ {
-+ OPEN_READER(re, &s->gb);
-+ for(;;) {
-+ UPDATE_CACHE(re, &s->gb);
-+ GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 0);
-+ if (level==0) {
-+ /* escape */
-+ if(rvlc){
-+ if(SHOW_UBITS(re, &s->gb, 1)==0){
-+ av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in rvlc esc\n");
-+ return -1;
-+ }; SKIP_CACHE(re, &s->gb, 1);
-
-- if (!IS_SKIP(mb_type)) {
-- int i;
-- s->dsp.clear_blocks(s->block[0]);
-- /* decode each block */
-- for (i = 0; i < 6; i++) {
-- if(mpeg4_decode_block(s, block[i], i, cbp&32, s->mb_intra, s->rvlc) < 0){
-- av_log(s->avctx, AV_LOG_ERROR, "texture corrupted at %d %d %d\n", s->mb_x, s->mb_y, s->mb_intra);
-- return -1;
-- }
-- cbp+=cbp;
-- }
-- }
-+ last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1);
-+ run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6);
-+ SKIP_COUNTER(re, &s->gb, 1+1+6);
-+ UPDATE_CACHE(re, &s->gb);
-
-- /* per-MB end of slice check */
-+ if(SHOW_UBITS(re, &s->gb, 1)==0){
-+ av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in rvlc esc\n");
-+ return -1;
-+ }; SKIP_CACHE(re, &s->gb, 1);
-
-- if(--s->mb_num_left <= 0){
--//printf("%06X %d\n", show_bits(&s->gb, 24), s->gb.size_in_bits - get_bits_count(&s->gb));
-- if(mpeg4_is_resync(s))
-- return SLICE_END;
-- else
-- return SLICE_NOEND;
-- }else{
-- if(mpeg4_is_resync(s)){
-- const int delta= s->mb_x + 1 == s->mb_width ? 2 : 1;
-- if(s->cbp_table[xy+delta])
-- return SLICE_END;
-- }
-- return SLICE_OK;
-- }
--}
-+ level= SHOW_UBITS(re, &s->gb, 11); SKIP_CACHE(re, &s->gb, 11);
-
--/**
-- * read the next MVs for OBMC. yes this is a ugly hack, feel free to send a patch :)
-- */
--static void preview_obmc(MpegEncContext *s){
-- GetBitContext gb= s->gb;
-+ if(SHOW_UBITS(re, &s->gb, 5)!=0x10){
-+ av_log(s->avctx, AV_LOG_ERROR, "reverse esc missing\n");
-+ return -1;
-+ }; SKIP_CACHE(re, &s->gb, 5);
-
-- int cbpc, i, pred_x, pred_y, mx, my;
-- int16_t *mot_val;
-- const int xy= s->mb_x + 1 + s->mb_y * s->mb_stride;
-- const int stride= s->b8_stride*2;
-+ level= level * qmul + qadd;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_CACHE(re, &s->gb, 1);
-+ SKIP_COUNTER(re, &s->gb, 1+11+5+1);
-
-- for(i=0; i<4; i++)
-- s->block_index[i]+= 2;
-- for(i=4; i<6; i++)
-- s->block_index[i]+= 1;
-- s->mb_x++;
-+ i+= run + 1;
-+ if(last) i+=192;
-+ }else{
-+ int cache;
-+ cache= GET_CACHE(re, &s->gb);
-
-- assert(s->pict_type == P_TYPE);
-+ if(IS_3IV1)
-+ cache ^= 0xC0000000;
-
-- do{
-- if (get_bits1(&s->gb)) {
-- /* skip mb */
-- mot_val = s->current_picture.motion_val[0][ s->block_index[0] ];
-- mot_val[0 ]= mot_val[2 ]=
-- mot_val[0+stride]= mot_val[2+stride]= 0;
-- mot_val[1 ]= mot_val[3 ]=
-- mot_val[1+stride]= mot_val[3+stride]= 0;
-+ if (cache&0x80000000) {
-+ if (cache&0x40000000) {
-+ /* third escape */
-+ SKIP_CACHE(re, &s->gb, 2);
-+ last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1);
-+ run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6);
-+ SKIP_COUNTER(re, &s->gb, 2+1+6);
-+ UPDATE_CACHE(re, &s->gb);
-
-- s->current_picture.mb_type[xy]= MB_TYPE_SKIP | MB_TYPE_16x16 | MB_TYPE_L0;
-- goto end;
-- }
-- cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2);
-+ if(IS_3IV1){
-+ level= SHOW_SBITS(re, &s->gb, 12); LAST_SKIP_BITS(re, &s->gb, 12);
-+ }else{
-+ if(SHOW_UBITS(re, &s->gb, 1)==0){
-+ av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in 3. esc\n");
-+ return -1;
-+ }; SKIP_CACHE(re, &s->gb, 1);
-+
-+ level= SHOW_SBITS(re, &s->gb, 12); SKIP_CACHE(re, &s->gb, 12);
-+
-+ if(SHOW_UBITS(re, &s->gb, 1)==0){
-+ av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in 3. esc\n");
-+ return -1;
-+ }; LAST_SKIP_CACHE(re, &s->gb, 1);
-+
-+ SKIP_COUNTER(re, &s->gb, 1+12+1);
-+ }
-+
-+#if 0
-+ if(s->error_resilience >= FF_ER_COMPLIANT){
-+ const int abs_level= FFABS(level);
-+ if(abs_level<=MAX_LEVEL && run<=MAX_RUN){
-+ const int run1= run - rl->max_run[last][abs_level] - 1;
-+ if(abs_level <= rl->max_level[last][run]){
-+ av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, vlc encoding possible\n");
-+ return -1;
-+ }
-+ if(s->error_resilience > FF_ER_COMPLIANT){
-+ if(abs_level <= rl->max_level[last][run]*2){
-+ av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, esc 1 encoding possible\n");
-+ return -1;
-+ }
-+ if(run1 >= 0 && abs_level <= rl->max_level[last][run1]){
-+ av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, esc 2 encoding possible\n");
-+ return -1;
-+ }
-+ }
-+ }
-+ }
-+#endif
-+ if (level>0) level= level * qmul + qadd;
-+ else level= level * qmul - qadd;
-+
-+ if((unsigned)(level + 2048) > 4095){
-+ if(s->error_resilience > FF_ER_COMPLIANT){
-+ if(level > 2560 || level<-2560){
-+ av_log(s->avctx, AV_LOG_ERROR, "|level| overflow in 3. esc, qp=%d\n", s->qscale);
-+ return -1;
-+ }
-+ }
-+ level= level<0 ? -2048 : 2047;
-+ }
-+
-+ i+= run + 1;
-+ if(last) i+=192;
-+ } else {
-+ /* second escape */
-+#if MIN_CACHE_BITS < 20
-+ LAST_SKIP_BITS(re, &s->gb, 2);
-+ UPDATE_CACHE(re, &s->gb);
-+#else
-+ SKIP_BITS(re, &s->gb, 2);
-+#endif
-+ GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1);
-+ i+= run + rl->max_run[run>>7][level/qmul] +1; //FIXME opt indexing
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ }
-+ } else {
-+ /* first escape */
-+#if MIN_CACHE_BITS < 19
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ UPDATE_CACHE(re, &s->gb);
-+#else
-+ SKIP_BITS(re, &s->gb, 1);
-+#endif
-+ GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1);
-+ i+= run;
-+ level = level + rl->max_level[run>>7][(run-1)&63] * qmul;//FIXME opt indexing
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ }
-+ }
-+ } else {
-+ i+= run;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ }
-+ if (i > 62){
-+ i-= 192;
-+ if(i&(~63)){
-+ av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+
-+ block[scan_table[i]] = level;
-+ break;
-+ }
-+
-+ block[scan_table[i]] = level;
-+ }
-+ CLOSE_READER(re, &s->gb);
-+ }
-+ not_coded:
-+ if (intra) {
-+ if(!s->use_intra_dc_vlc){
-+ block[0] = ff_mpeg4_pred_dc(s, n, block[0], &dc_pred_dir, 0);
-+
-+ i -= i>>31; //if(i == -1) i=0;
-+ }
-+
-+ mpeg4_pred_ac(s, block, n, dc_pred_dir);
-+ if (s->ac_pred) {
-+ i = 63; /* XXX: not optimal */
-+ }
-+ }
-+ s->block_last_index[n] = i;
-+ return 0;
-+}
-+
-+/**
-+ * decode partition C of one MB.
-+ * @return <0 if an error occured
-+ */
-+static int mpeg4_decode_partitioned_mb(MpegEncContext *s, DCTELEM block[6][64])
-+{
-+ int cbp, mb_type;
-+ const int xy= s->mb_x + s->mb_y*s->mb_stride;
-+
-+ mb_type= s->current_picture.mb_type[xy];
-+ cbp = s->cbp_table[xy];
-+
-+ s->use_intra_dc_vlc= s->qscale < s->intra_dc_threshold;
-+
-+ if(s->current_picture.qscale_table[xy] != s->qscale){
-+ ff_set_qscale(s, s->current_picture.qscale_table[xy] );
-+ }
-+
-+ if (s->pict_type == P_TYPE || s->pict_type==S_TYPE) {
-+ int i;
-+ for(i=0; i<4; i++){
-+ s->mv[0][i][0] = s->current_picture.motion_val[0][ s->block_index[i] ][0];
-+ s->mv[0][i][1] = s->current_picture.motion_val[0][ s->block_index[i] ][1];
-+ }
-+ s->mb_intra = IS_INTRA(mb_type);
-+
-+ if (IS_SKIP(mb_type)) {
-+ /* skip mb */
-+ for(i=0;i<6;i++)
-+ s->block_last_index[i] = -1;
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv_type = MV_TYPE_16X16;
-+ if(s->pict_type==S_TYPE && s->vol_sprite_usage==GMC_SPRITE){
-+ s->mcsel=1;
-+ s->mb_skipped = 0;
-+ }else{
-+ s->mcsel=0;
-+ s->mb_skipped = 1;
-+ }
-+ }else if(s->mb_intra){
-+ s->ac_pred = IS_ACPRED(s->current_picture.mb_type[xy]);
-+ }else if(!s->mb_intra){
-+// s->mcsel= 0; //FIXME do we need to init that
-+
-+ s->mv_dir = MV_DIR_FORWARD;
-+ if (IS_8X8(mb_type)) {
-+ s->mv_type = MV_TYPE_8X8;
-+ } else {
-+ s->mv_type = MV_TYPE_16X16;
-+ }
-+ }
-+ } else { /* I-Frame */
-+ s->mb_intra = 1;
-+ s->ac_pred = IS_ACPRED(s->current_picture.mb_type[xy]);
-+ }
-+
-+ if (!IS_SKIP(mb_type)) {
-+ int i;
-+ s->dsp.clear_blocks(s->block[0]);
-+ /* decode each block */
-+ for (i = 0; i < 6; i++) {
-+ if(mpeg4_decode_block(s, block[i], i, cbp&32, s->mb_intra, s->rvlc) < 0){
-+ av_log(s->avctx, AV_LOG_ERROR, "texture corrupted at %d %d %d\n", s->mb_x, s->mb_y, s->mb_intra);
-+ return -1;
-+ }
-+ cbp+=cbp;
-+ }
-+ }
-+
-+ /* per-MB end of slice check */
-+
-+ if(--s->mb_num_left <= 0){
-+//printf("%06X %d\n", show_bits(&s->gb, 24), s->gb.size_in_bits - get_bits_count(&s->gb));
-+ if(mpeg4_is_resync(s))
-+ return SLICE_END;
-+ else
-+ return SLICE_NOEND;
-+ }else{
-+ if(mpeg4_is_resync(s)){
-+ const int delta= s->mb_x + 1 == s->mb_width ? 2 : 1;
-+ if(s->cbp_table[xy+delta])
-+ return SLICE_END;
-+ }
-+ return SLICE_OK;
-+ }
-+}
-+
-+/**
-+ * read the next MVs for OBMC. yes this is a ugly hack, feel free to send a patch :)
-+ */
-+static void preview_obmc(MpegEncContext *s){
-+ GetBitContext gb= s->gb;
-+
-+ int cbpc, i, pred_x, pred_y, mx, my;
-+ int16_t *mot_val;
-+ const int xy= s->mb_x + 1 + s->mb_y * s->mb_stride;
-+ const int stride= s->b8_stride*2;
-+
-+ for(i=0; i<4; i++)
-+ s->block_index[i]+= 2;
-+ for(i=4; i<6; i++)
-+ s->block_index[i]+= 1;
-+ s->mb_x++;
-+
-+ assert(s->pict_type == P_TYPE);
-+
-+ do{
-+ if (get_bits1(&s->gb)) {
-+ /* skip mb */
-+ mot_val = s->current_picture.motion_val[0][ s->block_index[0] ];
-+ mot_val[0 ]= mot_val[2 ]=
-+ mot_val[0+stride]= mot_val[2+stride]= 0;
-+ mot_val[1 ]= mot_val[3 ]=
-+ mot_val[1+stride]= mot_val[3+stride]= 0;
-+
-+ s->current_picture.mb_type[xy]= MB_TYPE_SKIP | MB_TYPE_16x16 | MB_TYPE_L0;
-+ goto end;
-+ }
-+ cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2);
- }while(cbpc == 20);
-
- if(cbpc & 4){
-@@ -4747,309 +5050,6 @@ not_coded:
- return 0;
- }
-
--/**
-- * decodes the dc value.
-- * @param n block index (0-3 are luma, 4-5 are chroma)
-- * @param dir_ptr the prediction direction will be stored here
-- * @return the quantized dc
-- */
--static inline int mpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr)
--{
-- int level, code;
--
-- if (n < 4)
-- code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1);
-- else
-- code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1);
-- if (code < 0 || code > 9 /* && s->nbit<9 */){
-- av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n");
-- return -1;
-- }
-- if (code == 0) {
-- level = 0;
-- } else {
-- if(IS_3IV1){
-- if(code==1)
-- level= 2*get_bits1(&s->gb)-1;
-- else{
-- if(get_bits1(&s->gb))
-- level = get_bits(&s->gb, code-1) + (1<<(code-1));
-- else
-- level = -get_bits(&s->gb, code-1) - (1<<(code-1));
-- }
-- }else{
-- level = get_xbits(&s->gb, code);
-- }
--
-- if (code > 8){
-- if(get_bits1(&s->gb)==0){ /* marker */
-- if(s->error_resilience>=2){
-- av_log(s->avctx, AV_LOG_ERROR, "dc marker bit missing\n");
-- return -1;
-- }
-- }
-- }
-- }
--
-- return ff_mpeg4_pred_dc(s, n, level, dir_ptr, 0);
--}
--
--/**
-- * decodes a block.
-- * @return <0 if an error occured
-- */
--static inline int mpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
-- int n, int coded, int intra, int rvlc)
--{
-- int level, i, last, run;
-- int dc_pred_dir;
-- RLTable * rl;
-- RL_VLC_ELEM * rl_vlc;
-- const uint8_t * scan_table;
-- int qmul, qadd;
--
-- //Note intra & rvlc should be optimized away if this is inlined
--
-- if(intra) {
-- if(s->use_intra_dc_vlc){
-- /* DC coef */
-- if(s->partitioned_frame){
-- level = s->dc_val[0][ s->block_index[n] ];
-- if(n<4) level= FASTDIV((level + (s->y_dc_scale>>1)), s->y_dc_scale);
-- else level= FASTDIV((level + (s->c_dc_scale>>1)), s->c_dc_scale);
-- dc_pred_dir= (s->pred_dir_table[s->mb_x + s->mb_y*s->mb_stride]<<n)&32;
-- }else{
-- level = mpeg4_decode_dc(s, n, &dc_pred_dir);
-- if (level < 0)
-- return -1;
-- }
-- block[0] = level;
-- i = 0;
-- }else{
-- i = -1;
-- ff_mpeg4_pred_dc(s, n, 0, &dc_pred_dir, 0);
-- }
-- if (!coded)
-- goto not_coded;
--
-- if(rvlc){
-- rl = &rvlc_rl_intra;
-- rl_vlc = rvlc_rl_intra.rl_vlc[0];
-- }else{
-- rl = &rl_intra;
-- rl_vlc = rl_intra.rl_vlc[0];
-- }
-- if (s->ac_pred) {
-- if (dc_pred_dir == 0)
-- scan_table = s->intra_v_scantable.permutated; /* left */
-- else
-- scan_table = s->intra_h_scantable.permutated; /* top */
-- } else {
-- scan_table = s->intra_scantable.permutated;
-- }
-- qmul=1;
-- qadd=0;
-- } else {
-- i = -1;
-- if (!coded) {
-- s->block_last_index[n] = i;
-- return 0;
-- }
-- if(rvlc) rl = &rvlc_rl_inter;
-- else rl = &rl_inter;
--
-- scan_table = s->intra_scantable.permutated;
--
-- if(s->mpeg_quant){
-- qmul=1;
-- qadd=0;
-- if(rvlc){
-- rl_vlc = rvlc_rl_inter.rl_vlc[0];
-- }else{
-- rl_vlc = rl_inter.rl_vlc[0];
-- }
-- }else{
-- qmul = s->qscale << 1;
-- qadd = (s->qscale - 1) | 1;
-- if(rvlc){
-- rl_vlc = rvlc_rl_inter.rl_vlc[s->qscale];
-- }else{
-- rl_vlc = rl_inter.rl_vlc[s->qscale];
-- }
-- }
-- }
-- {
-- OPEN_READER(re, &s->gb);
-- for(;;) {
-- UPDATE_CACHE(re, &s->gb);
-- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 0);
-- if (level==0) {
-- /* escape */
-- if(rvlc){
-- if(SHOW_UBITS(re, &s->gb, 1)==0){
-- av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in rvlc esc\n");
-- return -1;
-- }; SKIP_CACHE(re, &s->gb, 1);
--
-- last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1);
-- run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6);
-- SKIP_COUNTER(re, &s->gb, 1+1+6);
-- UPDATE_CACHE(re, &s->gb);
--
-- if(SHOW_UBITS(re, &s->gb, 1)==0){
-- av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in rvlc esc\n");
-- return -1;
-- }; SKIP_CACHE(re, &s->gb, 1);
--
-- level= SHOW_UBITS(re, &s->gb, 11); SKIP_CACHE(re, &s->gb, 11);
--
-- if(SHOW_UBITS(re, &s->gb, 5)!=0x10){
-- av_log(s->avctx, AV_LOG_ERROR, "reverse esc missing\n");
-- return -1;
-- }; SKIP_CACHE(re, &s->gb, 5);
--
-- level= level * qmul + qadd;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_CACHE(re, &s->gb, 1);
-- SKIP_COUNTER(re, &s->gb, 1+11+5+1);
--
-- i+= run + 1;
-- if(last) i+=192;
-- }else{
-- int cache;
-- cache= GET_CACHE(re, &s->gb);
--
-- if(IS_3IV1)
-- cache ^= 0xC0000000;
--
-- if (cache&0x80000000) {
-- if (cache&0x40000000) {
-- /* third escape */
-- SKIP_CACHE(re, &s->gb, 2);
-- last= SHOW_UBITS(re, &s->gb, 1); SKIP_CACHE(re, &s->gb, 1);
-- run= SHOW_UBITS(re, &s->gb, 6); LAST_SKIP_CACHE(re, &s->gb, 6);
-- SKIP_COUNTER(re, &s->gb, 2+1+6);
-- UPDATE_CACHE(re, &s->gb);
--
-- if(IS_3IV1){
-- level= SHOW_SBITS(re, &s->gb, 12); LAST_SKIP_BITS(re, &s->gb, 12);
-- }else{
-- if(SHOW_UBITS(re, &s->gb, 1)==0){
-- av_log(s->avctx, AV_LOG_ERROR, "1. marker bit missing in 3. esc\n");
-- return -1;
-- }; SKIP_CACHE(re, &s->gb, 1);
--
-- level= SHOW_SBITS(re, &s->gb, 12); SKIP_CACHE(re, &s->gb, 12);
--
-- if(SHOW_UBITS(re, &s->gb, 1)==0){
-- av_log(s->avctx, AV_LOG_ERROR, "2. marker bit missing in 3. esc\n");
-- return -1;
-- }; LAST_SKIP_CACHE(re, &s->gb, 1);
--
-- SKIP_COUNTER(re, &s->gb, 1+12+1);
-- }
--
--#if 0
-- if(s->error_resilience >= FF_ER_COMPLIANT){
-- const int abs_level= FFABS(level);
-- if(abs_level<=MAX_LEVEL && run<=MAX_RUN){
-- const int run1= run - rl->max_run[last][abs_level] - 1;
-- if(abs_level <= rl->max_level[last][run]){
-- av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, vlc encoding possible\n");
-- return -1;
-- }
-- if(s->error_resilience > FF_ER_COMPLIANT){
-- if(abs_level <= rl->max_level[last][run]*2){
-- av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, esc 1 encoding possible\n");
-- return -1;
-- }
-- if(run1 >= 0 && abs_level <= rl->max_level[last][run1]){
-- av_log(s->avctx, AV_LOG_ERROR, "illegal 3. esc, esc 2 encoding possible\n");
-- return -1;
-- }
-- }
-- }
-- }
--#endif
-- if (level>0) level= level * qmul + qadd;
-- else level= level * qmul - qadd;
--
-- if((unsigned)(level + 2048) > 4095){
-- if(s->error_resilience > FF_ER_COMPLIANT){
-- if(level > 2560 || level<-2560){
-- av_log(s->avctx, AV_LOG_ERROR, "|level| overflow in 3. esc, qp=%d\n", s->qscale);
-- return -1;
-- }
-- }
-- level= level<0 ? -2048 : 2047;
-- }
--
-- i+= run + 1;
-- if(last) i+=192;
-- } else {
-- /* second escape */
--#if MIN_CACHE_BITS < 20
-- LAST_SKIP_BITS(re, &s->gb, 2);
-- UPDATE_CACHE(re, &s->gb);
--#else
-- SKIP_BITS(re, &s->gb, 2);
--#endif
-- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1);
-- i+= run + rl->max_run[run>>7][level/qmul] +1; //FIXME opt indexing
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-- }
-- } else {
-- /* first escape */
--#if MIN_CACHE_BITS < 19
-- LAST_SKIP_BITS(re, &s->gb, 1);
-- UPDATE_CACHE(re, &s->gb);
--#else
-- SKIP_BITS(re, &s->gb, 1);
--#endif
-- GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1);
-- i+= run;
-- level = level + rl->max_level[run>>7][(run-1)&63] * qmul;//FIXME opt indexing
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-- }
-- }
-- } else {
-- i+= run;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-- }
-- if (i > 62){
-- i-= 192;
-- if(i&(~63)){
-- av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
--
-- block[scan_table[i]] = level;
-- break;
-- }
--
-- block[scan_table[i]] = level;
-- }
-- CLOSE_READER(re, &s->gb);
-- }
-- not_coded:
-- if (intra) {
-- if(!s->use_intra_dc_vlc){
-- block[0] = ff_mpeg4_pred_dc(s, n, block[0], &dc_pred_dir, 0);
--
-- i -= i>>31; //if(i == -1) i=0;
-- }
--
-- mpeg4_pred_ac(s, block, n, dc_pred_dir);
-- if (s->ac_pred) {
-- i = 63; /* XXX: not optimal */
-- }
-- }
-- s->block_last_index[n] = i;
-- return 0;
--}
--
- /* most is hardcoded. should extend to handle all h263 streams */
- int h263_decode_picture_header(MpegEncContext *s)
- {
diff --git a/multimedia/xine-lib/patches/patch-db b/multimedia/xine-lib/patches/patch-db
deleted file mode 100644
index 9322590c26e..00000000000
--- a/multimedia/xine-lib/patches/patch-db
+++ /dev/null
@@ -1,1566 +0,0 @@
-$NetBSD: patch-db,v 1.2 2006/12/08 09:24:26 abs Exp $
-
-Move some inlined functions to a place before they are used,
-otherwise GCC barfs when -fno-unit-a-time is active.
-
---- src/libffmpeg/libavcodec/mpeg12.c.orig 2006-08-02 08:02:39.000000000 +0100
-+++ src/libffmpeg/libavcodec/mpeg12.c
-@@ -1074,515 +1074,370 @@ static inline int get_qscale(MpegEncCont
- #define MT_16X8 2
- #define MT_DMV 3
-
--static int mpeg_decode_mb(MpegEncContext *s,
-- DCTELEM block[12][64])
-+static inline int decode_dc(GetBitContext *gb, int component)
- {
-- int i, j, k, cbp, val, mb_type, motion_type;
-- const int mb_block_count = 4 + (1<< s->chroma_format);
-+ int code, diff;
-
-- dprintf("decode_mb: x=%d y=%d\n", s->mb_x, s->mb_y);
-+ if (component == 0) {
-+ code = get_vlc2(gb, dc_lum_vlc.table, DC_VLC_BITS, 2);
-+ } else {
-+ code = get_vlc2(gb, dc_chroma_vlc.table, DC_VLC_BITS, 2);
-+ }
-+ if (code < 0){
-+ av_log(NULL, AV_LOG_ERROR, "invalid dc code at\n");
-+ return 0xffff;
-+ }
-+ if (code == 0) {
-+ diff = 0;
-+ } else {
-+ diff = get_xbits(gb, code);
-+ }
-+ return diff;
-+}
-
-- assert(s->mb_skipped==0);
-+static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s,
-+ DCTELEM *block,
-+ int n)
-+{
-+ int level, dc, diff, j, run;
-+ int component;
-+ RLTable *rl;
-+ uint8_t * scantable= s->intra_scantable.permutated;
-+ const uint16_t *quant_matrix;
-+ const int qscale= s->qscale;
-
-- if (s->mb_skip_run-- != 0) {
-- if(s->pict_type == I_TYPE){
-- av_log(s->avctx, AV_LOG_ERROR, "skipped MB in I frame at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
-+ /* DC coef */
-+ if (n < 4){
-+ quant_matrix = s->intra_matrix;
-+ component = 0;
-+ }else{
-+ quant_matrix = s->chroma_intra_matrix;
-+ component = (n&1) + 1;
-+ }
-+ diff = decode_dc(&s->gb, component);
-+ if (diff >= 0xffff)
-+ return -1;
-+ dc = s->last_dc[component];
-+ dc += diff;
-+ s->last_dc[component] = dc;
-+ block[0] = dc << (3 - s->intra_dc_precision);
-+ if (s->intra_vlc_format)
-+ rl = &rl_mpeg2;
-+ else
-+ rl = &rl_mpeg1;
-
-- /* skip mb */
-- s->mb_intra = 0;
-- for(i=0;i<12;i++)
-- s->block_last_index[i] = -1;
-- if(s->picture_structure == PICT_FRAME)
-- s->mv_type = MV_TYPE_16X16;
-- else
-- s->mv_type = MV_TYPE_FIELD;
-- if (s->pict_type == P_TYPE) {
-- /* if P type, zero motion vector is implied */
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv[0][0][0] = s->mv[0][0][1] = 0;
-- s->last_mv[0][0][0] = s->last_mv[0][0][1] = 0;
-- s->last_mv[0][1][0] = s->last_mv[0][1][1] = 0;
-- s->field_select[0][0]= s->picture_structure - 1;
-- s->mb_skipped = 1;
-- s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]= MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16;
-- } else {
-- int mb_type;
-+ {
-+ OPEN_READER(re, &s->gb);
-+ /* now quantify & encode AC coefs */
-+ for(;;) {
-+ UPDATE_CACHE(re, &s->gb);
-+ GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-
-- if(s->mb_x)
-- mb_type= s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride - 1];
-- else
-- mb_type= s->current_picture.mb_type[ s->mb_width + (s->mb_y-1)*s->mb_stride - 1]; // FIXME not sure if this is allowed in mpeg at all,
-- if(IS_INTRA(mb_type))
-- return -1;
-+ if(level == 127){
-+ break;
-+ } else if(level != 0) {
-+ scantable += run;
-+ j = *scantable;
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ } else {
-+ /* escape */
-+ run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-+ UPDATE_CACHE(re, &s->gb);
-+ level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-+ scantable += run;
-+ j = *scantable;
-+ if(level<0){
-+ level= (-level*qscale*quant_matrix[j])>>4;
-+ level= -level;
-+ }else{
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ }
-+ }
-
-- /* if B type, reuse previous vectors and directions */
-- s->mv[0][0][0] = s->last_mv[0][0][0];
-- s->mv[0][0][1] = s->last_mv[0][0][1];
-- s->mv[1][0][0] = s->last_mv[1][0][0];
-- s->mv[1][0][1] = s->last_mv[1][0][1];
-+ block[j] = level;
-+ }
-+ CLOSE_READER(re, &s->gb);
-+ }
-
-- s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]=
-- mb_type | MB_TYPE_SKIP;
--// assert(s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride - 1]&(MB_TYPE_16x16|MB_TYPE_16x8));
-+ s->block_last_index[n] = scantable - s->intra_scantable.permutated;
-+ return 0;
-+}
-
-- if((s->mv[0][0][0]|s->mv[0][0][1]|s->mv[1][0][0]|s->mv[1][0][1])==0)
-- s->mb_skipped = 1;
-- }
-+static inline int mpeg2_decode_block_intra(MpegEncContext *s,
-+ DCTELEM *block,
-+ int n)
-+{
-+ int level, dc, diff, i, j, run;
-+ int component;
-+ RLTable *rl;
-+ uint8_t * const scantable= s->intra_scantable.permutated;
-+ const uint16_t *quant_matrix;
-+ const int qscale= s->qscale;
-+ int mismatch;
-
-- return 0;
-+ /* DC coef */
-+ if (n < 4){
-+ quant_matrix = s->intra_matrix;
-+ component = 0;
-+ }else{
-+ quant_matrix = s->chroma_intra_matrix;
-+ component = (n&1) + 1;
- }
-+ diff = decode_dc(&s->gb, component);
-+ if (diff >= 0xffff)
-+ return -1;
-+ dc = s->last_dc[component];
-+ dc += diff;
-+ s->last_dc[component] = dc;
-+ block[0] = dc << (3 - s->intra_dc_precision);
-+ dprintf("dc=%d\n", block[0]);
-+ mismatch = block[0] ^ 1;
-+ i = 0;
-+ if (s->intra_vlc_format)
-+ rl = &rl_mpeg2;
-+ else
-+ rl = &rl_mpeg1;
-
-- switch(s->pict_type) {
-- default:
-- case I_TYPE:
-- if (get_bits1(&s->gb) == 0) {
-- if (get_bits1(&s->gb) == 0){
-- av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in I Frame at %d %d\n", s->mb_x, s->mb_y);
-+ {
-+ OPEN_READER(re, &s->gb);
-+ /* now quantify & encode AC coefs */
-+ for(;;) {
-+ UPDATE_CACHE(re, &s->gb);
-+ GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-+
-+ if(level == 127){
-+ break;
-+ } else if(level != 0) {
-+ i += run;
-+ j = scantable[i];
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ } else {
-+ /* escape */
-+ run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-+ UPDATE_CACHE(re, &s->gb);
-+ level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-+ i += run;
-+ j = scantable[i];
-+ if(level<0){
-+ level= (-level*qscale*quant_matrix[j])>>4;
-+ level= -level;
-+ }else{
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ }
-+ }
-+ if (i > 63){
-+ av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
- return -1;
- }
-- mb_type = MB_TYPE_QUANT | MB_TYPE_INTRA;
-- } else {
-- mb_type = MB_TYPE_INTRA;
-- }
-- break;
-- case P_TYPE:
-- mb_type = get_vlc2(&s->gb, mb_ptype_vlc.table, MB_PTYPE_VLC_BITS, 1);
-- if (mb_type < 0){
-- av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in P Frame at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
-- mb_type = ptype2mb_type[ mb_type ];
-- break;
-- case B_TYPE:
-- mb_type = get_vlc2(&s->gb, mb_btype_vlc.table, MB_BTYPE_VLC_BITS, 1);
-- if (mb_type < 0){
-- av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in B Frame at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
-- mb_type = btype2mb_type[ mb_type ];
-- break;
-- }
-- dprintf("mb_type=%x\n", mb_type);
--// motion_type = 0; /* avoid warning */
-- if (IS_INTRA(mb_type)) {
-- s->dsp.clear_blocks(s->block[0]);
-
-- if(!s->chroma_y_shift){
-- s->dsp.clear_blocks(s->block[6]);
-+ mismatch^= level;
-+ block[j] = level;
- }
-+ CLOSE_READER(re, &s->gb);
-+ }
-+ block[63]^= mismatch&1;
-
-- /* compute dct type */
-- if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-- !s->frame_pred_frame_dct) {
-- s->interlaced_dct = get_bits1(&s->gb);
-- }
-+ s->block_last_index[n] = i;
-+ return 0;
-+}
-
-- if (IS_QUANT(mb_type))
-- s->qscale = get_qscale(s);
-+static inline int mpeg1_decode_block_intra(MpegEncContext *s,
-+ DCTELEM *block,
-+ int n)
-+{
-+ int level, dc, diff, i, j, run;
-+ int component;
-+ RLTable *rl = &rl_mpeg1;
-+ uint8_t * const scantable= s->intra_scantable.permutated;
-+ const uint16_t *quant_matrix= s->intra_matrix;
-+ const int qscale= s->qscale;
-
-- if (s->concealment_motion_vectors) {
-- /* just parse them */
-- if (s->picture_structure != PICT_FRAME)
-- skip_bits1(&s->gb); /* field select */
--
-- s->mv[0][0][0]= s->last_mv[0][0][0]= s->last_mv[0][1][0] =
-- mpeg_decode_motion(s, s->mpeg_f_code[0][0], s->last_mv[0][0][0]);
-- s->mv[0][0][1]= s->last_mv[0][0][1]= s->last_mv[0][1][1] =
-- mpeg_decode_motion(s, s->mpeg_f_code[0][1], s->last_mv[0][0][1]);
--
-- skip_bits1(&s->gb); /* marker */
-- }else
-- memset(s->last_mv, 0, sizeof(s->last_mv)); /* reset mv prediction */
-- s->mb_intra = 1;
--#ifdef HAVE_XVMC
-- //one 1 we memcpy blocks in xvmcvideo
-- if(s->avctx->xvmc_acceleration > 1){
-- XVMC_pack_pblocks(s,-1);//inter are always full blocks
-- if(s->swap_uv){
-- exchange_uv(s);
-- }
-- }
--#endif
-+ /* DC coef */
-+ component = (n <= 3 ? 0 : n - 4 + 1);
-+ diff = decode_dc(&s->gb, component);
-+ if (diff >= 0xffff)
-+ return -1;
-+ dc = s->last_dc[component];
-+ dc += diff;
-+ s->last_dc[component] = dc;
-+ block[0] = dc<<3;
-+ dprintf("dc=%d diff=%d\n", dc, diff);
-+ i = 0;
-+ {
-+ OPEN_READER(re, &s->gb);
-+ /* now quantify & encode AC coefs */
-+ for(;;) {
-+ UPDATE_CACHE(re, &s->gb);
-+ GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-
-- if (s->codec_id == CODEC_ID_MPEG2VIDEO) {
-- if(s->flags2 & CODEC_FLAG2_FAST){
-- for(i=0;i<6;i++) {
-- mpeg2_fast_decode_block_intra(s, s->pblocks[i], i);
-- }
-- }else{
-- for(i=0;i<mb_block_count;i++) {
-- if (mpeg2_decode_block_intra(s, s->pblocks[i], i) < 0)
-- return -1;
-+ if(level == 127){
-+ break;
-+ } else if(level != 0) {
-+ i += run;
-+ j = scantable[i];
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ level= (level-1)|1;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ LAST_SKIP_BITS(re, &s->gb, 1);
-+ } else {
-+ /* escape */
-+ run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-+ UPDATE_CACHE(re, &s->gb);
-+ level = SHOW_SBITS(re, &s->gb, 8); SKIP_BITS(re, &s->gb, 8);
-+ if (level == -128) {
-+ level = SHOW_UBITS(re, &s->gb, 8) - 256; LAST_SKIP_BITS(re, &s->gb, 8);
-+ } else if (level == 0) {
-+ level = SHOW_UBITS(re, &s->gb, 8) ; LAST_SKIP_BITS(re, &s->gb, 8);
- }
-- }
-- } else {
-- for(i=0;i<6;i++) {
-- if (mpeg1_decode_block_intra(s, s->pblocks[i], i) < 0)
-- return -1;
-- }
-- }
-- } else {
-- if (mb_type & MB_TYPE_ZERO_MV){
-- assert(mb_type & MB_TYPE_CBP);
--
-- /* compute dct type */
-- if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-- !s->frame_pred_frame_dct) {
-- s->interlaced_dct = get_bits1(&s->gb);
-- }
--
-- if (IS_QUANT(mb_type))
-- s->qscale = get_qscale(s);
--
-- s->mv_dir = MV_DIR_FORWARD;
-- if(s->picture_structure == PICT_FRAME)
-- s->mv_type = MV_TYPE_16X16;
-- else{
-- s->mv_type = MV_TYPE_FIELD;
-- mb_type |= MB_TYPE_INTERLACED;
-- s->field_select[0][0]= s->picture_structure - 1;
-- }
-- s->last_mv[0][0][0] = 0;
-- s->last_mv[0][0][1] = 0;
-- s->last_mv[0][1][0] = 0;
-- s->last_mv[0][1][1] = 0;
-- s->mv[0][0][0] = 0;
-- s->mv[0][0][1] = 0;
-- }else{
-- assert(mb_type & MB_TYPE_L0L1);
--//FIXME decide if MBs in field pictures are MB_TYPE_INTERLACED
-- /* get additionnal motion vector type */
-- if (s->frame_pred_frame_dct)
-- motion_type = MT_FRAME;
-- else{
-- motion_type = get_bits(&s->gb, 2);
-- }
--
-- /* compute dct type */
-- if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-- !s->frame_pred_frame_dct && HAS_CBP(mb_type)) {
-- s->interlaced_dct = get_bits1(&s->gb);
-- }
--
-- if (IS_QUANT(mb_type))
-- s->qscale = get_qscale(s);
--
-- /* motion vectors */
-- s->mv_dir = 0;
-- for(i=0;i<2;i++) {
-- if (USES_LIST(mb_type, i)) {
-- s->mv_dir |= (MV_DIR_FORWARD >> i);
-- dprintf("motion_type=%d\n", motion_type);
-- switch(motion_type) {
-- case MT_FRAME: /* or MT_16X8 */
-- if (s->picture_structure == PICT_FRAME) {
-- /* MT_FRAME */
-- mb_type |= MB_TYPE_16x16;
-- s->mv_type = MV_TYPE_16X16;
-- s->mv[i][0][0]= s->last_mv[i][0][0]= s->last_mv[i][1][0] =
-- mpeg_decode_motion(s, s->mpeg_f_code[i][0], s->last_mv[i][0][0]);
-- s->mv[i][0][1]= s->last_mv[i][0][1]= s->last_mv[i][1][1] =
-- mpeg_decode_motion(s, s->mpeg_f_code[i][1], s->last_mv[i][0][1]);
-- /* full_pel: only for mpeg1 */
-- if (s->full_pel[i]){
-- s->mv[i][0][0] <<= 1;
-- s->mv[i][0][1] <<= 1;
-- }
-- } else {
-- /* MT_16X8 */
-- mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
-- s->mv_type = MV_TYPE_16X8;
-- for(j=0;j<2;j++) {
-- s->field_select[i][j] = get_bits1(&s->gb);
-- for(k=0;k<2;k++) {
-- val = mpeg_decode_motion(s, s->mpeg_f_code[i][k],
-- s->last_mv[i][j][k]);
-- s->last_mv[i][j][k] = val;
-- s->mv[i][j][k] = val;
-- }
-- }
-- }
-- break;
-- case MT_FIELD:
-- s->mv_type = MV_TYPE_FIELD;
-- if (s->picture_structure == PICT_FRAME) {
-- mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
-- for(j=0;j<2;j++) {
-- s->field_select[i][j] = get_bits1(&s->gb);
-- val = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
-- s->last_mv[i][j][0]);
-- s->last_mv[i][j][0] = val;
-- s->mv[i][j][0] = val;
-- dprintf("fmx=%d\n", val);
-- val = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
-- s->last_mv[i][j][1] >> 1);
-- s->last_mv[i][j][1] = val << 1;
-- s->mv[i][j][1] = val;
-- dprintf("fmy=%d\n", val);
-- }
-- } else {
-- mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
-- s->field_select[i][0] = get_bits1(&s->gb);
-- for(k=0;k<2;k++) {
-- val = mpeg_decode_motion(s, s->mpeg_f_code[i][k],
-- s->last_mv[i][0][k]);
-- s->last_mv[i][0][k] = val;
-- s->last_mv[i][1][k] = val;
-- s->mv[i][0][k] = val;
-- }
-- }
-- break;
-- case MT_DMV:
-- {
-- int dmx, dmy, mx, my, m;
--
-- mx = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
-- s->last_mv[i][0][0]);
-- s->last_mv[i][0][0] = mx;
-- s->last_mv[i][1][0] = mx;
-- dmx = get_dmv(s);
-- my = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
-- s->last_mv[i][0][1] >> 1);
-- dmy = get_dmv(s);
-- s->mv_type = MV_TYPE_DMV;
--
--
-- s->last_mv[i][0][1] = my<<1;
-- s->last_mv[i][1][1] = my<<1;
--
-- s->mv[i][0][0] = mx;
-- s->mv[i][0][1] = my;
-- s->mv[i][1][0] = mx;//not used
-- s->mv[i][1][1] = my;//not used
--
-- if (s->picture_structure == PICT_FRAME) {
-- mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
--
-- //m = 1 + 2 * s->top_field_first;
-- m = s->top_field_first ? 1 : 3;
--
-- /* top -> top pred */
-- s->mv[i][2][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
-- s->mv[i][2][1] = ((my * m + (my > 0)) >> 1) + dmy - 1;
-- m = 4 - m;
-- s->mv[i][3][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
-- s->mv[i][3][1] = ((my * m + (my > 0)) >> 1) + dmy + 1;
-- } else {
-- mb_type |= MB_TYPE_16x16;
--
-- s->mv[i][2][0] = ((mx + (mx > 0)) >> 1) + dmx;
-- s->mv[i][2][1] = ((my + (my > 0)) >> 1) + dmy;
-- if(s->picture_structure == PICT_TOP_FIELD)
-- s->mv[i][2][1]--;
-- else
-- s->mv[i][2][1]++;
-- }
-- }
-- break;
-- default:
-- av_log(s->avctx, AV_LOG_ERROR, "00 motion_type at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
-+ i += run;
-+ j = scantable[i];
-+ if(level<0){
-+ level= -level;
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ level= (level-1)|1;
-+ level= -level;
-+ }else{
-+ level= (level*qscale*quant_matrix[j])>>4;
-+ level= (level-1)|1;
- }
- }
-- }
--
-- s->mb_intra = 0;
-- if (HAS_CBP(mb_type)) {
-- s->dsp.clear_blocks(s->block[0]);
--
-- if(!s->chroma_y_shift){
-- s->dsp.clear_blocks(s->block[6]);
-- }
--
-- cbp = get_vlc2(&s->gb, mb_pat_vlc.table, MB_PAT_VLC_BITS, 1);
-- if (cbp < 0 || ((cbp == 0) && (s->chroma_format < 2)) ){
-- av_log(s->avctx, AV_LOG_ERROR, "invalid cbp at %d %d\n", s->mb_x, s->mb_y);
-+ if (i > 63){
-+ av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
- return -1;
- }
-- if(mb_block_count > 6){
-- cbp<<= mb_block_count-6;
-- cbp |= get_bits(&s->gb, mb_block_count-6);
-- }
--
--#ifdef HAVE_XVMC
-- //on 1 we memcpy blocks in xvmcvideo
-- if(s->avctx->xvmc_acceleration > 1){
-- XVMC_pack_pblocks(s,cbp);
-- if(s->swap_uv){
-- exchange_uv(s);
-- }
-- }
--#endif
--
-- if (s->codec_id == CODEC_ID_MPEG2VIDEO) {
-- if(s->flags2 & CODEC_FLAG2_FAST){
-- for(i=0;i<6;i++) {
-- if(cbp & 32) {
-- mpeg2_fast_decode_block_non_intra(s, s->pblocks[i], i);
-- } else {
-- s->block_last_index[i] = -1;
-- }
-- cbp+=cbp;
-- }
-- }else{
-- cbp<<= 12-mb_block_count;
-
-- for(i=0;i<mb_block_count;i++) {
-- if ( cbp & (1<<11) ) {
-- if (mpeg2_decode_block_non_intra(s, s->pblocks[i], i) < 0)
-- return -1;
-- } else {
-- s->block_last_index[i] = -1;
-- }
-- cbp+=cbp;
-- }
-- }
-- } else {
-- if(s->flags2 & CODEC_FLAG2_FAST){
-- for(i=0;i<6;i++) {
-- if (cbp & 32) {
-- mpeg1_fast_decode_block_inter(s, s->pblocks[i], i);
-- } else {
-- s->block_last_index[i] = -1;
-- }
-- cbp+=cbp;
-- }
-- }else{
-- for(i=0;i<6;i++) {
-- if (cbp & 32) {
-- if (mpeg1_decode_block_inter(s, s->pblocks[i], i) < 0)
-- return -1;
-- } else {
-- s->block_last_index[i] = -1;
-- }
-- cbp+=cbp;
-- }
-- }
-- }
-- }else{
-- for(i=0;i<12;i++)
-- s->block_last_index[i] = -1;
-+ block[j] = level;
- }
-+ CLOSE_READER(re, &s->gb);
- }
--
-- s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]= mb_type;
--
-- return 0;
-+ s->block_last_index[n] = i;
-+ return 0;
- }
-
--/* as h263, but only 17 codes */
--static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred)
-+static inline int mpeg2_fast_decode_block_non_intra(MpegEncContext *s,
-+ DCTELEM *block,
-+ int n)
- {
-- int code, sign, val, l, shift;
--
-- code = get_vlc2(&s->gb, mv_vlc.table, MV_VLC_BITS, 2);
-- if (code == 0) {
-- return pred;
-- }
-- if (code < 0) {
-- return 0xffff;
-- }
-+ int level, i, j, run;
-+ RLTable *rl = &rl_mpeg1;
-+ uint8_t * const scantable= s->intra_scantable.permutated;
-+ const int qscale= s->qscale;
-+ OPEN_READER(re, &s->gb);
-+ i = -1;
-
-- sign = get_bits1(&s->gb);
-- shift = fcode - 1;
-- val = code;
-- if (shift) {
-- val = (val - 1) << shift;
-- val |= get_bits(&s->gb, shift);
-- val++;
-+ /* special case for the first coef. no need to add a second vlc table */
-+ UPDATE_CACHE(re, &s->gb);
-+ if (((int32_t)GET_CACHE(re, &s->gb)) < 0) {
-+ level= (3*qscale)>>1;
-+ if(GET_CACHE(re, &s->gb)&0x40000000)
-+ level= -level;
-+ block[0] = level;
-+ i++;
-+ SKIP_BITS(re, &s->gb, 2);
-+ if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-+ goto end;
- }
-- if (sign)
-- val = -val;
-- val += pred;
-
-- /* modulo decoding */
-- l= INT_BIT - 5 - shift;
-- val = (val<<l)>>l;
-- return val;
--}
-+ /* now quantify & encode AC coefs */
-+ for(;;) {
-+ GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-
--static inline int decode_dc(GetBitContext *gb, int component)
--{
-- int code, diff;
-+ if(level != 0) {
-+ i += run;
-+ j = scantable[i];
-+ level= ((level*2+1)*qscale)>>1;
-+ level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-+ SKIP_BITS(re, &s->gb, 1);
-+ } else {
-+ /* escape */
-+ run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-+ UPDATE_CACHE(re, &s->gb);
-+ level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-
-- if (component == 0) {
-- code = get_vlc2(gb, dc_lum_vlc.table, DC_VLC_BITS, 2);
-- } else {
-- code = get_vlc2(gb, dc_chroma_vlc.table, DC_VLC_BITS, 2);
-- }
-- if (code < 0){
-- av_log(NULL, AV_LOG_ERROR, "invalid dc code at\n");
-- return 0xffff;
-- }
-- if (code == 0) {
-- diff = 0;
-- } else {
-- diff = get_xbits(gb, code);
-+ i += run;
-+ j = scantable[i];
-+ if(level<0){
-+ level= ((-level*2+1)*qscale)>>1;
-+ level= -level;
-+ }else{
-+ level= ((level*2+1)*qscale)>>1;
-+ }
-+ }
-+
-+ block[j] = level;
-+ if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-+ break;
-+ UPDATE_CACHE(re, &s->gb);
- }
-- return diff;
-+end:
-+ LAST_SKIP_BITS(re, &s->gb, 2);
-+ CLOSE_READER(re, &s->gb);
-+ s->block_last_index[n] = i;
-+ return 0;
- }
-
--static inline int mpeg1_decode_block_intra(MpegEncContext *s,
-+static inline int mpeg2_decode_block_non_intra(MpegEncContext *s,
- DCTELEM *block,
- int n)
- {
-- int level, dc, diff, i, j, run;
-- int component;
-+ int level, i, j, run;
- RLTable *rl = &rl_mpeg1;
- uint8_t * const scantable= s->intra_scantable.permutated;
-- const uint16_t *quant_matrix= s->intra_matrix;
-+ const uint16_t *quant_matrix;
- const int qscale= s->qscale;
-+ int mismatch;
-+
-+ mismatch = 1;
-
-- /* DC coef */
-- component = (n <= 3 ? 0 : n - 4 + 1);
-- diff = decode_dc(&s->gb, component);
-- if (diff >= 0xffff)
-- return -1;
-- dc = s->last_dc[component];
-- dc += diff;
-- s->last_dc[component] = dc;
-- block[0] = dc<<3;
-- dprintf("dc=%d diff=%d\n", dc, diff);
-- i = 0;
- {
- OPEN_READER(re, &s->gb);
-+ i = -1;
-+ if (n < 4)
-+ quant_matrix = s->inter_matrix;
-+ else
-+ quant_matrix = s->chroma_inter_matrix;
-+
-+ /* special case for the first coef. no need to add a second vlc table */
-+ UPDATE_CACHE(re, &s->gb);
-+ if (((int32_t)GET_CACHE(re, &s->gb)) < 0) {
-+ level= (3*qscale*quant_matrix[0])>>5;
-+ if(GET_CACHE(re, &s->gb)&0x40000000)
-+ level= -level;
-+ block[0] = level;
-+ mismatch ^= level;
-+ i++;
-+ SKIP_BITS(re, &s->gb, 2);
-+ if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-+ goto end;
-+ }
-+
- /* now quantify & encode AC coefs */
- for(;;) {
-- UPDATE_CACHE(re, &s->gb);
- GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-
-- if(level == 127){
-- break;
-- } else if(level != 0) {
-+ if(level != 0) {
- i += run;
- j = scantable[i];
-- level= (level*qscale*quant_matrix[j])>>4;
-- level= (level-1)|1;
-+ level= ((level*2+1)*qscale*quant_matrix[j])>>5;
- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-+ SKIP_BITS(re, &s->gb, 1);
- } else {
- /* escape */
- run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
- UPDATE_CACHE(re, &s->gb);
-- level = SHOW_SBITS(re, &s->gb, 8); SKIP_BITS(re, &s->gb, 8);
-- if (level == -128) {
-- level = SHOW_UBITS(re, &s->gb, 8) - 256; LAST_SKIP_BITS(re, &s->gb, 8);
-- } else if (level == 0) {
-- level = SHOW_UBITS(re, &s->gb, 8) ; LAST_SKIP_BITS(re, &s->gb, 8);
-- }
-+ level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-+
- i += run;
- j = scantable[i];
- if(level<0){
-- level= -level;
-- level= (level*qscale*quant_matrix[j])>>4;
-- level= (level-1)|1;
-+ level= ((-level*2+1)*qscale*quant_matrix[j])>>5;
- level= -level;
- }else{
-- level= (level*qscale*quant_matrix[j])>>4;
-- level= (level-1)|1;
-+ level= ((level*2+1)*qscale*quant_matrix[j])>>5;
- }
- }
- if (i > 63){
-@@ -1590,12 +1445,20 @@ static inline int mpeg1_decode_block_int
- return -1;
- }
-
-+ mismatch ^= level;
- block[j] = level;
-+ if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-+ break;
-+ UPDATE_CACHE(re, &s->gb);
- }
-+end:
-+ LAST_SKIP_BITS(re, &s->gb, 2);
- CLOSE_READER(re, &s->gb);
- }
-+ block[63] ^= (mismatch & 1);
-+
- s->block_last_index[n] = i;
-- return 0;
-+ return 0;
- }
-
- static inline int mpeg1_decode_block_inter(MpegEncContext *s,
-@@ -1733,315 +1596,452 @@ static inline int mpeg1_fast_decode_bloc
- level= (level-1)|1;
- }
- }
--
-- block[j] = level;
-- if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-- break;
-- UPDATE_CACHE(re, &s->gb);
-+
-+ block[j] = level;
-+ if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-+ break;
-+ UPDATE_CACHE(re, &s->gb);
-+ }
-+end:
-+ LAST_SKIP_BITS(re, &s->gb, 2);
-+ CLOSE_READER(re, &s->gb);
-+ }
-+ s->block_last_index[n] = i;
-+ return 0;
-+}
-+
-+static int mpeg_decode_mb(MpegEncContext *s,
-+ DCTELEM block[12][64])
-+{
-+ int i, j, k, cbp, val, mb_type, motion_type;
-+ const int mb_block_count = 4 + (1<< s->chroma_format);
-+
-+ dprintf("decode_mb: x=%d y=%d\n", s->mb_x, s->mb_y);
-+
-+ assert(s->mb_skipped==0);
-+
-+ if (s->mb_skip_run-- != 0) {
-+ if(s->pict_type == I_TYPE){
-+ av_log(s->avctx, AV_LOG_ERROR, "skipped MB in I frame at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+
-+ /* skip mb */
-+ s->mb_intra = 0;
-+ for(i=0;i<12;i++)
-+ s->block_last_index[i] = -1;
-+ if(s->picture_structure == PICT_FRAME)
-+ s->mv_type = MV_TYPE_16X16;
-+ else
-+ s->mv_type = MV_TYPE_FIELD;
-+ if (s->pict_type == P_TYPE) {
-+ /* if P type, zero motion vector is implied */
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv[0][0][0] = s->mv[0][0][1] = 0;
-+ s->last_mv[0][0][0] = s->last_mv[0][0][1] = 0;
-+ s->last_mv[0][1][0] = s->last_mv[0][1][1] = 0;
-+ s->field_select[0][0]= s->picture_structure - 1;
-+ s->mb_skipped = 1;
-+ s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]= MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16;
-+ } else {
-+ int mb_type;
-+
-+ if(s->mb_x)
-+ mb_type= s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride - 1];
-+ else
-+ mb_type= s->current_picture.mb_type[ s->mb_width + (s->mb_y-1)*s->mb_stride - 1]; // FIXME not sure if this is allowed in mpeg at all,
-+ if(IS_INTRA(mb_type))
-+ return -1;
-+
-+ /* if B type, reuse previous vectors and directions */
-+ s->mv[0][0][0] = s->last_mv[0][0][0];
-+ s->mv[0][0][1] = s->last_mv[0][0][1];
-+ s->mv[1][0][0] = s->last_mv[1][0][0];
-+ s->mv[1][0][1] = s->last_mv[1][0][1];
-+
-+ s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]=
-+ mb_type | MB_TYPE_SKIP;
-+// assert(s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride - 1]&(MB_TYPE_16x16|MB_TYPE_16x8));
-+
-+ if((s->mv[0][0][0]|s->mv[0][0][1]|s->mv[1][0][0]|s->mv[1][0][1])==0)
-+ s->mb_skipped = 1;
-+ }
-+
-+ return 0;
-+ }
-+
-+ switch(s->pict_type) {
-+ default:
-+ case I_TYPE:
-+ if (get_bits1(&s->gb) == 0) {
-+ if (get_bits1(&s->gb) == 0){
-+ av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in I Frame at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ mb_type = MB_TYPE_QUANT | MB_TYPE_INTRA;
-+ } else {
-+ mb_type = MB_TYPE_INTRA;
-+ }
-+ break;
-+ case P_TYPE:
-+ mb_type = get_vlc2(&s->gb, mb_ptype_vlc.table, MB_PTYPE_VLC_BITS, 1);
-+ if (mb_type < 0){
-+ av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in P Frame at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ mb_type = ptype2mb_type[ mb_type ];
-+ break;
-+ case B_TYPE:
-+ mb_type = get_vlc2(&s->gb, mb_btype_vlc.table, MB_BTYPE_VLC_BITS, 1);
-+ if (mb_type < 0){
-+ av_log(s->avctx, AV_LOG_ERROR, "invalid mb type in B Frame at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ mb_type = btype2mb_type[ mb_type ];
-+ break;
-+ }
-+ dprintf("mb_type=%x\n", mb_type);
-+// motion_type = 0; /* avoid warning */
-+ if (IS_INTRA(mb_type)) {
-+ s->dsp.clear_blocks(s->block[0]);
-+
-+ if(!s->chroma_y_shift){
-+ s->dsp.clear_blocks(s->block[6]);
-+ }
-+
-+ /* compute dct type */
-+ if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-+ !s->frame_pred_frame_dct) {
-+ s->interlaced_dct = get_bits1(&s->gb);
-+ }
-+
-+ if (IS_QUANT(mb_type))
-+ s->qscale = get_qscale(s);
-+
-+ if (s->concealment_motion_vectors) {
-+ /* just parse them */
-+ if (s->picture_structure != PICT_FRAME)
-+ skip_bits1(&s->gb); /* field select */
-+
-+ s->mv[0][0][0]= s->last_mv[0][0][0]= s->last_mv[0][1][0] =
-+ mpeg_decode_motion(s, s->mpeg_f_code[0][0], s->last_mv[0][0][0]);
-+ s->mv[0][0][1]= s->last_mv[0][0][1]= s->last_mv[0][1][1] =
-+ mpeg_decode_motion(s, s->mpeg_f_code[0][1], s->last_mv[0][0][1]);
-+
-+ skip_bits1(&s->gb); /* marker */
-+ }else
-+ memset(s->last_mv, 0, sizeof(s->last_mv)); /* reset mv prediction */
-+ s->mb_intra = 1;
-+#ifdef HAVE_XVMC
-+ //one 1 we memcpy blocks in xvmcvideo
-+ if(s->avctx->xvmc_acceleration > 1){
-+ XVMC_pack_pblocks(s,-1);//inter are always full blocks
-+ if(s->swap_uv){
-+ exchange_uv(s);
-+ }
-+ }
-+#endif
-+
-+ if (s->codec_id == CODEC_ID_MPEG2VIDEO) {
-+ if(s->flags2 & CODEC_FLAG2_FAST){
-+ for(i=0;i<6;i++) {
-+ mpeg2_fast_decode_block_intra(s, s->pblocks[i], i);
-+ }
-+ }else{
-+ for(i=0;i<mb_block_count;i++) {
-+ if (mpeg2_decode_block_intra(s, s->pblocks[i], i) < 0)
-+ return -1;
-+ }
-+ }
-+ } else {
-+ for(i=0;i<6;i++) {
-+ if (mpeg1_decode_block_intra(s, s->pblocks[i], i) < 0)
-+ return -1;
-+ }
- }
--end:
-- LAST_SKIP_BITS(re, &s->gb, 2);
-- CLOSE_READER(re, &s->gb);
-- }
-- s->block_last_index[n] = i;
-- return 0;
--}
--
-+ } else {
-+ if (mb_type & MB_TYPE_ZERO_MV){
-+ assert(mb_type & MB_TYPE_CBP);
-
--static inline int mpeg2_decode_block_non_intra(MpegEncContext *s,
-- DCTELEM *block,
-- int n)
--{
-- int level, i, j, run;
-- RLTable *rl = &rl_mpeg1;
-- uint8_t * const scantable= s->intra_scantable.permutated;
-- const uint16_t *quant_matrix;
-- const int qscale= s->qscale;
-- int mismatch;
-+ /* compute dct type */
-+ if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-+ !s->frame_pred_frame_dct) {
-+ s->interlaced_dct = get_bits1(&s->gb);
-+ }
-
-- mismatch = 1;
-+ if (IS_QUANT(mb_type))
-+ s->qscale = get_qscale(s);
-
-- {
-- OPEN_READER(re, &s->gb);
-- i = -1;
-- if (n < 4)
-- quant_matrix = s->inter_matrix;
-- else
-- quant_matrix = s->chroma_inter_matrix;
-+ s->mv_dir = MV_DIR_FORWARD;
-+ if(s->picture_structure == PICT_FRAME)
-+ s->mv_type = MV_TYPE_16X16;
-+ else{
-+ s->mv_type = MV_TYPE_FIELD;
-+ mb_type |= MB_TYPE_INTERLACED;
-+ s->field_select[0][0]= s->picture_structure - 1;
-+ }
-+ s->last_mv[0][0][0] = 0;
-+ s->last_mv[0][0][1] = 0;
-+ s->last_mv[0][1][0] = 0;
-+ s->last_mv[0][1][1] = 0;
-+ s->mv[0][0][0] = 0;
-+ s->mv[0][0][1] = 0;
-+ }else{
-+ assert(mb_type & MB_TYPE_L0L1);
-+//FIXME decide if MBs in field pictures are MB_TYPE_INTERLACED
-+ /* get additionnal motion vector type */
-+ if (s->frame_pred_frame_dct)
-+ motion_type = MT_FRAME;
-+ else{
-+ motion_type = get_bits(&s->gb, 2);
-+ }
-
-- /* special case for the first coef. no need to add a second vlc table */
-- UPDATE_CACHE(re, &s->gb);
-- if (((int32_t)GET_CACHE(re, &s->gb)) < 0) {
-- level= (3*qscale*quant_matrix[0])>>5;
-- if(GET_CACHE(re, &s->gb)&0x40000000)
-- level= -level;
-- block[0] = level;
-- mismatch ^= level;
-- i++;
-- SKIP_BITS(re, &s->gb, 2);
-- if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-- goto end;
-- }
-+ /* compute dct type */
-+ if (s->picture_structure == PICT_FRAME && //FIXME add a interlaced_dct coded var?
-+ !s->frame_pred_frame_dct && HAS_CBP(mb_type)) {
-+ s->interlaced_dct = get_bits1(&s->gb);
-+ }
-
-- /* now quantify & encode AC coefs */
-- for(;;) {
-- GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-+ if (IS_QUANT(mb_type))
-+ s->qscale = get_qscale(s);
-
-- if(level != 0) {
-- i += run;
-- j = scantable[i];
-- level= ((level*2+1)*qscale*quant_matrix[j])>>5;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- SKIP_BITS(re, &s->gb, 1);
-- } else {
-- /* escape */
-- run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-- UPDATE_CACHE(re, &s->gb);
-- level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-+ /* motion vectors */
-+ s->mv_dir = 0;
-+ for(i=0;i<2;i++) {
-+ if (USES_LIST(mb_type, i)) {
-+ s->mv_dir |= (MV_DIR_FORWARD >> i);
-+ dprintf("motion_type=%d\n", motion_type);
-+ switch(motion_type) {
-+ case MT_FRAME: /* or MT_16X8 */
-+ if (s->picture_structure == PICT_FRAME) {
-+ /* MT_FRAME */
-+ mb_type |= MB_TYPE_16x16;
-+ s->mv_type = MV_TYPE_16X16;
-+ s->mv[i][0][0]= s->last_mv[i][0][0]= s->last_mv[i][1][0] =
-+ mpeg_decode_motion(s, s->mpeg_f_code[i][0], s->last_mv[i][0][0]);
-+ s->mv[i][0][1]= s->last_mv[i][0][1]= s->last_mv[i][1][1] =
-+ mpeg_decode_motion(s, s->mpeg_f_code[i][1], s->last_mv[i][0][1]);
-+ /* full_pel: only for mpeg1 */
-+ if (s->full_pel[i]){
-+ s->mv[i][0][0] <<= 1;
-+ s->mv[i][0][1] <<= 1;
-+ }
-+ } else {
-+ /* MT_16X8 */
-+ mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
-+ s->mv_type = MV_TYPE_16X8;
-+ for(j=0;j<2;j++) {
-+ s->field_select[i][j] = get_bits1(&s->gb);
-+ for(k=0;k<2;k++) {
-+ val = mpeg_decode_motion(s, s->mpeg_f_code[i][k],
-+ s->last_mv[i][j][k]);
-+ s->last_mv[i][j][k] = val;
-+ s->mv[i][j][k] = val;
-+ }
-+ }
-+ }
-+ break;
-+ case MT_FIELD:
-+ s->mv_type = MV_TYPE_FIELD;
-+ if (s->picture_structure == PICT_FRAME) {
-+ mb_type |= MB_TYPE_16x8 | MB_TYPE_INTERLACED;
-+ for(j=0;j<2;j++) {
-+ s->field_select[i][j] = get_bits1(&s->gb);
-+ val = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
-+ s->last_mv[i][j][0]);
-+ s->last_mv[i][j][0] = val;
-+ s->mv[i][j][0] = val;
-+ dprintf("fmx=%d\n", val);
-+ val = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
-+ s->last_mv[i][j][1] >> 1);
-+ s->last_mv[i][j][1] = val << 1;
-+ s->mv[i][j][1] = val;
-+ dprintf("fmy=%d\n", val);
-+ }
-+ } else {
-+ mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
-+ s->field_select[i][0] = get_bits1(&s->gb);
-+ for(k=0;k<2;k++) {
-+ val = mpeg_decode_motion(s, s->mpeg_f_code[i][k],
-+ s->last_mv[i][0][k]);
-+ s->last_mv[i][0][k] = val;
-+ s->last_mv[i][1][k] = val;
-+ s->mv[i][0][k] = val;
-+ }
-+ }
-+ break;
-+ case MT_DMV:
-+ {
-+ int dmx, dmy, mx, my, m;
-
-- i += run;
-- j = scantable[i];
-- if(level<0){
-- level= ((-level*2+1)*qscale*quant_matrix[j])>>5;
-- level= -level;
-- }else{
-- level= ((level*2+1)*qscale*quant_matrix[j])>>5;
-- }
-- }
-- if (i > 63){
-- av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
-+ mx = mpeg_decode_motion(s, s->mpeg_f_code[i][0],
-+ s->last_mv[i][0][0]);
-+ s->last_mv[i][0][0] = mx;
-+ s->last_mv[i][1][0] = mx;
-+ dmx = get_dmv(s);
-+ my = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
-+ s->last_mv[i][0][1] >> 1);
-+ dmy = get_dmv(s);
-+ s->mv_type = MV_TYPE_DMV;
-
-- mismatch ^= level;
-- block[j] = level;
-- if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-- break;
-- UPDATE_CACHE(re, &s->gb);
-- }
--end:
-- LAST_SKIP_BITS(re, &s->gb, 2);
-- CLOSE_READER(re, &s->gb);
-- }
-- block[63] ^= (mismatch & 1);
-
-- s->block_last_index[n] = i;
-- return 0;
--}
-+ s->last_mv[i][0][1] = my<<1;
-+ s->last_mv[i][1][1] = my<<1;
-
--static inline int mpeg2_fast_decode_block_non_intra(MpegEncContext *s,
-- DCTELEM *block,
-- int n)
--{
-- int level, i, j, run;
-- RLTable *rl = &rl_mpeg1;
-- uint8_t * const scantable= s->intra_scantable.permutated;
-- const int qscale= s->qscale;
-- OPEN_READER(re, &s->gb);
-- i = -1;
-+ s->mv[i][0][0] = mx;
-+ s->mv[i][0][1] = my;
-+ s->mv[i][1][0] = mx;//not used
-+ s->mv[i][1][1] = my;//not used
-
-- /* special case for the first coef. no need to add a second vlc table */
-- UPDATE_CACHE(re, &s->gb);
-- if (((int32_t)GET_CACHE(re, &s->gb)) < 0) {
-- level= (3*qscale)>>1;
-- if(GET_CACHE(re, &s->gb)&0x40000000)
-- level= -level;
-- block[0] = level;
-- i++;
-- SKIP_BITS(re, &s->gb, 2);
-- if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-- goto end;
-- }
-+ if (s->picture_structure == PICT_FRAME) {
-+ mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
-
-- /* now quantify & encode AC coefs */
-- for(;;) {
-- GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-+ //m = 1 + 2 * s->top_field_first;
-+ m = s->top_field_first ? 1 : 3;
-
-- if(level != 0) {
-- i += run;
-- j = scantable[i];
-- level= ((level*2+1)*qscale)>>1;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- SKIP_BITS(re, &s->gb, 1);
-- } else {
-- /* escape */
-- run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-- UPDATE_CACHE(re, &s->gb);
-- level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-+ /* top -> top pred */
-+ s->mv[i][2][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
-+ s->mv[i][2][1] = ((my * m + (my > 0)) >> 1) + dmy - 1;
-+ m = 4 - m;
-+ s->mv[i][3][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
-+ s->mv[i][3][1] = ((my * m + (my > 0)) >> 1) + dmy + 1;
-+ } else {
-+ mb_type |= MB_TYPE_16x16;
-
-- i += run;
-- j = scantable[i];
-- if(level<0){
-- level= ((-level*2+1)*qscale)>>1;
-- level= -level;
-- }else{
-- level= ((level*2+1)*qscale)>>1;
-+ s->mv[i][2][0] = ((mx + (mx > 0)) >> 1) + dmx;
-+ s->mv[i][2][1] = ((my + (my > 0)) >> 1) + dmy;
-+ if(s->picture_structure == PICT_TOP_FIELD)
-+ s->mv[i][2][1]--;
-+ else
-+ s->mv[i][2][1]++;
-+ }
-+ }
-+ break;
-+ default:
-+ av_log(s->avctx, AV_LOG_ERROR, "00 motion_type at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ }
- }
- }
-
-- block[j] = level;
-- if(((int32_t)GET_CACHE(re, &s->gb)) <= (int32_t)0xBFFFFFFF)
-- break;
-- UPDATE_CACHE(re, &s->gb);
-- }
--end:
-- LAST_SKIP_BITS(re, &s->gb, 2);
-- CLOSE_READER(re, &s->gb);
-- s->block_last_index[n] = i;
-- return 0;
--}
-+ s->mb_intra = 0;
-+ if (HAS_CBP(mb_type)) {
-+ s->dsp.clear_blocks(s->block[0]);
-
-+ if(!s->chroma_y_shift){
-+ s->dsp.clear_blocks(s->block[6]);
-+ }
-
--static inline int mpeg2_decode_block_intra(MpegEncContext *s,
-- DCTELEM *block,
-- int n)
--{
-- int level, dc, diff, i, j, run;
-- int component;
-- RLTable *rl;
-- uint8_t * const scantable= s->intra_scantable.permutated;
-- const uint16_t *quant_matrix;
-- const int qscale= s->qscale;
-- int mismatch;
-+ cbp = get_vlc2(&s->gb, mb_pat_vlc.table, MB_PAT_VLC_BITS, 1);
-+ if (cbp < 0 || ((cbp == 0) && (s->chroma_format < 2)) ){
-+ av_log(s->avctx, AV_LOG_ERROR, "invalid cbp at %d %d\n", s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ if(mb_block_count > 6){
-+ cbp<<= mb_block_count-6;
-+ cbp |= get_bits(&s->gb, mb_block_count-6);
-+ }
-
-- /* DC coef */
-- if (n < 4){
-- quant_matrix = s->intra_matrix;
-- component = 0;
-- }else{
-- quant_matrix = s->chroma_intra_matrix;
-- component = (n&1) + 1;
-- }
-- diff = decode_dc(&s->gb, component);
-- if (diff >= 0xffff)
-- return -1;
-- dc = s->last_dc[component];
-- dc += diff;
-- s->last_dc[component] = dc;
-- block[0] = dc << (3 - s->intra_dc_precision);
-- dprintf("dc=%d\n", block[0]);
-- mismatch = block[0] ^ 1;
-- i = 0;
-- if (s->intra_vlc_format)
-- rl = &rl_mpeg2;
-- else
-- rl = &rl_mpeg1;
-+#ifdef HAVE_XVMC
-+ //on 1 we memcpy blocks in xvmcvideo
-+ if(s->avctx->xvmc_acceleration > 1){
-+ XVMC_pack_pblocks(s,cbp);
-+ if(s->swap_uv){
-+ exchange_uv(s);
-+ }
-+ }
-+#endif
-
-- {
-- OPEN_READER(re, &s->gb);
-- /* now quantify & encode AC coefs */
-- for(;;) {
-- UPDATE_CACHE(re, &s->gb);
-- GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
-+ if (s->codec_id == CODEC_ID_MPEG2VIDEO) {
-+ if(s->flags2 & CODEC_FLAG2_FAST){
-+ for(i=0;i<6;i++) {
-+ if(cbp & 32) {
-+ mpeg2_fast_decode_block_non_intra(s, s->pblocks[i], i);
-+ } else {
-+ s->block_last_index[i] = -1;
-+ }
-+ cbp+=cbp;
-+ }
-+ }else{
-+ cbp<<= 12-mb_block_count;
-
-- if(level == 127){
-- break;
-- } else if(level != 0) {
-- i += run;
-- j = scantable[i];
-- level= (level*qscale*quant_matrix[j])>>4;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-+ for(i=0;i<mb_block_count;i++) {
-+ if ( cbp & (1<<11) ) {
-+ if (mpeg2_decode_block_non_intra(s, s->pblocks[i], i) < 0)
-+ return -1;
-+ } else {
-+ s->block_last_index[i] = -1;
-+ }
-+ cbp+=cbp;
-+ }
-+ }
- } else {
-- /* escape */
-- run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-- UPDATE_CACHE(re, &s->gb);
-- level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-- i += run;
-- j = scantable[i];
-- if(level<0){
-- level= (-level*qscale*quant_matrix[j])>>4;
-- level= -level;
-+ if(s->flags2 & CODEC_FLAG2_FAST){
-+ for(i=0;i<6;i++) {
-+ if (cbp & 32) {
-+ mpeg1_fast_decode_block_inter(s, s->pblocks[i], i);
-+ } else {
-+ s->block_last_index[i] = -1;
-+ }
-+ cbp+=cbp;
-+ }
- }else{
-- level= (level*qscale*quant_matrix[j])>>4;
-+ for(i=0;i<6;i++) {
-+ if (cbp & 32) {
-+ if (mpeg1_decode_block_inter(s, s->pblocks[i], i) < 0)
-+ return -1;
-+ } else {
-+ s->block_last_index[i] = -1;
-+ }
-+ cbp+=cbp;
-+ }
- }
- }
-- if (i > 63){
-- av_log(s->avctx, AV_LOG_ERROR, "ac-tex damaged at %d %d\n", s->mb_x, s->mb_y);
-- return -1;
-- }
--
-- mismatch^= level;
-- block[j] = level;
-+ }else{
-+ for(i=0;i<12;i++)
-+ s->block_last_index[i] = -1;
- }
-- CLOSE_READER(re, &s->gb);
- }
-- block[63]^= mismatch&1;
-
-- s->block_last_index[n] = i;
-+ s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]= mb_type;
-+
- return 0;
- }
-
--static inline int mpeg2_fast_decode_block_intra(MpegEncContext *s,
-- DCTELEM *block,
-- int n)
-+/* as h263, but only 17 codes */
-+static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred)
- {
-- int level, dc, diff, j, run;
-- int component;
-- RLTable *rl;
-- uint8_t * scantable= s->intra_scantable.permutated;
-- const uint16_t *quant_matrix;
-- const int qscale= s->qscale;
-+ int code, sign, val, l, shift;
-
-- /* DC coef */
-- if (n < 4){
-- quant_matrix = s->intra_matrix;
-- component = 0;
-- }else{
-- quant_matrix = s->chroma_intra_matrix;
-- component = (n&1) + 1;
-+ code = get_vlc2(&s->gb, mv_vlc.table, MV_VLC_BITS, 2);
-+ if (code == 0) {
-+ return pred;
-+ }
-+ if (code < 0) {
-+ return 0xffff;
- }
-- diff = decode_dc(&s->gb, component);
-- if (diff >= 0xffff)
-- return -1;
-- dc = s->last_dc[component];
-- dc += diff;
-- s->last_dc[component] = dc;
-- block[0] = dc << (3 - s->intra_dc_precision);
-- if (s->intra_vlc_format)
-- rl = &rl_mpeg2;
-- else
-- rl = &rl_mpeg1;
--
-- {
-- OPEN_READER(re, &s->gb);
-- /* now quantify & encode AC coefs */
-- for(;;) {
-- UPDATE_CACHE(re, &s->gb);
-- GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0);
--
-- if(level == 127){
-- break;
-- } else if(level != 0) {
-- scantable += run;
-- j = *scantable;
-- level= (level*qscale*quant_matrix[j])>>4;
-- level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
-- LAST_SKIP_BITS(re, &s->gb, 1);
-- } else {
-- /* escape */
-- run = SHOW_UBITS(re, &s->gb, 6)+1; LAST_SKIP_BITS(re, &s->gb, 6);
-- UPDATE_CACHE(re, &s->gb);
-- level = SHOW_SBITS(re, &s->gb, 12); SKIP_BITS(re, &s->gb, 12);
-- scantable += run;
-- j = *scantable;
-- if(level<0){
-- level= (-level*qscale*quant_matrix[j])>>4;
-- level= -level;
-- }else{
-- level= (level*qscale*quant_matrix[j])>>4;
-- }
-- }
-
-- block[j] = level;
-- }
-- CLOSE_READER(re, &s->gb);
-+ sign = get_bits1(&s->gb);
-+ shift = fcode - 1;
-+ val = code;
-+ if (shift) {
-+ val = (val - 1) << shift;
-+ val |= get_bits(&s->gb, shift);
-+ val++;
- }
-+ if (sign)
-+ val = -val;
-+ val += pred;
-
-- s->block_last_index[n] = scantable - s->intra_scantable.permutated;
-- return 0;
-+ /* modulo decoding */
-+ l= INT_BIT - 5 - shift;
-+ val = (val<<l)>>l;
-+ return val;
- }
-
-+
-+
- typedef struct Mpeg1Context {
- MpegEncContext mpeg_enc_ctx;
- int mpeg_enc_ctx_allocated; /* true if decoding context allocated */
diff --git a/multimedia/xine-lib/patches/patch-dc b/multimedia/xine-lib/patches/patch-dc
deleted file mode 100644
index 7663dc31c3b..00000000000
--- a/multimedia/xine-lib/patches/patch-dc
+++ /dev/null
@@ -1,372 +0,0 @@
-$NetBSD: patch-dc,v 1.2 2006/12/08 09:24:26 abs Exp $
-
-Move some inlined functions to a place before they are used,
-otherwise GCC barfs when -fno-unit-a-time is active.
-
---- src/libffmpeg/libavcodec/msmpeg4.c.orig 2006-08-02 08:02:40.000000000 +0100
-+++ src/libffmpeg/libavcodec/msmpeg4.c
-@@ -1408,181 +1408,6 @@ static int msmpeg4v2_decode_motion(MpegE
- return val;
- }
-
--static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
--{
-- int cbp, code, i;
--
-- if (s->pict_type == P_TYPE) {
-- if (s->use_skip_mb_code) {
-- if (get_bits1(&s->gb)) {
-- /* skip mb */
-- s->mb_intra = 0;
-- for(i=0;i<6;i++)
-- s->block_last_index[i] = -1;
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv_type = MV_TYPE_16X16;
-- s->mv[0][0][0] = 0;
-- s->mv[0][0][1] = 0;
-- s->mb_skipped = 1;
-- return 0;
-- }
-- }
--
-- if(s->msmpeg4_version==2)
-- code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1);
-- else
-- code = get_vlc2(&s->gb, v1_inter_cbpc_vlc.table, V1_INTER_CBPC_VLC_BITS, 3);
-- if(code<0 || code>7){
-- av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code, s->mb_x, s->mb_y);
-- return -1;
-- }
--
-- s->mb_intra = code >>2;
--
-- cbp = code & 0x3;
-- } else {
-- s->mb_intra = 1;
-- if(s->msmpeg4_version==2)
-- cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1);
-- else
-- cbp= get_vlc2(&s->gb, v1_intra_cbpc_vlc.table, V1_INTRA_CBPC_VLC_BITS, 1);
-- if(cbp<0 || cbp>3){
-- av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y);
-- return -1;
-- }
-- }
--
-- if (!s->mb_intra) {
-- int mx, my, cbpy;
--
-- cbpy= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
-- if(cbpy<0){
-- av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y);
-- return -1;
-- }
--
-- cbp|= cbpy<<2;
-- if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C;
--
-- h263_pred_motion(s, 0, 0, &mx, &my);
-- mx= msmpeg4v2_decode_motion(s, mx, 1);
-- my= msmpeg4v2_decode_motion(s, my, 1);
--
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv_type = MV_TYPE_16X16;
-- s->mv[0][0][0] = mx;
-- s->mv[0][0][1] = my;
-- } else {
-- if(s->msmpeg4_version==2){
-- s->ac_pred = get_bits1(&s->gb);
-- cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors
-- } else{
-- s->ac_pred = 0;
-- cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors
-- if(s->pict_type==P_TYPE) cbp^=0x3C;
-- }
-- }
--
-- s->dsp.clear_blocks(s->block[0]);
-- for (i = 0; i < 6; i++) {
-- if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0)
-- {
-- av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i);
-- return -1;
-- }
-- }
-- return 0;
--}
--
--static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
--{
-- int cbp, code, i;
-- uint8_t *coded_val;
-- uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ];
--
-- if (s->pict_type == P_TYPE) {
-- if (s->use_skip_mb_code) {
-- if (get_bits1(&s->gb)) {
-- /* skip mb */
-- s->mb_intra = 0;
-- for(i=0;i<6;i++)
-- s->block_last_index[i] = -1;
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv_type = MV_TYPE_16X16;
-- s->mv[0][0][0] = 0;
-- s->mv[0][0][1] = 0;
-- s->mb_skipped = 1;
-- *mb_type_ptr = MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16;
--
-- return 0;
-- }
-- }
--
-- code = get_vlc2(&s->gb, mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3);
-- if (code < 0)
-- return -1;
-- //s->mb_intra = (code & 0x40) ? 0 : 1;
-- s->mb_intra = (~code & 0x40) >> 6;
--
-- cbp = code & 0x3f;
-- } else {
-- s->mb_intra = 1;
-- code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2);
-- if (code < 0)
-- return -1;
-- /* predict coded block pattern */
-- cbp = 0;
-- for(i=0;i<6;i++) {
-- int val = ((code >> (5 - i)) & 1);
-- if (i < 4) {
-- int pred = coded_block_pred(s, i, &coded_val);
-- val = val ^ pred;
-- *coded_val = val;
-- }
-- cbp |= val << (5 - i);
-- }
-- }
--
-- if (!s->mb_intra) {
-- int mx, my;
--//printf("P at %d %d\n", s->mb_x, s->mb_y);
-- if(s->per_mb_rl_table && cbp){
-- s->rl_table_index = decode012(&s->gb);
-- s->rl_chroma_table_index = s->rl_table_index;
-- }
-- h263_pred_motion(s, 0, 0, &mx, &my);
-- if (msmpeg4_decode_motion(s, &mx, &my) < 0)
-- return -1;
-- s->mv_dir = MV_DIR_FORWARD;
-- s->mv_type = MV_TYPE_16X16;
-- s->mv[0][0][0] = mx;
-- s->mv[0][0][1] = my;
-- *mb_type_ptr = MB_TYPE_L0 | MB_TYPE_16x16;
-- } else {
--//printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24));
-- s->ac_pred = get_bits1(&s->gb);
-- *mb_type_ptr = MB_TYPE_INTRA;
-- if(s->inter_intra_pred){
-- s->h263_aic_dir= get_vlc2(&s->gb, inter_intra_vlc.table, INTER_INTRA_VLC_BITS, 1);
--// printf("%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y);
-- }
-- if(s->per_mb_rl_table && cbp){
-- s->rl_table_index = decode012(&s->gb);
-- s->rl_chroma_table_index = s->rl_table_index;
-- }
-- }
--
-- s->dsp.clear_blocks(s->block[0]);
-- for (i = 0; i < 6; i++) {
-- if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0)
-- {
-- av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i);
-- return -1;
-- }
-- }
--
-- return 0;
--}
- //#define ERROR_DETAILS
- static inline int msmpeg4_decode_block(MpegEncContext * s, DCTELEM * block,
- int n, int coded, const uint8_t *scan_table)
-@@ -1831,6 +1656,182 @@ static inline int msmpeg4_decode_block(M
- return 0;
- }
-
-+static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
-+{
-+ int cbp, code, i;
-+
-+ if (s->pict_type == P_TYPE) {
-+ if (s->use_skip_mb_code) {
-+ if (get_bits1(&s->gb)) {
-+ /* skip mb */
-+ s->mb_intra = 0;
-+ for(i=0;i<6;i++)
-+ s->block_last_index[i] = -1;
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv_type = MV_TYPE_16X16;
-+ s->mv[0][0][0] = 0;
-+ s->mv[0][0][1] = 0;
-+ s->mb_skipped = 1;
-+ return 0;
-+ }
-+ }
-+
-+ if(s->msmpeg4_version==2)
-+ code = get_vlc2(&s->gb, v2_mb_type_vlc.table, V2_MB_TYPE_VLC_BITS, 1);
-+ else
-+ code = get_vlc2(&s->gb, v1_inter_cbpc_vlc.table, V1_INTER_CBPC_VLC_BITS, 3);
-+ if(code<0 || code>7){
-+ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", code, s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+
-+ s->mb_intra = code >>2;
-+
-+ cbp = code & 0x3;
-+ } else {
-+ s->mb_intra = 1;
-+ if(s->msmpeg4_version==2)
-+ cbp= get_vlc2(&s->gb, v2_intra_cbpc_vlc.table, V2_INTRA_CBPC_VLC_BITS, 1);
-+ else
-+ cbp= get_vlc2(&s->gb, v1_intra_cbpc_vlc.table, V1_INTRA_CBPC_VLC_BITS, 1);
-+ if(cbp<0 || cbp>3){
-+ av_log(s->avctx, AV_LOG_ERROR, "cbpc %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+ }
-+
-+ if (!s->mb_intra) {
-+ int mx, my, cbpy;
-+
-+ cbpy= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
-+ if(cbpy<0){
-+ av_log(s->avctx, AV_LOG_ERROR, "cbpy %d invalid at %d %d\n", cbp, s->mb_x, s->mb_y);
-+ return -1;
-+ }
-+
-+ cbp|= cbpy<<2;
-+ if(s->msmpeg4_version==1 || (cbp&3) != 3) cbp^= 0x3C;
-+
-+ h263_pred_motion(s, 0, 0, &mx, &my);
-+ mx= msmpeg4v2_decode_motion(s, mx, 1);
-+ my= msmpeg4v2_decode_motion(s, my, 1);
-+
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv_type = MV_TYPE_16X16;
-+ s->mv[0][0][0] = mx;
-+ s->mv[0][0][1] = my;
-+ } else {
-+ if(s->msmpeg4_version==2){
-+ s->ac_pred = get_bits1(&s->gb);
-+ cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors
-+ } else{
-+ s->ac_pred = 0;
-+ cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors
-+ if(s->pict_type==P_TYPE) cbp^=0x3C;
-+ }
-+ }
-+
-+ s->dsp.clear_blocks(s->block[0]);
-+ for (i = 0; i < 6; i++) {
-+ if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0)
-+ {
-+ av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i);
-+ return -1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int msmpeg4v34_decode_mb(MpegEncContext *s, DCTELEM block[6][64])
-+{
-+ int cbp, code, i;
-+ uint8_t *coded_val;
-+ uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ];
-+
-+ if (s->pict_type == P_TYPE) {
-+ if (s->use_skip_mb_code) {
-+ if (get_bits1(&s->gb)) {
-+ /* skip mb */
-+ s->mb_intra = 0;
-+ for(i=0;i<6;i++)
-+ s->block_last_index[i] = -1;
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv_type = MV_TYPE_16X16;
-+ s->mv[0][0][0] = 0;
-+ s->mv[0][0][1] = 0;
-+ s->mb_skipped = 1;
-+ *mb_type_ptr = MB_TYPE_SKIP | MB_TYPE_L0 | MB_TYPE_16x16;
-+
-+ return 0;
-+ }
-+ }
-+
-+ code = get_vlc2(&s->gb, mb_non_intra_vlc[DEFAULT_INTER_INDEX].table, MB_NON_INTRA_VLC_BITS, 3);
-+ if (code < 0)
-+ return -1;
-+ //s->mb_intra = (code & 0x40) ? 0 : 1;
-+ s->mb_intra = (~code & 0x40) >> 6;
-+
-+ cbp = code & 0x3f;
-+ } else {
-+ s->mb_intra = 1;
-+ code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2);
-+ if (code < 0)
-+ return -1;
-+ /* predict coded block pattern */
-+ cbp = 0;
-+ for(i=0;i<6;i++) {
-+ int val = ((code >> (5 - i)) & 1);
-+ if (i < 4) {
-+ int pred = coded_block_pred(s, i, &coded_val);
-+ val = val ^ pred;
-+ *coded_val = val;
-+ }
-+ cbp |= val << (5 - i);
-+ }
-+ }
-+
-+ if (!s->mb_intra) {
-+ int mx, my;
-+//printf("P at %d %d\n", s->mb_x, s->mb_y);
-+ if(s->per_mb_rl_table && cbp){
-+ s->rl_table_index = decode012(&s->gb);
-+ s->rl_chroma_table_index = s->rl_table_index;
-+ }
-+ h263_pred_motion(s, 0, 0, &mx, &my);
-+ if (msmpeg4_decode_motion(s, &mx, &my) < 0)
-+ return -1;
-+ s->mv_dir = MV_DIR_FORWARD;
-+ s->mv_type = MV_TYPE_16X16;
-+ s->mv[0][0][0] = mx;
-+ s->mv[0][0][1] = my;
-+ *mb_type_ptr = MB_TYPE_L0 | MB_TYPE_16x16;
-+ } else {
-+//printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24));
-+ s->ac_pred = get_bits1(&s->gb);
-+ *mb_type_ptr = MB_TYPE_INTRA;
-+ if(s->inter_intra_pred){
-+ s->h263_aic_dir= get_vlc2(&s->gb, inter_intra_vlc.table, INTER_INTRA_VLC_BITS, 1);
-+// printf("%d%d %d %d/", s->ac_pred, s->h263_aic_dir, s->mb_x, s->mb_y);
-+ }
-+ if(s->per_mb_rl_table && cbp){
-+ s->rl_table_index = decode012(&s->gb);
-+ s->rl_chroma_table_index = s->rl_table_index;
-+ }
-+ }
-+
-+ s->dsp.clear_blocks(s->block[0]);
-+ for (i = 0; i < 6; i++) {
-+ if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0)
-+ {
-+ av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding block: %d x %d (%d)\n", s->mb_x, s->mb_y, i);
-+ return -1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
- static int msmpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr)
- {
- int level, pred;
diff --git a/multimedia/xine-lib/patches/patch-include_Makefile.am b/multimedia/xine-lib/patches/patch-include_Makefile.am
deleted file mode 100644
index c5ef219a56f..00000000000
--- a/multimedia/xine-lib/patches/patch-include_Makefile.am
+++ /dev/null
@@ -1,14 +0,0 @@
-$NetBSD: patch-include_Makefile.am,v 1.1 2011/12/25 03:24:10 sbd Exp $
-
---- include/Makefile.am.orig 2010-03-09 22:17:04.000000000 +0000
-+++ include/Makefile.am
-@@ -26,7 +26,8 @@ maintainer-clean-generic:
- -rm -f Makefile.in configure.h.in
-
- install-data-local: install-includeHEADERS
-- sed -e '/^\/\*_x_/d' xine.h > $(DESTDIR)$(includedir)/xine.h
-+ sed -e '/^\/\*_x_/d' xine.h > installed-xine.h
-+ $(INSTALL_HEADER) installed-xine.h $(DESTDIR)$(includedir)/xine.h
- if GENERATED_INTTYPES_H
- $(INSTALL) inttypes.h $(DESTDIR)$(includedir)
- endif
diff --git a/multimedia/xine-lib/patches/patch-input_dvb.c b/multimedia/xine-lib/patches/patch-input_dvb.c
index fe870f71e27..004bdb6f91d 100644
--- a/multimedia/xine-lib/patches/patch-input_dvb.c
+++ b/multimedia/xine-lib/patches/patch-input_dvb.c
@@ -1,17 +1,16 @@
-$NetBSD: patch-input_dvb.c,v 1.1 2011/07/10 16:52:25 jmcneill Exp $
+$NetBSD: patch-input_dvb.c,v 1.2 2012/03/21 16:37:15 drochner Exp $
---- src/input/input_dvb.c.orig 2010-07-24 22:09:09.000000000 +0000
+--- src/input/input_dvb.c.orig 2012-02-04 00:41:43.000000000 +0000
+++ src/input/input_dvb.c
-@@ -97,9 +97,13 @@
- #endif
- #include <ctype.h>
+@@ -109,8 +109,12 @@
+ /* XDG */
+ #include <basedir.h>
+#ifdef HAVE_DEV_DTV_DTVIO_H
+#include <dev/dtv/dtvio.h>
+#else
- /* These will eventually be #include <linux/dvb/...> */
- #include "dvb/dmx.h"
- #include "dvb/frontend.h"
+ #include <linux/dvb/dmx.h>
+ #include <linux/dvb/frontend.h>
+#endif
#define LOG_MODULE "input_dvb"
diff --git a/multimedia/xine-lib/patches/patch-na b/multimedia/xine-lib/patches/patch-na
new file mode 100644
index 00000000000..e03be623223
--- /dev/null
+++ b/multimedia/xine-lib/patches/patch-na
@@ -0,0 +1,36 @@
+$NetBSD: patch-na,v 1.1 2012/03/21 16:37:15 drochner Exp $
+
+--- m4/audio_out.m4.orig 2012-02-05 12:50:15.000000000 +0000
++++ m4/audio_out.m4
+@@ -151,9 +151,22 @@ AC_DEFUN([XINE_AUDIO_OUT_PLUGINS], [
+ dnl OSS (Open Sound System)
+ XINE_ARG_ENABLE([oss], [Enable OSS (Open Sound System) support])
+ if test x"$enable_oss" != x"no"; then
++
++ case "$host" in
++ *-*-netbsd*|*-*-openbsd*)
++ OSS_LIBS="-lossaudio"
++ ;;
++ *)
++ OSS_LIBS=""
++ ;;
++ esac
++
+ AC_CHECK_HEADERS([sys/soundcard.h machine/soundcard.h soundcard.h], [break])
+ AC_CHECK_DECL([SNDCTL_DSP_SETFRAGMENT], [have_oss=yes], [have_oss=no],
+- [#ifdef HAVE_SYS_SOUNDCARD_H
++ [#ifdef __NetBSD__
++ #include <sys/ioctl.h>
++ #endif
++ #ifdef HAVE_SYS_SOUNDCARD_H
+ # include <sys/soundcard.h>
+ #endif
+ #ifdef HAVE_MACHINE_SOUNDCARD_H
+@@ -167,6 +180,7 @@ AC_DEFUN([XINE_AUDIO_OUT_PLUGINS], [
+ fi
+ fi
+ AM_CONDITIONAL([ENABLE_OSS], [test x"$have_oss" = x"yes"])
++ AC_SUBST(OSS_LIBS)
+
+
+ dnl PulseAudio
diff --git a/multimedia/xine-lib/patches/patch-src-xine-engine-post.h b/multimedia/xine-lib/patches/patch-src-xine-engine-post.h
index d34bd19eb4d..77a42c3b38b 100644
--- a/multimedia/xine-lib/patches/patch-src-xine-engine-post.h
+++ b/multimedia/xine-lib/patches/patch-src-xine-engine-post.h
@@ -1,7 +1,7 @@
-$NetBSD: patch-src-xine-engine-post.h,v 1.1 2011/09/04 14:34:52 joerg Exp $
+$NetBSD: patch-src-xine-engine-post.h,v 1.2 2012/03/21 16:37:15 drochner Exp $
---- src/xine-engine/post.h.orig 2010-03-09 22:17:05.000000000 +0000
-+++ src/xine-engine/post.h
+--- include/xine/post.h.orig 2010-03-09 22:17:05.000000000 +0000
++++ include/xine/post.h
@@ -370,14 +370,15 @@ do {
diff --git a/multimedia/xine-lib/patches/patch-src_audio__out_Makefile.am b/multimedia/xine-lib/patches/patch-src_audio__out_Makefile.am
index 387a9c773d8..c5f52778542 100644
--- a/multimedia/xine-lib/patches/patch-src_audio__out_Makefile.am
+++ b/multimedia/xine-lib/patches/patch-src_audio__out_Makefile.am
@@ -1,13 +1,13 @@
-$NetBSD: patch-src_audio__out_Makefile.am,v 1.1 2011/12/25 03:24:10 sbd Exp $
+$NetBSD: patch-src_audio__out_Makefile.am,v 1.2 2012/03/21 16:37:15 drochner Exp $
---- src/audio_out/Makefile.am.orig 2011-12-25 03:03:07.490662740 +0000
+--- src/audio_out/Makefile.am.orig 2012-02-04 00:41:43.000000000 +0000
+++ src/audio_out/Makefile.am
-@@ -84,7 +84,7 @@ xineplug_ao_out_file_la_LIBADD = $(XINE_
- xineplug_ao_out_file_la_CFLAGS = $(VISIBILITY_FLAG)
+@@ -81,7 +81,7 @@ xineplug_ao_out_file_la_SOURCES = audio_
+ xineplug_ao_out_file_la_LIBADD = $(XINE_LIB) $(LTLIBINTL)
xineplug_ao_out_oss_la_SOURCES = audio_oss_out.c
-xineplug_ao_out_oss_la_LIBADD = $(XINE_LIB) $(LTLIBINTL)
+xineplug_ao_out_oss_la_LIBADD = $(XINE_LIB) $(LTLIBINTL) $(OSS_LIBS)
- xineplug_ao_out_oss_la_CFLAGS = $(VISIBILITY_FLAG)
xineplug_ao_out_alsa_la_SOURCES = audio_alsa_out.c
+ xineplug_ao_out_alsa_la_LIBADD = $(XINE_LIB) $(ALSA_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
diff --git a/multimedia/xine-lib/patches/patch-src_libw32dll_wine_Makefile.am b/multimedia/xine-lib/patches/patch-src_libw32dll_wine_Makefile.am
index fdcf58cc8a5..76f4ff4d9db 100644
--- a/multimedia/xine-lib/patches/patch-src_libw32dll_wine_Makefile.am
+++ b/multimedia/xine-lib/patches/patch-src_libw32dll_wine_Makefile.am
@@ -1,10 +1,10 @@
-$NetBSD: patch-src_libw32dll_wine_Makefile.am,v 1.1 2011/12/25 03:24:10 sbd Exp $
+$NetBSD: patch-src_libw32dll_wine_Makefile.am,v 1.2 2012/03/21 16:37:15 drochner Exp $
---- src/libw32dll/wine/Makefile.am.orig 2011-12-25 02:59:19.234745775 +0000
+--- src/libw32dll/wine/Makefile.am.orig 2012-02-04 00:41:43.000000000 +0000
+++ src/libw32dll/wine/Makefile.am
-@@ -21,6 +21,8 @@ if HAVE_W32DLL
- wine_lib = libwine.la
- endif
+@@ -51,6 +51,8 @@ noinst_HEADERS = \
+
+ noinst_LTLIBRARIES = libwine.la
+libwine_la_LIBADD = ${WINE_LIBS}
+