Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock vlc 2.2.0~rc2 got released today. Similar to #767971, I'd like to get this version into jessie and stick with upstream as close as possible. Besides the bugs mentioned in d/changelog, it includes fixes for integer overflows in the rtp code, fixes for memcpy used on overlapping memory areas and fixes for use-after-free errors. The filtered debdiff is attached. It was generated with git diff debian/2.2.0_rc1-1 -w -- \ ChangeLog \ NEWS \ configure.ac \ debian/changelog \ doc/ChangeLog-2004 \ doc/ChangeLog-2005 \ doc/ChangeLog-2007 \ doc/ChangeLog-2008 \ doc/ChangeLog-2009 \ doc/ChangeLog-2010 \ doc/ChangeLog-2013 \ doc/ChangeLog-2014 \ modules/access/bluray.c \ modules/access/dvdnav.c \ modules/access/ftp.c \ modules/access/rdp.c \ modules/access/rtp/srtp.c \ modules/access/udp.c \ modules/access/vdr.c \ modules/audio_filter/audiobargraph_a.c \ modules/audio_filter/channel_mixer/trivial.c \ modules/codec/libass.c \ modules/codec/mpeg_audio.c \ modules/demux/avi/avi.c \ modules/demux/mp4/mp4.c \ modules/demux/ogg.c \ modules/demux/playlist/zpl.c \ modules/gui/qt4/util/timetooltip.hpp \ modules/packetizer/flac.c \ modules/packetizer/vc1.c \ modules/services_discovery/sap.c \ modules/stream_filter/httplive.c \ modules/stream_filter/smooth/downloader.c \ modules/video_filter/atmo/AtmoConfig.cpp \ modules/video_filter/mosaic.c \ modules/video_filter/psychedelic.c \ modules/video_output/aa.c \ modules/video_output/opengl.c \ modules/video_output/vmem.c \ share/lua/extensions/VLSub.lua \ share/lua/playlist/dailymotion.lua \ share/lua/playlist/koreus.lua \ share/lua/playlist/youtube.lua \ src/misc/text_style.c \ src/revision.c \ src/revision.txt \ src/test/xmlent.c \ src/text/strings.c \ src/video_output/interlacing.c \ src/video_output/video_epg.c Some of the code has been re-intended for no good reason and so the debdiff includes some noise eventhough it was generated with git diff -w (especially VLSub.lua). The diffstat of the remaining changes (Translation updates and stuff not for us) is the following: Makefile.in | 12 + compat/Makefile.in | 14 +- config.h.in | 12 +- configure | 40 +- (auto-generated autotools cruft rebuilt by the package) contrib/src/ass/SHA512SUMS | 2 +- contrib/src/ass/rules.mak | 2 +- contrib/src/dca/rules.mak | 2 +- contrib/src/ffmpeg/rules.mak | 2 +- contrib/src/gnutls/SHA512SUMS | 2 +- contrib/src/gnutls/rules.mak | 2 +- contrib/src/gpg-error/SHA512SUMS | 2 +- contrib/src/gpg-error/rules.mak | 2 +- contrib/src/harfbuzz/SHA512SUMS | 2 +- contrib/src/harfbuzz/rules.mak | 2 +- contrib/src/png/SHA512SUMS | 2 +- contrib/src/png/rules.mak | 2 +- contrib/src/schroedinger/rules.mak | 3 +- contrib/src/sparkle/rules.mak | 1 + ...rkle-fix-runtime-exception-on-snowleopard.patch | 13 + contrib/src/vpx/libvpx-ios.patch | 78 + contrib/src/vpx/rules.mak | 16 +- (not used in Debian) extras/package/ios/build.sh | 18 +- extras/package/win32/package.mak | 12 + modules/audio_output/directsound.c | 19 +- modules/audio_output/mmdevice.c | 2 +- modules/audio_output/wasapi.c | 2 + modules/codec/omxil/android_mediacodec.c | 38 +- modules/codec/omxil/omxil_core.c | 7 +- modules/gui/macosx/MainWindow.m | 28 +- modules/gui/macosx/intf.h | 3 +- modules/gui/macosx/intf.m | 21 +- modules/gui/macosx/playlist.m | 14 +- modules/gui/macosx/simple_prefs.m | 6 +- modules/video_output/android/nativewindow.c | 8 +- modules/video_output/android/opaque.c | 8 +- modules/video_output/android/surface.c | 8 +- (Windows, Android and iOS online) po/ach.gmo | Bin 56389 -> 56389 bytes po/ach.po | 111 +- po/af.gmo | Bin 50471 -> 50471 bytes po/af.po | 105 +- po/am.gmo | Bin 72968 -> 72968 bytes po/am.po | 102 +- po/an.gmo | Bin 462610 -> 462610 bytes po/an.po | 111 +- po/ar.gmo | Bin 310202 -> 310202 bytes po/ar.po | 114 +- po/ast.gmo | Bin 456202 -> 465587 bytes po/ast.po | 1488 +- po/az.gmo | Bin 2828 -> 2828 bytes po/az.po | 114 +- po/be.gmo | Bin 750883 -> 750883 bytes po/be.po | 102 +- po/bg.gmo | Bin 616686 -> 616686 bytes po/bg.po | 111 +- po/bn.gmo | Bin 665775 -> 666107 bytes po/bn.po | 218 +- po/bn_IN.gmo | Bin 795286 -> 795286 bytes po/bn_IN.po | 108 +- po/br.gmo | Bin 80105 -> 80105 bytes po/br.po | 111 +- po/bs.gmo | Bin 150691 -> 150691 bytes po/bs.po | 125 +- po/ca.gmo | Bin 626990 -> 626578 bytes po/ca.po | 1317 +- po/cgg.gmo | Bin 41805 -> 41805 bytes po/cgg.po | 102 +- po/ckb.gmo | Bin 86646 -> 86646 bytes po/ckb.po | 105 +- po/co.gmo | Bin 702 -> 702 bytes po/co.po | 102 +- po/cs.gmo | Bin 239718 -> 247877 bytes po/cs.po | 264 +- po/cy.gmo | Bin 262253 -> 273706 bytes po/cy.po | 386 +- po/da.gmo | Bin 336554 -> 355725 bytes po/da.po | 1030 +- po/de.gmo | Bin 630358 -> 630339 bytes po/de.po | 646 +- po/el.gmo | Bin 864171 -> 876106 bytes po/el.po | 644 +- po/en_GB.gmo | Bin 38113 -> 38113 bytes po/en_GB.po | 102 +- po/es.gmo | Bin 626470 -> 631720 bytes po/es.po | 604 +- po/et.gmo | Bin 465021 -> 465021 bytes po/et.po | 218 +- po/eu.gmo | Bin 524208 -> 524208 bytes po/eu.po | 111 +- po/fa.gmo | Bin 166587 -> 166587 bytes po/fa.po | 185 +- po/ff.gmo | Bin 83518 -> 83518 bytes po/ff.po | 111 +- po/fi.gmo | Bin 525804 -> 548988 bytes po/fi.po | 1032 +- po/fr.gmo | Bin 574002 -> 574002 bytes po/fr.po | 256 +- po/fur.gmo | Bin 38868 -> 38868 bytes po/fur.po | 102 +- po/ga.gmo | Bin 142398 -> 142398 bytes po/ga.po | 102 +- po/gd.gmo | Bin 188678 -> 188678 bytes po/gd.po | 129 +- po/gl.gmo | Bin 620505 -> 624131 bytes po/gl.po | 1490 +- po/gu.gmo | Bin 68470 -> 68470 bytes po/gu.po | 144 +- po/he.gmo | Bin 230850 -> 230850 bytes po/he.po | 207 +- po/hi.gmo | Bin 147173 -> 147173 bytes po/hi.po | 108 +- po/hr.gmo | Bin 556190 -> 556190 bytes po/hr.po | 102 +- po/hu.gmo | Bin 619989 -> 619989 bytes po/hu.po | 102 +- po/hy.gmo | Bin 136327 -> 136327 bytes po/hy.po | 102 +- po/ia.gmo | Bin 11156 -> 11156 bytes po/ia.po | 132 +- po/id.gmo | Bin 424412 -> 424094 bytes po/id.po | 1153 +- po/is.gmo | Bin 159843 -> 160136 bytes po/is.po | 742 +- po/it.gmo | Bin 598386 -> 602623 bytes po/it.po | 693 +- po/ja.gmo | Bin 701687 -> 701687 bytes po/ja.po | 570 +- po/ka.gmo | Bin 58831 -> 58831 bytes po/ka.po | 102 +- po/kk.gmo | Bin 230816 -> 230816 bytes po/kk.po | 111 +- po/km.gmo | Bin 1014491 -> 1014463 bytes po/km.po | 1500 +- po/kn.gmo | Bin 820357 -> 821528 bytes po/kn.po | 1242 +- po/ko.gmo | Bin 634279 -> 634276 bytes po/ko.po | 576 +- po/ky.gmo | Bin 38916 -> 38916 bytes po/ky.po | 120 +- po/lg.gmo | Bin 55254 -> 55254 bytes po/lg.po | 102 +- po/lt.gmo | Bin 334829 -> 337843 bytes po/lt.po | 1122 +- po/lv.gmo | Bin 42140 -> 614505 bytes po/lv.po | 13512 +++++++++++-------- po/mk.gmo | Bin 6589 -> 6589 bytes po/mk.po | 108 +- po/ml.gmo | Bin 37334 -> 37334 bytes po/ml.po | 129 +- po/mn.gmo | Bin 81038 -> 81038 bytes po/mn.po | 111 +- po/mr.gmo | Bin 200783 -> 200901 bytes po/mr.po | 675 +- po/ms.gmo | Bin 598131 -> 598131 bytes po/ms.po | 584 +- po/my.gmo | Bin 14938 -> 14938 bytes po/my.po | 135 +- po/nb.gmo | Bin 153670 -> 154338 bytes po/nb.po | 274 +- po/ne.gmo | Bin 336400 -> 362536 bytes po/ne.po | 1037 +- po/nl.gmo | Bin 614941 -> 614941 bytes po/nl.po | 568 +- po/nn.gmo | Bin 103407 -> 103407 bytes po/nn.po | 102 +- po/oc.gmo | Bin 144661 -> 144661 bytes po/oc.po | 114 +- po/or.gmo | Bin 25522 -> 25522 bytes po/or.po | 132 +- po/pa.gmo | Bin 281763 -> 281763 bytes po/pa.po | 208 +- po/pl.gmo | Bin 627350 -> 627350 bytes po/pl.po | 566 +- po/ps.gmo | Bin 43029 -> 43029 bytes po/ps.po | 105 +- po/pt_BR.gmo | Bin 541908 -> 543866 bytes po/pt_BR.po | 289 +- po/pt_PT.gmo | Bin 610661 -> 610661 bytes po/pt_PT.po | 102 +- po/ro.gmo | Bin 416477 -> 422173 bytes po/ro.po | 442 +- po/ru.gmo | Bin 797827 -> 797827 bytes po/ru.po | 568 +- po/si.gmo | Bin 281852 -> 281852 bytes po/si.po | 108 +- po/sk.gmo | Bin 652637 -> 652637 bytes po/sk.po | 570 +- po/sl.gmo | Bin 431827 -> 433349 bytes po/sl.po | 368 +- po/sq.gmo | Bin 66278 -> 66278 bytes po/sq.po | 250 +- po/sr.gmo | Bin 352757 -> 352757 bytes po/sr.po | 241 +- po/sv.gmo | Bin 435166 -> 448628 bytes po/sv.po | 808 +- po/ta.gmo | Bin 86711 -> 86711 bytes po/ta.po | 117 +- po/te.gmo | Bin 148086 -> 148086 bytes po/te.po | 108 +- po/tet.gmo | Bin 484 -> 484 bytes po/tet.po | 102 +- po/th.gmo | Bin 353347 -> 355364 bytes po/th.po | 769 +- po/tl.gmo | Bin 461 -> 461 bytes po/tl.po | 102 +- po/tr.gmo | Bin 638386 -> 638386 bytes po/tr.po | 571 +- po/uk.gmo | Bin 807739 -> 807736 bytes po/uk.po | 110 +- po/uz.gmo | Bin 33505 -> 36548 bytes po/uz.po | 491 +- po/vi.gmo | Bin 556892 -> 556892 bytes po/vi.po | 208 +- po/vlc.pot | 104 +- po/wa.gmo | Bin 286829 -> 286829 bytes po/wa.po | 108 +- po/zh_CN.gmo | Bin 570244 -> 570252 bytes po/zh_CN.po | 655 +- po/zh_TW.gmo | Bin 269691 -> 269691 bytes po/zh_TW.po | 174 +- po/zu.gmo | Bin 61515 -> 61515 bytes po/zu.po | 102 +- (Translation updates) -- Sebastian Ramacher
diff --git a/ChangeLog b/ChangeLog index 41be72c..17bc101 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1092 @@ +commit 0f9d34948327e382cf33c3f75d1baffe472b3e3e +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Nov 21 16:56:56 2014 +0100 + + Update PO files + +commit 22fda3914ad118035162ddea9d64b6dfa4b4f071 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Nov 20 22:21:10 2014 +0200 + + mmdevice: fix volume scale (fixes #12825) + +commit a8d46dc70a6f8337f340ea5ffb52881c6382061e +Author: KO Myung-Hun <komh78@gmail.com> +Date: Thu Nov 13 17:07:00 2014 +0900 + + dvdnav: fix compilation on OS/2 + + ----- + access/dvdnav.c: In function 'ProbeDVD': + access/dvdnav.c:1469:6: error: implicit declaration of function 'read' [-Werror=implicit-function-declaration] + || read( fd, iso_dsc, sizeof (iso_dsc) ) < (int)sizeof (iso_dsc) + ^ + access/dvdnav.c:1481:5: error: implicit declaration of function 'close' [-Werror=implicit-function-declaration] + close( fd ); + ^ + ----- + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit 4bcf8bd7ae0e00e9e1a55fce2e559a5dc465a29f) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 5f26e7d35cbb37951678313174b6db689b88e4e0 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Nov 14 23:50:52 2014 +0100 + + libass: avoid negative index in array + + (cherry picked from commit e91ea1f9c3f5575c65003818b6b0c2948435c2b8) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit f819406d7ac16e41b8303859abb32f5e1b996bad +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:42:44 2014 +0200 + + OpenGL: remove potential NULL dereference + + (cherry picked from commit 267d8be5f35b8a33bf5e634ff5087a8ab9788019) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 704cf0192e8fa08dcaffabc3057d4df9f5c1ad60 +Author: Santiago Gimeno <santiago.gimeno@gmail.com> +Date: Mon Nov 17 13:16:50 2014 +0100 + + sap: fix implicit timeout calculation + + - RFC2974 states in Section 4: + "If a session announcement message has not been received for ten times the + announcement period, or one hour, whichever is the greater, then the + session is deleted from the receiver's session cache." + But the session was being deleted after three times the announcement period. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 125acdef1ed11c0684ccf57110d4f8741a4e705c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 0c3fa2b011821ada786857dc02d8997fca091553 +Author: Thomas Guillem <thomas@gllm.fr> +Date: Tue Nov 18 10:16:35 2014 +0000 + + mediacodec: don't try OMX.google.* + + OMX.google.* are software decoders, it's better to use avcodec. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 49fc0b18011e38bb1886bd15575e249ed1728977) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 1142c18287b4af7928b478ccb70bde6d2111ce2e +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Tue Nov 18 23:27:54 2014 +0200 + + audiobargraph: boundary check + + (cherry picked from commit 327a8846b43c7e2426efc8e9af04fc5601540812) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 92fd9b9eb5ecb18c34d23382e10bdda7d7d4363b +Author: Paweł Stankowski <aambitny@gmail.com> +Date: Wed Nov 19 02:03:08 2014 +0100 + + Support for newest freerdp snapshot + + Support for 24bpp was removed from freerdp repository in commit + 02c1bf14ce1f3ad2199a349066548977916d9c06. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit b2cdcba9bfd832760679b12960ea11bfeaf84256) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit f235cc6ed2646f3d52f1242d6fa3b7c04e27d9dc +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Wed Nov 19 14:08:29 2014 +0100 + + Contribs: use videolan servers for schroedinger + + (cherry picked from commit c1522ae56c7779126779dc34c0672898a6144421) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 9e49901ee3c853d004f3f6c395af9e30d9e2f41d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Tue Nov 18 23:22:22 2014 +0200 + + OpenMAX IL: do not use Bellagio software implementation + + This wraps libavcodec in a way that is worse that VLC, e.g. without + hardware acceleration. + + (cherry picked from commit 298edea2b51a3dc7b39ae33a3c4bbf476f4e3290) + +commit 6aea17d8fd18f192efa5f607ffbc89938cca5f59 +Author: Hannes Domani <ssbssa@yahoo.de> +Date: Wed Nov 19 18:55:21 2014 +0100 + + wasapi: fix memory leak + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit 6db8aefc4e1c8fd8397e76c4b222aec63ee15ba2) + +commit fb8741292e5200371a87ed984336a1b704cb50de +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Oct 2 20:44:13 2014 +0300 + + bluray: fix compilation as C11 + + (cherry picked from commit 678a61d1b9420462da2115763dfb284cc12074b8) + +commit dd69fa840d580baee41c4c7e96f8c1d37c3c256e +Author: Rafaël Carré <funman@videolan.org> +Date: Fri Nov 14 11:51:16 2014 +0100 + + HLS: Do not assume Content-Length is set + + Fixes #8078 + + (cherry picked from commit b48ee570b0e060d64dec95d460ca919d60d06138) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 88e94aee244499834648054484f4266c88a7e260 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Jul 23 19:27:01 2014 +0300 + + configure: do not redefine _REENTRANT + + This fixes warnings with PulseAudio and with MingW. + + (cherry picked from commit 8dcec7992236b8d2528ab088554766058d71505c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit fd6f171ea5e5e61f9dc89ee8839d81158dc2f8b8 +Author: Martell Malone <martellmalone@gmail.com> +Date: Tue Nov 4 12:48:53 2014 +0000 + + Fix AC_PATH_PROGS for cygwin and msys2 + + Fixes searching for native qt5 progs on cygwin and msys2 + + The reason for the issue is that on windows if there is a space in the path + or if the program is prepends with .exe and we specify the search PATH + in AC_PATH_PROGS we must enclose them in quotes or the program will not be + found. + + For future reference, if anyone uses AC_PATH_PROGS please enclose defined + search paths (if you have any) in quotes + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 636b6c3107f7b797cd16cf84c37d58630a2e201a) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 50ce5550c197c2b48e9e104cc93ae4f53464c4c7 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 18 13:43:56 2014 +0100 + + Youtube: fix playback of recent pages + + (cherry picked from commit 7529f9c0c3d4418a1bc0af2640ce24c450f0e9b1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 81457d29ea424d8e56f489e474761b69f92c457c +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Tue Nov 11 18:50:49 2014 +0100 + + demux: ogg: handle Flac in Ogg frame/packet pairing violation (fix #12706) + + (cherry picked from commit 394c36356e1c59df350ccf287265e3eed4eaf07c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 416d829bb5a02deaee5fa7054bcc04c14fea642a +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Thu Nov 13 12:15:05 2014 +0100 + + Lua: support HTTPS and live for Dailymotion + + Close #12753 + + Thanks to Ruito + + (cherry picked from commit fcef78e37a5bffd23693e898ab5ff41a0d8a6d51) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 2c878ef805672fab82e88bf5ab909663c046368f +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:35:06 2014 +0100 + + HLS: check strtoull parsing + + (cherry picked from commit a7984f0a1cd295f4b80a2003a30dda5ab3b315b0) + (cherry picked from commit cd84eec0f5d64bc4ea6289029cc737e0f8358296) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit bdf63c7e4d89043a823ea168039cc0d9ab7f9366 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:49:41 2014 +0100 + + ZPL: avoid NULL dereference + + (cherry picked from commit b2682aff9c3e85e53e887051833e19b5b0e781a2) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 19f48f102c886f049774ef1ca923fd878bcf28b1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:37:17 2014 +0100 + + VC1: use memmove instead of memcpy on overlapping memory + + (cherry picked from commit 234d20686d2fe81ff2f631b60b5457e507e583b1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit a98e8731e7eba654176d8eea72c3e070ad8b23db +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sun Nov 16 20:13:02 2014 +0100 + + Qt: fix warning by including qt4.hpp + + Ref #12671 + +commit 88f419901d1c1f193e9138db9de712128fc4aaf3 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sun Nov 16 13:03:01 2014 +0100 + + demux: mp4: compute new pos for audio if blockalign is missing + + Prevented playback of blockalign less audio samples + + (cherry picked from commit 901cfac0e6b756cc5b0f93bf49e45666dd65d7a7) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 6fc02a4a6c28271cb5293f7135c5541089d8ae48 +Author: Tristan Matthews <tmatth@videolan.org> +Date: Sat Nov 15 23:46:51 2014 -0500 + + packetizer: flac: recover from bad CRC (fixes #12714) + + (cherry picked from commit c470b251398bc9aefa395865caf3c4c5caacf34a) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 5efafe2debd2bb7264c3acd0392ebc504e7b6dea +Author: Tobias Güntner <fatbull@web.de> +Date: Sat Nov 15 21:39:47 2014 +0100 + + Implement ACCESS_GET_SIZE + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit eb588176daa8160191c9ba0a1cf2d80c2beb4f54) + +commit a20256ad10e3b5fe4737c301240ea32bb7e8b8a5 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sat Nov 15 14:16:33 2014 +0100 + + demux: mp4: fix reading max samples (fix #12764) + + p_chunk->i_sample is next sample, not current + + (cherry picked from commit 5676fd5bf296cd8c1e4de9029ad8c033062b5faf) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit edc84ea054386ce416d47da1ac1ff985e711c8fc +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Sat Nov 15 12:34:48 2014 +0100 + + contrib: harfbuzz: revert version to 0.9.17 + + Starting with harfbuzz 0.9.18 there is a known crash. + Stay with 0.9.17 until this is fixed upstream. + + refs #12425 + + (cherry picked from commit d3e964e8e76ea8d58967b8eb20fe48e30ca0c7ef) + Signed-off-by: David Fuhrmann <dfuhrmann@videolan.org> + +commit da9a1a295ccbc1755b98496854cafcbaeb0c8489 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:49:22 2014 +0200 + + SRTP: integer overflow + + (cherry picked from commit e76f990e0ba00a9f573c23627ecd66cb9ae9bdd5) + +commit f832dd0210c959d48a7486040b4d177107447c2a +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:47:29 2014 +0200 + + SRTP: integer overflow + + (cherry picked from commit ab9f28ff688eae845bc2deb62bf50072d4a4690b) + +commit 7e421f7c753ca09e21d3c5dcfd109254cca36551 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:39:19 2014 +0200 + + interlacing: fix overlapping memory copy + + (cherry picked from commit 2f1737e730e6e8844a93a32b236e36b16eb9bf33) + +commit eb3c35c674705230ceaf13b1dd0b9d8948a2f0fe +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:31:02 2014 +0200 + + style: copy-paste error + + (cherry picked from commit 2e8ae8bc6e65da672e544c69199f6f738cafcba3) + +commit 98c3fc3964e1f5692aec474c5b4fb71d1cc8a82f +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:26:32 2014 +0200 + + epg: memory leak + + (cherry picked from commit f1c04981d9c01d679954b1a33ea3ea124b78a345) + +commit dd090fbcd6f3bf9362d67a4e27c1a8e2f097b6c9 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:24:05 2014 +0200 + + udp: memory leak + + (cherry picked from commit 00b9dd8cbcd4ccd466a28d4f3fa2b7b605ca6276) + +commit 13d9684ad44d519b3eb73c32d60a77f5a5a8773e +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:20:53 2014 +0200 + + ftp: fix leak + + (cherry picked from commit f03324bb7ef555420b6b106a40ca833777072b26) + +commit 24cb4c71a5658716384653a7ac565b57910cae4d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:14:24 2014 +0200 + + str_format_meta: rewrite and fix leaks due to expansion-unsafe macros + + (cherry picked from commit 1d410d6d4cb3de58125cbb5db431d6ad9381b0e0) + + Conflicts: + configure.ac + +commit e35772f8a82e83fc11c2059c535aa5419d8ea7f1 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Nov 12 22:10:36 2014 +0200 + + directsound: fix uninitialized mutex and condition variable + + Regression from 3044105e9d4664609a7d749469fe0fd6d85e90ff. + + (cherry picked from commit 2d3723d149044db9dff5b05035c7efce5e5200f9) + +commit def455a1bc3644ff7a421781ed95c64e53f26f30 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Wed Nov 12 10:40:11 2014 +0100 + + Mention translations in NEWS + +commit 62d4f410f7bbe234b12671215059420c38c858e8 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:24:07 2014 -0500 + + l10n: Traditional Chinese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 711c032eda3b0fa7324b9ee56e618fde371f39e0 +Author: Dean Lee <xslidian@gmail.com> +Date: Tue Nov 11 15:23:39 2014 -0500 + + l10n: Simplified Chinese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit da3402d02cca7822d5fdbc98457cc36cee83cfb6 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:22:39 2014 -0500 + + l10n: Vietnamese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit bb4a3f53a8cf9f37ad487618fbfbb3337a78d861 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:21:50 2014 -0500 + + l10n: Uzbek update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 9123dbfd83d20b3628fc0e9b6b7a82537ea01ba3 +Author: Andriy Bandura <andriykopanytsia@gmail.com> +Date: Tue Nov 11 15:19:54 2014 -0500 + + l10n: Ukrainian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 8918c09a7c6cb7fa3465ab665337be9f4a944616 +Author: Kaya Zeren <kayazeren@gmail.com> +Date: Tue Nov 11 15:19:05 2014 -0500 + + l10n: Turkish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 748ed06889c5813216ad9608de378ec6db8eed81 +Author: Thanakrit Chomphuming <jernghan@gmail.com> +Date: Tue Nov 11 15:17:33 2014 -0500 + + l10n: Thai update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 646183ae9d34d0efcda6fcadd494b46c7bbcd6a2 +Author: A. Regnander <anton_r_3 at hotmail.com> +Date: Tue Nov 11 15:13:19 2014 -0500 + + l10n: Swedish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5dfabe31e4466da432e60b19427fdabdefc70ce0 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:09:34 2014 -0500 + + l10n: Serbian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 09c1a627ca10d15244f08311b7c2b7d9991ada0e +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:05:30 2014 -0500 + + l10n: Albanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit aca243e4978e8d7e7a68093e1903041d2499109d +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:37:12 2014 -0500 + + l10n: Slovenian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit e5d6ebf40179a9c17cc3ff910715b5834156353a +Author: Marián Hikaník <mhikanik@users.sourceforge.net> +Date: Tue Nov 11 14:34:13 2014 -0500 + + l10n: Slovak update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 48ec30a75fcc746b0419db41cb9dd9939435b97e +Author: Alexander Lakhin <exclusion@gmail.com> +Date: Tue Nov 11 14:32:37 2014 -0500 + + l10n: Russian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 7bf9d7aed65e003747beb97d560a2b90586ef33c +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:30:29 2014 -0500 + + l10n: Romanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit a00a0d51e7c53ae8f284af08f7950292fce2428b +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:28:11 2014 -0500 + + l10n: Brazilian Portuguese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4bdd28bf85d0a6a4e593487416e40f617e2c2d84 +Author: Michał Trzebiatowski <hippie_1968@hotmail.com> +Date: Tue Nov 11 14:13:02 2014 -0500 + + l10n: Polish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 47a9990f120f0a3877c91c28dffd5dc9e47d8f72 +Author: Amanpreet Singh Alam <apbrar@gmail.com> +Date: Tue Nov 11 14:10:36 2014 -0500 + + l10n: Punjabi update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit be038c5d28142cc5f007a94c8f97064d7004229e +Author: Thomas De Rocker <thomasderocker@hotmail.com> +Date: Tue Nov 11 14:09:35 2014 -0500 + + l10n: Dutch update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 6104295f95023d29878f7db93b844f15343af397 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:07:51 2014 -0500 + + l10n: Nepali update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3020253a10b2249ce6d1ad8fbf18819eba4c2c78 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:02:54 2014 -0500 + + l10n: Norwegian Bokmål update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 95ab87ec67b23a4b284ffa74db3f300461575b07 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:00:32 2014 -0500 + + l10n: Malay update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 417f18b4dbef78de93538114494cce6c9bb28aa1 +Author: Suraj Kawade <suraj.kawade@gmail.com> +Date: Tue Nov 11 13:58:26 2014 -0500 + + l10n: Marathi update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit f4629394bd525fe7ab086e61da0b0cb10a81e62c +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:50:35 2014 -0500 + + l10n: Latvian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a16c3e8e315aa35f98c1e93411685b1e17791f4 +Author: Mindaugas Baranauskas <embar@super.lt> +Date: Tue Nov 11 13:49:21 2014 -0500 + + l10n: Lithuanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit ef6a94c51818632f9fb32b27c578ce357fe80201 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:37:29 2014 -0500 + + l10n: Korean update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4cd785c001a650e9faf05fb51ce1422cd1a7df2e +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:35:02 2014 -0500 + + l10n: Kannada update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit c6bb4fbdfb67176c5b1743ac7d2ef11ce7082a62 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:32:52 2014 -0500 + + l10n: Khmer update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5f7e08c47b991e8ecf69b3ec995d40b8874457d6 +Author: Fumio Nakayama <fumio.n6a@gmail.com> +Date: Tue Nov 11 13:28:33 2014 -0500 + + l10n: Japanese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5ee1740cae45f61ae316e6a6c8b7bdc95cd4017b +Author: Vincenzo Reale <smart2128@baslug.org> +Date: Tue Nov 11 13:27:44 2014 -0500 + + l10n: Italian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a86fc70b28e38ffcb869f9b0aab961e4c2e9c88 +Author: Sveinn í Felli <sveinki@nett.is> +Date: Tue Nov 11 13:25:58 2014 -0500 + + l10n: Icelandic update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit d941878a2ee5d2d4a2493f5117d273983f4b035a +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:25:26 2014 -0500 + + l10n: Indonesian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit a089995a3fa40e5b867f14475cb54145f268d80d +Author: Yaron Shahrabani <sh.yaron@gmail.com> +Date: Tue Nov 11 13:22:57 2014 -0500 + + l10n: Hebrew update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit dac8c1eba3ae8ae548d0b04be6c623337a186615 +Author: Gonçalo Cordeiro <gzcordeiro@gmail.com> +Date: Tue Nov 11 13:21:31 2014 -0500 + + l10n: Galician update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 1b2f0c4e6f47927c32469f7aca3d9057b968915f +Author: Michael Bauer <fios@akerbeltz.org> +Date: Tue Nov 11 13:19:59 2014 -0500 + + l10n: Scottish Gaelic update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3032ae8fe0cc81146d24e101bef39bd1ee22bda1 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:17:04 2014 -0500 + + l10n: French update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 6927d4ee901681de221aeda442883789cb723b57 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:11:34 2014 -0500 + + l10n: Finnish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 53cdf53a186da2db1b1c6c883d5c8098543b4dd5 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:09:23 2014 -0500 + + l10n: Persian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 922af55e518ed7a63d469dfa40eb8140d3a2fa93 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:08:23 2014 -0500 + + l10n: Estonian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3cd061ef6b137de482face57507241b0c35cea67 +Author: David González <pico.dev@gmail.com> +Date: Tue Nov 11 13:06:18 2014 -0500 + + l10n: Spanish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5688c4b329009b4e02b93c1e5c123a58863fe9cf +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:02:52 2014 -0500 + + l10n: Spanish (Mexico) update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit e593570a3539aab59c36d1a682b3c23f0e1b9e12 +Author: Savvas Nesseris <modernphilosopher82-2011@yahoo.com> +Date: Tue Nov 11 13:01:02 2014 -0500 + + l10n: Modern Greek update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4d28d45158c6a99c6efd31ebf501b0fc6a315503 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:55:35 2014 -0500 + + l10n: German update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit be2abc9c9d8cebe9b900bd59a4a6f521f4569e28 +Author: Aputsiaĸ Niels Janussen <aj@isit.gl> +Date: Tue Nov 11 12:52:41 2014 -0500 + + l10n: Danish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 21d63530926e7a82dc5e569212e857698a6d4b91 +Author: Aled Powell <aled@aledpowell.com> +Date: Tue Nov 11 12:51:36 2014 -0500 + + l10n: Welsh update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit dfee41e1553364ca706b3bbaad7ddf888549fbdb +Author: Tomáš Chvátal <tomas.chvatal@gmail.com> +Date: Tue Nov 11 12:50:54 2014 -0500 + + l10n: Czech update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 189a2d8f0ee371d3babb09ea3633468a8b82bf8f +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:48:54 2014 -0500 + + l10n: Catalan update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 122972ce32f6ee64389a498d3b714d93dc649b08 +Author: Adnan Memija <sream_92@live.com> +Date: Tue Nov 11 12:46:51 2014 -0500 + + l10n: Bosnian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a2531a90a31d571131f2363e1a3e08dc54087ba +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:40:57 2014 -0500 + + l10n: Bengali update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 1f36d746392d840015f16924bc480a16a413783f +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:31:32 2014 -0500 + + l10n: Asturian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit d8a94f38be83f37b85d9ea965d61cb8b1ac7f112 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:22:44 2014 -0500 + + l10n: Amharic (Ethiopia) update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit ee7783e6ac69666b9dbf427932aca463f6cac01d +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 11:56:43 2014 +0100 + + macosx: simplify playlist duration calculation + + (cherry picked from commit 6e24206e034f6bafc3a8d552b5f281a3512100eb) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 1f3635252061ec73b3310cf7e5bb20318d6f9607 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 12:11:02 2014 +0100 + + macosx: robustify media key trap handling + + Only start and stop media key support when needed (ressource-intensive). + + (cherry picked from commit 272b0ffa072918603894ecbb22e037824f1dbcfa) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit d72c23fd708c8798e2fd997ab7fa06f86f4845c1 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 11:24:45 2014 +0100 + + macosx: do not allow playlist item deletion for sd modules + + close #12423 + + (cherry picked from commit 028d21434fc906d94caa4a2b3eb0e1a4a40cdabc) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 2d09517e9e006dd509faaaacc5125df5ee64f7f7 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 10:51:51 2014 +0100 + + macosx: fix memleaks in podcast handling, remove unnecessary module restart + + (cherry picked from commit 3788f1cb25bea9f38d19a22e496474bfdd5a6ef1) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit ccaac06a25c97de3f7c693ea0638c93425bb416f +Author: Brion Vibber <brion@pobox.com> +Date: Mon Nov 10 20:13:48 2014 -0800 + + Fix quoting on iOS VPX_LDFLAGS for latest changes + + This gets quoted later, so don't quote it first. + + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + (cherry picked from commit 94bb3d34edf6b8d5c1163a35fe9517f799824eae) + +commit e0bd6723259b4c3e3357c4c1c4be2dd15db7c1f1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:36:16 2014 +0100 + + On the way to RC2 + +commit 5bf564535c6c25257259cba5276ca4c3c5032e13 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Sep 12 09:07:17 2014 +0200 + + lua: Update VLSub to 0.9.13 + + (cherry picked from commit cbce4489c7d788483ef4a2fb1b6708c0df765aa8) + (cherry picked from commit 4b07f72828f93289b70365dfa9d729f4d4a2dff2) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 529932ce5fc244dfe63e5fae90a4287a64f933eb +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:11:00 2014 +0100 + + Contribs: update PNG to 1.6.14 + + (cherry picked from commit 46aa9db68489337e05019d5ac3388b55e45bbe6f) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 88aa4d06586b8be9c4994b9722d558bc07bc44d1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:09:00 2014 +0100 + + Contribs: update GnuTLS to 3.2.18 + + (cherry picked from commit b63dc639c0e566cfe3b5b941601e060c6d24f501) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 602adce99b422a2812133412f81d7a27fe53f4e5 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:02:30 2014 +0100 + + Contribs: update gpg-error to 1.17 + + (cherry picked from commit 665d9c7dc8525c07b214627a5c14dacc7ca3a42e) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 8afd32c467e174547c39f02411caed11128d5ba6 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 15:57:04 2014 +0100 + + Contribs: update libass to 0.12.0 + + (cherry picked from commit 5e9a545dd63816b3fa8d45665288b8fb82d68e75) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit d5463d3c18d728825bb09ce0d6a74b7a291ce384 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 12:45:52 2014 +0100 + + Koreus: improve parsing and improve HTTPS + + Close #12744 + + Thanks to Ruito + + (cherry picked from commit aacca35310f0395b6715d282548ff8221beee836) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 99f76cecbd9dc16f98988d9cbd6bc6db593b2b4c +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Mon Nov 10 21:39:39 2014 +0100 + + demux: avi: fix non fixed sample size ADTS/AAC (fix #12727) + + (cherry picked from commit 600d5e3974ef4ee7242dbc3411dd0dfe59f029c1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit e0218024c96369dcffda5250e29ad7a1f57324d1 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 10 23:00:38 2014 +0200 + + psychedelic: fix scaling crash due to invalid video format + + (cherry picked from commit 61ed600c10c3521aa92054da6c19bc8d80bbf245) + +commit 4b961ac47f2a02e2acd00429c713615ddf660710 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 10 22:55:21 2014 +0200 + + ASCII Art: fix invalid video format, crash in scaling + + (cherry picked from commit 583dbc92c7caef8fd42f012f83ef65189077b991) + +commit 15d6df200df62e77551fc35819e43f70d217ecd1 +Author: Thomas Guillem <tom@gllm.fr> +Date: Sat Nov 8 23:27:53 2014 -0800 + + android/jni: use a libvlcjni function to attach/detach java thread + + Fix ART warning about java thread attached without a name. + + (cherry picked from commit d26fefcfa700d3a9c1b2c26f30a1667e72ac381b) + Signed-off-by: Edward Wang <edward.c.wang@compdigitec.com> + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit b64149c03b9238fc8204f02f271a63cf58bf2d77 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sun Nov 9 19:59:05 2014 +0100 + + stream_filter: smooth: fix write overflow + + (cherry picked from commit 04b5c18015781108cd39d5617751afce5e5dcfdf) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 91603afb1c56ab0b7b23c55e2d4422dfab3452df +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 9 20:09:07 2014 +0200 + + xmlent: test case for previous commit + + (cherry picked from commit 93126b672e3abff913e9a72bf5077098ac87f580) + +commit 8fa73247c32e9521f867443d5ae0eba85e1afcbb +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 9 20:08:35 2014 +0200 + + strings: add missing support for hexadecimal XML chracter encoding + + (cherry picked from commit 3eee999c45a150aede6233e7bbd7064949c84012) + +commit 330c495ac660e1851324a959a3146032f66e8c70 +Author: Tristan Matthews <tmatth@videolan.org> +Date: Sat Nov 8 13:04:10 2014 -0500 + + codec: mpeg_audio: fix pts update + + Fixes #12722 + + (cherry picked from commit 72b03859fd8b715d9baeb5b378170d81517b01e8) + +commit 5bf84f029b040445afeaa7d16351afd2acb3e5ef +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 2 10:16:49 2014 +0200 + + trivial_mixer: rewrite, fix dual-mode (fixes #12673) + + (cherry picked from commit a6c5f999ea28070c73f3c7db47414f666fdd6265) + (cherry picked from commit 1047340ebc8f59895d7ad8747f7ec48528a31f64) + (cherry picked from commit 81765639fdae8b0c9532c31e90e49eb6aecd5d72) + (cherry picked from commit d6388f26bb6efef29397ba91b02befc427b3423e) + (cherry picked from commit 4e63463ac0022f7eca3c4b9decb6ad5501b7ce38) + (cherry picked from commit 4d6a9eaa413c73277648d4f98c5da1840f997b33) + +commit a7336c2a0da897acbf708b03ab0698c4a71862fb +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Mon Nov 3 11:41:57 2014 +0100 + + Win32: sign dlls and exe + + (cherry picked from commit 7c653e6ab5bcd0ca9f459c015a0c43a998d09c74) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit b39439bc5539e123e405e3d7ab0158d9c57f7762 +Author: Sean McGovern <gseanmcg@gmail.com> +Date: Thu Nov 6 22:31:09 2014 -0500 + + vpx: properly quote VPX_LDFLAGS + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 7a291b65d38daccdbabe55c3d3dcb1b3c2375222) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 3f30b88f7b0ef65c5b471f9941fda2bbbb1e3d2d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Nov 6 23:14:22 2014 +0200 + + atmo: fix invalid delete + + (cherry picked from commit f938a451ae4802f7cbbf32a663c0018b851f155a) + +commit 3147bfede3d6661c4a7f8c1f7109d132497990aa +Author: Sean McGovern <gseanmcg@gmail.com> +Date: Thu Nov 6 10:48:15 2014 -0500 + + dca: force gnu89 C standard + + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + (cherry picked from commit 3618f40881367d66fa7d961330e6fc6f1e4df683) + +commit 6b3f4ad061adc1a2402c08df20be5f3a8515799c +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Tue Nov 4 21:41:53 2014 +0100 + + contrib/avcodec: pass extra CFLAGS as LDFLAGS on iOS to have the needed flags + + (cherry picked from commit f52e54b24015419c09db0c608caeb75232d3206a) + +commit bcea63b6e20eed27329424421fc4e9669270d5e2 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Tue Nov 4 21:41:00 2014 +0100 + + extras/ios: rework LDFLAGS handling and enable vpx for the scary build flavor + + (cherry picked from commit a9c89123ff7576aa42bcfd5e9792479c307011a4) + +commit 9adcc627ce59425231b5e2f645c5e63a533fd04d +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Fri Oct 31 19:05:48 2014 +0100 + + contrib/vpx: fix compilation for iOS + + (cherry picked from commit 8546622b50a69a6693d4c77674b0730d0e16a0d2) + +commit acacaebfde04eda320d9a829bc3489c0a6ada27d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Nov 5 23:23:35 2014 +0200 + + mosaic: use after free + + (cherry picked from commit d0b6ecb24e52d943bbb2f0debdc4237b4b112aee) + +commit fea994f54f5832df7c2d4c63a8fa38118f4b3aa9 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Wed Nov 5 00:12:51 2014 +0100 + + contrib/sparkle: fix runtime exception on snow leopard + + (cherry picked from commit fa447d33bcf2a957d590d90fd362744c1b69ea7a) + +commit 57c046ce11210fb354da42e07ef99b724bf2d716 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 3 18:10:15 2014 +0200 + + vmem: unlock before display + + The documentation promises that the picture is unlocked before it is + displayed, so actually do that. + + (cherry picked from commit 0887539916acdb4276eed910cf88178084d9dba6) + +commit 95774591eed71ca9a5479ad29c2e6bab74b88de5 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Mon Nov 3 14:13:29 2014 +0100 + + NEWS: update for RC1 + +commit 443b85e2ae10e97f49f592697160cbd2c1719978 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Mon Nov 3 14:12:56 2014 +0100 + + Contribs: update FFmpeg/libav to a more recent sha1 + +commit 8a35de15ffb718915700695cf9c80d16ac98d2e3 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Mon Nov 3 14:08:33 2014 +0100 + + Update PO + commit 5a53ff0de2eeaab69980975ec8a4c6e6b78f190a Author: Rémi Denis-Courmont <remi@remlab.net> Date: Sun Nov 2 11:35:16 2014 +0200 @@ -19007,9 +20096,3 @@ Date: Wed Jan 1 18:38:19 2014 +0200 libvlc: remove "evil" daemon global variable and clean up (The unlikely corner case of ENOMEM remains unhandled/unfixed.) - -commit ec44ae90ab3beb3f06371d506fd3e2ad104f9796 -Author: Rémi Denis-Courmont <remi@remlab.net> -Date: Wed Jan 1 17:57:26 2014 +0200 - - Remove stray comment diff --git a/NEWS b/NEWS index 4bfd1e0..22c97d6 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -Changes between 2.1.x and 2.2.0-rc1: +Changes between 2.1.x and 2.2.0-rc2: -------------------------------- Important changes: @@ -162,7 +162,16 @@ Removed modules: * dirac encoder: use schroedinger Translations: - * Update of all translations + * New translation in Urdu, Tatar, Silesian, Samoan, Kapampangan, N'ko, + Kurdish, Kabyle, Mexican Spanish, Catalan, Amharic + * Update of all translations: + Traditional Chinese, Simplified Chinese, Vietnamese, Uzbek, Ukrainian, + Turkish, Thai, Swedish, Serbian, Albanian, Slovenian, Slovak, Russian, + Romanian, Brazilian Portuguese, Polish, Punjabi, Dutch, Nepali, Norwegian + Bokmål, Malay, Marathi, Latvian, Lithuanian, Korean, Kannada, Khmer, + Japanese, Italian, Icelandic, Indonesian, Hebrew, Galician, Scottish + Gaelic, French, Finnish, Persian, Estonian, Spanish, Modern Greek, German, + Danish, Welsh, Czech, Bosnian, Bengali, Asturian Changes between 2.1.4 and 2.1.5: diff --git a/configure.ac b/configure.ac index b603a3b..b309ba1 100644 --- a/configure.ac +++ b/configure.ac @@ -2,12 +2,12 @@ dnl Autoconf settings for vlc AC_COPYRIGHT([Copyright 2002-2014 VLC authors and VideoLAN]) -AC_INIT(vlc, 2.2.0-rc1) +AC_INIT(vlc, 2.2.0-rc2) VERSION_MAJOR=2 VERSION_MINOR=2 VERSION_REVISION=0 VERSION_EXTRA=0 -VERSION_DEV=rc1 +VERSION_DEV=rc2 PKGDIR="vlc" AC_SUBST(PKGDIR) @@ -56,7 +56,11 @@ AC_PROG_CC_C99 AC_USE_SYSTEM_EXTENSIONS AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.]) AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.]) -AC_DEFINE([_REENTRANT],, [Define to expose reentrant functions.]) +AH_TOP([ +#ifndef _REENTRANT +# define _REENTRANT +#endif +]) AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.]) AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.]) AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.]) @@ -529,7 +533,7 @@ need_libc=false dnl Check for usual libc functions AC_CHECK_DECLS([nanosleep],,,[#include <time.h>]) -AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale]) +AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale]) AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp]) AC_CHECK_FUNCS(fdatasync,, [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) @@ -3717,9 +3721,9 @@ AS_IF([test "${enable_qt}" != "no"], [ ]) QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)" QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)" - AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin]) - AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin]) - AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, [${QT_HOST_PATH} ${QT_PATH}/bin ${CONTRIB_DIR}/bin]) + AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"]) + AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"]) + AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin" "${CONTRIB_DIR}/bin"]) ], [ PKG_CHECK_MODULES([QT], [QtCore QtGui >= 4.6.0],, [ AS_IF([test -n "${enable_qt}"],[ @@ -3730,9 +3734,9 @@ AS_IF([test "${enable_qt}" != "no"], [ enable_qt="no" ]) QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix QtCore)" - AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin]) + AC_PATH_PROGS(MOC, [moc-qt4 moc], moc, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"]) AC_PATH_PROG(RCC, rcc, rcc, [${QT_PATH}/bin ${CONTRIB_DIR}/bin]) - AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, [${QT_PATH}/bin ${CONTRIB_DIR}/bin]) + AC_PATH_PROGS(UIC, [uic-qt4 uic], uic, ["${QT_PATH}/bin" "${CONTRIB_DIR}/bin"]) ]) ]) AS_IF([test "${enable_qt}" != "no"], [ diff --git a/debian/changelog b/debian/changelog index 331e086..f6c7168 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +vlc (2.2.0~rc2-1) UNRELEASED; urgency=medium + + * New upstream release. + - Fix segfault in ASCII art plugin. (Closes: #768873) + - Fix selection of left/right channel in stereo mode. (Closes: #765830) + + -- Sebastian Ramacher <sramacher@debian.org> Sat, 22 Nov 2014 22:37:06 +0100 + vlc (2.2.0~rc1-1) unstable; urgency=low * New upstream release. diff --git a/doc/ChangeLog-2004 b/doc/ChangeLog-2004 index 43771f9..4823ce8 100644 --- a/doc/ChangeLog-2004 +++ b/doc/ChangeLog-2004 @@ -22550,3 +22550,10 @@ Author: Rocky Bernstein <rocky@videolan.org> Date: Fri Jan 2 04:44:34 2004 +0000 Attempt to make easier to understand and easier to complete. + +commit 78e3a1d6b6300901766a16ab784dafd80d45ee01 +Author: Clément Stenac <zorglub@videolan.org> +Date: Thu Jan 1 17:41:25 2004 +0000 + + * Updated german and french translations + * Updated version number and Changelog diff --git a/doc/ChangeLog-2005 b/doc/ChangeLog-2005 index f64143b..26a858e 100644 --- a/doc/ChangeLog-2005 +++ b/doc/ChangeLog-2005 @@ -22696,3 +22696,22 @@ Author: Felix Paul Kühne <fkuehne@videolan.org> Date: Sun Jan 2 18:58:53 2005 +0000 * moved the preferences-window to a seperate nib-file + +commit 46f1af78e551014ce2e88d6924b71b5f4502f34c +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Sat Jan 1 18:13:51 2005 +0000 + + * give credit to Jonas Larsen for creating the Danish l10n + * replace all "@" with " at " + +commit d1ddeb74fd85b4837e5a2d37a2088b7405397aa6 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Sat Jan 1 17:54:05 2005 +0000 + + * build libiconv without i18n-support, so it can be compiled without gettext -- gettext will be compiled afterwards, so it can take advantage of libiconv + +commit 5fc224c4aadc7f7eb1085a207341105838231ca9 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Sat Jan 1 16:29:51 2005 +0000 + + * make sure gettext is built before libiconv, since it is needed for its compilation diff --git a/doc/ChangeLog-2007 b/doc/ChangeLog-2007 index 1c63018..7067f01 100644 --- a/doc/ChangeLog-2007 +++ b/doc/ChangeLog-2007 @@ -32311,3 +32311,15 @@ Author: Felix Paul Kühne <fkuehne@videolan.org> Date: Mon Jan 1 22:39:01 2007 +0000 * using GCC 3.3 with the 10.3.9 SDK is definitelly no good idea. x264 and libtwolame remain broken for future d. releases + +commit 2a35ffae6fc5f9ee8b8c81177a4902f72f6239ce +Author: Jean-Paul Saman <jpsaman@videolan.org> +Date: Mon Jan 1 18:56:37 2007 +0000 + + Patch by Mikko Hirvonen <masse at astro dot helsinki dot fi> for Firefox-1.5.x development tools detection in configure.ac. The patch is applied with some modifications of me + +commit 641707d30e39c4cfa108587019817c96695cef21 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Mon Jan 1 17:05:32 2007 +0000 + + * added out-of-the-box support for future darwin releases. right now, the following libraries are broken (due to linking issues): cdio, cddb, vcdimager and twolame. additionally, x264 doesn't compile because of a bug in makefile/config.mak. diff --git a/doc/ChangeLog-2008 b/doc/ChangeLog-2008 index 222a263..f314547 100644 --- a/doc/ChangeLog-2008 +++ b/doc/ChangeLog-2008 @@ -53571,3 +53571,129 @@ Author: Pierre d'Herbemont <pdherbemont@videolan.org> Date: Tue Jan 1 21:57:48 2008 +0000 MacOSX/VLC_app/VLC.xcodeproj: Create three different targets to have more grain control over the dependencies. And fix the framework installation script. Default the use of the vlc-contrib-core-framework-app Target. + +commit 361d1636a38d6c3ac50360235be353a7cfcab160 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 21:49:30 2008 +0000 + + MacOSX/Framework/VLC.xcodeproj: Don't show the env var when executing scripts. (2nd). + +commit d42ca251ef780d16e715c2aba042ae918d89b54d +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 21:42:10 2008 +0000 + + MacOSX/VLC_app/VLC.xcodeproj: Work around what seems to be a Xcode bug. We can't use the VLC.framework in the Copy Phase. + +commit 7596446d000b6a3411bf8bb803037ac95a42785b +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 21:41:18 2008 +0000 + + MacOSX/Framework/VLC.xcodeproj: Remove debug print of the variables when launching our scripts. + +commit da2e003a8290621da2eb4099da79fb75852bd70c +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 21:31:51 2008 +0000 + + MacOSX/Framework/VLC.xcodeproj: Allow one-click build for the whole contrib-core-module-framework. + +commit ce9f843609cf1f73c8f69f1c84646d7e708a7f79 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 21:28:24 2008 +0000 + + MacOSX/VLC_app/VLCController.m: Remove dead category. + +commit 9fe304603a31b2c01b910ab0977bd8f72e3133df +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 20:38:24 2008 +0000 + + VLC_app/VLC.xcodeproj: Correctly add a dependancy for the VLC.framework. (Thanks to Julien Robert). + +commit a3d1163009fd3b54dfa094521961317c25d7039a +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 19:24:58 2008 +0000 + + extras/MacOSX: Dead code removal. Not working code removal. + +commit b92ad8fc4b6c67a3a57859aee10525c2b705304d +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 19:16:38 2008 +0000 + + VLCController.m: Remove unneeded code. + +commit 0a73fb583e66d2c9e4ef0917ffe8353c812871d8 +Author: Damien Fouilleul <damienf@videolan.org> +Date: Tue Jan 1 18:48:24 2008 +0000 + + configure: reworked MacOS X SDK options, now use --with-macosx-sdk=DIR and --with-macosx-version-min=VERSION + +commit a4b0c7d0ff346bb1c9fc3e94e26928864816a9e5 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Tue Jan 1 18:26:08 2008 +0000 + + macosx: fixed on-the-fly-changing of the adjust filter. code cleanup. Thanks to Antoine for pointing in the correct direction + +commit 99f6722d6c42bd408e50c43e7ab397cbb0b33667 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 18:03:56 2008 +0000 + + Revert [23949]. + +commit 054a2b0615657a039bd8bbf257a68df1b59ed43e +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 17:06:40 2008 +0000 + + svn:keywords. + +commit b83ae6b44b26c3db50a9875b30479da954f4d72c +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 16:46:55 2008 +0000 + + VLCExceptionHandler.m: -initialize to -load. initialize gets called to late or never. + +commit 8d5d2f839b28e3aebe560463cf5b3a977c6ef385 +Author: Rémi Duraffort <ivoire@videolan.org> +Date: Tue Jan 1 16:43:09 2008 +0000 + + Little correction of the double-clicks detection under sdl + +commit bace31c80180283b84d4794e54d6521cf838e969 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 16:23:38 2008 +0000 + + MacOSX/VLC_app: Add MainWindow.xib. + +commit 77d74ab447b6d78f765ea35e5eddf820d6e3f156 +Author: Christophe Mutricy <xtophe@videolan.org> +Date: Tue Jan 1 16:19:50 2008 +0000 + + Happy new year (2) + +commit b6dd543eb1394707708274a7686d1b07c9c6b98c +Author: Christophe Mutricy <xtophe@videolan.org> +Date: Tue Jan 1 16:19:02 2008 +0000 + + Happy new year + +commit 9cd8c3cac199bb326c3e6fb84851855aa7ac4470 +Author: Antoine Cellerier <dionoea@videolan.org> +Date: Tue Jan 1 16:17:42 2008 +0000 + + Fix the video controls extended panels (make extensive use of the object's name). + +commit 2b69849b1228b2453fcea3c9f8a19893a93a0462 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 16:15:23 2008 +0000 + + Fix previous commit. + +commit 991f12499f32b787c23b3a77cd0279ea2bd2994d +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 16:13:58 2008 +0000 + + VLC_app/VLCMainWindow.h: Fix a warning, about the wrong type of the slider outlet. + +commit 9b675d98d239a28d1db37486b711b2107763be56 +Author: Pierre d'Herbemont <pdherbemont@videolan.org> +Date: Tue Jan 1 16:08:00 2008 +0000 + + VLCMediaList.m: Don't mess between node hierachical and hierarchical cached copy of the MediaListAspect. diff --git a/doc/ChangeLog-2009 b/doc/ChangeLog-2009 index f56bf42..2bbfd16 100644 --- a/doc/ChangeLog-2009 +++ b/doc/ChangeLog-2009 @@ -49790,3 +49790,9 @@ Date: Fri Jan 2 10:55:17 2009 +0200 playlist: Don't assume that psz_name != NULL as GetName can return NULL and strcasecmp doesn't like comparing NULLs + +commit 8dca232ea871a54ee3089bddf6650a5a241532e9 +Author: Rémi Duraffort <ivoire@videolan.org> +Date: Thu Jan 1 21:39:37 2009 +0100 + + taglib: read and write some APE tags. diff --git a/doc/ChangeLog-2010 b/doc/ChangeLog-2010 index 2aaf340..9affd85 100644 --- a/doc/ChangeLog-2010 +++ b/doc/ChangeLog-2010 @@ -38586,3 +38586,30 @@ Author: Jean-Baptiste Kempf <jb@videolan.org> Date: Fri Jan 1 23:55:10 2010 +0100 Win32: Be sure to strip axvlc.dll and npvlc.dll + +commit f40ec470c9a04e91c9102c764db5b92828ad1849 +Author: Pierre d'Herbemont <pdherbemont@free.fr> +Date: Fri Jan 1 18:42:30 2010 +0100 + + macosx/framework: contrib are fat now. + +commit 5a20b90e8c6920a79d7d7b7ca56fb011b97dfc73 +Author: Pierre d'Herbemont <pdherbemont@free.fr> +Date: Thu Dec 31 20:36:00 2009 +0100 + + macosx/framework: Support multiple architectures. + + Warning, building fat are not supported by automake if dependency-tracking is enabled. + That's why this fat build is disabled by default. + +commit 65ed93af7b623248bae389f656698248fe52bf8f +Author: Pierre d'Herbemont <pdherbemont@free.fr> +Date: Thu Dec 31 19:33:06 2009 +0100 + + configure: Detect fat contribs. + +commit 2e024847e1bbfad3ddf4aa9fcb01c90c0e41c854 +Author: Pierre d'Herbemont <pdherbemont@free.fr> +Date: Thu Dec 31 19:30:49 2009 +0100 + + contrib: Build fat binary using binary contrib on Mac OS X. diff --git a/doc/ChangeLog-2013 b/doc/ChangeLog-2013 index 1e5eeb6..6dba363 100644 --- a/doc/ChangeLog-2013 +++ b/doc/ChangeLog-2013 @@ -25758,3 +25758,23 @@ Date: Wed Jan 2 00:49:01 2013 +0100 The left and right arrow keys have not any real advantage / functionality for the playlist view or sidebar but are used by default for several hotkeys. So lets allow these as VLC hotkeys (also for audio files). + +commit fccc6ab913cad66c50b98d1ac14d2fe1f41f7453 +Author: Rafaël Carré <funman@videolan.org> +Date: Tue Jan 1 20:18:09 2013 +0100 + + Happy new year 2013 + +commit 10af2bf60149ab5ae08cb82d4fadfbb7b65897c4 +Author: Timo Rothenpieler <timo@rothenpieler.org> +Date: Tue Jan 1 18:23:00 2013 +0100 + + vaapi: Use vaDeriveImage instead of vaGetImage if available + + Signed-off-by: Rafaël Carré <funman@videolan.org> + +commit 10d7463d9b9f664f7ccffd77da583db4304653d0 +Author: Rafaël Carré <funman@videolan.org> +Date: Tue Jan 1 18:04:54 2013 +0100 + + oldrc: fix segfault diff --git a/doc/ChangeLog-2014 b/doc/ChangeLog-2014 index 0e171a9..17bc101 100644 --- a/doc/ChangeLog-2014 +++ b/doc/ChangeLog-2014 @@ -1,3 +1,1074 @@ +commit 0f9d34948327e382cf33c3f75d1baffe472b3e3e +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Nov 21 16:56:56 2014 +0100 + + Update PO files + +commit 22fda3914ad118035162ddea9d64b6dfa4b4f071 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Nov 20 22:21:10 2014 +0200 + + mmdevice: fix volume scale (fixes #12825) + +commit a8d46dc70a6f8337f340ea5ffb52881c6382061e +Author: KO Myung-Hun <komh78@gmail.com> +Date: Thu Nov 13 17:07:00 2014 +0900 + + dvdnav: fix compilation on OS/2 + + ----- + access/dvdnav.c: In function 'ProbeDVD': + access/dvdnav.c:1469:6: error: implicit declaration of function 'read' [-Werror=implicit-function-declaration] + || read( fd, iso_dsc, sizeof (iso_dsc) ) < (int)sizeof (iso_dsc) + ^ + access/dvdnav.c:1481:5: error: implicit declaration of function 'close' [-Werror=implicit-function-declaration] + close( fd ); + ^ + ----- + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit 4bcf8bd7ae0e00e9e1a55fce2e559a5dc465a29f) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 5f26e7d35cbb37951678313174b6db689b88e4e0 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Nov 14 23:50:52 2014 +0100 + + libass: avoid negative index in array + + (cherry picked from commit e91ea1f9c3f5575c65003818b6b0c2948435c2b8) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit f819406d7ac16e41b8303859abb32f5e1b996bad +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:42:44 2014 +0200 + + OpenGL: remove potential NULL dereference + + (cherry picked from commit 267d8be5f35b8a33bf5e634ff5087a8ab9788019) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 704cf0192e8fa08dcaffabc3057d4df9f5c1ad60 +Author: Santiago Gimeno <santiago.gimeno@gmail.com> +Date: Mon Nov 17 13:16:50 2014 +0100 + + sap: fix implicit timeout calculation + + - RFC2974 states in Section 4: + "If a session announcement message has not been received for ten times the + announcement period, or one hour, whichever is the greater, then the + session is deleted from the receiver's session cache." + But the session was being deleted after three times the announcement period. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 125acdef1ed11c0684ccf57110d4f8741a4e705c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 0c3fa2b011821ada786857dc02d8997fca091553 +Author: Thomas Guillem <thomas@gllm.fr> +Date: Tue Nov 18 10:16:35 2014 +0000 + + mediacodec: don't try OMX.google.* + + OMX.google.* are software decoders, it's better to use avcodec. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 49fc0b18011e38bb1886bd15575e249ed1728977) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 1142c18287b4af7928b478ccb70bde6d2111ce2e +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Tue Nov 18 23:27:54 2014 +0200 + + audiobargraph: boundary check + + (cherry picked from commit 327a8846b43c7e2426efc8e9af04fc5601540812) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 92fd9b9eb5ecb18c34d23382e10bdda7d7d4363b +Author: Paweł Stankowski <aambitny@gmail.com> +Date: Wed Nov 19 02:03:08 2014 +0100 + + Support for newest freerdp snapshot + + Support for 24bpp was removed from freerdp repository in commit + 02c1bf14ce1f3ad2199a349066548977916d9c06. + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit b2cdcba9bfd832760679b12960ea11bfeaf84256) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit f235cc6ed2646f3d52f1242d6fa3b7c04e27d9dc +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Wed Nov 19 14:08:29 2014 +0100 + + Contribs: use videolan servers for schroedinger + + (cherry picked from commit c1522ae56c7779126779dc34c0672898a6144421) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 9e49901ee3c853d004f3f6c395af9e30d9e2f41d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Tue Nov 18 23:22:22 2014 +0200 + + OpenMAX IL: do not use Bellagio software implementation + + This wraps libavcodec in a way that is worse that VLC, e.g. without + hardware acceleration. + + (cherry picked from commit 298edea2b51a3dc7b39ae33a3c4bbf476f4e3290) + +commit 6aea17d8fd18f192efa5f607ffbc89938cca5f59 +Author: Hannes Domani <ssbssa@yahoo.de> +Date: Wed Nov 19 18:55:21 2014 +0100 + + wasapi: fix memory leak + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit 6db8aefc4e1c8fd8397e76c4b222aec63ee15ba2) + +commit fb8741292e5200371a87ed984336a1b704cb50de +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Oct 2 20:44:13 2014 +0300 + + bluray: fix compilation as C11 + + (cherry picked from commit 678a61d1b9420462da2115763dfb284cc12074b8) + +commit dd69fa840d580baee41c4c7e96f8c1d37c3c256e +Author: Rafaël Carré <funman@videolan.org> +Date: Fri Nov 14 11:51:16 2014 +0100 + + HLS: Do not assume Content-Length is set + + Fixes #8078 + + (cherry picked from commit b48ee570b0e060d64dec95d460ca919d60d06138) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 88e94aee244499834648054484f4266c88a7e260 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Jul 23 19:27:01 2014 +0300 + + configure: do not redefine _REENTRANT + + This fixes warnings with PulseAudio and with MingW. + + (cherry picked from commit 8dcec7992236b8d2528ab088554766058d71505c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit fd6f171ea5e5e61f9dc89ee8839d81158dc2f8b8 +Author: Martell Malone <martellmalone@gmail.com> +Date: Tue Nov 4 12:48:53 2014 +0000 + + Fix AC_PATH_PROGS for cygwin and msys2 + + Fixes searching for native qt5 progs on cygwin and msys2 + + The reason for the issue is that on windows if there is a space in the path + or if the program is prepends with .exe and we specify the search PATH + in AC_PATH_PROGS we must enclose them in quotes or the program will not be + found. + + For future reference, if anyone uses AC_PATH_PROGS please enclose defined + search paths (if you have any) in quotes + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 636b6c3107f7b797cd16cf84c37d58630a2e201a) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 50ce5550c197c2b48e9e104cc93ae4f53464c4c7 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 18 13:43:56 2014 +0100 + + Youtube: fix playback of recent pages + + (cherry picked from commit 7529f9c0c3d4418a1bc0af2640ce24c450f0e9b1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 81457d29ea424d8e56f489e474761b69f92c457c +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Tue Nov 11 18:50:49 2014 +0100 + + demux: ogg: handle Flac in Ogg frame/packet pairing violation (fix #12706) + + (cherry picked from commit 394c36356e1c59df350ccf287265e3eed4eaf07c) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 416d829bb5a02deaee5fa7054bcc04c14fea642a +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Thu Nov 13 12:15:05 2014 +0100 + + Lua: support HTTPS and live for Dailymotion + + Close #12753 + + Thanks to Ruito + + (cherry picked from commit fcef78e37a5bffd23693e898ab5ff41a0d8a6d51) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 2c878ef805672fab82e88bf5ab909663c046368f +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:35:06 2014 +0100 + + HLS: check strtoull parsing + + (cherry picked from commit a7984f0a1cd295f4b80a2003a30dda5ab3b315b0) + (cherry picked from commit cd84eec0f5d64bc4ea6289029cc737e0f8358296) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit bdf63c7e4d89043a823ea168039cc0d9ab7f9366 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:49:41 2014 +0100 + + ZPL: avoid NULL dereference + + (cherry picked from commit b2682aff9c3e85e53e887051833e19b5b0e781a2) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 19f48f102c886f049774ef1ca923fd878bcf28b1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sat Nov 15 00:37:17 2014 +0100 + + VC1: use memmove instead of memcpy on overlapping memory + + (cherry picked from commit 234d20686d2fe81ff2f631b60b5457e507e583b1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit a98e8731e7eba654176d8eea72c3e070ad8b23db +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Sun Nov 16 20:13:02 2014 +0100 + + Qt: fix warning by including qt4.hpp + + Ref #12671 + +commit 88f419901d1c1f193e9138db9de712128fc4aaf3 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sun Nov 16 13:03:01 2014 +0100 + + demux: mp4: compute new pos for audio if blockalign is missing + + Prevented playback of blockalign less audio samples + + (cherry picked from commit 901cfac0e6b756cc5b0f93bf49e45666dd65d7a7) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 6fc02a4a6c28271cb5293f7135c5541089d8ae48 +Author: Tristan Matthews <tmatth@videolan.org> +Date: Sat Nov 15 23:46:51 2014 -0500 + + packetizer: flac: recover from bad CRC (fixes #12714) + + (cherry picked from commit c470b251398bc9aefa395865caf3c4c5caacf34a) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 5efafe2debd2bb7264c3acd0392ebc504e7b6dea +Author: Tobias Güntner <fatbull@web.de> +Date: Sat Nov 15 21:39:47 2014 +0100 + + Implement ACCESS_GET_SIZE + + Signed-off-by: Rémi Denis-Courmont <remi@remlab.net> + (cherry picked from commit eb588176daa8160191c9ba0a1cf2d80c2beb4f54) + +commit a20256ad10e3b5fe4737c301240ea32bb7e8b8a5 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sat Nov 15 14:16:33 2014 +0100 + + demux: mp4: fix reading max samples (fix #12764) + + p_chunk->i_sample is next sample, not current + + (cherry picked from commit 5676fd5bf296cd8c1e4de9029ad8c033062b5faf) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit edc84ea054386ce416d47da1ac1ff985e711c8fc +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Sat Nov 15 12:34:48 2014 +0100 + + contrib: harfbuzz: revert version to 0.9.17 + + Starting with harfbuzz 0.9.18 there is a known crash. + Stay with 0.9.17 until this is fixed upstream. + + refs #12425 + + (cherry picked from commit d3e964e8e76ea8d58967b8eb20fe48e30ca0c7ef) + Signed-off-by: David Fuhrmann <dfuhrmann@videolan.org> + +commit da9a1a295ccbc1755b98496854cafcbaeb0c8489 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:49:22 2014 +0200 + + SRTP: integer overflow + + (cherry picked from commit e76f990e0ba00a9f573c23627ecd66cb9ae9bdd5) + +commit f832dd0210c959d48a7486040b4d177107447c2a +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sat Nov 15 12:47:29 2014 +0200 + + SRTP: integer overflow + + (cherry picked from commit ab9f28ff688eae845bc2deb62bf50072d4a4690b) + +commit 7e421f7c753ca09e21d3c5dcfd109254cca36551 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:39:19 2014 +0200 + + interlacing: fix overlapping memory copy + + (cherry picked from commit 2f1737e730e6e8844a93a32b236e36b16eb9bf33) + +commit eb3c35c674705230ceaf13b1dd0b9d8948a2f0fe +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:31:02 2014 +0200 + + style: copy-paste error + + (cherry picked from commit 2e8ae8bc6e65da672e544c69199f6f738cafcba3) + +commit 98c3fc3964e1f5692aec474c5b4fb71d1cc8a82f +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:26:32 2014 +0200 + + epg: memory leak + + (cherry picked from commit f1c04981d9c01d679954b1a33ea3ea124b78a345) + +commit dd090fbcd6f3bf9362d67a4e27c1a8e2f097b6c9 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:24:05 2014 +0200 + + udp: memory leak + + (cherry picked from commit 00b9dd8cbcd4ccd466a28d4f3fa2b7b605ca6276) + +commit 13d9684ad44d519b3eb73c32d60a77f5a5a8773e +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:20:53 2014 +0200 + + ftp: fix leak + + (cherry picked from commit f03324bb7ef555420b6b106a40ca833777072b26) + +commit 24cb4c71a5658716384653a7ac565b57910cae4d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Fri Nov 14 19:14:24 2014 +0200 + + str_format_meta: rewrite and fix leaks due to expansion-unsafe macros + + (cherry picked from commit 1d410d6d4cb3de58125cbb5db431d6ad9381b0e0) + + Conflicts: + configure.ac + +commit e35772f8a82e83fc11c2059c535aa5419d8ea7f1 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Nov 12 22:10:36 2014 +0200 + + directsound: fix uninitialized mutex and condition variable + + Regression from 3044105e9d4664609a7d749469fe0fd6d85e90ff. + + (cherry picked from commit 2d3723d149044db9dff5b05035c7efce5e5200f9) + +commit def455a1bc3644ff7a421781ed95c64e53f26f30 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Wed Nov 12 10:40:11 2014 +0100 + + Mention translations in NEWS + +commit 62d4f410f7bbe234b12671215059420c38c858e8 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:24:07 2014 -0500 + + l10n: Traditional Chinese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 711c032eda3b0fa7324b9ee56e618fde371f39e0 +Author: Dean Lee <xslidian@gmail.com> +Date: Tue Nov 11 15:23:39 2014 -0500 + + l10n: Simplified Chinese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit da3402d02cca7822d5fdbc98457cc36cee83cfb6 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:22:39 2014 -0500 + + l10n: Vietnamese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit bb4a3f53a8cf9f37ad487618fbfbb3337a78d861 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:21:50 2014 -0500 + + l10n: Uzbek update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 9123dbfd83d20b3628fc0e9b6b7a82537ea01ba3 +Author: Andriy Bandura <andriykopanytsia@gmail.com> +Date: Tue Nov 11 15:19:54 2014 -0500 + + l10n: Ukrainian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 8918c09a7c6cb7fa3465ab665337be9f4a944616 +Author: Kaya Zeren <kayazeren@gmail.com> +Date: Tue Nov 11 15:19:05 2014 -0500 + + l10n: Turkish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 748ed06889c5813216ad9608de378ec6db8eed81 +Author: Thanakrit Chomphuming <jernghan@gmail.com> +Date: Tue Nov 11 15:17:33 2014 -0500 + + l10n: Thai update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 646183ae9d34d0efcda6fcadd494b46c7bbcd6a2 +Author: A. Regnander <anton_r_3 at hotmail.com> +Date: Tue Nov 11 15:13:19 2014 -0500 + + l10n: Swedish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5dfabe31e4466da432e60b19427fdabdefc70ce0 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:09:34 2014 -0500 + + l10n: Serbian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 09c1a627ca10d15244f08311b7c2b7d9991ada0e +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 15:05:30 2014 -0500 + + l10n: Albanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit aca243e4978e8d7e7a68093e1903041d2499109d +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:37:12 2014 -0500 + + l10n: Slovenian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit e5d6ebf40179a9c17cc3ff910715b5834156353a +Author: Marián Hikaník <mhikanik@users.sourceforge.net> +Date: Tue Nov 11 14:34:13 2014 -0500 + + l10n: Slovak update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 48ec30a75fcc746b0419db41cb9dd9939435b97e +Author: Alexander Lakhin <exclusion@gmail.com> +Date: Tue Nov 11 14:32:37 2014 -0500 + + l10n: Russian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 7bf9d7aed65e003747beb97d560a2b90586ef33c +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:30:29 2014 -0500 + + l10n: Romanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit a00a0d51e7c53ae8f284af08f7950292fce2428b +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:28:11 2014 -0500 + + l10n: Brazilian Portuguese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4bdd28bf85d0a6a4e593487416e40f617e2c2d84 +Author: Michał Trzebiatowski <hippie_1968@hotmail.com> +Date: Tue Nov 11 14:13:02 2014 -0500 + + l10n: Polish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 47a9990f120f0a3877c91c28dffd5dc9e47d8f72 +Author: Amanpreet Singh Alam <apbrar@gmail.com> +Date: Tue Nov 11 14:10:36 2014 -0500 + + l10n: Punjabi update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit be038c5d28142cc5f007a94c8f97064d7004229e +Author: Thomas De Rocker <thomasderocker@hotmail.com> +Date: Tue Nov 11 14:09:35 2014 -0500 + + l10n: Dutch update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 6104295f95023d29878f7db93b844f15343af397 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:07:51 2014 -0500 + + l10n: Nepali update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3020253a10b2249ce6d1ad8fbf18819eba4c2c78 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:02:54 2014 -0500 + + l10n: Norwegian Bokmål update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 95ab87ec67b23a4b284ffa74db3f300461575b07 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 14:00:32 2014 -0500 + + l10n: Malay update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 417f18b4dbef78de93538114494cce6c9bb28aa1 +Author: Suraj Kawade <suraj.kawade@gmail.com> +Date: Tue Nov 11 13:58:26 2014 -0500 + + l10n: Marathi update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit f4629394bd525fe7ab086e61da0b0cb10a81e62c +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:50:35 2014 -0500 + + l10n: Latvian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a16c3e8e315aa35f98c1e93411685b1e17791f4 +Author: Mindaugas Baranauskas <embar@super.lt> +Date: Tue Nov 11 13:49:21 2014 -0500 + + l10n: Lithuanian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit ef6a94c51818632f9fb32b27c578ce357fe80201 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:37:29 2014 -0500 + + l10n: Korean update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4cd785c001a650e9faf05fb51ce1422cd1a7df2e +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:35:02 2014 -0500 + + l10n: Kannada update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit c6bb4fbdfb67176c5b1743ac7d2ef11ce7082a62 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:32:52 2014 -0500 + + l10n: Khmer update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5f7e08c47b991e8ecf69b3ec995d40b8874457d6 +Author: Fumio Nakayama <fumio.n6a@gmail.com> +Date: Tue Nov 11 13:28:33 2014 -0500 + + l10n: Japanese update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5ee1740cae45f61ae316e6a6c8b7bdc95cd4017b +Author: Vincenzo Reale <smart2128@baslug.org> +Date: Tue Nov 11 13:27:44 2014 -0500 + + l10n: Italian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a86fc70b28e38ffcb869f9b0aab961e4c2e9c88 +Author: Sveinn í Felli <sveinki@nett.is> +Date: Tue Nov 11 13:25:58 2014 -0500 + + l10n: Icelandic update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit d941878a2ee5d2d4a2493f5117d273983f4b035a +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:25:26 2014 -0500 + + l10n: Indonesian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit a089995a3fa40e5b867f14475cb54145f268d80d +Author: Yaron Shahrabani <sh.yaron@gmail.com> +Date: Tue Nov 11 13:22:57 2014 -0500 + + l10n: Hebrew update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit dac8c1eba3ae8ae548d0b04be6c623337a186615 +Author: Gonçalo Cordeiro <gzcordeiro@gmail.com> +Date: Tue Nov 11 13:21:31 2014 -0500 + + l10n: Galician update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 1b2f0c4e6f47927c32469f7aca3d9057b968915f +Author: Michael Bauer <fios@akerbeltz.org> +Date: Tue Nov 11 13:19:59 2014 -0500 + + l10n: Scottish Gaelic update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3032ae8fe0cc81146d24e101bef39bd1ee22bda1 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:17:04 2014 -0500 + + l10n: French update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 6927d4ee901681de221aeda442883789cb723b57 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:11:34 2014 -0500 + + l10n: Finnish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 53cdf53a186da2db1b1c6c883d5c8098543b4dd5 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:09:23 2014 -0500 + + l10n: Persian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 922af55e518ed7a63d469dfa40eb8140d3a2fa93 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:08:23 2014 -0500 + + l10n: Estonian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 3cd061ef6b137de482face57507241b0c35cea67 +Author: David González <pico.dev@gmail.com> +Date: Tue Nov 11 13:06:18 2014 -0500 + + l10n: Spanish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 5688c4b329009b4e02b93c1e5c123a58863fe9cf +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 13:02:52 2014 -0500 + + l10n: Spanish (Mexico) update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit e593570a3539aab59c36d1a682b3c23f0e1b9e12 +Author: Savvas Nesseris <modernphilosopher82-2011@yahoo.com> +Date: Tue Nov 11 13:01:02 2014 -0500 + + l10n: Modern Greek update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 4d28d45158c6a99c6efd31ebf501b0fc6a315503 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:55:35 2014 -0500 + + l10n: German update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit be2abc9c9d8cebe9b900bd59a4a6f521f4569e28 +Author: Aputsiaĸ Niels Janussen <aj@isit.gl> +Date: Tue Nov 11 12:52:41 2014 -0500 + + l10n: Danish update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 21d63530926e7a82dc5e569212e857698a6d4b91 +Author: Aled Powell <aled@aledpowell.com> +Date: Tue Nov 11 12:51:36 2014 -0500 + + l10n: Welsh update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit dfee41e1553364ca706b3bbaad7ddf888549fbdb +Author: Tomáš Chvátal <tomas.chvatal@gmail.com> +Date: Tue Nov 11 12:50:54 2014 -0500 + + l10n: Czech update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 189a2d8f0ee371d3babb09ea3633468a8b82bf8f +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:48:54 2014 -0500 + + l10n: Catalan update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 122972ce32f6ee64389a498d3b714d93dc649b08 +Author: Adnan Memija <sream_92@live.com> +Date: Tue Nov 11 12:46:51 2014 -0500 + + l10n: Bosnian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 0a2531a90a31d571131f2363e1a3e08dc54087ba +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:40:57 2014 -0500 + + l10n: Bengali update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit 1f36d746392d840015f16924bc480a16a413783f +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:31:32 2014 -0500 + + l10n: Asturian update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit d8a94f38be83f37b85d9ea965d61cb8b1ac7f112 +Author: VideoLAN <videolan@videolan.org> +Date: Tue Nov 11 12:22:44 2014 -0500 + + l10n: Amharic (Ethiopia) update + + Signed-off-by: Christoph Miebach <christoph.miebach@web.de> + +commit ee7783e6ac69666b9dbf427932aca463f6cac01d +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 11:56:43 2014 +0100 + + macosx: simplify playlist duration calculation + + (cherry picked from commit 6e24206e034f6bafc3a8d552b5f281a3512100eb) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 1f3635252061ec73b3310cf7e5bb20318d6f9607 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 12:11:02 2014 +0100 + + macosx: robustify media key trap handling + + Only start and stop media key support when needed (ressource-intensive). + + (cherry picked from commit 272b0ffa072918603894ecbb22e037824f1dbcfa) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit d72c23fd708c8798e2fd997ab7fa06f86f4845c1 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 11:24:45 2014 +0100 + + macosx: do not allow playlist item deletion for sd modules + + close #12423 + + (cherry picked from commit 028d21434fc906d94caa4a2b3eb0e1a4a40cdabc) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit 2d09517e9e006dd509faaaacc5125df5ee64f7f7 +Author: David Fuhrmann <dfuhrmann@videolan.org> +Date: Tue Nov 11 10:51:51 2014 +0100 + + macosx: fix memleaks in podcast handling, remove unnecessary module restart + + (cherry picked from commit 3788f1cb25bea9f38d19a22e496474bfdd5a6ef1) + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + +commit ccaac06a25c97de3f7c693ea0638c93425bb416f +Author: Brion Vibber <brion@pobox.com> +Date: Mon Nov 10 20:13:48 2014 -0800 + + Fix quoting on iOS VPX_LDFLAGS for latest changes + + This gets quoted later, so don't quote it first. + + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + (cherry picked from commit 94bb3d34edf6b8d5c1163a35fe9517f799824eae) + +commit e0bd6723259b4c3e3357c4c1c4be2dd15db7c1f1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:36:16 2014 +0100 + + On the way to RC2 + +commit 5bf564535c6c25257259cba5276ca4c3c5032e13 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Fri Sep 12 09:07:17 2014 +0200 + + lua: Update VLSub to 0.9.13 + + (cherry picked from commit cbce4489c7d788483ef4a2fb1b6708c0df765aa8) + (cherry picked from commit 4b07f72828f93289b70365dfa9d729f4d4a2dff2) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 529932ce5fc244dfe63e5fae90a4287a64f933eb +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:11:00 2014 +0100 + + Contribs: update PNG to 1.6.14 + + (cherry picked from commit 46aa9db68489337e05019d5ac3388b55e45bbe6f) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 88aa4d06586b8be9c4994b9722d558bc07bc44d1 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:09:00 2014 +0100 + + Contribs: update GnuTLS to 3.2.18 + + (cherry picked from commit b63dc639c0e566cfe3b5b941601e060c6d24f501) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 602adce99b422a2812133412f81d7a27fe53f4e5 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 16:02:30 2014 +0100 + + Contribs: update gpg-error to 1.17 + + (cherry picked from commit 665d9c7dc8525c07b214627a5c14dacc7ca3a42e) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 8afd32c467e174547c39f02411caed11128d5ba6 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 15:57:04 2014 +0100 + + Contribs: update libass to 0.12.0 + + (cherry picked from commit 5e9a545dd63816b3fa8d45665288b8fb82d68e75) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit d5463d3c18d728825bb09ce0d6a74b7a291ce384 +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Tue Nov 11 12:45:52 2014 +0100 + + Koreus: improve parsing and improve HTTPS + + Close #12744 + + Thanks to Ruito + + (cherry picked from commit aacca35310f0395b6715d282548ff8221beee836) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 99f76cecbd9dc16f98988d9cbd6bc6db593b2b4c +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Mon Nov 10 21:39:39 2014 +0100 + + demux: avi: fix non fixed sample size ADTS/AAC (fix #12727) + + (cherry picked from commit 600d5e3974ef4ee7242dbc3411dd0dfe59f029c1) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit e0218024c96369dcffda5250e29ad7a1f57324d1 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 10 23:00:38 2014 +0200 + + psychedelic: fix scaling crash due to invalid video format + + (cherry picked from commit 61ed600c10c3521aa92054da6c19bc8d80bbf245) + +commit 4b961ac47f2a02e2acd00429c713615ddf660710 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 10 22:55:21 2014 +0200 + + ASCII Art: fix invalid video format, crash in scaling + + (cherry picked from commit 583dbc92c7caef8fd42f012f83ef65189077b991) + +commit 15d6df200df62e77551fc35819e43f70d217ecd1 +Author: Thomas Guillem <tom@gllm.fr> +Date: Sat Nov 8 23:27:53 2014 -0800 + + android/jni: use a libvlcjni function to attach/detach java thread + + Fix ART warning about java thread attached without a name. + + (cherry picked from commit d26fefcfa700d3a9c1b2c26f30a1667e72ac381b) + Signed-off-by: Edward Wang <edward.c.wang@compdigitec.com> + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit b64149c03b9238fc8204f02f271a63cf58bf2d77 +Author: Francois Cartegnie <fcvlcdev@free.fr> +Date: Sun Nov 9 19:59:05 2014 +0100 + + stream_filter: smooth: fix write overflow + + (cherry picked from commit 04b5c18015781108cd39d5617751afce5e5dcfdf) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 91603afb1c56ab0b7b23c55e2d4422dfab3452df +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 9 20:09:07 2014 +0200 + + xmlent: test case for previous commit + + (cherry picked from commit 93126b672e3abff913e9a72bf5077098ac87f580) + +commit 8fa73247c32e9521f867443d5ae0eba85e1afcbb +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 9 20:08:35 2014 +0200 + + strings: add missing support for hexadecimal XML chracter encoding + + (cherry picked from commit 3eee999c45a150aede6233e7bbd7064949c84012) + +commit 330c495ac660e1851324a959a3146032f66e8c70 +Author: Tristan Matthews <tmatth@videolan.org> +Date: Sat Nov 8 13:04:10 2014 -0500 + + codec: mpeg_audio: fix pts update + + Fixes #12722 + + (cherry picked from commit 72b03859fd8b715d9baeb5b378170d81517b01e8) + +commit 5bf84f029b040445afeaa7d16351afd2acb3e5ef +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Sun Nov 2 10:16:49 2014 +0200 + + trivial_mixer: rewrite, fix dual-mode (fixes #12673) + + (cherry picked from commit a6c5f999ea28070c73f3c7db47414f666fdd6265) + (cherry picked from commit 1047340ebc8f59895d7ad8747f7ec48528a31f64) + (cherry picked from commit 81765639fdae8b0c9532c31e90e49eb6aecd5d72) + (cherry picked from commit d6388f26bb6efef29397ba91b02befc427b3423e) + (cherry picked from commit 4e63463ac0022f7eca3c4b9decb6ad5501b7ce38) + (cherry picked from commit 4d6a9eaa413c73277648d4f98c5da1840f997b33) + +commit a7336c2a0da897acbf708b03ab0698c4a71862fb +Author: Jean-Baptiste Kempf <jb@videolan.org> +Date: Mon Nov 3 11:41:57 2014 +0100 + + Win32: sign dlls and exe + + (cherry picked from commit 7c653e6ab5bcd0ca9f459c015a0c43a998d09c74) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit b39439bc5539e123e405e3d7ab0158d9c57f7762 +Author: Sean McGovern <gseanmcg@gmail.com> +Date: Thu Nov 6 22:31:09 2014 -0500 + + vpx: properly quote VPX_LDFLAGS + + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + (cherry picked from commit 7a291b65d38daccdbabe55c3d3dcb1b3c2375222) + Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> + +commit 3f30b88f7b0ef65c5b471f9941fda2bbbb1e3d2d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Thu Nov 6 23:14:22 2014 +0200 + + atmo: fix invalid delete + + (cherry picked from commit f938a451ae4802f7cbbf32a663c0018b851f155a) + +commit 3147bfede3d6661c4a7f8c1f7109d132497990aa +Author: Sean McGovern <gseanmcg@gmail.com> +Date: Thu Nov 6 10:48:15 2014 -0500 + + dca: force gnu89 C standard + + Signed-off-by: Felix Paul Kühne <fkuehne@videolan.org> + (cherry picked from commit 3618f40881367d66fa7d961330e6fc6f1e4df683) + +commit 6b3f4ad061adc1a2402c08df20be5f3a8515799c +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Tue Nov 4 21:41:53 2014 +0100 + + contrib/avcodec: pass extra CFLAGS as LDFLAGS on iOS to have the needed flags + + (cherry picked from commit f52e54b24015419c09db0c608caeb75232d3206a) + +commit bcea63b6e20eed27329424421fc4e9669270d5e2 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Tue Nov 4 21:41:00 2014 +0100 + + extras/ios: rework LDFLAGS handling and enable vpx for the scary build flavor + + (cherry picked from commit a9c89123ff7576aa42bcfd5e9792479c307011a4) + +commit 9adcc627ce59425231b5e2f645c5e63a533fd04d +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Fri Oct 31 19:05:48 2014 +0100 + + contrib/vpx: fix compilation for iOS + + (cherry picked from commit 8546622b50a69a6693d4c77674b0730d0e16a0d2) + +commit acacaebfde04eda320d9a829bc3489c0a6ada27d +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Wed Nov 5 23:23:35 2014 +0200 + + mosaic: use after free + + (cherry picked from commit d0b6ecb24e52d943bbb2f0debdc4237b4b112aee) + +commit fea994f54f5832df7c2d4c63a8fa38118f4b3aa9 +Author: Felix Paul Kühne <fkuehne@videolan.org> +Date: Wed Nov 5 00:12:51 2014 +0100 + + contrib/sparkle: fix runtime exception on snow leopard + + (cherry picked from commit fa447d33bcf2a957d590d90fd362744c1b69ea7a) + +commit 57c046ce11210fb354da42e07ef99b724bf2d716 +Author: Rémi Denis-Courmont <remi@remlab.net> +Date: Mon Nov 3 18:10:15 2014 +0200 + + vmem: unlock before display + + The documentation promises that the picture is unlocked before it is + displayed, so actually do that. + + (cherry picked from commit 0887539916acdb4276eed910cf88178084d9dba6) + commit 95774591eed71ca9a5479ad29c2e6bab74b88de5 Author: Jean-Baptiste Kempf <jb@videolan.org> Date: Mon Nov 3 14:13:29 2014 +0100 @@ -19025,9 +20096,3 @@ Date: Wed Jan 1 18:38:19 2014 +0200 libvlc: remove "evil" daemon global variable and clean up (The unlikely corner case of ENOMEM remains unhandled/unfixed.) - -commit ec44ae90ab3beb3f06371d506fd3e2ad104f9796 -Author: Rémi Denis-Courmont <remi@remlab.net> -Date: Wed Jan 1 17:57:26 2014 +0200 - - Remove stray comment diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 86d5cf9..a11ddd2 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -878,7 +878,7 @@ static void blurayInitOverlay(demux_t *p_demux, int plane, int width, int height return; } /* two references: vout + demux */ - ov->released_once = ATOMIC_FLAG_INIT; + atomic_flag_clear(&ov->released_once); p_upd_sys->p_overlay = ov; subpicture_updater_t updater = { diff --git a/modules/access/dvdnav.c b/modules/access/dvdnav.c index ff518de..ad3f9a9 100644 --- a/modules/access/dvdnav.c +++ b/modules/access/dvdnav.c @@ -2,7 +2,7 @@ * dvdnav.c: DVD module using the dvdnav library. ***************************************************************************** * Copyright (C) 2004-2009 VLC authors and VideoLAN - * $Id: 1ba59e20f58bfc95d1dee4139d434ecd5421c318 $ + * $Id: eb65815ada3a75249a22bf7299ba48bc9185d530 $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * @@ -43,6 +43,7 @@ #include <sys/stat.h> #include <fcntl.h> #include <errno.h> +#include <unistd.h> /* close() */ #include <vlc_common.h> #include <vlc_plugin.h> diff --git a/modules/access/ftp.c b/modules/access/ftp.c index 69df853..ff641b8 100644 --- a/modules/access/ftp.c +++ b/modules/access/ftp.c @@ -3,7 +3,7 @@ ***************************************************************************** * Copyright (C) 2001-2006 VLC authors and VideoLAN * Copyright © 2006 Rémi Denis-Courmont - * $Id: 90b2452250da27cfe5de9e06f0bb58db212a4c41 $ + * $Id: ce3cc795a3993b127cc9b2296fb8a6a3ab857109 $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> - original code * Rémi Denis-Courmont <rem # videolan.org> - EPSV support @@ -309,7 +309,6 @@ static void clearCmdTLS( access_sys_t *p_sys ) static int Login( vlc_object_t *p_access, access_sys_t *p_sys ) { int i_answer; - char *psz; /* *** Open a TCP connection with server *** */ int fd = p_sys->cmd.fd = net_ConnectTCP( p_access, p_sys->url.psz_host, @@ -340,13 +339,6 @@ static int Login( vlc_object_t *p_access, access_sys_t *p_sys ) msg_Dbg( p_access, "connection accepted (%d)", i_answer ); - if( p_sys->url.psz_username && *p_sys->url.psz_username ) - psz = strdup( p_sys->url.psz_username ); - else - psz = var_InheritString( p_access, "ftp-user" ); - if( !psz ) - return -1; - /* Features check first */ if( ftp_SendCommand( p_access, p_sys, "FEAT" ) < 0 || ftp_RecvAnswer( p_access, p_sys, NULL, NULL, @@ -387,7 +379,6 @@ static int Login( vlc_object_t *p_access, access_sys_t *p_sys ) i_answer != 200 ) { msg_Err( p_access, "Can't truncate Protection buffer size for TLS" ); - free( psz ); goto error; } @@ -396,12 +387,20 @@ static int Login( vlc_object_t *p_access, access_sys_t *p_sys ) i_answer != 200 ) { msg_Err( p_access, "Can't set Data channel protection" ); - free( psz ); goto error; } } /* Send credentials over channel */ + char *psz; + + if( p_sys->url.psz_username && *p_sys->url.psz_username ) + psz = strdup( p_sys->url.psz_username ); + else + psz = var_InheritString( p_access, "ftp-user" ); + if( !psz ) + goto error; + if( ftp_SendCommand( p_access, p_sys, "USER %s", psz ) < 0 || ftp_RecvCommand( p_access, p_sys, &i_answer, NULL ) < 0 ) { diff --git a/modules/access/rdp.c b/modules/access/rdp.c index 2011cfb..a7280a59 100644 --- a/modules/access/rdp.c +++ b/modules/access/rdp.c @@ -248,7 +248,13 @@ static bool postConnectHandler( freerdp *p_instance ) p_instance->update->BeginPaint = beginPaintHandler; p_instance->update->EndPaint = endPaintHandler; - gdi_init( p_instance, CLRBUF_16BPP | CLRBUF_24BPP | CLRBUF_32BPP, NULL ); + gdi_init( p_instance, + CLRBUF_16BPP | +#if defined(FREERDP_VERSION_MAJOR) && defined(FREERDP_VERSION_MINOR) && \ + !(FREERDP_VERSION_MAJOR > 1 || (FREERDP_VERSION_MAJOR == 1 && FREERDP_VERSION_MINOR >= 2)) + CLRBUF_24BPP | +#endif + CLRBUF_32BPP, NULL ); desktopResizeHandler( p_instance->context ); return true; diff --git a/modules/access/rtp/srtp.c b/modules/access/rtp/srtp.c index 1f8de38..883e553 100644 --- a/modules/access/rtp/srtp.c +++ b/modules/access/rtp/srtp.c @@ -496,7 +496,7 @@ static int srtp_crypt (srtp_session_t *s, uint8_t *buf, size_t len) { /* Sequence in the future, good */ s->rtp.window = s->rtp.window << diff; - s->rtp.window |= 1; + s->rtp.window |= UINT64_C(1); s->rtp_seq = seq, s->rtp_roc = roc; } else @@ -505,7 +505,7 @@ static int srtp_crypt (srtp_session_t *s, uint8_t *buf, size_t len) diff = -diff; if ((diff >= 64) || ((s->rtp.window >> diff) & 1)) return EACCES; /* Replay attack */ - s->rtp.window |= 1 << diff; + s->rtp.window |= UINT64_C(1) << diff; } /* Encrypt/Decrypt */ @@ -738,7 +738,7 @@ static int srtcp_crypt (srtp_session_t *s, uint8_t *buf, size_t len) { /* Packet in the future, good */ s->rtcp.window = s->rtcp.window << diff; - s->rtcp.window |= 1; + s->rtcp.window |= UINT64_C(1); s->rtcp_index = index; } else @@ -747,7 +747,7 @@ static int srtcp_crypt (srtp_session_t *s, uint8_t *buf, size_t len) diff = -diff; if ((diff >= 64) || ((s->rtcp.window >> diff) & 1)) return EACCES; // replay attack! - s->rtp.window |= 1 << diff; + s->rtp.window |= UINT64_C(1) << diff; } /* Crypts SRTCP */ diff --git a/modules/access/udp.c b/modules/access/udp.c index 552a9a5..e135a96 100644 --- a/modules/access/udp.c +++ b/modules/access/udp.c @@ -3,7 +3,7 @@ ***************************************************************************** * Copyright (C) 2001-2005 VLC authors and VideoLAN * Copyright (C) 2007 Remi Denis-Courmont - * $Id: 3c18cb82d3ba084480ad7ef62a1e1cb458753f78 $ + * $Id: 00f298919c40ba9660ddecb4b88ead6adfcd21b7 $ * * Authors: Christophe Massiot <massiot@via.ecp.fr> * Tristan Leteurtre <tooney@via.ecp.fr> @@ -90,12 +90,6 @@ static void* ThreadRead( void *data ); static int Open( vlc_object_t *p_this ) { access_t *p_access = (access_t*)p_this; - - char *psz_name = strdup( p_access->psz_location ); - char *psz_parser; - const char *psz_server_addr, *psz_bind_addr = ""; - int i_bind_port = 1234, i_server_port = 0; - access_sys_t *sys = malloc( sizeof( *sys ) ); if( unlikely( sys == NULL ) ) return VLC_ENOMEM; @@ -106,6 +100,14 @@ static int Open( vlc_object_t *p_this ) access_InitFields( p_access ); ACCESS_SET_CALLBACKS( NULL, BlockUDP, Control, NULL ); + char *psz_name = strdup( p_access->psz_location ); + char *psz_parser; + const char *psz_server_addr, *psz_bind_addr = ""; + int i_bind_port = 1234, i_server_port = 0; + + if( unlikely(psz_name == NULL) ) + goto error; + /* Parse psz_name syntax : * [serveraddr[:serverport]][@[bindaddr]:[bindport]] */ psz_parser = strchr( psz_name, '@' ); diff --git a/modules/access/vdr.c b/modules/access/vdr.c index 20ecba7..d2686c6 100644 --- a/modules/access/vdr.c +++ b/modules/access/vdr.c @@ -272,6 +272,10 @@ static int Control( access_t *p_access, int i_query, va_list args ) *va_arg( args, bool* ) = true; break; + case ACCESS_GET_SIZE: + *va_arg( args, uint64_t* ) = p_sys->size; + break; + case ACCESS_GET_PTS_DELAY: pi64 = va_arg( args, int64_t * ); *pi64 = INT64_C(1000) diff --git a/modules/audio_filter/audiobargraph_a.c b/modules/audio_filter/audiobargraph_a.c index 1ca3baf..730871e 100644 --- a/modules/audio_filter/audiobargraph_a.c +++ b/modules/audio_filter/audiobargraph_a.c @@ -2,7 +2,7 @@ * audiobargraph_a.c : audiobargraph audio plugin for vlc ***************************************************************************** * Copyright (C) 2002-2014 VLC authors and VideoLAN - * $Id: 81275d6be447ca8116a0bf3ad7165017a40bb26b $ + * $Id: 8fd9607f5e65f31f00865c5a6caf78f7da0cccae $ * * Authors: Clement CHESNIN <clement.chesnin@gmail.com> * Philippe COENT <philippe.coent@tdf.fr> @@ -147,20 +147,17 @@ static int Open( vlc_object_t *p_this ) static void SendValues(filter_t *p_filter, float *value, int nbChannels) { - char message[256]; + char msg[256]; size_t len = 0; for (int i = 0; i < nbChannels; i++) { - if (len >= sizeof(message)) + if (len >= sizeof (msg)) break; - len += snprintf(message + len, sizeof (message),"%f:", value[i]); + len += snprintf(msg + len, sizeof (msg) - len, "%f:", value[i]); } - message[len-1] = '\0'; //msg_Dbg(p_filter, "values: %s", message); - - var_SetString(p_filter->p_libvlc, "audiobargraph_v-i_values", - message); + var_SetString(p_filter->p_libvlc, "audiobargraph_v-i_values", msg); } /***************************************************************************** diff --git a/modules/audio_filter/channel_mixer/trivial.c b/modules/audio_filter/channel_mixer/trivial.c index ee26e38..c75c4e1 100644 --- a/modules/audio_filter/channel_mixer/trivial.c +++ b/modules/audio_filter/channel_mixer/trivial.c @@ -1,8 +1,7 @@ /***************************************************************************** * trivial.c : trivial channel mixer plug-in (drops unwanted channels) ***************************************************************************** - * Copyright (C) 2002, 2006 VLC authors and VideoLAN - * $Id: b5d845751bb7988e388bb49fbef16b7e4172ffde $ + * Copyright (C) 2002, 2006, 2014 VLC authors and VideoLAN * * Authors: Christophe Massiot <massiot@via.ecp.fr> * @@ -29,21 +28,15 @@ # include "config.h" #endif +#include <assert.h> + #include <vlc_common.h> #include <vlc_plugin.h> #include <vlc_aout.h> #include <vlc_filter.h> -/***************************************************************************** - * Local prototypes - *****************************************************************************/ static int Create( vlc_object_t * ); -static block_t *DoWork( filter_t *, block_t * ); - -/***************************************************************************** - * Module descriptor - *****************************************************************************/ vlc_module_begin () set_description( N_("Audio filter for trivial channel mixing") ) set_capability( "audio converter", 1 ) @@ -52,136 +45,204 @@ vlc_module_begin () set_callbacks( Create, NULL ) vlc_module_end () -/***************************************************************************** - * Create: allocate trivial channel mixer - *****************************************************************************/ -static int Create( vlc_object_t *p_this ) +/** + * Trivially upmixes + */ +static block_t *Upmix( filter_t *p_filter, block_t *p_in_buf ) { - filter_t * p_filter = (filter_t *)p_this; + unsigned i_input_nb = aout_FormatNbChannels( &p_filter->fmt_in.audio ); + unsigned i_output_nb = aout_FormatNbChannels( &p_filter->fmt_out.audio ); - if ( (p_filter->fmt_in.audio.i_physical_channels - == p_filter->fmt_out.audio.i_physical_channels - && p_filter->fmt_in.audio.i_original_channels - == p_filter->fmt_out.audio.i_original_channels) - || p_filter->fmt_in.audio.i_format != p_filter->fmt_out.audio.i_format - || p_filter->fmt_in.audio.i_rate != p_filter->fmt_out.audio.i_rate - || p_filter->fmt_in.audio.i_format != VLC_CODEC_FL32 ) + assert( i_input_nb < i_output_nb ); + + block_t *p_out_buf = block_Alloc( + p_in_buf->i_buffer * i_output_nb / i_input_nb ); + if( unlikely(p_out_buf == NULL) ) { - return VLC_EGENERIC; + block_Release( p_in_buf ); + return NULL; } - p_filter->pf_audio_filter = DoWork; - return VLC_SUCCESS; -} + p_out_buf->i_nb_samples = p_in_buf->i_nb_samples; + p_out_buf->i_dts = p_in_buf->i_dts; + p_out_buf->i_pts = p_in_buf->i_pts; + p_out_buf->i_length = p_in_buf->i_length; -/***************************************************************************** - * SparseCopy: trivially downmix or upmix a buffer - *****************************************************************************/ -static void SparseCopy( float * p_dest, const float * p_src, size_t i_len, - int i_output_stride, int i_input_stride ) + float *p_dest = (float *)p_out_buf->p_buffer; + const float *p_src = (float *)p_in_buf->p_buffer; + + for( size_t i = 0; i < p_in_buf->i_nb_samples; i++ ) { - int i; - for ( i = i_len; i--; ) + for( unsigned j = 0; j < i_output_nb; j++ ) + p_dest[j] = p_src[j % i_input_nb]; + + p_src += i_input_nb; + p_dest += i_output_nb; + } + + block_Release( p_in_buf ); + return p_out_buf; +} + +/** + * Trivially downmixes (i.e. drop extra channels) + */ +static block_t *Downmix( filter_t *p_filter, block_t *p_buf ) { - int j; - for ( j = 0; j < i_output_stride; j++ ) + unsigned i_input_nb = aout_FormatNbChannels( &p_filter->fmt_in.audio ); + unsigned i_output_nb = aout_FormatNbChannels( &p_filter->fmt_out.audio ); + + assert( i_input_nb >= i_output_nb ); + + float *p_dest = (float *)p_buf->p_buffer; + const float *p_src = p_dest; + + for( size_t i = 0; i < p_buf->i_nb_samples; i++ ) { - p_dest[j] = p_src[j % i_input_stride]; - } - p_src += i_input_stride; - p_dest += i_output_stride; + for( unsigned j = 0; j < i_output_nb; j++ ) + p_dest[j] = p_src[j]; + + p_src += i_input_nb; + p_dest += i_output_nb; } + + return p_buf; } -/***************************************************************************** - * DoWork: convert a buffer - *****************************************************************************/ -static block_t *DoWork( filter_t * p_filter, block_t * p_in_buf ) +static block_t *CopyLeft( filter_t *p_filter, block_t *p_buf ) { - int i_input_nb = aout_FormatNbChannels( &p_filter->fmt_in.audio ); - int i_output_nb = aout_FormatNbChannels( &p_filter->fmt_out.audio ); + float *p = (float *)p_buf->p_buffer; - block_t *p_out_buf; - if( i_input_nb >= i_output_nb ) + for( unsigned i = 0; i < p_buf->i_nb_samples; i++ ) { - p_out_buf = p_in_buf; /* mix in place */ - p_out_buf->i_buffer = p_in_buf->i_buffer * i_output_nb / i_input_nb; + p[1] = p[0]; + p += 2; } - else + (void) p_filter; + return p_buf; +} + +static block_t *CopyRight( filter_t *p_filter, block_t *p_buf ) { - p_out_buf = block_Alloc( - p_in_buf->i_buffer * i_output_nb / i_input_nb ); - if( !p_out_buf ) - goto out; - /* on upmixing case, zero out buffer */ - memset( p_out_buf->p_buffer, 0, p_out_buf->i_buffer ); - p_out_buf->i_nb_samples = p_in_buf->i_nb_samples; - p_out_buf->i_dts = p_in_buf->i_dts; - p_out_buf->i_pts = p_in_buf->i_pts; - p_out_buf->i_length = p_in_buf->i_length; + float *p = (float *)p_buf->p_buffer; + + for( unsigned i = 0; i < p_buf->i_nb_samples; i++ ) + { + p[0] = p[1]; + p += 2; + } + (void) p_filter; + return p_buf; } - float * p_dest = (float *)p_out_buf->p_buffer; - const float * p_src = (float *)p_in_buf->p_buffer; - const bool b_reverse_stereo = p_filter->fmt_out.audio.i_original_channels & AOUT_CHAN_REVERSESTEREO; - bool b_dualmono2stereo = (p_filter->fmt_in.audio.i_original_channels & AOUT_CHAN_DUALMONO ); - b_dualmono2stereo &= (p_filter->fmt_out.audio.i_physical_channels & ( AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT )); - b_dualmono2stereo &= ((p_filter->fmt_out.audio.i_physical_channels & AOUT_CHAN_PHYSMASK) != (p_filter->fmt_in.audio.i_physical_channels & AOUT_CHAN_PHYSMASK)); +static block_t *ExtractLeft( filter_t *p_filter, block_t *p_buf ) +{ + float *p_dest = (float *)p_buf->p_buffer; + const float *p_src = p_dest; - if( likely( !b_reverse_stereo && ! b_dualmono2stereo ) ) + for( unsigned i = 0; i < p_buf->i_nb_samples; i++ ) { - SparseCopy( p_dest, p_src, p_in_buf->i_nb_samples, i_output_nb, - i_input_nb ); + *(p_dest++) = *p_src; + p_src += 2; } - /* Special case from dual mono to stereo */ - else if ( b_dualmono2stereo ) + (void) p_filter; + return p_buf; +} + +static block_t *ExtractRight( filter_t *p_filter, block_t *p_buf ) { - int i; - /* This is a bit special. */ - if ( !(p_filter->fmt_out.audio.i_original_channels & AOUT_CHAN_LEFT) ) + float *p_dest = (float *)p_buf->p_buffer; + const float *p_src = p_dest; + + for( unsigned i = 0; i < p_buf->i_nb_samples; i++ ) { p_src++; + *(p_dest++) = *(p_src++); } - if ( p_filter->fmt_out.audio.i_physical_channels == AOUT_CHAN_CENTER ) + (void) p_filter; + return p_buf; +} + +static block_t *ReverseStereo( filter_t *p_filter, block_t *p_buf ) { - /* Mono mode */ - for ( i = p_in_buf->i_nb_samples; i--; ) + float *p = (float *)p_buf->p_buffer; + + /* Reverse-stereo mode */ + for( unsigned i = 0; i < p_buf->i_nb_samples; i++ ) { - *p_dest = *p_src; - p_dest++; - p_src += 2; + float f = p[0]; + p[0] = p[1]; + p[1] = f; + p += 2; } + (void) p_filter; + return p_buf; } - else + +/** + * Probes the trivial channel mixer + */ +static int Create( vlc_object_t *p_this ) { - /* Fake-stereo mode */ - for ( i = p_in_buf->i_nb_samples; i--; ) + filter_t *p_filter = (filter_t *)p_this; + const audio_format_t *infmt = &p_filter->fmt_in.audio; + const audio_format_t *outfmt = &p_filter->fmt_out.audio; + + if( infmt->i_format != outfmt->i_format + || infmt->i_rate != outfmt->i_rate + || infmt->i_format != VLC_CODEC_FL32 ) + return VLC_EGENERIC; + if( infmt->i_physical_channels == outfmt->i_physical_channels + && infmt->i_original_channels == outfmt->i_original_channels ) + return VLC_EGENERIC; + + if( outfmt->i_physical_channels == AOUT_CHANS_STEREO ) { - *p_dest = *p_src; - p_dest++; - *p_dest = *p_src; - p_dest++; - p_src += 2; - } + bool swap = (outfmt->i_original_channels & AOUT_CHAN_REVERSESTEREO) + != (infmt->i_original_channels & AOUT_CHAN_REVERSESTEREO); + + if( (outfmt->i_original_channels & AOUT_CHAN_PHYSMASK) + == AOUT_CHAN_LEFT ) + { + p_filter->pf_audio_filter = swap ? CopyRight : CopyLeft; + return VLC_SUCCESS; } + + if( (outfmt->i_original_channels & AOUT_CHAN_PHYSMASK) + == AOUT_CHAN_RIGHT ) + { + p_filter->pf_audio_filter = swap ? CopyLeft : CopyRight; + return VLC_SUCCESS; } - else if ( b_reverse_stereo ) + + if( swap ) { - /* Reverse-stereo mode */ - int i; - for ( i = p_in_buf->i_nb_samples; i--; ) + p_filter->pf_audio_filter = ReverseStereo; + return VLC_SUCCESS; + } + } + + if ( aout_FormatNbChannels( outfmt ) == 1 ) { - float i_tmp = p_src[0]; - p_dest[0] = p_src[1]; - p_dest[1] = i_tmp; + bool mono = !!(infmt->i_original_channels & AOUT_CHAN_DUALMONO); - p_dest += 2; - p_src += 2; + if( mono && (infmt->i_original_channels & AOUT_CHAN_LEFT) ) + { + p_filter->pf_audio_filter = ExtractLeft; + return VLC_SUCCESS; } + + if( mono && (infmt->i_original_channels & AOUT_CHAN_RIGHT) ) + { + p_filter->pf_audio_filter = ExtractRight; + return VLC_SUCCESS; } -out: - if( p_in_buf != p_out_buf ) - block_Release( p_in_buf ); - return p_out_buf; } + if( aout_FormatNbChannels( outfmt ) > aout_FormatNbChannels( infmt ) ) + p_filter->pf_audio_filter = Upmix; + else + p_filter->pf_audio_filter = Downmix; + + return VLC_SUCCESS; +} diff --git a/modules/codec/libass.c b/modules/codec/libass.c index 3cc1b8e..b8c0c60 100644 --- a/modules/codec/libass.c +++ b/modules/codec/libass.c @@ -2,7 +2,7 @@ * SSA/ASS subtitle decoder using libass. ***************************************************************************** * Copyright (C) 2008-2009 VLC authors and VideoLAN - * $Id: 5590df15375907f1578337948e8d10c67c49d5f6 $ + * $Id: dc247f419aaf7db703091c6d21095b893205e9b7 $ * * Authors: Laurent Aimar <fenrir@videolan.org> * @@ -627,6 +627,8 @@ static int BuildRegions( rectangle_t *p_region, int i_max_region, ASS_Image *p_i #ifdef DEBUG_REGION msg_Err( p_spu, "Merging %d and %d", i_best_i, i_best_j ); #endif + if( i_best_j >= 0 && i_best_i >= 0 ) + { r_add( ®ion[i_best_i], ®ion[i_best_j] ); if( i_best_j+1 < i_region ) @@ -634,6 +636,7 @@ static int BuildRegions( rectangle_t *p_region, int i_max_region, ASS_Image *p_i i_region--; } } + } /* */ for( int n = 0; n < i_region; n++ ) diff --git a/modules/codec/mpeg_audio.c b/modules/codec/mpeg_audio.c index a9d4694..fb813b6 100644 --- a/modules/codec/mpeg_audio.c +++ b/modules/codec/mpeg_audio.c @@ -2,7 +2,7 @@ * mpeg_audio.c: parse MPEG audio sync info and packetize the stream ***************************************************************************** * Copyright (C) 2001-2003 VLC authors and VideoLAN - * $Id: c9f7bac44fa8e834ee4d112b9ec4295ae67294d1 $ + * $Id: f893dd257a9ec52728ab1b9ee4356cff89f4582d $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * Eric Petit <titer@videolan.org> @@ -248,7 +248,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) /* New frame, set the Presentation Time Stamp */ p_sys->i_pts = p_sys->bytestream.p_block->i_pts; if( p_sys->i_pts > VLC_TS_INVALID && - p_sys->i_pts != date_Get( &p_sys->end_date ) ) + p_sys->i_pts > date_Get( &p_sys->end_date ) ) { date_Set( &p_sys->end_date, p_sys->i_pts ); } diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c index c6fa1a7..efb78cd 100644 --- a/modules/demux/avi/avi.c +++ b/modules/demux/avi/avi.c @@ -2,7 +2,7 @@ * avi.c : AVI file Stream input module for vlc ***************************************************************************** * Copyright (C) 2001-2009 VLC authors and VideoLAN - * $Id: 2169c8a9c3b8d3ba58088713fa57e86242650ced $ + * $Id: 3a3170214d309b96374893222a3f21a190462d89 $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * @@ -445,6 +445,11 @@ static int Open( vlc_object_t * p_this ) tk->i_blocksize = 0; /* fix vorbis VBR decoding */ } + if ( tk->i_codec == VLC_CODEC_MP4A ) + { + tk->i_samplesize = 0; /* ADTS/AAC VBR */ + } + es_format_Init( &fmt, AUDIO_ES, tk->i_codec ); fmt.audio.i_channels = p_auds->p_wf->nChannels; diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index facfcff..8b9bf6c 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -3425,7 +3425,7 @@ static uint32_t MP4_TrackGetReadSize( mp4_track_t *p_track, uint32_t *pi_nb_samp { const MP4_Box_data_sample_soun_t *p_soun = p_track->p_sample->data.p_sample_soun; const mp4_chunk_t *p_chunk = &p_track->chunk[p_track->i_chunk]; - uint32_t i_max_samples = p_chunk->i_sample_count - p_chunk->i_sample + 1; + uint32_t i_max_samples = p_chunk->i_sample_count - p_chunk->i_sample; /* Group audio packets so we don't call demux for single sample unit */ if( p_track->fmt.i_original_fourcc == VLC_CODEC_DVD_LPCM && @@ -3509,7 +3509,8 @@ static uint64_t MP4_TrackGetPos( mp4_track_t *p_track ) MP4_Box_data_sample_soun_t *p_soun = p_track->p_sample->data.p_sample_soun; - if( p_track->fmt.i_cat != AUDIO_ES || p_soun->i_qt_version == 0 ) + if( p_track->fmt.i_cat != AUDIO_ES || p_soun->i_qt_version == 0 || + p_track->fmt.audio.i_blockalign <= 1 ) { i_pos += ( p_track->i_sample - p_track->chunk[p_track->i_chunk].i_sample_first ) * @@ -3518,7 +3519,6 @@ static uint64_t MP4_TrackGetPos( mp4_track_t *p_track ) else { /* we read chunk by chunk unless a blockalign is requested */ - if( p_track->fmt.audio.i_blockalign > 1 ) i_pos += ( p_track->i_sample - p_track->chunk[p_track->i_chunk].i_sample_first ) / p_soun->i_sample_per_packet * p_soun->i_bytes_per_frame; } diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c index 9316a09..fd3addf 100644 --- a/modules/demux/ogg.c +++ b/modules/demux/ogg.c @@ -2,7 +2,7 @@ * ogg.c : ogg stream demux module for vlc ***************************************************************************** * Copyright (C) 2001-2007 VLC authors and VideoLAN - * $Id: d69a675d96335bd59a9cf8ae491c2b82dfd2342a $ + * $Id: 5fd8e9aa468de00df524a3559cc718723db2f0fc $ * * Authors: Gildas Bazin <gbazin@netcourrier.com> * Andre Pang <Andre.Pang@csiro.au> (Annodex support) @@ -1340,6 +1340,18 @@ static void Ogg_DecodePacket( demux_t *p_demux, } else if( p_stream->fmt.i_cat == AUDIO_ES ) { + if ( p_stream->fmt.i_codec == VLC_CODEC_FLAC && + p_stream->p_es && 0 >= p_oggpacket->granulepos && + p_stream->fmt.b_packetized ) + { + /* Handle OggFlac spec violation (multiple frame/packet + * by turning on packetizer */ + msg_Warn( p_demux, "Invalid FLAC in ogg detected. Restarting ES with packetizer." ); + p_stream->fmt.b_packetized = false; + es_out_Del( p_demux->out, p_stream->p_es ); + p_stream->p_es = es_out_Add( p_demux->out, &p_stream->fmt ); + } + /* Blatant abuse of the i_length field. */ p_block->i_length = p_stream->i_end_trim; } diff --git a/modules/demux/playlist/zpl.c b/modules/demux/playlist/zpl.c index f909c47..12bbb8a 100644 --- a/modules/demux/playlist/zpl.c +++ b/modules/demux/playlist/zpl.c @@ -86,6 +86,9 @@ static int Demux( demux_t *p_demux ) input_item_t *p_current_input = GetCurrentItem(p_demux); psz_line = stream_ReadLine( p_demux->s ); + if( !psz_line ) + return -1; + char *psz_parse = psz_line; /* Skip leading tabs and spaces */ diff --git a/modules/gui/qt4/util/timetooltip.hpp b/modules/gui/qt4/util/timetooltip.hpp index 99970b5..9c7e6a4 100644 --- a/modules/gui/qt4/util/timetooltip.hpp +++ b/modules/gui/qt4/util/timetooltip.hpp @@ -1,6 +1,6 @@ /***************************************************************************** * Copyright © 2011 VideoLAN - * $Id: ea6535d32b20931da30403a6942a4eb73129902a $ + * $Id: 53a1f78975febac1cf2ad7e80f7cf1d6fba60f55 $ * * Authors: Ludovic Fauvet <etix@l0cal.com> * @@ -22,6 +22,8 @@ #ifndef TIMETOOLTIP_H #define TIMETOOLTIP_H +#include "qt4.hpp" + #include <QWidget> #include <QBitmap> diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c index 9fc2e72..f6e94d3 100644 --- a/modules/packetizer/flac.c +++ b/modules/packetizer/flac.c @@ -2,7 +2,7 @@ * flac.c: flac packetizer module. ***************************************************************************** * Copyright (C) 1999-2001 VLC authors and VideoLAN - * $Id: 3303a27639f96675423521f75a6f3cb866905a27 $ + * $Id: ecf854f0eb36c6aa1906304b02d802b07c03be3d $ * * Authors: Gildas Bazin <gbazin@videolan.org> * Sigmund Augdal Helberg <dnumgis@videolan.org> @@ -642,6 +642,8 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) if (stream_crc != crc) { msg_Warn(p_dec, "Bad CRC for frame size %zu: 0x%x != 0x%x", p_sys->i_frame_size, crc, stream_crc); + block_SkipByte(&p_sys->bytestream); + p_sys->i_state = STATE_NOSYNC; } else { p_sys->i_state = STATE_SEND_DATA; p_sys->crc = 0; diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c index 8b0f1bf..8bfdf3e 100644 --- a/modules/packetizer/vc1.c +++ b/modules/packetizer/vc1.c @@ -2,7 +2,7 @@ * vc1.c ***************************************************************************** * Copyright (C) 2001, 2002, 2006 VLC authors and VideoLAN - * $Id: c1ddd645578c31b934acfc4cc246c07eede71398 $ + * $Id: f93f5046c96cb631c05d9be054b25fcfa69b5d85 $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * Gildas Bazin <gbazin@videolan.org> @@ -168,7 +168,7 @@ static int Open( vlc_object_t *p_this ) /* With (some) ASF the first byte has to be stripped */ if( p_extra[0] != 0x00 ) { - memcpy( &p_extra[0], &p_extra[1], p_dec->fmt_out.i_extra - 1 ); + memmove( &p_extra[0], &p_extra[1], p_dec->fmt_out.i_extra - 1 ); p_dec->fmt_out.i_extra--; } diff --git a/modules/services_discovery/sap.c b/modules/services_discovery/sap.c index c1ec7d0..8cf049a 100644 --- a/modules/services_discovery/sap.c +++ b/modules/services_discovery/sap.c @@ -3,7 +3,7 @@ ***************************************************************************** * Copyright (C) 2004-2005 the VideoLAN team * Copyright © 2007 Rémi Denis-Courmont - * $Id: 430d234494fc9d91b3325e15dfdc02da7e3bb5fe $ + * $Id: a044d4e6905c4ba56d77392c655c388ab68950e7 $ * * Authors: Clément Stenac <zorglub@videolan.org> * Rémi Denis-Courmont @@ -582,9 +582,9 @@ static void *Run( void *data ) mtime_t i_last_period = now - p_announce->i_last; /* Remove the announcement, if the last announcement was 1 hour ago - * or if the last packet emitted was 3 times the average time + * or if the last packet emitted was 10 times the average time * between two packets */ - if( ( p_announce->i_period_trust > 5 && i_last_period > 3 * p_announce->i_period ) || + if( ( p_announce->i_period_trust > 5 && i_last_period > 10 * p_announce->i_period ) || i_last_period > i_timeout ) { RemoveAnnounce( p_sd, p_announce ); @@ -593,7 +593,7 @@ static void *Run( void *data ) { /* Compute next timeout */ if( p_announce->i_period_trust > 5 ) - timeout = min_int((3 * p_announce->i_period - i_last_period) / 1000, timeout); + timeout = min_int((10 * p_announce->i_period - i_last_period) / 1000, timeout); timeout = min_int((i_timeout - i_last_period)/1000, timeout); } } diff --git a/modules/stream_filter/httplive.c b/modules/stream_filter/httplive.c index 555accb..973d07d 100644 --- a/modules/stream_filter/httplive.c +++ b/modules/stream_filter/httplive.c @@ -2,7 +2,7 @@ * httplive.c: HTTP Live Streaming stream filter ***************************************************************************** * Copyright (C) 2010-2012 M2X BV - * $Id: fa745af1052ff13c1f9dd22a088fffcc441ff904 $ + * $Id: d66ee28dc2231a3a53a243409f3f0381040ff1e0 $ * * Author: Jean-Paul Saman <jpsaman _AT_ videolan _DOT_ org> * @@ -541,15 +541,15 @@ static int string_to_IV(char *string_hexa, uint8_t iv[AES_BLOCK_SIZE]) if (len <= 16) { iv_hi = 0; iv_lo = strtoull(string_hexa, &end, 16); - if (end) + if (*end) return VLC_EGENERIC; } else { - iv_lo = strtoull(&string_hexa[len-16], NULL, 16); - if (end) + iv_lo = strtoull(&string_hexa[len-16], &end, 16); + if (*end) return VLC_EGENERIC; string_hexa[len-16] = '\0'; - iv_hi = strtoull(string_hexa, NULL, 16); - if (end) + iv_hi = strtoull(string_hexa, &end, 16); + if (*end) return VLC_EGENERIC; } @@ -1838,43 +1838,66 @@ static int hls_Download(stream_t *s, segment_t *segment) return VLC_EGENERIC; segment->size = stream_Size(p_ts); - assert(segment->size > 0); - segment->data = block_Alloc(segment->size); - if (segment->data == NULL) - { + if (segment->size == 0) { + int chunk_size = 65536; + segment->data = block_Alloc(chunk_size); + if (!segment->data) + goto nomem; + do { + if (segment->data->i_buffer - segment->size < chunk_size) { + chunk_size *= 2; + block_t *p_block = block_Realloc(segment->data, 0, segment->data->i_buffer + chunk_size); + if (!p_block) { + block_Release(segment->data); + segment->data = NULL; + goto nomem; + } + segment->data = p_block; + } + + ssize_t length = stream_Read(p_ts, segment->data->p_buffer + segment->size, chunk_size); + if (length <= 0) { + segment->data->i_buffer = segment->size; + break; + } + segment->size += length; + } while (vlc_object_alive(s)); + stream_Delete(p_ts); - return VLC_ENOMEM; + return VLC_SUCCESS; } + segment->data = block_Alloc(segment->size); + if (segment->data == NULL) + goto nomem; + assert(segment->data->i_buffer == segment->size); - ssize_t length = 0, curlen = 0; - uint64_t size; + ssize_t curlen = 0; do { /* NOTE: Beware the size reported for a segment by the HLS server may not * be correct, when downloading the segment data. Therefore check the size * and enlarge the segment data block if necessary. */ - size = stream_Size(p_ts); + uint64_t size = stream_Size(p_ts); if (size > segment->size) { msg_Dbg(s, "size changed %"PRIu64, segment->size); block_t *p_block = block_Realloc(segment->data, 0, size); if (p_block == NULL) { - stream_Delete(p_ts); block_Release(segment->data); segment->data = NULL; - return VLC_ENOMEM; + goto nomem; } segment->data = p_block; segment->size = size; assert(segment->data->i_buffer == segment->size); p_block = NULL; } - length = stream_Read(p_ts, segment->data->p_buffer + curlen, segment->size - curlen); + ssize_t length = stream_Read(p_ts, segment->data->p_buffer + curlen, segment->size - curlen); if (length <= 0) break; curlen += length; @@ -1882,6 +1905,10 @@ static int hls_Download(stream_t *s, segment_t *segment) stream_Delete(p_ts); return VLC_SUCCESS; + +nomem: + stream_Delete(p_ts); + return VLC_ENOMEM; } /* Read M3U8 file */ diff --git a/modules/stream_filter/smooth/downloader.c b/modules/stream_filter/smooth/downloader.c index 464dce5..a069233 100644 --- a/modules/stream_filter/smooth/downloader.c +++ b/modules/stream_filter/smooth/downloader.c @@ -2,7 +2,7 @@ * downloader.c: download thread ***************************************************************************** * Copyright (C) 1996-2012 VLC authors and VideoLAN - * $Id: 4e43b5b802802a53648610765d8157fd3cb28449 $ + * $Id: 0c1ae0832b7426d589c9b4c5aa2c2eb3ec971107 $ * * Author: Frédéric Yhuel <fyhuel _AT_ viotech _DOT_ net> * @@ -344,8 +344,9 @@ static int build_smoo_box( stream_t *s, uint8_t *smoo_box ) if( !qlvl->CodecPrivateData ) continue; stra_box[98] = stra_box[99] = stra_box[100] = 0; /* reserved */ - assert( strlen( qlvl->CodecPrivateData ) < 512 ); stra_box[101] = strlen( qlvl->CodecPrivateData ) / 2; + if ( stra_box[101] > STRA_SIZE - 102 ) + stra_box[101] = STRA_SIZE - 102; uint8_t *binary_cpd = decode_string_hex_to_binary( qlvl->CodecPrivateData ); memcpy( stra_box + 102, binary_cpd, stra_box[101] ); free( binary_cpd ); diff --git a/modules/video_filter/atmo/AtmoConfig.cpp b/modules/video_filter/atmo/AtmoConfig.cpp index a0307b4..1a38370 100644 --- a/modules/video_filter/atmo/AtmoConfig.cpp +++ b/modules/video_filter/atmo/AtmoConfig.cpp @@ -4,7 +4,7 @@ * * See the README.txt file for copyright information and how to reach the author(s). * - * $Id: 167dc80967ce34b9c93529883761afe8e0f4d3bc $ + * $Id: 5593362862ad4a0f6908a8471dea9afccaa39077 $ */ #ifdef HAVE_CONFIG_H @@ -63,7 +63,7 @@ CAtmoConfig::~CAtmoConfig() { { for(int zone=0; zone<m_AtmoZoneDefCount; zone++) delete m_ZoneDefinitions[zone]; - delete m_ZoneDefinitions; + delete[] m_ZoneDefinitions; m_ZoneDefinitions = NULL; } @@ -392,7 +392,7 @@ void CAtmoConfig::UpdateZoneDefinitionCount() { for(int zone=0; zone<m_AtmoZoneDefCount; zone++) delete m_ZoneDefinitions[zone]; - delete m_ZoneDefinitions; + delete[] m_ZoneDefinitions; m_ZoneDefinitions = NULL; } m_AtmoZoneDefCount = getZoneCount(); diff --git a/modules/video_filter/mosaic.c b/modules/video_filter/mosaic.c index 4a7bdee..70715fa 100644 --- a/modules/video_filter/mosaic.c +++ b/modules/video_filter/mosaic.c @@ -2,7 +2,7 @@ * mosaic.c : Mosaic video plugin for vlc ***************************************************************************** * Copyright (C) 2004-2008 VLC authors and VideoLAN - * $Id: a9aef4416b923b94e1b28e78dd2bd57fa41d290e $ + * $Id: 14703a6148c0ef62a4da261153f037cf3a4101e8 $ * * Authors: Antoine Cellerier <dionoea at videolan dot org> * Christophe Massiot <massiot@via.ecp.fr> @@ -651,7 +651,7 @@ static subpicture_t *Filter( filter_t *p_filter, mtime_t date ) p_filter->pf_sub_buffer_del( p_filter, p_spu ); vlc_global_unlock( VLC_MOSAIC_MUTEX ); vlc_mutex_unlock( &p_sys->lock ); - return p_spu; + return NULL; } if( p_es->i_x >= 0 && p_es->i_y >= 0 ) diff --git a/modules/video_filter/psychedelic.c b/modules/video_filter/psychedelic.c index 25ad268..861f904 100644 --- a/modules/video_filter/psychedelic.c +++ b/modules/video_filter/psychedelic.c @@ -2,7 +2,7 @@ * psychedelic.c : Psychedelic video effect plugin for vlc ***************************************************************************** * Copyright (C) 2000-2006 VLC authors and VideoLAN - * $Id: fa7cce4bfbd815f6aaed38860c7f10b30d3f4fe9 $ + * $Id: cbca3785834c12bd9a08f641848763d7f81d20c3 $ * * Authors: Samuel Hocevar <sam@zoy.org> * Antoine Cellerier <dionoea -at- videolan -dot- org> @@ -187,6 +187,8 @@ static picture_t *Filter( filter_t *p_filter, picture_t *p_pic ) fmt_out = p_filter->fmt_out.video; fmt_out.i_width = p_filter->fmt_out.video.i_width*p_filter->p_sys->scale/150; fmt_out.i_height = p_filter->fmt_out.video.i_height*p_filter->p_sys->scale/150; + fmt_out.i_visible_width = fmt_out.i_width; + fmt_out.i_visible_height = fmt_out.i_height; p_converted = image_Convert( p_filter->p_sys->p_image, p_pic, &(p_pic->format), &fmt_out ); diff --git a/modules/video_output/aa.c b/modules/video_output/aa.c index 0c0313a..7ed49f8 100644 --- a/modules/video_output/aa.c +++ b/modules/video_output/aa.c @@ -2,7 +2,7 @@ * aa.c: "vout display" module using aalib ***************************************************************************** * Copyright (C) 2002-2009 VLC authors and VideoLAN - * $Id: 5a848cf6b57636d9982aba93473c8420cedc7455 $ + * $Id: fe696861c019d47a8d306f8b151553e283c484ab $ * * Authors: Sigmund Augdal Helberg <dnumgis@videolan.org> * @@ -119,6 +119,8 @@ static int Open(vlc_object_t *object) fmt.i_chroma = VLC_CODEC_RGB8; fmt.i_width = aa_imgwidth(sys->aa_context); fmt.i_height = aa_imgheight(sys->aa_context); + fmt.i_visible_width = fmt.i_width; + fmt.i_visible_height = fmt.i_height; /* */ vout_display_info_t info = vd->info; diff --git a/modules/video_output/opengl.c b/modules/video_output/opengl.c index 35c4779..3c3cddc 100644 --- a/modules/video_output/opengl.c +++ b/modules/video_output/opengl.c @@ -593,7 +593,7 @@ vout_display_opengl_t *vout_display_opengl_New(video_format_t *fmt, vgl->tex_type = GL_UNSIGNED_SHORT; } vgl->chroma = vlc_fourcc_GetChromaDescription(vgl->fmt.i_chroma); - vgl->use_multitexture = vgl->chroma->plane_count > 1; + vgl->use_multitexture = vgl->chroma && vgl->chroma->plane_count > 1; /* Texture size */ for (unsigned j = 0; j < vgl->chroma->plane_count; j++) { diff --git a/modules/video_output/vmem.c b/modules/video_output/vmem.c index b4026ff..c5d2314 100644 --- a/modules/video_output/vmem.c +++ b/modules/video_output/vmem.c @@ -302,11 +302,13 @@ static picture_pool_t *Pool(vout_display_t *vd, unsigned count) static void Display(vout_display_t *vd, picture_t *picture, subpicture_t *subpicture) { vout_display_sys_t *sys = vd->sys; + void *id = picture->p_sys->id; assert(!picture_IsReferenced(picture)); - if (sys->display != NULL) - sys->display(sys->opaque, picture->p_sys->id); picture_Release(picture); + + if (sys->display != NULL) + sys->display(sys->opaque, id); VLC_UNUSED(subpicture); } diff --git a/share/lua/extensions/VLSub.lua b/share/lua/extensions/VLSub.lua index 319c9f7..1820efd 100644 --- a/share/lua/extensions/VLSub.lua +++ b/share/lua/extensions/VLSub.lua @@ -3,7 +3,8 @@ Copyright 2013 Guillaume Le Maout Authors: Guillaume Le Maout - Contact: http://addons.videolan.org/messages/?action=newmessage&username=exebetche +Contact: +http://addons.videolan.org/messages/?action=newmessage&username=exebetche Bug report: http://addons.videolan.org/content/show.php/?content=148752 This program is free software; you can redistribute it and/or modify @@ -24,8 +25,8 @@ --[[ Global var ]]-- --- You can set here your default language by replacing nil with your language code (see below) --- Example: +-- You can set here your default language by replacing nil with +-- your language code (see below).Example: -- language = "fre", -- language = "ger", -- language = "eng", @@ -43,14 +44,18 @@ local options = { eng = 'English', cze = 'Czech', dan = 'Danish', + dut = 'Nederlands', fre = 'Français', ell = 'Greek', baq = 'Basque', pob = 'Brazilian Portuguese', + por = 'Portuguese (Portugal)', + rum = 'Romanian', slo = 'Slovak', spa = 'Spanish', swe = 'Swedish', - ukr = 'Ukrainian' + ukr = 'Ukrainian', + hun = 'Hungarian' }, translation = { int_all = 'All', @@ -86,28 +91,64 @@ local options = { int_vlsub_work_dir = 'VLSub working directory', int_os_username = 'Username', int_os_password = 'Password', - int_help_mess = " Download subtittles from <a href='http://www.opensubtitles.org/'>opensubtitles.org</a> and display them while watching a video.<br>".. - " <br>".. - " <b><u>Usage:</u></b><br>".. - " <br>".. - " VLSub is meant to be used while your watching the video, so start it first (if nothing is playing you will get a link to download the subtitles in your browser).<br>".. - " <br>".. - " Choose the language for your subtitles and click on the button corresponding to one of the two research method provided by VLSub:<br>".. - " <br>".. - " <b>Method 1: Search by hash</b><br>".. - " It is recommended to try this method first, because it performs a research based on the video file print, so you can find subtitles synchronized with your video.<br>".. - " <br>".. - " <b>Method 2: Search by name</b><br>".. - " If you have no luck with the first method, just check the title is correct before clicking. If you search subtitles for a serie, you can also provide a season and episode number.<br>".. - " <br>".. - " <b>Downloading Subtitles</b><br>".. - " Select one subtitle in the list and click on 'Download'.<br>".. - " It will be put in the same directory that your video, with the same name (different extension)".. - " so Vlc will load them automatically the next time you'll start the video.<br>".. - " <br>".. - " <b>/!\\ Beware :</b> Existing subtitles are overwrited without asking confirmation, so put them elsewhere if thet're important.<br>".. - " <br>".. - " Find more Vlc extensions at <a href='http://addons.videolan.org'>addons.videolan.org</a>.", + int_help_mess =[[ + Download subtitles from + <a href='http://www.opensubtitles.org/'> + opensubtitles.org + </a> and display them while watching a video.<br> + <br> + <b><u>Usage:</u></b><br> + <br> + Start your video. If you use Vlsub witout playing a video + you will get a link to download the subtitles in your browser + but the subtitles won't be saved and loaded automatically.<br> + <br> + Choose the language for your subtitles and click on the + button corresponding to one of the two research methods + provided by VLSub:<br> + <br> + <b>Method 1: Search by hash</b><br> + It is recommended to try this method first, because it + performs a research based on the video file print, so you + can find subtitles synchronized with your video.<br> + <br> + <b>Method 2: Search by name</b><br> + If you have no luck with the first method, just check the + title is correct before clicking. If you search subtitles + for a series, you can also provide a season and episode + number.<br> + <br> + <b>Downloading Subtitles</b><br> + Select one subtitle in the list and click on 'Download'.<br> + It will be put in the same directory that your video, with + the same name (different extension) + so VLC will load them automatically the next time you'll + start the video.<br> + <br> + <b>/!\\ Beware :</b> Existing subtitles are overwritten + without asking confirmation, so put them elsewhere if + they're important.<br> + <br> + Find more VLC extensions at + <a href='http://addons.videolan.org'>addons.videolan.org</a>. + ]], + int_no_support_mess = [[ + <strong>VLSub is not working with Vlc 2.1.x on + any platform</strong> + because the lua "net" module needed to interact + with opensubtitles has been + removed in this release for the extensions. + <br> + <strong>Works with Vlc 2.2 on mac and linux.</strong> + <br> + <strong>On windows you have to install an older version + of Vlc (2.0.8 for example)</strong> + to use Vlsub: + <br> + <a target="_blank" rel="nofollow" + href="http://download.videolan.org/pub/videolan/vlc/2.0.8/"> + http://download.videolan.org/pub/videolan/vlc/2.0.8/</a><br> + ]], action_login = 'Logging in', action_logout = 'Logging out', @@ -132,10 +173,13 @@ local options = { mess_no_res = 'No result', mess_res = 'result(s)', mess_loaded = 'Subtitles loaded', + mess_not_load = 'Unable to load subtitles', mess_downloading = 'Downloading subtitle', mess_dowload_link = 'Download link', - mess_err_conf_access ='Can\'t fount a suitable path to save config, please set it manually', - mess_err_wrong_path ='the path contains illegal character, please correct it' + mess_err_conf_access ='Can\'t find a suitable path to save'.. + 'config, please set it manually', + mess_err_wrong_path ='the path contains illegal character, '.. + 'please correct it' } } @@ -278,12 +322,12 @@ local dlg = nil local input_table = {} -- General widget id reference local select_conf = {} -- Drop down widget / option table association - --[[ Vlc extension stuff ]]-- + --[[ VLC extension stuff ]]-- function descriptor() return { - title = "VLsub 0.9.10", - version = "0.9.10", + title = "VLsub 0.9.13", + version = "0.9.13", author = "exebetche", url = 'http://www.opensubtitles.org/', shortdesc = "Download Subtitles"; @@ -295,7 +339,10 @@ end function activate() vlc.msg.dbg("[VLsub] Welcome") - check_config() + if not check_config() then + vlc.msg.err("[VLsub] Unsupported VLC version") + return false + end if vlc.input.item() then openSub.getFileInfo() @@ -306,7 +353,7 @@ function activate() end function close() - deactivate() + vlc.deactivate() end function deactivate() @@ -318,7 +365,6 @@ function deactivate() if openSub.session.token and openSub.session.token ~= "" then openSub.request("LogOut") end - vlc.deactivate() end function menu() @@ -344,24 +390,39 @@ end function interface_main() dlg:add_label(lang["int_default_lang"]..':', 1, 1, 1, 1) input_table['language'] = dlg:add_dropdown(2, 1, 2, 1) - dlg:add_button(lang["int_search_hash"], searchHash, 4, 1, 1, 1) + dlg:add_button(lang["int_search_hash"], + searchHash, 4, 1, 1, 1) dlg:add_label(lang["int_title"]..':', 1, 2, 1, 1) - input_table['title'] = dlg:add_text_input(openSub.movie.title or "", 2, 2, 2, 1) - dlg:add_button(lang["int_search_name"], searchIMBD, 4, 2, 1, 1) + input_table['title'] = dlg:add_text_input( + openSub.movie.title or "", 2, 2, 2, 1) + dlg:add_button(lang["int_search_name"], + searchIMBD, 4, 2, 1, 1) dlg:add_label(lang["int_season"]..':', 1, 3, 1, 1) - input_table['seasonNumber'] = dlg:add_text_input(openSub.movie.seasonNumber or "", 2, 3, 2, 1) + input_table['seasonNumber'] = dlg:add_text_input( + openSub.movie.seasonNumber or "", 2, 3, 2, 1) dlg:add_label(lang["int_episode"]..':', 1, 4, 1, 1) - input_table['episodeNumber'] = dlg:add_text_input(openSub.movie.episodeNumber or "", 2, 4, 2, 1) + input_table['episodeNumber'] = dlg:add_text_input( + openSub.movie.episodeNumber or "", 2, 4, 2, 1) input_table['mainlist'] = dlg:add_list(1, 5, 4, 1) input_table['message'] = nil input_table['message'] = dlg:add_label(' ', 1, 6, 4, 1) - dlg:add_button(lang["int_show_help"], show_help, 1, 7, 1, 1) - dlg:add_button(' '..lang["int_show_conf"]..' ', show_conf, 2, 7, 1, 1) - dlg:add_button(lang["int_dowload_sel"], download_subtitles, 3, 7, 1, 1) - dlg:add_button(lang["int_close"], deactivate, 4, 7, 1, 1) + dlg:add_button( + lang["int_show_help"], show_help, 1, 7, 1, 1) + dlg:add_button( + ' '..lang["int_show_conf"]..' ', show_conf, 2, 7, 1, 1) + dlg:add_button( + lang["int_dowload_sel"], download_subtitles, 3, 7, 1, 1) + dlg:add_button( + lang["int_close"], deactivate, 4, 7, 1, 1) + + assoc_select_conf( + 'language', + 'language', + openSub.conf.languages, + 2, + lang["int_all"]) - assoc_select_conf('language', 'language', openSub.conf.languages, 2, lang["int_all"]) display_subtitles() end @@ -372,78 +433,135 @@ function set_interface_main() openSub.getFileInfo() openSub.getMovieInfo() - input_table['title']:set_text(openSub.movie.title or "") - input_table['episodeNumber']:set_text(openSub.movie.episodeNumber or "") - input_table['seasonNumber']:set_text(openSub.movie.seasonNumber or "") + input_table['title']:set_text( + openSub.movie.title or "") + input_table['episodeNumber']:set_text( + openSub.movie.episodeNumber or "") + input_table['seasonNumber']:set_text( + openSub.movie.seasonNumber or "") end function interface_config() - input_table['intLangLab'] = dlg:add_label(lang["int_int_lang"]..':', 1, 1, 1, 1) - input_table['intLangBut'] = dlg:add_button(lang["int_search_transl"], get_available_translations, 2, 1, 1, 1) + input_table['intLangLab'] = dlg:add_label( + lang["int_int_lang"]..':', 1, 1, 1, 1) + input_table['intLangBut'] = dlg:add_button( + lang["int_search_transl"], + get_available_translations, 2, 1, 1, 1) input_table['intLang'] = dlg:add_dropdown(3, 1, 1, 1) - dlg:add_label(lang["int_default_lang"]..':', 1, 2, 2, 1) + dlg:add_label( + lang["int_default_lang"]..':', 1, 2, 2, 1) input_table['default_language'] = dlg:add_dropdown(3, 2, 1, 1) - dlg:add_label(lang["int_dowload_behav"]..':', 1, 3, 2, 1) + dlg:add_label( + lang["int_dowload_behav"]..':', 1, 3, 2, 1) input_table['downloadBehaviour'] = dlg:add_dropdown(3, 3, 1, 1) - - dlg:add_label(lang["int_display_code"]..':', 1, 4, 0, 1) + dlg:add_label( + lang["int_display_code"]..':', 1, 4, 0, 1) input_table['langExt'] = dlg:add_dropdown(3, 4, 1, 1) - dlg:add_label(lang["int_remove_tag"]..':', 1, 5, 0, 1) + dlg:add_label( + lang["int_remove_tag"]..':', 1, 5, 0, 1) input_table['removeTag'] = dlg:add_dropdown(3, 5, 1, 1) if openSub.conf.dirPath then if openSub.conf.os == "win" then - dlg :add_label("<a href='file:///"..openSub.conf.dirPath.."'>"..lang["int_vlsub_work_dir"].."</a>", 1, 6, 2, 1) + dlg:add_label( + "<a href='file:///"..openSub.conf.dirPath.."'>".. + lang["int_vlsub_work_dir"].."</a>", 1, 6, 2, 1) else - dlg :add_label("<a href='"..openSub.conf.dirPath.."'>"..lang["int_vlsub_work_dir"].."</a>", 1, 6, 2, 1) + dlg:add_label( + "<a href='"..openSub.conf.dirPath.."'>".. + lang["int_vlsub_work_dir"].."</a>", 1, 6, 2, 1) end else - dlg :add_label(lang["int_vlsub_work_dir"], 1, 6, 2, 1) + dlg :add_label( + lang["int_vlsub_work_dir"], 1, 6, 2, 1) end - input_table['dir_path'] = dlg:add_text_input(openSub.conf.dirPath, 2, 6, 2, 1) + input_table['dir_path'] = dlg:add_text_input( + openSub.conf.dirPath, 2, 6, 2, 1) - dlg:add_label(lang["int_os_username"]..':', 1, 7, 0, 1) - input_table['os_username'] = dlg:add_text_input(openSub.option.os_username or "", 2, 7, 2, 1) - dlg:add_label(lang["int_os_password"]..':', 1, 8, 0, 1) - input_table['os_password'] = dlg:add_text_input(openSub.option.os_password or "", 2, 8, 2, 1) + dlg:add_label( + lang["int_os_username"]..':', 1, 7, 0, 1) + input_table['os_username'] = dlg:add_text_input( + type(openSub.option.os_username) == "string" + and openSub.option.os_username or "", 2, 7, 2, 1) + dlg:add_label( + lang["int_os_password"]..':', 1, 8, 0, 1) + input_table['os_password'] = dlg:add_text_input( + type(openSub.option.os_password) == "string" + and openSub.option.os_password or "", 2, 8, 2, 1) input_table['message'] = nil input_table['message'] = dlg:add_label(' ', 1, 9, 3, 1) - dlg:add_button(lang["int_cancel"], show_main, 2, 10, 1, 1) - dlg:add_button(lang["int_save"], apply_config, 3, 10, 1, 1) - - input_table['langExt']:add_value(lang["int_bool_"..tostring(openSub.option.langExt)], 1) - input_table['langExt']:add_value(lang["int_bool_"..tostring(not openSub.option.langExt)], 2) - input_table['removeTag']:add_value(lang["int_bool_"..tostring(openSub.option.removeTag)], 1) - input_table['removeTag']:add_value(lang["int_bool_"..tostring(not openSub.option.removeTag)], 2) - - assoc_select_conf('intLang', 'intLang', openSub.conf.translations_avail, 2) - assoc_select_conf('default_language', 'language', openSub.conf.languages, 2, lang["int_all"]) - assoc_select_conf('downloadBehaviour', 'downloadBehaviour', openSub.conf.downloadBehaviours, 1) + dlg:add_button( + lang["int_cancel"], + show_main, 2, 10, 1, 1) + dlg:add_button( + lang["int_save"], + apply_config, 3, 10, 1, 1) + + input_table['langExt']:add_value( + lang["int_bool_"..tostring(openSub.option.langExt)], 1) + input_table['langExt']:add_value( + lang["int_bool_"..tostring(not openSub.option.langExt)], 2) + input_table['removeTag']:add_value( + lang["int_bool_"..tostring(openSub.option.removeTag)], 1) + input_table['removeTag']:add_value( + lang["int_bool_"..tostring(not openSub.option.removeTag)], 2) + + assoc_select_conf( + 'intLang', + 'intLang', + openSub.conf.translations_avail, + 2) + assoc_select_conf( + 'default_language', + 'language', + openSub.conf.languages, + 2, + lang["int_all"]) + assoc_select_conf( + 'downloadBehaviour', + 'downloadBehaviour', + openSub.conf.downloadBehaviours, + 1) end function interface_help() local help_html = lang["int_help_mess"] - input_table['help'] = dlg:add_html(help_html, 1, 1, 4, 1) - dlg:add_label(string.rep (" ", 100), 1, 2, 3, 1) - dlg:add_button(lang["int_ok"], show_main, 4, 2, 1, 1) + input_table['help'] = dlg:add_html( + help_html, 1, 1, 4, 1) + dlg:add_label( + string.rep (" ", 100), 1, 2, 3, 1) + dlg:add_button( + lang["int_ok"], show_main, 4, 2, 1, 1) +end + +function interface_no_support() + local no_support_html = lang["int_no_support_mess"] + + input_table['no_support'] = dlg:add_html( + no_support_html, 1, 1, 4, 1) + dlg:add_label( + string.rep (" ", 100), 1, 2, 3, 1) end function trigger_menu(dlg_id) if dlg_id == 1 then close_dlg() - dlg = vlc.dialog(openSub.conf.useragent) + dlg = vlc.dialog( + openSub.conf.useragent) interface_main() elseif dlg_id == 2 then close_dlg() - dlg = vlc.dialog(openSub.conf.useragent..': '..lang["int_configuration"]) + dlg = vlc.dialog( + openSub.conf.useragent..': '..lang["int_configuration"]) interface_config() elseif dlg_id == 3 then close_dlg() - dlg = vlc.dialog(openSub.conf.useragent..': '..lang["int_help"]) + dlg = vlc.dialog( + openSub.conf.useragent..': '..lang["int_help"]) interface_help() end collectgarbage() --~ !important @@ -478,8 +596,13 @@ end --[[ Drop down / config association]]-- function assoc_select_conf(select_id, option, conf, ind, default) --- Helper for i/o interaction betwenn drop down and option list (lang...) - select_conf[select_id] = {cf = conf, opt = option, dflt = default, ind = ind} +-- Helper for i/o interaction between drop down and option list + select_conf[select_id] = { + cf = conf, + opt = option, + dflt = default, + ind = ind + } set_default_option(select_id) display_select(select_id) end @@ -503,7 +626,7 @@ function set_default_option(select_id) end function display_select(select_id) --- Display the drop down values with an optionnal default value at the top +-- Display the drop down values with an optional default value at the top local conf = select_conf[select_id].cf local opt = select_conf[select_id].opt local option = openSub.option[opt] @@ -563,9 +686,11 @@ function check_config() -- Check if config file path is stored in vlc config local other_dirs = {} - for path in vlc.config.get("sub-autodetect-path"):gmatch("[^,]+") do + for path in + vlc.config.get("sub-autodetect-path"):gmatch("[^,]+") do if path:match(".*"..sub_dir.."$") then - openSub.conf.dirPath = path:gsub("%s*(.*)"..sub_dir.."%s*$", "%1") + openSub.conf.dirPath = path:gsub( + "%s*(.*)"..sub_dir.."%s*$", "%1") config_saved = true end table.insert(other_dirs, path) @@ -586,12 +711,15 @@ function check_config() -- check if the config already exist if file_exist(userdatadir..dirPath..filePath) then + -- in vlc.config.userdatadir() openSub.conf.dirPath = userdatadir..dirPath config_saved = true elseif file_exist(datadir..dirPath..filePath) then + -- in vlc.config.datadir() openSub.conf.dirPath = datadir..dirPath config_saved = true else + -- if not found determine an accessible path local extension_path = slash..path_generic[1] ..slash..path_generic[2] @@ -637,7 +765,8 @@ function check_config() if config_saved and file_exist(openSub.conf.filePath) then - vlc.msg.dbg("[VLSub] Loading config file: "..openSub.conf.filePath) + vlc.msg.dbg( + "[VLSub] Loading config file: "..openSub.conf.filePath) load_config() else vlc.msg.dbg("[VLSub] No config file") @@ -648,16 +777,24 @@ function check_config() end end - -- Check presence of a translation file in "%vlsub_directory%/locale" + -- Check presence of a translation file + -- in "%vlsub_directory%/locale" -- Add translation files to available translation list - local file_list = list_dir(openSub.conf.localePath) local translations_avail = openSub.conf.translations_avail + if file_list then for i, file_name in ipairs(file_list) do - local lg = string.gsub(file_name, "^(%w%w%w).xml$", "%1") - if lg and not translations_avail[lg] then - table.insert(translations_avail, {lg, trsl_names[lg]}) + local lg = string.gsub( + file_name, + "^(%w%w%w).xml$", + "%1") + if lg + and not openSub.option.translations_avail[lg] then + table.insert(translations_avail, { + lg, + trsl_names[lg] + }) end end end @@ -666,25 +803,37 @@ function check_config() if openSub.option.intLang ~= "eng" and not openSub.conf.translated then - local transl_file_path = openSub.conf.localePath..slash..openSub.option.intLang..".xml" + local transl_file_path = openSub.conf.localePath.. + slash..openSub.option.intLang..".xml" if file_exist(transl_file_path) then - vlc.msg.dbg("[VLSub] Loadin translation from file: " .. transl_file_path) + vlc.msg.dbg( + "[VLSub] Loading translation from file: ".. + transl_file_path) load_transl(transl_file_path) end end else - vlc.msg.dbg("[VLSub] Unable fount a suitable path to save config, please set it manually") + vlc.msg.dbg("[VLSub] Unable to find a suitable path".. + "to save config, please set it manually") end lang = nil lang = options.translation -- just a short cut + if not vlc.net or not vlc.net.poll then + dlg = vlc.dialog( + openSub.conf.useragent..': '..lang["mess_error"]) + interface_no_support() + dlg:show() + return false + end + SetDownloadBehaviours() if not openSub.conf.dirPath then setError(lang["mess_err_conf_access"]) end - -- Set table list of available traduction from assoc. array + -- Set table list of available translations from assoc. array -- so it is sortable for k, l in pairs(openSub.option.translations_avail) do @@ -695,6 +844,7 @@ function check_config() end end collectgarbage() + return true end function load_config() @@ -760,7 +910,9 @@ function getenv_lang() openSub.option.language = lang_os_to_iso[os_lang] end else -- Windows - local lang_w = string.match(os.setlocale("", "collate"), "^[^_]+") + local lang_w = string.match( + os.setlocale("", "collate"), + "^[^_]+") for i, v in ipairs(openSub.conf.languages) do if v[2] == lang_w then openSub.option.language = v[1] @@ -774,6 +926,7 @@ function apply_config() local lg_sel = input_table['intLang']:get_value() local sel_val local opt + local sel_cf if lg_sel and lg_sel ~= 1 and openSub.conf.translations_avail[lg_sel] then @@ -783,14 +936,16 @@ function apply_config() end for select_id, v in pairs(select_conf) do - if input_table[select_id] and select_conf[select_id] then + if input_table[select_id] + and select_conf[select_id] then sel_val = input_table[select_id]:get_value() - opt = select_conf[select_id].opt + sel_cf = select_conf[select_id] + opt = sel_cf.opt if sel_val == 0 then openSub.option[opt] = nil else - openSub.option[opt] = select_conf[select_id].cf[sel_val][1] + openSub.option[opt] = sel_cf.cf[sel_val][1] end set_default_option(select_id) @@ -820,7 +975,10 @@ function apply_config() or not dir_path then local other_dirs = {} - for path in vlc.config.get("sub-autodetect-path"):gmatch("[^,]+") do + for path in + vlc.config.get( + "sub-autodetect-path"):gmatch("[^,]+" + ) do path = trim(path) if path ~= (openSub.conf.dirPath or "")..sub_dir then table.insert(other_dirs, path) @@ -835,16 +993,27 @@ function apply_config() mkdir_p(dir_path) end - openSub.conf.filePath = openSub.conf.dirPath..slash.."vlsub_conf.xml" - openSub.conf.localePath = openSub.conf.dirPath..slash.."locale" + openSub.conf.filePath = openSub.conf.dirPath.. + slash.."vlsub_conf.xml" + openSub.conf.localePath = openSub.conf.dirPath.. + slash.."locale" else openSub.conf.filePath = nil openSub.conf.localePath = nil end - vlc.config.set("sub-autodetect-path", table.concat(other_dirs, ", ")) + vlc.config.set( + "sub-autodetect-path", + table.concat(other_dirs, ", ")) else dir_path_err = true - setError(lang["mess_err_wrong_path"].."<br><b>"..string.gsub(dir_path, "[^%:%w%p%s§¤]+", "<span style='color:#B23'>%1</span>").."</b>") + setError(lang["mess_err_wrong_path"].. + "<br><b>".. + string.gsub( + dir_path, + "[^%:%w%p%s§¤]+", + "<span style='color:#B23'>%1</span>" + ).. + "</b>") end end @@ -864,10 +1033,13 @@ function save_config() -- Dump local config into config file if openSub.conf.dirPath and openSub.conf.filePath then - vlc.msg.dbg("[VLSub] Saving config file: " .. openSub.conf.filePath) + vlc.msg.dbg( + "[VLSub] Saving config file: ".. + openSub.conf.filePath) if file_touch(openSub.conf.filePath) then - local tmpFile = assert(io.open(openSub.conf.filePath, "wb")) + local tmpFile = assert( + io.open(openSub.conf.filePath, "wb")) local resp = dump_xml(openSub.option) tmpFile:write(resp) tmpFile:flush() @@ -879,7 +1051,8 @@ function save_config() collectgarbage() return true else - vlc.msg.dbg("[VLSub] Unable fount a suitable path to save config, please set it manually") + vlc.msg.dbg("[VLSub] Unable fount a suitable path ".. + "to save config, please set it manually") setError(lang["mess_err_conf_access"]) return false end @@ -889,31 +1062,39 @@ function SetDownloadBehaviours() openSub.conf.downloadBehaviours = nil openSub.conf.downloadBehaviours = { {'save', lang["int_dowload_save"]}, - {'load', lang["int_dowload_load"]}, {'manual', lang["int_dowload_manual"]} } end function get_available_translations() -- Get all available translation files from the internet --- (drop previous direct download from github repo because of problem with github https CA certficate on OS X an XP) +-- (drop previous direct download from github repo +-- causing error with github https CA certficate on OS X an XP) -- https://github.com/exebetche/vlsub/tree/master/locale - local translations_url = "http://addons.videolan.org/CONTENT/content-files/148752-vlsub_translations.xml" + local translations_url = "http://addons.videolan.org/CONTENT/".. + "content-files/148752-vlsub_translations.xml" - if input_table['intLangBut']:get_text() == lang["int_search_transl"] then + if input_table['intLangBut']:get_text() == lang["int_search_transl"] + then openSub.actionLabel = lang["int_searching_transl"] local translations_content, lol = get(translations_url) - + local translations_avail = openSub.option.translations_avail all_trsl = parse_xml(translations_content) local lg, trsl for lg, trsl in pairs(all_trsl) do - if lg ~= options.intLang[1] and not openSub.option.translations_avail[lg] then - openSub.option.translations_avail[lg] = trsl_names[lg] or "" - table.insert(openSub.conf.translations_avail, {lg, trsl_names[lg]}) - input_table['intLang']:add_value(trsl_names[lg], #openSub.conf.translations_avail) + if lg ~= options.intLang[1] + and not translations_avail[lg] then + translations_avail[lg] = trsl_names[lg] or "" + table.insert(openSub.conf.translations_avail, { + lg, + trsl_names[lg] + }) + input_table['intLang']:add_value( + trsl_names[lg], + #openSub.conf.translations_avail) end end @@ -933,9 +1114,12 @@ function set_translation(lg) else -- If translation file exists in /locale directory load it if openSub.conf.localePath - and file_exist(openSub.conf.localePath..slash..lg..".xml") then - local transl_file_path = openSub.conf.localePath..slash..lg..".xml" - vlc.msg.dbg("[VLSub] Loading translation from file: " .. transl_file_path) + and file_exist(openSub.conf.localePath.. + slash..lg..".xml") then + local transl_file_path = openSub.conf.localePath.. + slash..lg..".xml" + vlc.msg.dbg("[VLSub] Loading translation from file: ".. + transl_file_path) load_transl(transl_file_path) apply_translation() else @@ -1022,11 +1206,14 @@ openSub = { response = parse_xmlrpc(responseStr) if response then if response.status == "200 OK" then - return openSub.methods[methodName].callback(response) + return openSub.methods[methodName] + .callback(response) elseif response.status == "406 No session" then openSub.request("LogIn") elseif response then - setError("code '"..response.status.."' ("..status..")") + setError("code '".. + response.status.. + "' ("..status..")") return false end else @@ -1104,7 +1291,8 @@ openSub = { methodName = "SearchSubtitles", params = function() openSub.actionLabel = lang["action_search"] - setMessage(openSub.actionLabel..": "..progressBarContent(0)) + setMessage(openSub.actionLabel..": ".. + progressBarContent(0)) return { { value={ string=openSub.session.token } }, @@ -1115,11 +1303,13 @@ openSub = { struct={ member={ { name="sublanguageid", value={ - string=openSub.movie.sublanguageid } }, + string=openSub.movie.sublanguageid } + }, { name="moviehash", value={ string=openSub.file.hash } }, { name="moviebytesize", value={ - double=openSub.file.bytesize } } }}}}}}} + double=openSub.file.bytesize } } + }}}}}}} } end, callback = function(resp) @@ -1130,7 +1320,8 @@ openSub = { methodName = "SearchSubtitles", params = function() openSub.actionLabel = lang["action_search"] - setMessage(openSub.actionLabel..": "..progressBarContent(0)) + setMessage(openSub.actionLabel..": ".. + progressBarContent(0)) local member = { { name="sublanguageid", value={ @@ -1192,16 +1383,26 @@ openSub = { file.path = string.match(file.path, "^/(%a:/.+)$") or file.path -- For file in archive - local archive_path, name_in_archive = string.match(file.path, '^([^!]+)!/([^!/]*)$') + local archive_path, name_in_archive = string.match( + file.path, '^([^!]+)!/([^!/]*)$') if archive_path and archive_path ~= "" then - file.path = string.gsub(archive_path, '\063', '%%') + file.path = string.gsub( + archive_path, + '\063', + '%%') file.path = vlc.strings.decode_uri(file.path) - file.completeName = string.gsub(name_in_archive, '\063', '%%') - file.completeName = vlc.strings.decode_uri(file.completeName) + file.completeName = string.gsub( + name_in_archive, + '\063', + '%%') + file.completeName = vlc.strings.decode_uri( + file.completeName) file.is_archive = true else -- "classic" input file.path = vlc.strings.decode_uri(file.path) - file.dir, file.completeName = string.match(file.path, '^(.+/)([^/]*)$') + file.dir, file.completeName = string.match( + file.path, + '^(.+/)([^/]*)$') local file_stat = vlc.net.stat(file.path) if file_stat @@ -1212,14 +1413,20 @@ openSub = { file.is_archive = false end - file.name, file.ext = string.match(file.completeName, '^([^/]-)%.?([^%.]*)$') + file.name, file.ext = string.match( + file.completeName, + '^([^/]-)%.?([^%.]*)$') if file.ext == "part" then - file.name, file.ext = string.match(file.name, '^([^/]+)%.([^%.]+)$') + file.name, file.ext = string.match( + file.name, + '^([^/]+)%.([^%.]+)$') end file.hasInput = true; - file.cleanName = string.gsub(file.name, "[%._]", " ") + file.cleanName = string.gsub( + file.name, + "[%._]", " ") vlc.msg.dbg("[VLSub] file info "..(dump_xml(file))) end collectgarbage() @@ -1233,10 +1440,14 @@ openSub = { return false end - local showName, seasonNumber, episodeNumber = string.match(openSub.file.cleanName, "(.+)[sS](%d%d)[eE](%d%d).*") + local showName, seasonNumber, episodeNumber = string.match( + openSub.file.cleanName, + "(.+)[sS](%d%d)[eE](%d%d).*") if not showName then - showName, seasonNumber, episodeNumber = string.match(openSub.file.cleanName, "(.+)(%d)[xX](%d%d).*") + showName, seasonNumber, episodeNumber = string.match( + openSub.file.cleanName, + "(.+)(%d)[xX](%d%d).*") end if showName then @@ -1253,7 +1464,8 @@ openSub = { getMovieHash = function() -- Calculate movie hash openSub.actionLabel = lang["action_hash"] - setMessage(openSub.actionLabel..": "..progressBarContent(0)) + setMessage(openSub.actionLabel..": ".. + progressBarContent(0)) local item = openSub.getInputItem() @@ -1394,8 +1606,10 @@ end function searchIMBD() openSub.movie.title = trim(input_table["title"]:get_text()) - openSub.movie.seasonNumber = tonumber(input_table["seasonNumber"]:get_text()) - openSub.movie.episodeNumber = tonumber(input_table["episodeNumber"]:get_text()) + openSub.movie.seasonNumber = tonumber( + input_table["seasonNumber"]:get_text()) + openSub.movie.episodeNumber = tonumber( + input_table["episodeNumber"]:get_text()) local sel = input_table["language"]:get_value() if sel == 0 then @@ -1417,7 +1631,8 @@ function display_subtitles() if openSub.itemStore == "0" then mainlist:add_value(lang["mess_no_res"], 1) - setMessage("<b>"..lang["mess_complete"]..":</b> "..lang["mess_no_res"]) + setMessage("<b>"..lang["mess_complete"]..":</b> ".. + lang["mess_no_res"]) elseif openSub.itemStore then for i, item in ipairs(openSub.itemStore) do mainlist:add_value( @@ -1425,7 +1640,8 @@ function display_subtitles() " ["..item.SubLanguageID.."]".. " ("..item.SubSumCD.." CD)", i) end - setMessage("<b>"..lang["mess_complete"]..":</b> "..#(openSub.itemStore).." "..lang["mess_res"]) + setMessage("<b>"..lang["mess_complete"]..":</b> ".. + #(openSub.itemStore).." "..lang["mess_res"]) end end @@ -1451,21 +1667,17 @@ function download_subtitles() local item = openSub.itemStore[index] - if openSub.option.downloadBehaviour == 'manual' then - + if openSub.option.downloadBehaviour == 'manual' + or not subfileName then local link = "<span style='color:#181'>" link = link.."<b>"..lang["mess_dowload_link"]..":</b>" link = link.."</span> " - link = link.."</span> <a href='"..item.ZipDownloadLink.."'>" + link = link.."</span> <a href='".. + item.ZipDownloadLink.."'>" link = link..item.MovieReleaseName.."</a>" setMessage(link) return false - elseif openSub.option.downloadBehaviour == 'load' then - if add_sub("zip://"..item.ZipDownloadLink.."!/"..item.SubFileName) then - setMessage(success_tag(lang["mess_loaded"])) - end - return false end local message = "" @@ -1508,8 +1720,10 @@ function download_subtitles() if not file_touch(target) then if openSub.conf.dirPath then target = openSub.conf.dirPath..slash..subfileName - message = "<br> "..error_tag(lang["mess_save_fail"].." ".. - "<a href='"..vlc.strings.make_uri(openSub.conf.dirPath).."'>".. + message = "<br>".. + error_tag(lang["mess_save_fail"].." ".. + "<a href='"..vlc.strings.make_uri( + openSub.conf.dirPath).."'>".. lang["mess_click_link"].."</a>") else setError(lang["mess_save_fail"].." ".. @@ -1542,18 +1756,13 @@ function download_subtitles() vlc.msg.err("[VLsub] Unable to remove temp: "..tmpFileName) end - subfileURI = vlc.strings.make_uri(target) - - if not subfileURI then - subfileURI = make_uri(target, true) - end - -- load subtitles - if add_sub(subfileURI) then + if add_sub(target) then message = success_tag(lang["mess_loaded"]) .. message + else + message = error_tag(lang["mess_not_load"]) .. message end - setMessage(message) end @@ -1567,7 +1776,7 @@ function dump_zip(url, dir, subfileName) return false end - local tmpFileName = dir..slash..subfileName..".gz" + local tmpFileName = dir..subfileName..".gz" if not file_touch(tmpFileName) then return false end @@ -1578,13 +1787,15 @@ function dump_zip(url, dir, subfileName) tmpFile:close() tmpFile = nil collectgarbage() - return "zip://"..make_uri(tmpFileName, true).."!/"..subfileName, tmpFileName + return "zip://"..make_uri(tmpFileName) + .."!/"..subfileName, tmpFileName end -function add_sub(subfileURI) +function add_sub(subPath) if vlc.item or vlc.input.item() then - vlc.msg.dbg("[VLsub] Adding subtitle :" .. subfileURI) - return vlc.input.add_subtitle(subfileURI) + subPath = decode_uri(subPath) + vlc.msg.dbg("[VLsub] Adding subtitle :" .. subPath) + return vlc.input.add_subtitle(subPath) end return false end @@ -1592,7 +1803,8 @@ end --[[ Interface helpers]]-- function progressBarContent(pct) - local accomplished = math.ceil(openSub.option.progressBarSize*pct/100) + local accomplished = math.ceil( + openSub.option.progressBarSize*pct/100) local left = openSub.option.progressBarSize - accomplished local content = "<span style='background-color:#181;color:#181;'>".. string.rep ("-", accomplished).."</span>".. @@ -1655,49 +1867,73 @@ function http_req(host, port, request) vlc.net.send(fd, request) vlc.net.poll(pollfds) - local response = vlc.net.recv(fd, 1024) - local headerStr, body = string.match(response, "(.-\r?\n)\r?\n(.*)") - local header = parse_header(headerStr) - local contentLength = tonumber(header["Content-Length"]) - local TransferEncoding = header["Transfer-Encoding"] - local status = tonumber(header["statuscode"]) - local bodyLenght = string.len(body) + local chunk = vlc.net.recv(fd, 2048) + local response = "" + local headerStr, header, body + local contentLength, status local pct = 0 - --~ if status ~= 200 then return status end - - while contentLength and bodyLenght < contentLength do - vlc.net.poll(pollfds) - response = vlc.net.recv(fd, 1024) - - if response then - body = body..response - else - vlc.net.close(fd) - return false + while chunk do + response = response..chunk + if not header then + headerStr, body = response:match("(.-\r?\n)\r?\n(.*)") + if headerStr then + response = body + header = parse_header(headerStr) + contentLength = tonumber(header["Content-Length"]) + status = tonumber(header["statuscode"]) end - bodyLenght = string.len(body) + end + + if contentLength then + bodyLenght = #response pct = bodyLenght / contentLength * 100 setMessage(openSub.actionLabel..": "..progressBarContent(pct)) + if bodyLenght >= contentLength then + break + end + end + + vlc.net.poll(pollfds) + chunk = vlc.net.recv(fd, 1024) end + vlc.net.close(fd) - return status, body + if status == 301 + and header["Location"] then + local host, path = parse_url(trim(header["Location"])) + request = request + :gsub("^([^%s]+ )([^%s]+)", "%1"..path) + :gsub("(Host: )([^\n]*)", "%1"..host) + + return http_req(host, port, request) + end + + return status, response end function parse_header(data) local header = {} - for name, s, val in string.gfind(data, "([^%s:]+)(:?)%s([^\n]+)\r?\n") do - if s == "" then header['statuscode'] = tonumber(string.sub (val, 1 , 3)) - else header[name] = val end + for name, s, val in string.gmatch( + data, + "([^%s:]+)(:?)%s([^\n]+)\r?\n") + do + if s == "" then + header['statuscode'] = tonumber(string.sub(val, 1 , 3)) + else + header[name] = val + end end return header end function parse_url(url) local url_parsed = vlc.net.url_parse(url) - return url_parsed["host"], url_parsed["path"], url_parsed["option"] + return url_parsed["host"], + url_parsed["path"], + url_parsed["option"] end --[[ XML utils]]-- @@ -1709,10 +1945,12 @@ function parse_xml(data) local level = 0 local op, tag, p, empty, val table.insert(stack, tree) + local resolve_xml = vlc.strings.resolve_xml_special_chars for op, tag, p, empty, val in string.gmatch( data, - "[%s\r\n\t]*<(%/?)([%w:_]+)(.-)(%/?)>[%s\r\n\t]*([^<]*)[%s\r\n\t]*" + "[%s\r\n\t]*<(%/?)([%w:_]+)(.-)(%/?)>".. + "[%s\r\n\t]*([^<]*)[%s\r\n\t]*" ) do if op=="/" then if level>0 then @@ -1742,7 +1980,7 @@ function parse_xml(data) if type(stack[level][tag]) == "nil" then stack[level][tag] = {} end - stack[level][tag] = vlc.strings.resolve_xml_special_chars(val) + stack[level][tag] = resolve_xml(val) table.insert(stack, {}) end if empty ~= "" then @@ -1764,6 +2002,7 @@ function parse_xmlrpc(data) local tmpTag = "" local level = 0 local op, tag, p, empty, val + local resolve_xml = vlc.strings.resolve_xml_special_chars table.insert(stack, tree) for op, tag, p, empty, val in string.gmatch( @@ -1779,7 +2018,7 @@ function parse_xmlrpc(data) end elseif tag == "name" then level = level + 1 - if val~= "" then tmpTag = vlc.strings.resolve_xml_special_chars(val) end + if val~= "" then tmpTag = resolve_xml(val) end if type(stack[level][tmpTag]) == "nil" then stack[level][tmpTag] = {} @@ -1805,7 +2044,7 @@ function parse_xmlrpc(data) table.insert(stack[level], tmp) table.insert(stack, tmp) elseif val ~= "" then - stack[level][tmpTag] = vlc.strings.resolve_xml_special_chars(val) + stack[level][tmpTag] = resolve_xml(val) end end collectgarbage() @@ -1816,6 +2055,7 @@ function dump_xml(data) local level = 0 local stack = {} local dump = "" + local convert_xml = vlc.strings.convert_xml_special_chars local function parse(data, stack) local data_index = {} @@ -1835,17 +2075,23 @@ function dump_xml(data) k = tb[1] v = tb[2] if type(k)=="string" then - dump = dump.."\r\n"..string.rep (" ", level).."<"..k..">" + dump = dump.."\r\n"..string.rep( + " ", + level).. + "<"..k..">" table.insert(stack, k) level = level + 1 elseif type(k)=="number" and k ~= 1 then - dump = dump.."\r\n"..string.rep (" ", level-1).."<"..stack[level]..">" + dump = dump.."\r\n"..string.rep( + " ", + level-1).. + "<"..stack[level]..">" end if type(v)=="table" then parse(v, stack) elseif type(v)=="string" then - dump = dump..(vlc.strings.convert_xml_special_chars(v) or v) + dump = dump..(convert_xml(v) or v) elseif type(v)=="number" then dump = dump..v else @@ -1854,7 +2100,10 @@ function dump_xml(data) if type(k)=="string" then if type(v)=="table" then - dump = dump.."\r\n"..string.rep (" ", level-1).."</"..k..">" + dump = dump.."\r\n"..string.rep( + " ", + level-1).. + "</"..k..">" else dump = dump.."</"..k..">" end @@ -1863,7 +2112,10 @@ function dump_xml(data) elseif type(k)=="number" and k ~= #data then if type(v)=="table" then - dump = dump.."\r\n"..string.rep (" ", level-1).."</"..stack[level]..">" + dump = dump.."\r\n"..string.rep( + " ", + level-1).. + "</"..stack[level]..">" else dump = dump.."</"..stack[level]..">" end @@ -1877,23 +2129,23 @@ end --[[ Misc utils]]-- -function make_uri(str, encode) - local windowdrive = string.match(str, "^(%a:%).+$") - if encode then +function make_uri(str) + str = str:gsub("\\", "/") + local windowdrive = string.match(str, "^(%a:).+$") + local encode_uri = vlc.strings.encode_uri_component local encodedPath = "" for w in string.gmatch(str, "/([^/]+)") do - encodedPath = encodedPath.."/"..vlc.strings.encode_uri_component(w) - end - str = encodedPath + encodedPath = encodedPath.."/"..encode_uri(w) end + if windowdrive then - return "file:///"..windowdrive..str + return "file:///"..windowdrive..encodedPath else - return "file://"..str + return "file://"..encodedPath end end -function file_touch(name) -- test writetability +function file_touch(name) -- test write ability if not name or trim(name) == "" then return false end @@ -1921,7 +2173,7 @@ end function is_dir(path) if not path or trim(path) == "" then return false end - -- Remove slash at the or it won't work on Windows + -- Remove slash at the end or it won't work on Windows path = string.gsub(path, "^(.-)[\\/]?$", "%1") local f, _, code = io.open(path, "rb") @@ -1973,8 +2225,13 @@ function mkdir_p(path) end end +function decode_uri(str) + vlc.msg.err(slash) + return str:gsub("/", slash) +end + function is_window_path(path) - return string.match(path, "^(%a:%).+$") + return string.match(path, "^(%a:.+)$") end function is_win_safe(path) @@ -1992,9 +2249,3 @@ end function remove_tag(str) return string.gsub(str, "{[^}]+}", "") end - -function sleep(sec) - local t = vlc.misc.mdate() - vlc.misc.mwait(t + sec*1000*1000) -end - diff --git a/share/lua/playlist/dailymotion.lua b/share/lua/playlist/dailymotion.lua index 847ca31..b985fea 100644 --- a/share/lua/playlist/dailymotion.lua +++ b/share/lua/playlist/dailymotion.lua @@ -29,68 +29,88 @@ function get_prefres() prefres = -1 end end + return prefres end -- Probe function. function probe() - return vlc.access == "http" - and string.match( vlc.path, "www.dailymotion.com/video" ) + if vlc.access ~= "http" and vlc.access ~= "https" then + return false end -function find( haystack, needle ) - local _,_,ret = string.find( haystack, needle ) - return ret + return ( string.match( vlc.path, "www.dailymotion.com/video" ) ) end -- Parse function. function parse() prefres = get_prefres() + + while true do line = vlc.readline() - if not line then - break + if not line then break end + if string.match( line, "<meta property=\"og:title\"" ) then + _,_,name = string.find( line, "content=\"(.-)\"" ) + name = vlc.strings.resolve_xml_special_chars( name ) end - if string.match( line, "sequence=") - then - line = vlc.strings.decode_uri(line):gsub("\\/", "/") - - arturl = find( line, "\"videoPreviewURL\":\"([^\"]*)\"") - name = find( line, "\"videoTitle\":\"([^\"]*)\"") - if name then - name = string.gsub( name, "+", " " ) + if string.match( line, "<meta name=\"description\"" ) then + _,_,description = string.find( line, "content=\"(.-)\"" ) + if (description ~= nil) then + description = vlc.strings.resolve_xml_special_chars( description ) end - description = find( line, "\"videoDescription\":\"([^\"]*)\"") - if description then - description = string.gsub( description, "+", " " ) end - - for _,param in ipairs({ "hd1080URL", "hd720URL", "hqURL", "sdURL", "video_url" }) do - path = string.match( line, "\""..param.."\":\"([^\"]*)\"" ) - if path then - path = vlc.strings.decode_uri(path) - if prefres < 0 then - break - end - height = string.match( path, "/cdn/%w+%-%d+x(%d+)/video/" ) - if not height then - height = string.match( param, "(%d+)" ) - end - if not height or tonumber(height) <= prefres then - break + if string.match( line, "<meta name=\"author\"" ) then + _,_,artist = string.find( line, "content=\"(.-)\"" ) + artist = vlc.strings.resolve_xml_special_chars( artist ) end + if string.match( line, "<link rel=\"thumbnail\" type=\"image/jpeg\"" ) then + _,_,arturl = string.find( line, "href=\"(.-)\"" ) end end - if not path then + page_embed = string.gsub(vlc.path, "dailymotion.com/video/", "dailymotion.com/embed/video/") + page_url = vlc.stream(vlc.access .. "://" .. page_embed ) + if not page_url then return nil end + page = page_url:read( 65653 ) + + + hd1080url = string.match( page, "\"stream_h264_hd1080_url\"%s*:%s*\"([^\"]*)\"") + hdurl = string.match( page, "\"stream_h264_hd_url\"%s*:%s*\"([^\"]*)\"") + hqurl = string.match( page, "\"stream_h264_hq_url\"%s*:%s*\"([^\"]*)\"") + baseurl = string.match( page, "\"stream_h264_url\"%s*:%s*\"([^\"]*)\"") + ldurl = string.match( page, "\"stream_h264_ld_url\"%s*:%s*\"([^\"]*)\"") + livehlsurl = string.match( page, "\"stream_live_hls_url\"%s*:%s*\"([^\"]*)\"") + + + arr_videos_urls = {} + if hd1080url then table.insert(arr_videos_urls,hd1080url) end + if hdurl then table.insert(arr_videos_urls,hdurl) end + if hqurl then table.insert(arr_videos_urls,hqurl) end + if baseurl then table.insert(arr_videos_urls,baseurl) end + if ldurl then table.insert(arr_videos_urls,baseurl) end + + + if livehlsurl then + return { { path = livehlsurl:gsub("\\/", "/"); name = name; description = description; url = vlc.path; arturl = arturl ; artist = artist} } + else + if table.getn(arr_videos_urls) > 0 then + for i=1 , table.getn(arr_videos_urls) do + video_url_out = arr_videos_urls[i]:gsub("\\/", "/") + + if prefres < 0 then break end - - return { { path = path; name = name; description = description; url = vlc.path; arturl = arturl } } + height = string.match( video_url_out, "/cdn/%w+%-%d+x(%d+)/video/" ) + if not height or tonumber(height) <= prefres then + break end end - + return { { path = video_url_out; name = name; description = description; url = vlc.path; arturl = arturl; artist = artist} } + else vlc.msg.err("Couldn't extract the video URL from dailymotion") return { } end + end +end diff --git a/share/lua/playlist/koreus.lua b/share/lua/playlist/koreus.lua index ce6a793..4bbbbd6 100644 --- a/share/lua/playlist/koreus.lua +++ b/share/lua/playlist/koreus.lua @@ -19,7 +19,7 @@ -- Probe function. function probe() - if vlc.access ~= "http" then + if vlc.access ~= "http" and vlc.access ~= "https" then return false end koreus_site = string.match( vlc.path, "koreus" ) @@ -54,8 +54,35 @@ function parse() vid_url = string.match( line, '(http://embed%.koreus%.com/%d+/%d+/[%w-]*%.mp4)' ) if vid_url then - return { { path = vid_url; name = name; description = description; artist = artist; arturl = arturl } } + path_url = vid_url end + + vid_url_hd = string.match( line, '(http://embed%.koreus%.com/%d+/%d+/[%w-]*%-hd%.mp4)' ) + if vid_url_hd then + path_url_hd = vid_url_hd + end + + vid_url_webm = string.match( line, '(http://embed%.koreus%.com/%d+/%d+/[%w-]*%.webm)' ) + if vid_url_webm then + path_url_webm = vid_url_webm + end + + vid_url_flv = string.match( line, '(http://embed%.koreus%.com/%d+/%d+/[%w-]*%.flv)' ) + if vid_ulr_flv then + path_url_flv = vid_url_flv end + + end + + if path_url_hd then + return { { path = path_url_hd; name = name; description = description; artist = artist; arturl = arturl } } + elseif path_url then + return { { path = path_url; name = name; description = description; artist = artist; arturl = arturl } } + elseif path_url_webm then + return { { path = path_url_webm; name = name; description = description; artist = artist; arturl = arturl } } + elseif path_url_flv then + return { { path = path_url_flv; name = name; description = description; artist = artist; arturl = arturl } } + else return {} end +end diff --git a/share/lua/playlist/youtube.lua b/share/lua/playlist/youtube.lua index 24c4cf7..11e5cac 100644 --- a/share/lua/playlist/youtube.lua +++ b/share/lua/playlist/youtube.lua @@ -89,7 +89,9 @@ function js_descramble( sig, js_url ) -- HTTP request later table.insert( lines, line ) -- c&&(b.signature=ij(c)); - descrambler = string.match( line, "%.signature=(.-)%(" ) + -- descrambler = string.match( line, "%.signature=(.-)%(" ) + -- descrambler = string.match( line, "%.sig%|%|(.-)%(" ) + descrambler = string.match( line, "%.sig||([a-zA-Z0-9]+)%(" ) end -- Fetch the code of the descrambler function. The function is diff --git a/src/misc/text_style.c b/src/misc/text_style.c index 025569c..6f7998e 100644 --- a/src/misc/text_style.c +++ b/src/misc/text_style.c @@ -2,7 +2,7 @@ * text_style.c ***************************************************************************** * Copyright (C) 1999-2010 VLC authors and VideoLAN - * $Id: a779814ea4eb4a4e0ef8fecc2cb87292411a58a8 $ + * $Id: f1327905f7f795752ded8cc8296a425a21232273 $ * * Author: basOS G <noxelia 4t gmail , com> * @@ -69,7 +69,7 @@ text_style_t *text_style_Copy( text_style_t *p_dst, const text_style_t *p_src ) p_dst->psz_fontname = strdup( p_src->psz_fontname ); if( p_src->psz_monofontname ) - p_dst->psz_monofontname = strdup( p_src->psz_fontname ); + p_dst->psz_monofontname = strdup( p_src->psz_monofontname ); return p_dst; } diff --git a/src/revision.c b/src/revision.c index 16c28ed..b4bae43 100644 --- a/src/revision.c +++ b/src/revision.c @@ -1 +1 @@ -const char psz_vlc_changeset[] = "2.2.0-pre4-97-g8a35de1"; +const char psz_vlc_changeset[] = "2.2.0-rc1-118-g22fda39"; diff --git a/src/revision.txt b/src/revision.txt index 5e7f672..9581136 100644 --- a/src/revision.txt +++ b/src/revision.txt @@ -1 +1 @@ -2.2.0-pre4-97-g8a35de1 +2.2.0-rc1-118-g22fda39 diff --git a/src/test/xmlent.c b/src/test/xmlent.c index 6c04093..fd846d1 100644 --- a/src/test/xmlent.c +++ b/src/test/xmlent.c @@ -67,6 +67,12 @@ int main (void) decode ("Rémi François & Émile", "Rémi François & Émile"); + decode ("Rémi François & Émile", + "Rémi François & Émile"); + decode ("Rémi François & Émile", + "Rémi François & Émile"); + decode ("Rémi François & Émile", + "Rémi François & Émile"); decode ("", ""); diff --git a/src/text/strings.c b/src/text/strings.c index e1d3abb..acd5805 100644 --- a/src/text/strings.c +++ b/src/text/strings.c @@ -3,7 +3,7 @@ ***************************************************************************** * Copyright (C) 2006 VLC authors and VideoLAN * Copyright (C) 2008-2009 Rémi Denis-Courmont - * $Id: 55738a7f64eb33c0d29afbfecce767a7e1839c81 $ + * $Id: d7212ea3a3b21fea7a79b1a0785ace643eabc7e9 $ * * Authors: Antoine Cellerier <dionoea at videolan dot org> * Daniel Stranger <vlc at schmaller dot de> @@ -202,9 +202,15 @@ void resolve_xml_special_chars( char *psz_value ) if( *psz_value == '&' ) { if( psz_value[1] == '#' ) - { /* &#xxx; Unicode code point */ + { /* &#DDD; or &#xHHHH; Unicode code point */ char *psz_end; - unsigned long cp = strtoul( psz_value+2, &psz_end, 10 ); + unsigned long cp; + + if( psz_value[2] == 'x' ) /* The x must be lower-case. */ + cp = strtoul( psz_value + 3, &psz_end, 16 ); + else + cp = strtoul( psz_value + 2, &psz_end, 10 ); + if( *psz_end == ';' ) { psz_value = psz_end + 1; @@ -496,314 +502,305 @@ char *str_format_time( const char *tformat ) assert (0); } -static void format_duration (char *buf, size_t len, int64_t duration) +static void write_duration(FILE *stream, int64_t duration) { lldiv_t d; - int sec; + long long sec; duration /= CLOCK_FREQ; d = lldiv(duration, 60); sec = d.rem; d = lldiv(d.quot, 60); - snprintf (buf, len, "%02lld:%02d:%02d", d.quot, (int)d.rem, sec); + fprintf(stream, "%02lld:%02lld:%02lld", d.quot, d.rem, sec); } -#define INSERT_STRING( string ) \ - if( string != NULL ) \ - { \ - size_t len = strlen( string ); \ - dst = xrealloc( dst, i_size = i_size + len );\ - memcpy( (dst+d), string, len ); \ - d += len; \ - free( string ); \ - } +static int write_meta(FILE *stream, input_item_t *item, vlc_meta_type_t type) +{ + if (item == NULL) + return EOF; -/* same than INSERT_STRING, except that string won't be freed */ -#define INSERT_STRING_NO_FREE( string ) \ - { \ - size_t len = strlen( string ); \ - dst = xrealloc( dst, i_size = i_size + len );\ - memcpy( dst+d, string, len ); \ - d += len; \ + char *value = input_item_GetMeta(item, type); + if (value == NULL) + return EOF; + + int ret = fputs(value, stream); + free(value); + return ret; } -char *str_format_meta( input_thread_t *p_input, const char *s ) + +char *str_format_meta(input_thread_t *input, const char *s) { - char *dst = strdup( s ); - if( unlikely(dst == NULL) ) + char *str; + size_t len; +#ifdef HAVE_OPEN_MEMSTREAM + FILE *stream = open_memstream(&str, &len); +#else + FILE *stream = tmpfile(); +#endif + if (stream == NULL) return NULL; - input_item_t *p_item = p_input ? input_GetItem(p_input) : NULL; - size_t i_size = strlen( s ) + 1; /* +1 to store '\0' */ - size_t d = 0; + input_item_t *item = (input != NULL) ? input_GetItem(input) : NULL; + char c; bool b_is_format = false; bool b_empty_if_na = false; - char buf[10]; - while( *s ) + while ((c = *s) != '\0') { - if( b_is_format ) + s++; + + if (!b_is_format) { - switch( *s ) + if (c == '$') + { + b_is_format = true; + b_empty_if_na = false; + continue; + } + + fputc(c, stream); + continue; + } + + b_is_format = false; + + switch (c) { case 'a': - if( p_item ) - INSERT_STRING( input_item_GetArtist( p_item ) ); + write_meta(stream, item, vlc_meta_Artist); break; case 'b': - if( p_item ) - INSERT_STRING( input_item_GetAlbum( p_item ) ); + write_meta(stream, item, vlc_meta_Album); break; case 'c': - if( p_item ) - INSERT_STRING( input_item_GetCopyright( p_item ) ); + write_meta(stream, item, vlc_meta_Copyright); break; case 'd': - if( p_item ) - INSERT_STRING( input_item_GetDescription( p_item ) ); + write_meta(stream, item, vlc_meta_Description); break; case 'e': - if( p_item ) - INSERT_STRING( input_item_GetEncodedBy( p_item ) ); + write_meta(stream, item, vlc_meta_EncodedBy); break; case 'f': - if( p_item && p_item->p_stats ) + if (item != NULL && item->p_stats != NULL) { - vlc_mutex_lock( &p_item->p_stats->lock ); - snprintf( buf, 10, "%"PRIi64, - p_item->p_stats->i_displayed_pictures ); - vlc_mutex_unlock( &p_item->p_stats->lock ); + vlc_mutex_lock(&item->p_stats->lock); + fprintf(stream, "%"PRIi64, + item->p_stats->i_displayed_pictures); + vlc_mutex_unlock(&item->p_stats->lock); } - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'g': - if( p_item ) - INSERT_STRING( input_item_GetGenre( p_item ) ); + write_meta(stream, item, vlc_meta_Genre); break; case 'l': - if( p_item ) - INSERT_STRING( input_item_GetLanguage( p_item ) ); + write_meta(stream, item, vlc_meta_Language); break; case 'n': - if( p_item ) - INSERT_STRING( input_item_GetTrackNum( p_item ) ); + write_meta(stream, item, vlc_meta_TrackNumber); break; case 'p': - if( p_item ) - INSERT_STRING( input_item_GetNowPlaying( p_item ) ); + write_meta(stream, item, vlc_meta_NowPlaying); break; case 'r': - if( p_item ) - INSERT_STRING( input_item_GetRating( p_item ) ); + write_meta(stream, item, vlc_meta_Rating); break; case 's': { - char *psz_lang = NULL; - if( p_input ) - psz_lang = var_GetNonEmptyString( p_input, "sub-language" ); - if( psz_lang == NULL ) - psz_lang = strdup( b_empty_if_na ? "" : "-" ); - INSERT_STRING( psz_lang ); + char *lang = NULL; + + if (input != NULL) + lang = var_GetNonEmptyString(input, "sub-language"); + if (lang != NULL) + { + fputs(lang, stream); + free(lang); + } + else if (!b_empty_if_na) + fputc('-', stream); break; } case 't': - if( p_item ) - INSERT_STRING( input_item_GetTitle( p_item ) ); + write_meta(stream, item, vlc_meta_Title); break; case 'u': - if( p_item ) - INSERT_STRING( input_item_GetURL( p_item ) ); + write_meta(stream, item, vlc_meta_URL); break; case 'A': - if( p_item ) - INSERT_STRING( input_item_GetDate( p_item ) ); + write_meta(stream, item, vlc_meta_Date); break; case 'B': - if( p_input ) - snprintf( buf, 10, "%"PRId64, - var_GetInteger( p_input, "bit-rate" )/1000 ); - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + fprintf(stream, "%"PRId64, + var_GetInteger(input, "bit-rate") / 1000); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'C': - if( p_input ) - snprintf( buf, 10, "%"PRId64, - var_GetInteger( p_input, "chapter" ) ); - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + fprintf(stream, "%"PRId64, + var_GetInteger(input, "chapter")); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'D': - if( p_item ) - { - mtime_t i_duration = input_item_GetDuration( p_item ); - format_duration (buf, sizeof (buf), i_duration); - } - else - strcpy( buf, b_empty_if_na ? "" : "--:--:--" ); - INSERT_STRING_NO_FREE( buf ); + if (item != NULL) + write_duration(stream, input_item_GetDuration(item)); + else if (!b_empty_if_na) + fputs("--:--:--", stream); break; case 'F': - if( p_item ) - INSERT_STRING( input_item_GetURI( p_item ) ); + if (item != NULL) + { + char *uri = input_item_GetURI(item); + if (uri != NULL) + { + fputs(uri, stream); + free(uri); + } + } break; case 'I': - if( p_input ) - snprintf( buf, 10, "%"PRId64, - var_GetInteger( p_input, "title" ) ); - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + fprintf(stream, "%"PRId64, var_GetInteger(input, "title")); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'L': - if( p_item && p_input ) + if (item != NULL) { - mtime_t i_duration = input_item_GetDuration( p_item ); - int64_t i_time = var_GetTime( p_input, "time" ); - format_duration( buf, sizeof(buf), - i_duration - i_time ); + assert(input != NULL); + write_duration(stream, input_item_GetDuration(item) + - var_GetTime(input, "time")); } - else - strcpy( buf, b_empty_if_na ? "" : "--:--:--" ); - INSERT_STRING_NO_FREE( buf ); + else if (!b_empty_if_na) + fputs("--:--:--", stream); break; case 'N': - if( p_item ) - INSERT_STRING( input_item_GetName( p_item ) ); + if (item != NULL) + { + char *name = input_item_GetName(item); + if (name != NULL) + { + fputs(name, stream); + free(name); + } + } break; case 'O': { char *lang = NULL; - if( p_input ) - lang = var_GetNonEmptyString( p_input, - "audio-language" ); - if( lang == NULL ) - lang = strdup( b_empty_if_na ? "" : "-" ); - INSERT_STRING( lang ); + + if (input != NULL) + lang = var_GetNonEmptyString(input, "audio-language"); + if (lang != NULL) + { + fputs(lang, stream); + free(lang); + } + else if (!b_empty_if_na) + fputc('-', stream); break; } case 'P': - if( p_input ) - snprintf( buf, 10, "%2.1lf", - var_GetFloat( p_input, "position" ) * 100. ); - else - snprintf( buf, 10, b_empty_if_na ? "" : "--.-%%" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + fprintf(stream, "%2.1f", + var_GetFloat(input, "position") * 100.f); + else if (!b_empty_if_na) + fputs("--.-%", stream); break; case 'R': - if( p_input ) - { - float f = var_GetFloat( p_input, "rate" ); - snprintf( buf, 10, "%.3f", f ); - } - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + fprintf(stream, "%.3f", var_GetFloat(input, "rate")); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'S': - if( p_input ) + if (input != NULL) { - int r = var_GetInteger( p_input, "sample-rate" ); - snprintf( buf, 10, "%d.%d", r/1000, (r/100)%10 ); + int rate = var_GetInteger(input, "sample-rate"); + div_t dr = div((rate + 50) / 100, 10); + + fprintf(stream, "%d.%01d", dr.quot, dr.rem); } - else - strcpy( buf, b_empty_if_na ? "" : "-" ); - INSERT_STRING_NO_FREE( buf ); + else if (!b_empty_if_na) + fputc('-', stream); break; case 'T': - if( p_input ) - { - int64_t i_time = var_GetTime( p_input, "time" ); - format_duration( buf, sizeof(buf), i_time ); - } - else - strcpy( buf, b_empty_if_na ? "" : "--:--:--" ); - INSERT_STRING_NO_FREE( buf ); + if (input != NULL) + write_duration(stream, var_GetTime(input, "time")); + else if (!b_empty_if_na) + fputs("--:--:--", stream); break; case 'U': - if( p_item ) - INSERT_STRING( input_item_GetPublisher( p_item ) ); + write_meta(stream, item, vlc_meta_Publisher); break; case 'V': { float vol = 0.f; - if( p_input ) + if (input != NULL) { - audio_output_t *aout = input_GetAout( p_input ); - if( aout ) + audio_output_t *aout = input_GetAout(input); + if (aout != NULL) { vol = aout_VolumeGet(aout); vlc_object_release(aout); } } if (vol >= 0.f) - { - snprintf( buf, 10, "%ld", lroundf(vol * 256.f) ); - INSERT_STRING_NO_FREE( buf ); - } - else - INSERT_STRING_NO_FREE( "---" ); + fprintf(stream, "%ld", lroundf(vol * 256.f)); + else if (!b_empty_if_na) + fputs("---", stream); break; } case '_': - *(dst+d) = '\n'; - d++; + fputc('\n', stream); break; case 'Z': - if( p_item ) - { - char *psz_now_playing = input_item_GetNowPlaying( p_item ); - if( EMPTY_STR( psz_now_playing ) ) + if (write_meta(stream, item, vlc_meta_NowPlaying) == EOF) { - char *psz_temp = input_item_GetTitleFbName( p_item ); - char *psz_artist = input_item_GetArtist( p_item ); - if( !EMPTY_STR( psz_artist ) ) + char *title = input_item_GetTitleFbName(item); + + if (write_meta(stream, item, vlc_meta_Artist) >= 0 + && title != NULL) + fputs(" - ", stream); + + if (title != NULL) { - INSERT_STRING( psz_artist ); - if ( !EMPTY_STR( psz_temp ) ) - INSERT_STRING_NO_FREE( " - " ); + fputs(title, stream); + free(title); } - INSERT_STRING( psz_temp ); - } - else - INSERT_STRING( psz_now_playing ); } break; - case ' ': b_empty_if_na = true; + b_is_format = true; break; - default: - *(dst+d) = *s; - d++; + fputc(c, stream); break; } - if( *s != ' ' ) - b_is_format = false; - } - else if( *s == '$' ) - { - b_is_format = true; - b_empty_if_na = false; } - else + +#ifdef HAVE_OPEN_MEMSTREAM + return (fclose(stream) == 0) ? str : NULL; +#else + len = ftell(stream); + if (len != (size_t)-1) { - *(dst+d) = *s; - d++; + rewind(stream); + str = xmalloc(len + 1); + fread(str, len, 1, stream); + str[len] = '\0'; } - s++; - } - *(dst+d) = '\0'; - - return dst; + fclose(stream); + return str; +#endif } -#undef INSERT_STRING -#undef INSERT_STRING_NO_FREE /** * Remove forbidden, potentially forbidden and otherwise evil characters from diff --git a/src/video_output/interlacing.c b/src/video_output/interlacing.c index 2f093c5..6fed740 100644 --- a/src/video_output/interlacing.c +++ b/src/video_output/interlacing.c @@ -2,7 +2,7 @@ * interlacing.c ***************************************************************************** * Copyright (C) 2010 Laurent Aimar - * $Id: 13ec36febca165567f2e1b377b8f33361592a623 $ + * $Id: 6177a3aec919872fdd6d03454c5c66555ef04352 $ * * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org> * @@ -103,7 +103,7 @@ static void DeinterlaceRemove(vout_thread_t *vout) /* */ strcpy(&start[0], &start[strlen("deinterlace")]); if (*start == ':') - strcpy(&start[0], &start[1]); + memmove(start, start + 1, strlen(start) /* + 1 - 1 */); var_SetString(vout, "video-filter", filter); free(filter); diff --git a/src/video_output/video_epg.c b/src/video_output/video_epg.c index 624caf1..471d52c 100644 --- a/src/video_output/video_epg.c +++ b/src/video_output/video_epg.c @@ -282,6 +282,7 @@ int vout_OSDEpg(vout_thread_t *vout, input_item_t *input) } vlc_mutex_unlock(&input->lock); + free(now_playing); /* If no EPG event has been found. */ if (epg == NULL)
Attachment:
signature.asc
Description: Digital signature