From 8e8240ea329be65acd421edcee8940d89b5c60e2 Mon Sep 17 00:00:00 2001 From: drochner Date: Wed, 21 Mar 2012 16:37:15 +0000 Subject: update to 1.2.1 changes: -Rewrite of VDPAU OSD handling -sndio plugin is now buildable -Various bug fixes --- multimedia/xine-lib/Makefile | 4 +- multimedia/xine-lib/Makefile.common | 8 +- multimedia/xine-lib/PLIST.common | 160 +- multimedia/xine-lib/buildlink3.mk | 4 +- multimedia/xine-lib/distinfo | 29 +- multimedia/xine-lib/patches/patch-ag | 94 +- multimedia/xine-lib/patches/patch-ap | 15 +- multimedia/xine-lib/patches/patch-at | 13 + multimedia/xine-lib/patches/patch-au | 13 + multimedia/xine-lib/patches/patch-cd | 6 +- multimedia/xine-lib/patches/patch-da | 848 ----------- multimedia/xine-lib/patches/patch-db | 1566 -------------------- multimedia/xine-lib/patches/patch-dc | 372 ----- .../xine-lib/patches/patch-include_Makefile.am | 14 - multimedia/xine-lib/patches/patch-input_dvb.c | 15 +- multimedia/xine-lib/patches/patch-na | 36 + .../xine-lib/patches/patch-src-xine-engine-post.h | 6 +- .../patches/patch-src_audio__out_Makefile.am | 10 +- .../patches/patch-src_libw32dll_wine_Makefile.am | 10 +- 19 files changed, 205 insertions(+), 3018 deletions(-) create mode 100644 multimedia/xine-lib/patches/patch-at create mode 100644 multimedia/xine-lib/patches/patch-au delete mode 100644 multimedia/xine-lib/patches/patch-da delete mode 100644 multimedia/xine-lib/patches/patch-db delete mode 100644 multimedia/xine-lib/patches/patch-dc delete mode 100644 multimedia/xine-lib/patches/patch-include_Makefile.am create mode 100644 multimedia/xine-lib/patches/patch-na (limited to 'multimedia/xine-lib') 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 -+ #endif - #ifdef HAVE_SYS_SOUNDCARD_H - # include - #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 + #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]<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]<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;ipblocks[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;ipblocks[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; -- 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;ipblocks[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;ipblocks[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; -+ 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 +@@ -109,8 +109,12 @@ + /* XDG */ + #include +#ifdef HAVE_DEV_DTV_DTVIO_H +#include +#else - /* These will eventually be #include */ - #include "dvb/dmx.h" - #include "dvb/frontend.h" + #include + #include +#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 ++ #endif ++ #ifdef HAVE_SYS_SOUNDCARD_H + # include + #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} + -- cgit v1.2.3