rpms/ffmpeg2dirac/devel .cvsignore, 1.2, 1.3 ffmpeg2dirac.spec, 1.2, 1.3 sources, 1.2, 1.3
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/ffmpeg2dirac/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv2339/devel
Modified Files:
.cvsignore ffmpeg2dirac.spec sources
Log Message:
Update to 0.2.0
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/devel/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- .cvsignore 15 Apr 2009 08:18:39 -0000 1.2
+++ .cvsignore 22 Sep 2011 12:01:08 -0000 1.3
@@ -1 +1 @@
-ffmpeg2dirac-0.1.0.tar.gz
+ffmpeg2dirac-0.2.0.tar.gz
Index: ffmpeg2dirac.spec
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/devel/ffmpeg2dirac.spec,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ffmpeg2dirac.spec 16 Oct 2009 21:34:04 -0000 1.2
+++ ffmpeg2dirac.spec 22 Sep 2011 12:01:08 -0000 1.3
@@ -1,12 +1,13 @@
Name: ffmpeg2dirac
-Version: 0.1.0
-Release: 4%{?dist}
+Version: 0.2.0
+Release: 1%{?dist}
Summary: Convert any file that ffmpeg can decode to dirac or theora
Group: Applications/Multimedia
License: GPLv2+
URL: http://diracvideo.org
Source0: http://downloads.sourceforge.net/dirac/ffmpeg2dirac-%{version}.tar.gz
+Patch0: ffmpeg2dirac-ffmpeg.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: scons
@@ -28,6 +29,7 @@
%prep
%setup -q
+%patch0 -p1 -b .ff08
sed -i -e 's/1.0beta1/1.0/' SConstruct
@@ -63,6 +65,10 @@
%changelog
+* Thu Sep 22 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 0.2.0-1
+- Update to 0.2.0
+- Add Patch for FFmpeg-0.8
+
* Fri Oct 16 2009 kwizart <kwizart at gmail.com> - 0.1.0-4
- Rebuild for F-12
Index: sources
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/devel/sources,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- sources 15 Apr 2009 08:18:39 -0000 1.2
+++ sources 22 Sep 2011 12:01:08 -0000 1.3
@@ -1 +1 @@
-cbcda7daabdb6990e0a57cd2a6ec4052 ffmpeg2dirac-0.1.0.tar.gz
+5726829267ddbe3d1e20242d3a65a940 ffmpeg2dirac-0.2.0.tar.gz
13 years, 2 months
rpms/ffmpeg2dirac/F-14 .cvsignore, 1.2, 1.3 ffmpeg2dirac.spec, 1.2, 1.3 sources, 1.2, 1.3
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/ffmpeg2dirac/F-14
In directory se02.es.rpmfusion.net:/tmp/cvs-serv2339/F-14
Modified Files:
.cvsignore ffmpeg2dirac.spec sources
Log Message:
Update to 0.2.0
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/F-14/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- .cvsignore 15 Apr 2009 08:18:39 -0000 1.2
+++ .cvsignore 22 Sep 2011 12:01:09 -0000 1.3
@@ -1 +1 @@
-ffmpeg2dirac-0.1.0.tar.gz
+ffmpeg2dirac-0.2.0.tar.gz
Index: ffmpeg2dirac.spec
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/F-14/ffmpeg2dirac.spec,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ffmpeg2dirac.spec 16 Oct 2009 21:34:04 -0000 1.2
+++ ffmpeg2dirac.spec 22 Sep 2011 12:01:09 -0000 1.3
@@ -1,6 +1,6 @@
Name: ffmpeg2dirac
-Version: 0.1.0
-Release: 4%{?dist}
+Version: 0.2.0
+Release: 1%{?dist}
Summary: Convert any file that ffmpeg can decode to dirac or theora
Group: Applications/Multimedia
@@ -63,6 +63,9 @@
%changelog
+* Thu Sep 22 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 0.2.0-1
+- Update to 0.2.0
+
* Fri Oct 16 2009 kwizart <kwizart at gmail.com> - 0.1.0-4
- Rebuild for F-12
Index: sources
===================================================================
RCS file: /cvs/free/rpms/ffmpeg2dirac/F-14/sources,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- sources 15 Apr 2009 08:18:39 -0000 1.2
+++ sources 22 Sep 2011 12:01:09 -0000 1.3
@@ -1 +1 @@
-cbcda7daabdb6990e0a57cd2a6ec4052 ffmpeg2dirac-0.1.0.tar.gz
+5726829267ddbe3d1e20242d3a65a940 ffmpeg2dirac-0.2.0.tar.gz
13 years, 2 months
rpms/ogmrip/F-15 .cvsignore, 1.8, 1.9 ogmrip.spec, 1.10, 1.11 sources, 1.8, 1.9 ogmrip-0.13.6-audio-quality.patch, 1.1, NONE ogmrip-0.13.6-g_const_return_deprecated.patch, 1.1, NONE ogmrip-0.13.6-gtk3_build_fix.patch, 1.1, NONE ogmrip-0.13.6-libnotify07-compatibility.patch, 1.1, NONE
by Gianluca Sforna
Author: giallu
Update of /cvs/free/rpms/ogmrip/F-15
In directory se02.es.rpmfusion.net:/tmp/cvs-serv27086
Modified Files:
.cvsignore ogmrip.spec sources
Removed Files:
ogmrip-0.13.6-audio-quality.patch
ogmrip-0.13.6-g_const_return_deprecated.patch
ogmrip-0.13.6-gtk3_build_fix.patch
ogmrip-0.13.6-libnotify07-compatibility.patch
Log Message:
* Thu Sep 22 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.7-1
- new upstream release
- drop upstreamed patches
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/ogmrip/F-15/.cvsignore,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- .cvsignore 22 Nov 2010 22:38:49 -0000 1.8
+++ .cvsignore 22 Sep 2011 11:02:40 -0000 1.9
@@ -1 +1 @@
-ogmrip-0.13.6.tar.gz
+ogmrip-0.13.7.tar.gz
Index: ogmrip.spec
===================================================================
RCS file: /cvs/free/rpms/ogmrip/F-15/ogmrip.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ogmrip.spec 29 Jul 2011 15:39:09 -0000 1.10
+++ ogmrip.spec 22 Sep 2011 11:02:40 -0000 1.11
@@ -1,6 +1,6 @@
Name: ogmrip
-Version: 0.13.6
-Release: 2%{?dist}
+Version: 0.13.7
+Release: 1%{?dist}
Summary: DVD ripping and encoding graphical user interface
Group: Applications/Multimedia
@@ -32,16 +32,6 @@
Requires(post): GConf2
Requires(postun): GConf2
-# These patches were sent upstream in ogmrip-devel ML
-Patch0: ogmrip-0.13.6-gtk3_build_fix.patch
-Patch1: ogmrip-0.13.6-libnotify07-compatibility.patch
-
-# Took from http://sourceforge.net/tracker/?func=detail&aid=3065523&group_id=75595&at...
-Patch2: ogmrip-0.13.6-audio-quality.patch
-
-# Upstream contacted:
-# http://sourceforge.net/mailarchive/forum.php?thread_name=CAP0i4rfD0MUX0hd...
-Patch3: ogmrip-0.13.6-g_const_return_deprecated.patch
%description
OGMRip is an application and a set of libraries for ripping and encoding DVDs
@@ -68,10 +58,6 @@
%prep
%setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p0
-%patch3 -p0
%build
%configure \
@@ -147,6 +133,10 @@
%changelog
+* Thu Sep 22 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.7-1
+- new upstream release
+- drop upstreamed patches
+
* Tue Jul 26 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.6-2
- Fix build with newer GLib
- Fix preferences bug with upstream patch
Index: sources
===================================================================
RCS file: /cvs/free/rpms/ogmrip/F-15/sources,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- sources 22 Nov 2010 22:38:49 -0000 1.8
+++ sources 22 Sep 2011 11:02:40 -0000 1.9
@@ -1 +1 @@
-e094c49cdf758883293dd44513fb37e8 ogmrip-0.13.6.tar.gz
+f91982e9f0564a8001e77b9fcf889a7c ogmrip-0.13.7.tar.gz
--- ogmrip-0.13.6-audio-quality.patch DELETED ---
--- ogmrip-0.13.6-g_const_return_deprecated.patch DELETED ---
--- ogmrip-0.13.6-gtk3_build_fix.patch DELETED ---
--- ogmrip-0.13.6-libnotify07-compatibility.patch DELETED ---
13 years, 2 months
rpms/ogmrip/devel .cvsignore, 1.8, 1.9 ogmrip.spec, 1.10, 1.11 sources, 1.8, 1.9
by Gianluca Sforna
Author: giallu
Update of /cvs/free/rpms/ogmrip/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv26873
Modified Files:
.cvsignore ogmrip.spec sources
Log Message:
* Thu Sep 22 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.7-1
- new upstream release
- drop upstreamed patches
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/ogmrip/devel/.cvsignore,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- .cvsignore 22 Nov 2010 22:38:49 -0000 1.8
+++ .cvsignore 22 Sep 2011 11:00:08 -0000 1.9
@@ -1 +1 @@
-ogmrip-0.13.6.tar.gz
+ogmrip-0.13.7.tar.gz
Index: ogmrip.spec
===================================================================
RCS file: /cvs/free/rpms/ogmrip/devel/ogmrip.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ogmrip.spec 28 Jul 2011 09:27:56 -0000 1.10
+++ ogmrip.spec 22 Sep 2011 11:00:09 -0000 1.11
@@ -1,6 +1,6 @@
Name: ogmrip
-Version: 0.13.6
-Release: 2%{?dist}
+Version: 0.13.7
+Release: 1%{?dist}
Summary: DVD ripping and encoding graphical user interface
Group: Applications/Multimedia
@@ -32,16 +32,6 @@
Requires(post): GConf2
Requires(postun): GConf2
-# These patches were sent upstream in ogmrip-devel ML
-Patch0: ogmrip-0.13.6-gtk3_build_fix.patch
-Patch1: ogmrip-0.13.6-libnotify07-compatibility.patch
-
-# Took from http://sourceforge.net/tracker/?func=detail&aid=3065523&group_id=75595&at...
-Patch2: ogmrip-0.13.6-audio-quality.patch
-
-# Upstream contacted:
-# http://sourceforge.net/mailarchive/forum.php?thread_name=CAP0i4rfD0MUX0hd...
-Patch3: ogmrip-0.13.6-g_const_return_deprecated.patch
%description
OGMRip is an application and a set of libraries for ripping and encoding DVDs
@@ -68,10 +58,6 @@
%prep
%setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p0
-%patch3 -p0
%build
%configure \
@@ -147,6 +133,10 @@
%changelog
+* Thu Sep 22 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.7-1
+- new upstream release
+- drop upstreamed patches
+
* Tue Jul 26 2011 Gianluca Sforna <giallu(a)gmail.com> - 0.13.6-2
- Fix build with newer GLib
- Fix preferences bug with upstream patch
Index: sources
===================================================================
RCS file: /cvs/free/rpms/ogmrip/devel/sources,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- sources 22 Nov 2010 22:38:49 -0000 1.8
+++ sources 22 Sep 2011 11:00:09 -0000 1.9
@@ -1 +1 @@
-e094c49cdf758883293dd44513fb37e8 ogmrip-0.13.6.tar.gz
+f91982e9f0564a8001e77b9fcf889a7c ogmrip-0.13.7.tar.gz
13 years, 2 months
rpms/VirtualBox-OSE/devel VirtualBox-OSE-4.1.2-libcxx.patch, NONE, 1.1 VirtualBox-OSE-4.1.2-noupdate.patch, NONE, 1.1 VirtualBox-OSE-4.1.2-testmangle.patch, NONE, 1.1 VirtualBox-OSE-4.1.2-usblib.patch, NONE, 1.1 VirtualBox-OSE-4.1.2-vboxpci.patch, NONE, 1.1 vboxweb-service, NONE, 1.1 .cvsignore, 1.28, 1.29 VirtualBox-OSE-90-vboxdrv.rules, 1.5, 1.6 VirtualBox-OSE.spec, 1.69, 1.70 sources, 1.28, 1.29 VirtualBox-OSE-3.2.0-noupdate.patch, 1.1, NONE VirtualBox-OSE-3.2.6-vboxkeyboard.patch, 1.1, NONE VirtualBox-
by Lubomir Rintel
Author: lkundrak
Update of /cvs/free/rpms/VirtualBox-OSE/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv20064/devel
Modified Files:
.cvsignore VirtualBox-OSE-90-vboxdrv.rules VirtualBox-OSE.spec
sources
Added Files:
VirtualBox-OSE-4.1.2-libcxx.patch
VirtualBox-OSE-4.1.2-noupdate.patch
VirtualBox-OSE-4.1.2-testmangle.patch
VirtualBox-OSE-4.1.2-usblib.patch
VirtualBox-OSE-4.1.2-vboxpci.patch vboxweb-service
Removed Files:
VirtualBox-OSE-3.2.0-noupdate.patch
VirtualBox-OSE-3.2.6-vboxkeyboard.patch
VirtualBox-OSE-4.0.0-usblib.patch
VirtualBox-OSE-4.0.2-gcc46.patch
VirtualBox-OSE-4.0.2-libcxx.patch
Log Message:
Import 4.1.2
VirtualBox-OSE-4.1.2-libcxx.patch:
Config.kmk | 4 ++--
configure | 2 +-
src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk | 2 +-
src/VBox/Additions/x11/VBoxClient/Makefile.kmk | 5 +----
src/VBox/Frontends/VirtualBox/Makefile.kmk | 2 +-
src/VBox/HostDrivers/Support/Makefile.kmk | 2 +-
src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk | 12 ++++++------
src/VBox/HostDrivers/win/Makefile.kmk | 2 +-
src/VBox/Installer/win/InstallHelper/Makefile.kmk | 2 +-
src/VBox/Installer/win/Resources/Makefile.kmk | 2 +-
src/VBox/Installer/win/Stub/Makefile.kmk | 2 +-
src/VBox/Storage/testcase/Makefile.kmk | 2 +-
src/libs/liblzf-3.4/Makefile.kmk | 2 +-
src/libs/zlib-1.2.1/Makefile.kmk | 3 +--
14 files changed, 20 insertions(+), 24 deletions(-)
--- NEW FILE VirtualBox-OSE-4.1.2-libcxx.patch ---
>From dd383911ef6a9a43c17b18d48b17cd82d6c8feb9 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak(a)v3.sk>
Date: Fri, 18 Jun 2010 10:58:14 +0200
Subject: [PATCH 2/3] Do not include statically linked libstdc++
Not a good idea if we don't need to be binary-compatible across exotic
distribution. Doesn't work with trunk glibc heading towards 2.11 anyways.
Static linking is not really supported anyways.
---
Config.kmk | 4 ++--
configure | 2 +-
.../WINNT/Graphics/Video/disp/Makefile.kmk | 2 +-
src/VBox/Additions/x11/VBoxClient/Makefile.kmk | 5 +----
src/VBox/Frontends/VirtualBox/Makefile.kmk | 2 +-
src/VBox/HostDrivers/Support/Makefile.kmk | 2 +-
src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk | 12 ++++++------
src/VBox/HostDrivers/win/Makefile.kmk | 2 +-
src/VBox/Installer/win/InstallHelper/Makefile.kmk | 2 +-
src/VBox/Installer/win/Resources/Makefile.kmk | 2 +-
src/VBox/Installer/win/Stub/Makefile.kmk | 2 +-
src/VBox/Storage/testcase/Makefile.kmk | 2 +-
src/libs/liblzf-3.4/Makefile.kmk | 2 +-
src/libs/zlib-1.2.1/Makefile.kmk | 2 +-
17 files changed, 23 insertions(+), 26 deletions(-)
diff --git a/Config.kmk b/Config.kmk
index 0ea34d8..2ec388c 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -3163,7 +3163,7 @@ TEMPLATE_VBOXR3EXE_LIBS = pthread m rt dl
TEMPLATE_VBOXR3EXE_LIBS = \
$(L4_LIBDIR)/libvboxserver.s.so \
$(L4_LIBDIR)/libuc++.0.s.so \
- supc++ gcc_eh gcc \
+ stdc++ \
$(L4_LIBDIR)/libdl.s.so \
$(L4_LIBDIR)/libuc.0.s.so
else ifeq ($(KBUILD_TARGET),os2)
@@ -3311,7 +3311,7 @@ endif
# Temporary: Renaming the template and warnings will be errors (soon).
#
TEMPLATE_VBoxR3Static = New name for VBOXR3STATIC
-TEMPLATE_VBoxR3Static_EXTENDS = VBOXR3STATIC
+TEMPLATE_VBoxR3Static_EXTENDS = VBOXR3EXE
TEMPLATE_VBoxR3Static_EXTENDS_BY = appending
ifeq ($(KBUILD_TARGET),win)
TEMPLATE_VBoxR3Static_CFLAGS += $(VBOX_VCC_WERR)
diff --git a/configure b/configure
index 987cf1b..75d556c 100755
--- a/configure
+++ b/configure
@@ -2582,7 +2582,7 @@ fi
if [ "$OS" = "linux" ]; then
# don't check for the static libstdc++ in the PUEL version as we build the
# additions at a dedicated box
- [ $OSE -ge 1 ] && check_staticlibstdcxx
+ #[ $OSE -ge 1 ] && check_staticlibstdcxx
if [ $WITH_KMODS -eq 1 ]; then
check_linux
else
diff --git a/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk b/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk
index 52fb6d3..af7ba4b 100644
--- a/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk
+++ b/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk
@@ -160,7 +160,7 @@ endif #ifdef VBOX_WITH_WDDM
ifdef VBOXVIDEOWINDBG
DLLS += vbvdbg
-vbvdbg_TEMPLATE = VBOXR3STATIC
+vbvdbg_TEMPLATE = VBOXR3EXE
vbvdbg_DEFS = UNICODE _UNICODE
vbvdbg_SOURCES = \
wddm/dbg/VBoxVideoWinDbg.cpp \
diff --git a/src/VBox/Additions/x11/VBoxClient/Makefile.kmk b/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
index ee73ed0..e359702 100644
--- a/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
+++ b/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
@@ -50,10 +50,7 @@ VBoxClient_LIBS = \
X11 \
Xrandr \
Xt
-# These are static replacements for gcc-specific parts of libstdc++
-VBoxClient_LIBS += \
- supc++ \
- gcc_eh
+VBoxClient_LIBS += stdc++
ifdef VBOX_X11_SEAMLESS_GUEST
VBoxClient_DEFS += SEAMLESS_GUEST DYNAMIC_RESIZE
VBoxClient_SOURCES += \
diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk
index ed0163b..2ee8418 100644
--- a/src/VBox/Frontends/VirtualBox/Makefile.kmk
+++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk
@@ -957,7 +957,7 @@ endif # darwin
if defined(VBOX_WITH_VIDEOHWACCEL)
if1of ($(KBUILD_TARGET), win linux freebsd)
LIBRARIES += VBoxOGL2D
- VBoxOGL2D_TEMPLATE = VBOXR3STATIC
+ VBoxOGL2D_TEMPLATE = VBOXR3EXE
VBoxOGL2D_USES = qt4
VBoxOGL2D_SDKS = QT4
VBoxOGL2D_DEFS = IN_RING3 QT_NO_DEBUG QT_THREAD_SUPPORT QT_SHARED HAVE_CONFIG_H $(ARCH_BITS_DEFS) VBOX_WITH_VIDEOHWACCEL VBOX_GUI_USE_QGL
diff --git a/src/VBox/HostDrivers/Support/Makefile.kmk b/src/VBox/HostDrivers/Support/Makefile.kmk
index bf77085..9d67f49 100644
--- a/src/VBox/HostDrivers/Support/Makefile.kmk
+++ b/src/VBox/HostDrivers/Support/Makefile.kmk
@@ -95,7 +95,7 @@ SUPR3_SOURCES = \
#
# Static version of SUPR3.
#
-SUPR3Static_TEMPLATE = VBOXR3STATIC
+SUPR3Static_TEMPLATE = VBOXR3EXE
SUPR3Static_EXTENDS = SUPR3
#
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk b/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
index a40f46d..e29273f 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
@@ -141,7 +141,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# WinNetConfig - static library with host network interface config API
#
LIBRARIES.win += WinNetConfig
- WinNetConfig_TEMPLATE = VBOXR3STATIC
+ WinNetConfig_TEMPLATE = VBOXR3EXE
WinNetConfig_DEFS = _WIN32_WINNT=0x0501 _UNICODE UNICODE
WinNetConfig_SDKS = WINPSDK W2K3DDK
WinNetConfig_SOURCES = \
@@ -152,7 +152,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# NetFltInstall
#
PROGRAMS.win += NetFltInstall
- NetFltInstall_TEMPLATE = VBOXR3STATIC
+ NetFltInstall_TEMPLATE = VBOXR3EXE
NetFltInstall_SDKS = WINPSDK W2K3DDK VBOX_NTDLL
NetFltInstall_SOURCES = win/tools/VBoxNetFltInstall.cpp
NetFltInstall_LIBS = \
@@ -166,7 +166,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# NetFltUninstall
#
PROGRAMS.win += NetFltUninstall
- NetFltUninstall_TEMPLATE = VBOXR3STATIC
+ NetFltUninstall_TEMPLATE = VBOXR3EXE
NetFltUninstall_SDKS = WINPSDK W2K3DDK VBOX_NTDLL
NetFltUninstall_SOURCES = win/tools/VBoxNetFltUninstall.cpp
NetFltUninstall_LIBS = \
@@ -179,7 +179,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# NetAdpInstall
#
PROGRAMS.win += NetAdpInstall
- NetAdpInstall_TEMPLATE = VBOXR3STATIC
+ NetAdpInstall_TEMPLATE = VBOXR3EXE
NetAdpInstall_SDKS = WINPSDK W2K3DDK VBOX_NTDLL
NetAdpInstall_SOURCES = win/tools/VBoxNetAdpInstall.cpp
NetAdpInstall_LIBS = \
@@ -193,7 +193,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# NetAdpUninstall
#
PROGRAMS.win += NetAdpUninstall
- NetAdpUninstall_TEMPLATE = VBOXR3STATIC
+ NetAdpUninstall_TEMPLATE = VBOXR3EXE
NetAdpUninstall_SDKS = WINPSDK W2K3DDK VBOX_NTDLL
NetAdpUninstall_SOURCES = win/tools/VBoxNetAdpUninstall.cpp
NetAdpUninstall_LIBS = \
@@ -206,7 +206,7 @@ $(PATH_TARGET)/VBoxNetFltCat.dir/VBoxNetFlt.cat: \
# VBoxNetFltNobj
#
DLLS.win += VBoxNetFltNobj
- VBoxNetFltNobj_TEMPLATE = VBOXR3STATIC
+ VBoxNetFltNobj_TEMPLATE = VBOXR3EXE
if defined(VBOX_SIGNING_MODE)
VBoxNetFltNobj_NOINST = true
endif
diff --git a/src/VBox/HostDrivers/win/Makefile.kmk b/src/VBox/HostDrivers/win/Makefile.kmk
index 19c15d5..6d2366f 100644
--- a/src/VBox/HostDrivers/win/Makefile.kmk
+++ b/src/VBox/HostDrivers/win/Makefile.kmk
@@ -19,7 +19,7 @@ SUB_DEPTH = ../../../..
include $(KBUILD_PATH)/subheader.kmk
LIBRARIES += VBoxDrvCfg
-VBoxDrvCfg_TEMPLATE = VBOXR3STATIC
+VBoxDrvCfg_TEMPLATE = VBOXR3EXE
VBoxDrvCfg_SDKS = WINPSDK W2K3DDK
VBoxDrvCfg_DEFS = _WIN32_WINNT=0x0501 _UNICODE UNICODE
VBoxDrvCfg_SOURCES = cfg/VBoxDrvCfg.cpp
diff --git a/src/VBox/Installer/win/InstallHelper/Makefile.kmk b/src/VBox/Installer/win/InstallHelper/Makefile.kmk
index 5271e49..aa18e57 100644
--- a/src/VBox/Installer/win/InstallHelper/Makefile.kmk
+++ b/src/VBox/Installer/win/InstallHelper/Makefile.kmk
@@ -19,7 +19,7 @@ SUB_DEPTH = ../../../../..
include $(KBUILD_PATH)/subheader.kmk
DLLS += VBoxInstallHelper
-VBoxInstallHelper_TEMPLATE = VBOXR3STATIC
+VBoxInstallHelper_TEMPLATE = VBOXR3EXE
VBoxInstallHelper_DEFS = _WIN32_WINNT=0x0501 _UNICODE UNICODE
VBoxInstallHelper_DEFS += VBOX_SVN_REV=$(VBOX_SVN_REV)
VBoxInstallHelper_DEPS = $(VBOX_SVN_REV_KMK)
diff --git a/src/VBox/Installer/win/Resources/Makefile.kmk b/src/VBox/Installer/win/Resources/Makefile.kmk
index 77ea1b7..5e58fdc 100644
--- a/src/VBox/Installer/win/Resources/Makefile.kmk
+++ b/src/VBox/Installer/win/Resources/Makefile.kmk
@@ -19,7 +19,7 @@ SUB_DEPTH = ../../../../..
include $(KBUILD_PATH)/subheader.kmk
DLLS += VBoxRes
-VBoxRes_TEMPLATE = VBOXR3STATIC
+VBoxRes_TEMPLATE = VBOXR3EXE
VBoxRes_DEPS = $(VBOX_SVN_REV_KMK)
VBoxRes_SOURCES = \
dummy.cpp \
diff --git a/src/VBox/Installer/win/Stub/Makefile.kmk b/src/VBox/Installer/win/Stub/Makefile.kmk
index a8f89eb..6cf55cc 100644
--- a/src/VBox/Installer/win/Stub/Makefile.kmk
+++ b/src/VBox/Installer/win/Stub/Makefile.kmk
@@ -22,7 +22,7 @@ include $(KBUILD_PATH)/subheader.kmk
if "$(KBUILD_TARGET_ARCH)" == "x86"
TEMPLATE_VBOXSTUB = Drop the signing, we will sign it later.
-TEMPLATE_VBOXSTUB_EXTENDS = VBOXR3STATIC
+TEMPLATE_VBOXSTUB_EXTENDS = VBOXR3EXE
TEMPLATE_VBOXSTUB_POST_CMDS = $(NO_SUCH_VARIABLE)
PROGRAMS.x86 += VBoxStub
diff --git a/src/VBox/Storage/testcase/Makefile.kmk b/src/VBox/Storage/testcase/Makefile.kmk
index f935b05..40f6bf2 100644
--- a/src/VBox/Storage/testcase/Makefile.kmk
+++ b/src/VBox/Storage/testcase/Makefile.kmk
@@ -68,7 +68,7 @@ ifdef VBOX_WITH_TESTCASES
#
# vbox-img - static because it migth be used as at standalone tool.
#
- vbox-img_TEMPLATE = VBOXR3STATIC
+ vbox-img_TEMPLATE = VBOXR3EXE
vbox-img_DEFS += IN_VBOXDDU IN_VBOXDDU_STATIC VBOX_HDD_NO_DYNAMIC_BACKENDS IN_RT_R3
vbox-img_SOURCES = \
vbox-img.cpp \
diff --git a/src/libs/liblzf-3.4/Makefile.kmk b/src/libs/liblzf-3.4/Makefile.kmk
index 44088fa..0afe89a 100644
--- a/src/libs/liblzf-3.4/Makefile.kmk
+++ b/src/libs/liblzf-3.4/Makefile.kmk
@@ -33,7 +33,7 @@ VBox-liblzf_SOURCES = \
lzf_c.c \
lzf_d.c
-VBox-liblzf-static_TEMPLATE = VBOXR3STATIC
+VBox-liblzf-static_TEMPLATE = VBOXR3EXE
VBox-liblzf-static_BLD_TYPE = $(VBox-liblzf_BLD_TYPE)
VBox-liblzf-static_DEFS = $(VBox-liblzf_DEFS)
VBox-liblzf-static_DEFS.x86 = $(VBox-liblzf_DEFS.x86)
diff --git a/src/libs/zlib-1.2.1/Makefile.kmk b/src/libs/zlib-1.2.1/Makefile.kmk
index fde8b7c..405d354 100644
--- a/src/libs/zlib-1.2.1/Makefile.kmk
+++ b/src/libs/zlib-1.2.1/Makefile.kmk
@@ -39,7 +39,7 @@ VBox-zlib_SOURCES = \
inftrees.c \
inffast.c
-VBox-zlib-static_TEMPLATE = VBOXR3STATIC
+VBox-zlib-static_TEMPLATE = VBOXR3EXE
VBox-zlib-static_DEFS = $(VBox-zlib_DEFS)
VBox-zlib-static_SOURCES = $(VBox-zlib_SOURCES)
--
1.7.1
VirtualBox-OSE-4.1.2-noupdate.patch:
VBoxUpdateDlg.cpp | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
--- NEW FILE VirtualBox-OSE-4.1.2-noupdate.patch ---
>From a16880964c51ff647c94e6aaf83ec67f6d1aeca5 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak(a)v3.sk>
Date: Wed, 28 Apr 2010 11:53:40 +0200
Subject: [PATCH 2/2] Disable automatic check for updates
Our OS provides superior way of dealing with updates (PackageKit).
Let's not bug the user with updates that are not yet packaged.
---
.../Frontends/VirtualBox/src/VBoxUpdateDlg.cpp | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxUpdateDlg.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxUpdateDlg.cpp
index f135c26..cc8399b 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxUpdateDlg.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxUpdateDlg.cpp
@@ -187,7 +187,12 @@ void VBoxUpdateData::decode()
if (parser.size() > 1)
{
QDate date = QDate::fromString(parser[1], Qt::ISODate);
- m_date = date.isValid() ? date : QDate::currentDate();
+ if (date.isValid()) {
+ m_date = date;
+ } else {
+ m_periodIndex = PeriodNever;
+ }
+
}
/* Parse 'branch' value: */
--
1.7.1
VirtualBox-OSE-4.1.2-testmangle.patch:
Makefile.kmk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE VirtualBox-OSE-4.1.2-testmangle.patch ---
Disable a failing check.
diff -urp VirtualBox-4.1.2_OSE/src/VBox/Runtime/Makefile.kmk VirtualBox-4.1.2_OSE.fixed/src/VBox/Runtime/Makefile.kmk
--- VirtualBox-4.1.2_OSE/src/VBox/Runtime/Makefile.kmk 2011-08-15 14:28:32.000000000 +0200
+++ VirtualBox-4.1.2_OSE.fixed/src/VBox/Runtime/Makefile.kmk 2011-09-20 21:49:21.961684047 +0200
@@ -2268,7 +2268,7 @@ test-doxygen::
#
# Test mangling.
#
-if1of ($(LIBRARIES),RuntimeR3 RuntimeR0 RuntimeR0Drv RuntimeRC)
+if1of (wololo,RuntimeR3 RuntimeR0 RuntimeR0Drv RuntimeRC)
test-mangling:: $(IPRT_OUT_DIR)/mangling.run
OTHERS += $(IPRT_OUT_DIR)/mangling.run
CLEANS += $(IPRT_OUT_DIR)/mangling.run
VirtualBox-OSE-4.1.2-usblib.patch:
Makefile.kmk | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- NEW FILE VirtualBox-OSE-4.1.2-usblib.patch ---
>From 62776a195748d36f311bbbc3d7542e17a7cb4a86 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak(a)v3.sk>
Date: Mon, 10 Jan 2011 15:39:07 +0100
Subject: [PATCH 3/3] Fix path to USBLib
kmk: *** No rule to make target `out/linux.x86/release/lib/USBLib.a',
needed by `out/linux.x86/release/obj/tstHostHardwareLinux/tstHostHardwareLinux'.
Stop.
---
src/VBox/Main/testcase/Makefile.kmk | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/VBox/Main/testcase/Makefile.kmk b/src/VBox/Main/testcase/Makefile.kmk
index c6acdd1..1e593d6 100644
--- a/src/VBox/Main/testcase/Makefile.kmk
+++ b/src/VBox/Main/testcase/Makefile.kmk
@@ -183,7 +183,7 @@ tstUSBProxyLinux_DEFS = \
tstUSBProxyLinux_DEPS = \
$(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
tstUSBProxyLinux_LIBS += \
- $(PATH_OUT)/lib/USBLib.a
+ $(PATH_OUT)/obj/USBLib/USBLib.o
# generate rules.
--
1.7.1
VirtualBox-OSE-4.1.2-vboxpci.patch:
Makefile.kmk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- NEW FILE VirtualBox-OSE-4.1.2-vboxpci.patch ---
>From d7f04987c6e52962a8c740d4d642b2bb1f33a41b Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak(a)v3.sk>
Date: Tue, 20 Sep 2011 09:52:11 +0200
Subject: [PATCH 1/2] Fix a vboxpci compilation failure with vboxdrv disabled
Simply disable the compilation test.
---
src/VBox/HostDrivers/VBoxPci/Makefile.kmk | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/VBox/HostDrivers/VBoxPci/Makefile.kmk b/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
index e13ac97..9091abf 100644
--- a/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
@@ -18,6 +18,7 @@
SUB_DEPTH = ../../../..
include $(KBUILD_PATH)/subheader.kmk
if1of ($(KBUILD_TARGET), linux)
+ifdef VBOX_WITH_VBOXDRV
#
# The driver.
@@ -41,6 +42,7 @@ if1of ($(KBUILD_TARGET), linux)
VBoxPci_LIBS += \
$(PATH_STAGE_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
+endif
#
# Install the sources.
--
1.7.1
--- NEW FILE vboxweb-service ---
#! /bin/bash
#
# vboxweb-service: VirtualBox OSE Web Service init script.
#
# Author: Lubomir Rintel <lkundrak(a)v3.sk>
#
# chkconfig: - 80 30
# description: VirtualBox OSE Web Services
# processname: vboxweb
# pidfile: /var/run/vboxweb-service.pid
#
### BEGIN INIT INFO
# Provides: vboxweb-service
# Required-Start: network
# Required-Stop:
# Default-Start:
# Default-Stop: 0 1 2 6
# Short-Description: VirtualBox OSE Web Service
# Description: VirtualBox OSE Web Services API
### END INIT INFO
SERVICE=vboxweb-service
PROCESS=vboxwebsrv
DAEMON=/usr/bin/$PROCESS
PIDFILE=/var/run/$SERVICE.pid
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Source service configuration.
[ -f /etc/sysconfig/$SERVICE ] && . /etc/sysconfig/$SERVICE
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $DAEMON ] || exit 1
start ()
{
echo -n $"Starting $SERVICE: "
daemon $DAEMON --pidfile $PIDFILE --background $VBOXWEB_OPTS >/dev/null 2>&1
# We suppressed nonessential output, so we need to reprint status msg
RETVAL=$?
if [ $RETVAL = 0 ]
then
success
touch /var/lock/subsys/$SERVICE
else
failure
fi
echo
return $RETVAL
}
stop ()
{
echo -n $"Stopping $SERVICE:"
killproc $PROCESS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]
then
rm -f /var/lock/subsys/$SERVICE
rm -f $PIDFILE
fi
return $RETVAL
}
restart ()
{
stop && start
}
RETVAL=0
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
restart
RETVAL=$?
;;
reload)
echo "$0 does not support configuration reloading, you have to restart it."
RETVAL=1
;;
status)
status $PROCESS
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
RETVAL=1
esac
exit $RETVAL
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/VirtualBox-OSE/devel/.cvsignore,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- .cvsignore 4 Apr 2011 06:59:28 -0000 1.28
+++ .cvsignore 22 Sep 2011 10:04:37 -0000 1.29
@@ -1 +1 @@
-VirtualBox-4.0.4.tar.bz2
+VirtualBox-4.1.2.tar.bz2
Index: VirtualBox-OSE-90-vboxdrv.rules
===================================================================
RCS file: /cvs/free/rpms/VirtualBox-OSE/devel/VirtualBox-OSE-90-vboxdrv.rules,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- VirtualBox-OSE-90-vboxdrv.rules 22 Aug 2009 03:43:09 -0000 1.5
+++ VirtualBox-OSE-90-vboxdrv.rules 22 Sep 2011 10:04:38 -0000 1.6
@@ -1,2 +1,3 @@
-ACTION=="add", DEVPATH=="/devices/virtual/misc/vboxdrv", OWNER="root", MODE="0666"
-ACTION=="add", DEVPATH=="/devices/virtual/misc/vboxnetctl", OWNER="root", MODE="0666"
+ACTION=="add", DEVPATH=="/devices/virtual/misc/vboxdrv", OWNER="root", MODE="0600"
+ACTION=="add", DEVPATH=="/devices/virtual/misc/vboxnetctl", OWNER="root", MODE="0600"
+ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{bDeviceClass}!="09", GROUP="vboxusers", MODE="660", SYMLINK+="vboxusb/$env{BUSNUM}/$env{DEVNUM}"
Index: VirtualBox-OSE.spec
===================================================================
RCS file: /cvs/free/rpms/VirtualBox-OSE/devel/VirtualBox-OSE.spec,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- VirtualBox-OSE.spec 4 Apr 2011 06:59:28 -0000 1.69
+++ VirtualBox-OSE.spec 22 Sep 2011 10:04:38 -0000 1.70
@@ -14,7 +14,7 @@
%global prereltag %{?prerel:_%(awk 'BEGIN {print toupper("%{prerel}")}')}
Name: VirtualBox-OSE
-Version: 4.0.4
+Version: 4.1.2
Release: 1%{?prerel:.%{prerel}}%{?dist}
Summary: A general-purpose full virtualizer for PC hardware
@@ -28,20 +28,21 @@
Source7: VirtualBox-OSE-guest.modules
Source8: VirtualBox-OSE-vboxresize.desktop
Source9: VirtualBox-OSE-00-vboxvideo.conf
-Patch1: VirtualBox-OSE-3.2.0-noupdate.patch
+Source10: vboxweb-service
+Patch1: VirtualBox-OSE-4.1.2-noupdate.patch
Patch2: VirtualBox-OSE-4.0.2-strings.patch
-Patch3: VirtualBox-OSE-4.0.2-libcxx.patch
+Patch3: VirtualBox-OSE-4.1.2-libcxx.patch
Patch5: VirtualBox-OSE-4.0.2-xorg17.patch
Patch9: VirtualBox-OSE-3.2.4-optflags.patch
Patch10: VirtualBox-OSE-4.0.0-32bit.patch
Patch11: VirtualBox-OSE-3.2.0-visibility.patch
Patch12: VirtualBox-OSE-3.2.10-noansi.patch
-Patch14: VirtualBox-OSE-3.2.6-vboxkeyboard.patch
Patch15: VirtualBox-OSE-4.0.0-makeself.patch
-Patch16: VirtualBox-OSE-4.0.0-usblib.patch
+Patch16: VirtualBox-OSE-4.1.2-usblib.patch
Patch17: VirtualBox-OSE-4.0.0-beramono.patch
Patch18: VirtualBox-OSE-4.0.2-aiobug.patch
-Patch19: VirtualBox-OSE-4.0.2-gcc46.patch
+Patch19: VirtualBox-OSE-4.1.2-vboxpci.patch
+Patch20: VirtualBox-OSE-4.1.2-testmangle.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -84,6 +85,9 @@
ExclusiveArch: i386 x86_64
%endif
+Requires(post): desktop-file-utils
+Requires(postun): desktop-file-utils
+
Requires: %{name}-kmod = %{version}%{?prereltag}
Provides: %{name}-kmod-common = %{version}%{?prereltag}
Conflicts: %{name}-guest <= %{version}-%{release}
@@ -124,9 +128,9 @@
Obsoletes: xorg-x11-drv-VirtualBox-OSE < %{version}-%{release}
Conflicts: %{name} <= %{version}-%{release}
%if "%(xserver-sdk-abi-requires 2>/dev/null)"
-Requires: %(xserver-sdk-abi-requires ansic)
-Requires: %(xserver-sdk-abi-requires videodrv)
-Requires: %(xserver-sdk-abi-requires xinput)
+Requires: %(xserver-sdk-abi-requires ansic)
+Requires: %(xserver-sdk-abi-requires videodrv)
+Requires: %(xserver-sdk-abi-requires xinput)
%endif
@@ -157,12 +161,12 @@
%patch10 -p1 -b .32bit
%patch11 -p1 -b .visibility
%patch12 -p1 -b .noansi
-%patch14 -p1 -b .vboxkeyboard
%patch15 -p1 -b .makeself
%patch16 -p1 -b .usblib
%patch17 -p1 -b .beramono
%patch18 -p1 -b .aiobug
-%patch19 -p1 -b .gcc46
+%patch19 -p1 -b .vboxpci
+%patch20 -p1 -b .testmangle
# Remove prebuilt binary tools
rm -rf kBuild
@@ -181,16 +185,14 @@
# really been installed to. Therefore we do not override any of
# the installation paths, but install the tree with the default
# layout under 'obj' and shuffle files around in %%install.
-echo %{optflags}
kmk %{_smp_mflags} \
- KBUILD_VERBOSE=2 TOOL_YASM_AS=yasm PATH_INS="$PWD/obj" \
+ KBUILD_VERBOSE=2 TOOL_YASM_AS=yasm PATH_OUT="$PWD/obj" \
VBOX_PATH_APP_PRIVATE=%{_libdir}/virtualbox \
VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= \
- KMK_REVISION=3000 KBUILD_KMK_REVISION=3000 \
VBOX_GCC_OPT="%{optflags}" VBOX_GCC_GC_OPT="%{optflags}" \
VBOX_GCC_R0_OPT="%{optflags}" VBOX_GCC_WERR="" \
- VBOX_XCURSOR_LIBS="Xcursor Xext X11 GL" \
- VBOX_JAVA_HOME=%{_prefix}/lib/jvm/java
+ VBOX_XCURSOR_LIBS="Xcursor Xext X11 GL" \
+ VBOX_JAVA_HOME=%{_prefix}/lib/jvm/java
%install
@@ -206,9 +208,12 @@
install -d $RPM_BUILD_ROOT%{_libdir}/virtualbox
install -d $RPM_BUILD_ROOT%{_libdir}/virtualbox/components
install -d $RPM_BUILD_ROOT%{_libdir}/virtualbox/nls
+install -d $RPM_BUILD_ROOT%{_libdir}/virtualbox/ExtensionPacks
install -d $RPM_BUILD_ROOT%{_libdir}/dri
-install -d $RPM_BUILD_ROOT%{_datadir}/virtualbox/sdk
+install -d $RPM_BUILD_ROOT%{_libdir}/virtualbox/sdk
install -d $RPM_BUILD_ROOT%{_datadir}/pixmaps
+install -d $RPM_BUILD_ROOT%{_datadir}/mime/packages
+install -d $RPM_BUILD_ROOT%{_datadir}/icons
install -d $RPM_BUILD_ROOT%{_prefix}/src/%{name}-kmod-%{version}
install -d $RPM_BUILD_ROOT%{python_sitelib}/virtualbox
@@ -216,16 +221,20 @@
install -p -m 0755 obj/bin/VBox.sh $RPM_BUILD_ROOT%{_bindir}/VBox
ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VBoxHeadless
ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VBoxManage
+ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VBoxBalloonCtrl
+ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VBoxBFE
ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VBoxSDL
ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/VirtualBox
+ln -sf VBox $RPM_BUILD_ROOT%{_bindir}/vboxwebsrv
install -p -m 0755 -t $RPM_BUILD_ROOT%{_bindir} \
obj/bin/VBoxTunctl \
- obj/bin/VBoxBFE
# Components
install -p -m 0755 -t $RPM_BUILD_ROOT%{_libdir}/virtualbox/components \
- obj/bin/components/*
+ obj/bin/components/VBoxC.so \
+ obj/bin/components/VBoxSVCM.so \
+ obj/bin/components/*XPCOM*.so
# Lib
install -p -m 0755 -t $RPM_BUILD_ROOT%{_libdir}/virtualbox \
@@ -242,7 +251,6 @@
# Executables
install -p -m 0755 -t $RPM_BUILD_ROOT%{_libdir}/virtualbox \
- obj/bin/EfiThunk \
obj/bin/VBoxHeadless \
obj/bin/VBoxSDL \
obj/bin/VBoxNetDHCP \
@@ -255,22 +263,43 @@
obj/bin/vboxshell.py \
obj/bin/VBoxTestOGL \
obj/bin/vboxwebsrv \
- obj/bin/webtest
+ obj/bin/VBoxBalloonCtrl \
+ obj/bin/webtest \
+ obj/bin/VBoxBFE
+
+# Lowercase aliases
+for F in VBoxBalloonCtrl VBoxHeadless VBoxManage VBoxSDL VirtualBox VBoxBFE
+do
+ ln $RPM_BUILD_ROOT%{_bindir}/$F \
+ $RPM_BUILD_ROOT%{_bindir}/$(echo $F |awk '{print tolower($0)}')
+done
# Language files
install -p -m 0755 -t $RPM_BUILD_ROOT%{_libdir}/virtualbox/nls \
obj/bin/nls/*
# SDK
-cp -rp obj/bin/sdk/. $RPM_BUILD_ROOT%{_datadir}/virtualbox/sdk
-mv $RPM_BUILD_ROOT%{_datadir}/virtualbox/sdk/bindings/xpcom/python/xpcom \
- $RPM_BUILD_ROOT%{python_sitelib}/virtualbox
-ln -sf ../../../../../../..%{python_sitelib}/virtualbox/xpcom \
- $RPM_BUILD_ROOT%{_datadir}/virtualbox/sdk/bindings/xpcom/python/xpcom
+pushd obj/bin/sdk/installer
+VBOX_INSTALL_PATH=%{_libdir}/virtualbox \
+ python vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT
+popd
+cp -rp obj/bin/sdk/. $RPM_BUILD_ROOT%{_libdir}/virtualbox/sdk
+rm -rf $RPM_BUILD_ROOT%{_libdir}/virtualbox/sdk/installer
-# Icon
+# Icons
install -p -m 0644 -t $RPM_BUILD_ROOT%{_datadir}/pixmaps \
obj/bin/VBox.png
+ln -f $RPM_BUILD_ROOT%{_datadir}/pixmaps/{VBox,virtualbox}.png
+for S in obj/bin/icons/*
+do
+ SIZE=$(basename $S)
+ install -d $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/$SIZE/{mimetypes,apps}
+ install -p -m 0644 $S/* $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/$SIZE/mimetypes
+ [ -f $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/$SIZE/mimetypes/virtualbox.png ] && mv \
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/$SIZE/mimetypes/virtualbox.png \
+ $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/$SIZE/apps/virtualbox.png
+done
+install -p -m 0644 obj/bin/virtualbox.xml $RPM_BUILD_ROOT%{_datadir}/mime/packages
# Guest X.Org drivers
# With the xorg17 patch, the _17 driver builds against what's
@@ -342,55 +371,42 @@
--remove-key=DocPath --remove-category=X-MandrivaLinux-System \
--vendor='' obj/bin/virtualbox.desktop
-%check
-exit 0
-
-# Dear contributor,
-#
-# If you forget a file when updating to a later version, it's
-# not you fault; as you can see, install section is far from
-# ideal. This section is meant to make it easier for you to spot
-# files you've forgotten to include. Feel free to blacklist
-# uninteresting files here.
-#
-# Not sure if a file is "uninteresting"? See if closed version
-# contains it? No? Remove it. Application doesn't run without
-# it? Bring it back.
-
-set +o posix
-diff -u <((find obj/bin/additions/* -maxdepth 0 -type f \
- -not -name 'autorun.sh' \
- -not -name '*_drv*' \
- -not -name 'pam_vbox.so' \
- -exec basename '{}' \;
- find obj/bin/* -maxdepth 0 -type f \
- -not -name 'tst*' \
- -not -name 'SUP*' \
- -not -name 'VBox.sh' \
- -not -name 'xpidl' \
- -not -name 'scm' \
- -not -name 'vboxkeyboard.tar.*' \
- -exec basename '{}' \;) |sort) \
- <(find $RPM_BUILD_ROOT%{_libdir}/virtualbox/* \
- $RPM_BUILD_ROOT%{_bindir}/* \
- $RPM_BUILD_ROOT%{_libdir}/*OGL*.so \
- $RPM_BUILD_ROOT%{_datadir}/{pixmaps,applications}/* \
- -maxdepth 0 -type f \
- -not -name '*.py[co]' \
- -not -name 'UserManual.pdf' \
- -not -name VBox -exec basename '{}' \; |sort)
-set -o posix
-
%clean
rm -rf $RPM_BUILD_ROOT
-%pre devel
-# This changed to a symlink from directory, which would cause
-# the new package's CPIO payload to fail to unpack unless removed
-PYXP=%{_datadir}/virtualbox/sdk/bindings/xpcom/python/xpcom
-[ -d "$PYXP" ] && rm -rf "$PYXP"
+%post
+# Group for USB devices
+getent group vboxusers >/dev/null || groupadd -r vboxusers
+
+# Desktop databases
+/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+/usr/bin/update-desktop-database &>/dev/null || :
+/usr/bin/update-mime-database %{_datadir}/mime &>/dev/null || :
+
+# Web service
+/sbin/chkconfig --add vboxweb-service >/dev/null 2>&1 || :
+
+# Assign USB devices
+if /sbin/udevadm control --reload-rules >/dev/null 2>&1
+then
+ /sbin/udevadm trigger --subsystem-match=usb >/dev/null 2>&1 || :
+ /sbin/udevadm settle >/dev/null 2>&1 || :
+fi
+
+
+%preun
+[ $1 = 0 ] && /sbin/chkconfig --del vboxweb-service >/dev/null 2>&1 || :
+
+
+%postun
+/usr/bin/update-desktop-database &>/dev/null || :
+/usr/bin/update-mime-database %{_datadir}/mime &>/dev/null || :
+
+
+%posttrans
+/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
# Guest additions install the OGL libraries
@@ -401,12 +417,20 @@
%files
%defattr(-,root,root,-)
%{_bindir}/VBox
+%{_bindir}/vboxballoonctrl
+%{_bindir}/VBoxBalloonCtrl
+%{_bindir}/vboxbfe
%{_bindir}/VBoxBFE
+%{_bindir}/vboxheadless
%{_bindir}/VBoxHeadless
+%{_bindir}/vboxmanage
%{_bindir}/VBoxManage
+%{_bindir}/vboxsdl
%{_bindir}/VBoxSDL
%{_bindir}/VBoxTunctl
+%{_bindir}/virtualbox
%{_bindir}/VirtualBox
+%{_bindir}/vboxwebsrv
%dir %{_libdir}/virtualbox
%doc %{_libdir}/virtualbox/*.pdf
%{_libdir}/virtualbox/*.[^p]*
@@ -417,15 +441,18 @@
%{_libdir}/virtualbox/VBoxSVC
%{_libdir}/virtualbox/VBoxTestOGL
%{_libdir}/virtualbox/VBoxXPCOMIPCD
+%{_libdir}/virtualbox/VBoxBalloonCtrl
%{_libdir}/virtualbox/vboxwebsrv
%{_libdir}/virtualbox/webtest
-%{_libdir}/virtualbox/EfiThunk
%attr(4755,root,root) %{_libdir}/virtualbox/VBoxHeadless
%attr(4755,root,root) %{_libdir}/virtualbox/VBoxSDL
+%attr(4755,root,root) %{_libdir}/virtualbox/VBoxBFE
%attr(4755,root,root) %{_libdir}/virtualbox/VBoxNetDHCP
%attr(4755,root,root) %{_libdir}/virtualbox/VBoxNetAdpCtl
%attr(4755,root,root) %{_libdir}/virtualbox/VirtualBox
%{_datadir}/pixmaps/*
+%{_datadir}/icons/*
+%{_datadir}/mime/*
%{_datadir}/applications/*.desktop
%dir %{_sysconfdir}/vbox
%config %{_sysconfdir}/vbox/vbox.cfg
@@ -436,12 +463,13 @@
%files devel
%defattr(0644,root,root,0755)
-%{_datadir}/virtualbox
+%{_libdir}/virtualbox/sdk
%files -n python-%{name}
%defattr(0644,root,root,0755)
%{python_sitelib}/virtualbox
+%{python_sitelib}/vboxapi*
%files guest
@@ -470,6 +498,12 @@
%changelog
+* Wed Sep 21 2011 Lubomir Rintel <lkundrak(a)v3.sk> - 4.1.2-1
+- New release
+- Assign USB devices to vboxusers
+- Add a web service
+- Install MIME types for disk images
+
* Sun Apr 03 2011 Lubomir Rintel <lkundrak(a)v3.sk> - 4.0.4-1
- New release
- Add requires for particular server ABIs
Index: sources
===================================================================
RCS file: /cvs/free/rpms/VirtualBox-OSE/devel/sources,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- sources 4 Apr 2011 06:59:28 -0000 1.28
+++ sources 22 Sep 2011 10:04:38 -0000 1.29
@@ -1 +1 @@
-b4770ca14d1a8cbad9b3eb0e0028ff4b VirtualBox-4.0.4.tar.bz2
+945d2c94c15a4f47280be4b01b67e244 VirtualBox-4.1.2.tar.bz2
--- VirtualBox-OSE-3.2.0-noupdate.patch DELETED ---
--- VirtualBox-OSE-3.2.6-vboxkeyboard.patch DELETED ---
--- VirtualBox-OSE-4.0.0-usblib.patch DELETED ---
--- VirtualBox-OSE-4.0.2-gcc46.patch DELETED ---
--- VirtualBox-OSE-4.0.2-libcxx.patch DELETED ---
13 years, 2 months
rpms/vlc/devel 0001-port-to-FFmpeg-0.8-API.patch,1.1,1.2
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/vlc/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv2636
Modified Files:
0001-port-to-FFmpeg-0.8-API.patch
Log Message:
Fix wrong patch
0001-port-to-FFmpeg-0.8-API.patch:
switcher.c | 42 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
Index: 0001-port-to-FFmpeg-0.8-API.patch
===================================================================
RCS file: /cvs/free/rpms/vlc/devel/0001-port-to-FFmpeg-0.8-API.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- 0001-port-to-FFmpeg-0.8-API.patch 20 Sep 2011 08:53:06 -0000 1.1
+++ 0001-port-to-FFmpeg-0.8-API.patch 20 Sep 2011 09:16:00 -0000 1.2
@@ -1,22 +1,23 @@
-From e2a0e38258a16da56a5d850e179a691839558dcd Mon Sep 17 00:00:00 2001
+From 02d07530a2ef11acee153137fcccfbe124b2b9e6 Mon Sep 17 00:00:00 2001
From: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sun, 4 Sep 2011 23:58:53 +0200
Subject: [PATCH] port to FFmpeg-0.8 API
+Reworked to allow older ffmpeg version
Signed-off-by: Nicolas Chauvet <kwizart(a)gmail.com>
---
modules/stream_out/switcher.c | 41 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/modules/stream_out/switcher.c b/modules/stream_out/switcher.c
-index ca57a28..d96f690 100644
+index ca57a28..0b48a71 100644
--- a/modules/stream_out/switcher.c
+++ b/modules/stream_out/switcher.c
@@ -358,6 +358,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
/* Set CPU capabilities */
unsigned i_cpu = vlc_CPU();
id->ff_enc_c->dsp_mask = 0;
-+#if FF_API_MM_FLAGS
++#if LIBAVCODEC_VERSION_MAJOR < 53
if( !(i_cpu & CPU_CAPABILITY_MMX) )
{
id->ff_enc_c->dsp_mask |= FF_MM_MMX;
@@ -38,6 +39,23 @@
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_3DNOW;
+ }
++ if( !(i_cpu & CPU_CAPABILITY_SSE) )
++ {
++ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE;
++ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE2;
++ }
++#endif
+ id->ff_enc_c->sample_rate = p_fmt->audio.i_rate;
+ id->ff_enc_c->channels = p_fmt->audio.i_channels;
+ id->ff_enc_c->bit_rate = p_fmt->i_bitrate;
+@@ -747,6 +766,7 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id )
+ /* Set CPU capabilities */
+ unsigned i_cpu = vlc_CPU();
+ id->ff_enc_c->dsp_mask = 0;
++#if LIBAVCODEC_VERSION_MAJOR < 53
+ if( !(i_cpu & CPU_CAPABILITY_MMX) )
+ {
+ id->ff_enc_c->dsp_mask |= FF_MM_MMX;
@@ -764,6 +784,25 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id )
id->ff_enc_c->dsp_mask |= FF_MM_SSE;
id->ff_enc_c->dsp_mask |= FF_MM_SSE2;
@@ -61,7 +79,7 @@
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE2;
+ }
+#endif
-
+
id->ff_enc_c->width = p_sys->p_pictures[p_sys->i_cmd-1].format.i_width;
id->ff_enc_c->height = p_sys->p_pictures[p_sys->i_cmd-1].format.i_height;
--
13 years, 2 months
rpms/vlc/devel 0001-port-to-FFmpeg-0.8-API.patch, NONE, 1.1 vlc.spec, 1.128, 1.129
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/vlc/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv31032
Modified Files:
vlc.spec
Added Files:
0001-port-to-FFmpeg-0.8-API.patch
Log Message:
Add patch for FFmpeg-0.8
0001-port-to-FFmpeg-0.8-API.patch:
switcher.c | 35 +++++++++++++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
--- NEW FILE 0001-port-to-FFmpeg-0.8-API.patch ---
>From e2a0e38258a16da56a5d850e179a691839558dcd Mon Sep 17 00:00:00 2001
From: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sun, 4 Sep 2011 23:58:53 +0200
Subject: [PATCH] port to FFmpeg-0.8 API
Signed-off-by: Nicolas Chauvet <kwizart(a)gmail.com>
---
modules/stream_out/switcher.c | 41 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/modules/stream_out/switcher.c b/modules/stream_out/switcher.c
index ca57a28..d96f690 100644
--- a/modules/stream_out/switcher.c
+++ b/modules/stream_out/switcher.c
@@ -358,6 +358,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
/* Set CPU capabilities */
unsigned i_cpu = vlc_CPU();
id->ff_enc_c->dsp_mask = 0;
+#if FF_API_MM_FLAGS
if( !(i_cpu & CPU_CAPABILITY_MMX) )
{
id->ff_enc_c->dsp_mask |= FF_MM_MMX;
@@ -375,7 +376,25 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
id->ff_enc_c->dsp_mask |= FF_MM_SSE;
id->ff_enc_c->dsp_mask |= FF_MM_SSE2;
}
-
+#else
+ if( !(i_cpu & CPU_CAPABILITY_MMX) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_MMX;
+ }
+ if( !(i_cpu & CPU_CAPABILITY_MMXEXT) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_MMX2;
+ }
+ if( !(i_cpu & CPU_CAPABILITY_3DNOW) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_3DNOW;
+ }
@@ -764,6 +784,25 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id )
id->ff_enc_c->dsp_mask |= FF_MM_SSE;
id->ff_enc_c->dsp_mask |= FF_MM_SSE2;
}
+#else
+ if( !(i_cpu & CPU_CAPABILITY_MMX) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_MMX;
+ }
+ if( !(i_cpu & CPU_CAPABILITY_MMXEXT) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_MMX2;
+ }
+ if( !(i_cpu & CPU_CAPABILITY_3DNOW) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_3DNOW;
+ }
+ if( !(i_cpu & CPU_CAPABILITY_SSE) )
+ {
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE;
+ id->ff_enc_c->dsp_mask |= AV_CPU_FLAG_SSE2;
+ }
+#endif
id->ff_enc_c->width = p_sys->p_pictures[p_sys->i_cmd-1].format.i_width;
id->ff_enc_c->height = p_sys->p_pictures[p_sys->i_cmd-1].format.i_height;
--
1.7.4.4
Index: vlc.spec
===================================================================
RCS file: /cvs/free/rpms/vlc/devel/vlc.spec,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -r1.128 -r1.129
--- vlc.spec 19 Sep 2011 22:55:25 -0000 1.128
+++ vlc.spec 20 Sep 2011 08:53:06 -0000 1.129
@@ -39,6 +39,7 @@
Patch4: vlc-1.1.4-tls_path.patch
Patch5: vlc-1.1.8-bugfix.opencv22.patch
Patch6: vlc-1.1-bugfix-20110920.patch
+Patch7: 0001-port-to-FFmpeg-0.8-API.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: desktop-file-utils
@@ -253,6 +254,7 @@
%endif
sed -i.dmo_pic -e 's/fno-PIC/fPIC/' libs/loader/Makefile.in
%patch6 -p1
+%patch7 -p1 -b .ff08
rm modules/access/videodev2.h
ln -sf %{_includedir}/linux/videodev2.h modules/access/videodev2.h
@@ -565,6 +567,7 @@
%changelog
* Tue Sep 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-2
- Update to current bugfix
+- Add patch for FFmpeg-0.8
* Wed Jul 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-1
- Update to 1.1.11
13 years, 2 months
rpms/vlc/F-15 vlc-1.1-bugfix-20110920.patch, NONE, 1.1 vlc.spec, 1.126, 1.127
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/vlc/F-15
In directory se02.es.rpmfusion.net:/tmp/cvs-serv15834
Modified Files:
vlc.spec
Added Files:
vlc-1.1-bugfix-20110920.patch
Log Message:
Update to current bugfix
vlc-1.1-bugfix-20110920.patch:
libs/srtp/Makefile.am | 5
libs/srtp/srtp.c | 43 -----
libs/srtp/srtp.h | 32 ++--
libs/srtp/test-aes.c | 2
modules/access/rtp/rtp.c | 3
modules/access/v4l2.c | 2
modules/audio_output/auhal.c | 32 ++--
modules/audio_output/pulse.c | 294 ++++++++++++++++++++++++++++----------
modules/codec/vorbis.c | 4
modules/control/signals.c | 12 -
modules/demux/avi/avi.c | 21 +-
modules/gui/macosx/about.m | 3
modules/gui/macosx/intf.h | 2
modules/gui/macosx/intf.m | 5
modules/meta_engine/taglib.cpp | 2
modules/misc/audioscrobbler.c | 72 +++------
modules/misc/gnutls.c | 10 -
modules/stream_out/rtp.c | 3
modules/stream_out/smem.c | 7
modules/video_filter/Modules.am | 9 +
modules/video_filter/osdmenu.c | 2
modules/video_output/msw/events.c | 22 ++
modules/video_output/xcb/xvideo.c | 3
src/control/audio.c | 4
src/input/demux.c | 5
25 files changed, 362 insertions(+), 237 deletions(-)
--- NEW FILE vlc-1.1-bugfix-20110920.patch ---
diff --git a/modules/access/rtp/rtp.c b/modules/access/rtp/rtp.c
index e1cd6b1..03f882f 100755
--- a/modules/access/rtp/rtp.c
+++ b/modules/access/rtp/rtp.c
@@ -39,6 +39,8 @@
#include "rtp.h"
#ifdef HAVE_SRTP
# include <srtp.h>
+# include <gcrypt.h>
+# include <vlc_gcrypt.h>
#endif
#define RTP_CACHING_TEXT N_("RTP de-jitter buffer length (msec)")
@@ -276,6 +278,7 @@ static int Open (vlc_object_t *obj)
char *key = var_CreateGetNonEmptyString (demux, "srtp-key");
if (key)
{
+ vlc_gcrypt_init ();
p_sys->srtp = srtp_create (SRTP_ENCR_AES_CM, SRTP_AUTH_HMAC_SHA1, 10,
SRTP_PRF_AES_CM, SRTP_RCC_MODE1);
if (p_sys->srtp == NULL)
diff --git a/modules/access/v4l2.c b/modules/access/v4l2.c
index d29aec6..d0e14db 100644
--- a/modules/access/v4l2.c
+++ b/modules/access/v4l2.c
@@ -792,7 +792,7 @@ static void ParseMRL( demux_sys_t *p_sys, char *psz_path, vlc_object_t *p_obj )
}
if( i == ARRAY_SIZE(psz_standards_list_text) )
- p_sys->i_selected_standard_id = i_standards_list[strtol( psz_parser, &psz_parser, 0 )];
+ p_sys->i_selected_standard_id = strtol( psz_parser, &psz_parser, 0 );
}
else if( !strncmp( psz_parser, "chroma=", strlen( "chroma=" ) ) )
{
diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c
index ab45f0c..6985781 100644
--- a/modules/audio_output/auhal.c
+++ b/modules/audio_output/auhal.c
@@ -632,7 +632,7 @@ static int OpenSPDIF( aout_instance_t * p_aout )
/* Set mixable to false if we are allowed to */
AudioObjectPropertyAddress audioDeviceSupportsMixingAddress = { kAudioDevicePropertySupportsMixing , kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
- b_writeable = AudioObjectHasProperty( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress );
+ err = AudioObjectIsPropertySettable( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, &b_writeable );
err = AudioObjectGetPropertyDataSize( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size );
err = AudioObjectGetPropertyData( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size, &b_mix );
@@ -676,7 +676,7 @@ static int OpenSPDIF( aout_instance_t * p_aout )
for( int i = 0; i < i_streams && p_sys->i_stream_index < 0 ; i++ )
{
/* Find a stream with a cac3 stream */
- AudioStreamBasicDescription *p_format_list = NULL;
+ AudioStreamRangedDescription *p_format_list = NULL;
int i_formats = 0;
bool b_digital = false;
@@ -688,8 +688,8 @@ static int OpenSPDIF( aout_instance_t * p_aout )
continue;
}
- i_formats = i_param_size / sizeof( AudioStreamBasicDescription );
- p_format_list = (AudioStreamBasicDescription *)malloc( i_param_size );
+ i_formats = i_param_size / sizeof( AudioStreamRangedDescription );
+ p_format_list = (AudioStreamRangedDescription *)malloc( i_param_size );
if( p_format_list == NULL )
continue;
@@ -704,8 +704,8 @@ static int OpenSPDIF( aout_instance_t * p_aout )
/* Check if one of the supported formats is a digital format */
for( int j = 0; j < i_formats; j++ )
{
- if( p_format_list[j].mFormatID == 'IAC3' ||
- p_format_list[j].mFormatID == kAudioFormat60958AC3 )
+ if( p_format_list[j].mFormat.mFormatID == 'IAC3' ||
+ p_format_list[j].mFormat.mFormatID == kAudioFormat60958AC3 )
{
b_digital = true;
break;
@@ -737,21 +737,21 @@ static int OpenSPDIF( aout_instance_t * p_aout )
for( int j = 0; j < i_formats; j++ )
{
- if( p_format_list[j].mFormatID == 'IAC3' ||
- p_format_list[j].mFormatID == kAudioFormat60958AC3 )
+ if( p_format_list[j].mFormat.mFormatID == 'IAC3' ||
+ p_format_list[j].mFormat.mFormatID == kAudioFormat60958AC3 )
{
- if( p_format_list[j].mSampleRate == p_aout->output.output.i_rate )
+ if( p_format_list[j].mFormat.mSampleRate == p_aout->output.output.i_rate )
{
i_requested_rate_format = j;
break;
}
- else if( p_format_list[j].mSampleRate == p_sys->sfmt_revert.mSampleRate )
+ else if( p_format_list[j].mFormat.mSampleRate == p_sys->sfmt_revert.mSampleRate )
{
i_current_rate_format = j;
}
else
{
- if( i_backup_rate_format < 0 || p_format_list[j].mSampleRate > p_format_list[i_backup_rate_format].mSampleRate )
+ if( i_backup_rate_format < 0 || p_format_list[j].mFormat.mSampleRate > p_format_list[i_backup_rate_format].mFormat.mSampleRate )
i_backup_rate_format = j;
}
}
@@ -759,10 +759,10 @@ static int OpenSPDIF( aout_instance_t * p_aout )
}
if( i_requested_rate_format >= 0 ) /* We prefer to output at the samplerate of the original audio */
- p_sys->stream_format = p_format_list[i_requested_rate_format];
+ p_sys->stream_format = p_format_list[i_requested_rate_format].mFormat;
else if( i_current_rate_format >= 0 ) /* If not possible, we will try to use the current samplerate of the device */
- p_sys->stream_format = p_format_list[i_current_rate_format];
- else p_sys->stream_format = p_format_list[i_backup_rate_format]; /* And if we have to, any digital format will be just fine (highest rate possible) */
+ p_sys->stream_format = p_format_list[i_current_rate_format].mFormat;
+ else p_sys->stream_format = p_format_list[i_backup_rate_format].mFormat; /* And if we have to, any digital format will be just fine (highest rate possible) */
}
free( p_format_list );
}
@@ -866,7 +866,7 @@ static void Close( vlc_object_t * p_this )
Boolean b_writeable;
/* Revert mixable to true if we are allowed to */
AudioObjectPropertyAddress audioDeviceSupportsMixingAddress = { kAudioDevicePropertySupportsMixing , kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
- b_writeable = AudioObjectHasProperty( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress );
+ err = AudioObjectIsPropertySettable( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, &b_writeable );
err = AudioObjectGetPropertyData( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size, &b_mix );
if( !err && b_writeable )
@@ -1082,7 +1082,7 @@ static int AudioDeviceSupportsDigital( aout_instance_t *p_aout, AudioDeviceID i_
bool b_return = false;
/* Retrieve all the output streams */
- AudioObjectPropertyAddress streamsAddress = { kAudioDevicePropertyStreams, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
+ AudioObjectPropertyAddress streamsAddress = { kAudioDevicePropertyStreams, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
err = AudioObjectGetPropertyDataSize( i_dev_id, &streamsAddress, 0, NULL, &i_param_size );
if( err != noErr )
{
diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index 64de04d..a377f66 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -58,7 +58,9 @@ struct aout_sys_t
pa_stream *stream; /**< PulseAudio playback stream object */
pa_context *context; /**< PulseAudio connection context */
pa_threaded_mainloop *mainloop; /**< PulseAudio event loop */
- //uint32_t byterate; /**< bytes per second */
+ mtime_t pts; /**< Play time of buffer write offset */
+ mtime_t desync; /**< Measured desynchronization */
+ unsigned rate; /**< Current stream sample rate */
};
/* Context helpers */
@@ -93,6 +95,164 @@ static void error(aout_instance_t *aout, const char *msg, pa_context *context)
msg_Err(aout, "%s: %s", msg, pa_strerror(pa_context_errno(context)));
}
+/* Latency management and lip synchronization */
+static mtime_t vlc_pa_get_latency(aout_instance_t *aout,
+ pa_context *ctx, pa_stream *s)
+{
+ pa_usec_t latency;
+ int negative;
+
+ if (pa_stream_get_latency(s, &latency, &negative)) {
+ if (pa_context_errno (ctx) != PA_ERR_NODATA)
+ error(aout, "unknown latency", ctx);
+ return VLC_TS_INVALID;
+ }
+ return negative ? -latency : +latency;
+}
+
+static void stream_reset_sync(pa_stream *s, aout_instance_t *aout)
+{
+ aout_sys_t *sys = aout->output.p_sys;
+ const unsigned rate = aout->output.output.i_rate;
+
+ sys->pts = VLC_TS_INVALID;
+ sys->desync = 0;
+ pa_operation *op = pa_stream_update_sample_rate(s, rate, NULL, NULL);
+ if (unlikely(op == NULL))
+ return;
+ pa_operation_unref(op);
+ sys->rate = rate;
+}
+
+/**
+ * Starts or resumes the playback stream.
+ * Tries start playing back audio samples at the most accurate time
+ * in order to minimize desync and resampling during early playback.
+ * @note PulseAudio lock required.
+ */
+static void stream_resync(aout_instance_t *aout, pa_stream *s)
+{
+ aout_sys_t *sys = aout->output.p_sys;
+ pa_operation *op;
+ mtime_t delta;
+
+ assert (pa_stream_is_corked(s) > 0);
+ assert (sys->pts != VLC_TS_INVALID);
+
+ delta = vlc_pa_get_latency(aout, sys->context, s);
+ if (unlikely(delta == VLC_TS_INVALID))
+ delta = 0; /* screwed */
+
+ delta = (sys->pts - mdate()) - delta;
+
+ /* TODO: adjust prebuf instead of padding? */
+ if (delta > 0) {
+ size_t nb = (delta * sys->rate) / CLOCK_FREQ;
+ size_t size = aout->output.output.i_bytes_per_frame;
+ float *zeroes = calloc (nb, size);
+
+ msg_Dbg(aout, "starting with %zu zeroes (%"PRId64" us)", nb,
+ delta);
+#if 0 /* Fault injector: add delay */
+ pa_stream_write(s, zeroes, nb * size, NULL, 0, PA_SEEK_RELATIVE);
+ pa_stream_write(s, zeroes, nb * size, NULL, 0, PA_SEEK_RELATIVE);
+#endif
+ if (likely(zeroes != NULL))
+ if (pa_stream_write(s, zeroes, nb * size, free, 0,
+ PA_SEEK_RELATIVE) < 0)
+ free(zeroes);
+ } else
+ msg_Warn(aout, "starting late (%"PRId64" us)", delta);
+
+ op = pa_stream_cork(s, 0, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+ op = pa_stream_trigger(s, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+}
+
+/* Values from EBU R37 */
+#define AOUT_EARLY_TOLERANCE 40000
+#define AOUT_LATE_TOLERANCE 60000
+
+static void stream_latency_cb(pa_stream *s, void *userdata)
+{
+ aout_instance_t *aout = userdata;
+ aout_sys_t *sys = aout->output.p_sys;
+ mtime_t delta, change;
+
+ if (pa_stream_is_corked(s))
+ return;
+ if (sys->pts == VLC_TS_INVALID)
+ {
+ msg_Dbg(aout, "missing latency from input");
+ return;
+ }
+
+ /* Compute lip desynchronization */
+ delta = vlc_pa_get_latency(aout, sys->context, s);
+ if (delta == VLC_TS_INVALID)
+ return;
+
+ delta = (sys->pts - mdate()) - delta;
+ change = delta - sys->desync;
+ sys->desync = delta;
+ //msg_Dbg(aout, "desync: %+"PRId64" us (variation: %+"PRId64" us)",
+ // delta, change);
+
+ const unsigned inrate = aout->output.output.i_rate;
+ unsigned outrate = sys->rate;
+ bool sync = false;
+
+ if (delta < -AOUT_LATE_TOLERANCE)
+ msg_Warn(aout, "too late by %"PRId64" us", -delta);
+ else if (delta > +AOUT_EARLY_TOLERANCE)
+ msg_Warn(aout, "too early by %"PRId64" us", delta);
+ else if (outrate == inrate)
+ return; /* In sync, do not add unnecessary disturbance! */
+ else
+ sync = true;
+
+ /* Compute playback sample rate */
+ /* This is empirical (especially the shift values).
+ * Feel free to define something smarter. */
+ int adj = sync ? (outrate - inrate)
+ : outrate * ((delta >> 4) + change) / (CLOCK_FREQ << 2);
+ /* This avoids too quick rate variation. It sounds really bad and
+ * causes unstability (e.g. oscillation around the correct rate). */
+ int limit = inrate >> 10;
+ /* However, to improve stability and try to converge, closing to the
+ * nominal rate is favored over drifting from it. */
+ if ((adj > 0) == (sys->rate > inrate))
+ limit *= 2;
+ if (adj > +limit)
+ adj = +limit;
+ if (adj < -limit)
+ adj = -limit;
+ outrate -= adj;
+
+ /* This keeps the effective rate within specified range
+ * (+/-AOUT_MAX_RESAMPLING% - see <vlc_aout.h>) of the nominal rate. */
+ limit = inrate * AOUT_MAX_RESAMPLING / 100;
+ if (outrate > inrate + limit)
+ outrate = inrate + limit;
+ if (outrate < inrate - limit)
+ outrate = inrate - limit;
+
+ /* Apply adjusted sample rate */
+ if (outrate == sys->rate)
+ return;
+ pa_operation *op = pa_stream_update_sample_rate(s, outrate, NULL, NULL);
+ if (unlikely(op == NULL)) {
+ error(aout, "cannot change sample rate", sys->context);
+ return;
+ }
+ pa_operation_unref(op);
+ msg_Dbg(aout, "changed sample rate to %u Hz",outrate);
+ sys->rate = outrate;
+}
+
/* Stream helpers */
static void stream_state_cb(pa_stream *s, void *userdata)
{
@@ -106,6 +266,7 @@ static void stream_state_cb(pa_stream *s, void *userdata)
default:
break;
}
+ (void) userdata;
}
static void stream_moved_cb(pa_stream *s, void *userdata)
@@ -138,15 +299,19 @@ static void stream_suspended_cb(pa_stream *s, void *userdata)
aout_instance_t *aout = userdata;
msg_Dbg(aout, "suspended");
- (void) s;
+ stream_reset_sync(s, aout);
}
static void stream_underflow_cb(pa_stream *s, void *userdata)
{
aout_instance_t *aout = userdata;
+ pa_operation *op;
- msg_Dbg(aout, "underflow");
- (void) s;
+ msg_Warn(aout, "underflow");
+ op = pa_stream_cork(s, 1, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+ stream_reset_sync(s, aout);
}
static int stream_wait(pa_threaded_mainloop *mainloop, pa_stream *stream)
@@ -193,6 +358,17 @@ static void Play(aout_instance_t *aout)
aout_sys_t *sys = aout->output.p_sys;
pa_stream *s = sys->stream;
+ /* This function is called exactly once per block in the output FIFO. */
+ block_t *block = aout_FifoPop(aout, &aout->output.fifo);
+ assert (block != NULL);
+
+ const void *ptr = data_convert(&block);
+ if (unlikely(ptr == NULL))
+ return;
+
+ size_t len = block->i_buffer;
+ mtime_t pts = block->i_pts + block->i_length;
+
/* Note: The core already holds the output FIFO lock at this point.
* Therefore we must not under any circumstances (try to) acquire the
* output FIFO lock while the PulseAudio threaded main loop lock is held
@@ -200,71 +376,26 @@ static void Play(aout_instance_t *aout)
* will take place, and sooner or later a deadlock. */
pa_threaded_mainloop_lock(sys->mainloop);
- if (pa_stream_is_corked(sys->stream) > 0) {
- pa_operation *op = pa_stream_cork(s, 0, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
- msg_Dbg(aout, "uncorking");
- }
-
-#if 0
- /* This function should be called by the LibVLC core a header of time,
- * but not more than AOUT_MAX_PREPARE. The PulseAudio latency should be
- * shorter than that (though it might not be the case with some evil piece
- * of audio output hardware). So we may need to trigger playback early,
- * (that is to say, short cut the PulseAudio prebuffering). Otherwise,
- * audio and video may be out of synchronization. */
- pa_usec_t latency;
- int negative;
- if (pa_stream_get_latency(s, &latency, &negative) < 0) {
- /* Especially at start of stream, latency may not be known (yet). */
- if (pa_context_errno(sys->context) != PA_ERR_NODATA)
- error(aout, "cannot determine latency", sys->context);
- } else {
- mtime_t gap = aout_FifoFirstDate(aout, &aout->output.fifo) - mdate()
- - latency;
+ sys->pts = pts;
+ if (pa_stream_is_corked(s) > 0)
+ stream_resync(aout, s);
- if (gap > AOUT_PTS_TOLERANCE)
- msg_Dbg(aout, "buffer too early (%"PRId64" us)", gap);
- else if (gap < -AOUT_PTS_TOLERANCE)
- msg_Err(aout, "buffer too late (%"PRId64" us)", -gap);
- }
-#endif
#if 0 /* Fault injector to test underrun recovery */
- static unsigned u = 0;
- if ((++u % 500) == 0) {
+ static volatile unsigned u = 0;
+ if ((++u % 1000) == 0) {
msg_Err(aout, "fault injection");
- msleep(CLOCK_FREQ*2);
+ pa_operation_unref(pa_stream_flush(s, NULL, NULL));
}
#endif
- /* This function is called exactly once per block in the output FIFO, so
- * this for-loop is not necessary.
- * If this function is changed to not always dequeue blocks, be sure to
- * limit the queue size to a reasonable limit to avoid huge leaks. */
- for (;;) {
- block_t *block = aout_FifoPop(aout, &aout->output.fifo);
- if (block == NULL)
- break;
-
- const void *ptr = data_convert(&block);
- if (unlikely(ptr == NULL))
- break;
-
- size_t len = block->i_buffer;
- //mtime_t pts = block->i_pts, duration = block->i_length;
-
- if (pa_stream_write(s, ptr, len, data_free, 0, PA_SEEK_RELATIVE) < 0)
- {
- error(aout, "cannot write", sys->context);
- block_Release(block);
- }
+ if (pa_stream_write(s, ptr, len, data_free, 0, PA_SEEK_RELATIVE) < 0) {
+ error(aout, "cannot write", sys->context);
+ block_Release(block);
}
pa_threaded_mainloop_unlock(sys->mainloop);
}
-
/*****************************************************************************
* Open: open the audio device
*****************************************************************************/
@@ -377,21 +508,27 @@ static int Open(vlc_object_t *obj)
msg_Err(aout, "unsupported channel map");
return VLC_EGENERIC;
} else {
- const char *name = pa_channel_map_to_pretty_name(&map);
+ const char *name = pa_channel_map_to_name(&map);
msg_Dbg(aout, "using %s channel map", (name != NULL) ? name : "?");
}
- const pa_stream_flags_t flags = PA_STREAM_INTERPOLATE_TIMING
+ /* Stream parameters */
+ const pa_stream_flags_t flags = PA_STREAM_START_CORKED
+ //| PA_STREAM_INTERPOLATE_TIMING
| PA_STREAM_AUTO_TIMING_UPDATE
- | PA_STREAM_ADJUST_LATENCY
- | PA_STREAM_START_CORKED;
+ | PA_STREAM_VARIABLE_RATE;
const uint32_t byterate = pa_bytes_per_second(&ss);
struct pa_buffer_attr attr;
- /* no point in larger buffers on PA side than VLC */
attr.maxlength = -1;
- attr.tlength = byterate * AOUT_MAX_ADVANCE_TIME / CLOCK_FREQ;
- attr.prebuf = byterate * AOUT_MAX_PREPARE_TIME / CLOCK_FREQ;
+ /* PulseAudio assumes that tlength bytes are available in the buffer. Thus
+ * we need to be conservative and set the minimum value that the VLC
+ * audio decoder thread warrants. Otherwise, PulseAudio buffers will
+ * underrun on hardware with large buffers. VLC keeps at least
+ * AOUT_MIN_PREPARE and at most AOUT_MAX_PREPARE worth of audio buffers.
+ * TODO? tlength could be adaptively increased to reduce wakeups. */
+ attr.tlength = byterate * AOUT_MIN_PREPARE_TIME / CLOCK_FREQ;
+ attr.prebuf = 0; /* trigger manually */
attr.minreq = -1;
attr.fragsize = 0; /* not used for output */
@@ -427,6 +564,9 @@ static int Open(vlc_object_t *obj)
if (unlikely(ctx == NULL))
goto fail;
sys->context = ctx;
+ sys->pts = VLC_TS_INVALID;
+ sys->desync = 0;
+ sys->rate = ss.rate;
pa_context_set_state_callback(ctx, context_state_cb, mainloop);
if (pa_context_connect(ctx, NULL, 0, NULL) < 0
@@ -443,6 +583,7 @@ static int Open(vlc_object_t *obj)
}
sys->stream = s;
pa_stream_set_state_callback(s, stream_state_cb, mainloop);
+ pa_stream_set_latency_update_callback(s, stream_latency_cb, aout);
pa_stream_set_moved_callback(s, stream_moved_cb, aout);
pa_stream_set_overflow_callback(s, stream_overflow_cb, aout);
pa_stream_set_started_callback(s, stream_started_cb, aout);
@@ -487,19 +628,24 @@ static void Close (vlc_object_t *obj)
pa_threaded_mainloop_lock(mainloop);
if (s != NULL) {
- pa_operation *op;
-
- op = pa_stream_flush(s, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
- op = pa_stream_drain(s, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
pa_stream_disconnect(s);
+
+ /* Clear all callbacks */
+ pa_stream_set_state_callback(s, NULL, NULL);
+ pa_stream_set_latency_update_callback(s, NULL, aout);
+ pa_stream_set_moved_callback(s, NULL, aout);
+ pa_stream_set_overflow_callback(s, NULL, aout);
+ pa_stream_set_started_callback(s, NULL, aout);
+ pa_stream_set_suspended_callback(s, NULL, aout);
+ pa_stream_set_underflow_callback(s, NULL, aout);
+
pa_stream_unref(s);
}
- if (ctx != NULL)
+ if (ctx != NULL) {
+ pa_context_disconnect(ctx);
+ pa_context_set_state_callback (ctx, NULL, NULL);
pa_context_unref(ctx);
+ }
pa_threaded_mainloop_unlock(mainloop);
pa_threaded_mainloop_free(mainloop);
free(sys);
diff --git a/modules/codec/vorbis.c b/modules/codec/vorbis.c
index 8ef775f..d8a0cd5 100644
--- a/modules/codec/vorbis.c
+++ b/modules/codec/vorbis.c
@@ -570,6 +570,10 @@ static void ParseVorbisComments( decoder_t *p_dec )
*psz_value = '\0';
psz_value++;
+ /* Don't add empty values */
+ if( *psz_value == '\0' )
+ break;
+
if( !p_dec->p_description )
p_dec->p_description = vlc_meta_New();
if( p_dec->p_description )
diff --git a/modules/control/signals.c b/modules/control/signals.c
index a1e4215..b183718 100644
--- a/modules/control/signals.c
+++ b/modules/control/signals.c
@@ -130,16 +130,16 @@ static void *SigThread (void *data)
sigaction (signum, NULL, &act);
if ((act.sa_flags & SA_SIGINFO) || (act.sa_handler != SIG_DFL))
{
- msg_Err (obj, "signal %d overridden (%p)", signum,
- act.sa_handler);
+ msg_Warn (obj, "signal %d overridden (%p)", signum,
+ act.sa_handler);
#ifdef __GLIBC__
Dl_info info;
if (dladdr (act.sa_handler, &info))
- msg_Err (obj, " %s(%s)[%p]",
- info.dli_fname ? info.dli_fname : "?",
- info.dli_sname ? info.dli_sname : "?",
- info.dli_saddr);
+ msg_Warn (obj, " %s(%s)[%p]",
+ info.dli_fname ? info.dli_fname : "?",
+ info.dli_sname ? info.dli_sname : "?",
+ info.dli_saddr);
#endif
if (!(act.sa_flags & SA_SIGINFO) && (act.sa_handler != SIG_IGN))
act.sa_handler (signum);
diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index ebb8f56..20ae0e7 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -1280,15 +1280,16 @@ static int Seek( demux_t *p_demux, mtime_t i_date, int i_percent )
{
demux_sys_t *p_sys = p_demux->p_sys;
- unsigned int i_stream;
msg_Dbg( p_demux, "seek requested: %"PRId64" seconds %d%%",
i_date / 1000000, i_percent );
if( p_sys->b_seekable )
{
+ unsigned i_stream;
+
if( !p_sys->i_length )
{
- avi_track_t *p_stream;
+ avi_track_t *p_stream = NULL;
int64_t i_pos;
/* use i_percent to create a true i_date */
@@ -1304,17 +1305,19 @@ static int Seek( demux_t *p_demux, mtime_t i_date, int i_percent )
/* try to find chunk that is at i_percent or the file */
i_pos = __MAX( i_percent * stream_Size( p_demux->s ) / 100,
p_sys->i_movi_begin );
- /* search first selected stream (and prefer non eof ones) */
- for( i_stream = 0, p_stream = NULL;
- i_stream < p_sys->i_track; i_stream++ )
+ /* search first selected stream (and prefer non-EOF ones) */
+ for( unsigned i = 0; i < p_sys->i_track; i++ )
{
- if( !p_stream || p_stream->b_eof )
- p_stream = p_sys->track[i_stream];
+ avi_track_t *p_track = p_sys->track[i];
+ if( !p_track->b_activated )
+ continue;
- if( p_stream->b_activated && !p_stream->b_eof )
+ p_stream = p_track;
+ i_stream = i;
+ if( !p_track->b_eof )
break;
}
- if( !p_stream || !p_stream->b_activated )
+ if( p_stream == NULL )
{
msg_Warn( p_demux, "cannot find any selected stream" );
return VLC_EGENERIC;
diff --git a/modules/gui/macosx/about.m b/modules/gui/macosx/about.m
index e0ebf78..551d19b 100644
--- a/modules/gui/macosx/about.m
+++ b/modules/gui/macosx/about.m
@@ -100,8 +100,7 @@ static VLAboutBox *_o_sharedInstance = nil;
#else
compiler = [NSString stringWithFormat:@"gcc %s", __VERSION__];
#endif
- [o_revision_field setStringValue:
- [NSString stringWithFormat: _NS("Compiled by %s with %@"), VLC_CompileBy(), compiler]];
+ [o_revision_field setStringValue: [NSString stringWithFormat: _NS("Compiled by %@ with %@"), [NSString stringWithUTF8String:VLC_CompileBy()], compiler]];
/* Setup the nameversion field */
[o_name_version_field setStringValue: [NSString stringWithFormat:@"Version %s (%s)", VLC_Version(), PLATFORM]];
diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index 7e14eea..e7e0511 100644
--- a/modules/gui/macosx/intf.h
+++ b/modules/gui/macosx/intf.h
@@ -104,7 +104,7 @@ struct intf_sys_t
id o_bookmarks; /* VLCBookmarks */
id o_embedded_list; /* VLCEmbeddedList*/
id o_coredialogs; /* VLCCoreDialogProvider */
- VLCInformation * o_info; /* VLCInformation */
+ id o_info; /* VLCInfo */
id o_eyetv; /* VLCEyeTVController */
BOOL nib_main_loaded; /* main nibfile */
BOOL nib_open_loaded; /* open nibfile */
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index 535e9b9..bdcfdcb 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -2589,9 +2589,8 @@ end:
o_attr = [NSDictionary dictionaryWithObject: pp_color[i_type]
forKey: NSForegroundColorAttributeName];
- o_msg = [[[o_notification userInfo] objectForKey: @"Message"] stringByAppendingString: @"\n"];
- o_msg_color = [[NSAttributedString alloc]
- initWithString: o_msg attributes: o_attr];
+ o_msg = [NSString stringWithFormat:@"%@\n", [[o_notification userInfo] objectForKey: @"Message"]];
+ o_msg_color = [[NSAttributedString alloc] initWithString: o_msg attributes: o_attr];
[o_msg_arr addObject: [o_msg_color autorelease]];
b_msg_arr_changed = YES;
diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
index 6bc2926..6a0567a 100644
--- a/modules/meta_engine/taglib.cpp
+++ b/modules/meta_engine/taglib.cpp
@@ -74,6 +74,8 @@
# define TAGLIB_HAVE_AIFF_WAV_H
# include <aifffile.h>
# include <wavfile.h>
+#else
+# include <id3v2tag.h>
#endif
#if TAGLIB_VERSION >= VERSION_INT(1,6,1) && defined(TAGLIB_WITH_MP4)
diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c
index 9b18f1d..95780ce 100644
--- a/modules/misc/audioscrobbler.c
+++ b/modules/misc/audioscrobbler.c
@@ -122,7 +122,7 @@ static int PlayingChange ( vlc_object_t *, const char *, vlc_value_t,
static void AddToQueue ( intf_thread_t * );
static int Handshake ( intf_thread_t * );
-static int ReadMetaData ( intf_thread_t * );
+static void ReadMetaData ( intf_thread_t * );
static void DeleteSong ( audioscrobbler_song_t* );
static int ParseURL ( char *, char **, char **, int * );
static void HandleInterval ( mtime_t *, unsigned int * );
@@ -927,7 +927,7 @@ static void DeleteSong( audioscrobbler_song_t* p_song )
/*****************************************************************************
* ReadMetaData : Read meta data when parsed by vlc
*****************************************************************************/
-static int ReadMetaData( intf_thread_t *p_this )
+static void ReadMetaData( intf_thread_t *p_this )
{
input_thread_t *p_input;
input_item_t *p_item;
@@ -936,81 +936,65 @@ static int ReadMetaData( intf_thread_t *p_this )
p_input = playlist_CurrentInput( pl_Get( p_this ) );
if( !p_input )
- return( VLC_SUCCESS );
+ return;
p_item = input_GetItem( p_input );
if( !p_item )
- return VLC_SUCCESS;
-
- char *psz_meta;
-#define ALLOC_ITEM_META( a, b ) \
- psz_meta = input_item_Get##b( p_item ); \
- if( psz_meta && *psz_meta ) \
- { \
- a = encode_URI_component( psz_meta ); \
- if( !a ) \
- { \
- vlc_mutex_unlock( &p_sys->lock ); \
- vlc_object_release( p_input ); \
- free( psz_meta ); \
- return VLC_ENOMEM; \
- } \
+ {
+ vlc_object_release( p_input );
+ return;
}
+#define ALLOC_ITEM_META( a, b ) do { \
+ char *psz_meta = input_item_Get##b( p_item ); \
+ if( psz_meta && *psz_meta ) \
+ a = encode_URI_component( psz_meta ); \
+ free( psz_meta ); \
+ } while(0)
+
vlc_mutex_lock( &p_sys->lock );
p_sys->b_meta_read = true;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_a, Artist )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_a, Artist );
+ if( !p_sys->p_current_song.psz_a )
{
- vlc_mutex_unlock( &p_sys->lock );
msg_Dbg( p_this, "No artist.." );
- vlc_object_release( p_input );
- free( psz_meta );
- return VLC_EGENERIC;
+ DeleteSong( &p_sys->p_current_song );
+ goto end;
}
- free( psz_meta );
- ALLOC_ITEM_META( p_sys->p_current_song.psz_t, Title )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_t, Title );
+ if( !p_sys->p_current_song.psz_t )
{
- vlc_mutex_unlock( &p_sys->lock );
msg_Dbg( p_this, "No track name.." );
- vlc_object_release( p_input );
- free( p_sys->p_current_song.psz_a );
- free( psz_meta );
- return VLC_EGENERIC;
+ DeleteSong( &p_sys->p_current_song );
+ goto end;
}
- free( psz_meta );
/* Now we have read the mandatory meta data, so we can submit that info */
p_sys->b_submit = true;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_b, Album )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_b, Album );
+ if( !p_sys->p_current_song.psz_b )
p_sys->p_current_song.psz_b = calloc( 1, 1 );
- free( psz_meta );
- ALLOC_ITEM_META( p_sys->p_current_song.psz_m, TrackID )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_m, TrackID );
+ if( !p_sys->p_current_song.psz_m )
p_sys->p_current_song.psz_m = calloc( 1, 1 );
- free( psz_meta );
p_sys->p_current_song.i_l = input_item_GetDuration( p_item ) / 1000000;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_n, TrackNum )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_n, TrackNum );
+ if( !p_sys->p_current_song.psz_n )
p_sys->p_current_song.psz_n = calloc( 1, 1 );
- free( psz_meta );
#undef ALLOC_ITEM_META
msg_Dbg( p_this, "Meta data registered" );
+end:
vlc_mutex_unlock( &p_sys->lock );
vlc_object_release( p_input );
- return VLC_SUCCESS;
-
}
static void HandleInterval( mtime_t *next, unsigned int *i_interval )
diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c
index 71876b5..328e019 100644
--- a/modules/misc/gnutls.c
+++ b/modules/misc/gnutls.c
@@ -130,7 +130,7 @@ static int gnutls_Init (vlc_object_t *p_this)
goto error;
}
- const char *psz_version = gnutls_check_version ("1.3.3");
+ const char *psz_version = gnutls_check_version ("1.7.4");
if (psz_version == NULL)
{
msg_Err (p_this, "unsupported GnuTLS version");
@@ -356,8 +356,8 @@ gnutls_HandshakeAndValidate( tls_session_t *session )
goto error;
}
- assert( p_sys->psz_hostname != NULL );
- if ( !gnutls_x509_crt_check_hostname( cert, p_sys->psz_hostname ) )
+ if( p_sys->psz_hostname != NULL
+ && !gnutls_x509_crt_check_hostname( cert, p_sys->psz_hostname ) )
{
msg_Err( session, "Certificate does not match \"%s\"",
p_sys->psz_hostname );
@@ -731,7 +731,7 @@ static int OpenClient (vlc_object_t *obj)
char *servername = var_GetNonEmptyString (p_session, "tls-server-name");
if (servername == NULL )
- msg_Err (p_session, "server name missing for TLS session");
+ abort ();
else
gnutls_server_name_set (p_sys->session.session, GNUTLS_NAME_DNS,
servername, strlen (servername));
@@ -1046,7 +1046,7 @@ gnutls_ServerAddCRL( tls_server_t *p_server, const char *psz_crl_path )
(p_server->p_sys))->x509_cred,
psz_local_path,
GNUTLS_X509_FMT_PEM );
- LocaleFree( psz_crl_path );
+ LocaleFree( psz_local_path );
if( val < 0 )
{
msg_Err( p_server, "cannot add CRL (%s): %s", psz_crl_path,
diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c
index e6a247a..954a3c1 100644
--- a/modules/stream_out/rtp.c
+++ b/modules/stream_out/rtp.c
@@ -42,6 +42,8 @@
#include <vlc_rand.h>
#ifdef HAVE_SRTP
# include <srtp.h>
+# include <gcrypt.h>
+# include <vlc_gcrypt.h>
#endif
#include "rtp.h"
@@ -1006,6 +1008,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
char *key = var_CreateGetNonEmptyString (p_stream, SOUT_CFG_PREFIX"key");
if (key)
{
+ vlc_gcrypt_init ();
id->srtp = srtp_create (SRTP_ENCR_AES_CM, SRTP_AUTH_HMAC_SHA1, 10,
SRTP_PRF_AES_CM, SRTP_RCC_MODE1);
if (id->srtp == NULL)
diff --git a/modules/stream_out/smem.c b/modules/stream_out/smem.c
index 784c31b..59f27cf 100644
--- a/modules/stream_out/smem.c
+++ b/modules/stream_out/smem.c
@@ -369,6 +369,13 @@ static int SendAudio( sout_stream_t *p_stream, sout_stream_id_t *id,
int i_samples = 0;
i_size = p_buffer->i_buffer;
+ if (id->format->audio.i_channels <= 0)
+ {
+ msg_Warn( p_stream, "No buffer given!" );
+ block_ChainRelease( p_buffer );
+ return VLC_EGENERIC;
+ }
+
i_samples = i_size / ( ( id->format->audio.i_bitspersample / 8 ) * id->format->audio.i_channels );
/* Calling the prerender callback to get user buffer */
p_sys->pf_audio_prerender_callback( id->p_data, &p_pcm_buffer, i_size );
diff --git a/modules/video_filter/Modules.am b/modules/video_filter/Modules.am
index c07f263..afa6330 100644
--- a/modules/video_filter/Modules.am
+++ b/modules/video_filter/Modules.am
@@ -1,4 +1,5 @@
SUBDIRS = dynamicoverlay
+
SOURCES_mosaic = mosaic.c mosaic.h
SOURCES_transform = transform.c
SOURCES_invert = invert.c
@@ -17,7 +18,13 @@ SOURCES_marq = marq.c
SOURCES_rss = rss.c
SOURCES_motiondetect = motiondetect.c
SOURCES_rv32 = rv32.c
-SOURCES_osdmenu = osdmenu.c
+
+libosdmenu_plugin_la_SOURCES = osdmenu.c
+libosdmenu_plugin_la_CFLAGS = $(AM_CFLAGS) -DPKGDATADIR=\"$(vlcdatadir)\"
+libosdmenu_plugin_la_LIBADD = $(AM_LIBADD)
+libosdmenu_plugin_la_DEPENDENCIES =
+EXTRA_LTLIBRARIES += libosdmenu_plugin.la
+
SOURCES_remoteosd = remoteosd.c remoteosd_rfbproto.h
SOURCES_magnify = magnify.c
SOURCES_wave = wave.c
diff --git a/modules/video_filter/osdmenu.c b/modules/video_filter/osdmenu.c
index 377f740..87416bf 100644
--- a/modules/video_filter/osdmenu.c
+++ b/modules/video_filter/osdmenu.c
@@ -105,7 +105,7 @@ static int MouseEvent( vlc_object_t *, char const *,
#if defined( WIN32 ) || defined( UNDER_CE )
#define OSD_DEFAULT_CFG "osdmenu/default.cfg"
#else
-#define OSD_DEFAULT_CFG "share/osdmenu/default.cfg"
+#define OSD_DEFAULT_CFG PKGDATADIR"/osdmenu/default.cfg"
#endif
#define OSD_UPDATE_MIN 0
diff --git a/modules/video_output/msw/events.c b/modules/video_output/msw/events.c
index d2d5e26..3a40829 100644
--- a/modules/video_output/msw/events.c
+++ b/modules/video_output/msw/events.c
@@ -122,6 +122,8 @@ struct event_thread_t
video_format_t source;
vout_display_place_t place;
+ HICON vlc_icon;
+
bool has_moved;
};
@@ -498,7 +500,6 @@ static int DirectXCreateWindow( event_thread_t *p_event )
HMENU hMenu;
RECT rect_window;
WNDCLASS wc; /* window class components */
- HICON vlc_icon;
char vlc_path[MAX_PATH+1];
int i_style, i_stylex;
@@ -537,11 +538,11 @@ static int DirectXCreateWindow( event_thread_t *p_event )
#endif
/* Get the Icon from the main app */
- vlc_icon = NULL;
+ p_event->vlc_icon = NULL;
#ifndef UNDER_CE
if( GetModuleFileName( NULL, vlc_path, MAX_PATH ) )
{
- vlc_icon = ExtractIcon( hInstance, vlc_path, 0 );
+ p_event->vlc_icon = ExtractIcon( hInstance, vlc_path, 0 );
}
#endif
@@ -551,7 +552,7 @@ static int DirectXCreateWindow( event_thread_t *p_event )
wc.cbClsExtra = 0; /* no extra class data */
wc.cbWndExtra = 0; /* no extra window data */
wc.hInstance = hInstance; /* instance */
- wc.hIcon = vlc_icon; /* load the vlc big icon */
+ wc.hIcon = p_event->vlc_icon; /* load the vlc big icon */
wc.hCursor = p_event->is_cursor_hidden ? p_event->cursor_empty :
p_event->cursor_arrow;
wc.hbrBackground = GetStockObject(BLACK_BRUSH); /* background color */
@@ -561,8 +562,8 @@ static int DirectXCreateWindow( event_thread_t *p_event )
/* Register the window class */
if( !RegisterClass(&wc) )
{
- if( vlc_icon )
- DestroyIcon( vlc_icon );
+ if( p_event->vlc_icon )
+ DestroyIcon( p_event->vlc_icon );
msg_Err( vd, "DirectXCreateWindow RegisterClass FAILED (err=%lu)", GetLastError() );
return VLC_EGENERIC;
@@ -607,6 +608,12 @@ static int DirectXCreateWindow( event_thread_t *p_event )
{
i_style = WS_VISIBLE|WS_CLIPCHILDREN|WS_CHILD;
i_stylex = 0;
+
+ /* allow user to regain control over input events if requested */
+ bool b_mouse_support = var_InheritBool( vd, "mouse-events" );
+ bool b_key_support = var_InheritBool( vd, "keyboard-events" );
+ if( !b_mouse_support && !b_key_support )
+ i_style |= WS_DISABLED;
}
p_event->i_window_style = i_style;
@@ -711,6 +718,9 @@ static void DirectXCloseWindow( event_thread_t *p_event )
vout_display_DeleteWindow( vd, p_event->parent_window );
p_event->hwnd = NULL;
+ if( p_event->vlc_icon )
+ DestroyIcon( p_event->vlc_icon );
+
HINSTANCE hInstance = GetModuleHandle(NULL);
UnregisterClass( p_event->class_video, hInstance );
UnregisterClass( p_event->class_main, hInstance );
diff --git a/modules/video_output/xcb/xvideo.c b/modules/video_output/xcb/xvideo.c
index 356f3c5..d899a17 100644
--- a/modules/video_output/xcb/xvideo.c
+++ b/modules/video_output/xcb/xvideo.c
@@ -297,10 +297,11 @@ FindFormat (vout_display_t *vd,
static int Open (vlc_object_t *obj)
{
vout_display_t *vd = (vout_display_t *)obj;
- vout_display_sys_t *p_sys = malloc (sizeof (*p_sys));
+ vout_display_sys_t *p_sys;
if (!var_CreateGetBool (obj, "overlay"))
return VLC_EGENERIC;
+ p_sys = malloc (sizeof (*p_sys));
if (p_sys == NULL)
return VLC_ENOMEM;
diff --git a/src/control/audio.c b/src/control/audio.c
index edde5b7..90333a8 100644
--- a/src/control/audio.c
+++ b/src/control/audio.c
@@ -266,9 +266,9 @@ void libvlc_audio_output_device_set( libvlc_media_player_t *mp,
return;
if( asprintf( &psz_config_name, "%s-audio-device", psz_audio_output ) == -1 )
return;
- if( !var_Type( mp, psz_audio_output ) )
+ if( !var_Type( mp, psz_config_name ) )
/* Don't recreate the same variable over and over and over... */
- var_Create( mp, psz_audio_output, VLC_VAR_STRING );
+ var_Create( mp, psz_config_name, VLC_VAR_STRING );
var_SetString( mp, psz_config_name, psz_device_id );
free( psz_config_name );
}
diff --git a/src/input/demux.c b/src/input/demux.c
index 981799f..ab01a13 100644
--- a/src/input/demux.c
+++ b/src/input/demux.c
@@ -162,8 +162,9 @@ demux_t *__demux_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
/* ID3/APE tags will mess-up demuxer probing so we skip it here.
* ID3/APE parsers will called later on in the demuxer to access the
* skipped info. */
- if( !SkipID3Tag( p_demux ) )
- SkipAPETag( p_demux );
+ while (SkipID3Tag( p_demux ))
+ ;
+ SkipAPETag( p_demux );
p_demux->p_module =
module_need( p_demux, "demux", psz_module,
diff --git a/libs/srtp/Makefile.am b/libs/srtp/Makefile.am
index 8b7522b..b90bed1 100644
--- a/libs/srtp/Makefile.am
+++ b/libs/srtp/Makefile.am
@@ -32,11 +32,6 @@ srtp_LDADD = libvlc_srtp.la
test_recv_LDADD = libvlc_srtp.la
test_aes_LDADD = @GCRYPT_LIBS@
-if !HAVE_WIN32
-libvlc_srtp_la_LIBADD += -lpthread
-test_aes_LDADD += -lpthread
-endif
-
lcov-run:
rm -Rf *.gcda lcov
$(MAKE) $(AM_MAKEFLAGS) check
diff --git a/libs/srtp/srtp.c b/libs/srtp/srtp.c
index f2f2c95..766834c 100644
--- a/libs/srtp/srtp.c
+++ b/libs/srtp/srtp.c
@@ -43,8 +43,6 @@
# include <winsock2.h>
#else
# include <netinet/in.h>
-# include <pthread.h>
-GCRY_THREAD_OPTION_PTHREAD_IMPL;
#endif
#define debug( ... ) (void)0
@@ -86,41 +84,6 @@ static inline unsigned rcc_mode (const srtp_session_t *s)
return (s->flags >> 4) & 3;
}
-static bool libgcrypt_usable = false;
-
-static void initonce_libgcrypt (void)
-{
-#ifndef WIN32
- gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
-#endif
-
- if ((gcry_check_version ("1.1.94") == NULL)
- || gcry_control (GCRYCTL_DISABLE_SECMEM, 0)
- || gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0))
- return;
-
- libgcrypt_usable = true;
-}
-
-static int init_libgcrypt (void)
-{
- int retval;
-#ifndef WIN32
- static pthread_once_t once = PTHREAD_ONCE_INIT;
-
- pthread_once (&once, initonce_libgcrypt);
-#else
-# warning FIXME: This is not thread-safe.
- if (!libgcrypt_usable)
- initonce_libgcrypt ();
-#endif
-
- retval = libgcrypt_usable ? 0 : -1;
-
- return retval;
-
-}
-
static void proto_destroy (srtp_proto_t *p)
{
@@ -170,7 +133,7 @@ static int proto_create (srtp_proto_t *p, int gcipher, int gmd)
srtp_session_t *
srtp_create (int encr, int auth, unsigned tag_len, int prf, unsigned flags)
{
- if ((flags & ~SRTP_FLAGS_MASK) || init_libgcrypt ())
+ if ((flags & ~SRTP_FLAGS_MASK))
return NULL;
int cipher, md;
@@ -833,7 +796,7 @@ srtcp_send (srtp_session_t *s, uint8_t *buf, size_t *lenp, size_t bufsize)
len += 4; /* Digests SRTCP index too */
- const uint8_t *tag = rtcp_digest (s->rtp.mac, buf, len);
+ const uint8_t *tag = rtcp_digest (s->rtcp.mac, buf, len);
memcpy (buf + len, tag, s->tag_len);
*lenp = len + s->tag_len;
return 0;
@@ -861,7 +824,7 @@ srtcp_recv (srtp_session_t *s, uint8_t *buf, size_t *lenp)
return EINVAL;
len -= s->tag_len;
- const uint8_t *tag = rtcp_digest (s->rtp.mac, buf, len);
+ const uint8_t *tag = rtcp_digest (s->rtcp.mac, buf, len);
if (memcmp (buf + len, tag, s->tag_len))
return EACCES;
diff --git a/libs/srtp/srtp.h b/libs/srtp/srtp.h
index b58b9d6..67e8026 100644
--- a/libs/srtp/srtp.h
+++ b/libs/srtp/srtp.h
@@ -24,36 +24,36 @@ typedef struct srtp_session_t srtp_session_t;
enum
{
- SRTP_UNENCRYPTED=0x1, // do not encrypt SRTP packets
- SRTCP_UNENCRYPTED=0x2, // do not encrypt SRTCP packets
- SRTP_UNAUTHENTICATED=0x4, // authenticate only SRTCP packets
+ SRTP_UNENCRYPTED=0x1, //< do not encrypt SRTP packets
+ SRTCP_UNENCRYPTED=0x2, //< do not encrypt SRTCP packets
+ SRTP_UNAUTHENTICATED=0x4, //< authenticate only SRTCP packets
- SRTP_RCC_MODE1=0x10, // use Roll-over-Counter Carry mode 1
- SRTP_RCC_MODE2=0x20, // use Roll-over-Counter Carry mode 2
- SRTP_RCC_MODE3=0x30, // use Roll-over-Counter Carry mode 3 (insecure)
+ SRTP_RCC_MODE1=0x10, //< use Roll-over-Counter Carry mode 1
+ SRTP_RCC_MODE2=0x20, //< use Roll-over-Counter Carry mode 2
+ SRTP_RCC_MODE3=0x30, //< use Roll-over-Counter Carry mode 3 (insecure)
- SRTP_FLAGS_MASK=0x38
+ SRTP_FLAGS_MASK=0x37 //< mask for valid flags
};
-/* SRTP encryption algorithms (ciphers); same values as MIKEY */
+/** SRTP encryption algorithms (ciphers); same values as MIKEY */
enum
{
- SRTP_ENCR_NULL=0,
- SRTP_ENCR_AES_CM=1,
- SRTP_ENCR_AES_F8=2 // not implemented
+ SRTP_ENCR_NULL=0, //< no encryption
+ SRTP_ENCR_AES_CM=1, //< AES counter mode
+ SRTP_ENCR_AES_F8=2, //< AES F8 mode (not implemented)
};
-/* SRTP authenticaton algorithms; same values as MIKEY */
+/** SRTP authenticaton algorithms; same values as MIKEY */
enum
{
- SRTP_AUTH_NULL=0,
- SRTP_AUTH_HMAC_SHA1=1
+ SRTP_AUTH_NULL=0, //< no authentication code
+ SRTP_AUTH_HMAC_SHA1=1, //< HMAC-SHA1
};
-/* SRTP pseudo random function; same values as MIKEY */
+/** SRTP pseudo random function; same values as MIKEY */
enum
{
- SRTP_PRF_AES_CM=0
+ SRTP_PRF_AES_CM=0, //< AES counter mode
};
# ifdef __cplusplus
diff --git a/libs/srtp/test-aes.c b/libs/srtp/test-aes.c
index 463f0b1..ae55f34 100644
--- a/libs/srtp/test-aes.c
+++ b/libs/srtp/test-aes.c
@@ -143,8 +143,6 @@ static void test_keystream (void)
static void srtp_test (void)
{
- if (init_libgcrypt ())
- fatal ("Libgcrypt initialization error");
test_derivation ();
test_keystream ();
}
Index: vlc.spec
===================================================================
RCS file: /cvs/free/rpms/vlc/F-15/vlc.spec,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -r1.126 -r1.127
--- vlc.spec 20 Jul 2011 21:00:16 -0000 1.126
+++ vlc.spec 19 Sep 2011 22:56:15 -0000 1.127
@@ -26,7 +26,7 @@
Summary: The cross-platform open-source multimedia framework, player and server
Name: vlc
Version: 1.1.11
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
Group: Applications/Multimedia
URL: http://www.videolan.org
@@ -38,6 +38,7 @@
Patch3: vlc-1.1.6-hardode_font_patch.patch
Patch4: vlc-1.1.4-tls_path.patch
Patch5: vlc-1.1.8-bugfix.opencv22.patch
+Patch6: vlc-1.1-bugfix-20110920.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: desktop-file-utils
@@ -251,6 +252,7 @@
%patch5 -p1 -b .opencv22
%endif
sed -i.dmo_pic -e 's/fno-PIC/fPIC/' libs/loader/Makefile.in
+%patch6 -p1
rm modules/access/videodev2.h
ln -sf %{_includedir}/linux/videodev2.h modules/access/videodev2.h
@@ -561,9 +563,15 @@
%changelog
+* Tue Sep 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-2
+- Update to current bugfix
+
* Wed Jul 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-1
- Update to 1.1.11
+* Fri Jul 15 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.10-2
+- Rebuilt for x264 ABI 115
+
* Mon Jun 06 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.10-1
- Update to 1.1.10
- backport from 1.1-bugfix
13 years, 2 months
rpms/vlc/devel vlc-1.1-bugfix-20110920.patch, NONE, 1.1 vlc.spec, 1.127, 1.128
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/vlc/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv15687
Modified Files:
vlc.spec
Added Files:
vlc-1.1-bugfix-20110920.patch
Log Message:
Update to current bugfix
vlc-1.1-bugfix-20110920.patch:
libs/srtp/Makefile.am | 5
libs/srtp/srtp.c | 43 -----
libs/srtp/srtp.h | 32 ++--
libs/srtp/test-aes.c | 2
modules/access/rtp/rtp.c | 3
modules/access/v4l2.c | 2
modules/audio_output/auhal.c | 32 ++--
modules/audio_output/pulse.c | 294 ++++++++++++++++++++++++++++----------
modules/codec/vorbis.c | 4
modules/control/signals.c | 12 -
modules/demux/avi/avi.c | 21 +-
modules/gui/macosx/about.m | 3
modules/gui/macosx/intf.h | 2
modules/gui/macosx/intf.m | 5
modules/meta_engine/taglib.cpp | 2
modules/misc/audioscrobbler.c | 72 +++------
modules/misc/gnutls.c | 10 -
modules/stream_out/rtp.c | 3
modules/stream_out/smem.c | 7
modules/video_filter/Modules.am | 9 +
modules/video_filter/osdmenu.c | 2
modules/video_output/msw/events.c | 22 ++
modules/video_output/xcb/xvideo.c | 3
src/control/audio.c | 4
src/input/demux.c | 5
25 files changed, 362 insertions(+), 237 deletions(-)
--- NEW FILE vlc-1.1-bugfix-20110920.patch ---
diff --git a/modules/access/rtp/rtp.c b/modules/access/rtp/rtp.c
index e1cd6b1..03f882f 100755
--- a/modules/access/rtp/rtp.c
+++ b/modules/access/rtp/rtp.c
@@ -39,6 +39,8 @@
#include "rtp.h"
#ifdef HAVE_SRTP
# include <srtp.h>
+# include <gcrypt.h>
+# include <vlc_gcrypt.h>
#endif
#define RTP_CACHING_TEXT N_("RTP de-jitter buffer length (msec)")
@@ -276,6 +278,7 @@ static int Open (vlc_object_t *obj)
char *key = var_CreateGetNonEmptyString (demux, "srtp-key");
if (key)
{
+ vlc_gcrypt_init ();
p_sys->srtp = srtp_create (SRTP_ENCR_AES_CM, SRTP_AUTH_HMAC_SHA1, 10,
SRTP_PRF_AES_CM, SRTP_RCC_MODE1);
if (p_sys->srtp == NULL)
diff --git a/modules/access/v4l2.c b/modules/access/v4l2.c
index d29aec6..d0e14db 100644
--- a/modules/access/v4l2.c
+++ b/modules/access/v4l2.c
@@ -792,7 +792,7 @@ static void ParseMRL( demux_sys_t *p_sys, char *psz_path, vlc_object_t *p_obj )
}
if( i == ARRAY_SIZE(psz_standards_list_text) )
- p_sys->i_selected_standard_id = i_standards_list[strtol( psz_parser, &psz_parser, 0 )];
+ p_sys->i_selected_standard_id = strtol( psz_parser, &psz_parser, 0 );
}
else if( !strncmp( psz_parser, "chroma=", strlen( "chroma=" ) ) )
{
diff --git a/modules/audio_output/auhal.c b/modules/audio_output/auhal.c
index ab45f0c..6985781 100644
--- a/modules/audio_output/auhal.c
+++ b/modules/audio_output/auhal.c
@@ -632,7 +632,7 @@ static int OpenSPDIF( aout_instance_t * p_aout )
/* Set mixable to false if we are allowed to */
AudioObjectPropertyAddress audioDeviceSupportsMixingAddress = { kAudioDevicePropertySupportsMixing , kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
- b_writeable = AudioObjectHasProperty( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress );
+ err = AudioObjectIsPropertySettable( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, &b_writeable );
err = AudioObjectGetPropertyDataSize( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size );
err = AudioObjectGetPropertyData( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size, &b_mix );
@@ -676,7 +676,7 @@ static int OpenSPDIF( aout_instance_t * p_aout )
for( int i = 0; i < i_streams && p_sys->i_stream_index < 0 ; i++ )
{
/* Find a stream with a cac3 stream */
- AudioStreamBasicDescription *p_format_list = NULL;
+ AudioStreamRangedDescription *p_format_list = NULL;
int i_formats = 0;
bool b_digital = false;
@@ -688,8 +688,8 @@ static int OpenSPDIF( aout_instance_t * p_aout )
continue;
}
- i_formats = i_param_size / sizeof( AudioStreamBasicDescription );
- p_format_list = (AudioStreamBasicDescription *)malloc( i_param_size );
+ i_formats = i_param_size / sizeof( AudioStreamRangedDescription );
+ p_format_list = (AudioStreamRangedDescription *)malloc( i_param_size );
if( p_format_list == NULL )
continue;
@@ -704,8 +704,8 @@ static int OpenSPDIF( aout_instance_t * p_aout )
/* Check if one of the supported formats is a digital format */
for( int j = 0; j < i_formats; j++ )
{
- if( p_format_list[j].mFormatID == 'IAC3' ||
- p_format_list[j].mFormatID == kAudioFormat60958AC3 )
+ if( p_format_list[j].mFormat.mFormatID == 'IAC3' ||
+ p_format_list[j].mFormat.mFormatID == kAudioFormat60958AC3 )
{
b_digital = true;
break;
@@ -737,21 +737,21 @@ static int OpenSPDIF( aout_instance_t * p_aout )
for( int j = 0; j < i_formats; j++ )
{
- if( p_format_list[j].mFormatID == 'IAC3' ||
- p_format_list[j].mFormatID == kAudioFormat60958AC3 )
+ if( p_format_list[j].mFormat.mFormatID == 'IAC3' ||
+ p_format_list[j].mFormat.mFormatID == kAudioFormat60958AC3 )
{
- if( p_format_list[j].mSampleRate == p_aout->output.output.i_rate )
+ if( p_format_list[j].mFormat.mSampleRate == p_aout->output.output.i_rate )
{
i_requested_rate_format = j;
break;
}
- else if( p_format_list[j].mSampleRate == p_sys->sfmt_revert.mSampleRate )
+ else if( p_format_list[j].mFormat.mSampleRate == p_sys->sfmt_revert.mSampleRate )
{
i_current_rate_format = j;
}
else
{
- if( i_backup_rate_format < 0 || p_format_list[j].mSampleRate > p_format_list[i_backup_rate_format].mSampleRate )
+ if( i_backup_rate_format < 0 || p_format_list[j].mFormat.mSampleRate > p_format_list[i_backup_rate_format].mFormat.mSampleRate )
i_backup_rate_format = j;
}
}
@@ -759,10 +759,10 @@ static int OpenSPDIF( aout_instance_t * p_aout )
}
if( i_requested_rate_format >= 0 ) /* We prefer to output at the samplerate of the original audio */
- p_sys->stream_format = p_format_list[i_requested_rate_format];
+ p_sys->stream_format = p_format_list[i_requested_rate_format].mFormat;
else if( i_current_rate_format >= 0 ) /* If not possible, we will try to use the current samplerate of the device */
- p_sys->stream_format = p_format_list[i_current_rate_format];
- else p_sys->stream_format = p_format_list[i_backup_rate_format]; /* And if we have to, any digital format will be just fine (highest rate possible) */
+ p_sys->stream_format = p_format_list[i_current_rate_format].mFormat;
+ else p_sys->stream_format = p_format_list[i_backup_rate_format].mFormat; /* And if we have to, any digital format will be just fine (highest rate possible) */
}
free( p_format_list );
}
@@ -866,7 +866,7 @@ static void Close( vlc_object_t * p_this )
Boolean b_writeable;
/* Revert mixable to true if we are allowed to */
AudioObjectPropertyAddress audioDeviceSupportsMixingAddress = { kAudioDevicePropertySupportsMixing , kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
- b_writeable = AudioObjectHasProperty( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress );
+ err = AudioObjectIsPropertySettable( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, &b_writeable );
err = AudioObjectGetPropertyData( p_sys->i_selected_dev, &audioDeviceSupportsMixingAddress, 0, NULL, &i_param_size, &b_mix );
if( !err && b_writeable )
@@ -1082,7 +1082,7 @@ static int AudioDeviceSupportsDigital( aout_instance_t *p_aout, AudioDeviceID i_
bool b_return = false;
/* Retrieve all the output streams */
- AudioObjectPropertyAddress streamsAddress = { kAudioDevicePropertyStreams, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
+ AudioObjectPropertyAddress streamsAddress = { kAudioDevicePropertyStreams, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
err = AudioObjectGetPropertyDataSize( i_dev_id, &streamsAddress, 0, NULL, &i_param_size );
if( err != noErr )
{
diff --git a/modules/audio_output/pulse.c b/modules/audio_output/pulse.c
index 64de04d..a377f66 100644
--- a/modules/audio_output/pulse.c
+++ b/modules/audio_output/pulse.c
@@ -58,7 +58,9 @@ struct aout_sys_t
pa_stream *stream; /**< PulseAudio playback stream object */
pa_context *context; /**< PulseAudio connection context */
pa_threaded_mainloop *mainloop; /**< PulseAudio event loop */
- //uint32_t byterate; /**< bytes per second */
+ mtime_t pts; /**< Play time of buffer write offset */
+ mtime_t desync; /**< Measured desynchronization */
+ unsigned rate; /**< Current stream sample rate */
};
/* Context helpers */
@@ -93,6 +95,164 @@ static void error(aout_instance_t *aout, const char *msg, pa_context *context)
msg_Err(aout, "%s: %s", msg, pa_strerror(pa_context_errno(context)));
}
+/* Latency management and lip synchronization */
+static mtime_t vlc_pa_get_latency(aout_instance_t *aout,
+ pa_context *ctx, pa_stream *s)
+{
+ pa_usec_t latency;
+ int negative;
+
+ if (pa_stream_get_latency(s, &latency, &negative)) {
+ if (pa_context_errno (ctx) != PA_ERR_NODATA)
+ error(aout, "unknown latency", ctx);
+ return VLC_TS_INVALID;
+ }
+ return negative ? -latency : +latency;
+}
+
+static void stream_reset_sync(pa_stream *s, aout_instance_t *aout)
+{
+ aout_sys_t *sys = aout->output.p_sys;
+ const unsigned rate = aout->output.output.i_rate;
+
+ sys->pts = VLC_TS_INVALID;
+ sys->desync = 0;
+ pa_operation *op = pa_stream_update_sample_rate(s, rate, NULL, NULL);
+ if (unlikely(op == NULL))
+ return;
+ pa_operation_unref(op);
+ sys->rate = rate;
+}
+
+/**
+ * Starts or resumes the playback stream.
+ * Tries start playing back audio samples at the most accurate time
+ * in order to minimize desync and resampling during early playback.
+ * @note PulseAudio lock required.
+ */
+static void stream_resync(aout_instance_t *aout, pa_stream *s)
+{
+ aout_sys_t *sys = aout->output.p_sys;
+ pa_operation *op;
+ mtime_t delta;
+
+ assert (pa_stream_is_corked(s) > 0);
+ assert (sys->pts != VLC_TS_INVALID);
+
+ delta = vlc_pa_get_latency(aout, sys->context, s);
+ if (unlikely(delta == VLC_TS_INVALID))
+ delta = 0; /* screwed */
+
+ delta = (sys->pts - mdate()) - delta;
+
+ /* TODO: adjust prebuf instead of padding? */
+ if (delta > 0) {
+ size_t nb = (delta * sys->rate) / CLOCK_FREQ;
+ size_t size = aout->output.output.i_bytes_per_frame;
+ float *zeroes = calloc (nb, size);
+
+ msg_Dbg(aout, "starting with %zu zeroes (%"PRId64" us)", nb,
+ delta);
+#if 0 /* Fault injector: add delay */
+ pa_stream_write(s, zeroes, nb * size, NULL, 0, PA_SEEK_RELATIVE);
+ pa_stream_write(s, zeroes, nb * size, NULL, 0, PA_SEEK_RELATIVE);
+#endif
+ if (likely(zeroes != NULL))
+ if (pa_stream_write(s, zeroes, nb * size, free, 0,
+ PA_SEEK_RELATIVE) < 0)
+ free(zeroes);
+ } else
+ msg_Warn(aout, "starting late (%"PRId64" us)", delta);
+
+ op = pa_stream_cork(s, 0, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+ op = pa_stream_trigger(s, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+}
+
+/* Values from EBU R37 */
+#define AOUT_EARLY_TOLERANCE 40000
+#define AOUT_LATE_TOLERANCE 60000
+
+static void stream_latency_cb(pa_stream *s, void *userdata)
+{
+ aout_instance_t *aout = userdata;
+ aout_sys_t *sys = aout->output.p_sys;
+ mtime_t delta, change;
+
+ if (pa_stream_is_corked(s))
+ return;
+ if (sys->pts == VLC_TS_INVALID)
+ {
+ msg_Dbg(aout, "missing latency from input");
+ return;
+ }
+
+ /* Compute lip desynchronization */
+ delta = vlc_pa_get_latency(aout, sys->context, s);
+ if (delta == VLC_TS_INVALID)
+ return;
+
+ delta = (sys->pts - mdate()) - delta;
+ change = delta - sys->desync;
+ sys->desync = delta;
+ //msg_Dbg(aout, "desync: %+"PRId64" us (variation: %+"PRId64" us)",
+ // delta, change);
+
+ const unsigned inrate = aout->output.output.i_rate;
+ unsigned outrate = sys->rate;
+ bool sync = false;
+
+ if (delta < -AOUT_LATE_TOLERANCE)
+ msg_Warn(aout, "too late by %"PRId64" us", -delta);
+ else if (delta > +AOUT_EARLY_TOLERANCE)
+ msg_Warn(aout, "too early by %"PRId64" us", delta);
+ else if (outrate == inrate)
+ return; /* In sync, do not add unnecessary disturbance! */
+ else
+ sync = true;
+
+ /* Compute playback sample rate */
+ /* This is empirical (especially the shift values).
+ * Feel free to define something smarter. */
+ int adj = sync ? (outrate - inrate)
+ : outrate * ((delta >> 4) + change) / (CLOCK_FREQ << 2);
+ /* This avoids too quick rate variation. It sounds really bad and
+ * causes unstability (e.g. oscillation around the correct rate). */
+ int limit = inrate >> 10;
+ /* However, to improve stability and try to converge, closing to the
+ * nominal rate is favored over drifting from it. */
+ if ((adj > 0) == (sys->rate > inrate))
+ limit *= 2;
+ if (adj > +limit)
+ adj = +limit;
+ if (adj < -limit)
+ adj = -limit;
+ outrate -= adj;
+
+ /* This keeps the effective rate within specified range
+ * (+/-AOUT_MAX_RESAMPLING% - see <vlc_aout.h>) of the nominal rate. */
+ limit = inrate * AOUT_MAX_RESAMPLING / 100;
+ if (outrate > inrate + limit)
+ outrate = inrate + limit;
+ if (outrate < inrate - limit)
+ outrate = inrate - limit;
+
+ /* Apply adjusted sample rate */
+ if (outrate == sys->rate)
+ return;
+ pa_operation *op = pa_stream_update_sample_rate(s, outrate, NULL, NULL);
+ if (unlikely(op == NULL)) {
+ error(aout, "cannot change sample rate", sys->context);
+ return;
+ }
+ pa_operation_unref(op);
+ msg_Dbg(aout, "changed sample rate to %u Hz",outrate);
+ sys->rate = outrate;
+}
+
/* Stream helpers */
static void stream_state_cb(pa_stream *s, void *userdata)
{
@@ -106,6 +266,7 @@ static void stream_state_cb(pa_stream *s, void *userdata)
default:
break;
}
+ (void) userdata;
}
static void stream_moved_cb(pa_stream *s, void *userdata)
@@ -138,15 +299,19 @@ static void stream_suspended_cb(pa_stream *s, void *userdata)
aout_instance_t *aout = userdata;
msg_Dbg(aout, "suspended");
- (void) s;
+ stream_reset_sync(s, aout);
}
static void stream_underflow_cb(pa_stream *s, void *userdata)
{
aout_instance_t *aout = userdata;
+ pa_operation *op;
- msg_Dbg(aout, "underflow");
- (void) s;
+ msg_Warn(aout, "underflow");
+ op = pa_stream_cork(s, 1, NULL, NULL);
+ if (op != NULL)
+ pa_operation_unref(op);
+ stream_reset_sync(s, aout);
}
static int stream_wait(pa_threaded_mainloop *mainloop, pa_stream *stream)
@@ -193,6 +358,17 @@ static void Play(aout_instance_t *aout)
aout_sys_t *sys = aout->output.p_sys;
pa_stream *s = sys->stream;
+ /* This function is called exactly once per block in the output FIFO. */
+ block_t *block = aout_FifoPop(aout, &aout->output.fifo);
+ assert (block != NULL);
+
+ const void *ptr = data_convert(&block);
+ if (unlikely(ptr == NULL))
+ return;
+
+ size_t len = block->i_buffer;
+ mtime_t pts = block->i_pts + block->i_length;
+
/* Note: The core already holds the output FIFO lock at this point.
* Therefore we must not under any circumstances (try to) acquire the
* output FIFO lock while the PulseAudio threaded main loop lock is held
@@ -200,71 +376,26 @@ static void Play(aout_instance_t *aout)
* will take place, and sooner or later a deadlock. */
pa_threaded_mainloop_lock(sys->mainloop);
- if (pa_stream_is_corked(sys->stream) > 0) {
- pa_operation *op = pa_stream_cork(s, 0, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
- msg_Dbg(aout, "uncorking");
- }
-
-#if 0
- /* This function should be called by the LibVLC core a header of time,
- * but not more than AOUT_MAX_PREPARE. The PulseAudio latency should be
- * shorter than that (though it might not be the case with some evil piece
- * of audio output hardware). So we may need to trigger playback early,
- * (that is to say, short cut the PulseAudio prebuffering). Otherwise,
- * audio and video may be out of synchronization. */
- pa_usec_t latency;
- int negative;
- if (pa_stream_get_latency(s, &latency, &negative) < 0) {
- /* Especially at start of stream, latency may not be known (yet). */
- if (pa_context_errno(sys->context) != PA_ERR_NODATA)
- error(aout, "cannot determine latency", sys->context);
- } else {
- mtime_t gap = aout_FifoFirstDate(aout, &aout->output.fifo) - mdate()
- - latency;
+ sys->pts = pts;
+ if (pa_stream_is_corked(s) > 0)
+ stream_resync(aout, s);
- if (gap > AOUT_PTS_TOLERANCE)
- msg_Dbg(aout, "buffer too early (%"PRId64" us)", gap);
- else if (gap < -AOUT_PTS_TOLERANCE)
- msg_Err(aout, "buffer too late (%"PRId64" us)", -gap);
- }
-#endif
#if 0 /* Fault injector to test underrun recovery */
- static unsigned u = 0;
- if ((++u % 500) == 0) {
+ static volatile unsigned u = 0;
+ if ((++u % 1000) == 0) {
msg_Err(aout, "fault injection");
- msleep(CLOCK_FREQ*2);
+ pa_operation_unref(pa_stream_flush(s, NULL, NULL));
}
#endif
- /* This function is called exactly once per block in the output FIFO, so
- * this for-loop is not necessary.
- * If this function is changed to not always dequeue blocks, be sure to
- * limit the queue size to a reasonable limit to avoid huge leaks. */
- for (;;) {
- block_t *block = aout_FifoPop(aout, &aout->output.fifo);
- if (block == NULL)
- break;
-
- const void *ptr = data_convert(&block);
- if (unlikely(ptr == NULL))
- break;
-
- size_t len = block->i_buffer;
- //mtime_t pts = block->i_pts, duration = block->i_length;
-
- if (pa_stream_write(s, ptr, len, data_free, 0, PA_SEEK_RELATIVE) < 0)
- {
- error(aout, "cannot write", sys->context);
- block_Release(block);
- }
+ if (pa_stream_write(s, ptr, len, data_free, 0, PA_SEEK_RELATIVE) < 0) {
+ error(aout, "cannot write", sys->context);
+ block_Release(block);
}
pa_threaded_mainloop_unlock(sys->mainloop);
}
-
/*****************************************************************************
* Open: open the audio device
*****************************************************************************/
@@ -377,21 +508,27 @@ static int Open(vlc_object_t *obj)
msg_Err(aout, "unsupported channel map");
return VLC_EGENERIC;
} else {
- const char *name = pa_channel_map_to_pretty_name(&map);
+ const char *name = pa_channel_map_to_name(&map);
msg_Dbg(aout, "using %s channel map", (name != NULL) ? name : "?");
}
- const pa_stream_flags_t flags = PA_STREAM_INTERPOLATE_TIMING
+ /* Stream parameters */
+ const pa_stream_flags_t flags = PA_STREAM_START_CORKED
+ //| PA_STREAM_INTERPOLATE_TIMING
| PA_STREAM_AUTO_TIMING_UPDATE
- | PA_STREAM_ADJUST_LATENCY
- | PA_STREAM_START_CORKED;
+ | PA_STREAM_VARIABLE_RATE;
const uint32_t byterate = pa_bytes_per_second(&ss);
struct pa_buffer_attr attr;
- /* no point in larger buffers on PA side than VLC */
attr.maxlength = -1;
- attr.tlength = byterate * AOUT_MAX_ADVANCE_TIME / CLOCK_FREQ;
- attr.prebuf = byterate * AOUT_MAX_PREPARE_TIME / CLOCK_FREQ;
+ /* PulseAudio assumes that tlength bytes are available in the buffer. Thus
+ * we need to be conservative and set the minimum value that the VLC
+ * audio decoder thread warrants. Otherwise, PulseAudio buffers will
+ * underrun on hardware with large buffers. VLC keeps at least
+ * AOUT_MIN_PREPARE and at most AOUT_MAX_PREPARE worth of audio buffers.
+ * TODO? tlength could be adaptively increased to reduce wakeups. */
+ attr.tlength = byterate * AOUT_MIN_PREPARE_TIME / CLOCK_FREQ;
+ attr.prebuf = 0; /* trigger manually */
attr.minreq = -1;
attr.fragsize = 0; /* not used for output */
@@ -427,6 +564,9 @@ static int Open(vlc_object_t *obj)
if (unlikely(ctx == NULL))
goto fail;
sys->context = ctx;
+ sys->pts = VLC_TS_INVALID;
+ sys->desync = 0;
+ sys->rate = ss.rate;
pa_context_set_state_callback(ctx, context_state_cb, mainloop);
if (pa_context_connect(ctx, NULL, 0, NULL) < 0
@@ -443,6 +583,7 @@ static int Open(vlc_object_t *obj)
}
sys->stream = s;
pa_stream_set_state_callback(s, stream_state_cb, mainloop);
+ pa_stream_set_latency_update_callback(s, stream_latency_cb, aout);
pa_stream_set_moved_callback(s, stream_moved_cb, aout);
pa_stream_set_overflow_callback(s, stream_overflow_cb, aout);
pa_stream_set_started_callback(s, stream_started_cb, aout);
@@ -487,19 +628,24 @@ static void Close (vlc_object_t *obj)
pa_threaded_mainloop_lock(mainloop);
if (s != NULL) {
- pa_operation *op;
-
- op = pa_stream_flush(s, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
- op = pa_stream_drain(s, NULL, NULL);
- if (op != NULL)
- pa_operation_unref(op);
pa_stream_disconnect(s);
+
+ /* Clear all callbacks */
+ pa_stream_set_state_callback(s, NULL, NULL);
+ pa_stream_set_latency_update_callback(s, NULL, aout);
+ pa_stream_set_moved_callback(s, NULL, aout);
+ pa_stream_set_overflow_callback(s, NULL, aout);
+ pa_stream_set_started_callback(s, NULL, aout);
+ pa_stream_set_suspended_callback(s, NULL, aout);
+ pa_stream_set_underflow_callback(s, NULL, aout);
+
pa_stream_unref(s);
}
- if (ctx != NULL)
+ if (ctx != NULL) {
+ pa_context_disconnect(ctx);
+ pa_context_set_state_callback (ctx, NULL, NULL);
pa_context_unref(ctx);
+ }
pa_threaded_mainloop_unlock(mainloop);
pa_threaded_mainloop_free(mainloop);
free(sys);
diff --git a/modules/codec/vorbis.c b/modules/codec/vorbis.c
index 8ef775f..d8a0cd5 100644
--- a/modules/codec/vorbis.c
+++ b/modules/codec/vorbis.c
@@ -570,6 +570,10 @@ static void ParseVorbisComments( decoder_t *p_dec )
*psz_value = '\0';
psz_value++;
+ /* Don't add empty values */
+ if( *psz_value == '\0' )
+ break;
+
if( !p_dec->p_description )
p_dec->p_description = vlc_meta_New();
if( p_dec->p_description )
diff --git a/modules/control/signals.c b/modules/control/signals.c
index a1e4215..b183718 100644
--- a/modules/control/signals.c
+++ b/modules/control/signals.c
@@ -130,16 +130,16 @@ static void *SigThread (void *data)
sigaction (signum, NULL, &act);
if ((act.sa_flags & SA_SIGINFO) || (act.sa_handler != SIG_DFL))
{
- msg_Err (obj, "signal %d overridden (%p)", signum,
- act.sa_handler);
+ msg_Warn (obj, "signal %d overridden (%p)", signum,
+ act.sa_handler);
#ifdef __GLIBC__
Dl_info info;
if (dladdr (act.sa_handler, &info))
- msg_Err (obj, " %s(%s)[%p]",
- info.dli_fname ? info.dli_fname : "?",
- info.dli_sname ? info.dli_sname : "?",
- info.dli_saddr);
+ msg_Warn (obj, " %s(%s)[%p]",
+ info.dli_fname ? info.dli_fname : "?",
+ info.dli_sname ? info.dli_sname : "?",
+ info.dli_saddr);
#endif
if (!(act.sa_flags & SA_SIGINFO) && (act.sa_handler != SIG_IGN))
act.sa_handler (signum);
diff --git a/modules/demux/avi/avi.c b/modules/demux/avi/avi.c
index ebb8f56..20ae0e7 100644
--- a/modules/demux/avi/avi.c
+++ b/modules/demux/avi/avi.c
@@ -1280,15 +1280,16 @@ static int Seek( demux_t *p_demux, mtime_t i_date, int i_percent )
{
demux_sys_t *p_sys = p_demux->p_sys;
- unsigned int i_stream;
msg_Dbg( p_demux, "seek requested: %"PRId64" seconds %d%%",
i_date / 1000000, i_percent );
if( p_sys->b_seekable )
{
+ unsigned i_stream;
+
if( !p_sys->i_length )
{
- avi_track_t *p_stream;
+ avi_track_t *p_stream = NULL;
int64_t i_pos;
/* use i_percent to create a true i_date */
@@ -1304,17 +1305,19 @@ static int Seek( demux_t *p_demux, mtime_t i_date, int i_percent )
/* try to find chunk that is at i_percent or the file */
i_pos = __MAX( i_percent * stream_Size( p_demux->s ) / 100,
p_sys->i_movi_begin );
- /* search first selected stream (and prefer non eof ones) */
- for( i_stream = 0, p_stream = NULL;
- i_stream < p_sys->i_track; i_stream++ )
+ /* search first selected stream (and prefer non-EOF ones) */
+ for( unsigned i = 0; i < p_sys->i_track; i++ )
{
- if( !p_stream || p_stream->b_eof )
- p_stream = p_sys->track[i_stream];
+ avi_track_t *p_track = p_sys->track[i];
+ if( !p_track->b_activated )
+ continue;
- if( p_stream->b_activated && !p_stream->b_eof )
+ p_stream = p_track;
+ i_stream = i;
+ if( !p_track->b_eof )
break;
}
- if( !p_stream || !p_stream->b_activated )
+ if( p_stream == NULL )
{
msg_Warn( p_demux, "cannot find any selected stream" );
return VLC_EGENERIC;
diff --git a/modules/gui/macosx/about.m b/modules/gui/macosx/about.m
index e0ebf78..551d19b 100644
--- a/modules/gui/macosx/about.m
+++ b/modules/gui/macosx/about.m
@@ -100,8 +100,7 @@ static VLAboutBox *_o_sharedInstance = nil;
#else
compiler = [NSString stringWithFormat:@"gcc %s", __VERSION__];
#endif
- [o_revision_field setStringValue:
- [NSString stringWithFormat: _NS("Compiled by %s with %@"), VLC_CompileBy(), compiler]];
+ [o_revision_field setStringValue: [NSString stringWithFormat: _NS("Compiled by %@ with %@"), [NSString stringWithUTF8String:VLC_CompileBy()], compiler]];
/* Setup the nameversion field */
[o_name_version_field setStringValue: [NSString stringWithFormat:@"Version %s (%s)", VLC_Version(), PLATFORM]];
diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index 7e14eea..e7e0511 100644
--- a/modules/gui/macosx/intf.h
+++ b/modules/gui/macosx/intf.h
@@ -104,7 +104,7 @@ struct intf_sys_t
id o_bookmarks; /* VLCBookmarks */
id o_embedded_list; /* VLCEmbeddedList*/
id o_coredialogs; /* VLCCoreDialogProvider */
- VLCInformation * o_info; /* VLCInformation */
+ id o_info; /* VLCInfo */
id o_eyetv; /* VLCEyeTVController */
BOOL nib_main_loaded; /* main nibfile */
BOOL nib_open_loaded; /* open nibfile */
diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m
index 535e9b9..bdcfdcb 100644
--- a/modules/gui/macosx/intf.m
+++ b/modules/gui/macosx/intf.m
@@ -2589,9 +2589,8 @@ end:
o_attr = [NSDictionary dictionaryWithObject: pp_color[i_type]
forKey: NSForegroundColorAttributeName];
- o_msg = [[[o_notification userInfo] objectForKey: @"Message"] stringByAppendingString: @"\n"];
- o_msg_color = [[NSAttributedString alloc]
- initWithString: o_msg attributes: o_attr];
+ o_msg = [NSString stringWithFormat:@"%@\n", [[o_notification userInfo] objectForKey: @"Message"]];
+ o_msg_color = [[NSAttributedString alloc] initWithString: o_msg attributes: o_attr];
[o_msg_arr addObject: [o_msg_color autorelease]];
b_msg_arr_changed = YES;
diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
index 6bc2926..6a0567a 100644
--- a/modules/meta_engine/taglib.cpp
+++ b/modules/meta_engine/taglib.cpp
@@ -74,6 +74,8 @@
# define TAGLIB_HAVE_AIFF_WAV_H
# include <aifffile.h>
# include <wavfile.h>
+#else
+# include <id3v2tag.h>
#endif
#if TAGLIB_VERSION >= VERSION_INT(1,6,1) && defined(TAGLIB_WITH_MP4)
diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c
index 9b18f1d..95780ce 100644
--- a/modules/misc/audioscrobbler.c
+++ b/modules/misc/audioscrobbler.c
@@ -122,7 +122,7 @@ static int PlayingChange ( vlc_object_t *, const char *, vlc_value_t,
static void AddToQueue ( intf_thread_t * );
static int Handshake ( intf_thread_t * );
-static int ReadMetaData ( intf_thread_t * );
+static void ReadMetaData ( intf_thread_t * );
static void DeleteSong ( audioscrobbler_song_t* );
static int ParseURL ( char *, char **, char **, int * );
static void HandleInterval ( mtime_t *, unsigned int * );
@@ -927,7 +927,7 @@ static void DeleteSong( audioscrobbler_song_t* p_song )
/*****************************************************************************
* ReadMetaData : Read meta data when parsed by vlc
*****************************************************************************/
-static int ReadMetaData( intf_thread_t *p_this )
+static void ReadMetaData( intf_thread_t *p_this )
{
input_thread_t *p_input;
input_item_t *p_item;
@@ -936,81 +936,65 @@ static int ReadMetaData( intf_thread_t *p_this )
p_input = playlist_CurrentInput( pl_Get( p_this ) );
if( !p_input )
- return( VLC_SUCCESS );
+ return;
p_item = input_GetItem( p_input );
if( !p_item )
- return VLC_SUCCESS;
-
- char *psz_meta;
-#define ALLOC_ITEM_META( a, b ) \
- psz_meta = input_item_Get##b( p_item ); \
- if( psz_meta && *psz_meta ) \
- { \
- a = encode_URI_component( psz_meta ); \
- if( !a ) \
- { \
- vlc_mutex_unlock( &p_sys->lock ); \
- vlc_object_release( p_input ); \
- free( psz_meta ); \
- return VLC_ENOMEM; \
- } \
+ {
+ vlc_object_release( p_input );
+ return;
}
+#define ALLOC_ITEM_META( a, b ) do { \
+ char *psz_meta = input_item_Get##b( p_item ); \
+ if( psz_meta && *psz_meta ) \
+ a = encode_URI_component( psz_meta ); \
+ free( psz_meta ); \
+ } while(0)
+
vlc_mutex_lock( &p_sys->lock );
p_sys->b_meta_read = true;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_a, Artist )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_a, Artist );
+ if( !p_sys->p_current_song.psz_a )
{
- vlc_mutex_unlock( &p_sys->lock );
msg_Dbg( p_this, "No artist.." );
- vlc_object_release( p_input );
- free( psz_meta );
- return VLC_EGENERIC;
+ DeleteSong( &p_sys->p_current_song );
+ goto end;
}
- free( psz_meta );
- ALLOC_ITEM_META( p_sys->p_current_song.psz_t, Title )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_t, Title );
+ if( !p_sys->p_current_song.psz_t )
{
- vlc_mutex_unlock( &p_sys->lock );
msg_Dbg( p_this, "No track name.." );
- vlc_object_release( p_input );
- free( p_sys->p_current_song.psz_a );
- free( psz_meta );
- return VLC_EGENERIC;
+ DeleteSong( &p_sys->p_current_song );
+ goto end;
}
- free( psz_meta );
/* Now we have read the mandatory meta data, so we can submit that info */
p_sys->b_submit = true;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_b, Album )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_b, Album );
+ if( !p_sys->p_current_song.psz_b )
p_sys->p_current_song.psz_b = calloc( 1, 1 );
- free( psz_meta );
- ALLOC_ITEM_META( p_sys->p_current_song.psz_m, TrackID )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_m, TrackID );
+ if( !p_sys->p_current_song.psz_m )
p_sys->p_current_song.psz_m = calloc( 1, 1 );
- free( psz_meta );
p_sys->p_current_song.i_l = input_item_GetDuration( p_item ) / 1000000;
- ALLOC_ITEM_META( p_sys->p_current_song.psz_n, TrackNum )
- else
+ ALLOC_ITEM_META( p_sys->p_current_song.psz_n, TrackNum );
+ if( !p_sys->p_current_song.psz_n )
p_sys->p_current_song.psz_n = calloc( 1, 1 );
- free( psz_meta );
#undef ALLOC_ITEM_META
msg_Dbg( p_this, "Meta data registered" );
+end:
vlc_mutex_unlock( &p_sys->lock );
vlc_object_release( p_input );
- return VLC_SUCCESS;
-
}
static void HandleInterval( mtime_t *next, unsigned int *i_interval )
diff --git a/modules/misc/gnutls.c b/modules/misc/gnutls.c
index 71876b5..328e019 100644
--- a/modules/misc/gnutls.c
+++ b/modules/misc/gnutls.c
@@ -130,7 +130,7 @@ static int gnutls_Init (vlc_object_t *p_this)
goto error;
}
- const char *psz_version = gnutls_check_version ("1.3.3");
+ const char *psz_version = gnutls_check_version ("1.7.4");
if (psz_version == NULL)
{
msg_Err (p_this, "unsupported GnuTLS version");
@@ -356,8 +356,8 @@ gnutls_HandshakeAndValidate( tls_session_t *session )
goto error;
}
- assert( p_sys->psz_hostname != NULL );
- if ( !gnutls_x509_crt_check_hostname( cert, p_sys->psz_hostname ) )
+ if( p_sys->psz_hostname != NULL
+ && !gnutls_x509_crt_check_hostname( cert, p_sys->psz_hostname ) )
{
msg_Err( session, "Certificate does not match \"%s\"",
p_sys->psz_hostname );
@@ -731,7 +731,7 @@ static int OpenClient (vlc_object_t *obj)
char *servername = var_GetNonEmptyString (p_session, "tls-server-name");
if (servername == NULL )
- msg_Err (p_session, "server name missing for TLS session");
+ abort ();
else
gnutls_server_name_set (p_sys->session.session, GNUTLS_NAME_DNS,
servername, strlen (servername));
@@ -1046,7 +1046,7 @@ gnutls_ServerAddCRL( tls_server_t *p_server, const char *psz_crl_path )
(p_server->p_sys))->x509_cred,
psz_local_path,
GNUTLS_X509_FMT_PEM );
- LocaleFree( psz_crl_path );
+ LocaleFree( psz_local_path );
if( val < 0 )
{
msg_Err( p_server, "cannot add CRL (%s): %s", psz_crl_path,
diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c
index e6a247a..954a3c1 100644
--- a/modules/stream_out/rtp.c
+++ b/modules/stream_out/rtp.c
@@ -42,6 +42,8 @@
#include <vlc_rand.h>
#ifdef HAVE_SRTP
# include <srtp.h>
+# include <gcrypt.h>
+# include <vlc_gcrypt.h>
#endif
#include "rtp.h"
@@ -1006,6 +1008,7 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
char *key = var_CreateGetNonEmptyString (p_stream, SOUT_CFG_PREFIX"key");
if (key)
{
+ vlc_gcrypt_init ();
id->srtp = srtp_create (SRTP_ENCR_AES_CM, SRTP_AUTH_HMAC_SHA1, 10,
SRTP_PRF_AES_CM, SRTP_RCC_MODE1);
if (id->srtp == NULL)
diff --git a/modules/stream_out/smem.c b/modules/stream_out/smem.c
index 784c31b..59f27cf 100644
--- a/modules/stream_out/smem.c
+++ b/modules/stream_out/smem.c
@@ -369,6 +369,13 @@ static int SendAudio( sout_stream_t *p_stream, sout_stream_id_t *id,
int i_samples = 0;
i_size = p_buffer->i_buffer;
+ if (id->format->audio.i_channels <= 0)
+ {
+ msg_Warn( p_stream, "No buffer given!" );
+ block_ChainRelease( p_buffer );
+ return VLC_EGENERIC;
+ }
+
i_samples = i_size / ( ( id->format->audio.i_bitspersample / 8 ) * id->format->audio.i_channels );
/* Calling the prerender callback to get user buffer */
p_sys->pf_audio_prerender_callback( id->p_data, &p_pcm_buffer, i_size );
diff --git a/modules/video_filter/Modules.am b/modules/video_filter/Modules.am
index c07f263..afa6330 100644
--- a/modules/video_filter/Modules.am
+++ b/modules/video_filter/Modules.am
@@ -1,4 +1,5 @@
SUBDIRS = dynamicoverlay
+
SOURCES_mosaic = mosaic.c mosaic.h
SOURCES_transform = transform.c
SOURCES_invert = invert.c
@@ -17,7 +18,13 @@ SOURCES_marq = marq.c
SOURCES_rss = rss.c
SOURCES_motiondetect = motiondetect.c
SOURCES_rv32 = rv32.c
-SOURCES_osdmenu = osdmenu.c
+
+libosdmenu_plugin_la_SOURCES = osdmenu.c
+libosdmenu_plugin_la_CFLAGS = $(AM_CFLAGS) -DPKGDATADIR=\"$(vlcdatadir)\"
+libosdmenu_plugin_la_LIBADD = $(AM_LIBADD)
+libosdmenu_plugin_la_DEPENDENCIES =
+EXTRA_LTLIBRARIES += libosdmenu_plugin.la
+
SOURCES_remoteosd = remoteosd.c remoteosd_rfbproto.h
SOURCES_magnify = magnify.c
SOURCES_wave = wave.c
diff --git a/modules/video_filter/osdmenu.c b/modules/video_filter/osdmenu.c
index 377f740..87416bf 100644
--- a/modules/video_filter/osdmenu.c
+++ b/modules/video_filter/osdmenu.c
@@ -105,7 +105,7 @@ static int MouseEvent( vlc_object_t *, char const *,
#if defined( WIN32 ) || defined( UNDER_CE )
#define OSD_DEFAULT_CFG "osdmenu/default.cfg"
#else
-#define OSD_DEFAULT_CFG "share/osdmenu/default.cfg"
+#define OSD_DEFAULT_CFG PKGDATADIR"/osdmenu/default.cfg"
#endif
#define OSD_UPDATE_MIN 0
diff --git a/modules/video_output/msw/events.c b/modules/video_output/msw/events.c
index d2d5e26..3a40829 100644
--- a/modules/video_output/msw/events.c
+++ b/modules/video_output/msw/events.c
@@ -122,6 +122,8 @@ struct event_thread_t
video_format_t source;
vout_display_place_t place;
+ HICON vlc_icon;
+
bool has_moved;
};
@@ -498,7 +500,6 @@ static int DirectXCreateWindow( event_thread_t *p_event )
HMENU hMenu;
RECT rect_window;
WNDCLASS wc; /* window class components */
- HICON vlc_icon;
char vlc_path[MAX_PATH+1];
int i_style, i_stylex;
@@ -537,11 +538,11 @@ static int DirectXCreateWindow( event_thread_t *p_event )
#endif
/* Get the Icon from the main app */
- vlc_icon = NULL;
+ p_event->vlc_icon = NULL;
#ifndef UNDER_CE
if( GetModuleFileName( NULL, vlc_path, MAX_PATH ) )
{
- vlc_icon = ExtractIcon( hInstance, vlc_path, 0 );
+ p_event->vlc_icon = ExtractIcon( hInstance, vlc_path, 0 );
}
#endif
@@ -551,7 +552,7 @@ static int DirectXCreateWindow( event_thread_t *p_event )
wc.cbClsExtra = 0; /* no extra class data */
wc.cbWndExtra = 0; /* no extra window data */
wc.hInstance = hInstance; /* instance */
- wc.hIcon = vlc_icon; /* load the vlc big icon */
+ wc.hIcon = p_event->vlc_icon; /* load the vlc big icon */
wc.hCursor = p_event->is_cursor_hidden ? p_event->cursor_empty :
p_event->cursor_arrow;
wc.hbrBackground = GetStockObject(BLACK_BRUSH); /* background color */
@@ -561,8 +562,8 @@ static int DirectXCreateWindow( event_thread_t *p_event )
/* Register the window class */
if( !RegisterClass(&wc) )
{
- if( vlc_icon )
- DestroyIcon( vlc_icon );
+ if( p_event->vlc_icon )
+ DestroyIcon( p_event->vlc_icon );
msg_Err( vd, "DirectXCreateWindow RegisterClass FAILED (err=%lu)", GetLastError() );
return VLC_EGENERIC;
@@ -607,6 +608,12 @@ static int DirectXCreateWindow( event_thread_t *p_event )
{
i_style = WS_VISIBLE|WS_CLIPCHILDREN|WS_CHILD;
i_stylex = 0;
+
+ /* allow user to regain control over input events if requested */
+ bool b_mouse_support = var_InheritBool( vd, "mouse-events" );
+ bool b_key_support = var_InheritBool( vd, "keyboard-events" );
+ if( !b_mouse_support && !b_key_support )
+ i_style |= WS_DISABLED;
}
p_event->i_window_style = i_style;
@@ -711,6 +718,9 @@ static void DirectXCloseWindow( event_thread_t *p_event )
vout_display_DeleteWindow( vd, p_event->parent_window );
p_event->hwnd = NULL;
+ if( p_event->vlc_icon )
+ DestroyIcon( p_event->vlc_icon );
+
HINSTANCE hInstance = GetModuleHandle(NULL);
UnregisterClass( p_event->class_video, hInstance );
UnregisterClass( p_event->class_main, hInstance );
diff --git a/modules/video_output/xcb/xvideo.c b/modules/video_output/xcb/xvideo.c
index 356f3c5..d899a17 100644
--- a/modules/video_output/xcb/xvideo.c
+++ b/modules/video_output/xcb/xvideo.c
@@ -297,10 +297,11 @@ FindFormat (vout_display_t *vd,
static int Open (vlc_object_t *obj)
{
vout_display_t *vd = (vout_display_t *)obj;
- vout_display_sys_t *p_sys = malloc (sizeof (*p_sys));
+ vout_display_sys_t *p_sys;
if (!var_CreateGetBool (obj, "overlay"))
return VLC_EGENERIC;
+ p_sys = malloc (sizeof (*p_sys));
if (p_sys == NULL)
return VLC_ENOMEM;
diff --git a/src/control/audio.c b/src/control/audio.c
index edde5b7..90333a8 100644
--- a/src/control/audio.c
+++ b/src/control/audio.c
@@ -266,9 +266,9 @@ void libvlc_audio_output_device_set( libvlc_media_player_t *mp,
return;
if( asprintf( &psz_config_name, "%s-audio-device", psz_audio_output ) == -1 )
return;
- if( !var_Type( mp, psz_audio_output ) )
+ if( !var_Type( mp, psz_config_name ) )
/* Don't recreate the same variable over and over and over... */
- var_Create( mp, psz_audio_output, VLC_VAR_STRING );
+ var_Create( mp, psz_config_name, VLC_VAR_STRING );
var_SetString( mp, psz_config_name, psz_device_id );
free( psz_config_name );
}
diff --git a/src/input/demux.c b/src/input/demux.c
index 981799f..ab01a13 100644
--- a/src/input/demux.c
+++ b/src/input/demux.c
@@ -162,8 +162,9 @@ demux_t *__demux_New( vlc_object_t *p_obj, input_thread_t *p_parent_input,
/* ID3/APE tags will mess-up demuxer probing so we skip it here.
* ID3/APE parsers will called later on in the demuxer to access the
* skipped info. */
- if( !SkipID3Tag( p_demux ) )
- SkipAPETag( p_demux );
+ while (SkipID3Tag( p_demux ))
+ ;
+ SkipAPETag( p_demux );
p_demux->p_module =
module_need( p_demux, "demux", psz_module,
diff --git a/libs/srtp/Makefile.am b/libs/srtp/Makefile.am
index 8b7522b..b90bed1 100644
--- a/libs/srtp/Makefile.am
+++ b/libs/srtp/Makefile.am
@@ -32,11 +32,6 @@ srtp_LDADD = libvlc_srtp.la
test_recv_LDADD = libvlc_srtp.la
test_aes_LDADD = @GCRYPT_LIBS@
-if !HAVE_WIN32
-libvlc_srtp_la_LIBADD += -lpthread
-test_aes_LDADD += -lpthread
-endif
-
lcov-run:
rm -Rf *.gcda lcov
$(MAKE) $(AM_MAKEFLAGS) check
diff --git a/libs/srtp/srtp.c b/libs/srtp/srtp.c
index f2f2c95..766834c 100644
--- a/libs/srtp/srtp.c
+++ b/libs/srtp/srtp.c
@@ -43,8 +43,6 @@
# include <winsock2.h>
#else
# include <netinet/in.h>
-# include <pthread.h>
-GCRY_THREAD_OPTION_PTHREAD_IMPL;
#endif
#define debug( ... ) (void)0
@@ -86,41 +84,6 @@ static inline unsigned rcc_mode (const srtp_session_t *s)
return (s->flags >> 4) & 3;
}
-static bool libgcrypt_usable = false;
-
-static void initonce_libgcrypt (void)
-{
-#ifndef WIN32
- gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
-#endif
-
- if ((gcry_check_version ("1.1.94") == NULL)
- || gcry_control (GCRYCTL_DISABLE_SECMEM, 0)
- || gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0))
- return;
-
- libgcrypt_usable = true;
-}
-
-static int init_libgcrypt (void)
-{
- int retval;
-#ifndef WIN32
- static pthread_once_t once = PTHREAD_ONCE_INIT;
-
- pthread_once (&once, initonce_libgcrypt);
-#else
-# warning FIXME: This is not thread-safe.
- if (!libgcrypt_usable)
- initonce_libgcrypt ();
-#endif
-
- retval = libgcrypt_usable ? 0 : -1;
-
- return retval;
-
-}
-
static void proto_destroy (srtp_proto_t *p)
{
@@ -170,7 +133,7 @@ static int proto_create (srtp_proto_t *p, int gcipher, int gmd)
srtp_session_t *
srtp_create (int encr, int auth, unsigned tag_len, int prf, unsigned flags)
{
- if ((flags & ~SRTP_FLAGS_MASK) || init_libgcrypt ())
+ if ((flags & ~SRTP_FLAGS_MASK))
return NULL;
int cipher, md;
@@ -833,7 +796,7 @@ srtcp_send (srtp_session_t *s, uint8_t *buf, size_t *lenp, size_t bufsize)
len += 4; /* Digests SRTCP index too */
- const uint8_t *tag = rtcp_digest (s->rtp.mac, buf, len);
+ const uint8_t *tag = rtcp_digest (s->rtcp.mac, buf, len);
memcpy (buf + len, tag, s->tag_len);
*lenp = len + s->tag_len;
return 0;
@@ -861,7 +824,7 @@ srtcp_recv (srtp_session_t *s, uint8_t *buf, size_t *lenp)
return EINVAL;
len -= s->tag_len;
- const uint8_t *tag = rtcp_digest (s->rtp.mac, buf, len);
+ const uint8_t *tag = rtcp_digest (s->rtcp.mac, buf, len);
if (memcmp (buf + len, tag, s->tag_len))
return EACCES;
diff --git a/libs/srtp/srtp.h b/libs/srtp/srtp.h
index b58b9d6..67e8026 100644
--- a/libs/srtp/srtp.h
+++ b/libs/srtp/srtp.h
@@ -24,36 +24,36 @@ typedef struct srtp_session_t srtp_session_t;
enum
{
- SRTP_UNENCRYPTED=0x1, // do not encrypt SRTP packets
- SRTCP_UNENCRYPTED=0x2, // do not encrypt SRTCP packets
- SRTP_UNAUTHENTICATED=0x4, // authenticate only SRTCP packets
+ SRTP_UNENCRYPTED=0x1, //< do not encrypt SRTP packets
+ SRTCP_UNENCRYPTED=0x2, //< do not encrypt SRTCP packets
+ SRTP_UNAUTHENTICATED=0x4, //< authenticate only SRTCP packets
- SRTP_RCC_MODE1=0x10, // use Roll-over-Counter Carry mode 1
- SRTP_RCC_MODE2=0x20, // use Roll-over-Counter Carry mode 2
- SRTP_RCC_MODE3=0x30, // use Roll-over-Counter Carry mode 3 (insecure)
+ SRTP_RCC_MODE1=0x10, //< use Roll-over-Counter Carry mode 1
+ SRTP_RCC_MODE2=0x20, //< use Roll-over-Counter Carry mode 2
+ SRTP_RCC_MODE3=0x30, //< use Roll-over-Counter Carry mode 3 (insecure)
- SRTP_FLAGS_MASK=0x38
+ SRTP_FLAGS_MASK=0x37 //< mask for valid flags
};
-/* SRTP encryption algorithms (ciphers); same values as MIKEY */
+/** SRTP encryption algorithms (ciphers); same values as MIKEY */
enum
{
- SRTP_ENCR_NULL=0,
- SRTP_ENCR_AES_CM=1,
- SRTP_ENCR_AES_F8=2 // not implemented
+ SRTP_ENCR_NULL=0, //< no encryption
+ SRTP_ENCR_AES_CM=1, //< AES counter mode
+ SRTP_ENCR_AES_F8=2, //< AES F8 mode (not implemented)
};
-/* SRTP authenticaton algorithms; same values as MIKEY */
+/** SRTP authenticaton algorithms; same values as MIKEY */
enum
{
- SRTP_AUTH_NULL=0,
- SRTP_AUTH_HMAC_SHA1=1
+ SRTP_AUTH_NULL=0, //< no authentication code
+ SRTP_AUTH_HMAC_SHA1=1, //< HMAC-SHA1
};
-/* SRTP pseudo random function; same values as MIKEY */
+/** SRTP pseudo random function; same values as MIKEY */
enum
{
- SRTP_PRF_AES_CM=0
+ SRTP_PRF_AES_CM=0, //< AES counter mode
};
# ifdef __cplusplus
diff --git a/libs/srtp/test-aes.c b/libs/srtp/test-aes.c
index 463f0b1..ae55f34 100644
--- a/libs/srtp/test-aes.c
+++ b/libs/srtp/test-aes.c
@@ -143,8 +143,6 @@ static void test_keystream (void)
static void srtp_test (void)
{
- if (init_libgcrypt ())
- fatal ("Libgcrypt initialization error");
test_derivation ();
test_keystream ();
}
Index: vlc.spec
===================================================================
RCS file: /cvs/free/rpms/vlc/devel/vlc.spec,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -r1.127 -r1.128
--- vlc.spec 20 Jul 2011 21:00:15 -0000 1.127
+++ vlc.spec 19 Sep 2011 22:55:25 -0000 1.128
@@ -26,7 +26,7 @@
Summary: The cross-platform open-source multimedia framework, player and server
Name: vlc
Version: 1.1.11
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2+
Group: Applications/Multimedia
URL: http://www.videolan.org
@@ -38,6 +38,7 @@
Patch3: vlc-1.1.6-hardode_font_patch.patch
Patch4: vlc-1.1.4-tls_path.patch
Patch5: vlc-1.1.8-bugfix.opencv22.patch
+Patch6: vlc-1.1-bugfix-20110920.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: desktop-file-utils
@@ -251,6 +252,7 @@
%patch5 -p1 -b .opencv22
%endif
sed -i.dmo_pic -e 's/fno-PIC/fPIC/' libs/loader/Makefile.in
+%patch6 -p1
rm modules/access/videodev2.h
ln -sf %{_includedir}/linux/videodev2.h modules/access/videodev2.h
@@ -561,6 +563,9 @@
%changelog
+* Tue Sep 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-2
+- Update to current bugfix
+
* Wed Jul 20 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 1.1.11-1
- Update to 1.1.11
13 years, 2 months
rpms/live555/devel live-cloexec.patch, NONE, 1.1 live-intptr.patch, NONE, 1.1 .cvsignore, 1.9, 1.10 live-inet_ntop.patch, 1.2, 1.3 live-uselocale.patch, 1.2, 1.3 live555.spec, 1.12, 1.13 sources, 1.10, 1.11
by Nicolas Chauvet
Author: kwizart
Update of /cvs/free/rpms/live555/devel
In directory se02.es.rpmfusion.net:/tmp/cvs-serv2730/devel
Modified Files:
.cvsignore live-inet_ntop.patch live-uselocale.patch
live555.spec sources
Added Files:
live-cloexec.patch live-intptr.patch
Log Message:
- Update to 2011.09.02
- Reorder patches
- Add live-cloexec.patch and live-intptr.patch (rebased) from Rémi.
live-cloexec.patch:
GroupsockHelper.cpp | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
--- NEW FILE live-cloexec.patch ---
Copyright (C) 2011 Rémi Denis-Courmont.
Licensed under GNU General Public License version 2 or higher.
diff -ru live.orig/groupsock/GroupsockHelper.cpp live555/groupsock/GroupsockHelper.cpp
--- live.orig/groupsock/GroupsockHelper.cpp 2011-08-23 18:19:59.000000000 +0300
+++ live/groupsock/GroupsockHelper.cpp 2011-08-23 18:26:32.000000000 +0300
@@ -49,13 +49,33 @@
reuseFlag = 1;
}
+static int makeSocket(int type)
+{
+ int fd;
+
+#ifdef SOCK_CLOEXEC
+ fd = socket(AF_INET, type|SOCK_CLOEXEC, 0);
+ if (fd != -1 || errno != EINVAL)
+ return fd;
+#endif
+
+ fd = socket(AF_INET, type, 0);
+ if (fd == -1)
+ return -1;
+#ifdef FD_CLOEXEC
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
+#endif
+ return fd;
+}
+
+
int setupDatagramSocket(UsageEnvironment& env, Port port) {
if (!initializeWinsockIfNecessary()) {
socketErr(env, "Failed to initialize 'winsock': ");
return -1;
}
- int newSocket = socket(AF_INET, SOCK_DGRAM, 0);
+ int newSocket = makeSocket(SOCK_DGRAM);
if (newSocket < 0) {
socketErr(env, "unable to create datagram socket: ");
return newSocket;
@@ -161,7 +181,7 @@
return -1;
}
- int newSocket = socket(AF_INET, SOCK_STREAM, 0);
+ int newSocket = makeSocket(SOCK_STREAM);
if (newSocket < 0) {
socketErr(env, "unable to create stream socket: ");
return newSocket;
live-intptr.patch:
BasicUsageEnvironment/BasicHashTable.cpp | 7 ++++---
BasicUsageEnvironment/BasicTaskScheduler0.cpp | 3 ++-
BasicUsageEnvironment/include/BasicHashTable.hh | 4 +++-
groupsock/Groupsock.cpp | 3 ++-
liveMedia/MP3StreamState.cpp | 9 +++++----
liveMedia/RTCP.cpp | 9 +++++----
6 files changed, 21 insertions(+), 14 deletions(-)
--- NEW FILE live-intptr.patch ---
diff -up live/BasicUsageEnvironment/BasicHashTable.cpp.vlc3 live/BasicUsageEnvironment/BasicHashTable.cpp
--- live/BasicUsageEnvironment/BasicHashTable.cpp.vlc3 2011-09-02 22:52:41.000000000 +0200
+++ live/BasicUsageEnvironment/BasicHashTable.cpp 2011-09-19 23:20:03.696255717 +0200
@@ -26,6 +26,7 @@ along with this library; if not, write t
#endif
#include <string.h>
#include <stdio.h>
+#include <stdint.h>
// When there are this many entries per bucket, on average, rebuild
// the table to increase the number of buckets
@@ -253,17 +254,17 @@ void BasicHashTable::rebuild() {
}
unsigned BasicHashTable::hashIndexFromKey(char const* key) const {
- unsigned result = 0;
+ uintptr_t result = 0;
if (fKeyType == STRING_HASH_KEYS) {
while (1) {
char c = *key++;
if (c == 0) break;
- result += (result<<3) + (unsigned)c;
+ result += (result<<3) + (uintptr_t)c;
}
result &= fMask;
} else if (fKeyType == ONE_WORD_HASH_KEYS) {
- result = randomIndex((unsigned long)key);
+ result = randomIndex((uintptr_t)key);
} else {
unsigned* k = (unsigned*)key;
unsigned long sum = 0;
diff -up live/BasicUsageEnvironment/BasicTaskScheduler0.cpp.vlc3 live/BasicUsageEnvironment/BasicTaskScheduler0.cpp
--- live/BasicUsageEnvironment/BasicTaskScheduler0.cpp.vlc3 2011-09-02 22:52:41.000000000 +0200
+++ live/BasicUsageEnvironment/BasicTaskScheduler0.cpp 2011-09-19 23:20:03.697255868 +0200
@@ -19,6 +19,7 @@ along with this library; if not, write t
#include "BasicUsageEnvironment0.hh"
#include "HandlerSet.hh"
+#include <stdint.h>
////////// A subclass of DelayQueueEntry,
////////// used to implement BasicTaskScheduler0::scheduleDelayedTask()
@@ -68,7 +69,7 @@ TaskToken BasicTaskScheduler0::scheduleD
}
void BasicTaskScheduler0::unscheduleDelayedTask(TaskToken& prevTask) {
- DelayQueueEntry* alarmHandler = fDelayQueue.removeEntry((long)prevTask);
+ DelayQueueEntry* alarmHandler = fDelayQueue.removeEntry((intptr_t)prevTask);
prevTask = NULL;
delete alarmHandler;
}
diff -up live/BasicUsageEnvironment/include/BasicHashTable.hh.vlc3 live/BasicUsageEnvironment/include/BasicHashTable.hh
--- live/BasicUsageEnvironment/include/BasicHashTable.hh.vlc3 2011-09-02 22:52:41.000000000 +0200
+++ live/BasicUsageEnvironment/include/BasicHashTable.hh 2011-09-19 23:20:03.701256472 +0200
@@ -24,6 +24,8 @@ along with this library; if not, write t
#include "HashTable.hh"
#endif
+#include <stdint.h>
+
// A simple hash table implementation, inspired by the hash table
// implementation used in Tcl 7.6: <http://www.tcl.tk/>
@@ -87,7 +89,7 @@ private:
unsigned hashIndexFromKey(char const* key) const;
// used to implement many of the routines above
- unsigned randomIndex(unsigned long i) const {
+ unsigned randomIndex(uintptr_t i) const {
return (((i*1103515245) >> fDownShift) & fMask);
}
diff -up live/groupsock/Groupsock.cpp.vlc3 live/groupsock/Groupsock.cpp
--- live/groupsock/Groupsock.cpp.vlc3 2011-09-19 23:20:03.690254809 +0200
+++ live/groupsock/Groupsock.cpp 2011-09-19 23:20:03.698256018 +0200
@@ -17,6 +17,7 @@ along with this library; if not, write t
// 'Group sockets'
// Implementation
+#include <stdint.h>
#include "Groupsock.hh"
#include "GroupsockHelper.hh"
//##### Eventually fix the following #include; we shouldn't know about tunnels
@@ -401,7 +402,7 @@ int Groupsock::outputToAllMembersExcept(
= (TunnelEncapsulationTrailer*)&data[size];
TunnelEncapsulationTrailer* trailer;
- Boolean misaligned = ((unsigned long)trailerInPacket & 3) != 0;
+ Boolean misaligned = ((uintptr_t)trailerInPacket & 3) != 0;
unsigned trailerOffset;
u_int8_t tunnelCmd;
if (isSSM()) {
diff -up live/liveMedia/MP3StreamState.cpp.vlc3 live/liveMedia/MP3StreamState.cpp
--- live/liveMedia/MP3StreamState.cpp.vlc3 2011-09-02 22:52:41.000000000 +0200
+++ live/liveMedia/MP3StreamState.cpp 2011-09-19 23:20:03.699256170 +0200
@@ -21,6 +21,7 @@ along with this library; if not, write t
#include "MP3StreamState.hh"
#include "InputFile.hh"
#include "GroupsockHelper.hh"
+#include <stdint.h>
#if defined(__WIN32__) || defined(_WIN32)
#define snprintf _snprintf
@@ -36,8 +37,8 @@ MP3StreamState::~MP3StreamState() {
// Close our open file or socket:
if (fFid != NULL && fFid != stdin) {
if (fFidIsReallyASocket) {
- long fid_long = (long)fFid;
- closeSocket((int)fid_long);
+ intptr_t fid_long = (intptr_t)fFid;
+ closeSocket(fid_long);
} else {
CloseInputFile(fFid);
}
@@ -192,7 +193,7 @@ void MP3StreamState::writeGetCmd(char co
char const* const getCmdFmt = "GET %s HTTP/1.1\r\nHost: %s:%d\r\n\r\n";
if (fFidIsReallyASocket) {
- long fid_long = (long)fFid;
+ intptr_t fid_long = (intptr_t)fFid;
int sock = (int)fid_long;
char writeBuf[100];
#if defined(IRIX) || defined(ALPHA) || defined(_QNX4) || defined(IMN_PIM) || defined(CRIS)
@@ -391,7 +392,7 @@ unsigned MP3StreamState::readFromStream(
unsigned numChars) {
// Hack for doing socket I/O instead of file I/O (e.g., on Windows)
if (fFidIsReallyASocket) {
- long fid_long = (long)fFid;
+ intptr_t fid_long = (intptr_t)fFid;
int sock = (int)fid_long;
unsigned totBytesRead = 0;
do {
diff -up live/liveMedia/RTCP.cpp.vlc3 live/liveMedia/RTCP.cpp
--- live/liveMedia/RTCP.cpp.vlc3 2011-09-02 22:52:41.000000000 +0200
+++ live/liveMedia/RTCP.cpp 2011-09-19 23:20:03.700256322 +0200
@@ -18,6 +18,7 @@ along with this library; if not, write t
// RTCP
// Implementation
+#include <stdint.h>
#include "RTCP.hh"
#include "GroupsockHelper.hh"
#include "rtcp_from_spec.h"
@@ -81,14 +82,14 @@ void RTCPMemberDatabase::reapOldMembers(
HashTable::Iterator* iter
= HashTable::Iterator::create(*fTable);
- unsigned long timeCount;
+ uintptr_t timeCount;
char const* key;
- while ((timeCount = (unsigned long)(iter->next(key))) != 0) {
+ while ((timeCount = (uintptr_t)(iter->next(key))) != 0) {
#ifdef DEBUG
fprintf(stderr, "reap: checking SSRC 0x%lx: %ld (threshold %d)\n", (unsigned long)key, timeCount, threshold);
#endif
- if (timeCount < (unsigned long)threshold) { // this SSRC is old
- unsigned long ssrc = (unsigned long)key;
+ if (timeCount < (uintptr_t)threshold) { // this SSRC is old
+ intptr_t ssrc = (uintptr_t)key;
oldSSRC = (unsigned)ssrc;
foundOldMember = True;
}
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/live555/devel/.cvsignore,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- .cvsignore 24 Jan 2011 22:16:07 -0000 1.9
+++ .cvsignore 19 Sep 2011 21:28:48 -0000 1.10
@@ -1 +1 @@
-live.2011.01.24.tar.gz
+live.2011.09.02.tar.gz
live-inet_ntop.patch:
groupsock/Groupsock.cpp | 9 +++++---
groupsock/include/GroupsockHelper.hh | 2 -
groupsock/inet.c | 29 ++++++++++------------------
liveMedia/DarwinInjector.cpp | 3 +-
liveMedia/OnDemandServerMediaSubsession.cpp | 5 ++--
liveMedia/PassiveServerMediaSubsession.cpp | 5 ++--
liveMedia/RTSPClient.cpp | 3 +-
liveMedia/RTSPServer.cpp | 19 +++++++++++-------
liveMedia/SIPClient.cpp | 7 +++---
liveMedia/ServerMediaSession.cpp | 5 ++--
testProgs/sapWatch.cpp | 5 ++--
11 files changed, 50 insertions(+), 42 deletions(-)
Index: live-inet_ntop.patch
===================================================================
RCS file: /cvs/free/rpms/live555/devel/live-inet_ntop.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- live-inet_ntop.patch 24 Jan 2011 22:16:07 -0000 1.2
+++ live-inet_ntop.patch 19 Sep 2011 21:28:48 -0000 1.3
@@ -177,9 +177,9 @@
increaseSendBufferTo(envir(), clientSocket, 50*1024);
#ifdef DEBUG
-- envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr) << '\n';
+- envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr) << "\n";
+ char buf[16];
-+ envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr, buf) << '\n';
++ envir() << "accept()ed connection from " << our_inet_ntoa(clientAddr.sin_addr, buf) << "\n";
#endif
// Create a new object for this RTSP session.
live-uselocale.patch:
live/liveMedia/Locale.cpp | 13 ++++++-------
live/liveMedia/RTSPCommon.cpp | 2 +-
live/liveMedia/include/Locale.hh | 17 ++++++++++-------
liveMedia/RTSPClient.cpp | 8 ++++----
4 files changed, 21 insertions(+), 19 deletions(-)
Index: live-uselocale.patch
===================================================================
RCS file: /cvs/free/rpms/live555/devel/live-uselocale.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- live-uselocale.patch 24 Jan 2011 22:16:07 -0000 1.2
+++ live-uselocale.patch 19 Sep 2011 21:28:49 -0000 1.3
@@ -68,7 +68,7 @@
}
--- live.orig/liveMedia/RTSPClient.cpp 2010-03-16 03:09:46.000000000 +0100
+++ live/liveMedia/RTSPClient.cpp 2010-08-24 15:04:31.000000000 +0200
-@@ -1019,7 +1019,7 @@
+@@ -469,7 +469,7 @@
// This is the default value; we don't need a "Scale:" header:
buf[0] = '\0';
} else {
@@ -77,7 +77,7 @@
sprintf(buf, "Scale: %f\r\n", scale);
}
-@@ -1033,11 +1033,11 @@
+@@ -483,11 +483,11 @@
buf[0] = '\0';
} else if (end < 0) {
// There's no end time:
@@ -91,8 +91,6 @@
sprintf(buf, "Range: npt=%.3f-%.3f\r\n", start, end);
}
---- live/liveMedia/RTSPClient.cpp 2010-08-24 17:05:46.000000000 +0200
-+++ live.new/liveMedia/RTSPClient.cpp 2010-08-24 17:04:50.000000000 +0200
@@ -935,7 +935,7 @@
}
Index: live555.spec
===================================================================
RCS file: /cvs/free/rpms/live555/devel/live555.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- live555.spec 25 Jan 2011 13:53:42 -0000 1.12
+++ live555.spec 19 Sep 2011 21:28:49 -0000 1.13
@@ -1,9 +1,9 @@
-%global date 2011.01.24
+%global date 2011.09.02
%global live_soversion 0
Name: live555
Version: 0
-Release: 0.30.%{date}%{?dist}
+Release: 0.32.%{date}%{?dist}
Summary: Live555.com streaming libraries
Group: System Environment/Libraries
@@ -12,9 +12,11 @@
Source0: http://live555.com/liveMedia/public/live.%{date}.tar.gz
Patch0: live.2010.01.16-shared.patch
#Thoses patches are Copyright Rémi Denis-Courmont - provided as GPLv2+
-Patch1: live-getaddrinfo.patch
-Patch2: live-inet_ntop.patch
-Patch3: live-uselocale.patch
+Patch1: live-uselocale.patch
+Patch2: live-inet_ntop.patch
+Patch3: live-intptr.patch
+Patch4: live-getaddrinfo.patch
+Patch5: live-cloexec.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Provides: live555date%{_isa} = %{date}
@@ -92,6 +94,8 @@
%patch1 -p1 -b .vlc1
%patch2 -p1 -b .vlc2
%patch3 -p1 -b .vlc3
+%patch4 -p1 -b .vlc4
+%patch5 -p1 -b .vlc5
%build
@@ -193,6 +197,11 @@
%{_libdir}/libUsageEnvironment*.a
%changelog
+* Mon Sep 19 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 0-0.32.2011.09.02
+- Update to 2011.09.02
+- Reorder patches
+- Add live-cloexec.patch and live-intptr.patch (rebased) from Rémi.
+
* Tue Jan 25 2011 Nicolas Chauvet <kwizart(a)gmail.com> - 0-0.30.2011.01.24
- Update to 2011.01.24
- Update live555 patches from Rémi.
Index: sources
===================================================================
RCS file: /cvs/free/rpms/live555/devel/sources,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- sources 24 Jan 2011 22:16:07 -0000 1.10
+++ sources 19 Sep 2011 21:28:49 -0000 1.11
@@ -1 +1 @@
-0626e80c774fb27c651c3daf6cc3fb91 live.2011.01.24.tar.gz
+e66901b4bc2b4e6fbd7821880d0373fd live.2011.09.02.tar.gz
13 years, 2 months