diff -u vlc-1.0.1/debian/rules vlc-1.0.1/debian/rules --- vlc-1.0.1/debian/rules +++ vlc-1.0.1/debian/rules @@ -91,6 +91,9 @@ --enable-dca \ --enable-realrtsp \ --disable-dv \ + --disable-fluidsynth \ + --disable-kate \ + --disable-mtp \ $(NULL) @@ -164,7 +167,7 @@ dh_testdir dh_testroot dh_prep - sed -e '/\(lib\|libaccess_\)\(alsa\|dvb\|v4l\|pvr\)_/d' \ + sed -e '/\(lib\|libaccess_\)\(alsa\|dvb\|v4l\|v4l2\|pvr\)_/d' \ debian/vlc-nox.install > debian/vlc-nox.install.kfreebsd-i386 cp debian/vlc-nox.install.kfreebsd-i386 \ debian/vlc-nox.install.kfreebsd-amd64 diff -u vlc-1.0.1/debian/control vlc-1.0.1/debian/control --- vlc-1.0.1/debian/control +++ vlc-1.0.1/debian/control @@ -14,7 +14,6 @@ quilt, nasm, yasm [amd64 kfreebsd-amd64], - libass-dev, xulrunner-dev, liba52-0.7.4-dev, libaa1-dev, @@ -82,9 +81,8 @@ libxt-dev, libxv-dev, pkg-config, - qt4-dev-tools, zlib1g-dev -Standards-Version: 3.8.2 +Standards-Version: 3.8.3 Homepage: http://www.videolan.org/vlc Vcs-Git: git://git.debian.org/git/pkg-multimedia/vlc.git Vcs-Browser: http://git.debian.org/?p=pkg-multimedia/vlc.git;a=shortlog;h=refs/heads/karmic @@ -95,6 +93,7 @@ ${shlibs:Depends}, ${misc:Depends}, ttf-dejavu-core +Recommeds: vlc-plugin-pulse (= ${binary:Version}) Suggests: mozilla-plugin-vlc, videolan-doc Replaces: vlc-nox (<< 0.9.2-1) reverted: --- vlc-1.0.1/debian/vlc-nox.install.kfreebsd-i386 +++ vlc-1.0.1.orig/debian/vlc-nox.install.kfreebsd-i386 @@ -1,137 +0,0 @@ -usr/bin/cvlc -usr/bin/nvlc -usr/bin/rvlc -usr/bin/vlc -usr/bin/vlc-wrapper -usr/lib/vlc/access/libaccess_bd_plugin.so -usr/lib/vlc/access/libaccess_directory_plugin.so -usr/lib/vlc/access/libaccess_fake_plugin.so -usr/lib/vlc/access/libaccess_file_plugin.so -usr/lib/vlc/access/libaccess_ftp_plugin.so -usr/lib/vlc/access/libaccess_http_plugin.so -usr/lib/vlc/access/libaccess_mmap_plugin.so -usr/lib/vlc/access/libaccess_mms_plugin.so -usr/lib/vlc/access/libaccess_oss_plugin.so -usr/lib/vlc/access/libaccess_realrtsp_plugin.so -usr/lib/vlc/access/libaccess_rtmp_plugin.so -usr/lib/vlc/access/libaccess_smb_plugin.so -usr/lib/vlc/access/libaccess_tcp_plugin.so -usr/lib/vlc/access/libaccess_udp_plugin.so -usr/lib/vlc/access/libcdda_plugin.so -usr/lib/vlc/access/libdvdnav_plugin.so -usr/lib/vlc/access/libdvdread_plugin.so -usr/lib/vlc/access/librtp_plugin.so -usr/lib/vlc/access/libv4l2_plugin.so -usr/lib/vlc/access/libvcd_plugin.so -usr/lib/vlc/access/libvcdx_plugin.so -usr/lib/vlc/access/libzip_plugin.so -usr/lib/vlc/access_output -usr/lib/vlc/audio_filter -usr/lib/vlc/audio_mixer -usr/lib/vlc/audio_output/libaout_file_plugin.so -usr/lib/vlc/audio_output/liboss_plugin.so -usr/lib/vlc/codec/liba52_plugin.so -usr/lib/vlc/codec/libadpcm_plugin.so -usr/lib/vlc/codec/libaes3_plugin.so -usr/lib/vlc/codec/libaraw_plugin.so -usr/lib/vlc/codec/libavcodec_plugin.so -usr/lib/vlc/codec/libcc_plugin.so -usr/lib/vlc/codec/libcdg_plugin.so -usr/lib/vlc/codec/libcmml_plugin.so -usr/lib/vlc/codec/libcvdsub_plugin.so -usr/lib/vlc/codec/libdts_plugin.so -usr/lib/vlc/codec/libdvbsub_plugin.so -usr/lib/vlc/codec/libfaad_plugin.so -usr/lib/vlc/codec/libfake_plugin.so -usr/lib/vlc/codec/libflac_plugin.so -usr/lib/vlc/codec/libinvmem_plugin.so -usr/lib/vlc/codec/liblibass_plugin.so -usr/lib/vlc/codec/liblibmpeg2_plugin.so -usr/lib/vlc/codec/liblpcm_plugin.so -usr/lib/vlc/codec/libmpeg_audio_plugin.so -usr/lib/vlc/codec/libpng_plugin.so -usr/lib/vlc/codec/librawvideo_plugin.so -usr/lib/vlc/codec/libschroedinger_plugin.so -usr/lib/vlc/codec/libspeex_plugin.so -usr/lib/vlc/codec/libspudec_plugin.so -usr/lib/vlc/codec/libsubsdec_plugin.so -usr/lib/vlc/codec/libsubsusf_plugin.so -usr/lib/vlc/codec/libsvcdsub_plugin.so -usr/lib/vlc/codec/libt140_plugin.so -usr/lib/vlc/codec/libtelx_plugin.so -usr/lib/vlc/codec/libtheora_plugin.so -usr/lib/vlc/codec/libtwolame_plugin.so -usr/lib/vlc/codec/libvorbis_plugin.so -usr/lib/vlc/control -usr/lib/vlc/demux -usr/lib/vlc/gui/libncurses_plugin.so -usr/lib/vlc/meta_engine -usr/lib/vlc/misc/libaudioscrobbler_plugin.so -usr/lib/vlc/misc/libdummy_plugin.so -usr/lib/vlc/misc/libexport_plugin.so -usr/lib/vlc/misc/libfreetype_plugin.so -usr/lib/vlc/misc/libgnutls_plugin.so -usr/lib/vlc/misc/libinhibit_plugin.so -usr/lib/vlc/misc/liblogger_plugin.so -usr/lib/vlc/misc/liblua_plugin.so -usr/lib/vlc/misc/libmemcpy*_plugin.so -usr/lib/vlc/misc/libosd_parser_plugin.so -usr/lib/vlc/misc/libprobe_hal_plugin.so -usr/lib/vlc/misc/libstats_plugin.so -usr/lib/vlc/misc/libtelepathy_plugin.so -usr/lib/vlc/misc/libvod_rtsp_plugin.so -usr/lib/vlc/misc/libxml_plugin.so -usr/lib/vlc/misc/libxtag_plugin.so -usr/lib/vlc/mux -usr/lib/vlc/packetizer -usr/lib/vlc/services_discovery -usr/lib/vlc/stream_filter -usr/lib/vlc/stream_out -usr/lib/vlc/video_chroma -usr/lib/vlc/video_filter/libadjust_plugin.so -usr/lib/vlc/video_filter/libalphamask_plugin.so -usr/lib/vlc/video_filter/libblend_plugin.so -usr/lib/vlc/video_filter/libblendbench_plugin.so -usr/lib/vlc/video_filter/libbluescreen_plugin.so -usr/lib/vlc/video_filter/libcanvas_plugin.so -usr/lib/vlc/video_filter/libchain_plugin.so -usr/lib/vlc/video_filter/libclone_plugin.so -usr/lib/vlc/video_filter/libcolorthres_plugin.so -usr/lib/vlc/video_filter/libcrop_plugin.so -usr/lib/vlc/video_filter/libcroppadd_plugin.so -usr/lib/vlc/video_filter/libdeinterlace_plugin.so -usr/lib/vlc/video_filter/libdynamicoverlay_plugin.so -usr/lib/vlc/video_filter/liberase_plugin.so -usr/lib/vlc/video_filter/libextract_plugin.so -usr/lib/vlc/video_filter/libgaussianblur_plugin.so -usr/lib/vlc/video_filter/libgradient_plugin.so -usr/lib/vlc/video_filter/libgrain_plugin.so -usr/lib/vlc/video_filter/libinvert_plugin.so -usr/lib/vlc/video_filter/liblogo_plugin.so -usr/lib/vlc/video_filter/libmagnify_plugin.so -usr/lib/vlc/video_filter/libmarq_plugin.so -usr/lib/vlc/video_filter/libmosaic_plugin.so -usr/lib/vlc/video_filter/libmotionblur_plugin.so -usr/lib/vlc/video_filter/libmotiondetect_plugin.so -usr/lib/vlc/video_filter/libnoise_plugin.so -usr/lib/vlc/video_filter/libosdmenu_plugin.so -usr/lib/vlc/video_filter/libpostproc_plugin.so -usr/lib/vlc/video_filter/libpsychedelic_plugin.so -usr/lib/vlc/video_filter/libpuzzle_plugin.so -usr/lib/vlc/video_filter/libremoteosd_plugin.so -usr/lib/vlc/video_filter/libripple_plugin.so -usr/lib/vlc/video_filter/librotate_plugin.so -usr/lib/vlc/video_filter/librss_plugin.so -usr/lib/vlc/video_filter/librv32_plugin.so -usr/lib/vlc/video_filter/libscale_plugin.so -usr/lib/vlc/video_filter/libscene_plugin.so -usr/lib/vlc/video_filter/libsharpen_plugin.so -usr/lib/vlc/video_filter/libswscale_plugin.so -usr/lib/vlc/video_filter/libtransform_plugin.so -usr/lib/vlc/video_filter/libwall_plugin.so -usr/lib/vlc/video_filter/libwave_plugin.so -usr/lib/vlc/video_filter/libyuvp_plugin.so -usr/lib/vlc/video_output/libcaca_plugin.so -usr/lib/vlc/video_output/libvmem_plugin.so -usr/lib/vlc/video_output/libyuv_plugin.so -usr/lib/vlc/visualization/libvisual_plugin.so reverted: --- vlc-1.0.1/debian/vlc-nox.install.kfreebsd-amd64 +++ vlc-1.0.1.orig/debian/vlc-nox.install.kfreebsd-amd64 @@ -1,137 +0,0 @@ -usr/bin/cvlc -usr/bin/nvlc -usr/bin/rvlc -usr/bin/vlc -usr/bin/vlc-wrapper -usr/lib/vlc/access/libaccess_bd_plugin.so -usr/lib/vlc/access/libaccess_directory_plugin.so -usr/lib/vlc/access/libaccess_fake_plugin.so -usr/lib/vlc/access/libaccess_file_plugin.so -usr/lib/vlc/access/libaccess_ftp_plugin.so -usr/lib/vlc/access/libaccess_http_plugin.so -usr/lib/vlc/access/libaccess_mmap_plugin.so -usr/lib/vlc/access/libaccess_mms_plugin.so -usr/lib/vlc/access/libaccess_oss_plugin.so -usr/lib/vlc/access/libaccess_realrtsp_plugin.so -usr/lib/vlc/access/libaccess_rtmp_plugin.so -usr/lib/vlc/access/libaccess_smb_plugin.so -usr/lib/vlc/access/libaccess_tcp_plugin.so -usr/lib/vlc/access/libaccess_udp_plugin.so -usr/lib/vlc/access/libcdda_plugin.so -usr/lib/vlc/access/libdvdnav_plugin.so -usr/lib/vlc/access/libdvdread_plugin.so -usr/lib/vlc/access/librtp_plugin.so -usr/lib/vlc/access/libv4l2_plugin.so -usr/lib/vlc/access/libvcd_plugin.so -usr/lib/vlc/access/libvcdx_plugin.so -usr/lib/vlc/access/libzip_plugin.so -usr/lib/vlc/access_output -usr/lib/vlc/audio_filter -usr/lib/vlc/audio_mixer -usr/lib/vlc/audio_output/libaout_file_plugin.so -usr/lib/vlc/audio_output/liboss_plugin.so -usr/lib/vlc/codec/liba52_plugin.so -usr/lib/vlc/codec/libadpcm_plugin.so -usr/lib/vlc/codec/libaes3_plugin.so -usr/lib/vlc/codec/libaraw_plugin.so -usr/lib/vlc/codec/libavcodec_plugin.so -usr/lib/vlc/codec/libcc_plugin.so -usr/lib/vlc/codec/libcdg_plugin.so -usr/lib/vlc/codec/libcmml_plugin.so -usr/lib/vlc/codec/libcvdsub_plugin.so -usr/lib/vlc/codec/libdts_plugin.so -usr/lib/vlc/codec/libdvbsub_plugin.so -usr/lib/vlc/codec/libfaad_plugin.so -usr/lib/vlc/codec/libfake_plugin.so -usr/lib/vlc/codec/libflac_plugin.so -usr/lib/vlc/codec/libinvmem_plugin.so -usr/lib/vlc/codec/liblibass_plugin.so -usr/lib/vlc/codec/liblibmpeg2_plugin.so -usr/lib/vlc/codec/liblpcm_plugin.so -usr/lib/vlc/codec/libmpeg_audio_plugin.so -usr/lib/vlc/codec/libpng_plugin.so -usr/lib/vlc/codec/librawvideo_plugin.so -usr/lib/vlc/codec/libschroedinger_plugin.so -usr/lib/vlc/codec/libspeex_plugin.so -usr/lib/vlc/codec/libspudec_plugin.so -usr/lib/vlc/codec/libsubsdec_plugin.so -usr/lib/vlc/codec/libsubsusf_plugin.so -usr/lib/vlc/codec/libsvcdsub_plugin.so -usr/lib/vlc/codec/libt140_plugin.so -usr/lib/vlc/codec/libtelx_plugin.so -usr/lib/vlc/codec/libtheora_plugin.so -usr/lib/vlc/codec/libtwolame_plugin.so -usr/lib/vlc/codec/libvorbis_plugin.so -usr/lib/vlc/control -usr/lib/vlc/demux -usr/lib/vlc/gui/libncurses_plugin.so -usr/lib/vlc/meta_engine -usr/lib/vlc/misc/libaudioscrobbler_plugin.so -usr/lib/vlc/misc/libdummy_plugin.so -usr/lib/vlc/misc/libexport_plugin.so -usr/lib/vlc/misc/libfreetype_plugin.so -usr/lib/vlc/misc/libgnutls_plugin.so -usr/lib/vlc/misc/libinhibit_plugin.so -usr/lib/vlc/misc/liblogger_plugin.so -usr/lib/vlc/misc/liblua_plugin.so -usr/lib/vlc/misc/libmemcpy*_plugin.so -usr/lib/vlc/misc/libosd_parser_plugin.so -usr/lib/vlc/misc/libprobe_hal_plugin.so -usr/lib/vlc/misc/libstats_plugin.so -usr/lib/vlc/misc/libtelepathy_plugin.so -usr/lib/vlc/misc/libvod_rtsp_plugin.so -usr/lib/vlc/misc/libxml_plugin.so -usr/lib/vlc/misc/libxtag_plugin.so -usr/lib/vlc/mux -usr/lib/vlc/packetizer -usr/lib/vlc/services_discovery -usr/lib/vlc/stream_filter -usr/lib/vlc/stream_out -usr/lib/vlc/video_chroma -usr/lib/vlc/video_filter/libadjust_plugin.so -usr/lib/vlc/video_filter/libalphamask_plugin.so -usr/lib/vlc/video_filter/libblend_plugin.so -usr/lib/vlc/video_filter/libblendbench_plugin.so -usr/lib/vlc/video_filter/libbluescreen_plugin.so -usr/lib/vlc/video_filter/libcanvas_plugin.so -usr/lib/vlc/video_filter/libchain_plugin.so -usr/lib/vlc/video_filter/libclone_plugin.so -usr/lib/vlc/video_filter/libcolorthres_plugin.so -usr/lib/vlc/video_filter/libcrop_plugin.so -usr/lib/vlc/video_filter/libcroppadd_plugin.so -usr/lib/vlc/video_filter/libdeinterlace_plugin.so -usr/lib/vlc/video_filter/libdynamicoverlay_plugin.so -usr/lib/vlc/video_filter/liberase_plugin.so -usr/lib/vlc/video_filter/libextract_plugin.so -usr/lib/vlc/video_filter/libgaussianblur_plugin.so -usr/lib/vlc/video_filter/libgradient_plugin.so -usr/lib/vlc/video_filter/libgrain_plugin.so -usr/lib/vlc/video_filter/libinvert_plugin.so -usr/lib/vlc/video_filter/liblogo_plugin.so -usr/lib/vlc/video_filter/libmagnify_plugin.so -usr/lib/vlc/video_filter/libmarq_plugin.so -usr/lib/vlc/video_filter/libmosaic_plugin.so -usr/lib/vlc/video_filter/libmotionblur_plugin.so -usr/lib/vlc/video_filter/libmotiondetect_plugin.so -usr/lib/vlc/video_filter/libnoise_plugin.so -usr/lib/vlc/video_filter/libosdmenu_plugin.so -usr/lib/vlc/video_filter/libpostproc_plugin.so -usr/lib/vlc/video_filter/libpsychedelic_plugin.so -usr/lib/vlc/video_filter/libpuzzle_plugin.so -usr/lib/vlc/video_filter/libremoteosd_plugin.so -usr/lib/vlc/video_filter/libripple_plugin.so -usr/lib/vlc/video_filter/librotate_plugin.so -usr/lib/vlc/video_filter/librss_plugin.so -usr/lib/vlc/video_filter/librv32_plugin.so -usr/lib/vlc/video_filter/libscale_plugin.so -usr/lib/vlc/video_filter/libscene_plugin.so -usr/lib/vlc/video_filter/libsharpen_plugin.so -usr/lib/vlc/video_filter/libswscale_plugin.so -usr/lib/vlc/video_filter/libtransform_plugin.so -usr/lib/vlc/video_filter/libwall_plugin.so -usr/lib/vlc/video_filter/libwave_plugin.so -usr/lib/vlc/video_filter/libyuvp_plugin.so -usr/lib/vlc/video_output/libcaca_plugin.so -usr/lib/vlc/video_output/libvmem_plugin.so -usr/lib/vlc/video_output/libyuv_plugin.so -usr/lib/vlc/visualization/libvisual_plugin.so diff -u vlc-1.0.1/debian/changelog vlc-1.0.1/debian/changelog --- vlc-1.0.1/debian/changelog +++ vlc-1.0.1/debian/changelog @@ -1,3 +1,27 @@ +vlc (1.0.1-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable (LP: #426693), remaining changes: + - build against xulrunner-dev instead of iceape-dev + - build against libx264-dev and install libx264 plugin + - add Xb-Npp header to vlc package + * Recommend vlc-plugin-pulse for vlc, so that pulse can be used as default + output. + + -- Benjamin Drung Wed, 09 Sep 2009 10:24:09 +0200 + +vlc (1.0.1-2) unstable; urgency=low + + * Fix typo in debian/changelog + * Allow building against libass 0.9.7 + * Don't try to install v4l2 modules on kfreebsd + * Set policy to 3.8.3 (no change needed) + * No need of qt4-dev-tools + * Add a README.source about quilt + * Disable some modules (kate, mtp, fluidsynth) + * Don't distribute the *.install-kfreebsd* files as they are generated + + -- Christophe Mutricy Sun, 06 Sep 2009 19:07:24 +0200 + vlc (1.0.1-1ubuntu2) karmic; urgency=low * No-change rebuild to pick up new ffmpeg shlibs file. @@ -17,7 +41,7 @@ vlc (1.0.1-1) unstable; urgency=low * New upstream bugfix version - + Fix interger underflow in Real RTSP (DZC-2009-001, CVE pending) + + Fix integer underflow in Real RTSP (DZC-2009-001, CVE pending) + Fix crashes in xspf files handler (LP: #365638) [ Reinhard Tartler ] diff -u vlc-1.0.1/debian/patches/series vlc-1.0.1/debian/patches/series --- vlc-1.0.1/debian/patches/series +++ vlc-1.0.1/debian/patches/series @@ -7,0 +8 @@ +402_libass_097.diff only in patch2: unchanged: --- vlc-1.0.1.orig/debian/README.source +++ vlc-1.0.1/debian/README.source @@ -0,0 +1,15 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +For more information about quilt, see /usr/share/doc/quilt/README.source + +Permanent patches +0??-*.diff: Buildsystem +1??-*.diff: Code +2??-*.diff: Other +3??-*.diff: " + +Temporary patches +4??-*.diff: Bugs fix most likely taken from upstream Git +CVE-*-*.diff: Security fix only in patch2: unchanged: --- vlc-1.0.1.orig/debian/patches/402_libass_097.diff +++ vlc-1.0.1/debian/patches/402_libass_097.diff @@ -0,0 +1,268 @@ +commit 5eeb2ea4d498043eb73bcc040ad234d85c901f0f +Author: Grigori Goronzy +Date: Thu Aug 6 23:53:38 2009 +0200 + + libass: rename types to match upstream + + Rename types and add compatibility macro for old libass versions. + + Signed-off-by: Laurent Aimar + Signed-off-by: Jean-Baptiste Kempf + + Cherry-picked from e8189268e1b1099611657b67800cf10454936af9 + +commit 80b56ee54500d8755c60f3c75477214c79fd0936 +Author: Laurent Aimar +Date: Sun Jul 26 23:26:13 2009 +0200 + + Improved pre-blending in ssa decoder. + (cherry picked from commit 6456512fc613075a6f9d8638457044c8a4636783) + +commit 03212d87b4b8ff5a09c80106d1e21e15a9869586 +Author: Anthony Loiseau +Date: Tue Jul 28 16:46:54 2009 +0200 + + codec/libass: avoid possible segfault + + dialog_ProgressCreate can return NULL. For this case, + only deal with the result if it is not NULL. + + Signed-off-by: Rémi Duraffort + (cherry picked from commit 29e7fc71082c08aec51d438b3d8564e25526b2d1) + + Signed-off-by: Rémi Duraffort + + +diff --git a/modules/codec/libass.c b/modules/codec/libass.c +index 0a9fced..019359b 100644 +--- a/modules/codec/libass.c ++++ b/modules/codec/libass.c +@@ -48,6 +48,14 @@ + # include + #endif + ++/* Compatibility with old libass */ ++#if !defined(LIBASS_VERSION) || LIBASS_VERSION < 0x00907010 ++# define ASS_Renderer ass_renderer_t ++# define ASS_Library ass_library_t ++# define ASS_Track ass_track_t ++# define ASS_Image ass_image_t ++#endif ++ + /***************************************************************************** + * Module descriptor + *****************************************************************************/ +@@ -73,13 +81,13 @@ static void UpdateRegions( spu_t *, + subpicture_t *, const video_format_t *, mtime_t ); + + /* Yes libass sux with threads */ +-typedef struct ++typedef struct + { + vlc_object_t *p_libvlc; + + int i_refcount; +- ass_library_t *p_library; +- ass_renderer_t *p_renderer; ++ ASS_Library *p_library; ++ ASS_Renderer *p_renderer; + video_format_t fmt; + } ass_handle_t; + static ass_handle_t *AssHandleHold( decoder_t *p_dec ); +@@ -98,7 +106,7 @@ struct decoder_sys_t + ass_handle_t *p_ass; + + /* */ +- ass_track_t *p_track; ++ ASS_Track *p_track; + + /* */ + subpicture_t *p_spu_final; +@@ -122,9 +130,9 @@ typedef struct + int y1; + } rectangle_t; + +-static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, ass_image_t *p_img_list, int i_width, int i_height ); ++static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, ASS_Image *p_img_list, int i_width, int i_height ); + static void SubpictureReleaseRegions( spu_t *p_spu, subpicture_t *p_subpic ); +-static void RegionDraw( subpicture_region_t *p_region, ass_image_t *p_img ); ++static void RegionDraw( subpicture_region_t *p_region, ASS_Image *p_img ); + + static vlc_mutex_t libass_lock = VLC_STATIC_MUTEX; + +@@ -137,7 +145,7 @@ static int Create( vlc_object_t *p_this ) + { + decoder_t *p_dec = (decoder_t *)p_this; + decoder_sys_t *p_sys; +- ass_track_t *p_track; ++ ASS_Track *p_track; + + if( p_dec->fmt_in.i_codec != VLC_FOURCC('s','s','a',' ') ) + return VLC_EGENERIC; +@@ -361,8 +369,8 @@ static void UpdateRegions( spu_t *p_spu, subpicture_t *p_subpic, + /* */ + const mtime_t i_stream_date = p_subpic->p_sys->i_pts + (i_ts - p_subpic->i_start); + int i_changed; +- ass_image_t *p_img = ass_render_frame( p_ass->p_renderer, p_sys->p_track, +- i_stream_date/1000, &i_changed ); ++ ASS_Image *p_img = ass_render_frame( p_ass->p_renderer, p_sys->p_track, ++ i_stream_date/1000, &i_changed ); + + if( !i_changed && !b_fmt_changed && + (p_img != NULL) == (p_subpic->p_region != NULL) ) +@@ -430,7 +438,7 @@ static rectangle_t r_create( int x0, int y0, int x1, int y1 ) + rectangle_t r = { x0, y0, x1, y1 }; + return r; + } +-static rectangle_t r_img( const ass_image_t *p_img ) ++static rectangle_t r_img( const ASS_Image *p_img ) + { + return r_create( p_img->dst_x, p_img->dst_y, p_img->dst_x+p_img->w, p_img->dst_y+p_img->h ); + } +@@ -451,9 +459,9 @@ static bool r_overlap( const rectangle_t *a, const rectangle_t *b, int i_dx, int + __MAX(a->y0-i_dy, b->y0) < __MIN( a->y1+i_dy, b->y1 ); + } + +-static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, ass_image_t *p_img_list, int i_width, int i_height ) ++static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, ASS_Image *p_img_list, int i_width, int i_height ) + { +- ass_image_t *p_tmp; ++ ASS_Image *p_tmp; + int i_count; + + VLC_UNUSED(p_spu); +@@ -467,7 +475,7 @@ static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, + if( i_count <= 0 ) + return 0; + +- ass_image_t **pp_img = calloc( i_count, sizeof(*pp_img) ); ++ ASS_Image **pp_img = calloc( i_count, sizeof(*pp_img) ); + if( !pp_img ) + return 0; + +@@ -500,7 +508,7 @@ static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, + b_ok = false; + for( n = 0; n < i_count; n++ ) + { +- ass_image_t *p_img = pp_img[n]; ++ ASS_Image *p_img = pp_img[n]; + if( !p_img ) + continue; + rectangle_t r = r_img( p_img ); +@@ -576,7 +584,7 @@ static int BuildRegions( spu_t *p_spu, rectangle_t *p_region, int i_max_region, + return i_region; + } + +-static void RegionDraw( subpicture_region_t *p_region, ass_image_t *p_img ) ++static void RegionDraw( subpicture_region_t *p_region, ASS_Image *p_img ) + { + const plane_t *p = &p_region->p_picture->p[0]; + const int i_x = p_region->i_x; +@@ -591,26 +599,41 @@ static void RegionDraw( subpicture_region_t *p_region, ass_image_t *p_img ) + p_img->dst_y < i_y || p_img->dst_y + p_img->h > i_y + i_height ) + continue; + +- const int r = (p_img->color >> 24)&0xff; +- const int g = (p_img->color >> 16)&0xff; +- const int b = (p_img->color >> 8)&0xff; +- const int a = (p_img->color )&0xff; ++ const unsigned r = (p_img->color >> 24)&0xff; ++ const unsigned g = (p_img->color >> 16)&0xff; ++ const unsigned b = (p_img->color >> 8)&0xff; ++ const unsigned a = (p_img->color )&0xff; + int x, y; + + for( y = 0; y < p_img->h; y++ ) + { + for( x = 0; x < p_img->w; x++ ) + { +- const int alpha = p_img->bitmap[y*p_img->stride+x]; +- const int an = (255 - a) * alpha / 255; ++ const unsigned alpha = p_img->bitmap[y*p_img->stride+x]; ++ const unsigned an = (255 - a) * alpha / 255; + + uint8_t *p_rgba = &p->p_pixels[(y+p_img->dst_y-i_y) * p->i_pitch + 4 * (x+p_img->dst_x-i_x)]; ++ const unsigned ao = p_rgba[3]; + + /* Native endianness, but RGBA ordering */ +- p_rgba[0] = ( p_rgba[0] * (255-an) + r * an ) / 255; +- p_rgba[1] = ( p_rgba[1] * (255-an) + g * an ) / 255; +- p_rgba[2] = ( p_rgba[2] * (255-an) + b * an ) / 255; +- p_rgba[3] = 255 - ( 255 - p_rgba[3] ) * ( 255 - an ) / 255; ++ if( ao == 0 ) ++ { ++ /* Optimized but the else{} will produce the same result */ ++ p_rgba[0] = r; ++ p_rgba[1] = g; ++ p_rgba[2] = b; ++ p_rgba[3] = an; ++ } ++ else ++ { ++ p_rgba[3] = 255 - ( 255 - p_rgba[3] ) * ( 255 - an ) / 255; ++ if( p_rgba[3] != 0 ) ++ { ++ p_rgba[0] = ( p_rgba[0] * ao * (255-an) / 255 + r * an ) / p_rgba[3]; ++ p_rgba[1] = ( p_rgba[1] * ao * (255-an) / 255 + g * an ) / p_rgba[3]; ++ p_rgba[2] = ( p_rgba[2] * ao * (255-an) / 255 + b * an ) / p_rgba[3]; ++ } ++ } + } + } + } +@@ -640,8 +663,8 @@ static ass_handle_t *AssHandleHold( decoder_t *p_dec ) + vlc_mutex_lock( &libass_lock ); + + ass_handle_t *p_ass = NULL; +- ass_library_t *p_library = NULL; +- ass_renderer_t *p_renderer = NULL; ++ ASS_Library *p_library = NULL; ++ ASS_Renderer *p_renderer = NULL; + vlc_value_t val; + + var_Create( p_dec->p_libvlc, "libass-handle", VLC_VAR_ADDRESS ); +@@ -731,7 +754,8 @@ static ass_handle_t *AssHandleHold( decoder_t *p_dec ) + ass_set_fonts_dir( p_library, psz_font_dir ); + free( psz_font_dir ); + #ifdef WIN32 +- dialog_ProgressSet( p_dialog, NULL, 0.1 ); ++ if( p_dialog ) ++ dialog_ProgressSet( p_dialog, NULL, 0.1 ); + #endif + + ass_set_extract_fonts( p_library, true ); +@@ -754,7 +778,8 @@ static ass_handle_t *AssHandleHold( decoder_t *p_dec ) + + #ifdef HAVE_FONTCONFIG + #ifdef WIN32 +- dialog_ProgressSet( p_dialog, NULL, 0.2 ); ++ if( p_dialog ) ++ dialog_ProgressSet( p_dialog, NULL, 0.2 ); + #endif + #if defined( LIBASS_VERSION ) && LIBASS_VERSION >= 0x00907000 + ass_set_fonts( p_renderer, psz_font, psz_family, true, NULL, 1 ); // setup default font/family +@@ -762,7 +787,8 @@ static ass_handle_t *AssHandleHold( decoder_t *p_dec ) + ass_set_fonts( p_renderer, psz_font, psz_family ); // setup default font/family + #endif + #ifdef WIN32 +- dialog_ProgressSet( p_dialog, NULL, 1.0 ); ++ if( p_dialog ) ++ dialog_ProgressSet( p_dialog, NULL, 1.0 ); + #endif + #else + /* FIXME you HAVE to give him a font if no fontconfig */ +@@ -781,7 +807,8 @@ static ass_handle_t *AssHandleHold( decoder_t *p_dec ) + /* */ + vlc_mutex_unlock( &libass_lock ); + #ifdef WIN32 +- dialog_ProgressDestroy( p_dialog ); ++ if( p_dialog ) ++ dialog_ProgressDestroy( p_dialog ); + #endif + return p_ass; + +@@ -817,4 +844,3 @@ static void AssHandleRelease( ass_handle_t *p_ass ) + vlc_mutex_unlock( &libass_lock ); + free( p_ass ); + } +-