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