Your message dated Sun, 23 Nov 2014 13:48:16 +0100 with message-id <5471D790.8030907@thykier.net> and subject line Re: Bug#770653: unblock (pre-approval): vlc/2.2.0~rc2-1 has caused the Debian Bug report #770653, regarding unblock (pre-approval): vlc/2.2.0~rc2-1 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 770653: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770653 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock (pre-approval): vlc/2.2.0~rc2-1
- From: Sebastian Ramacher <sramacher@debian.org>
- Date: Sun, 23 Nov 2014 00:32:05 +0100
- Message-id: <[🔎] 20141122233205.GA30987@ramacher.at>
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 Ramacherdiff --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
--- End Message ---
--- Begin Message ---
- To: Sebastian Ramacher <sramacher@debian.org>, 770653-done@bugs.debian.org
- Subject: Re: Bug#770653: unblock (pre-approval): vlc/2.2.0~rc2-1
- From: Niels Thykier <niels@thykier.net>
- Date: Sun, 23 Nov 2014 13:48:16 +0100
- Message-id: <5471D790.8030907@thykier.net>
- In-reply-to: <[🔎] 54719D77.2070900@thykier.net>
- References: <[🔎] 20141122233205.GA30987@ramacher.at> <[🔎] 54719D77.2070900@thykier.net>
On 2014-11-23 09:40, Niels Thykier wrote: > Control: tags -1 confirmed > > On 2014-11-23 00:32, Sebastian Ramacher wrote: >> [...] > > Hi Sebastian, > > Please go ahead and upload this one to unstable and let us know once it > has been accepted. > Also, please be advised that the freeze policy will become stricter in > the near future (5th of December). > >>[...] > > ~Niels > > Noticed this one being uploaded and have unblocked it already. Thanks, ~Niels
--- End Message ---