freebsd-ports/www/firefox/files/patch-bug826985
Beat Gaetzi 0ccec1792b - Update Thunderbird to 31.3.0
- Update gmp-api to 35.0
- Update openh264 to 1.2
- Update NSS to 3.17.3
- Update Firefox to 34.0.5
- Update Firefox ESR 31.3.0
- Update libxul to 31.3.0
- Improve CONFIGURE_TARGET handling
- Always build using client.mk
- Switch to clang by default on systems without libc++
  (/stable/8 and /stable/9)
- Drop lang/python2 dependency, only lang/python27 is required
  to build
- Use DuckDuckGo searchplugin from upstream (has suggestions
  and purposes)
- Backport a few about:memory fixes
- Backport Web Notifications libnotify integration
- Add GTK3 option for www/firefox. Adwaita is a bit broken
  since Gtk 3.14, see:
  https://bugzilla.mozilla.org/show_bug.cgi?id=1073117

PR:		195559
Submitted by:	Jan Beich
MFH:		2014Q4
Security:	http://vuxml.org/freebsd/7ae61870-9dd2-4884-a2f2-f19bb5784d09.html
2014-12-03 14:55:25 +00:00

166 lines
5.4 KiB
Text

commit 8024d93
Author: Henrik Gulbrandsen <henrik@gulbra.net>
Date: Fri Jan 4 13:49:22 2013 +0100
Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux.
---
configure.in | 7 +++++++
media/webrtc/signaling/test/Makefile.in | 1 +
.../modules/video_capture/linux/device_info_linux.cc | 17 +++++++++++++++++
.../modules/video_capture/linux/video_capture_linux.cc | 16 +++++++++++++++-
.../webrtc/modules/video_capture/video_capture.gypi | 11 +++++++++++
toolkit/library/Makefile.in | 1 +
6 files changed, 52 insertions(+), 1 deletion(-)
diff --git configure.in configure.in
index 55e4cd1..76567b3 100644
--- configure.in
+++ configure.in
@@ -5309,6 +5309,9 @@ if test -n "$MOZ_WEBRTC"; then
MOZ_VP8_ENCODER=1
MOZ_VP8_ERROR_CONCEALMENT=1
+ dnl with libv4l2 we can support more cameras
+ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
+
dnl enable once Signaling lands
MOZ_WEBRTC_SIGNALING=1
AC_DEFINE(MOZ_WEBRTC_SIGNALING)
diff --git build/gyp.mozbuild build/gyp.mozbuild
index b483cd1..f1dd1f0 100644
--- build/gyp.mozbuild
+++ build/gyp.mozbuild
@@ -11,6 +11,7 @@ gyp_vars = {
'have_ethtool_cmd_speed_hi': 1 if CONFIG['MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI'] else 0,
'include_alsa_audio': 1 if CONFIG['MOZ_ALSA'] else 0,
'include_pulse_audio': 1 if CONFIG['MOZ_PULSEAUDIO'] else 0,
+ 'use_libv4l2': 1 if CONFIG['MOZ_LIBV4L2_LIBS'] else 0,
# basic stuff for everything
'include_internal_video_render': 0,
'clang_use_chrome_plugins': 0,
diff --git media/webrtc/signaling/test/moz.build media/webrtc/signaling/test/moz.build
index b483cd1..f1dd1f0 100644
--- media/webrtc/signaling/test/moz.build
+++ media/webrtc/signaling/test/moz.build
@@ -122,6 +122,7 @@ if CONFIG['JS_SHARED_LIBRARY']:
'js',
]
+OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
OS_LIBS += CONFIG['REALTIME_LIBS']
diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
index 239a292..bab496c 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
@@ -25,10 +25,21 @@
#else
#include <linux/videodev2.h>
#endif
+#ifdef HAVE_LIBV4L2
+#include <libv4l2.h>
+#endif
#include "webrtc/system_wrappers/interface/ref_count.h"
#include "webrtc/system_wrappers/interface/trace.h"
+#ifdef HAVE_LIBV4L2
+#define open v4l2_open
+#define close v4l2_close
+#define dup v4l2_dup
+#define ioctl v4l2_ioctl
+#define mmap v4l2_mmap
+#define munmap v4l2_munmap
+#endif
namespace webrtc
{
@@ -130,6 +142,11 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName(
memset(deviceNameUTF8, 0, deviceNameLength);
memcpy(cameraName, cap.card, sizeof(cap.card));
+ if (cameraName[0] == '\0')
+ {
+ sprintf(cameraName, "Camera at /dev/video%d", deviceNumber);
+ }
+
if (deviceNameLength >= strlen(cameraName))
{
memcpy(deviceNameUTF8, cameraName, strlen(cameraName));
diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
index 12df1b3..e9863ba 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
@@ -25,6 +25,9 @@
#else
#include <linux/videodev2.h>
#endif
+#ifdef HAVE_LIBV4L2
+#include <libv4l2.h>
+#endif
#include <new>
@@ -26,6 +31,15 @@
#include "critical_section_wrapper.h"
#include "video_capture_linux.h"
+#ifdef HAVE_LIBV4L2
+#define open v4l2_open
+#define close v4l2_close
+#define dup v4l2_dup
+#define ioctl v4l2_ioctl
+#define mmap v4l2_mmap
+#define munmap v4l2_munmap
+#endif
+
namespace webrtc
{
namespace videocapturemodule
diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
index d46b5aa..e452223 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
+++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
@@ -7,6 +7,9 @@
# be found in the AUTHORS file in the root of the source tree.
{
+ 'variables': {
+ 'use_libv4l2%': 0,
+ },
'targets': [
{
'target_name': 'video_capture_module',
@@ -46,6 +49,19 @@
'linux/video_capture_linux.cc',
'linux/video_capture_linux.h',
],
+ 'conditions': [
+ ['use_libv4l2==1', {
+ 'defines': [
+ 'HAVE_LIBV4L2',
+ ],
+ 'cflags_mozilla': [
+ '$(MOZ_LIBV4L2_CFLAGS)',
+ ],
+ 'libraries': [
+ '-lv4l2',
+ ],
+ }],
+ ],
}], # linux
['OS=="mac"', {
'sources': [
diff --git toolkit/library/moz.build toolkit/library/moz.build
index 9c16ffa..1db3794 100644
--- toolkit/library/moz.build
+++ toolkit/library/moz.build
@@ -163,6 +163,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
]
OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
+OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
OS_LIBS += CONFIG['MOZ_APP_EXTRA_LIBS']