summaryrefslogtreecommitdiff
path: root/wearable/sys
diff options
context:
space:
mode:
Diffstat (limited to 'wearable/sys')
-rw-r--r--wearable/sys/Makefile.am84
-rw-r--r--wearable/sys/Makefile.in869
-rw-r--r--wearable/sys/directsound/Makefile.am18
-rw-r--r--wearable/sys/directsound/Makefile.in828
-rw-r--r--wearable/sys/directsound/gstdirectsoundplugin.c49
-rw-r--r--wearable/sys/directsound/gstdirectsoundsink.c785
-rw-r--r--wearable/sys/directsound/gstdirectsoundsink.h97
-rw-r--r--wearable/sys/oss/Makefile.am28
-rw-r--r--wearable/sys/oss/Makefile.in879
-rw-r--r--wearable/sys/oss/common.h43
-rw-r--r--wearable/sys/oss/gstossaudio.c61
-rw-r--r--wearable/sys/oss/gstossdmabuffer.h77
-rw-r--r--wearable/sys/oss/gstosshelper.c407
-rw-r--r--wearable/sys/oss/gstosshelper.h43
-rw-r--r--wearable/sys/oss/gstossmixer.c378
-rw-r--r--wearable/sys/oss/gstossmixer.h171
-rw-r--r--wearable/sys/oss/gstossmixerelement.c218
-rw-r--r--wearable/sys/oss/gstossmixerelement.h59
-rw-r--r--wearable/sys/oss/gstossmixertrack.c172
-rw-r--r--wearable/sys/oss/gstossmixertrack.h62
-rw-r--r--wearable/sys/oss/gstosssink.c565
-rw-r--r--wearable/sys/oss/gstosssink.h62
-rw-r--r--wearable/sys/oss/gstosssrc.c537
-rw-r--r--wearable/sys/oss/gstosssrc.h67
-rw-r--r--wearable/sys/oss4/Makefile.am33
-rw-r--r--wearable/sys/oss4/Makefile.in892
-rw-r--r--wearable/sys/oss4/oss4-audio.c714
-rw-r--r--wearable/sys/oss4/oss4-audio.h43
-rw-r--r--wearable/sys/oss4/oss4-mixer-enum.c269
-rw-r--r--wearable/sys/oss4/oss4-mixer-enum.h67
-rw-r--r--wearable/sys/oss4/oss4-mixer-slider.c311
-rw-r--r--wearable/sys/oss4/oss4-mixer-slider.h70
-rw-r--r--wearable/sys/oss4/oss4-mixer-switch.c150
-rw-r--r--wearable/sys/oss4/oss4-mixer-switch.h65
-rw-r--r--wearable/sys/oss4/oss4-mixer.c1862
-rw-r--r--wearable/sys/oss4/oss4-mixer.h128
-rw-r--r--wearable/sys/oss4/oss4-property-probe.c412
-rw-r--r--wearable/sys/oss4/oss4-property-probe.h38
-rw-r--r--wearable/sys/oss4/oss4-sink.c696
-rw-r--r--wearable/sys/oss4/oss4-sink.h64
-rw-r--r--wearable/sys/oss4/oss4-soundcard.h2067
-rw-r--r--wearable/sys/oss4/oss4-source.c997
-rw-r--r--wearable/sys/oss4/oss4-source.h89
-rw-r--r--wearable/sys/osxaudio/Makefile.am26
-rw-r--r--wearable/sys/osxaudio/Makefile.in858
-rw-r--r--wearable/sys/osxaudio/gstosxaudio.c53
-rw-r--r--wearable/sys/osxaudio/gstosxaudioelement.c92
-rw-r--r--wearable/sys/osxaudio/gstosxaudioelement.h84
-rw-r--r--wearable/sys/osxaudio/gstosxaudiosink.c348
-rw-r--r--wearable/sys/osxaudio/gstosxaudiosink.h86
-rw-r--r--wearable/sys/osxaudio/gstosxaudiosrc.c362
-rw-r--r--wearable/sys/osxaudio/gstosxaudiosrc.h82
-rw-r--r--wearable/sys/osxaudio/gstosxringbuffer.c689
-rw-r--r--wearable/sys/osxaudio/gstosxringbuffer.h94
-rw-r--r--wearable/sys/osxvideo/Makefile.am19
-rw-r--r--wearable/sys/osxvideo/Makefile.in824
-rw-r--r--wearable/sys/osxvideo/cocoawindow.h74
-rw-r--r--wearable/sys/osxvideo/cocoawindow.m432
-rw-r--r--wearable/sys/osxvideo/osxvideosink.h85
-rw-r--r--wearable/sys/osxvideo/osxvideosink.m524
-rw-r--r--wearable/sys/sunaudio/Makefile.am26
-rw-r--r--wearable/sys/sunaudio/Makefile.in877
-rw-r--r--wearable/sys/sunaudio/gstsunaudio.c63
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixer.c104
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixer.h51
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixerctrl.c585
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixerctrl.h189
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixeroptions.c157
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixeroptions.h65
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixertrack.c158
-rw-r--r--wearable/sys/sunaudio/gstsunaudiomixertrack.h78
-rw-r--r--wearable/sys/sunaudio/gstsunaudiosink.c651
-rw-r--r--wearable/sys/sunaudio/gstsunaudiosink.h78
-rw-r--r--wearable/sys/sunaudio/gstsunaudiosrc.c423
-rw-r--r--wearable/sys/sunaudio/gstsunaudiosrc.h67
-rw-r--r--wearable/sys/v4l2/Makefile.am60
-rw-r--r--wearable/sys/v4l2/Makefile.in953
-rw-r--r--wearable/sys/v4l2/README32
-rw-r--r--wearable/sys/v4l2/gstv4l2.c86
-rw-r--r--wearable/sys/v4l2/gstv4l2bufferpool.c652
-rw-r--r--wearable/sys/v4l2/gstv4l2bufferpool.h97
-rw-r--r--wearable/sys/v4l2/gstv4l2colorbalance.c106
-rw-r--r--wearable/sys/v4l2/gstv4l2colorbalance.h104
-rw-r--r--wearable/sys/v4l2/gstv4l2object.c2247
-rw-r--r--wearable/sys/v4l2/gstv4l2object.h242
-rw-r--r--wearable/sys/v4l2/gstv4l2radio.c635
-rw-r--r--wearable/sys/v4l2/gstv4l2radio.h67
-rw-r--r--wearable/sys/v4l2/gstv4l2sink.c971
-rw-r--r--wearable/sys/v4l2/gstv4l2sink.h91
-rw-r--r--wearable/sys/v4l2/gstv4l2src.c1072
-rw-r--r--wearable/sys/v4l2/gstv4l2src.h102
-rw-r--r--wearable/sys/v4l2/gstv4l2tuner.c364
-rw-r--r--wearable/sys/v4l2/gstv4l2tuner.h198
-rw-r--r--wearable/sys/v4l2/gstv4l2vidorient.c104
-rw-r--r--wearable/sys/v4l2/gstv4l2vidorient.h117
-rw-r--r--wearable/sys/v4l2/gstv4l2xoverlay.c486
-rw-r--r--wearable/sys/v4l2/gstv4l2xoverlay.h70
-rw-r--r--wearable/sys/v4l2/v4l2_calls.c925
-rw-r--r--wearable/sys/v4l2/v4l2_calls.h142
-rw-r--r--wearable/sys/v4l2/v4l2src_calls.c434
-rw-r--r--wearable/sys/v4l2/v4l2src_calls.h46
-rw-r--r--wearable/sys/waveform/Makefile.am20
-rw-r--r--wearable/sys/waveform/Makefile.in828
-rw-r--r--wearable/sys/waveform/gstwaveformplugin.c42
-rw-r--r--wearable/sys/waveform/gstwaveformsink.c585
-rw-r--r--wearable/sys/waveform/gstwaveformsink.h107
-rw-r--r--wearable/sys/ximage/Makefile.am16
-rw-r--r--wearable/sys/ximage/Makefile.in825
-rw-r--r--wearable/sys/ximage/gstximagesrc.c1317
-rw-r--r--wearable/sys/ximage/gstximagesrc.h113
-rw-r--r--wearable/sys/ximage/ximageutil.c501
-rw-r--r--wearable/sys/ximage/ximageutil.h182
112 files changed, 0 insertions, 38769 deletions
diff --git a/wearable/sys/Makefile.am b/wearable/sys/Makefile.am
deleted file mode 100644
index ab08d04..0000000
--- a/wearable/sys/Makefile.am
+++ /dev/null
@@ -1,84 +0,0 @@
-# if USE_DXR3
-# DXR3_DIR=dxr3
-# else
-# DXR3_DIR=
-# endif
-
-if USE_OSS
-OSS_DIR=oss
-else
-OSS_DIR=
-endif
-
-if USE_OSS4
-OSS4_DIR=oss4
-else
-OSS4_DIR=
-endif
-
-
-if USE_DIRECTSOUND
-DIRECTSOUND_DIR=directsound
-else
-DIRECTSOUND_DIR=
-endif
-
-if USE_SUNAUDIO
-SUNAUDIO_DIR=sunaudio
-else
-SUNAUDIO_DIR=
-endif
-
-if USE_OSX_AUDIO
-OSX_AUDIO_DIR=osxaudio
-else
-OSX_AUDIO_DIR=
-endif
-
-if USE_OSX_VIDEO
-OSX_VIDEO_DIR=osxvideo
-else
-OSX_VIDEO_DIR=
-endif
-
-# if USE_QCAM
-# QCAM_DIR=qcam
-# else
-# QCAM_DIR=
-# endif
-
-if USE_GST_V4L2
-V4L2_DIR=v4l2
-else
-V4L2_DIR=
-endif
-
-# if USE_VCD
-# VCD_DIR=vcd
-# else
-# VCD_DIR=
-# endif
-
-# if USE_CDROM
-# CDROM_DIR=cdrom
-# else
-# CDROM_DIR=
-# endif
-
-# if USE_OPENGL
-# GL_DIR=glsink
-# else
-# GL_DIR=
-# endif
-
-if USE_X
-XIMAGE_DIR=ximage
-else
-XIMAGE_DIR=
-endif
-
-SUBDIRS=$(DIRECTSOUND_DIR) $(OSS_DIR) $(OSS4_DIR) $(OSX_AUDIO_DIR) $(OSX_VIDEO_DIR) $(SUNAUDIO_DIR) $(V4L2_DIR) $(XIMAGE_DIR)
-
-DIST_SUBDIRS=directsound oss oss4 osxaudio osxvideo sunaudio v4l2 waveform ximage
-
-include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/wearable/sys/Makefile.in b/wearable/sys/Makefile.in
deleted file mode 100644
index c37f1df..0000000
--- a/wearable/sys/Makefile.in
+++ /dev/null
@@ -1,869 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# if USE_DXR3
-# DXR3_DIR=dxr3
-# else
-# DXR3_DIR=
-# endif
-
-# include this at the end of $MODULE/ext/Makefile.am to force make to
-# build subdirectories in parallel when make -jN is used. We will end up
-# descending into all subdirectories a second time, but only after the first
-# (parallel) run has finished, so it should go right through the second time.
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/common/parallel-subdirs.mak
-subdir = sys
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-dvi-recursive install-exec-recursive \
- install-html-recursive install-info-recursive \
- install-pdf-recursive install-ps-recursive install-recursive \
- installcheck-recursive installdirs-recursive pdf-recursive \
- ps-recursive uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
- distdir
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-@USE_OSS_FALSE@OSS_DIR =
-@USE_OSS_TRUE@OSS_DIR = oss
-@USE_OSS4_FALSE@OSS4_DIR =
-@USE_OSS4_TRUE@OSS4_DIR = oss4
-@USE_DIRECTSOUND_FALSE@DIRECTSOUND_DIR =
-@USE_DIRECTSOUND_TRUE@DIRECTSOUND_DIR = directsound
-@USE_SUNAUDIO_FALSE@SUNAUDIO_DIR =
-@USE_SUNAUDIO_TRUE@SUNAUDIO_DIR = sunaudio
-@USE_OSX_AUDIO_FALSE@OSX_AUDIO_DIR =
-@USE_OSX_AUDIO_TRUE@OSX_AUDIO_DIR = osxaudio
-@USE_OSX_VIDEO_FALSE@OSX_VIDEO_DIR =
-@USE_OSX_VIDEO_TRUE@OSX_VIDEO_DIR = osxvideo
-@USE_GST_V4L2_FALSE@V4L2_DIR =
-
-# if USE_QCAM
-# QCAM_DIR=qcam
-# else
-# QCAM_DIR=
-# endif
-@USE_GST_V4L2_TRUE@V4L2_DIR = v4l2
-@USE_X_FALSE@XIMAGE_DIR =
-
-# if USE_VCD
-# VCD_DIR=vcd
-# else
-# VCD_DIR=
-# endif
-
-# if USE_CDROM
-# CDROM_DIR=cdrom
-# else
-# CDROM_DIR=
-# endif
-
-# if USE_OPENGL
-# GL_DIR=glsink
-# else
-# GL_DIR=
-# endif
-@USE_X_TRUE@XIMAGE_DIR = ximage
-SUBDIRS = $(DIRECTSOUND_DIR) $(OSS_DIR) $(OSS4_DIR) $(OSX_AUDIO_DIR) $(OSX_VIDEO_DIR) $(SUNAUDIO_DIR) $(V4L2_DIR) $(XIMAGE_DIR)
-DIST_SUBDIRS = directsound oss oss4 osxaudio osxvideo sunaudio v4l2 waveform ximage
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/parallel-subdirs.mak $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-$(top_srcdir)/common/parallel-subdirs.mak:
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
- install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
- all all-am check check-am clean clean-generic clean-libtool \
- ctags ctags-recursive distclean distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
- uninstall uninstall-am
-
-
-.PHONY: independent-subdirs $(SUBDIRS)
-
-independent-subdirs: $(SUBDIRS)
-
-$(SUBDIRS):
- $(MAKE) -C $@
-
-all-recursive: independent-subdirs
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/directsound/Makefile.am b/wearable/sys/directsound/Makefile.am
deleted file mode 100644
index 8227905..0000000
--- a/wearable/sys/directsound/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-plugin_LTLIBRARIES = libgstdirectsoundsink.la
-
-libgstdirectsoundsink_la_SOURCES = gstdirectsoundsink.c gstdirectsoundplugin.c
-libgstdirectsoundsink_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CFLAGS) \
- $(DIRECTSOUND_CFLAGS)
-libgstdirectsoundsink_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstaudio-$(GST_MAJORMINOR) -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS) \
- $(DIRECTSOUND_LIBS)
-libgstdirectsoundsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DIRECTSOUND_LDFLAGS)
-libgstdirectsoundsink_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstdirectsoundsink.h
diff --git a/wearable/sys/directsound/Makefile.in b/wearable/sys/directsound/Makefile.in
deleted file mode 100644
index 94cbb01..0000000
--- a/wearable/sys/directsound/Makefile.in
+++ /dev/null
@@ -1,828 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/directsound
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstdirectsoundsink_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstdirectsoundsink_la_OBJECTS = \
- libgstdirectsoundsink_la-gstdirectsoundsink.lo \
- libgstdirectsoundsink_la-gstdirectsoundplugin.lo
-libgstdirectsoundsink_la_OBJECTS = \
- $(am_libgstdirectsoundsink_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstdirectsoundsink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(libgstdirectsoundsink_la_CFLAGS) \
- $(CFLAGS) $(libgstdirectsoundsink_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstdirectsoundsink_la_SOURCES)
-DIST_SOURCES = $(libgstdirectsoundsink_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstdirectsoundsink.la
-libgstdirectsoundsink_la_SOURCES = gstdirectsoundsink.c gstdirectsoundplugin.c
-libgstdirectsoundsink_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CFLAGS) \
- $(DIRECTSOUND_CFLAGS)
-
-libgstdirectsoundsink_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstaudio-$(GST_MAJORMINOR) -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS) \
- $(DIRECTSOUND_LIBS)
-
-libgstdirectsoundsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DIRECTSOUND_LDFLAGS)
-libgstdirectsoundsink_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstdirectsoundsink.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/directsound/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/directsound/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstdirectsoundsink.la: $(libgstdirectsoundsink_la_OBJECTS) $(libgstdirectsoundsink_la_DEPENDENCIES) $(EXTRA_libgstdirectsoundsink_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstdirectsoundsink_la_LINK) -rpath $(plugindir) $(libgstdirectsoundsink_la_OBJECTS) $(libgstdirectsoundsink_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundplugin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundsink.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstdirectsoundsink_la-gstdirectsoundsink.lo: gstdirectsoundsink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdirectsoundsink_la_CFLAGS) $(CFLAGS) -MT libgstdirectsoundsink_la-gstdirectsoundsink.lo -MD -MP -MF $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundsink.Tpo -c -o libgstdirectsoundsink_la-gstdirectsoundsink.lo `test -f 'gstdirectsoundsink.c' || echo '$(srcdir)/'`gstdirectsoundsink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundsink.Tpo $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundsink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdirectsoundsink.c' object='libgstdirectsoundsink_la-gstdirectsoundsink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdirectsoundsink_la_CFLAGS) $(CFLAGS) -c -o libgstdirectsoundsink_la-gstdirectsoundsink.lo `test -f 'gstdirectsoundsink.c' || echo '$(srcdir)/'`gstdirectsoundsink.c
-
-libgstdirectsoundsink_la-gstdirectsoundplugin.lo: gstdirectsoundplugin.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdirectsoundsink_la_CFLAGS) $(CFLAGS) -MT libgstdirectsoundsink_la-gstdirectsoundplugin.lo -MD -MP -MF $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundplugin.Tpo -c -o libgstdirectsoundsink_la-gstdirectsoundplugin.lo `test -f 'gstdirectsoundplugin.c' || echo '$(srcdir)/'`gstdirectsoundplugin.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundplugin.Tpo $(DEPDIR)/libgstdirectsoundsink_la-gstdirectsoundplugin.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdirectsoundplugin.c' object='libgstdirectsoundsink_la-gstdirectsoundplugin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdirectsoundsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdirectsoundsink_la_CFLAGS) $(CFLAGS) -c -o libgstdirectsoundsink_la-gstdirectsoundplugin.lo `test -f 'gstdirectsoundplugin.c' || echo '$(srcdir)/'`gstdirectsoundplugin.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/directsound/gstdirectsoundplugin.c b/wearable/sys/directsound/gstdirectsoundplugin.c
deleted file mode 100644
index 1af665a..0000000
--- a/wearable/sys/directsound/gstdirectsoundplugin.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* GStreamer
-* Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
-* Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
-*
-* gstdirectsoundplugin.c:
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*
-*
-* The development of this code was made possible due to the involvement
-* of Pioneers of the Inevitable, the creators of the Songbird Music player
-*
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstdirectsoundsink.h"
-
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "directsoundsink", GST_RANK_PRIMARY,
- GST_TYPE_DIRECTSOUND_SINK))
- return FALSE;
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "directsound",
- "Direct Sound plugin library",
- plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/directsound/gstdirectsoundsink.c b/wearable/sys/directsound/gstdirectsoundsink.c
deleted file mode 100644
index 2f9a04c..0000000
--- a/wearable/sys/directsound/gstdirectsoundsink.c
+++ /dev/null
@@ -1,785 +0,0 @@
-/* GStreamer
-* Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
-* Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
-* Copyright (C) 2010 Fluendo S.A. <support@fluendo.com>
-*
-* gstdirectsoundsink.c:
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*
-*
-* The development of this code was made possible due to the involvement
-* of Pioneers of the Inevitable, the creators of the Songbird Music player
-*
-*/
-
-/**
- * SECTION:element-directsoundsink
- *
- * This element lets you output sound using the DirectSound API.
- *
- * Note that you should almost always use generic audio conversion elements
- * like audioconvert and audioresample in front of an audiosink to make sure
- * your pipeline works under all circumstances (those conversion elements will
- * act in passthrough-mode if no conversion is necessary).
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v audiotestsrc ! audioconvert ! volume volume=0.1 ! directsoundsink
- * ]| will output a sine wave (continuous beep sound) to your sound card (with
- * a very low volume as precaution).
- * |[
- * gst-launch -v filesrc location=music.ogg ! decodebin ! audioconvert ! audioresample ! directsoundsink
- * ]| will play an Ogg/Vorbis audio file and output it.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstdirectsoundsink.h"
-
-#include <math.h>
-
-#ifdef __CYGWIN__
-#include <unistd.h>
-#ifndef _swab
-#define _swab swab
-#endif
-#endif
-
-GST_DEBUG_CATEGORY_STATIC (directsoundsink_debug);
-#define GST_CAT_DEFAULT directsoundsink_debug
-
-static void gst_directsound_sink_finalise (GObject * object);
-
-static void gst_directsound_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_directsound_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_directsound_sink_getcaps (GstBaseSink * bsink);
-static gboolean gst_directsound_sink_prepare (GstAudioSink * asink,
- GstRingBufferSpec * spec);
-static gboolean gst_directsound_sink_unprepare (GstAudioSink * asink);
-
-static gboolean gst_directsound_sink_open (GstAudioSink * asink);
-static gboolean gst_directsound_sink_close (GstAudioSink * asink);
-static guint gst_directsound_sink_write (GstAudioSink * asink, gpointer data,
- guint length);
-static guint gst_directsound_sink_delay (GstAudioSink * asink);
-static void gst_directsound_sink_reset (GstAudioSink * asink);
-static GstCaps *gst_directsound_probe_supported_formats (GstDirectSoundSink *
- dsoundsink, const GstCaps * template_caps);
-
-/* interfaces */
-static void gst_directsound_sink_interfaces_init (GType type);
-static void
-gst_directsound_sink_implements_interface_init (GstImplementsInterfaceClass *
- iface);
-static void gst_directsound_sink_mixer_interface_init (GstMixerClass * iface);
-
-static GstStaticPadTemplate directsoundsink_sink_factory =
- GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "signed = (boolean) TRUE, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]; "
- "audio/x-raw-int, "
- "signed = (boolean) FALSE, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ];"
- "audio/x-iec958"));
-
-enum
-{
- PROP_0,
- PROP_VOLUME
-};
-
-GST_BOILERPLATE_FULL (GstDirectSoundSink, gst_directsound_sink, GstAudioSink,
- GST_TYPE_AUDIO_SINK, gst_directsound_sink_interfaces_init);
-
-/* interfaces stuff */
-static void
-gst_directsound_sink_interfaces_init (GType type)
-{
- static const GInterfaceInfo implements_interface_info = {
- (GInterfaceInitFunc) gst_directsound_sink_implements_interface_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo mixer_interface_info = {
- (GInterfaceInitFunc) gst_directsound_sink_mixer_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &implements_interface_info);
- g_type_add_interface_static (type, GST_TYPE_MIXER, &mixer_interface_info);
-}
-
-static gboolean
-gst_directsound_sink_interface_supported (GstImplementsInterface * iface,
- GType iface_type)
-{
- g_return_val_if_fail (iface_type == GST_TYPE_MIXER, FALSE);
-
- /* for the sake of this example, we'll always support it. However, normally,
- * you would check whether the device you've opened supports mixers. */
- return TRUE;
-}
-
-static void
-gst_directsound_sink_implements_interface_init (GstImplementsInterfaceClass *
- iface)
-{
- iface->supported = gst_directsound_sink_interface_supported;
-}
-
-/*
- * This function returns the list of support tracks (inputs, outputs)
- * on this element instance. Elements usually build this list during
- * _init () or when going from NULL to READY.
- */
-
-static const GList *
-gst_directsound_sink_mixer_list_tracks (GstMixer * mixer)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (mixer);
-
- return dsoundsink->tracks;
-}
-
-static void
-gst_directsound_sink_set_volume (GstDirectSoundSink * dsoundsink)
-{
- if (dsoundsink->pDSBSecondary) {
- /* DirectSound controls volume using units of 100th of a decibel,
- * ranging from -10000 to 0. We use a linear scale of 0 - 100
- * here, so remap.
- */
- long dsVolume;
- if (dsoundsink->volume == 0)
- dsVolume = -10000;
- else
- dsVolume = 100 * (long) (20 * log10 ((double) dsoundsink->volume / 100.));
- dsVolume = CLAMP (dsVolume, -10000, 0);
-
- GST_DEBUG_OBJECT (dsoundsink,
- "Setting volume on secondary buffer to %d from %d", (int) dsVolume,
- (int) dsoundsink->volume);
- IDirectSoundBuffer_SetVolume (dsoundsink->pDSBSecondary, dsVolume);
- }
-}
-
-/*
- * Set volume. volumes is an array of size track->num_channels, and
- * each value in the array gives the wanted volume for one channel
- * on the track.
- */
-
-static void
-gst_directsound_sink_mixer_set_volume (GstMixer * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (mixer);
-
- if (volumes[0] != dsoundsink->volume) {
- dsoundsink->volume = volumes[0];
-
- gst_directsound_sink_set_volume (dsoundsink);
- }
-}
-
-static void
-gst_directsound_sink_mixer_get_volume (GstMixer * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (mixer);
-
- volumes[0] = dsoundsink->volume;
-}
-
-static void
-gst_directsound_sink_mixer_interface_init (GstMixerClass * iface)
-{
- /* the mixer interface requires a definition of the mixer type:
- * hardware or software? */
- GST_MIXER_TYPE (iface) = GST_MIXER_SOFTWARE;
-
- /* virtual function pointers */
- iface->list_tracks = gst_directsound_sink_mixer_list_tracks;
- iface->set_volume = gst_directsound_sink_mixer_set_volume;
- iface->get_volume = gst_directsound_sink_mixer_get_volume;
-}
-
-static void
-gst_directsound_sink_finalise (GObject * object)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (object);
-
- g_mutex_free (dsoundsink->dsound_lock);
-
- if (dsoundsink->tracks) {
- g_list_foreach (dsoundsink->tracks, (GFunc) g_object_unref, NULL);
- g_list_free (dsoundsink->tracks);
- dsoundsink->tracks = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_directsound_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class,
- "Direct Sound Audio Sink", "Sink/Audio",
- "Output to a sound card via Direct Sound",
- "Sebastien Moutte <sebastien@moutte.net>");
- gst_element_class_add_static_pad_template (element_class,
- &directsoundsink_sink_factory);
-}
-
-static void
-gst_directsound_sink_class_init (GstDirectSoundSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
- GstBaseAudioSinkClass *gstbaseaudiosink_class;
- GstAudioSinkClass *gstaudiosink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
- gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
- gstaudiosink_class = (GstAudioSinkClass *) klass;
-
- GST_DEBUG_CATEGORY_INIT (directsoundsink_debug, "directsoundsink", 0,
- "DirectSound sink");
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = gst_directsound_sink_finalise;
- gobject_class->set_property = gst_directsound_sink_set_property;
- gobject_class->get_property = gst_directsound_sink_get_property;
-
- gstbasesink_class->get_caps =
- GST_DEBUG_FUNCPTR (gst_directsound_sink_getcaps);
-
- gstaudiosink_class->prepare =
- GST_DEBUG_FUNCPTR (gst_directsound_sink_prepare);
- gstaudiosink_class->unprepare =
- GST_DEBUG_FUNCPTR (gst_directsound_sink_unprepare);
- gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_directsound_sink_open);
- gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_directsound_sink_close);
- gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_directsound_sink_write);
- gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_directsound_sink_delay);
- gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_directsound_sink_reset);
-
- g_object_class_install_property (gobject_class,
- PROP_VOLUME,
- g_param_spec_double ("volume", "Volume",
- "Volume of this stream", 0.0, 1.0, 1.0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_directsound_sink_init (GstDirectSoundSink * dsoundsink,
- GstDirectSoundSinkClass * g_class)
-{
- GstMixerTrack *track = NULL;
-
- dsoundsink->tracks = NULL;
- track = g_object_new (GST_TYPE_MIXER_TRACK, NULL);
- track->label = g_strdup ("DSoundTrack");
- track->num_channels = 2;
- track->min_volume = 0;
- track->max_volume = 100;
- track->flags = GST_MIXER_TRACK_OUTPUT;
- dsoundsink->tracks = g_list_append (dsoundsink->tracks, track);
-
- dsoundsink->pDS = NULL;
- dsoundsink->cached_caps = NULL;
- dsoundsink->pDSBSecondary = NULL;
- dsoundsink->current_circular_offset = 0;
- dsoundsink->buffer_size = DSBSIZE_MIN;
- dsoundsink->volume = 100;
- dsoundsink->dsound_lock = g_mutex_new ();
- dsoundsink->first_buffer_after_reset = FALSE;
-}
-
-static void
-gst_directsound_sink_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec)
-{
- GstDirectSoundSink *sink = GST_DIRECTSOUND_SINK (object);
-
- switch (prop_id) {
- case PROP_VOLUME:
- sink->volume = (int) (g_value_get_double (value) * 100);
- gst_directsound_sink_set_volume (sink);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_directsound_sink_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec)
-{
- GstDirectSoundSink *sink = GST_DIRECTSOUND_SINK (object);
-
- switch (prop_id) {
- case PROP_VOLUME:
- g_value_set_double (value, (double) sink->volume / 100.);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_directsound_sink_getcaps (GstBaseSink * bsink)
-{
- GstElementClass *element_class;
- GstPadTemplate *pad_template;
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (bsink);
- GstCaps *caps;
- gchar *caps_string = NULL;
-
- if (dsoundsink->pDS == NULL) {
- GST_DEBUG_OBJECT (dsoundsink, "device not open, using template caps");
- return NULL; /* base class will get template caps for us */
- }
-
- if (dsoundsink->cached_caps) {
- caps_string = gst_caps_to_string (dsoundsink->cached_caps);
- GST_DEBUG_OBJECT (dsoundsink, "Returning cached caps: %s", caps_string);
- g_free (caps_string);
- return gst_caps_ref (dsoundsink->cached_caps);
- }
-
- element_class = GST_ELEMENT_GET_CLASS (dsoundsink);
- pad_template = gst_element_class_get_pad_template (element_class, "sink");
- g_return_val_if_fail (pad_template != NULL, NULL);
-
- caps = gst_directsound_probe_supported_formats (dsoundsink,
- gst_pad_template_get_caps (pad_template));
- if (caps) {
- dsoundsink->cached_caps = gst_caps_ref (caps);
- }
-
- if (caps) {
- gchar *caps_string = gst_caps_to_string (caps);
- GST_DEBUG_OBJECT (dsoundsink, "returning caps %s", caps_string);
- g_free (caps_string);
- }
-
- return caps;
-}
-
-static gboolean
-gst_directsound_sink_open (GstAudioSink * asink)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (asink);
- HRESULT hRes;
-
- /* create and initialize a DirecSound object */
- if (FAILED (hRes = DirectSoundCreate (NULL, &dsoundsink->pDS, NULL))) {
- GST_ELEMENT_ERROR (dsoundsink, RESOURCE, OPEN_READ,
- ("gst_directsound_sink_open: DirectSoundCreate: %s",
- DXGetErrorString9 (hRes)), (NULL));
- return FALSE;
- }
-
- if (FAILED (hRes = IDirectSound_SetCooperativeLevel (dsoundsink->pDS,
- GetDesktopWindow (), DSSCL_PRIORITY))) {
- GST_ELEMENT_ERROR (dsoundsink, RESOURCE, OPEN_READ,
- ("gst_directsound_sink_open: IDirectSound_SetCooperativeLevel: %s",
- DXGetErrorString9 (hRes)), (NULL));
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_directsound_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
-{
- GstDirectSoundSink *dsoundsink = GST_DIRECTSOUND_SINK (asink);
- HRESULT hRes;
- DSBUFFERDESC descSecondary;
- WAVEFORMATEX wfx;
-
- /*save number of bytes per sample and buffer format */
- dsoundsink->bytes_per_sample = spec->bytes_per_sample;
- dsoundsink->buffer_format = spec->format;
-
- /* fill the WAVEFORMATEX structure with spec params */
- memset (&wfx, 0, sizeof (wfx));
- if (spec->format != GST_IEC958) {
- wfx.cbSize = sizeof (wfx);
- wfx.wFormatTag = WAVE_FORMAT_PCM;
- wfx.nChannels = spec->channels;
- wfx.nSamplesPerSec = spec->rate;
- wfx.wBitsPerSample = (spec->bytes_per_sample * 8) / wfx.nChannels;
- wfx.nBlockAlign = spec->bytes_per_sample;
- wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
-
- /* Create directsound buffer with size based on our configured
- * buffer_size (which is 200 ms by default) */
- dsoundsink->buffer_size =
- gst_util_uint64_scale_int (wfx.nAvgBytesPerSec, spec->buffer_time,
- GST_MSECOND);
- /* Make sure we make those numbers multiple of our sample size in bytes */
- dsoundsink->buffer_size += dsoundsink->buffer_size % spec->bytes_per_sample;
-
- spec->segsize =
- gst_util_uint64_scale_int (wfx.nAvgBytesPerSec, spec->latency_time,
- GST_MSECOND);
- spec->segsize += spec->segsize % spec->bytes_per_sample;
- spec->segtotal = dsoundsink->buffer_size / spec->segsize;
- } else {
-#ifdef WAVE_FORMAT_DOLBY_AC3_SPDIF
- wfx.cbSize = 0;
- wfx.wFormatTag = WAVE_FORMAT_DOLBY_AC3_SPDIF;
- wfx.nChannels = 2;
- wfx.nSamplesPerSec = spec->rate;
- wfx.wBitsPerSample = 16;
- wfx.nBlockAlign = wfx.wBitsPerSample / 8 * wfx.nChannels;
- wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
-
- spec->segsize = 6144;
- spec->segtotal = 10;
-#else
- g_assert_not_reached ();
-#endif
- }
-
- // Make the final buffer size be an integer number of segments
- dsoundsink->buffer_size = spec->segsize * spec->segtotal;
-
- GST_INFO_OBJECT (dsoundsink,
- "GstRingBufferSpec->channels: %d, GstRingBufferSpec->rate: %d, GstRingBufferSpec->bytes_per_sample: %d\n"
- "WAVEFORMATEX.nSamplesPerSec: %ld, WAVEFORMATEX.wBitsPerSample: %d, WAVEFORMATEX.nBlockAlign: %d, WAVEFORMATEX.nAvgBytesPerSec: %ld\n"
- "Size of dsound circular buffer=>%d\n", spec->channels, spec->rate,
- spec->bytes_per_sample, wfx.nSamplesPerSec, wfx.wBitsPerSample,
- wfx.nBlockAlign, wfx.nAvgBytesPerSec, dsoundsink->buffer_size);
-
- /* create a secondary directsound buffer */
- memset (&descSecondary, 0, sizeof (DSBUFFERDESC));
- descSecondary.dwSize = sizeof (DSBUFFERDESC);
- descSecondary.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS;
- if (spec->format != GST_IEC958)
- descSecondary.dwFlags |= DSBCAPS_CTRLVOLUME;
-
- descSecondary.dwBufferBytes = dsoundsink->buffer_size;
- descSecondary.lpwfxFormat = (WAVEFORMATEX *) & wfx;
-
- hRes = IDirectSound_CreateSoundBuffer (dsoundsink->pDS, &descSecondary,
- &dsoundsink->pDSBSecondary, NULL);
- if (FAILED (hRes)) {
- GST_ELEMENT_ERROR (dsoundsink, RESOURCE, OPEN_READ,
- ("gst_directsound_sink_prepare: IDirectSound_CreateSoundBuffer: %s",
- DXGetErrorString9 (hRes)), (NULL));
- return FALSE;
- }
-
- gst_directsound_sink_set_volume (dsoundsink);
-
- return TRUE;
-}
-
-static gboolean
-gst_directsound_sink_unprepare (GstAudioSink * asink)
-{
- GstDirectSoundSink *dsoundsink;
-
- dsoundsink = GST_DIRECTSOUND_SINK (asink);
-
- /* release secondary DirectSound buffer */
- if (dsoundsink->pDSBSecondary) {
- IDirectSoundBuffer_Release (dsoundsink->pDSBSecondary);
- dsoundsink->pDSBSecondary = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_directsound_sink_close (GstAudioSink * asink)
-{
- GstDirectSoundSink *dsoundsink = NULL;
-
- dsoundsink = GST_DIRECTSOUND_SINK (asink);
-
- /* release DirectSound object */
- g_return_val_if_fail (dsoundsink->pDS != NULL, FALSE);
- IDirectSound_Release (dsoundsink->pDS);
- dsoundsink->pDS = NULL;
-
- gst_caps_replace (&dsoundsink->cached_caps, NULL);
-
- return TRUE;
-}
-
-static guint
-gst_directsound_sink_write (GstAudioSink * asink, gpointer data, guint length)
-{
- GstDirectSoundSink *dsoundsink;
- DWORD dwStatus;
- HRESULT hRes;
- LPVOID pLockedBuffer1 = NULL, pLockedBuffer2 = NULL;
- DWORD dwSizeBuffer1, dwSizeBuffer2;
- DWORD dwCurrentPlayCursor;
-
- dsoundsink = GST_DIRECTSOUND_SINK (asink);
-
- /* Fix endianness */
- if (dsoundsink->buffer_format == GST_IEC958)
- _swab (data, data, length);
-
- GST_DSOUND_LOCK (dsoundsink);
-
- /* get current buffer status */
- hRes = IDirectSoundBuffer_GetStatus (dsoundsink->pDSBSecondary, &dwStatus);
-
- /* get current play cursor position */
- hRes = IDirectSoundBuffer_GetCurrentPosition (dsoundsink->pDSBSecondary,
- &dwCurrentPlayCursor, NULL);
-
- if (SUCCEEDED (hRes) && (dwStatus & DSBSTATUS_PLAYING)) {
- DWORD dwFreeBufferSize;
-
- calculate_freesize:
- /* calculate the free size of the circular buffer */
- if (dwCurrentPlayCursor < dsoundsink->current_circular_offset)
- dwFreeBufferSize =
- dsoundsink->buffer_size - (dsoundsink->current_circular_offset -
- dwCurrentPlayCursor);
- else
- dwFreeBufferSize =
- dwCurrentPlayCursor - dsoundsink->current_circular_offset;
-
- if (length >= dwFreeBufferSize) {
- Sleep (100);
- hRes = IDirectSoundBuffer_GetCurrentPosition (dsoundsink->pDSBSecondary,
- &dwCurrentPlayCursor, NULL);
-
- hRes =
- IDirectSoundBuffer_GetStatus (dsoundsink->pDSBSecondary, &dwStatus);
- if (SUCCEEDED (hRes) && (dwStatus & DSBSTATUS_PLAYING))
- goto calculate_freesize;
- else {
- dsoundsink->first_buffer_after_reset = FALSE;
- GST_DSOUND_UNLOCK (dsoundsink);
- return 0;
- }
- }
- }
-
- if (dwStatus & DSBSTATUS_BUFFERLOST) {
- hRes = IDirectSoundBuffer_Restore (dsoundsink->pDSBSecondary); /*need a loop waiting the buffer is restored?? */
-
- dsoundsink->current_circular_offset = 0;
- }
-
- hRes = IDirectSoundBuffer_Lock (dsoundsink->pDSBSecondary,
- dsoundsink->current_circular_offset, length, &pLockedBuffer1,
- &dwSizeBuffer1, &pLockedBuffer2, &dwSizeBuffer2, 0L);
-
- if (SUCCEEDED (hRes)) {
- // Write to pointers without reordering.
- memcpy (pLockedBuffer1, data, dwSizeBuffer1);
- if (pLockedBuffer2 != NULL)
- memcpy (pLockedBuffer2, (LPBYTE) data + dwSizeBuffer1, dwSizeBuffer2);
-
- // Update where the buffer will lock (for next time)
- dsoundsink->current_circular_offset += dwSizeBuffer1 + dwSizeBuffer2;
- dsoundsink->current_circular_offset %= dsoundsink->buffer_size; /* Circular buffer */
-
- hRes = IDirectSoundBuffer_Unlock (dsoundsink->pDSBSecondary, pLockedBuffer1,
- dwSizeBuffer1, pLockedBuffer2, dwSizeBuffer2);
- }
-
- /* if the buffer was not in playing state yet, call play on the buffer
- except if this buffer is the fist after a reset (base class call reset and write a buffer when setting the sink to pause) */
- if (!(dwStatus & DSBSTATUS_PLAYING) &&
- dsoundsink->first_buffer_after_reset == FALSE) {
- hRes = IDirectSoundBuffer_Play (dsoundsink->pDSBSecondary, 0, 0,
- DSBPLAY_LOOPING);
- }
-
- dsoundsink->first_buffer_after_reset = FALSE;
-
- GST_DSOUND_UNLOCK (dsoundsink);
-
- return length;
-}
-
-static guint
-gst_directsound_sink_delay (GstAudioSink * asink)
-{
- GstDirectSoundSink *dsoundsink;
- HRESULT hRes;
- DWORD dwCurrentPlayCursor;
- DWORD dwBytesInQueue = 0;
- gint nNbSamplesInQueue = 0;
- DWORD dwStatus;
-
- dsoundsink = GST_DIRECTSOUND_SINK (asink);
-
- /* get current buffer status */
- hRes = IDirectSoundBuffer_GetStatus (dsoundsink->pDSBSecondary, &dwStatus);
-
- if (dwStatus & DSBSTATUS_PLAYING) {
- /*evaluate the number of samples in queue in the circular buffer */
- hRes = IDirectSoundBuffer_GetCurrentPosition (dsoundsink->pDSBSecondary,
- &dwCurrentPlayCursor, NULL);
-
- if (hRes == S_OK) {
- if (dwCurrentPlayCursor < dsoundsink->current_circular_offset)
- dwBytesInQueue =
- dsoundsink->current_circular_offset - dwCurrentPlayCursor;
- else
- dwBytesInQueue =
- dsoundsink->current_circular_offset + (dsoundsink->buffer_size -
- dwCurrentPlayCursor);
-
- nNbSamplesInQueue = dwBytesInQueue / dsoundsink->bytes_per_sample;
- }
- }
-
- return nNbSamplesInQueue;
-}
-
-static void
-gst_directsound_sink_reset (GstAudioSink * asink)
-{
- GstDirectSoundSink *dsoundsink;
- LPVOID pLockedBuffer = NULL;
- DWORD dwSizeBuffer = 0;
-
- dsoundsink = GST_DIRECTSOUND_SINK (asink);
-
- GST_DSOUND_LOCK (dsoundsink);
-
- if (dsoundsink->pDSBSecondary) {
- /*stop playing */
- HRESULT hRes = IDirectSoundBuffer_Stop (dsoundsink->pDSBSecondary);
-
- /*reset position */
- hRes = IDirectSoundBuffer_SetCurrentPosition (dsoundsink->pDSBSecondary, 0);
- dsoundsink->current_circular_offset = 0;
-
- /*reset the buffer */
- hRes = IDirectSoundBuffer_Lock (dsoundsink->pDSBSecondary,
- dsoundsink->current_circular_offset, dsoundsink->buffer_size,
- &pLockedBuffer, &dwSizeBuffer, NULL, NULL, 0L);
-
- if (SUCCEEDED (hRes)) {
- memset (pLockedBuffer, 0, dwSizeBuffer);
-
- hRes =
- IDirectSoundBuffer_Unlock (dsoundsink->pDSBSecondary, pLockedBuffer,
- dwSizeBuffer, NULL, 0);
- }
- }
-
- dsoundsink->first_buffer_after_reset = TRUE;
-
- GST_DSOUND_UNLOCK (dsoundsink);
-}
-
-/*
- * gst_directsound_probe_supported_formats:
- *
- * Takes the template caps and returns the subset which is actually
- * supported by this device.
- *
- */
-
-static GstCaps *
-gst_directsound_probe_supported_formats (GstDirectSoundSink * dsoundsink,
- const GstCaps * template_caps)
-{
- HRESULT hRes;
- DSBUFFERDESC descSecondary;
- WAVEFORMATEX wfx;
- GstCaps *caps;
-
- caps = gst_caps_copy (template_caps);
-
- /*
- * Check availability of digital output by trying to create an SPDIF buffer
- */
-
-#ifdef WAVE_FORMAT_DOLBY_AC3_SPDIF
- /* fill the WAVEFORMATEX structure with some standard AC3 over SPDIF params */
- memset (&wfx, 0, sizeof (wfx));
- wfx.cbSize = 0;
- wfx.wFormatTag = WAVE_FORMAT_DOLBY_AC3_SPDIF;
- wfx.nChannels = 2;
- wfx.nSamplesPerSec = 48000;
- wfx.wBitsPerSample = 16;
- wfx.nBlockAlign = 4;
- wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
-
- // create a secondary directsound buffer
- memset (&descSecondary, 0, sizeof (DSBUFFERDESC));
- descSecondary.dwSize = sizeof (DSBUFFERDESC);
- descSecondary.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_GLOBALFOCUS;
- descSecondary.dwBufferBytes = 6144;
- descSecondary.lpwfxFormat = &wfx;
-
- hRes = IDirectSound_CreateSoundBuffer (dsoundsink->pDS, &descSecondary,
- &dsoundsink->pDSBSecondary, NULL);
- if (FAILED (hRes)) {
- GST_INFO_OBJECT (dsoundsink, "AC3 passthrough not supported "
- "(IDirectSound_CreateSoundBuffer returned: %s)\n",
- DXGetErrorString9 (hRes));
- caps =
- gst_caps_subtract (caps, gst_caps_new_simple ("audio/x-iec958", NULL));
- } else {
- GST_INFO_OBJECT (dsoundsink, "AC3 passthrough supported");
- hRes = IDirectSoundBuffer_Release (dsoundsink->pDSBSecondary);
- if (FAILED (hRes)) {
- GST_DEBUG_OBJECT (dsoundsink,
- "(IDirectSoundBuffer_Release returned: %s)\n",
- DXGetErrorString9 (hRes));
- }
- }
-#else
- caps = gst_caps_subtract (caps, gst_caps_new_simple ("audio/x-iec958", NULL));
-#endif
-
- return caps;
-}
diff --git a/wearable/sys/directsound/gstdirectsoundsink.h b/wearable/sys/directsound/gstdirectsoundsink.h
deleted file mode 100644
index 8bb10bf..0000000
--- a/wearable/sys/directsound/gstdirectsoundsink.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* GStreamer
- * Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- * Copyright (C) 2010 Fluendo S.A. <support@fluendo.com>
- *
- * gstdirectsoundsink.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement
- * of Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- *
- */
-
-#ifndef __GST_DIRECTSOUNDSINK_H__
-#define __GST_DIRECTSOUNDSINK_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosink.h>
-#include <gst/interfaces/mixer.h>
-
-#include <windows.h>
-#include <dxerr9.h>
-#include <dsound.h>
-#include <mmreg.h>
-#include <ks.h>
-#include <ksmedia.h>
-
-G_BEGIN_DECLS
-#define GST_TYPE_DIRECTSOUND_SINK (gst_directsound_sink_get_type())
-#define GST_DIRECTSOUND_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DIRECTSOUND_SINK,GstDirectSoundSink))
-#define GST_DIRECTSOUND_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DIRECTSOUND_SINK,GstDirectSoundSinkClass))
-#define GST_IS_DIRECTSOUND_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DIRECTSOUND_SINK))
-#define GST_IS_DIRECTSOUND_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DIRECTSOUND_SINK))
-typedef struct _GstDirectSoundSink GstDirectSoundSink;
-typedef struct _GstDirectSoundSinkClass GstDirectSoundSinkClass;
-
-#define GST_DSOUND_LOCK(obj) (g_mutex_lock (obj->dsound_lock))
-#define GST_DSOUND_UNLOCK(obj) (g_mutex_unlock (obj->dsound_lock))
-
-struct _GstDirectSoundSink
-{
- GstAudioSink sink;
-
- /* directsound object interface pointer */
- LPDIRECTSOUND pDS;
-
- /* directsound sound object interface pointer */
- LPDIRECTSOUNDBUFFER pDSBSecondary;
-
- /* directSound buffer size */
- guint buffer_size;
-
- /* offset of the circular buffer where we must write next */
- guint current_circular_offset;
-
- guint bytes_per_sample;
-
- /* current volume setup by mixer interface */
- glong volume;
-
- /* tracks list of our mixer interface implementation */
- GList *tracks;
-
- GstCaps *cached_caps;
-
- /* lock used to protect writes and resets */
- GMutex *dsound_lock;
-
- gboolean first_buffer_after_reset;
-
- GstBufferFormat buffer_format;
-};
-
-struct _GstDirectSoundSinkClass
-{
- GstAudioSinkClass parent_class;
-};
-
-GType gst_directsound_sink_get_type (void);
-
-G_END_DECLS
-#endif /* __GST_DIRECTSOUNDSINK_H__ */
diff --git a/wearable/sys/oss/Makefile.am b/wearable/sys/oss/Makefile.am
deleted file mode 100644
index c42dfea..0000000
--- a/wearable/sys/oss/Makefile.am
+++ /dev/null
@@ -1,28 +0,0 @@
-plugin_LTLIBRARIES = libgstossaudio.la
-
-libgstossaudio_la_SOURCES = gstossaudio.c \
- gstosshelper.c \
- gstossmixer.c \
- gstossmixerelement.c \
- gstossmixertrack.c \
- gstosssink.c \
- gstosssrc.c
-
-libgstossaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-libgstossaudio_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- -lgstaudio-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS)
-libgstossaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstossaudio_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = common.h \
- gstosssink.h \
- gstosssrc.h \
- gstosshelper.h \
- gstossdmabuffer.h \
- gstossmixer.h \
- gstossmixerelement.h \
- gstossmixertrack.h
diff --git a/wearable/sys/oss/Makefile.in b/wearable/sys/oss/Makefile.in
deleted file mode 100644
index ce15b09..0000000
--- a/wearable/sys/oss/Makefile.in
+++ /dev/null
@@ -1,879 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/oss
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstossaudio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstossaudio_la_OBJECTS = libgstossaudio_la-gstossaudio.lo \
- libgstossaudio_la-gstosshelper.lo \
- libgstossaudio_la-gstossmixer.lo \
- libgstossaudio_la-gstossmixerelement.lo \
- libgstossaudio_la-gstossmixertrack.lo \
- libgstossaudio_la-gstosssink.lo libgstossaudio_la-gstosssrc.lo
-libgstossaudio_la_OBJECTS = $(am_libgstossaudio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstossaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstossaudio_la_CFLAGS) $(CFLAGS) \
- $(libgstossaudio_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstossaudio_la_SOURCES)
-DIST_SOURCES = $(libgstossaudio_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstossaudio.la
-libgstossaudio_la_SOURCES = gstossaudio.c \
- gstosshelper.c \
- gstossmixer.c \
- gstossmixerelement.c \
- gstossmixertrack.c \
- gstosssink.c \
- gstosssrc.c
-
-libgstossaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
-libgstossaudio_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- -lgstaudio-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS)
-
-libgstossaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstossaudio_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = common.h \
- gstosssink.h \
- gstosssrc.h \
- gstosshelper.h \
- gstossdmabuffer.h \
- gstossmixer.h \
- gstossmixerelement.h \
- gstossmixertrack.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/oss/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/oss/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstossaudio.la: $(libgstossaudio_la_OBJECTS) $(libgstossaudio_la_DEPENDENCIES) $(EXTRA_libgstossaudio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstossaudio_la_LINK) -rpath $(plugindir) $(libgstossaudio_la_OBJECTS) $(libgstossaudio_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstossaudio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstosshelper.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstossmixer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstossmixerelement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstossmixertrack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstosssink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstossaudio_la-gstosssrc.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstossaudio_la-gstossaudio.lo: gstossaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstossaudio.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstossaudio.Tpo -c -o libgstossaudio_la-gstossaudio.lo `test -f 'gstossaudio.c' || echo '$(srcdir)/'`gstossaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstossaudio.Tpo $(DEPDIR)/libgstossaudio_la-gstossaudio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstossaudio.c' object='libgstossaudio_la-gstossaudio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstossaudio.lo `test -f 'gstossaudio.c' || echo '$(srcdir)/'`gstossaudio.c
-
-libgstossaudio_la-gstosshelper.lo: gstosshelper.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstosshelper.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstosshelper.Tpo -c -o libgstossaudio_la-gstosshelper.lo `test -f 'gstosshelper.c' || echo '$(srcdir)/'`gstosshelper.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstosshelper.Tpo $(DEPDIR)/libgstossaudio_la-gstosshelper.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosshelper.c' object='libgstossaudio_la-gstosshelper.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstosshelper.lo `test -f 'gstosshelper.c' || echo '$(srcdir)/'`gstosshelper.c
-
-libgstossaudio_la-gstossmixer.lo: gstossmixer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstossmixer.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstossmixer.Tpo -c -o libgstossaudio_la-gstossmixer.lo `test -f 'gstossmixer.c' || echo '$(srcdir)/'`gstossmixer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstossmixer.Tpo $(DEPDIR)/libgstossaudio_la-gstossmixer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstossmixer.c' object='libgstossaudio_la-gstossmixer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstossmixer.lo `test -f 'gstossmixer.c' || echo '$(srcdir)/'`gstossmixer.c
-
-libgstossaudio_la-gstossmixerelement.lo: gstossmixerelement.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstossmixerelement.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstossmixerelement.Tpo -c -o libgstossaudio_la-gstossmixerelement.lo `test -f 'gstossmixerelement.c' || echo '$(srcdir)/'`gstossmixerelement.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstossmixerelement.Tpo $(DEPDIR)/libgstossaudio_la-gstossmixerelement.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstossmixerelement.c' object='libgstossaudio_la-gstossmixerelement.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstossmixerelement.lo `test -f 'gstossmixerelement.c' || echo '$(srcdir)/'`gstossmixerelement.c
-
-libgstossaudio_la-gstossmixertrack.lo: gstossmixertrack.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstossmixertrack.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstossmixertrack.Tpo -c -o libgstossaudio_la-gstossmixertrack.lo `test -f 'gstossmixertrack.c' || echo '$(srcdir)/'`gstossmixertrack.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstossmixertrack.Tpo $(DEPDIR)/libgstossaudio_la-gstossmixertrack.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstossmixertrack.c' object='libgstossaudio_la-gstossmixertrack.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstossmixertrack.lo `test -f 'gstossmixertrack.c' || echo '$(srcdir)/'`gstossmixertrack.c
-
-libgstossaudio_la-gstosssink.lo: gstosssink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstosssink.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstosssink.Tpo -c -o libgstossaudio_la-gstosssink.lo `test -f 'gstosssink.c' || echo '$(srcdir)/'`gstosssink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstosssink.Tpo $(DEPDIR)/libgstossaudio_la-gstosssink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosssink.c' object='libgstossaudio_la-gstosssink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstosssink.lo `test -f 'gstosssink.c' || echo '$(srcdir)/'`gstosssink.c
-
-libgstossaudio_la-gstosssrc.lo: gstosssrc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -MT libgstossaudio_la-gstosssrc.lo -MD -MP -MF $(DEPDIR)/libgstossaudio_la-gstosssrc.Tpo -c -o libgstossaudio_la-gstosssrc.lo `test -f 'gstosssrc.c' || echo '$(srcdir)/'`gstosssrc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstossaudio_la-gstosssrc.Tpo $(DEPDIR)/libgstossaudio_la-gstosssrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosssrc.c' object='libgstossaudio_la-gstosssrc.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstossaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstossaudio_la_CFLAGS) $(CFLAGS) -c -o libgstossaudio_la-gstosssrc.lo `test -f 'gstosssrc.c' || echo '$(srcdir)/'`gstosssrc.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/oss/common.h b/wearable/sys/oss/common.h
deleted file mode 100644
index 2445c3d..0000000
--- a/wearable/sys/oss/common.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000,2005 Wim Taymans <wim@fluendo.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#define SET_PARAM(_oss, _name, _val, _detail) \
-G_STMT_START { \
- int _tmp = _val; \
- if (ioctl(_oss->fd, _name, &_tmp) == -1) { \
- GST_ELEMENT_ERROR (_oss, RESOURCE, SETTINGS,\
- (NULL), \
- ("Unable to set param " _detail ": %s", \
- g_strerror (errno))); \
- return FALSE; \
- } \
- GST_DEBUG_OBJECT(_oss, _detail " %d", _tmp); \
-} G_STMT_END
-
-#define GET_PARAM(_oss, _name, _val, _detail) \
-G_STMT_START { \
- if (ioctl(oss->fd, _name, _val) == -1) { \
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, \
- (NULL), \
- ("Unable to get param " _detail ": %s", \
- g_strerror (errno))); \
- return FALSE; \
- } \
-} G_STMT_END
diff --git a/wearable/sys/oss/gstossaudio.c b/wearable/sys/oss/gstossaudio.c
deleted file mode 100644
index 2a181e8..0000000
--- a/wearable/sys/oss/gstossaudio.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gst/gst-i18n-plugin.h"
-
-#include "gstossmixerelement.h"
-#include "gstosssink.h"
-#include "gstosssrc.h"
-
-GST_DEBUG_CATEGORY (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "ossmixer", GST_RANK_NONE,
- GST_TYPE_OSS_MIXER_ELEMENT) ||
- !gst_element_register (plugin, "osssrc", GST_RANK_SECONDARY,
- GST_TYPE_OSS_SRC) ||
- !gst_element_register (plugin, "osssink", GST_RANK_SECONDARY,
- GST_TYPE_OSSSINK)) {
- return FALSE;
- }
-
- GST_DEBUG_CATEGORY_INIT (oss_debug, "oss", 0, "OSS elements");
-
-#ifdef ENABLE_NLS
- GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
- LOCALEDIR);
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif /* ENABLE_NLS */
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ossaudio",
- "OSS (Open Sound System) support for GStreamer",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/oss/gstossdmabuffer.h b/wearable/sys/oss/gstossdmabuffer.h
deleted file mode 100644
index c38ef6f..0000000
--- a/wearable/sys/oss/gstossdmabuffer.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2005 Wim Taymans <wim@fluendo.com>
- *
- * gstossdmabuffer.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_OSSDMABUFFER_H__
-#define __GST_OSSDMABUFFER_H__
-
-#include <gst/gst.h>
-
-#include "gstosshelper.h"
-#include <gst/audio/gstringbuffer.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSSDMABUFFER (gst_ossdmabuffer_get_type())
-#define GST_OSSDMABUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSSDMABUFFER,GstOssDMABuffer))
-#define GST_OSSDMABUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSSDMABUFFER,GstOssDMABufferClass))
-#define GST_IS_OSSDMABUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSDMABUFFER))
-#define GST_IS_OSSDMABUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSDMABUFFER))
-
-#define GST_OSSELEMENT_GET(obj) GST_OSSELEMENT (obj->element)
-
-typedef enum {
- GST_OSSDMABUFFER_OPEN = (1 << 0),
-} GstOssDMABufferFlags;
-
-typedef struct _GstOssDMABuffer GstOssDMABuffer;
-typedef struct _GstOssDMABufferClass GstOssDMABufferClass;
-
-#define GST_OSSDMABUFFER_THREAD(buf) (GST_OSSDMABUFFER(buf)->thread)
-#define GST_OSSDMABUFFER_LOCK GST_OBJECT_LOCK
-#define GST_OSSDMABUFFER_UNLOCK GST_OBJECT_UNLOCK
-#define GST_OSSDMABUFFER_COND(buf) (GST_OSSDMABUFFER(buf)->cond)
-#define GST_OSSDMABUFFER_SIGNAL(buf) (g_cond_signal (GST_OSSDMABUFFER_COND (buf)))
-#define GST_OSSDMABUFFER_WAIT(buf) (g_cond_wait (GST_OSSDMABUFFER_COND (buf), GST_OBJECT_GET_LOCK (buf)))
-
-struct _GstOssDMABuffer {
- GstRingBuffer buffer;
-
- GstOssElement *element;
-
- int fd;
- int caps;
- int frag;
-
- GThread *thread;
- GCond *cond;
- gboolean running;
-};
-
-struct _GstOssDMABufferClass {
- GstRingBufferClass parent_class;
-};
-
-GType gst_ossdmabuffer_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_OSSDMABUFFER_H__ */
diff --git a/wearable/sys/oss/gstosshelper.c b/wearable/sys/oss/gstosshelper.c
deleted file mode 100644
index 6d7e6bd..0000000
--- a/wearable/sys/oss/gstosshelper.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000 Wim Taymans <wim.taymans@chello.be>
- *
- * gstosshelper.c: OSS helper routines
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gst/gst-i18n-plugin.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-
-#ifdef HAVE_OSS_INCLUDE_IN_SYS
-# include <sys/soundcard.h>
-#else
-# ifdef HAVE_OSS_INCLUDE_IN_ROOT
-# include <soundcard.h>
-# else
-# ifdef HAVE_OSS_INCLUDE_IN_MACHINE
-# include <machine/soundcard.h>
-# else
-# error "What to include?"
-# endif /* HAVE_OSS_INCLUDE_IN_MACHINE */
-# endif /* HAVE_OSS_INCLUDE_IN_ROOT */
-#endif /* HAVE_OSS_INCLUDE_IN_SYS */
-
-#include <gst/interfaces/propertyprobe.h>
-
-#include "gstosshelper.h"
-#include "gstossmixer.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-typedef struct _GstOssProbe GstOssProbe;
-struct _GstOssProbe
-{
- int fd;
- int format;
- int n_channels;
- GArray *rates;
- int min;
- int max;
-};
-
-typedef struct _GstOssRange GstOssRange;
-struct _GstOssRange
-{
- int min;
- int max;
-};
-
-static GstStructure *gst_oss_helper_get_format_structure (unsigned int
- format_bit);
-static gboolean gst_oss_helper_rate_probe_check (GstOssProbe * probe);
-static int gst_oss_helper_rate_check_rate (GstOssProbe * probe, int irate);
-static void gst_oss_helper_rate_add_range (GQueue * queue, int min, int max);
-static void gst_oss_helper_rate_add_rate (GArray * array, int rate);
-static int gst_oss_helper_rate_int_compare (gconstpointer a, gconstpointer b);
-
-GstCaps *
-gst_oss_helper_probe_caps (gint fd)
-{
- GstOssProbe *probe;
- int i;
- gboolean ret;
- GstStructure *structure;
- unsigned int format_bit;
- unsigned int format_mask;
- GstCaps *caps;
-
- /* FIXME test make sure we're not currently playing */
- /* FIXME test both mono and stereo */
-
- format_mask = AFMT_U8 | AFMT_S8;
-
- if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
- format_mask |= AFMT_S16_LE | AFMT_U16_LE;
- else
- format_mask |= AFMT_S16_BE | AFMT_U16_BE;
-
- caps = gst_caps_new_empty ();
-
- /* assume that the most significant bit of format_mask is 0 */
- for (format_bit = 1 << 31; format_bit > 0; format_bit >>= 1) {
- if (format_bit & format_mask) {
- GValue rate_value = { 0 };
-
- probe = g_new0 (GstOssProbe, 1);
- probe->fd = fd;
- probe->format = format_bit;
- /* FIXME: this is not working for all cards, see bug #518474 */
- probe->n_channels = 2;
-
- ret = gst_oss_helper_rate_probe_check (probe);
- if (probe->min == -1 || probe->max == -1) {
- g_array_free (probe->rates, TRUE);
- g_free (probe);
- continue;
- }
-
- if (ret) {
- GValue value = { 0 };
-
- g_array_sort (probe->rates, gst_oss_helper_rate_int_compare);
-
- g_value_init (&rate_value, GST_TYPE_LIST);
- g_value_init (&value, G_TYPE_INT);
-
- for (i = 0; i < probe->rates->len; i++) {
- g_value_set_int (&value, g_array_index (probe->rates, int, i));
-
- gst_value_list_append_value (&rate_value, &value);
- }
-
- g_value_unset (&value);
- } else {
- /* one big range */
- g_value_init (&rate_value, GST_TYPE_INT_RANGE);
- gst_value_set_int_range (&rate_value, probe->min, probe->max);
- }
-
- g_array_free (probe->rates, TRUE);
- g_free (probe);
-
- structure = gst_oss_helper_get_format_structure (format_bit);
- gst_structure_set (structure, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
- gst_structure_set_value (structure, "rate", &rate_value);
- g_value_unset (&rate_value);
-
- gst_caps_append_structure (caps, structure);
- }
- }
-
- if (gst_caps_is_empty (caps)) {
- /* fixme: make user-visible */
- GST_WARNING ("Your OSS device could not be probed correctly");
- }
-
- GST_DEBUG ("probed caps: %" GST_PTR_FORMAT, caps);
-
- return caps;
-}
-
-static GstStructure *
-gst_oss_helper_get_format_structure (unsigned int format_bit)
-{
- GstStructure *structure;
- int endianness;
- gboolean sign;
- int width;
-
- switch (format_bit) {
- case AFMT_U8:
- endianness = 0;
- sign = FALSE;
- width = 8;
- break;
- case AFMT_S16_LE:
- endianness = G_LITTLE_ENDIAN;
- sign = TRUE;
- width = 16;
- break;
- case AFMT_S16_BE:
- endianness = G_BIG_ENDIAN;
- sign = TRUE;
- width = 16;
- break;
- case AFMT_S8:
- endianness = 0;
- sign = TRUE;
- width = 8;
- break;
- case AFMT_U16_LE:
- endianness = G_LITTLE_ENDIAN;
- sign = FALSE;
- width = 16;
- break;
- case AFMT_U16_BE:
- endianness = G_BIG_ENDIAN;
- sign = FALSE;
- width = 16;
- break;
- default:
- g_assert_not_reached ();
- return NULL;
- }
-
- structure = gst_structure_new ("audio/x-raw-int",
- "width", G_TYPE_INT, width,
- "depth", G_TYPE_INT, width, "signed", G_TYPE_BOOLEAN, sign, NULL);
-
- if (endianness) {
- gst_structure_set (structure, "endianness", G_TYPE_INT, endianness, NULL);
- }
-
- return structure;
-}
-
-static gboolean
-gst_oss_helper_rate_probe_check (GstOssProbe * probe)
-{
- GstOssRange *range;
- GQueue *ranges;
- int exact_rates = 0;
- gboolean checking_exact_rates = TRUE;
- int n_checks = 0;
- gboolean result = TRUE;
-
- ranges = g_queue_new ();
-
- probe->rates = g_array_new (FALSE, FALSE, sizeof (int));
-
- probe->min = gst_oss_helper_rate_check_rate (probe, 1000);
- n_checks++;
- probe->max = gst_oss_helper_rate_check_rate (probe, 100000);
- /* a little bug workaround */
- {
- int max;
-
- max = gst_oss_helper_rate_check_rate (probe, 48000);
- if (max > probe->max) {
- GST_ERROR
- ("Driver bug recognized (driver does not round rates correctly). Please file a bug report.");
- probe->max = max;
- }
- }
- n_checks++;
- if (probe->min == -1 || probe->max == -1) {
- /* This is a workaround for drivers that return -EINVAL (or another
- * error) for rates outside of [8000,48000]. If this fails, the
- * driver is seriously buggy, and probably doesn't work with other
- * media libraries/apps. */
- probe->min = gst_oss_helper_rate_check_rate (probe, 8000);
- probe->max = gst_oss_helper_rate_check_rate (probe, 48000);
- }
- if (probe->min == -1 || probe->max == -1) {
- GST_DEBUG ("unexpected check_rate error");
- return FALSE;
- }
- gst_oss_helper_rate_add_range (ranges, probe->min + 1, probe->max - 1);
-
- while ((range = g_queue_pop_head (ranges))) {
- int min1;
- int max1;
- int mid;
- int mid_ret;
-
- GST_DEBUG ("checking [%d,%d]", range->min, range->max);
-
- mid = (range->min + range->max) / 2;
- mid_ret = gst_oss_helper_rate_check_rate (probe, mid);
- if (mid_ret == -1) {
- /* FIXME ioctl returned an error. do something */
- GST_DEBUG ("unexpected check_rate error");
- }
- n_checks++;
-
- if (mid == mid_ret && checking_exact_rates) {
- int max_exact_matches = 20;
-
- exact_rates++;
- if (exact_rates > max_exact_matches) {
- GST_DEBUG ("got %d exact rates, assuming all are exact",
- max_exact_matches);
- result = FALSE;
- g_free (range);
- break;
- }
- } else {
- checking_exact_rates = FALSE;
- }
-
- /* Assume that the rate is arithmetically rounded to the nearest
- * supported rate. */
- if (mid == mid_ret) {
- min1 = mid - 1;
- max1 = mid + 1;
- } else {
- if (mid < mid_ret) {
- min1 = mid - (mid_ret - mid);
- max1 = mid_ret + 1;
- } else {
- min1 = mid_ret - 1;
- max1 = mid + (mid - mid_ret);
- }
- }
-
- gst_oss_helper_rate_add_range (ranges, range->min, min1);
- gst_oss_helper_rate_add_range (ranges, max1, range->max);
-
- g_free (range);
- }
-
- while ((range = g_queue_pop_head (ranges))) {
- g_free (range);
- }
- g_queue_free (ranges);
-
- return result;
-}
-
-static void
-gst_oss_helper_rate_add_range (GQueue * queue, int min, int max)
-{
- if (min <= max) {
- GstOssRange *range = g_new0 (GstOssRange, 1);
-
- range->min = min;
- range->max = max;
-
- g_queue_push_tail (queue, range);
- /* push_head also works, but has different probing behavior */
- /*g_queue_push_head (queue, range); */
- }
-}
-
-static int
-gst_oss_helper_rate_check_rate (GstOssProbe * probe, int irate)
-{
- int rate;
- int format;
- int n_channels;
- int ret;
-
- rate = irate;
- format = probe->format;
- n_channels = probe->n_channels;
-
- GST_LOG ("checking format %d, channels %d, rate %d",
- format, n_channels, rate);
- ret = ioctl (probe->fd, SNDCTL_DSP_SETFMT, &format);
- if (ret < 0 || format != probe->format) {
- GST_DEBUG ("unsupported format: %d (%d)", probe->format, format);
- return -1;
- }
- ret = ioctl (probe->fd, SNDCTL_DSP_CHANNELS, &n_channels);
- if (ret < 0 || n_channels != probe->n_channels) {
- GST_DEBUG ("unsupported channels: %d (%d)", probe->n_channels, n_channels);
- return -1;
- }
- ret = ioctl (probe->fd, SNDCTL_DSP_SPEED, &rate);
- if (ret < 0) {
- GST_DEBUG ("unsupported rate: %d (%d)", irate, rate);
- return -1;
- }
-
- GST_DEBUG ("rate %d -> %d", irate, rate);
-
- if (rate == irate - 1 || rate == irate + 1) {
- rate = irate;
- }
- gst_oss_helper_rate_add_rate (probe->rates, rate);
- return rate;
-}
-
-static void
-gst_oss_helper_rate_add_rate (GArray * array, int rate)
-{
- int i;
- int val;
-
- for (i = 0; i < array->len; i++) {
- val = g_array_index (array, int, i);
-
- if (val == rate)
- return;
- }
- GST_DEBUG ("supported rate: %d", rate);
- g_array_append_val (array, rate);
-}
-
-static int
-gst_oss_helper_rate_int_compare (gconstpointer a, gconstpointer b)
-{
- const int *va = (const int *) a;
- const int *vb = (const int *) b;
-
- if (*va < *vb)
- return -1;
- if (*va > *vb)
- return 1;
- return 0;
-}
diff --git a/wearable/sys/oss/gstosshelper.h b/wearable/sys/oss/gstosshelper.h
deleted file mode 100644
index 1593fe3..0000000
--- a/wearable/sys/oss/gstosshelper.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000 Wim Taymans <wim.taymans@chello.be>
- *
- * gstosshelper.h: OSS helper routines.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __GST_OSS_HELPER_H__
-#define __GST_OSS_HELPER_H__
-
-
-#include <gst/gst.h>
-#include <sys/types.h>
-
-#include "gstosshelper.h"
-
-
-G_BEGIN_DECLS
-
-
-GstCaps* gst_oss_helper_probe_caps (gint fd);
-
-
-G_END_DECLS
-
-
-#endif /* __GST_OSS_HELPER_H__ */
diff --git a/wearable/sys/oss/gstossmixer.c b/wearable/sys/oss/gstossmixer.c
deleted file mode 100644
index e563031..0000000
--- a/wearable/sys/oss/gstossmixer.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/* GStreamer OSS Mixer implementation
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- *
- * gstossmixer.c: mixer interface implementation for OSS
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-
-#ifdef HAVE_OSS_INCLUDE_IN_SYS
-# include <sys/soundcard.h>
-#else
-# ifdef HAVE_OSS_INCLUDE_IN_ROOT
-# include <soundcard.h>
-# else
-# ifdef HAVE_OSS_INCLUDE_IN_MACHINE
-# include <machine/soundcard.h>
-# else
-# error "What to include?"
-# endif /* HAVE_OSS_INCLUDE_IN_MACHINE */
-# endif /* HAVE_OSS_INCLUDE_IN_ROOT */
-#endif /* HAVE_OSS_INCLUDE_IN_SYS */
-
-#include <gst/gst-i18n-plugin.h>
-
-#include "gstossmixer.h"
-#include "gstossmixertrack.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-#define MASK_BIT_IS_SET(mask, bit) \
- (mask & (1 << bit))
-
-static gboolean
-gst_ossmixer_open (GstOssMixer * mixer)
-{
-#ifdef SOUND_MIXER_INFO
- struct mixer_info minfo;
-#endif
-
- g_return_val_if_fail (mixer->mixer_fd == -1, FALSE);
-
- mixer->mixer_fd = open (mixer->device, O_RDWR);
- if (mixer->mixer_fd == -1)
- goto open_failed;
-
- /* get masks */
- if (ioctl (mixer->mixer_fd, SOUND_MIXER_READ_RECMASK, &mixer->recmask) < 0
- || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_RECSRC, &mixer->recdevs) < 0
- || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_STEREODEVS,
- &mixer->stereomask) < 0
- || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_DEVMASK, &mixer->devmask) < 0
- || ioctl (mixer->mixer_fd, SOUND_MIXER_READ_CAPS, &mixer->mixcaps) < 0)
- goto masks_failed;
-
- /* get name, not fatal */
- g_free (mixer->cardname);
-#ifdef SOUND_MIXER_INFO
- if (ioctl (mixer->mixer_fd, SOUND_MIXER_INFO, &minfo) == 0) {
- mixer->cardname = g_strdup (minfo.name);
- GST_INFO ("Card name = %s", GST_STR_NULL (mixer->cardname));
- } else
-#endif
- {
- mixer->cardname = g_strdup ("Unknown");
- GST_INFO ("Unknown card name");
- }
- GST_INFO ("Opened mixer for device %s", mixer->device);
-
- return TRUE;
-
- /* ERRORS */
-open_failed:
- {
- /* this is valid. OSS devices don't need to expose a mixer */
- GST_DEBUG ("Failed to open mixer device %s, mixing disabled: %s",
- mixer->device, strerror (errno));
- return FALSE;
- }
-masks_failed:
- {
- GST_DEBUG ("Failed to get device masks");
- close (mixer->mixer_fd);
- mixer->mixer_fd = -1;
- return FALSE;
- }
-}
-
-static void
-gst_ossmixer_ensure_track_list (GstOssMixer * mixer)
-{
- gint i, master = -1;
-
- g_return_if_fail (mixer->mixer_fd != -1);
-
- if (mixer->tracklist)
- return;
-
- /* find master volume */
- if (mixer->devmask & SOUND_MASK_VOLUME)
- master = SOUND_MIXER_VOLUME;
- else if (mixer->devmask & SOUND_MASK_PCM)
- master = SOUND_MIXER_PCM;
- else if (mixer->devmask & SOUND_MASK_SPEAKER)
- master = SOUND_MIXER_SPEAKER; /* doubtful... */
- /* else: no master, so we won't set any */
-
- /* build track list */
- for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
- if (mixer->devmask & (1 << i)) {
- GstMixerTrack *track;
- gboolean input = FALSE, stereo = FALSE, record = FALSE;
-
- /* track exists, make up capabilities */
- if (MASK_BIT_IS_SET (mixer->stereomask, i))
- stereo = TRUE;
- if (MASK_BIT_IS_SET (mixer->recmask, i))
- input = TRUE;
- if (MASK_BIT_IS_SET (mixer->recdevs, i))
- record = TRUE;
-
- /* do we want this in our list? */
- if (!((mixer->dir & GST_OSS_MIXER_CAPTURE && input == TRUE) ||
- (mixer->dir & GST_OSS_MIXER_PLAYBACK && i != SOUND_MIXER_PCM)))
- /* the PLAYBACK case seems hacky, but that's how 0.8 had it */
- continue;
-
- /* add track to list */
- track = gst_ossmixer_track_new (mixer->mixer_fd, i, stereo ? 2 : 1,
- (record ? GST_MIXER_TRACK_RECORD : 0) |
- (input ? GST_MIXER_TRACK_INPUT :
- GST_MIXER_TRACK_OUTPUT) |
- ((master != i) ? 0 : GST_MIXER_TRACK_MASTER));
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- }
-}
-
-GstOssMixer *
-gst_ossmixer_new (const char *device, GstOssMixerDirection dir)
-{
- GstOssMixer *ret = NULL;
-
- g_return_val_if_fail (device != NULL, NULL);
-
- ret = g_new0 (GstOssMixer, 1);
-
- ret->device = g_strdup (device);
- ret->dir = dir;
- ret->mixer_fd = -1;
-
- if (!gst_ossmixer_open (ret))
- goto error;
-
- return ret;
-
- /* ERRORS */
-error:
- {
- gst_ossmixer_free (ret);
- return NULL;
- }
-}
-
-void
-gst_ossmixer_free (GstOssMixer * mixer)
-{
- g_return_if_fail (mixer != NULL);
-
- if (mixer->device) {
- g_free (mixer->device);
- mixer->device = NULL;
- }
-
- if (mixer->cardname) {
- g_free (mixer->cardname);
- mixer->cardname = NULL;
- }
-
- if (mixer->tracklist) {
- g_list_foreach (mixer->tracklist, (GFunc) g_object_unref, NULL);
- g_list_free (mixer->tracklist);
- mixer->tracklist = NULL;
- }
-
- if (mixer->mixer_fd != -1) {
- close (mixer->mixer_fd);
- mixer->mixer_fd = -1;
- }
-
- g_free (mixer);
-}
-
-/* unused with G_DISABLE_* */
-static G_GNUC_UNUSED gboolean
-gst_ossmixer_contains_track (GstOssMixer * mixer, GstOssMixerTrack * osstrack)
-{
- const GList *item;
-
- for (item = mixer->tracklist; item != NULL; item = item->next)
- if (item->data == osstrack)
- return TRUE;
-
- return FALSE;
-}
-
-const GList *
-gst_ossmixer_list_tracks (GstOssMixer * mixer)
-{
- gst_ossmixer_ensure_track_list (mixer);
-
- return (const GList *) mixer->tracklist;
-}
-
-void
-gst_ossmixer_get_volume (GstOssMixer * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- gint volume;
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->mixer_fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- if (track->flags & GST_MIXER_TRACK_MUTE) {
- volumes[0] = osstrack->lvol;
- if (track->num_channels == 2) {
- volumes[1] = osstrack->rvol;
- }
- } else {
- /* get */
- if (ioctl (mixer->mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning ("Error getting recording device (%d) volume: %s",
- osstrack->track_num, strerror (errno));
- volume = 0;
- }
-
- osstrack->lvol = volumes[0] = (volume & 0xff);
- if (track->num_channels == 2) {
- osstrack->rvol = volumes[1] = ((volume >> 8) & 0xff);
- }
- }
-}
-
-void
-gst_ossmixer_set_volume (GstOssMixer * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- gint volume;
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->mixer_fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- /* prepare the value for ioctl() */
- if (!(track->flags & GST_MIXER_TRACK_MUTE)) {
- volume = (volumes[0] & 0xff);
- if (track->num_channels == 2) {
- volume |= ((volumes[1] & 0xff) << 8);
- }
-
- /* set */
- if (ioctl (mixer->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
- g_warning ("Error setting recording device (%d) volume (0x%x): %s",
- osstrack->track_num, volume, strerror (errno));
- return;
- }
- }
-
- osstrack->lvol = volumes[0];
- if (track->num_channels == 2) {
- osstrack->rvol = volumes[1];
- }
-}
-
-void
-gst_ossmixer_set_mute (GstOssMixer * mixer, GstMixerTrack * track,
- gboolean mute)
-{
- int volume;
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->mixer_fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- if (mute) {
- volume = 0;
- } else {
- volume = (osstrack->lvol & 0xff);
- if (MASK_BIT_IS_SET (mixer->stereomask, osstrack->track_num)) {
- volume |= ((osstrack->rvol & 0xff) << 8);
- }
- }
-
- if (ioctl (mixer->mixer_fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
- g_warning ("Error setting mixer recording device volume (0x%x): %s",
- volume, strerror (errno));
- return;
- }
-
- if (mute) {
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-}
-
-void
-gst_ossmixer_set_record (GstOssMixer * mixer,
- GstMixerTrack * track, gboolean record)
-{
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->mixer_fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- /* if there's nothing to do... */
- if ((record && GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_RECORD)) ||
- (!record && !GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_RECORD)))
- return;
-
- /* if we're exclusive, then we need to unset the current one(s) */
- if (mixer->mixcaps & SOUND_CAP_EXCL_INPUT) {
- GList *track;
-
- for (track = mixer->tracklist; track != NULL; track = track->next) {
- GstMixerTrack *turn = (GstMixerTrack *) track->data;
-
- turn->flags &= ~GST_MIXER_TRACK_RECORD;
- }
- mixer->recdevs = 0;
- }
-
- /* set new record bit, if needed */
- if (record) {
- mixer->recdevs |= (1 << osstrack->track_num);
- } else {
- mixer->recdevs &= ~(1 << osstrack->track_num);
- }
-
- /* set it to the device */
- if (ioctl (mixer->mixer_fd, SOUND_MIXER_WRITE_RECSRC, &mixer->recdevs) < 0) {
- g_warning ("Error setting mixer recording devices (0x%x): %s",
- mixer->recdevs, strerror (errno));
- return;
- }
-
- if (record) {
- track->flags |= GST_MIXER_TRACK_RECORD;
- } else {
- track->flags &= ~GST_MIXER_TRACK_RECORD;
- }
-}
diff --git a/wearable/sys/oss/gstossmixer.h b/wearable/sys/oss/gstossmixer.h
deleted file mode 100644
index d2e06fe..0000000
--- a/wearable/sys/oss/gstossmixer.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/* GStreamer OSS Mixer implementation
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- *
- * gstossmixer.h: mixer interface implementation for OSS
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __GST_OSS_MIXER_H__
-#define __GST_OSS_MIXER_H__
-
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-#include "gstosshelper.h"
-
-
-G_BEGIN_DECLS
-
-
-#define GST_OSS_MIXER(obj) ((GstOssMixer*)(obj))
-
-
-typedef enum {
- GST_OSS_MIXER_CAPTURE = 1<<0,
- GST_OSS_MIXER_PLAYBACK = 1<<1,
- GST_OSS_MIXER_ALL = GST_OSS_MIXER_CAPTURE | GST_OSS_MIXER_PLAYBACK
-} GstOssMixerDirection;
-
-
-typedef struct _GstOssMixer GstOssMixer;
-
-
-struct _GstOssMixer {
- GList * tracklist; /* list of available tracks */
-
- gint mixer_fd;
-
- gchar * device;
- gchar * cardname;
-
- gint recmask;
- gint recdevs;
- gint stereomask;
- gint devmask;
- gint mixcaps;
-
- GstOssMixerDirection dir;
-};
-
-
-GstOssMixer* gst_ossmixer_new (const gchar *device,
- GstOssMixerDirection dir);
-void gst_ossmixer_free (GstOssMixer *mixer);
-
-const GList* gst_ossmixer_list_tracks (GstOssMixer * mixer);
-void gst_ossmixer_set_volume (GstOssMixer * mixer,
- GstMixerTrack * track,
- gint * volumes);
-void gst_ossmixer_get_volume (GstOssMixer * mixer,
- GstMixerTrack * track,
- gint * volumes);
-void gst_ossmixer_set_record (GstOssMixer * mixer,
- GstMixerTrack * track,
- gboolean record);
-void gst_ossmixer_set_mute (GstOssMixer * mixer,
- GstMixerTrack * track,
- gboolean mute);
-
-
-#define GST_IMPLEMENT_OSS_MIXER_METHODS(Type, interface_as_function) \
-static gboolean \
-interface_as_function ## _supported (Type *this, GType iface_type) \
-{ \
- g_assert (iface_type == GST_TYPE_MIXER); \
- \
- return (this->mixer != NULL); \
-} \
- \
-static const GList* \
-interface_as_function ## _list_tracks (GstMixer * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_val_if_fail (this != NULL, NULL); \
- g_return_val_if_fail (this->mixer != NULL, NULL); \
- \
- return gst_ossmixer_list_tracks (this->mixer); \
-} \
- \
-static void \
-interface_as_function ## _set_volume (GstMixer * mixer, GstMixerTrack * track, \
- gint * volumes) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_ossmixer_set_volume (this->mixer, track, volumes); \
-} \
- \
-static void \
-interface_as_function ## _get_volume (GstMixer * mixer, GstMixerTrack * track, \
- gint * volumes) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_ossmixer_get_volume (this->mixer, track, volumes); \
-} \
- \
-static void \
-interface_as_function ## _set_record (GstMixer * mixer, GstMixerTrack * track, \
- gboolean record) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_ossmixer_set_record (this->mixer, track, record); \
-} \
- \
-static void \
-interface_as_function ## _set_mute (GstMixer * mixer, GstMixerTrack * track, \
- gboolean mute) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_ossmixer_set_mute (this->mixer, track, mute); \
-} \
- \
-static void \
-interface_as_function ## _interface_init (GstMixerClass * klass) \
-{ \
- GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE; \
- \
- /* set up the interface hooks */ \
- klass->list_tracks = interface_as_function ## _list_tracks; \
- klass->set_volume = interface_as_function ## _set_volume; \
- klass->get_volume = interface_as_function ## _get_volume; \
- klass->set_mute = interface_as_function ## _set_mute; \
- klass->set_record = interface_as_function ## _set_record; \
-}
-
-
-G_END_DECLS
-
-
-#endif /* __GST_OSS_MIXER_H__ */
diff --git a/wearable/sys/oss/gstossmixerelement.c b/wearable/sys/oss/gstossmixerelement.c
deleted file mode 100644
index 7ceb2b8..0000000
--- a/wearable/sys/oss/gstossmixerelement.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/* OSS mixer interface element.
- * Copyright (C) 2005 Andrew Vander Wingo <wingo@pobox.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-ossmixer
- *
- * This element lets you adjust sound input and output levels with the
- * Open Sound System (OSS). It supports the #GstMixer interface, which can be
- * used to obtain a list of available mixer tracks. Set the mixer element to
- * READY state before using the #GstMixer interface on it.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * <para>
- * ossmixer can't be used in a sensible way in gst-launch.
- * </para>
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstossmixerelement.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-#define DEFAULT_DEVICE "/dev/mixer"
-#define DEFAULT_DEVICE_NAME NULL
-
-enum
-{
- PROP_0,
- PROP_DEVICE,
- PROP_DEVICE_NAME
-};
-
-GST_BOILERPLATE_WITH_INTERFACE (GstOssMixerElement, gst_oss_mixer_element,
- GstElement, GST_TYPE_ELEMENT, GstMixer, GST_TYPE_MIXER,
- gst_oss_mixer_element);
-
-GST_IMPLEMENT_OSS_MIXER_METHODS (GstOssMixerElement, gst_oss_mixer_element);
-
-static GstStateChangeReturn gst_oss_mixer_element_change_state (GstElement *
- element, GstStateChange transition);
-
-static void gst_oss_mixer_element_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_oss_mixer_element_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec);
-static void gst_oss_mixer_element_finalize (GObject * object);
-
-static void
-gst_oss_mixer_element_base_init (gpointer klass)
-{
- gst_element_class_set_details_simple (GST_ELEMENT_CLASS (klass), "OSS Mixer",
- "Generic/Audio",
- "Control sound input and output levels with OSS",
- "Andrew Vander Wingo <wingo@pobox.com>");
-}
-
-static void
-gst_oss_mixer_element_class_init (GstOssMixerElementClass * klass)
-{
- GstElementClass *element_class;
- GObjectClass *gobject_class;
-
- element_class = (GstElementClass *) klass;
- gobject_class = (GObjectClass *) klass;
-
- gobject_class->finalize = gst_oss_mixer_element_finalize;
- gobject_class->set_property = gst_oss_mixer_element_set_property;
- gobject_class->get_property = gst_oss_mixer_element_get_property;
-
- /**
- * GstOssMixerElement:device
- *
- * OSS mixer device (usually /dev/mixer)
- *
- * Since: 0.10.5
- **/
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS mixer device (usually /dev/mixer)", DEFAULT_DEVICE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- element_class->change_state =
- GST_DEBUG_FUNCPTR (gst_oss_mixer_element_change_state);
-}
-
-static void
-gst_oss_mixer_element_finalize (GObject * obj)
-{
- GstOssMixerElement *this = GST_OSS_MIXER_ELEMENT (obj);
-
- g_free (this->device);
-
- G_OBJECT_CLASS (parent_class)->finalize (obj);
-}
-
-static void
-gst_oss_mixer_element_init (GstOssMixerElement * this,
- GstOssMixerElementClass * g_class)
-{
- this->mixer = NULL;
- this->device = g_strdup (DEFAULT_DEVICE);
-}
-
-static void
-gst_oss_mixer_element_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOssMixerElement *this = GST_OSS_MIXER_ELEMENT (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_free (this->device);
- this->device = g_value_dup_string (value);
- /* make sure we never set NULL */
- if (this->device == NULL) {
- this->device = g_strdup (DEFAULT_DEVICE);
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss_mixer_element_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOssMixerElement *this = GST_OSS_MIXER_ELEMENT (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_value_set_string (value, this->device);
- break;
- case PROP_DEVICE_NAME:
- if (this->mixer) {
- g_value_set_string (value, this->mixer->cardname);
- } else {
- g_value_set_string (value, NULL);
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstStateChangeReturn
-gst_oss_mixer_element_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstOssMixerElement *this = GST_OSS_MIXER_ELEMENT (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!this->mixer) {
- this->mixer = gst_ossmixer_new (this->device, GST_OSS_MIXER_ALL);
- if (!this->mixer)
- goto open_failed;
- }
- break;
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
- if (ret == GST_STATE_CHANGE_FAILURE)
- return ret;
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
- if (this->mixer) {
- gst_ossmixer_free (this->mixer);
- this->mixer = NULL;
- }
- break;
- default:
- break;
- }
- return ret;
-
- /* ERRORS */
-open_failed:
- {
- GST_ELEMENT_ERROR (element, RESOURCE, OPEN_READ_WRITE, (NULL),
- ("Failed to open oss mixer device '%s'", this->device));
- return GST_STATE_CHANGE_FAILURE;
- }
-}
diff --git a/wearable/sys/oss/gstossmixerelement.h b/wearable/sys/oss/gstossmixerelement.h
deleted file mode 100644
index 2d47e0e..0000000
--- a/wearable/sys/oss/gstossmixerelement.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* OSS mixer interface element.
- * Copyright (C) 2005 Andrew Vander Wingo <wingo@pobox.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#ifndef __GST_OSS_MIXER_ELEMENT_H__
-#define __GST_OSS_MIXER_ELEMENT_H__
-
-
-#include "gstossmixer.h"
-
-
-G_BEGIN_DECLS
-
-
-#define GST_OSS_MIXER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS_MIXER_ELEMENT,GstOssMixerElement))
-#define GST_OSS_MIXER_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS_MIXER_ELEMENT,GstOssMixerElementClass))
-#define GST_IS_OSS_MIXER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS_MIXER_ELEMENT))
-#define GST_IS_OSS_MIXER_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS_MIXER_ELEMENT))
-#define GST_TYPE_OSS_MIXER_ELEMENT (gst_oss_mixer_element_get_type())
-
-
-typedef struct _GstOssMixerElement GstOssMixerElement;
-typedef struct _GstOssMixerElementClass GstOssMixerElementClass;
-
-
-struct _GstOssMixerElement {
- GstElement parent;
-
- gchar *device;
- GstOssMixer *mixer;
-};
-
-struct _GstOssMixerElementClass {
- GstElementClass parent;
-};
-
-
-GType gst_oss_mixer_element_get_type (void);
-
-
-G_END_DECLS
-
-
-#endif /* __GST_OSS_MIXER_ELEMENT_H__ */
diff --git a/wearable/sys/oss/gstossmixertrack.c b/wearable/sys/oss/gstossmixertrack.c
deleted file mode 100644
index 3bc8cde..0000000
--- a/wearable/sys/oss/gstossmixertrack.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* GStreamer OSS Mixer implementation
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- *
- * gstossmixer.c: mixer interface implementation for OSS
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-
-#ifdef HAVE_OSS_INCLUDE_IN_SYS
-# include <sys/soundcard.h>
-#else
-# ifdef HAVE_OSS_INCLUDE_IN_ROOT
-# include <soundcard.h>
-# else
-# ifdef HAVE_OSS_INCLUDE_IN_MACHINE
-# include <machine/soundcard.h>
-# else
-# error "What to include?"
-# endif /* HAVE_OSS_INCLUDE_IN_MACHINE */
-# endif /* HAVE_OSS_INCLUDE_IN_ROOT */
-#endif /* HAVE_OSS_INCLUDE_IN_SYS */
-
-#include <gst/gst-i18n-plugin.h>
-
-#include "gstossmixertrack.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-#define MASK_BIT_IS_SET(mask, bit) \
- (mask & (1 << bit))
-
-G_DEFINE_TYPE (GstOssMixerTrack, gst_ossmixer_track, GST_TYPE_MIXER_TRACK);
-
-static void
-gst_ossmixer_track_class_init (GstOssMixerTrackClass * klass)
-{
- /* nop */
-}
-
-static void
-gst_ossmixer_track_init (GstOssMixerTrack * track)
-{
- track->lvol = track->rvol = 0;
- track->track_num = 0;
-}
-
-static const gchar **labels = NULL;
-
-/* three functions: firstly, OSS has the nasty habit of inserting
- * spaces in the labels, we want to get rid of them. Secondly,
- * i18n is impossible with OSS' way of providing us with mixer
- * labels, so we make a 'given' list of i18n'ed labels. Thirdly, I
- * personally don't like the "1337" names that OSS gives to their
- * labels ("Vol", "Mic", "Rec"), I'd rather see full names. */
-
-static void
-fill_labels (void)
-{
- gint i, pos;
- const gchar *origs[SOUND_MIXER_NRDEVICES] = SOUND_DEVICE_LABELS;
- const struct
- {
- const gchar *given;
- const gchar *wanted;
- }
- cases[] = {
- /* Note: this list is simply ripped from soundcard.h. For
- * some people, some values might be missing (3D surround,
- * etc.) - feel free to add them. That's the reason why
- * I'm doing this in such a horribly complicated way. */
- {
- "Vol ", _("Volume")}, {
- "Bass ", _("Bass")}, {
- "Trebl", _("Treble")}, {
- "Synth", _("Synth")}, {
- "Pcm ", _("PCM")}, {
- "Spkr ", _("Speaker")}, {
- "Line ", _("Line-in")}, {
- "Mic ", _("Microphone")}, {
- "CD ", _("CD")}, {
- "Mix ", _("Mixer")}, {
- "Pcm2 ", _("PCM-2")}, {
- "Rec ", _("Record")}, {
- "IGain", _("In-gain")}, {
- "OGain", _("Out-gain")}, {
- "Line1", _("Line-1")}, {
- "Line2", _("Line-2")}, {
- "Line3", _("Line-3")}, {
- "Digital1", _("Digital-1")}, {
- "Digital2", _("Digital-2")}, {
- "Digital3", _("Digital-3")}, {
- "PhoneIn", _("Phone-in")}, {
- "PhoneOut", _("Phone-out")}, {
- "Video", _("Video")}, {
- "Radio", _("Radio")}, {
- "Monitor", _("Monitor")}, {
- NULL, NULL}
- };
-
- labels = g_malloc (sizeof (gchar *) * SOUND_MIXER_NRDEVICES);
-
- for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
- for (pos = 0; cases[pos].given != NULL; pos++) {
- if (!strcmp (cases[pos].given, origs[i])) {
- labels[i] = g_strdup (cases[pos].wanted);
- break;
- }
- }
- if (cases[pos].given == NULL)
- labels[i] = g_strdup (origs[i]);
- }
-}
-
-GstMixerTrack *
-gst_ossmixer_track_new (gint mixer_fd,
- gint track_num, gint max_chans, gint flags)
-{
- GstOssMixerTrack *osstrack;
- GstMixerTrack *track;
- gint volume;
-
- if (!labels)
- fill_labels ();
-
- osstrack = g_object_new (GST_TYPE_OSSMIXER_TRACK, NULL);
- track = GST_MIXER_TRACK (osstrack);
- track->label = g_strdup (labels[track_num]);
- track->num_channels = max_chans;
- track->flags = flags;
- track->min_volume = 0;
- track->max_volume = 100;
- osstrack->track_num = track_num;
-
- /* volume */
- if (ioctl (mixer_fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning ("Error getting device (%d) volume: %s",
- osstrack->track_num, strerror (errno));
- volume = 0;
- }
- osstrack->lvol = (volume & 0xff);
- if (track->num_channels == 2) {
- osstrack->rvol = ((volume >> 8) & 0xff);
- }
-
- return track;
-}
diff --git a/wearable/sys/oss/gstossmixertrack.h b/wearable/sys/oss/gstossmixertrack.h
deleted file mode 100644
index 2e62ec8..0000000
--- a/wearable/sys/oss/gstossmixertrack.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer OSS Mixer implementation
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- *
- * gstossmixertrack.h: OSS mixer tracks
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_OSS_MIXER_TRACK_H__
-#define __GST_OSS_MIXER_TRACK_H__
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-#include "gstosshelper.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSSMIXER_TRACK \
- (gst_ossmixer_track_get_type ())
-#define GST_OSSMIXER_TRACK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_OSSMIXER_TRACK, \
- GstOssMixerTrack))
-#define GST_OSSMIXER_TRACK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_OSSMIXER_TRACK, \
- GstOssMixerTrackClass))
-#define GST_IS_OSSMIXER_TRACK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_OSSMIXER_TRACK))
-#define GST_IS_OSSMIXER_TRACK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_OSSMIXER_TRACK))
-
-typedef struct _GstOssMixerTrack {
- GstMixerTrack parent;
-
- gint lvol, rvol;
- gint track_num;
-} GstOssMixerTrack;
-
-typedef struct _GstOssMixerTrackClass {
- GstMixerTrackClass parent;
-} GstOssMixerTrackClass;
-
-GType gst_ossmixer_track_get_type (void);
-GstMixerTrack* gst_ossmixer_track_new (gint mixer_fd,
- gint track_num, gint max_chans, gint flags);
-
-G_END_DECLS
-
-#endif /* __GST_OSS_MIXER_TRACK_H__ */
diff --git a/wearable/sys/oss/gstosssink.c b/wearable/sys/oss/gstosssink.c
deleted file mode 100644
index a604d9c..0000000
--- a/wearable/sys/oss/gstosssink.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000,2005 Wim Taymans <wim@fluendo.com>
- *
- * gstosssink.c:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-osssink
- *
- * This element lets you output sound using the Open Sound System (OSS).
- *
- * Note that you should almost always use generic audio conversion elements
- * like audioconvert and audioresample in front of an audiosink to make sure
- * your pipeline works under all circumstances (those conversion elements will
- * act in passthrough-mode if no conversion is necessary).
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v audiotestsrc ! audioconvert ! volume volume=0.1 ! osssink
- * ]| will output a sine wave (continuous beep sound) to your sound card (with
- * a very low volume as precaution).
- * |[
- * gst-launch -v filesrc location=music.ogg ! decodebin ! audioconvert ! audioresample ! osssink
- * ]| will play an Ogg/Vorbis audio file and output it using the Open Sound System.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#ifdef HAVE_OSS_INCLUDE_IN_SYS
-# include <sys/soundcard.h>
-#else
-# ifdef HAVE_OSS_INCLUDE_IN_ROOT
-# include <soundcard.h>
-# else
-# ifdef HAVE_OSS_INCLUDE_IN_MACHINE
-# include <machine/soundcard.h>
-# else
-# error "What to include?"
-# endif /* HAVE_OSS_INCLUDE_IN_MACHINE */
-# endif /* HAVE_OSS_INCLUDE_IN_ROOT */
-#endif /* HAVE_OSS_INCLUDE_IN_SYS */
-
-#include "common.h"
-#include "gstosssink.h"
-
-#include <gst/gst-i18n-plugin.h>
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-static void gst_oss_sink_base_init (gpointer g_class);
-static void gst_oss_sink_class_init (GstOssSinkClass * klass);
-static void gst_oss_sink_init (GstOssSink * osssink);
-
-static void gst_oss_sink_dispose (GObject * object);
-static void gst_oss_sink_finalise (GObject * object);
-
-static void gst_oss_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_oss_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_oss_sink_getcaps (GstBaseSink * bsink);
-
-static gboolean gst_oss_sink_open (GstAudioSink * asink);
-static gboolean gst_oss_sink_close (GstAudioSink * asink);
-static gboolean gst_oss_sink_prepare (GstAudioSink * asink,
- GstRingBufferSpec * spec);
-static gboolean gst_oss_sink_unprepare (GstAudioSink * asink);
-static guint gst_oss_sink_write (GstAudioSink * asink, gpointer data,
- guint length);
-static guint gst_oss_sink_delay (GstAudioSink * asink);
-static void gst_oss_sink_reset (GstAudioSink * asink);
-
-/* OssSink signals and args */
-enum
-{
- LAST_SIGNAL
-};
-
-#define DEFAULT_DEVICE "/dev/dsp"
-enum
-{
- PROP_0,
- PROP_DEVICE,
-};
-
-static GstStaticPadTemplate osssink_sink_factory =
- GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) { " G_STRINGIFY (G_BYTE_ORDER) " }, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]; "
- "audio/x-raw-int, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]")
- );
-
-static GstElementClass *parent_class = NULL;
-
-/* static guint gst_oss_sink_signals[LAST_SIGNAL] = { 0 }; */
-
-GType
-gst_oss_sink_get_type (void)
-{
- static GType osssink_type = 0;
-
- if (!osssink_type) {
- static const GTypeInfo osssink_info = {
- sizeof (GstOssSinkClass),
- gst_oss_sink_base_init,
- NULL,
- (GClassInitFunc) gst_oss_sink_class_init,
- NULL,
- NULL,
- sizeof (GstOssSink),
- 0,
- (GInstanceInitFunc) gst_oss_sink_init,
- };
-
- osssink_type =
- g_type_register_static (GST_TYPE_AUDIO_SINK, "GstOssSink",
- &osssink_info, 0);
- }
-
- return osssink_type;
-}
-
-static void
-gst_oss_sink_dispose (GObject * object)
-{
- GstOssSink *osssink = GST_OSSSINK (object);
-
- if (osssink->probed_caps) {
- gst_caps_unref (osssink->probed_caps);
- osssink->probed_caps = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_oss_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Audio Sink (OSS)",
- "Sink/Audio",
- "Output to a sound card via OSS",
- "Erik Walthinsen <omega@cse.ogi.edu>, "
- "Wim Taymans <wim.taymans@chello.be>");
-
- gst_element_class_add_static_pad_template (element_class,
- &osssink_sink_factory);
-}
-
-static void
-gst_oss_sink_class_init (GstOssSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstBaseSinkClass *gstbasesink_class;
- GstAudioSinkClass *gstaudiosink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
- gstaudiosink_class = (GstAudioSinkClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->dispose = gst_oss_sink_dispose;
- gobject_class->finalize = gst_oss_sink_finalise;
- gobject_class->get_property = gst_oss_sink_get_property;
- gobject_class->set_property = gst_oss_sink_set_property;
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS device (usually /dev/dspN)", DEFAULT_DEVICE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_oss_sink_getcaps);
-
- gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_oss_sink_open);
- gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_oss_sink_close);
- gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_oss_sink_prepare);
- gstaudiosink_class->unprepare = GST_DEBUG_FUNCPTR (gst_oss_sink_unprepare);
- gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_oss_sink_write);
- gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_oss_sink_delay);
- gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_oss_sink_reset);
-}
-
-static void
-gst_oss_sink_init (GstOssSink * osssink)
-{
- const gchar *device;
-
- GST_DEBUG_OBJECT (osssink, "initializing osssink");
-
- device = g_getenv ("AUDIODEV");
- if (device == NULL)
- device = DEFAULT_DEVICE;
- osssink->device = g_strdup (device);
- osssink->fd = -1;
-}
-
-static void
-gst_oss_sink_finalise (GObject * object)
-{
- GstOssSink *osssink = GST_OSSSINK (object);
-
- g_free (osssink->device);
-
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (object));
-}
-
-static void
-gst_oss_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOssSink *sink;
-
- sink = GST_OSSSINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_free (sink->device);
- sink->device = g_value_dup_string (value);
- if (sink->probed_caps) {
- gst_caps_unref (sink->probed_caps);
- sink->probed_caps = NULL;
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOssSink *sink;
-
- sink = GST_OSSSINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_value_set_string (value, sink->device);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_oss_sink_getcaps (GstBaseSink * bsink)
-{
- GstOssSink *osssink;
- GstCaps *caps;
-
- osssink = GST_OSSSINK (bsink);
-
- if (osssink->fd == -1) {
- caps = gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD
- (bsink)));
- } else if (osssink->probed_caps) {
- caps = gst_caps_copy (osssink->probed_caps);
- } else {
- caps = gst_oss_helper_probe_caps (osssink->fd);
- if (caps && !gst_caps_is_empty (caps)) {
- osssink->probed_caps = gst_caps_copy (caps);
- }
- }
-
- return caps;
-}
-
-static gint
-ilog2 (gint x)
-{
- /* well... hacker's delight explains... */
- x = x | (x >> 1);
- x = x | (x >> 2);
- x = x | (x >> 4);
- x = x | (x >> 8);
- x = x | (x >> 16);
- x = x - ((x >> 1) & 0x55555555);
- x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
- x = (x + (x >> 4)) & 0x0f0f0f0f;
- x = x + (x >> 8);
- x = x + (x >> 16);
- return (x & 0x0000003f) - 1;
-}
-
-static gint
-gst_oss_sink_get_format (GstBufferFormat fmt)
-{
- gint result;
-
- switch (fmt) {
- case GST_MU_LAW:
- result = AFMT_MU_LAW;
- break;
- case GST_A_LAW:
- result = AFMT_A_LAW;
- break;
- case GST_IMA_ADPCM:
- result = AFMT_IMA_ADPCM;
- break;
- case GST_U8:
- result = AFMT_U8;
- break;
- case GST_S16_LE:
- result = AFMT_S16_LE;
- break;
- case GST_S16_BE:
- result = AFMT_S16_BE;
- break;
- case GST_S8:
- result = AFMT_S8;
- break;
- case GST_U16_LE:
- result = AFMT_U16_LE;
- break;
- case GST_U16_BE:
- result = AFMT_U16_BE;
- break;
- case GST_MPEG:
- result = AFMT_MPEG;
- break;
- default:
- result = 0;
- break;
- }
- return result;
-}
-
-static gboolean
-gst_oss_sink_open (GstAudioSink * asink)
-{
- GstOssSink *oss;
- int mode;
-
- oss = GST_OSSSINK (asink);
-
- mode = O_WRONLY;
- mode |= O_NONBLOCK;
-
- oss->fd = open (oss->device, mode, 0);
- if (oss->fd == -1) {
- switch (errno) {
- case EBUSY:
- goto busy;
- case EACCES:
- goto no_permission;
- default:
- goto open_failed;
- }
- }
-
- return TRUE;
-
- /* ERRORS */
-busy:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
- (_("Could not open audio device for playback. "
- "Device is being used by another application.")), (NULL));
- return FALSE;
- }
-no_permission:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open audio device for playback. "
- "You don't have permission to open the device.")),
- GST_ERROR_SYSTEM);
- return FALSE;
- }
-open_failed:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open audio device for playback.")), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss_sink_close (GstAudioSink * asink)
-{
- close (GST_OSSSINK (asink)->fd);
- GST_OSSSINK (asink)->fd = -1;
- return TRUE;
-}
-
-static gboolean
-gst_oss_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
-{
- GstOssSink *oss;
- struct audio_buf_info info;
- int mode;
- int tmp;
-
- oss = GST_OSSSINK (asink);
-
- /* we opened non-blocking so that we can detect if the device is available
- * without hanging forever. We now want to remove the non-blocking flag. */
- mode = fcntl (oss->fd, F_GETFL);
- mode &= ~O_NONBLOCK;
- if (fcntl (oss->fd, F_SETFL, mode) == -1) {
- /* some drivers do no support unsetting the non-blocking flag, try to
- * close/open the device then. This is racy but we error out properly. */
- gst_oss_sink_close (asink);
- if ((oss->fd = open (oss->device, O_WRONLY, 0)) == -1)
- goto non_block;
- }
-
- tmp = gst_oss_sink_get_format (spec->format);
- if (tmp == 0)
- goto wrong_format;
-
- if (spec->width != 16 && spec->width != 8)
- goto dodgy_width;
-
- SET_PARAM (oss, SNDCTL_DSP_SETFMT, tmp, "SETFMT");
- if (spec->channels == 2)
- SET_PARAM (oss, SNDCTL_DSP_STEREO, 1, "STEREO");
- SET_PARAM (oss, SNDCTL_DSP_CHANNELS, spec->channels, "CHANNELS");
- SET_PARAM (oss, SNDCTL_DSP_SPEED, spec->rate, "SPEED");
-
- tmp = ilog2 (spec->segsize);
- tmp = ((spec->segtotal & 0x7fff) << 16) | tmp;
- GST_DEBUG_OBJECT (oss, "set segsize: %d, segtotal: %d, value: %08x",
- spec->segsize, spec->segtotal, tmp);
-
- SET_PARAM (oss, SNDCTL_DSP_SETFRAGMENT, tmp, "SETFRAGMENT");
- GET_PARAM (oss, SNDCTL_DSP_GETOSPACE, &info, "GETOSPACE");
-
- spec->segsize = info.fragsize;
- spec->segtotal = info.fragstotal;
-
- spec->bytes_per_sample = (spec->width / 8) * spec->channels;
- oss->bytes_per_sample = (spec->width / 8) * spec->channels;
-
- GST_DEBUG_OBJECT (oss, "got segsize: %d, segtotal: %d, value: %08x",
- spec->segsize, spec->segtotal, tmp);
-
- return TRUE;
-
- /* ERRORS */
-non_block:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
- ("Unable to set device %s in non blocking mode: %s",
- oss->device, g_strerror (errno)));
- return FALSE;
- }
-wrong_format:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
- ("Unable to get format %d", spec->format));
- return FALSE;
- }
-dodgy_width:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
- ("unexpected width %d", spec->width));
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss_sink_unprepare (GstAudioSink * asink)
-{
- /* could do a SNDCTL_DSP_RESET, but the OSS manual recommends a close/open */
-
- if (!gst_oss_sink_close (asink))
- goto couldnt_close;
-
- if (!gst_oss_sink_open (asink))
- goto couldnt_reopen;
-
- return TRUE;
-
- /* ERRORS */
-couldnt_close:
- {
- GST_DEBUG_OBJECT (asink, "Could not close the audio device");
- return FALSE;
- }
-couldnt_reopen:
- {
- GST_DEBUG_OBJECT (asink, "Could not reopen the audio device");
- return FALSE;
- }
-}
-
-static guint
-gst_oss_sink_write (GstAudioSink * asink, gpointer data, guint length)
-{
- return write (GST_OSSSINK (asink)->fd, data, length);
-}
-
-static guint
-gst_oss_sink_delay (GstAudioSink * asink)
-{
- GstOssSink *oss;
- gint delay = 0;
- gint ret;
-
- oss = GST_OSSSINK (asink);
-
-#ifdef SNDCTL_DSP_GETODELAY
- ret = ioctl (oss->fd, SNDCTL_DSP_GETODELAY, &delay);
-#else
- ret = -1;
-#endif
- if (ret < 0) {
- audio_buf_info info;
-
- ret = ioctl (oss->fd, SNDCTL_DSP_GETOSPACE, &info);
-
- delay = (ret < 0 ? 0 : (info.fragstotal * info.fragsize) - info.bytes);
- }
- return delay / oss->bytes_per_sample;
-}
-
-static void
-gst_oss_sink_reset (GstAudioSink * asink)
-{
- /* There's nothing we can do here really: OSS can't handle access to the
- * same device/fd from multiple threads and might deadlock or blow up in
- * other ways if we try an ioctl SNDCTL_DSP_RESET or similar */
-}
diff --git a/wearable/sys/oss/gstosssink.h b/wearable/sys/oss/gstosssink.h
deleted file mode 100644
index bb2ca93..0000000
--- a/wearable/sys/oss/gstosssink.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000 Wim Taymans <wtay@chello.be>
- *
- * gstosssink.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __GST_OSSSINK_H__
-#define __GST_OSSSINK_H__
-
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosink.h>
-
-#include "gstosshelper.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSSSINK (gst_oss_sink_get_type())
-#define GST_OSSSINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSSSINK,GstOssSink))
-#define GST_OSSSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSSSINK,GstOssSinkClass))
-#define GST_IS_OSSSINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSSSINK))
-#define GST_IS_OSSSINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSSSINK))
-
-typedef struct _GstOssSink GstOssSink;
-typedef struct _GstOssSinkClass GstOssSinkClass;
-
-struct _GstOssSink {
- GstAudioSink sink;
-
- gchar *device;
- gint fd;
- gint bytes_per_sample;
-
- GstCaps *probed_caps;
-};
-
-struct _GstOssSinkClass {
- GstAudioSinkClass parent_class;
-};
-
-GType gst_oss_sink_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_OSSSINK_H__ */
diff --git a/wearable/sys/oss/gstosssrc.c b/wearable/sys/oss/gstosssrc.c
deleted file mode 100644
index 2bd931b..0000000
--- a/wearable/sys/oss/gstosssrc.c
+++ /dev/null
@@ -1,537 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000,2005 Wim Taymans <wim@fluendo.com>
- *
- * gstosssrc.c:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-osssrc
- *
- * This element lets you record sound using the Open Sound System (OSS).
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v osssrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=mymusic.ogg
- * ]| will record sound from your sound card using OSS and encode it to an
- * Ogg/Vorbis file (this will only work if your mixer settings are right
- * and the right inputs enabled etc.)
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#ifdef HAVE_OSS_INCLUDE_IN_SYS
-# include <sys/soundcard.h>
-#else
-# ifdef HAVE_OSS_INCLUDE_IN_ROOT
-# include <soundcard.h>
-# else
-# ifdef HAVE_OSS_INCLUDE_IN_MACHINE
-# include <machine/soundcard.h>
-# else
-# error "What to include?"
-# endif /* HAVE_OSS_INCLUDE_IN_MACHINE */
-# endif /* HAVE_OSS_INCLUDE_IN_ROOT */
-#endif /* HAVE_OSS_INCLUDE_IN_SYS */
-
-#include "gstosssrc.h"
-#include "common.h"
-
-#include <gst/gst-i18n-plugin.h>
-
-GST_DEBUG_CATEGORY_EXTERN (oss_debug);
-#define GST_CAT_DEFAULT oss_debug
-
-#define DEFAULT_DEVICE "/dev/dsp"
-#define DEFAULT_DEVICE_NAME ""
-
-enum
-{
- PROP_0,
- PROP_DEVICE,
- PROP_DEVICE_NAME,
-};
-
-GST_BOILERPLATE_WITH_INTERFACE (GstOssSrc, gst_oss_src, GstAudioSrc,
- GST_TYPE_AUDIO_SRC, GstMixer, GST_TYPE_MIXER, gst_oss_src_mixer);
-
-GST_IMPLEMENT_OSS_MIXER_METHODS (GstOssSrc, gst_oss_src_mixer);
-
-static void gst_oss_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_oss_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-
-static void gst_oss_src_dispose (GObject * object);
-static void gst_oss_src_finalize (GstOssSrc * osssrc);
-
-static GstCaps *gst_oss_src_getcaps (GstBaseSrc * bsrc);
-
-static gboolean gst_oss_src_open (GstAudioSrc * asrc);
-static gboolean gst_oss_src_close (GstAudioSrc * asrc);
-static gboolean gst_oss_src_prepare (GstAudioSrc * asrc,
- GstRingBufferSpec * spec);
-static gboolean gst_oss_src_unprepare (GstAudioSrc * asrc);
-static guint gst_oss_src_read (GstAudioSrc * asrc, gpointer data, guint length);
-static guint gst_oss_src_delay (GstAudioSrc * asrc);
-static void gst_oss_src_reset (GstAudioSrc * asrc);
-
-
-
-static GstStaticPadTemplate osssrc_src_factory = GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) { " G_STRINGIFY (G_BYTE_ORDER) " }, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]; "
- "audio/x-raw-int, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]")
- );
-
-
-static void
-gst_oss_src_dispose (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_oss_src_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "Audio Source (OSS)",
- "Source/Audio",
- "Capture from a sound card via OSS",
- "Erik Walthinsen <omega@cse.ogi.edu>, " "Wim Taymans <wim@fluendo.com>");
-
- gst_element_class_add_static_pad_template (element_class,
- &osssrc_src_factory);
-}
-
-static void
-gst_oss_src_class_init (GstOssSrcClass * klass)
-{
- GObjectClass *gobject_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstAudioSrcClass *gstaudiosrc_class;
-
- gobject_class = (GObjectClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstaudiosrc_class = (GstAudioSrcClass *) klass;
-
- gobject_class->dispose = gst_oss_src_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_oss_src_finalize;
- gobject_class->get_property = gst_oss_src_get_property;
- gobject_class->set_property = gst_oss_src_set_property;
-
- gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_oss_src_getcaps);
-
- gstaudiosrc_class->open = GST_DEBUG_FUNCPTR (gst_oss_src_open);
- gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_oss_src_prepare);
- gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_oss_src_unprepare);
- gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_oss_src_close);
- gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_oss_src_read);
- gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_oss_src_delay);
- gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_oss_src_reset);
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS device (usually /dev/dspN)", DEFAULT_DEVICE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_oss_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOssSrc *src;
-
- src = GST_OSS_SRC (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- if (src->device)
- g_free (src->device);
- src->device = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOssSrc *src;
-
- src = GST_OSS_SRC (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_value_set_string (value, src->device);
- break;
- case PROP_DEVICE_NAME:
- g_value_set_string (value, src->device_name);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss_src_init (GstOssSrc * osssrc, GstOssSrcClass * g_class)
-{
- const gchar *device;
-
- GST_DEBUG ("initializing osssrc");
-
- device = g_getenv ("AUDIODEV");
- if (device == NULL)
- device = DEFAULT_DEVICE;
-
- osssrc->fd = -1;
- osssrc->device = g_strdup (device);
- osssrc->device_name = g_strdup (DEFAULT_DEVICE_NAME);
- osssrc->probed_caps = NULL;
-}
-
-static void
-gst_oss_src_finalize (GstOssSrc * osssrc)
-{
- g_free (osssrc->device);
- g_free (osssrc->device_name);
-
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (osssrc));
-}
-
-static GstCaps *
-gst_oss_src_getcaps (GstBaseSrc * bsrc)
-{
- GstOssSrc *osssrc;
- GstCaps *caps;
-
- osssrc = GST_OSS_SRC (bsrc);
-
- if (osssrc->fd == -1) {
- GST_DEBUG_OBJECT (osssrc, "device not open, using template caps");
- return NULL; /* base class will get template caps for us */
- }
-
- if (osssrc->probed_caps) {
- GST_LOG_OBJECT (osssrc, "Returning cached caps");
- return gst_caps_ref (osssrc->probed_caps);
- }
-
- caps = gst_oss_helper_probe_caps (osssrc->fd);
-
- if (caps) {
- osssrc->probed_caps = gst_caps_ref (caps);
- }
-
- GST_INFO_OBJECT (osssrc, "returning caps %" GST_PTR_FORMAT, caps);
-
- return caps;
-}
-
-static gint
-ilog2 (gint x)
-{
- /* well... hacker's delight explains... */
- x = x | (x >> 1);
- x = x | (x >> 2);
- x = x | (x >> 4);
- x = x | (x >> 8);
- x = x | (x >> 16);
- x = x - ((x >> 1) & 0x55555555);
- x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
- x = (x + (x >> 4)) & 0x0f0f0f0f;
- x = x + (x >> 8);
- x = x + (x >> 16);
- return (x & 0x0000003f) - 1;
-}
-
-static gint
-gst_oss_src_get_format (GstBufferFormat fmt)
-{
- gint result;
-
- switch (fmt) {
- case GST_MU_LAW:
- result = AFMT_MU_LAW;
- break;
- case GST_A_LAW:
- result = AFMT_A_LAW;
- break;
- case GST_IMA_ADPCM:
- result = AFMT_IMA_ADPCM;
- break;
- case GST_U8:
- result = AFMT_U8;
- break;
- case GST_S16_LE:
- result = AFMT_S16_LE;
- break;
- case GST_S16_BE:
- result = AFMT_S16_BE;
- break;
- case GST_S8:
- result = AFMT_S8;
- break;
- case GST_U16_LE:
- result = AFMT_U16_LE;
- break;
- case GST_U16_BE:
- result = AFMT_U16_BE;
- break;
- case GST_MPEG:
- result = AFMT_MPEG;
- break;
- default:
- result = 0;
- break;
- }
- return result;
-}
-
-static gboolean
-gst_oss_src_open (GstAudioSrc * asrc)
-{
- GstOssSrc *oss;
- int mode;
-
- oss = GST_OSS_SRC (asrc);
-
- mode = O_RDONLY;
- mode |= O_NONBLOCK;
-
- oss->fd = open (oss->device, mode, 0);
- if (oss->fd == -1) {
- switch (errno) {
- case EACCES:
- goto no_permission;
- default:
- goto open_failed;
- }
- }
-
- if (!oss->mixer) {
- oss->mixer = gst_ossmixer_new ("/dev/mixer", GST_OSS_MIXER_CAPTURE);
-
- if (oss->mixer) {
- g_free (oss->device_name);
- oss->device_name = g_strdup (oss->mixer->cardname);
- }
- }
- return TRUE;
-
-no_permission:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open audio device for recording. "
- "You don't have permission to open the device.")),
- GST_ERROR_SYSTEM);
- return FALSE;
- }
-open_failed:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open audio device for recording.")),
- ("Unable to open device %s for recording: %s",
- oss->device, g_strerror (errno)));
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss_src_close (GstAudioSrc * asrc)
-{
- GstOssSrc *oss;
-
- oss = GST_OSS_SRC (asrc);
-
- close (oss->fd);
-
- if (oss->mixer) {
- gst_ossmixer_free (oss->mixer);
- oss->mixer = NULL;
- }
-
- gst_caps_replace (&oss->probed_caps, NULL);
-
- return TRUE;
-}
-
-static gboolean
-gst_oss_src_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec)
-{
- GstOssSrc *oss;
- struct audio_buf_info info;
- int mode;
- int fmt, tmp;
-
- oss = GST_OSS_SRC (asrc);
-
- mode = fcntl (oss->fd, F_GETFL);
- mode &= ~O_NONBLOCK;
- if (fcntl (oss->fd, F_SETFL, mode) == -1)
- goto non_block;
-
- fmt = gst_oss_src_get_format (spec->format);
- if (fmt == 0)
- goto wrong_format;
-
- tmp = ilog2 (spec->segsize);
- tmp = ((spec->segtotal & 0x7fff) << 16) | tmp;
- GST_DEBUG_OBJECT (oss, "set segsize: %d, segtotal: %d, value: %08x",
- spec->segsize, spec->segtotal, tmp);
-
- SET_PARAM (oss, SNDCTL_DSP_SETFRAGMENT, tmp, "SETFRAGMENT");
-
- SET_PARAM (oss, SNDCTL_DSP_RESET, 0, "RESET");
-
- SET_PARAM (oss, SNDCTL_DSP_SETFMT, fmt, "SETFMT");
- if (spec->channels == 2)
- SET_PARAM (oss, SNDCTL_DSP_STEREO, 1, "STEREO");
- SET_PARAM (oss, SNDCTL_DSP_CHANNELS, spec->channels, "CHANNELS");
- SET_PARAM (oss, SNDCTL_DSP_SPEED, spec->rate, "SPEED");
-
- GET_PARAM (oss, SNDCTL_DSP_GETISPACE, &info, "GETISPACE");
-
- spec->segsize = info.fragsize;
- spec->segtotal = info.fragstotal;
-
- if (spec->width != 16 && spec->width != 8)
- goto dodgy_width;
-
- spec->bytes_per_sample = (spec->width / 8) * spec->channels;
- oss->bytes_per_sample = (spec->width / 8) * spec->channels;
- memset (spec->silence_sample, 0, spec->bytes_per_sample);
-
- GST_DEBUG_OBJECT (oss, "got segsize: %d, segtotal: %d, value: %08x",
- spec->segsize, spec->segtotal, tmp);
-
- return TRUE;
-
-non_block:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- ("Unable to set device %s in non blocking mode: %s",
- oss->device, g_strerror (errno)), (NULL));
- return FALSE;
- }
-wrong_format:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- ("Unable to get format %d", spec->format), (NULL));
- return FALSE;
- }
-dodgy_width:
- {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- ("Unexpected width %d", spec->width), (NULL));
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss_src_unprepare (GstAudioSrc * asrc)
-{
- /* could do a SNDCTL_DSP_RESET, but the OSS manual recommends a close/open */
-
- if (!gst_oss_src_close (asrc))
- goto couldnt_close;
-
- if (!gst_oss_src_open (asrc))
- goto couldnt_reopen;
-
- return TRUE;
-
-couldnt_close:
- {
- GST_DEBUG_OBJECT (asrc, "Could not close the audio device");
- return FALSE;
- }
-couldnt_reopen:
- {
- GST_DEBUG_OBJECT (asrc, "Could not reopen the audio device");
- return FALSE;
- }
-}
-
-static guint
-gst_oss_src_read (GstAudioSrc * asrc, gpointer data, guint length)
-{
- return read (GST_OSS_SRC (asrc)->fd, data, length);
-}
-
-static guint
-gst_oss_src_delay (GstAudioSrc * asrc)
-{
- GstOssSrc *oss;
- gint delay = 0;
- gint ret;
-
- oss = GST_OSS_SRC (asrc);
-
-#ifdef SNDCTL_DSP_GETODELAY
- ret = ioctl (oss->fd, SNDCTL_DSP_GETODELAY, &delay);
-#else
- ret = -1;
-#endif
- if (ret < 0) {
- audio_buf_info info;
-
- ret = ioctl (oss->fd, SNDCTL_DSP_GETOSPACE, &info);
-
- delay = (ret < 0 ? 0 : (info.fragstotal * info.fragsize) - info.bytes);
- }
- return delay / oss->bytes_per_sample;
-}
-
-static void
-gst_oss_src_reset (GstAudioSrc * asrc)
-{
- /* There's nothing we can do here really: OSS can't handle access to the
- * same device/fd from multiple threads and might deadlock or blow up in
- * other ways if we try an ioctl SNDCTL_DSP_RESET or similar */
-}
diff --git a/wearable/sys/oss/gstosssrc.h b/wearable/sys/oss/gstosssrc.h
deleted file mode 100644
index 0d14613..0000000
--- a/wearable/sys/oss/gstosssrc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- * 2000 Wim Taymans <wtay@chello.be>
- *
- * gstosssrc.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-#ifndef __GST_OSS_SRC_H__
-#define __GST_OSS_SRC_H__
-
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosrc.h>
-
-#include "gstosshelper.h"
-#include "gstossmixer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS_SRC (gst_oss_src_get_type())
-#define GST_OSS_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS_SRC,GstOssSrc))
-#define GST_OSS_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS_SRC,GstOssSrcClass))
-#define GST_IS_OSS_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS_SRC))
-#define GST_IS_OSS_SRC_CLASS(klas) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS_SRC))
-
-typedef struct _GstOssSrc GstOssSrc;
-typedef struct _GstOssSrcClass GstOssSrcClass;
-
-struct _GstOssSrc {
- GstAudioSrc src;
-
- gint fd;
- gint bytes_per_sample;
-
- gchar *device;
- gchar *device_name;
-
- GstCaps *probed_caps;
-
- GstOssMixer *mixer;
-};
-
-struct _GstOssSrcClass {
- GstAudioSrcClass parent_class;
-};
-
-GType gst_oss_src_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_OSS_SRC_H__ */
diff --git a/wearable/sys/oss4/Makefile.am b/wearable/sys/oss4/Makefile.am
deleted file mode 100644
index 955e903..0000000
--- a/wearable/sys/oss4/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-plugin_LTLIBRARIES = libgstoss4audio.la
-
-libgstoss4audio_la_SOURCES = \
- oss4-audio.c \
- oss4-mixer.c \
- oss4-mixer-enum.c \
- oss4-mixer-slider.c \
- oss4-mixer-switch.c \
- oss4-property-probe.c \
- oss4-sink.c \
- oss4-source.c
-
-libgstoss4audio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
-libgstoss4audio_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- -lgstaudio-$(GST_MAJORMINOR) \
- $(GST_LIBS)
-libgstoss4audio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstoss4audio_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = \
- oss4-audio.h \
- oss4-mixer.h \
- oss4-mixer-enum.h \
- oss4-mixer-slider.h \
- oss4-mixer-switch.h \
- oss4-property-probe.h \
- oss4-sink.h \
- oss4-soundcard.h \
- oss4-source.h
-
-
diff --git a/wearable/sys/oss4/Makefile.in b/wearable/sys/oss4/Makefile.in
deleted file mode 100644
index 3cda65b..0000000
--- a/wearable/sys/oss4/Makefile.in
+++ /dev/null
@@ -1,892 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/oss4
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstoss4audio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstoss4audio_la_OBJECTS = libgstoss4audio_la-oss4-audio.lo \
- libgstoss4audio_la-oss4-mixer.lo \
- libgstoss4audio_la-oss4-mixer-enum.lo \
- libgstoss4audio_la-oss4-mixer-slider.lo \
- libgstoss4audio_la-oss4-mixer-switch.lo \
- libgstoss4audio_la-oss4-property-probe.lo \
- libgstoss4audio_la-oss4-sink.lo \
- libgstoss4audio_la-oss4-source.lo
-libgstoss4audio_la_OBJECTS = $(am_libgstoss4audio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstoss4audio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) \
- $(libgstoss4audio_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstoss4audio_la_SOURCES)
-DIST_SOURCES = $(libgstoss4audio_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstoss4audio.la
-libgstoss4audio_la_SOURCES = \
- oss4-audio.c \
- oss4-mixer.c \
- oss4-mixer-enum.c \
- oss4-mixer-slider.c \
- oss4-mixer-switch.c \
- oss4-property-probe.c \
- oss4-sink.c \
- oss4-source.c
-
-libgstoss4audio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
-libgstoss4audio_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- -lgstaudio-$(GST_MAJORMINOR) \
- $(GST_LIBS)
-
-libgstoss4audio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstoss4audio_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = \
- oss4-audio.h \
- oss4-mixer.h \
- oss4-mixer-enum.h \
- oss4-mixer-slider.h \
- oss4-mixer-switch.h \
- oss4-property-probe.h \
- oss4-sink.h \
- oss4-soundcard.h \
- oss4-source.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/oss4/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/oss4/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstoss4audio.la: $(libgstoss4audio_la_OBJECTS) $(libgstoss4audio_la_DEPENDENCIES) $(EXTRA_libgstoss4audio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstoss4audio_la_LINK) -rpath $(plugindir) $(libgstoss4audio_la_OBJECTS) $(libgstoss4audio_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-audio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-mixer-enum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-mixer-slider.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-mixer-switch.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-mixer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-property-probe.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-sink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstoss4audio_la-oss4-source.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstoss4audio_la-oss4-audio.lo: oss4-audio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-audio.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-audio.Tpo -c -o libgstoss4audio_la-oss4-audio.lo `test -f 'oss4-audio.c' || echo '$(srcdir)/'`oss4-audio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-audio.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-audio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-audio.c' object='libgstoss4audio_la-oss4-audio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-audio.lo `test -f 'oss4-audio.c' || echo '$(srcdir)/'`oss4-audio.c
-
-libgstoss4audio_la-oss4-mixer.lo: oss4-mixer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-mixer.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-mixer.Tpo -c -o libgstoss4audio_la-oss4-mixer.lo `test -f 'oss4-mixer.c' || echo '$(srcdir)/'`oss4-mixer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-mixer.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-mixer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-mixer.c' object='libgstoss4audio_la-oss4-mixer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-mixer.lo `test -f 'oss4-mixer.c' || echo '$(srcdir)/'`oss4-mixer.c
-
-libgstoss4audio_la-oss4-mixer-enum.lo: oss4-mixer-enum.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-mixer-enum.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-mixer-enum.Tpo -c -o libgstoss4audio_la-oss4-mixer-enum.lo `test -f 'oss4-mixer-enum.c' || echo '$(srcdir)/'`oss4-mixer-enum.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-mixer-enum.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-mixer-enum.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-mixer-enum.c' object='libgstoss4audio_la-oss4-mixer-enum.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-mixer-enum.lo `test -f 'oss4-mixer-enum.c' || echo '$(srcdir)/'`oss4-mixer-enum.c
-
-libgstoss4audio_la-oss4-mixer-slider.lo: oss4-mixer-slider.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-mixer-slider.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-mixer-slider.Tpo -c -o libgstoss4audio_la-oss4-mixer-slider.lo `test -f 'oss4-mixer-slider.c' || echo '$(srcdir)/'`oss4-mixer-slider.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-mixer-slider.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-mixer-slider.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-mixer-slider.c' object='libgstoss4audio_la-oss4-mixer-slider.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-mixer-slider.lo `test -f 'oss4-mixer-slider.c' || echo '$(srcdir)/'`oss4-mixer-slider.c
-
-libgstoss4audio_la-oss4-mixer-switch.lo: oss4-mixer-switch.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-mixer-switch.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-mixer-switch.Tpo -c -o libgstoss4audio_la-oss4-mixer-switch.lo `test -f 'oss4-mixer-switch.c' || echo '$(srcdir)/'`oss4-mixer-switch.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-mixer-switch.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-mixer-switch.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-mixer-switch.c' object='libgstoss4audio_la-oss4-mixer-switch.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-mixer-switch.lo `test -f 'oss4-mixer-switch.c' || echo '$(srcdir)/'`oss4-mixer-switch.c
-
-libgstoss4audio_la-oss4-property-probe.lo: oss4-property-probe.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-property-probe.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-property-probe.Tpo -c -o libgstoss4audio_la-oss4-property-probe.lo `test -f 'oss4-property-probe.c' || echo '$(srcdir)/'`oss4-property-probe.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-property-probe.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-property-probe.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-property-probe.c' object='libgstoss4audio_la-oss4-property-probe.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-property-probe.lo `test -f 'oss4-property-probe.c' || echo '$(srcdir)/'`oss4-property-probe.c
-
-libgstoss4audio_la-oss4-sink.lo: oss4-sink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-sink.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-sink.Tpo -c -o libgstoss4audio_la-oss4-sink.lo `test -f 'oss4-sink.c' || echo '$(srcdir)/'`oss4-sink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-sink.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-sink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-sink.c' object='libgstoss4audio_la-oss4-sink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-sink.lo `test -f 'oss4-sink.c' || echo '$(srcdir)/'`oss4-sink.c
-
-libgstoss4audio_la-oss4-source.lo: oss4-source.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -MT libgstoss4audio_la-oss4-source.lo -MD -MP -MF $(DEPDIR)/libgstoss4audio_la-oss4-source.Tpo -c -o libgstoss4audio_la-oss4-source.lo `test -f 'oss4-source.c' || echo '$(srcdir)/'`oss4-source.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstoss4audio_la-oss4-source.Tpo $(DEPDIR)/libgstoss4audio_la-oss4-source.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='oss4-source.c' object='libgstoss4audio_la-oss4-source.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstoss4audio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstoss4audio_la_CFLAGS) $(CFLAGS) -c -o libgstoss4audio_la-oss4-source.lo `test -f 'oss4-source.c' || echo '$(srcdir)/'`oss4-source.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/oss4/oss4-audio.c b/wearable/sys/oss4/oss4-audio.c
deleted file mode 100644
index 09f8495..0000000
--- a/wearable/sys/oss4/oss4-audio.c
+++ /dev/null
@@ -1,714 +0,0 @@
-/* GStreamer OSS4 audio plugin
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "gst/gst-i18n-plugin.h"
-#include <gst/audio/multichannel.h>
-
-#include "oss4-audio.h"
-#include "oss4-mixer.h"
-#include "oss4-property-probe.h"
-#include "oss4-sink.h"
-#include "oss4-source.h"
-#include "oss4-soundcard.h"
-
-GST_DEBUG_CATEGORY (oss4mixer_debug);
-GST_DEBUG_CATEGORY (oss4sink_debug);
-GST_DEBUG_CATEGORY (oss4src_debug);
-GST_DEBUG_CATEGORY (oss4_debug);
-
-#define GST_CAT_DEFAULT oss4_debug
-
-typedef struct
-{
- const GstBufferFormat gst_fmt;
- const gint oss_fmt;
- const gchar name[16];
- const gint depth;
- const gint width;
- const gint endianness;
- const gboolean signedness;
-} GstOss4AudioFormat;
-
-/* *INDENT-OFF* */
-static const GstOss4AudioFormat fmt_map[] = {
- /* note: keep sorted by preference, prefered formats first */
- {
- GST_MU_LAW, AFMT_MU_LAW, "audio/x-mulaw", 0, 0, 0, FALSE}, {
- GST_A_LAW, AFMT_A_LAW, "audio/x-alaw", 0, 0, 0, FALSE}, {
- GST_S32_LE, AFMT_S32_LE, "audio/x-raw-int", 32, 32, G_LITTLE_ENDIAN, TRUE}, {
- GST_S32_BE, AFMT_S32_BE, "audio/x-raw-int", 32, 32, G_BIG_ENDIAN, TRUE}, {
- GST_S24_LE, AFMT_S24_LE, "audio/x-raw-int", 24, 32, G_LITTLE_ENDIAN, TRUE}, {
- GST_S24_BE, AFMT_S24_BE, "audio/x-raw-int", 24, 32, G_BIG_ENDIAN, TRUE}, {
- GST_S24_3LE, AFMT_S24_PACKED, "audio/x-raw-int", 24, 24, G_LITTLE_ENDIAN,
- TRUE}, {
- GST_S16_LE, AFMT_S16_LE, "audio/x-raw-int", 16, 16, G_LITTLE_ENDIAN, TRUE}, {
- GST_S16_BE, AFMT_S16_BE, "audio/x-raw-int", 16, 16, G_BIG_ENDIAN, TRUE}, {
- GST_U16_LE, AFMT_U16_LE, "audio/x-raw-int", 16, 16, G_LITTLE_ENDIAN, FALSE}, {
- GST_U16_BE, AFMT_U16_BE, "audio/x-raw-int", 16, 16, G_BIG_ENDIAN, FALSE}, {
- GST_S8, AFMT_S8, "audio/x-raw-int", 8, 8, 0, TRUE}, {
- GST_U8, AFMT_U8, "audio/x-raw-int", 8, 8, 0, FALSE}
-};
-/* *INDENT-ON* */
-
-/* formats we assume the OSS4 layer can always handle and convert internally */
-#define CONVERTIBLE_FORMATS ( \
- AFMT_MU_LAW | AFMT_A_LAW | \
- AFMT_S32_LE | AFMT_S32_BE | \
- AFMT_S24_LE | AFMT_S24_BE | \
- AFMT_S24_PACKED | \
- AFMT_S16_LE | AFMT_S16_BE | \
- AFMT_U16_LE | AFMT_U16_BE | \
- AFMT_S8 | AFMT_U8 )
-
-static void
-gst_oss4_append_format_to_caps (const GstOss4AudioFormat * fmt, GstCaps * caps)
-{
- GstStructure *s;
-
- s = gst_structure_empty_new (fmt->name);
- if (fmt->width != 0 && fmt->depth != 0) {
- gst_structure_set (s, "width", G_TYPE_INT, fmt->width, "depth", G_TYPE_INT,
- fmt->depth, "signed", G_TYPE_BOOLEAN, fmt->signedness, NULL);
- }
- if (fmt->endianness != 0) {
- gst_structure_set (s, "endianness", G_TYPE_INT, fmt->endianness, NULL);
- }
- gst_caps_append_structure (caps, s);
-}
-
-static gint
-gst_oss4_audio_get_oss_format (GstBufferFormat fmt)
-{
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (fmt_map); ++i) {
- if (fmt_map[i].gst_fmt == fmt)
- return fmt_map[i].oss_fmt;
- }
- return 0;
-}
-
-/* These are pretty random */
-#define GST_OSS4_MIN_SAMPLE_RATE 1
-#define GST_OSS4_MAX_SAMPLE_RATE 192000
-
-static gboolean
-gst_oss4_audio_detect_rates (GstObject * obj, oss_audioinfo * ai,
- GstCaps * caps)
-{
- GValue val = { 0, };
- int minrate, maxrate, i;
-
- minrate = ai->min_rate;
- maxrate = ai->max_rate;
-
- /* sanity check */
- if (minrate > maxrate) {
- GST_WARNING_OBJECT (obj, "min_rate %d > max_rate %d (buggy driver?)",
- minrate, maxrate);
- maxrate = ai->min_rate; /* swap */
- minrate = ai->max_rate;
- }
-
- /* limit to something sensible */
- if (minrate < GST_OSS4_MIN_SAMPLE_RATE)
- minrate = GST_OSS4_MIN_SAMPLE_RATE;
- if (maxrate > GST_OSS4_MAX_SAMPLE_RATE)
- maxrate = GST_OSS4_MAX_SAMPLE_RATE;
-
- if (maxrate < GST_OSS4_MIN_SAMPLE_RATE) {
- GST_WARNING_OBJECT (obj, "max_rate < %d, which makes no sense",
- GST_OSS4_MIN_SAMPLE_RATE);
- return FALSE;
- }
-
- GST_LOG_OBJECT (obj, "min_rate %d, max_rate %d (originally: %d, %d)",
- minrate, maxrate, ai->min_rate, ai->max_rate);
-
- if ((ai->caps & PCM_CAP_FREERATE)) {
- GST_LOG_OBJECT (obj, "device supports any sample rate between min and max");
- if (minrate == maxrate) {
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, maxrate);
- } else {
- g_value_init (&val, GST_TYPE_INT_RANGE);
- gst_value_set_int_range (&val, minrate, maxrate);
- }
- } else {
- GST_LOG_OBJECT (obj, "%d sample rates:", ai->nrates);
- g_value_init (&val, GST_TYPE_LIST);
- for (i = 0; i < ai->nrates; ++i) {
- GST_LOG_OBJECT (obj, " rate: %d", ai->rates[i]);
-
- if (ai->rates[i] >= minrate && ai->rates[i] <= maxrate) {
- GValue rate_val = { 0, };
-
- g_value_init (&rate_val, G_TYPE_INT);
- g_value_set_int (&rate_val, ai->rates[i]);
- gst_value_list_append_value (&val, &rate_val);
- g_value_unset (&rate_val);
- }
- }
-
- if (gst_value_list_get_size (&val) == 0) {
- g_value_unset (&val);
- return FALSE;
- }
- }
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- GstStructure *s;
-
- s = gst_caps_get_structure (caps, i);
- gst_structure_set_value (s, "rate", &val);
- }
-
- g_value_unset (&val);
-
- return TRUE;
-}
-
-static void
-gst_oss4_audio_add_channel_layout (GstObject * obj, guint64 layout,
- guint num_channels, GstStructure * s)
-{
- const GstAudioChannelPosition pos_map[16] = {
- GST_AUDIO_CHANNEL_POSITION_NONE, /* 0 = dunno */
- GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT, /* 1 = left */
- GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT, /* 2 = right */
- GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER, /* 3 = center */
- GST_AUDIO_CHANNEL_POSITION_LFE, /* 4 = lfe */
- GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT, /* 5 = left surround */
- GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT, /* 6 = right surround */
- GST_AUDIO_CHANNEL_POSITION_REAR_LEFT, /* 7 = left rear */
- GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT, /* 8 = right rear */
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE,
- GST_AUDIO_CHANNEL_POSITION_NONE
- };
- GstAudioChannelPosition ch_layout[8] = { 0, };
- guint speaker_pos; /* speaker position as defined by OSS */
- guint i;
-
- g_return_if_fail (num_channels <= G_N_ELEMENTS (ch_layout));
-
- for (i = 0; i < num_channels; ++i) {
- /* layout contains up to 16 speaker positions, with each taking up 4 bits */
- speaker_pos = (guint) ((layout >> (i * 4)) & 0x0f);
-
- /* if it's a channel position that's unknown to us, set all to NONE and
- * bail out */
- if (G_UNLIKELY (pos_map[speaker_pos] == GST_AUDIO_CHANNEL_POSITION_NONE))
- goto no_layout;
-
- ch_layout[i] = pos_map[speaker_pos];
- }
- gst_audio_set_channel_positions (s, ch_layout);
- return;
-
-no_layout:
- {
- /* only warn if it's really unknown, position 0 is ok and represents NONE
- * (in which case we also just set all others to NONE ignoring the other
- * positions in the OSS-given layout, because that's what we currently
- * require in GStreamer) */
- if (speaker_pos != 0) {
- GST_WARNING_OBJECT (obj, "unknown OSS channel position %x", ch_layout[i]);
- }
- for (i = 0; i < num_channels; ++i) {
- ch_layout[i] = GST_AUDIO_CHANNEL_POSITION_NONE;
- }
- gst_audio_set_channel_positions (s, ch_layout);
- return;
- }
-}
-
-/* arbitrary max. limit */
-#define GST_OSS4_MIN_CHANNELS 1
-#define GST_OSS4_MAX_CHANNELS 4096
-
-/* takes ownership of the input caps */
-static GstCaps *
-gst_oss4_audio_detect_channels (GstObject * obj, int fd, oss_audioinfo * ai,
- GstCaps * in_caps)
-{
- const gchar *forced_layout;
- GstStructure *s = NULL;
- guint64 layout = 0;
- GstCaps *chan_caps = NULL;
- GstCaps *out_caps = NULL;
- int minchans, maxchans;
- int c, i, j;
-
- /* GST_OSS4_CHANNEL_LAYOUT environment variable: may be used to force a
- * particular channel layout (if it contains an odd number of channel
- * positions it will also make us advertise a channel layout for that
- * channel count, even if we'd usually skip it; this is especially useful
- * for folks with 2.1 speakers, I guess) */
- forced_layout = g_getenv ("GST_OSS4_CHANNEL_LAYOUT");
-
- minchans = ai->min_channels;
- maxchans = ai->max_channels;
-
- /* sanity check */
- if (minchans > maxchans) {
- GST_WARNING_OBJECT (obj, "min_chans %d > max_chans %d (buggy driver?)",
- minchans, maxchans);
- maxchans = ai->min_channels; /* swap */
- minchans = ai->max_channels;
- }
-
- /* limit to something sensible */
- if (minchans < GST_OSS4_MIN_CHANNELS)
- minchans = GST_OSS4_MIN_CHANNELS;
- if (maxchans > GST_OSS4_MAX_CHANNELS)
- maxchans = GST_OSS4_MAX_CHANNELS;
-
- if (maxchans < GST_OSS4_MIN_CHANNELS) {
- GST_WARNING_OBJECT (obj, "max_chans < %d, which makes no sense",
- GST_OSS4_MIN_CHANNELS);
- gst_caps_unref (in_caps);
- return NULL;
- }
-
- GST_LOG_OBJECT (obj, "min_channels %d, max_channels %d (originally: %d, %d)",
- minchans, maxchans, ai->min_channels, ai->max_channels);
-
- chan_caps = gst_caps_new_empty ();
-
- /* first do the simple cases: mono + stereo (channel layout implied) */
- if (minchans == 1 && maxchans == 1)
- s = gst_structure_new ("x", "channels", G_TYPE_INT, 1, NULL);
- else if (minchans == 2 && maxchans >= 2)
- s = gst_structure_new ("x", "channels", G_TYPE_INT, 2, NULL);
- else if (minchans == 1 && maxchans >= 2)
- s = gst_structure_new ("x", "channels", GST_TYPE_INT_RANGE, 1, 2, NULL);
- gst_caps_append_structure (chan_caps, s);
- s = NULL;
-
- /* TODO: we assume all drivers use a left/right layout for stereo here */
- if (maxchans <= 2)
- goto done;
-
- if (ioctl (fd, SNDCTL_DSP_GET_CHNORDER, &layout) == -1) {
- GST_WARNING_OBJECT (obj, "couldn't query channel layout, assuming default");
- layout = CHNORDER_NORMAL;
- }
- GST_DEBUG_OBJECT (obj, "channel layout: %08" G_GINT64_MODIFIER "x", layout);
-
- /* e.g. forced 2.1 layout would be GST_OSS4_CHANNEL_LAYOUT=421 */
- if (forced_layout != NULL && *forced_layout != '\0') {
- guint layout_len;
-
- layout_len = strlen (forced_layout);
- if (layout_len >= minchans && layout_len <= maxchans) {
- layout = g_ascii_strtoull (forced_layout, NULL, 16);
- maxchans = layout_len;
- GST_DEBUG_OBJECT (obj, "forced channel layout: %08" G_GINT64_MODIFIER "x"
- " ('%s'), maxchans now %d", layout, forced_layout, maxchans);
- } else {
- GST_WARNING_OBJECT (obj, "ignoring forced channel layout: layout has %d "
- "channel positions but maxchans is %d", layout_len, maxchans);
- }
- }
-
- /* need to advertise channel layouts for anything >2 and <=8 channels */
- for (c = MAX (3, minchans); c <= MIN (maxchans, 8); c++) {
- /* "The min_channels and max_channels fields define the limits for the
- * number of channels. However some devices don't support all channels
- * within this range. It's possible that the odd values (3, 5, 7, 9, etc).
- * are not supported. There is currently no way to check for this other
- * than checking if SNDCTL_DSP_CHANNELS accepts the requested value.
- * Another approach is trying to avoid using odd number of channels."
- *
- * So, we don't know for sure if these odd values are supported:
- */
- if ((c == 3 || c == 5 || c == 7) && (c != maxchans)) {
- GST_LOG_OBJECT (obj, "not adding layout with %d channels", c);
- continue;
- }
-
- s = gst_structure_new ("x", "channels", G_TYPE_INT, c, NULL);
- gst_oss4_audio_add_channel_layout (obj, layout, c, s);
- GST_LOG_OBJECT (obj, "c=%u, appending struct %" GST_PTR_FORMAT, c, s);
- gst_caps_append_structure (chan_caps, s);
- s = NULL;
- }
-
- if (maxchans <= 8)
- goto done;
-
- /* for everything >8 channels, CHANNEL_POSITION_NONE is implied. */
- if (minchans == maxchans || maxchans == 9) {
- s = gst_structure_new ("x", "channels", G_TYPE_INT, maxchans, NULL);
- } else {
- s = gst_structure_new ("x", "channels", GST_TYPE_INT_RANGE,
- MAX (9, minchans), maxchans, NULL);
- }
- gst_caps_append_structure (chan_caps, s);
- s = NULL;
-
-done:
-
- GST_LOG_OBJECT (obj, "channel structures: %" GST_PTR_FORMAT, chan_caps);
-
- out_caps = gst_caps_new_empty ();
-
- /* combine each structure in the input caps with each channel caps struct */
- for (i = 0; i < gst_caps_get_size (in_caps); ++i) {
- const GstStructure *in_s;
-
- in_s = gst_caps_get_structure (in_caps, i);
-
- for (j = 0; j < gst_caps_get_size (chan_caps); ++j) {
- const GstStructure *chan_s;
- const GValue *val;
-
- s = gst_structure_copy (in_s);
- chan_s = gst_caps_get_structure (chan_caps, j);
- if ((val = gst_structure_get_value (chan_s, "channels")))
- gst_structure_set_value (s, "channels", val);
- if ((val = gst_structure_get_value (chan_s, "channel-positions")))
- gst_structure_set_value (s, "channel-positions", val);
-
- gst_caps_append_structure (out_caps, s);
- s = NULL;
- }
- }
-
- gst_caps_unref (in_caps);
- gst_caps_unref (chan_caps);
- return out_caps;
-}
-
-GstCaps *
-gst_oss4_audio_probe_caps (GstObject * obj, int fd)
-{
- oss_audioinfo ai = { 0, };
- gboolean output;
- GstCaps *caps;
- int nonnative_formats = 0;
- int formats, i;
-
- output = GST_IS_OSS4_SINK (obj);
-
- /* -1 = get info for currently open device (fd). This will fail with
- * OSS build <= 1013 because of a bug in OSS */
- ai.dev = -1;
- if (ioctl (fd, SNDCTL_ENGINEINFO, &ai) == -1)
- goto engineinfo_failed;
-
- formats = (output) ? ai.oformats : ai.iformats;
-
- GST_LOG_OBJECT (obj, "%s formats : 0x%08x", (output) ? "out" : "in", formats);
-
- caps = gst_caps_new_empty ();
-
- /* first list all the formats natively supported */
- for (i = 0; i < G_N_ELEMENTS (fmt_map); ++i) {
- if ((formats & fmt_map[i].oss_fmt)) {
- gst_oss4_append_format_to_caps (&fmt_map[i], caps);
- } else if ((fmt_map[i].oss_fmt & CONVERTIBLE_FORMATS)) {
- nonnative_formats |= fmt_map[i].oss_fmt;
- }
- }
-
- GST_LOG_OBJECT (obj, "adding non-native %s formats : 0x%08x",
- (output) ? "out" : "in", nonnative_formats);
-
- /* now append non-native formats for which conversion would be needed */
- for (i = 0; i < G_N_ELEMENTS (fmt_map); ++i) {
- if ((nonnative_formats & fmt_map[i].oss_fmt)) {
- gst_oss4_append_format_to_caps (&fmt_map[i], caps);
- }
- }
-
- gst_caps_do_simplify (caps);
- GST_LOG_OBJECT (obj, "formats: %" GST_PTR_FORMAT, caps);
-
- if (!gst_oss4_audio_detect_rates (obj, &ai, caps))
- goto detect_rates_failed;
-
- caps = gst_oss4_audio_detect_channels (obj, fd, &ai, caps);
- if (caps == NULL)
- goto detect_channels_failed;
-
- GST_LOG_OBJECT (obj, "probed caps: %" GST_PTR_FORMAT, caps);
-
- return caps;
-
-/* ERRORS */
-engineinfo_failed:
- {
- GST_WARNING ("ENGINEINFO supported formats probe failed: %s",
- g_strerror (errno));
- return NULL;
- }
-detect_rates_failed:
- {
- GST_WARNING_OBJECT (obj, "failed to detect supported sample rates");
- gst_caps_unref (caps);
- return NULL;
- }
-detect_channels_failed:
- {
- GST_WARNING_OBJECT (obj, "failed to detect supported channels");
- gst_caps_unref (caps);
- return NULL;
- }
-}
-
-GstCaps *
-gst_oss4_audio_get_template_caps (void)
-{
- GstCaps *caps;
- gint i;
-
- caps = gst_caps_new_empty ();
-
- for (i = 0; i < G_N_ELEMENTS (fmt_map); ++i) {
- gst_oss4_append_format_to_caps (&fmt_map[i], caps);
- }
-
- gst_caps_do_simplify (caps);
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- GstStructure *s;
-
- s = gst_caps_get_structure (caps, i);
- gst_structure_set (s, "rate", GST_TYPE_INT_RANGE, GST_OSS4_MIN_SAMPLE_RATE,
- GST_OSS4_MAX_SAMPLE_RATE, "channels", GST_TYPE_INT_RANGE,
- GST_OSS4_MIN_CHANNELS, GST_OSS4_MAX_CHANNELS, NULL);
- }
-
- return caps;
-}
-
-/* called by gst_oss4_sink_prepare() and gst_oss4_source_prepare() */
-gboolean
-gst_oss4_audio_set_format (GstObject * obj, int fd, GstRingBufferSpec * spec)
-{
- struct audio_buf_info info = { 0, };
- int fmt, chans, rate;
-
- fmt = gst_oss4_audio_get_oss_format (spec->format);
- if (fmt == 0)
- goto wrong_format;
-
- if (spec->type == GST_BUFTYPE_LINEAR && spec->width != 32 &&
- spec->width != 24 && spec->width != 16 && spec->width != 8) {
- goto dodgy_width;
- }
-
- /* format */
- GST_LOG_OBJECT (obj, "setting format: %d", fmt);
- if (ioctl (fd, SNDCTL_DSP_SETFMT, &fmt) == -1)
- goto set_format_failed;
-
- /* channels */
- GST_LOG_OBJECT (obj, "setting channels: %d", spec->channels);
- chans = spec->channels;
- if (ioctl (fd, SNDCTL_DSP_CHANNELS, &chans) == -1)
- goto set_channels_failed;
-
- /* rate */
- GST_LOG_OBJECT (obj, "setting rate: %d", spec->rate);
- rate = spec->rate;
- if (ioctl (fd, SNDCTL_DSP_SPEED, &rate) == -1)
- goto set_rate_failed;
-
- GST_DEBUG_OBJECT (obj, "effective format : %d", fmt);
- GST_DEBUG_OBJECT (obj, "effective channels : %d", chans);
- GST_DEBUG_OBJECT (obj, "effective rate : %d", rate);
-
- /* make sure format, channels, and rate are the ones we requested */
- if (fmt != gst_oss4_audio_get_oss_format (spec->format) ||
- chans != spec->channels || rate != spec->rate) {
- /* This shouldn't happen, but hey */
- goto format_not_what_was_requested;
- }
-
- if (GST_IS_OSS4_SOURCE (obj)) {
- if (ioctl (fd, SNDCTL_DSP_GETISPACE, &info) == -1)
- goto get_ispace_failed;
- } else {
- if (ioctl (fd, SNDCTL_DSP_GETOSPACE, &info) == -1)
- goto get_ospace_failed;
- }
-
- spec->segsize = info.fragsize;
-
- /* we add some extra fragments -- this helps us account for delays due to
- * conversion buffer, streams queueing, etc. It is important that these
- * be taken into account because otherwise the delay counter can wind up
- * being too large, and the buffer will wrap. */
- spec->segtotal = info.fragstotal + 4;
-
- spec->bytes_per_sample = (spec->width / 8) * spec->channels;
-
- GST_DEBUG_OBJECT (obj, "got segsize: %d, segtotal: %d, value: %08x",
- spec->segsize, spec->segtotal, info.fragsize);
-
- return TRUE;
-
-/* ERRORS */
-wrong_format:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("Unable to get format %d", spec->format));
- return FALSE;
- }
-dodgy_width:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("unexpected width %d", spec->width));
- return FALSE;
- }
-set_format_failed:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("DSP_SETFMT(%d) failed: %s", fmt, g_strerror (errno)));
- return FALSE;
- }
-set_channels_failed:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("DSP_CHANNELS(%d) failed: %s", chans, g_strerror (errno)));
- return FALSE;
- }
-set_rate_failed:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("DSP_SPEED(%d) failed: %s", rate, g_strerror (errno)));
- return FALSE;
- }
-get_ospace_failed:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("DSP_GETOSPACE failed: %s", g_strerror (errno)));
- return FALSE;
- }
-get_ispace_failed:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("DSP_GETISPACE failed: %s", g_strerror (errno)));
- return FALSE;
- }
-format_not_what_was_requested:
- {
- GST_ELEMENT_ERROR (obj, RESOURCE, SETTINGS, (NULL),
- ("Format actually configured wasn't the one we requested. This is "
- "probably either a bug in the driver or in the format probing code."));
- return FALSE;
- }
-}
-
-int
-gst_oss4_audio_get_version (GstObject * obj, int fd)
-{
- gint ver = 0;
-
- /* we use the old ioctl here on purpose instead of SNDCTL_SYSINFO */
- if (ioctl (fd, OSS_GETVERSION, &ver) < 0) {
- GST_LOG_OBJECT (obj, "OSS_GETVERSION failed: %s", g_strerror (errno));
- return -1;
- }
- GST_LOG_OBJECT (obj, "OSS version: 0x%08x", ver);
- return ver;
-}
-
-gboolean
-gst_oss4_audio_check_version (GstObject * obj, int fd)
-{
- return (gst_oss4_audio_get_version (obj, fd) >= GST_MIN_OSS4_VERSION);
-}
-
-gchar *
-gst_oss4_audio_find_device (GstObject * oss)
-{
- GValueArray *arr;
- gchar *ret = NULL;
-
- arr = gst_property_probe_probe_and_get_values_name (GST_PROPERTY_PROBE (oss),
- "device");
-
- if (arr != NULL) {
- if (arr->n_values > 0) {
- const GValue *val;
-
- val = g_value_array_get_nth (arr, 0);
- ret = g_value_dup_string (val);
- }
- g_value_array_free (arr);
- }
-
- GST_LOG_OBJECT (oss, "first device found: %s", GST_STR_NULL (ret));
-
- return ret;
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- gint rank;
-
- GST_DEBUG_CATEGORY_INIT (oss4sink_debug, "oss4sink", 0, "OSS4 audio sink");
- GST_DEBUG_CATEGORY_INIT (oss4src_debug, "oss4src", 0, "OSS4 audio src");
- GST_DEBUG_CATEGORY_INIT (oss4mixer_debug, "oss4mixer", 0, "OSS4 mixer");
- GST_DEBUG_CATEGORY_INIT (oss4_debug, "oss4", 0, "OSS4 plugin");
-
-#ifdef ENABLE_NLS
- GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
- LOCALEDIR);
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif
-
- /* we want a higher rank than the legacy OSS elements have now */
- rank = GST_RANK_SECONDARY + 1;
-
- if (!gst_element_register (plugin, "oss4sink", rank, GST_TYPE_OSS4_SINK) ||
- !gst_element_register (plugin, "oss4src", rank, GST_TYPE_OSS4_SOURCE) ||
- !gst_element_register (plugin, "oss4mixer", rank, GST_TYPE_OSS4_MIXER)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "oss4",
- "Open Sound System (OSS) version 4 support for GStreamer",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/oss4/oss4-audio.h b/wearable/sys/oss4/oss4-audio.h
deleted file mode 100644
index d220364..0000000
--- a/wearable/sys/oss4/oss4-audio.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* GStreamer OSS4 audio plugin
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_AUDIO_H
-#define GST_OSS4_AUDIO_H_
-
-#include <gst/gst.h>
-#include <gst/audio/gstringbuffer.h>
-
-/* This is the minimum version we require */
-#define GST_MIN_OSS4_VERSION 0x040003
-
-int gst_oss4_audio_get_version (GstObject * obj, int fd);
-
-gboolean gst_oss4_audio_check_version (GstObject * obj, int fd);
-
-GstCaps * gst_oss4_audio_probe_caps (GstObject * obj, int fd);
-
-gboolean gst_oss4_audio_set_format (GstObject * obj, int fd, GstRingBufferSpec * spec);
-
-GstCaps * gst_oss4_audio_get_template_caps (void);
-
-gchar * gst_oss4_audio_find_device (GstObject * oss);
-
-#endif /* GST_OSS4_AUDIO_H */
-
-
diff --git a/wearable/sys/oss4/oss4-mixer-enum.c b/wearable/sys/oss4/oss4-mixer-enum.c
deleted file mode 100644
index 4b64bb1..0000000
--- a/wearable/sys/oss4/oss4-mixer-enum.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/* GStreamer OSS4 mixer enumeration control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* An 'enum' in gnome-volume-control / GstMixer is represented by a
- * GstMixerOptions object
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst-i18n-plugin.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-mixer.h"
-#include "oss4-mixer-enum.h"
-#include "oss4-soundcard.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss4mixer_debug);
-#define GST_CAT_DEFAULT oss4mixer_debug
-
-static GList *gst_oss4_mixer_enum_get_values (GstMixerOptions * options);
-
-/* GstMixerTrack is a plain GObject, so let's just use the GLib macro here */
-G_DEFINE_TYPE (GstOss4MixerEnum, gst_oss4_mixer_enum, GST_TYPE_MIXER_OPTIONS);
-
-static void
-gst_oss4_mixer_enum_init (GstOss4MixerEnum * e)
-{
- e->need_update = TRUE;
-}
-
-static void
-gst_oss4_mixer_enum_dispose (GObject * obj)
-{
- GstMixerOptions *options = GST_MIXER_OPTIONS (obj);
-
- /* our list is a flat list with constant strings, but the GstMixerOptions
- * dispose will try to g_free the contained strings, so clean up the list
- * before chaining up to GstMixerOptions */
- g_list_free (options->values);
- options->values = NULL;
-
- G_OBJECT_CLASS (gst_oss4_mixer_enum_parent_class)->dispose (obj);
-}
-
-static void
-gst_oss4_mixer_enum_class_init (GstOss4MixerEnumClass * klass)
-{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstMixerOptionsClass *mixeroptions_class = (GstMixerOptionsClass *) klass;
-
- gobject_class->dispose = gst_oss4_mixer_enum_dispose;
- mixeroptions_class->get_values = gst_oss4_mixer_enum_get_values;
-}
-
-static GList *
-gst_oss4_mixer_enum_get_values_locked (GstMixerOptions * options)
-{
- GstOss4MixerEnum *e = GST_OSS4_MIXER_ENUM_CAST (options);
- GList *oldlist, *list = NULL;
- int i;
-
- /* if current list of values is empty, update/re-check in any case */
- if (!e->need_update && options->values != NULL)
- return options->values;
-
- GST_LOG_OBJECT (e, "updating available values for %s", e->mc->mixext.extname);
-
- for (i = 0; i < e->mc->mixext.maxvalue; ++i) {
- const gchar *s;
-
- s = g_quark_to_string (e->mc->enum_vals[i]);
- if (MIXEXT_ENUM_IS_AVAILABLE (e->mc->mixext, i)) {
- GST_LOG_OBJECT (e, "option '%s' is available", s);
- list = g_list_prepend (list, (gpointer) s);
- } else {
- GST_LOG_OBJECT (e, "option '%s' is currently not available", s);
- }
- }
-
- list = g_list_reverse (list);
-
- /* this is not thread-safe, but then the entire GstMixer API isn't really,
- * since we return foo->list and not a copy and don't take any locks, so
- * not much we can do here but pray; we're usually either called from _new()
- * or from within _get_values() though, so it should be okay. We could use
- * atomic ops here, but I'm not sure how much more that really buys us.*/
- oldlist = options->values; /* keep window small */
- options->values = list;
- g_list_free (oldlist);
-
- e->need_update = FALSE;
-
- return options->values;
-}
-
-static GList *
-gst_oss4_mixer_enum_get_values (GstMixerOptions * options)
-{
- GstOss4MixerEnum *e = GST_OSS4_MIXER_ENUM (options);
- GList *list;
-
- /* we take the lock here mostly to serialise ioctls with the watch thread */
- GST_OBJECT_LOCK (e->mixer);
-
- list = gst_oss4_mixer_enum_get_values_locked (options);
-
- GST_OBJECT_UNLOCK (e->mixer);
-
- return list;
-}
-
-static const gchar *
-gst_oss4_mixer_enum_get_current_value (GstOss4MixerEnum * e)
-{
- const gchar *cur_val = NULL;
-
- if (e->mc->enum_vals != NULL && e->mc->last_val < e->mc->mixext.maxvalue) {
- cur_val = g_quark_to_string (e->mc->enum_vals[e->mc->last_val]);
- }
-
- return cur_val;
-}
-
-static gboolean
-gst_oss4_mixer_enum_update_current (GstOss4MixerEnum * e)
-{
- int cur = -1;
-
- if (!gst_oss4_mixer_get_control_val (e->mixer, e->mc, &cur))
- return FALSE;
-
- if (cur < 0 || cur >= e->mc->mixext.maxvalue) {
- GST_WARNING_OBJECT (e, "read value %d out of bounds [0-%d]", cur,
- e->mc->mixext.maxvalue - 1);
- e->mc->last_val = 0;
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gst_oss4_mixer_enum_set_option (GstOss4MixerEnum * e, const gchar * value)
-{
- GQuark q;
- int i;
-
- q = g_quark_try_string (value);
- if (q == 0) {
- GST_WARNING_OBJECT (e, "unknown option '%s'", value);
- return FALSE;
- }
-
- for (i = 0; i < e->mc->mixext.maxvalue; ++i) {
- if (q == e->mc->enum_vals[i])
- break;
- }
-
- if (i >= e->mc->mixext.maxvalue) {
- GST_WARNING_OBJECT (e, "option '%s' is not valid for this control", value);
- return FALSE;
- }
-
- GST_LOG_OBJECT (e, "option '%s' = %d", value, i);
-
- if (!MIXEXT_ENUM_IS_AVAILABLE (e->mc->mixext, i)) {
- GST_WARNING_OBJECT (e, "option '%s' is not selectable currently", value);
- return FALSE;
- }
-
- if (!gst_oss4_mixer_set_control_val (e->mixer, e->mc, i)) {
- GST_WARNING_OBJECT (e, "could not set option '%s' (%d)", value, i);
- return FALSE;
- }
-
- /* and re-read current value with sanity checks (or could just assign here) */
- gst_oss4_mixer_enum_update_current (e);
-
- return TRUE;
-}
-
-const gchar *
-gst_oss4_mixer_enum_get_option (GstOss4MixerEnum * e)
-{
- const gchar *cur_str = NULL;
-
- if (!gst_oss4_mixer_enum_update_current (e)) {
- GST_WARNING_OBJECT (e, "failed to read current value");
- return NULL;
- }
-
- cur_str = gst_oss4_mixer_enum_get_current_value (e);
- GST_LOG_OBJECT (e, "%s (%d)", GST_STR_NULL (cur_str), e->mc->last_val);
- return cur_str;
-}
-
-GstMixerTrack *
-gst_oss4_mixer_enum_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc)
-{
- GstOss4MixerEnum *e;
- GstMixerTrack *track;
-
- e = g_object_new (GST_TYPE_OSS4_MIXER_ENUM, "untranslated-label",
- mc->mixext.extname, NULL);
- e->mixer = mixer;
- e->mc = mc;
-
- track = GST_MIXER_TRACK (e);
-
- /* caller will set track->label and track->flags */
-
- track->num_channels = 0;
- track->min_volume = 0;
- track->max_volume = 0;
-
- (void) gst_oss4_mixer_enum_get_values_locked (GST_MIXER_OPTIONS (track));
-
- if (!gst_oss4_mixer_enum_update_current (e)) {
- GST_WARNING_OBJECT (track, "failed to read current value, returning NULL");
- g_object_unref (track);
- track = NULL;
- }
-
- GST_LOG_OBJECT (e, "current value: %d (%s)", e->mc->last_val,
- gst_oss4_mixer_enum_get_current_value (e));
-
- return track;
-}
-
-/* This is called from the watch thread */
-void
-gst_oss4_mixer_enum_process_change_unlocked (GstMixerTrack * track)
-{
- GstOss4MixerEnum *e = GST_OSS4_MIXER_ENUM_CAST (track);
-
- gchar *cur;
-
- if (!e->mc->changed && !e->mc->list_changed)
- return;
-
- if (e->mc->list_changed) {
- gst_mixer_options_list_changed (GST_MIXER (e->mixer),
- GST_MIXER_OPTIONS (e));
- }
-
- GST_OBJECT_LOCK (e->mixer);
- cur = (gchar *) gst_oss4_mixer_enum_get_current_value (e);
- GST_OBJECT_UNLOCK (e->mixer);
-
- gst_mixer_option_changed (GST_MIXER (e->mixer), GST_MIXER_OPTIONS (e), cur);
-}
diff --git a/wearable/sys/oss4/oss4-mixer-enum.h b/wearable/sys/oss4/oss4-mixer-enum.h
deleted file mode 100644
index 9fd8166..0000000
--- a/wearable/sys/oss4/oss4-mixer-enum.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* GStreamer OSS4 mixer on/off enum control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_MIXER_ENUM_H
-#define GST_OSS4_MIXER_ENUM_H
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-#include "oss4-mixer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS4_MIXER_ENUM (gst_oss4_mixer_enum_get_type())
-#define GST_OSS4_MIXER_ENUM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_MIXER_ENUM,GstOss4MixerEnum))
-#define GST_OSS4_MIXER_ENUM_CAST(obj) ((GstOss4MixerEnum *)(obj))
-#define GST_OSS4_MIXER_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_MIXER_ENUM,GstOss4MixerEnumClass))
-#define GST_IS_OSS4_MIXER_ENUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_MIXER_ENUM))
-#define GST_IS_OSS4_MIXER_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_MIXER_ENUM))
-
-typedef struct _GstOss4MixerEnum GstOss4MixerEnum;
-typedef struct _GstOss4MixerEnumClass GstOss4MixerEnumClass;
-
-struct _GstOss4MixerEnum {
- GstMixerOptions mixer_option;
-
- GstOss4MixerControl * mc;
- GstOss4Mixer * mixer; /* the mixer we belong to (no ref taken) */
-
- gboolean need_update;
-};
-
-struct _GstOss4MixerEnumClass {
- GstMixerOptionsClass mixer_option_class;
-};
-
-GType gst_oss4_mixer_enum_get_type (void);
-
-gboolean gst_oss4_mixer_enum_set_option (GstOss4MixerEnum * e, const gchar * value);
-
-const gchar * gst_oss4_mixer_enum_get_option (GstOss4MixerEnum * e);
-
-GstMixerTrack * gst_oss4_mixer_enum_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc);
-
-void gst_oss4_mixer_enum_process_change_unlocked (GstMixerTrack * track);
-
-G_END_DECLS
-
-#endif /* GST_OSS4_MIXER_ENUM_H */
-
-
diff --git a/wearable/sys/oss4/oss4-mixer-slider.c b/wearable/sys/oss4/oss4-mixer-slider.c
deleted file mode 100644
index ea2bc8c..0000000
--- a/wearable/sys/oss4/oss4-mixer-slider.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* GStreamer OSS4 mixer slider control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* A 'slider' in gnome-volume-control / GstMixer is represented by a
- * GstMixerTrack with one or more channels.
- *
- * A slider should be either flagged as INPUT or OUTPUT (mostly because of
- * gnome-volume-control being littered with g_asserts for everything it doesn't
- * expect).
- *
- * From mixertrack.h:
- * "Input tracks can have 'recording' enabled, which means that any input will
- * be hearable into the speakers that are attached to the output. Mute is
- * obvious."
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-
-#include <gst/gst-i18n-plugin.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-mixer-slider.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss4mixer_debug);
-#define GST_CAT_DEFAULT oss4mixer_debug
-
-/* GstMixerTrack is a plain GObject, so let's just use the GLib macro here */
-G_DEFINE_TYPE (GstOss4MixerSlider, gst_oss4_mixer_slider, GST_TYPE_MIXER_TRACK);
-
-static void
-gst_oss4_mixer_slider_class_init (GstOss4MixerSliderClass * klass)
-{
- /* nothing to do here */
-}
-
-static void
-gst_oss4_mixer_slider_init (GstOss4MixerSlider * s)
-{
- /* nothing to do here */
-}
-
-static int
-gst_oss4_mixer_slider_pack_volume (GstOss4MixerSlider * s, const gint * volumes)
-{
- int val = 0;
-
- switch (s->mc->mixext.type) {
- case MIXT_MONOSLIDER:
- case MIXT_MONOSLIDER16:
- case MIXT_SLIDER:
- val = volumes[0];
- break;
- case MIXT_STEREOSLIDER:
- val = ((volumes[1] & 0xff) << 8) | (volumes[0] & 0xff);
- break;
- case MIXT_STEREOSLIDER16:
- val = ((volumes[1] & 0xffff) << 16) | (volumes[0] & 0xffff);
- break;
- default:
- g_return_val_if_reached (0);
- }
- return val;
-}
-
-static void
-gst_oss4_mixer_slider_unpack_volume (GstOss4MixerSlider * s, int v,
- gint * volumes)
-{
- guint32 val; /* use uint so bitshifting the highest bit works right */
-
- val = (guint32) v;
- switch (s->mc->mixext.type) {
- case MIXT_SLIDER:
- volumes[0] = val;
- break;
- case MIXT_MONOSLIDER:
- /* oss repeats the value in the upper bits, as if it was stereo */
- volumes[0] = val & 0x00ff;
- break;
- case MIXT_MONOSLIDER16:
- /* oss repeats the value in the upper bits, as if it was stereo */
- volumes[0] = val & 0x0000ffff;
- break;
- case MIXT_STEREOSLIDER:
- volumes[0] = (val & 0x00ff);
- volumes[1] = (val & 0xff00) >> 8;
- break;
- case MIXT_STEREOSLIDER16:
- volumes[0] = (val & 0x0000ffff);
- volumes[1] = (val & 0xffff0000) >> 16;
- break;
- default:
- g_return_if_reached ();
- }
-}
-
-gboolean
-gst_oss4_mixer_slider_get_volume (GstOss4MixerSlider * s, gint * volumes)
-{
- GstMixerTrack *track = GST_MIXER_TRACK (s);
- int v = 0;
-
- /* if we're supposed to be muted, and don't have an actual mute control
- * (ie. 'simulate' the mute), then just return the volume as saved, not
- * the actually set volume which is most likely 0 */
- if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE) && !s->mc->mute) {
- volumes[0] = s->volumes[0];
- if (track->num_channels == 2)
- volumes[1] = s->volumes[1];
- return TRUE;
- }
-
- if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &v))
- return FALSE;
-
- gst_oss4_mixer_slider_unpack_volume (s, v, volumes);
-
- if (track->num_channels > 1) {
- GST_LOG_OBJECT (s, "volume: left=%d, right=%d", volumes[0], volumes[1]);
- } else {
- GST_LOG_OBJECT (s, "volume: mono=%d", volumes[0]);
- }
-
- return TRUE;
-}
-
-gboolean
-gst_oss4_mixer_slider_set_volume (GstOss4MixerSlider * s, const gint * volumes)
-{
- GstMixerTrack *track = GST_MIXER_TRACK (s);
- int val = 0;
-
- /* if we're supposed to be muted, and are 'simulating' the mute because
- * we don't have a mute control, don't actually change the volume, just
- * save it as the new desired volume for later when we get unmuted again */
- if (!GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_NO_MUTE)) {
- if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE) && !s->mc->mute)
- goto done;
- }
-
- val = gst_oss4_mixer_slider_pack_volume (s, volumes);
-
- if (track->num_channels > 1) {
- GST_LOG_OBJECT (s, "left=%d, right=%d", volumes[0], volumes[1]);
- } else {
- GST_LOG_OBJECT (s, "mono=%d", volumes[0]);
- }
-
- if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, val))
- return FALSE;
-
-done:
-
- s->volumes[0] = volumes[0];
- if (track->num_channels == 2)
- s->volumes[1] = volumes[1];
-
- return TRUE;
-}
-
-gboolean
-gst_oss4_mixer_slider_set_record (GstOss4MixerSlider * s, gboolean record)
-{
- /* There doesn't seem to be a way to do this using the OSS4 mixer API, so
- * just do nothing here for now. */
- return FALSE;
-}
-
-gboolean
-gst_oss4_mixer_slider_set_mute (GstOss4MixerSlider * s, gboolean mute)
-{
- GstMixerTrack *track = GST_MIXER_TRACK (s);
- gboolean ret;
-
- /* if the control does not support muting, then do not do anything */
- if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_NO_MUTE)) {
- return TRUE;
- }
-
- /* If we do not have a mute control, simulate mute (which is a bit broken,
- * since we can not differentiate between capture/playback volume etc., so
- * we just assume that setting the volume to 0 would be the same as muting
- * this control) */
- if (s->mc->mute == NULL) {
- int volume;
-
- if (mute) {
- /* make sure the current volume values get saved. */
- gst_oss4_mixer_slider_get_volume (s, s->volumes);
- volume = 0;
- } else {
- volume = gst_oss4_mixer_slider_pack_volume (s, s->volumes);
- }
- ret = gst_oss4_mixer_set_control_val (s->mixer, s->mc, volume);
- } else {
- ret = gst_oss4_mixer_set_control_val (s->mixer, s->mc->mute, ! !mute);
- }
-
- if (mute) {
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-
- return ret;
-}
-
-GstMixerTrack *
-gst_oss4_mixer_slider_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc)
-{
- GstOss4MixerSlider *s;
- GstMixerTrack *track;
- gint volumes[2] = { 0, };
-
- s = g_object_new (GST_TYPE_OSS4_MIXER_SLIDER, "untranslated-label",
- mc->mixext.extname, NULL);
-
- track = GST_MIXER_TRACK (s);
-
- /* caller will set track->label and track->flags */
-
- s->mc = mc;
- s->mixer = mixer;
-
- /* we don't do value scaling but just present a scale of 0-maxvalue */
- track->min_volume = 0;
- track->max_volume = mc->mixext.maxvalue;
-
- switch (mc->mixext.type) {
- case MIXT_MONOSLIDER:
- case MIXT_MONOSLIDER16:
- case MIXT_SLIDER:
- track->num_channels = 1;
- break;
- case MIXT_STEREOSLIDER:
- case MIXT_STEREOSLIDER16:
- track->num_channels = 2;
- break;
- default:
- g_return_val_if_reached (NULL);
- }
-
- GST_LOG_OBJECT (track, "min=%d, max=%d, channels=%d", track->min_volume,
- track->max_volume, track->num_channels);
-
- if (!gst_oss4_mixer_slider_get_volume (s, volumes)) {
- GST_WARNING_OBJECT (track, "failed to read volume, returning NULL");
- g_object_unref (track);
- track = NULL;
- }
-
- return track;
-}
-
-/* This is called from the watch thread */
-void
-gst_oss4_mixer_slider_process_change_unlocked (GstMixerTrack * track)
-{
- GstOss4MixerSlider *s = GST_OSS4_MIXER_SLIDER_CAST (track);
-
- if (s->mc->mute != NULL && s->mc->mute->changed) {
- gst_mixer_mute_toggled (GST_MIXER (s->mixer), track,
- ! !s->mc->mute->last_val);
- } else {
- /* nothing to do here, since we don't/can't easily implement the record
- * flag */
- }
-
- if (s->mc->changed) {
- gint volumes[2] = { 0, 0 };
-
- gst_oss4_mixer_slider_unpack_volume (s, s->mc->last_val, volumes);
-
- /* if we 'simulate' the mute, update flag when the volume changes */
- if (s->mc->mute == NULL) {
- if (volumes[0] == 0 && volumes[1] == 0) {
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
- }
-
- gst_mixer_volume_changed (GST_MIXER (s->mixer), track, volumes);
- }
-}
diff --git a/wearable/sys/oss4/oss4-mixer-slider.h b/wearable/sys/oss4/oss4-mixer-slider.h
deleted file mode 100644
index 3bee33f..0000000
--- a/wearable/sys/oss4/oss4-mixer-slider.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* GStreamer OSS4 mixer slider control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_MIXER_SLIDER_H
-#define GST_OSS4_MIXER_SLIDER_H
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-#include "oss4-mixer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS4_MIXER_SLIDER (gst_oss4_mixer_slider_get_type())
-#define GST_OSS4_MIXER_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_MIXER_SLIDER,GstOss4MixerSlider))
-#define GST_OSS4_MIXER_SLIDER_CAST(obj) ((GstOss4MixerSlider *)(obj))
-#define GST_OSS4_MIXER_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_MIXER_SLIDER,GstOss4MixerSliderClass))
-#define GST_IS_OSS4_MIXER_SLIDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_MIXER_SLIDER))
-#define GST_IS_OSS4_MIXER_SLIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_MIXER_SLIDER))
-
-typedef struct _GstOss4MixerSlider GstOss4MixerSlider;
-typedef struct _GstOss4MixerSliderClass GstOss4MixerSliderClass;
-
-struct _GstOss4MixerSlider {
- GstMixerTrack mixer_track;
-
- GstOss4MixerControl * mc;
- GstOss4Mixer * mixer; /* the mixer we belong to (no ref taken) */
- gint volumes[2]; /* left/mono, right */
-};
-
-struct _GstOss4MixerSliderClass {
- GstMixerTrackClass mixer_track_class;
-};
-
-GType gst_oss4_mixer_slider_get_type (void);
-
-GstMixerTrack * gst_oss4_mixer_slider_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc);
-
-gboolean gst_oss4_mixer_slider_get_volume (GstOss4MixerSlider * s, gint * volumes);
-
-gboolean gst_oss4_mixer_slider_set_volume (GstOss4MixerSlider * s, const gint * volumes);
-
-gboolean gst_oss4_mixer_slider_set_record (GstOss4MixerSlider * s, gboolean record);
-
-gboolean gst_oss4_mixer_slider_set_mute (GstOss4MixerSlider * s, gboolean mute);
-
-void gst_oss4_mixer_slider_process_change_unlocked (GstMixerTrack * track);
-
-G_END_DECLS
-
-#endif /* GST_OSS4_MIXER_SLIDER_H */
-
-
diff --git a/wearable/sys/oss4/oss4-mixer-switch.c b/wearable/sys/oss4/oss4-mixer-switch.c
deleted file mode 100644
index 0a6ce5b..0000000
--- a/wearable/sys/oss4/oss4-mixer-switch.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* GStreamer OSS4 mixer on/off switch control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/* A simple ON/OFF 'switch' in gnome-volume-control / GstMixer is represented
- * by a GstMixerTrack with no channels.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst-i18n-plugin.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-mixer-switch.h"
-#include "oss4-soundcard.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss4mixer_debug);
-#define GST_CAT_DEFAULT oss4mixer_debug
-
-/* GstMixerTrack is a plain GObject, so let's just use the GLib macro here */
-G_DEFINE_TYPE (GstOss4MixerSwitch, gst_oss4_mixer_switch, GST_TYPE_MIXER_TRACK);
-
-static void
-gst_oss4_mixer_switch_class_init (GstOss4MixerSwitchClass * klass)
-{
- /* nothing to do here */
-}
-
-static void
-gst_oss4_mixer_switch_init (GstOss4MixerSwitch * s)
-{
- /* nothing to do here */
-}
-
-gboolean
-gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean disabled)
-{
- GstMixerTrack *track;
- int newval;
-
- track = GST_MIXER_TRACK (s);
-
- newval = disabled ? GST_MIXER_TRACK_MUTE : 0;
-
- if (newval == (track->flags & GST_MIXER_TRACK_MUTE)) {
- GST_LOG_OBJECT (s, "switch is already %d, doing nothing", newval);
- return TRUE;
- }
-
- if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, !disabled)) {
- GST_WARNING_OBJECT (s, "could not set switch to %d", !disabled);
- return FALSE;
- }
-
- if (disabled) {
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-
- GST_LOG_OBJECT (s, "set switch to %d", newval);
-
- return TRUE;
-}
-
-gboolean
-gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * disabled)
-{
- GstMixerTrack *track;
- int enabled = -1;
-
- track = GST_MIXER_TRACK (s);
-
- if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &enabled)
- || (enabled < 0)) {
- GST_WARNING_OBJECT (s, "could not get switch state");
- return FALSE;
- }
-
- if (enabled) {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- } else {
- track->flags |= GST_MIXER_TRACK_MUTE;
- }
- *disabled = (enabled == 0);
-
- return TRUE;
-}
-
-GstMixerTrack *
-gst_oss4_mixer_switch_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc)
-{
- GstOss4MixerSwitch *s;
- GstMixerTrack *track;
- int cur = -1;
-
- s = g_object_new (GST_TYPE_OSS4_MIXER_SWITCH, "untranslated-label",
- mc->mixext.extname, NULL);
-
- s->mixer = mixer;
- s->mc = mc;
-
- track = GST_MIXER_TRACK (s);
-
- /* caller will set track->label and track->flags */
-
- track->num_channels = 0;
- track->min_volume = 0;
- track->max_volume = 0;
-
- if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &cur) || cur < 0)
- return NULL;
-
- if (cur) {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- } else {
- track->flags |= GST_MIXER_TRACK_MUTE;
- }
-
- return track;
-}
-
-/* This is called from the watch thread */
-void
-gst_oss4_mixer_switch_process_change_unlocked (GstMixerTrack * track)
-{
- GstOss4MixerSwitch *s = GST_OSS4_MIXER_SWITCH_CAST (track);
-
- if (!s->mc->changed)
- return;
-
- gst_mixer_mute_toggled (GST_MIXER (s->mixer), track, !s->mc->last_val);
-}
diff --git a/wearable/sys/oss4/oss4-mixer-switch.h b/wearable/sys/oss4/oss4-mixer-switch.h
deleted file mode 100644
index a8ab83f..0000000
--- a/wearable/sys/oss4/oss4-mixer-switch.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* GStreamer OSS4 mixer on/off switch control
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_MIXER_SWITCH_H
-#define GST_OSS4_MIXER_SWITCH_H
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-#include "oss4-mixer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS4_MIXER_SWITCH (gst_oss4_mixer_switch_get_type())
-#define GST_OSS4_MIXER_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_MIXER_SWITCH,GstOss4MixerSwitch))
-#define GST_OSS4_MIXER_SWITCH_CAST(obj) ((GstOss4MixerSwitch *)(obj))
-#define GST_OSS4_MIXER_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_MIXER_SWITCH,GstOss4MixerSwitchClass))
-#define GST_IS_OSS4_MIXER_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_MIXER_SWITCH))
-#define GST_IS_OSS4_MIXER_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_MIXER_SWITCH))
-
-typedef struct _GstOss4MixerSwitch GstOss4MixerSwitch;
-typedef struct _GstOss4MixerSwitchClass GstOss4MixerSwitchClass;
-
-struct _GstOss4MixerSwitch {
- GstMixerTrack mixer_track;
-
- GstOss4MixerControl * mc;
- GstOss4Mixer * mixer; /* the mixer we belong to (no ref taken) */
-};
-
-struct _GstOss4MixerSwitchClass {
- GstMixerTrackClass mixer_track_class;
-};
-
-GType gst_oss4_mixer_switch_get_type (void);
-
-gboolean gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean enabled);
-
-gboolean gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * enabled);
-
-GstMixerTrack * gst_oss4_mixer_switch_new (GstOss4Mixer * mixer, GstOss4MixerControl * mc);
-
-void gst_oss4_mixer_switch_process_change_unlocked (GstMixerTrack * track);
-
-G_END_DECLS
-
-#endif /* GST_OSS4_MIXER_SWITCH_H */
-
-
diff --git a/wearable/sys/oss4/oss4-mixer.c b/wearable/sys/oss4/oss4-mixer.c
deleted file mode 100644
index 03e2d9d..0000000
--- a/wearable/sys/oss4/oss4-mixer.c
+++ /dev/null
@@ -1,1862 +0,0 @@
-/* GStreamer OSS4 mixer implementation
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with mixer library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-oss4mixer
- *
- * This element lets you adjust sound input and output levels with the
- * Open Sound System (OSS) version 4. It supports the GstMixer interface, which
- * can be used to obtain a list of available mixer tracks. Set the mixer
- * element to READY state before using the GstMixer interface on it.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * <para>
- * oss4mixer can&apos;t be used in a sensible way in gst-launch.
- * </para>
- * </refsect2>
- *
- * Since: 0.10.7
- */
-
-/* Note: ioctl calls on the same open mixer device are serialised via
- * the object lock to make sure we don't do concurrent ioctls from two
- * different threads (e.g. app thread and mixer watch thread), since that
- * will probably confuse OSS. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-
-#include <gst/interfaces/mixer.h>
-#include <gst/gst-i18n-plugin.h>
-#include "gst/glib-compat-private.h"
-
-#include <glib/gprintf.h>
-
-#define NO_LEGACY_MIXER
-
-#include "oss4-audio.h"
-#include "oss4-mixer.h"
-#include "oss4-mixer-enum.h"
-#include "oss4-mixer-slider.h"
-#include "oss4-mixer-switch.h"
-#include "oss4-property-probe.h"
-#include "oss4-soundcard.h"
-
-#define GST_OSS4_MIXER_WATCH_INTERVAL 500 /* in millisecs, ie. 0.5s */
-
-GST_DEBUG_CATEGORY_EXTERN (oss4mixer_debug);
-#define GST_CAT_DEFAULT oss4mixer_debug
-
-#define DEFAULT_DEVICE NULL
-#define DEFAULT_DEVICE_NAME NULL
-
-enum
-{
- PROP_0,
- PROP_DEVICE,
- PROP_DEVICE_NAME
-};
-
-static void gst_oss4_mixer_init_interfaces (GType type);
-
-GST_BOILERPLATE_FULL (GstOss4Mixer, gst_oss4_mixer, GstElement,
- GST_TYPE_ELEMENT, gst_oss4_mixer_init_interfaces);
-
-static GstStateChangeReturn gst_oss4_mixer_change_state (GstElement *
- element, GstStateChange transition);
-
-static void gst_oss4_mixer_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_oss4_mixer_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_oss4_mixer_finalize (GObject * object);
-
-static gboolean gst_oss4_mixer_open (GstOss4Mixer * mixer,
- gboolean silent_errors);
-static void gst_oss4_mixer_close (GstOss4Mixer * mixer);
-
-static gboolean gst_oss4_mixer_enum_control_update_enum_list (GstOss4Mixer * m,
- GstOss4MixerControl * mc);
-
-#ifndef GST_DISABLE_GST_DEBUG
-static const gchar *mixer_ext_type_get_name (gint type);
-static const gchar *mixer_ext_flags_get_string (gint flags);
-#endif
-
-static void
-gst_oss4_mixer_base_init (gpointer klass)
-{
- gst_element_class_set_details_simple (GST_ELEMENT_CLASS (klass),
- "OSS v4 Audio Mixer", "Generic/Audio",
- "Control sound input and output levels with OSS4",
- "Tim-Philipp Müller <tim centricular net>");
-}
-
-static void
-gst_oss4_mixer_class_init (GstOss4MixerClass * klass)
-{
- GstElementClass *element_class;
- GObjectClass *gobject_class;
-
- element_class = (GstElementClass *) klass;
- gobject_class = (GObjectClass *) klass;
-
- gobject_class->finalize = gst_oss4_mixer_finalize;
- gobject_class->set_property = gst_oss4_mixer_set_property;
- gobject_class->get_property = gst_oss4_mixer_get_property;
-
- /**
- * GstOss4Mixer:device
- *
- * OSS4 mixer device (e.g. /dev/oss/hdaudio0/mix0 or /dev/mixerN)
- *
- **/
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS mixer device (e.g. /dev/oss/hdaudio0/mix0 or /dev/mixerN) "
- "(NULL = use first mixer device found)", DEFAULT_DEVICE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstOss4Mixer:device-name
- *
- * Human-readable name of the sound device. May be NULL if the device is
- * not open (ie. when the mixer is in NULL state)
- *
- **/
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- element_class->change_state = GST_DEBUG_FUNCPTR (gst_oss4_mixer_change_state);
-}
-
-static void
-gst_oss4_mixer_finalize (GObject * obj)
-{
- GstOss4Mixer *mixer = GST_OSS4_MIXER (obj);
-
- g_free (mixer->device);
-
- G_OBJECT_CLASS (parent_class)->finalize (obj);
-}
-
-static void
-gst_oss4_mixer_reset (GstOss4Mixer * mixer)
-{
- mixer->fd = -1;
- mixer->need_update = TRUE;
- memset (&mixer->last_mixext, 0, sizeof (oss_mixext));
-}
-
-static void
-gst_oss4_mixer_init (GstOss4Mixer * mixer, GstOss4MixerClass * g_class)
-{
- mixer->device = g_strdup (DEFAULT_DEVICE);
- mixer->device_name = NULL;
-
- gst_oss4_mixer_reset (mixer);
-}
-
-static void
-gst_oss4_mixer_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOss4Mixer *mixer = GST_OSS4_MIXER (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (mixer);
- if (!GST_OSS4_MIXER_IS_OPEN (mixer)) {
- g_free (mixer->device);
- mixer->device = g_value_dup_string (value);
- /* unset any cached device-name */
- g_free (mixer->device_name);
- mixer->device_name = NULL;
- } else {
- g_warning ("%s: can't change \"device\" property while mixer is open",
- GST_OBJECT_NAME (mixer));
- }
- GST_OBJECT_UNLOCK (mixer);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss4_mixer_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOss4Mixer *mixer = GST_OSS4_MIXER (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (mixer);
- g_value_set_string (value, mixer->device);
- GST_OBJECT_UNLOCK (mixer);
- break;
- case PROP_DEVICE_NAME:
- GST_OBJECT_LOCK (mixer);
- /* If device is set, try to retrieve the name even if we're not open */
- if (mixer->fd == -1 && mixer->device != NULL) {
- if (gst_oss4_mixer_open (mixer, TRUE)) {
- g_value_set_string (value, mixer->device_name);
- gst_oss4_mixer_close (mixer);
- } else {
- g_value_set_string (value, mixer->device_name);
- }
- } else {
- g_value_set_string (value, mixer->device_name);
- }
- GST_OBJECT_UNLOCK (mixer);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static gboolean
-gst_oss4_mixer_open (GstOss4Mixer * mixer, gboolean silent_errors)
-{
- struct oss_mixerinfo mi = { 0, };
- gchar *device;
-
- g_return_val_if_fail (!GST_OSS4_MIXER_IS_OPEN (mixer), FALSE);
-
- if (mixer->device)
- device = g_strdup (mixer->device);
- else
- device = gst_oss4_audio_find_device (GST_OBJECT_CAST (mixer));
-
- /* desperate times, desperate measures */
- if (device == NULL)
- device = g_strdup ("/dev/mixer");
-
- GST_INFO_OBJECT (mixer, "Trying to open OSS4 mixer device '%s'", device);
-
- mixer->fd = open (device, O_RDWR, 0);
- if (mixer->fd < 0)
- goto open_failed;
-
- /* Make sure it's OSS4. If it's old OSS, let the old ossmixer handle it */
- if (!gst_oss4_audio_check_version (GST_OBJECT (mixer), mixer->fd))
- goto legacy_oss;
-
- GST_INFO_OBJECT (mixer, "Opened mixer device '%s', which is mixer %d",
- device, mi.dev);
-
- /* Get device name for currently open fd */
- mi.dev = -1;
- if (ioctl (mixer->fd, SNDCTL_MIXERINFO, &mi) == 0) {
- mixer->modify_counter = mi.modify_counter;
- if (mi.name[0] != '\0') {
- mixer->device_name = g_strdup (mi.name);
- }
- } else {
- mixer->modify_counter = 0;
- }
-
- if (mixer->device_name == NULL) {
- mixer->device_name = g_strdup ("Unknown");
- }
- GST_INFO_OBJECT (mixer, "device name = '%s'", mixer->device_name);
-
- mixer->open_device = device;
-
- return TRUE;
-
- /* ERRORS */
-open_failed:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (mixer, RESOURCE, OPEN_READ_WRITE,
- (_("Could not open audio device for mixer control handling.")),
- GST_ERROR_SYSTEM);
- } else {
- GST_DEBUG_OBJECT (mixer, "open failed: %s (ignoring errors)",
- g_strerror (errno));
- }
- g_free (device);
- return FALSE;
- }
-legacy_oss:
- {
- gst_oss4_mixer_close (mixer);
- if (!silent_errors) {
- GST_ELEMENT_ERROR (mixer, RESOURCE, OPEN_READ_WRITE,
- (_("Could not open audio device for mixer control handling. "
- "This version of the Open Sound System is not supported by this "
- "element.")), ("Try the 'ossmixer' element instead"));
- } else {
- GST_DEBUG_OBJECT (mixer, "open failed: legacy oss (ignoring errors)");
- }
- g_free (device);
- return FALSE;
- }
-}
-
-static void
-gst_oss4_mixer_control_free (GstOss4MixerControl * mc)
-{
- g_list_free (mc->children);
- g_list_free (mc->mute_group);
- g_free (mc->enum_vals);
- memset (mc, 0, sizeof (GstOss4MixerControl));
- g_free (mc);
-}
-
-static void
-gst_oss4_mixer_free_tracks (GstOss4Mixer * mixer)
-{
- g_list_foreach (mixer->tracks, (GFunc) g_object_unref, NULL);
- g_list_free (mixer->tracks);
- mixer->tracks = NULL;
-
- g_list_foreach (mixer->controls, (GFunc) gst_oss4_mixer_control_free, NULL);
- g_list_free (mixer->controls);
- mixer->controls = NULL;
-}
-
-static void
-gst_oss4_mixer_close (GstOss4Mixer * mixer)
-{
- g_free (mixer->device_name);
- mixer->device_name = NULL;
-
- g_free (mixer->open_device);
- mixer->open_device = NULL;
-
- gst_oss4_mixer_free_tracks (mixer);
-
- if (mixer->fd != -1) {
- close (mixer->fd);
- mixer->fd = -1;
- }
-
- gst_oss4_mixer_reset (mixer);
-}
-
-static void
-gst_oss4_mixer_watch_process_changes (GstOss4Mixer * mixer)
-{
- GList *c, *t, *tracks = NULL;
-
- GST_INFO_OBJECT (mixer, "mixer interface or control changed");
-
- /* this is all with the mixer object lock held */
-
- /* we go through the list backwards so we can bail out faster when the entire
- * interface needs to be rebuilt */
- for (c = g_list_last (mixer->controls); c != NULL; c = c->prev) {
- GstOss4MixerControl *mc = c->data;
- oss_mixer_value ossval = { 0, };
-
- mc->changed = FALSE;
- mc->list_changed = FALSE;
-
- /* not interested in controls we don't expose in the mixer interface */
- if (!mc->used)
- continue;
-
- /* don't try to read a value from controls that don't have one */
- if (mc->mixext.type == MIXT_DEVROOT || mc->mixext.type == MIXT_GROUP)
- continue;
-
- /* is this an enum control whose list may change? */
- if (mc->mixext.type == MIXT_ENUM && mc->enum_version != 0) {
- if (gst_oss4_mixer_enum_control_update_enum_list (mixer, mc))
- mc->list_changed = TRUE;
- }
-
- ossval.dev = mc->mixext.dev;
- ossval.ctrl = mc->mixext.ctrl;
- ossval.timestamp = mc->mixext.timestamp;
-
- if (ioctl (mixer->fd, SNDCTL_MIX_READ, &ossval) == -1) {
- if (errno == EIDRM || errno == EFAULT) {
- GST_DEBUG ("%s has disappeared", mc->mixext.extname);
- goto mixer_changed;
- }
- GST_WARNING_OBJECT (mixer, "MIX_READ failed: %s", g_strerror (errno));
- /* just ignore, move on to next one */
- continue;
- }
-
- if (ossval.value == mc->last_val) { /* no change */
- /* GST_LOG_OBJECT (mixer, "%s hasn't changed", mc->mixext.extname); */
- continue;
- }
-
- mc->last_val = ossval.value;
- GST_LOG_OBJECT (mixer, "%s changed value to %u 0x%08x",
- mc->mixext.extname, ossval.value, ossval.value);
- mc->changed = TRUE;
- }
-
- /* copy list and take track refs, so we can safely drop the object lock,
- * which we need to do to be able to post messages on the bus */
- tracks = g_list_copy (mixer->tracks);
- g_list_foreach (tracks, (GFunc) g_object_ref, NULL);
-
- GST_OBJECT_UNLOCK (mixer);
-
- /* since we don't know (or want to know exactly) which controls belong to
- * which track, we just go through the tracks one-by-one now and make them
- * check themselves if any of their controls have changed and which messages
- * to post on the bus as a result */
- for (t = tracks; t != NULL; t = t->next) {
- GstMixerTrack *track = t->data;
-
- if (GST_IS_OSS4_MIXER_SLIDER (track)) {
- gst_oss4_mixer_slider_process_change_unlocked (track);
- } else if (GST_IS_OSS4_MIXER_SWITCH (track)) {
- gst_oss4_mixer_switch_process_change_unlocked (track);
- } else if (GST_IS_OSS4_MIXER_ENUM (track)) {
- gst_oss4_mixer_enum_process_change_unlocked (track);
- }
-
- g_object_unref (track);
- }
- g_list_free (tracks);
-
- GST_OBJECT_LOCK (mixer);
- return;
-
-mixer_changed:
- {
- GST_OBJECT_UNLOCK (mixer);
- gst_mixer_mixer_changed (GST_MIXER (mixer));
- GST_OBJECT_LOCK (mixer);
- return;
- }
-}
-
-/* This thread watches the mixer for changes in a somewhat inefficient way
- * (running an ioctl every half second or so). This is still better and
- * cheaper than apps polling all tracks for changes a few times a second
- * though. Needs more thought. There's probably (hopefully) a way to get
- * notifications via the fd directly somehow. */
-static gpointer
-gst_oss4_mixer_watch_thread (gpointer thread_data)
-{
- GstOss4Mixer *mixer = GST_OSS4_MIXER_CAST (thread_data);
-
- GST_DEBUG_OBJECT (mixer, "watch thread running");
-
- GST_OBJECT_LOCK (mixer);
- while (!mixer->watch_shutdown) {
- oss_mixerinfo mi = { 0, };
- GTimeVal tv;
-
- mi.dev = -1;
- if (ioctl (mixer->fd, SNDCTL_MIXERINFO, &mi) == 0) {
- if (mixer->modify_counter != mi.modify_counter) {
- /* GST_LOG ("processing changes"); */
- gst_oss4_mixer_watch_process_changes (mixer);
- mixer->modify_counter = mi.modify_counter;
- } else {
- /* GST_LOG ("no changes"); */
- }
- } else {
- GST_WARNING_OBJECT (mixer, "MIXERINFO failed: %s", g_strerror (errno));
- }
-
- /* we could move the _get_current_time out of the loop and just do the
- * add in ever iteration, which would be less exact, but who cares */
- g_get_current_time (&tv);
- g_time_val_add (&tv, GST_OSS4_MIXER_WATCH_INTERVAL * 1000);
- (void) g_cond_timed_wait (mixer->watch_cond, GST_OBJECT_GET_LOCK (mixer),
- &tv);
- }
- GST_OBJECT_UNLOCK (mixer);
-
- GST_DEBUG_OBJECT (mixer, "watch thread done");
- gst_object_unref (mixer);
- return NULL;
-}
-
-/* call with object lock held */
-static void
-gst_oss4_mixer_wake_up_watch_task (GstOss4Mixer * mixer)
-{
- GST_LOG_OBJECT (mixer, "signalling watch thread to wake up");
- g_cond_signal (mixer->watch_cond);
-}
-
-static void
-gst_oss4_mixer_stop_watch_task (GstOss4Mixer * mixer)
-{
- if (mixer->watch_thread) {
- GST_OBJECT_LOCK (mixer);
- mixer->watch_shutdown = TRUE;
- GST_LOG_OBJECT (mixer, "signalling watch thread to stop");
- g_cond_signal (mixer->watch_cond);
- GST_OBJECT_UNLOCK (mixer);
- GST_LOG_OBJECT (mixer, "waiting for watch thread to join");
- g_thread_join (mixer->watch_thread);
- GST_DEBUG_OBJECT (mixer, "watch thread stopped");
- mixer->watch_thread = NULL;
- }
-
- if (mixer->watch_cond) {
- g_cond_free (mixer->watch_cond);
- mixer->watch_cond = NULL;
- }
-}
-
-static void
-gst_oss4_mixer_start_watch_task (GstOss4Mixer * mixer)
-{
- GError *err = NULL;
-
- mixer->watch_cond = g_cond_new ();
- mixer->watch_shutdown = FALSE;
-
-#if !GLIB_CHECK_VERSION (2, 31, 0)
- mixer->watch_thread = g_thread_create (gst_oss4_mixer_watch_thread,
- gst_object_ref (mixer), TRUE, &err);
-#else
- mixer->watch_thread = g_thread_try_new ("oss4-mixer-thread",
- gst_oss4_mixer_watch_thread, gst_object_ref (mixer), &err);
-#endif
-
- if (mixer->watch_thread == NULL) {
- GST_ERROR_OBJECT (mixer, "Could not create watch thread: %s", err->message);
- g_cond_free (mixer->watch_cond);
- mixer->watch_cond = NULL;
- g_error_free (err);
- }
-}
-
-static GstStateChangeReturn
-gst_oss4_mixer_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstOss4Mixer *mixer = GST_OSS4_MIXER (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!gst_oss4_mixer_open (mixer, FALSE))
- return GST_STATE_CHANGE_FAILURE;
- gst_oss4_mixer_start_watch_task (mixer);
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
- if (ret == GST_STATE_CHANGE_FAILURE)
- return ret;
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
- gst_oss4_mixer_stop_watch_task (mixer);
- gst_oss4_mixer_close (mixer);
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-/* === GstMixer interface === */
-
-static inline gboolean
-gst_oss4_mixer_contains_track (GstMixer * mixer, GstMixerTrack * track)
-{
- return (g_list_find (GST_OSS4_MIXER (mixer)->tracks, track) != NULL);
-}
-
-static inline gboolean
-gst_oss4_mixer_contains_options (GstMixer * mixer, GstMixerOptions * options)
-{
- return (g_list_find (GST_OSS4_MIXER (mixer)->tracks, options) != NULL);
-}
-
-static void
-gst_oss4_mixer_post_mixer_changed_msg (GstOss4Mixer * mixer)
-{
- /* only post mixer-changed message once */
- if (!mixer->need_update) {
- gst_mixer_mixer_changed (GST_MIXER (mixer));
- mixer->need_update = TRUE;
- }
-}
-
-/* call with mixer object lock held to serialise ioctl */
-gboolean
-gst_oss4_mixer_get_control_val (GstOss4Mixer * mixer, GstOss4MixerControl * mc,
- int *val)
-{
- oss_mixer_value ossval = { 0, };
-
- if (GST_OBJECT_TRYLOCK (mixer)) {
- GST_ERROR ("must be called with mixer lock held");
- GST_OBJECT_UNLOCK (mixer);
- }
-
- ossval.dev = mc->mixext.dev;
- ossval.ctrl = mc->mixext.ctrl;
- ossval.timestamp = mc->mixext.timestamp;
-
- if (ioctl (mixer->fd, SNDCTL_MIX_READ, &ossval) == -1) {
- if (errno == EIDRM) {
- GST_DEBUG_OBJECT (mixer, "MIX_READ failed: mixer interface has changed");
- gst_oss4_mixer_post_mixer_changed_msg (mixer);
- } else {
- GST_WARNING_OBJECT (mixer, "MIX_READ failed: %s", g_strerror (errno));
- }
- *val = 0;
- mc->last_val = 0;
- return FALSE;
- }
-
- *val = ossval.value;
- mc->last_val = ossval.value;
- GST_LOG_OBJECT (mixer, "got value 0x%08x from %s)", *val, mc->mixext.extname);
- return TRUE;
-}
-
-/* call with mixer object lock held to serialise ioctl */
-gboolean
-gst_oss4_mixer_set_control_val (GstOss4Mixer * mixer, GstOss4MixerControl * mc,
- int val)
-{
- oss_mixer_value ossval = { 0, };
-
- ossval.dev = mc->mixext.dev;
- ossval.ctrl = mc->mixext.ctrl;
- ossval.timestamp = mc->mixext.timestamp;
- ossval.value = val;
-
- if (GST_OBJECT_TRYLOCK (mixer)) {
- GST_ERROR ("must be called with mixer lock held");
- GST_OBJECT_UNLOCK (mixer);
- }
-
- if (ioctl (mixer->fd, SNDCTL_MIX_WRITE, &ossval) == -1) {
- if (errno == EIDRM) {
- GST_LOG_OBJECT (mixer, "MIX_WRITE failed: mixer interface has changed");
- gst_oss4_mixer_post_mixer_changed_msg (mixer);
- } else {
- GST_WARNING_OBJECT (mixer, "MIX_WRITE failed: %s", g_strerror (errno));
- }
- return FALSE;
- }
-
- mc->last_val = val;
- GST_LOG_OBJECT (mixer, "set value 0x%08x on %s", val, mc->mixext.extname);
- return TRUE;
-}
-
-#if 0
-static gchar *
-gst_oss4_mixer_control_get_pretty_name (GstOss4MixerControl * mc)
-{
- gchar *name;
-
- const gchar *name, *u;
-
- /* "The id field is the original name given by the driver when it called
- * mixer_ext_create_control. This name can be used by fully featured GUI
- * mixers. However this name should be downshifted and cut before the last
- * underscore ("_") to get the proper name. For example mixer control name
- * created as "MYDRV_MAINVOL" will become just "mainvol" after this
- * transformation." */
- name = mc->mixext.extname;
- u = MAX (strrchr (name, '_'), strrchr (name, '.'));
- if (u != NULL)
- name = u + 1;
-
- /* maybe capitalize the first letter? */
- return g_ascii_strdown (name, -1);
- /* the .id thing doesn't really seem to work right, ie. for some sliders
- * it's just '-' so you have to use the name of the parent control etc.
- * let's not use it for now, much too painful. */
- if (g_str_has_prefix (mc->mixext.extname, "misc."))
- name = g_strdup (mc->mixext.extname + 5);
- else
- name = g_strdup (mc->mixext.extname);
- /* chop off trailing digit (only one for now) */
- if (strlen (name) > 0 && g_ascii_isdigit (name[strlen (name) - 1]))
- name[strlen (name) - 1] = '\0';
- g_strdelimit (name, ".", ' ');
- return name;
-}
-#endif
-
-/* these translations are a bit ad-hoc and horribly incomplete; it is not
- * really going to work this way with all the different chipsets and drivers.
- * We also use these for translating option values. */
-static struct
-{
- const gchar oss_name[32];
- const gchar *label;
-} labels[] = {
- {
- "volume", N_("Volume")}, {
- "master", N_("Master")}, {
- "front", N_("Front")}, {
- "rear", N_("Rear")}, {
- "headphones", N_("Headphones")}, {
- "center", N_("Center")}, {
- "lfe", N_("LFE")}, {
- "surround", N_("Surround")}, {
- "side", N_("Side")}, {
- "speaker", N_("Built-in Speaker")}, {
- "aux1-out", N_("AUX 1 Out")}, {
- "aux2-out", N_("AUX 2 Out")}, {
- "aux-out", N_("AUX Out")}, {
- "bass", N_("Bass")}, {
- "treble", N_("Treble")}, {
- "3d-depth", N_("3D Depth")}, {
- "3d-center", N_("3D Center")}, {
- "3d-enhance", N_("3D Enhance")}, {
- "phone", N_("Telephone")}, {
- "mic", N_("Microphone")}, {
- "line-out", N_("Line Out")}, {
- "line-in", N_("Line In")}, {
- "linein", N_("Line In")}, {
- "cd", N_("Internal CD")}, {
- "video", N_("Video In")}, {
- "aux1-in", N_("AUX 1 In")}, {
- "aux2-in", N_("AUX 2 In")}, {
- "aux-in", N_("AUX In")}, {
- "pcm", N_("PCM")}, {
- "record-gain", N_("Record Gain")}, {
- "igain", N_("Record Gain")}, {
- "ogain", N_("Output Gain")}, {
- "micboost", N_("Microphone Boost")}, {
- "loopback", N_("Loopback")}, {
- "diag", N_("Diagnostic")}, {
- "loudness", N_("Bass Boost")}, {
- "outputs", N_("Playback Ports")}, {
- "input", N_("Input")}, {
- "inputs", N_("Record Source")}, {
- "record-source", N_("Record Source")}, {
- "monitor-source", N_("Monitor Source")}, {
- "beep", N_("Keyboard Beep")}, {
- "monitor-gain", N_("Monitor")}, {
- "stereo-simulate", N_("Simulate Stereo")}, {
- "stereo", N_("Stereo")}, {
- "multich", N_("Surround Sound")}, {
- "mic-gain", N_("Microphone Gain")}, {
- "speaker-source", N_("Speaker Source")}, {
- "mic-source", N_("Microphone Source")}, {
- "jack", N_("Jack")}, {
- "center/lfe", N_("Center / LFE")}, {
- "stereo-mix", N_("Stereo Mix")}, {
- "mono-mix", N_("Mono Mix")}, {
- "input-mix", N_("Input Mix")}, {
- "spdif-in", N_("SPDIF In")}, {
- "spdif-out", N_("SPDIF Out")}, {
- "mic1", N_("Microphone 1")}, {
- "mic2", N_("Microphone 2")}, {
- "digital-out", N_("Digital Out")}, {
- "digital-in", N_("Digital In")}, {
- "hdmi", N_("HDMI")}, {
- "modem", N_("Modem")}, {
- "handset", N_("Handset")}, {
- "other", N_("Other")}, {
- "stereo", N_("Stereo")}, {
- "none", N_("None")}, {
- "on", N_("On")}, {
- "off", N_("Off")}, {
- "mute", N_("Mute")}, {
- "fast", N_("Fast")}, {
- /* TRANSLATORS: "Very Low" is a quality setting here */
- "very-low", N_("Very Low")}, {
- /* TRANSLATORS: "Low" is a quality setting here */
- "low", N_("Low")}, {
- /* TRANSLATORS: "Medium" is a quality setting here */
- "medium", N_("Medium")}, {
- /* TRANSLATORS: "High" is a quality setting here */
- "high", N_("High")}, {
- /* TRANSLATORS: "Very High" is a quality setting here */
- "very-high", N_("Very High")}, {
- "high+", N_("Very High")}, {
- /* TRANSLATORS: "Production" is a quality setting here */
- "production", N_("Production")}, {
- "fp-mic", N_("Front Panel Microphone")}, {
- "fp-linein", N_("Front Panel Line In")}, {
- "fp-headphones", N_("Front Panel Headphones")}, {
- "fp-lineout", N_("Front Panel Line Out")}, {
- "green", N_("Green Connector")}, {
- "pink", N_("Pink Connector")}, {
- "blue", N_("Blue Connector")}, {
- "white", N_("White Connector")}, {
- "black", N_("Black Connector")}, {
- "gray", N_("Gray Connector")}, {
- "orange", N_("Orange Connector")}, {
- "red", N_("Red Connector")}, {
- "yellow", N_("Yellow Connector")}, {
- "fp-green", N_("Green Front Panel Connector")}, {
- "fp-pink", N_("Pink Front Panel Connector")}, {
- "fp-blue", N_("Blue Front Panel Connector")}, {
- "fp-white", N_("White Front Panel Connector")}, {
- "fp-black", N_("Black Front Panel Connector")}, {
- "fp-gray", N_("Gray Front Panel Connector")}, {
- "fp-orange", N_("Orange Front Panel Connector")}, {
- "fp-red", N_("Red Front Panel Connector")}, {
- "fp-yellow", N_("Yellow Front Panel Connector")}, {
- "spread", N_("Spread Output")}, {
- "downmix", N_("Downmix")},
- /* FIXME translate Audigy NX USB labels) */
-/*
- { "rec.src", N_("Record Source") },
- { "output.mute", N_("Mute output") }
- headph (Controller group)
- headph.src (Enumeration control)
- headph.mute (On/Off switch)
- digital2 (Controller group)
- digital2.src (Enumeration control)
- digital2.mute (On/Off switch)
- digital (Controller group)
- digital.mute1 (On/Off switch)
- digital.vol (Controller group)
- digital.vol.front (Stereo slider (0-255))
- digital.vol.surr (Stereo slider (0-255))
- digital.vol.c/l (Stereo slider (0-255))
- digital.vol.center (Stereo slider (0-255))
- digital.mute2 (On/Off switch)
- digital.vol (Stereo slider (0-255))
- line (Controller group)
- line.mute (On/Off switch)
- line.vol (Stereo slider (0-255))
- play-altset (Enumeration control)
- rec-altset (Enumeration control)
-*/
-};
-
-/* Decent i18n is pretty much impossible with OSS's way of providing us with
- * mixer labels (and the fact that they are pretty much random), but that
- * doesn't mean we shouldn't at least try. */
-static gchar *
-gst_oss4_mixer_control_get_translated_name (GstOss4MixerControl * mc)
-{
- gchar name[128] = { 0, };
- gchar vmix_str[32] = { '\0', };
- gchar *ptr;
- int dummy, i;
- int num = -1;
- gboolean function_suffix = FALSE;
-
- /* main virtual mixer controls (we hide the stream volumes) */
- if (sscanf (mc->mixext.extname, "vmix%d-%32c", &dummy, vmix_str) == 2) {
- if (strcmp (vmix_str, "src") == 0)
- return g_strdup (_("Virtual Mixer Input"));
- else if (strcmp (vmix_str, "vol") == 0)
- return g_strdup (_("Virtual Mixer Output"));
- else if (strcmp (vmix_str, "channels") == 0)
- return g_strdup (_("Virtual Mixer Channels"));
- }
-
- g_strlcpy (name, mc->mixext.extname, sizeof (name));
-
- /* we deal with either "connector." or "jack." */
- if ((g_str_has_prefix (name, "connector.")) ||
- (g_str_has_prefix (name, "jack."))) {
- ptr = strchr (mc->mixext.extname, '.');
- ptr++;
- g_strlcpy (name, ptr, sizeof (name));
- }
-
- /* special handling for jack retasking suffixes */
- if (g_str_has_suffix (name, ".function") || g_str_has_suffix (name, ".mode")) {
- function_suffix = TRUE;
- ptr = strrchr (name, '.');
- *ptr = 0;
- }
-
- /* parse off trailing numbers */
- i = strlen (name);
- while ((i > 0) && (g_ascii_isdigit (name[i - 1]))) {
- i--;
- }
- /* the check catches the case where the control name is just a number */
- if ((i > 0) && (name[i] != '\0')) {
- num = atoi (name + i);
- name[i] = '\0';
- }
-
- /* look for a match, progressively skipping '.' delimited prefixes as we go */
- ptr = name;
- do {
- if (*ptr == '.')
- ptr++;
- for (i = 0; i < G_N_ELEMENTS (labels); ++i) {
- if (g_ascii_strcasecmp (ptr, labels[i].oss_name) == 0) {
- g_strlcpy (name, _(labels[i].label), sizeof (name));
- goto append_suffixes;
- }
- }
- } while ((ptr = strchr (ptr, '.')) != NULL);
-
- /* failing that, just replace periods with spaces */
- g_strdelimit (name, ".", ' ');
-
-append_suffixes:
- if (num > -1) {
- if (function_suffix) {
- /* TRANSLATORS: name + number of a volume mixer control */
- return g_strdup_printf (_("%s %d Function"), name, num);
- } else {
- return g_strdup_printf ("%s %d", name, num);
- }
- } else {
- if (function_suffix) {
- /* TRANSLATORS: name of a volume mixer control */
- return g_strdup_printf (_("%s Function"), name);
- } else {
- return g_strdup (name);
- }
- }
-}
-
-static const gchar *
-gst_oss4_mixer_control_get_translated_option (const gchar * name)
-{
- int i;
- for (i = 0; i < G_N_ELEMENTS (labels); ++i) {
- if (g_ascii_strcasecmp (name, labels[i].oss_name) == 0) {
- return _(labels[i].label);
- }
- }
- return (name);
-}
-
-#ifndef GST_DISABLE_GST_DEBUG
-static const gchar *
-mixer_ext_type_get_name (gint type)
-{
- switch (type) {
- case MIXT_DEVROOT:
- return "Device root entry";
- case MIXT_GROUP:
- return "Controller group";
- case MIXT_ONOFF:
- return "On/Off switch";
- case MIXT_ENUM:
- return "Enumeration control";
- case MIXT_MONOSLIDER:
- return "Mono slider (0-255)";
- case MIXT_STEREOSLIDER:
- return "Stereo slider (0-255)";
- case MIXT_MESSAGE:
- return "Textual message"; /* whatever this is */
- case MIXT_MONOVU:
- return "Mono VU meter value";
- case MIXT_STEREOVU:
- return "Stereo VU meter value";
- case MIXT_MONOPEAK:
- return "Mono VU meter peak value";
- case MIXT_STEREOPEAK:
- return "Stereo VU meter peak value";
- case MIXT_RADIOGROUP:
- return "Radio button group";
- case MIXT_MARKER: /* Separator between normal and extension entries */
- return "Separator";
- case MIXT_VALUE:
- return "Decimal value entry";
- case MIXT_HEXVALUE:
- return "Hex value entry";
- case MIXT_SLIDER:
- return "Mono slider (31-bit value range)";
- case MIXT_3D:
- return "3D"; /* what's this? */
- case MIXT_MONOSLIDER16:
- return "Mono slider (0-32767)";
- case MIXT_STEREOSLIDER16:
- return "Stereo slider (0-32767)";
- case MIXT_MUTE:
- return "Mute switch";
- default:
- break;
- }
- return "unknown";
-}
-#endif /* GST_DISABLE_GST_DEBUG */
-
-#ifndef GST_DISABLE_GST_DEBUG
-static const gchar *
-mixer_ext_flags_get_string (gint flags)
-{
- struct
- {
- gint flag;
- gchar nick[16];
- } all_flags[] = {
- /* first the important ones */
- {
- MIXF_MAINVOL, "MAINVOL"}, {
- MIXF_PCMVOL, "PCMVOL"}, {
- MIXF_RECVOL, "RECVOL"}, {
- MIXF_MONVOL, "MONVOL"}, {
- MIXF_DESCR, "DESCR"},
- /* now the rest in the right order */
- {
- MIXF_READABLE, "READABLE"}, {
- MIXF_WRITEABLE, "WRITABLE"}, {
- MIXF_POLL, "POLL"}, {
- MIXF_HZ, "HZ"}, {
- MIXF_STRING, "STRING"}, {
- MIXF_DYNAMIC, "DYNAMIC"}, {
- MIXF_OKFAIL, "OKFAIL"}, {
- MIXF_FLAT, "FLAT"}, {
- MIXF_LEGACY, "LEGACY"}, {
- MIXF_CENTIBEL, "CENTIBEL"}, {
- MIXF_DECIBEL, "DECIBEL"}, {
- MIXF_WIDE, "WIDE"}
- };
- GString *s;
- GQuark q;
- gint i;
-
- if (flags == 0)
- return "None";
-
- s = g_string_new ("");
- for (i = 0; i < G_N_ELEMENTS (all_flags); ++i) {
- if ((flags & all_flags[i].flag)) {
- if (s->len > 0)
- g_string_append (s, " | ");
- g_string_append (s, all_flags[i].nick);
- flags &= ~all_flags[i].flag; /* unset */
- }
- }
-
- /* unknown flags? */
- if (flags != 0) {
- if (s->len > 0)
- g_string_append (s, " | ");
- g_string_append (s, "???");
- }
-
- /* we'll just put it into the global quark table (cheeky, eh?) */
- q = g_quark_from_string (s->str);
- g_string_free (s, TRUE);
-
- return g_quark_to_string (q);
-}
-#endif /* GST_DISABLE_GST_DEBUG */
-
-#ifndef GST_DISABLE_GST_DEBUG
-static void
-gst_oss4_mixer_control_dump_tree (GstOss4MixerControl * mc, gint depth)
-{
- GList *c;
- gchar spaces[64];
- gint i;
-
- depth = MIN (sizeof (spaces) - 1, depth);
- for (i = 0; i < depth; ++i)
- spaces[i] = ' ';
- spaces[i] = '\0';
-
- GST_LOG ("%s%s (%s)", spaces, mc->mixext.extname,
- mixer_ext_type_get_name (mc->mixext.type));
- for (c = mc->children; c != NULL; c = c->next) {
- GstOss4MixerControl *child_mc = (GstOss4MixerControl *) c->data;
-
- gst_oss4_mixer_control_dump_tree (child_mc, depth + 2);
- }
-}
-#endif /* GST_DISABLE_GST_DEBUG */
-
-static GList *
-gst_oss4_mixer_get_controls (GstOss4Mixer * mixer)
-{
- GstOss4MixerControl *root_mc = NULL;
- oss_mixerinfo mi = { 0, };
- GList *controls = NULL;
- GList *l;
- guint i;
-
- /* Get info for currently open fd */
- mi.dev = -1;
- if (ioctl (mixer->fd, SNDCTL_MIXERINFO, &mi) == -1)
- goto no_mixerinfo;
-
- if (mi.nrext <= 0) {
- GST_DEBUG ("mixer %s has no controls", mi.id);
- return NULL;
- }
-
- GST_INFO ("Reading controls for mixer %s", mi.id);
-
- for (i = 0; i < mi.nrext; ++i) {
- GstOss4MixerControl *mc;
- oss_mixext mix_ext = { 0, };
-
- mix_ext.dev = mi.dev;
- mix_ext.ctrl = i;
-
- if (ioctl (mixer->fd, SNDCTL_MIX_EXTINFO, &mix_ext) == -1) {
- GST_DEBUG ("SNDCTL_MIX_EXTINFO failed on mixer %s, control %d: %s",
- mi.id, i, g_strerror (errno));
- continue;
- }
-
- /* if this is the last one, save it for is-interface-up-to-date checking */
- if (i == mi.nrext)
- mixer->last_mixext = mix_ext;
-
- mc = g_new0 (GstOss4MixerControl, 1);
- mc->mixext = mix_ext;
-
- /* both control_no and desc fields are pretty useless, ie. not always set,
- * if ever, so not listed here */
- GST_INFO ("Control %d", mix_ext.ctrl);
- GST_INFO (" name : %s", mix_ext.extname);
- GST_INFO (" type : %s (%d)", mixer_ext_type_get_name (mix_ext.type),
- mix_ext.type);
- GST_INFO (" flags : %s (0x%04x)",
- mixer_ext_flags_get_string (mix_ext.flags), mix_ext.flags);
- GST_INFO (" parent : %d", mix_ext.parent);
-
- if (!MIXEXT_IS_ROOT (mix_ext)) {
- /* find parent (we assume it comes in the list before the child) */
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *parent_mc = (GstOss4MixerControl *) l->data;
-
- if (parent_mc->mixext.ctrl == mix_ext.parent) {
- mc->parent = parent_mc;
- parent_mc->children = g_list_append (parent_mc->children, mc);
- break;
- }
- }
- if (mc->parent == NULL) {
- GST_ERROR_OBJECT (mixer, "couldn't find parent for control %d", i);
- g_free (mc);
- continue;
- }
- } else if (root_mc == NULL) {
- root_mc = mc;
- } else {
- GST_WARNING_OBJECT (mixer, "two root controls?!");
- }
-
- controls = g_list_prepend (controls, mc);
- }
-
-#ifndef GST_DISABLE_GST_DEBUG
- gst_oss4_mixer_control_dump_tree (root_mc, 0);
-#endif
-
- return g_list_reverse (controls);
-
-/* ERRORS */
-no_mixerinfo:
- {
- GST_WARNING ("SNDCTL_MIXERINFO failed on mixer device %s: %s", mi.id,
- g_strerror (errno));
- return NULL;
- }
-}
-
-static void
-gst_oss4_mixer_controls_guess_master (GstOss4Mixer * mixer,
- const GList * controls)
-{
- GstOss4MixerControl *master_mc = NULL;
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
-
- /* do we need to check if it's a slider type here? */
- if ((mc->mixext.flags & MIXF_PCMVOL)) {
- GST_INFO_OBJECT (mixer, "First PCM control: %s", mc->mixext.extname);
- master_mc = mc;
- break;
- }
-
- if (((mc->mixext.flags & MIXF_MAINVOL)) && master_mc == NULL) {
- GST_INFO_OBJECT (mixer, "First main volume control: %s",
- mc->mixext.extname);
- master_mc = mc;
- }
- }
-
- if (master_mc != NULL)
- master_mc->is_master = TRUE;
-}
-
-/* type: -1 for all types, otherwise just return siblings with requested type */
-static GList *
-gst_oss4_mixer_control_get_siblings (GstOss4MixerControl * mc, gint type)
-{
- GList *s, *siblings = NULL;
-
- if (mc->parent == NULL)
- return NULL;
-
- for (s = mc->parent->children; s != NULL; s = s->next) {
- GstOss4MixerControl *sibling = (GstOss4MixerControl *) s->data;
-
- if (mc != sibling && (type < 0 || sibling->mixext.type == type))
- siblings = g_list_append (siblings, sibling);
- }
-
- return siblings;
-}
-
-static void
-gst_oss4_mixer_controls_find_sliders (GstOss4Mixer * mixer,
- const GList * controls)
-{
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
- GList *s, *siblings;
-
- if (!MIXEXT_IS_SLIDER (mc->mixext) || mc->parent == NULL || mc->used)
- continue;
-
- mc->is_slider = TRUE;
- mc->used = TRUE;
-
- siblings = gst_oss4_mixer_control_get_siblings (mc, -1);
-
- /* Note: the names can be misleading and may not reflect the actual
- * hierarchy of the controls, e.g. it's possible that a slider is called
- * connector.green and the mute control then connector.green.mute, but
- * both controls are in fact siblings and both children of the group
- * 'green' instead of mute being a child of connector.green as the naming
- * would seem to suggest */
- GST_LOG ("Slider: %s, parent=%s, %d siblings", mc->mixext.extname,
- mc->parent->mixext.extname, g_list_length (siblings));
-
- for (s = siblings; s != NULL; s = s->next) {
- GstOss4MixerControl *sibling = (GstOss4MixerControl *) s->data;
-
- GST_LOG (" %s (%s)", sibling->mixext.extname,
- mixer_ext_type_get_name (sibling->mixext.type));
-
- if (sibling->mixext.type == MIXT_MUTE ||
- g_str_has_suffix (sibling->mixext.extname, ".mute")) {
- /* simple case: slider with single mute sibling. We assume the .mute
- * suffix in the name won't change - can't really do much else anyway */
- if (sibling->mixext.type == MIXT_ONOFF ||
- sibling->mixext.type == MIXT_MUTE) {
- GST_LOG (" mute control for %s is %s", mc->mixext.extname,
- sibling->mixext.extname);
- mc->mute = sibling;
- sibling->used = TRUE;
- }
- /* a group of .mute controls. We assume they are all switches here */
- if (sibling->mixext.type == MIXT_GROUP) {
- GList *m;
-
- for (m = sibling->children; m != NULL; m = m->next) {
- GstOss4MixerControl *grouped_sibling = m->data;
-
- if (grouped_sibling->mixext.type == MIXT_ONOFF ||
- grouped_sibling->mixext.type == MIXT_MUTE) {
- GST_LOG (" %s is grouped mute control for %s",
- grouped_sibling->mixext.extname, mc->mixext.extname);
- mc->mute_group = g_list_append (mc->mute_group, grouped_sibling);
- }
- }
-
- GST_LOG (" %s has a group of %d mute controls",
- mc->mixext.extname, g_list_length (mc->mute_group));
-
- /* we don't mark the individual mute controls as used, only the
- * group control, as we still want individual switches for the
- * individual controls */
- sibling->used = TRUE;
- }
- }
- }
- g_list_free (siblings);
- }
-}
-
-/* should be called with the mixer object lock held because of the ioctl;
- * returns TRUE if the list was read the first time or modified */
-static gboolean
-gst_oss4_mixer_enum_control_update_enum_list (GstOss4Mixer * mixer,
- GstOss4MixerControl * mc)
-{
- oss_mixer_enuminfo ei = { 0, };
- guint num_existing = 0;
- int i;
-
- /* count and existing values */
- while (mc->enum_vals != NULL && mc->enum_vals[num_existing] != 0)
- ++num_existing;
-
- ei.dev = mc->mixext.dev;
- ei.ctrl = mc->mixext.ctrl;
-
- /* if we have create a generic list with numeric IDs already and the
- * number of values hasn't changed, then there's not much to do here */
- if (mc->no_list && mc->enum_vals != NULL &&
- num_existing == mc->mixext.maxvalue) {
- return FALSE;
- }
-
- /* if we have a list and it doesn't change, there's nothing to do either */
- if (mc->enum_vals != NULL && mc->enum_version == 0)
- return FALSE;
-
- if (ioctl (mixer->fd, SNDCTL_MIX_ENUMINFO, &ei) == -1) {
- g_free (mc->enum_vals);
- mc->enum_vals = g_new0 (GQuark, mc->mixext.maxvalue + 1);
-
- GST_DEBUG ("no enum info available, creating numeric values from 0-%d",
- mc->mixext.maxvalue - 1);
-
- /* "It is possible that some enum controls don't have any name list
- * available. In this case the application should automatically generate
- * list of numbers (0 to N-1)" */
- for (i = 0; i < mc->mixext.maxvalue; ++i) {
- gchar num_str[8];
-
- g_snprintf (num_str, sizeof (num_str), "%d", i);
- mc->enum_vals[i] = g_quark_from_string (num_str);
- }
- mc->enum_version = 0; /* the only way to change is via maxvalue */
- } else {
- /* old list same as current list? */
- if (mc->enum_vals != NULL && mc->enum_version == ei.version)
- return FALSE;
-
- /* no list yet, or the list has changed */
- GST_LOG ("%s", (mc->enum_vals) ? "enum list has changed" : "reading list");
- if (ei.nvalues != mc->mixext.maxvalue) {
- GST_WARNING_OBJECT (mixer, "Enum: %s, nvalues %d != maxvalue %d",
- mc->mixext.extname, ei.nvalues, mc->mixext.maxvalue);
- mc->mixext.maxvalue = MIN (ei.nvalues, mc->mixext.maxvalue);
- }
-
- mc->mixext.maxvalue = MIN (mc->mixext.maxvalue, OSS_ENUM_MAXVALUE);
-
- g_free (mc->enum_vals);
- mc->enum_vals = g_new0 (GQuark, mc->mixext.maxvalue + 1);
- for (i = 0; i < mc->mixext.maxvalue; ++i) {
- GST_LOG (" %s", ei.strings + ei.strindex[i]);
- mc->enum_vals[i] =
- g_quark_from_string (gst_oss4_mixer_control_get_translated_option
- (ei.strings + ei.strindex[i]));
- }
- }
-
- return TRUE;
-}
-
-static void
-gst_oss4_mixer_controls_find_enums (GstOss4Mixer * mixer,
- const GList * controls)
-{
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
-
- if (mc->mixext.type != MIXT_ENUM || mc->used)
- continue;
-
- mc->is_enum = TRUE;
- mc->used = TRUE;
-
- /* Note: enums are special: for most controls, the maxvalue is inclusive,
- * but for enum controls it's actually exclusive (boggle), so that
- * mixext.maxvalue = num_values */
-
- GST_LOG ("Enum: %s, parent=%s, num_enums=%d", mc->mixext.extname,
- mc->parent->mixext.extname, mc->mixext.maxvalue);
-
- gst_oss4_mixer_enum_control_update_enum_list (mixer, mc);
- }
-}
-
-static void
-gst_oss4_mixer_controls_find_switches (GstOss4Mixer * mixer,
- const GList * controls)
-{
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
-
- if (mc->used)
- continue;
-
- if (mc->mixext.type != MIXT_ONOFF && mc->mixext.type != MIXT_MUTE)
- continue;
-
- mc->is_switch = TRUE;
- mc->used = TRUE;
-
- GST_LOG ("Switch: %s, parent=%s", mc->mixext.extname,
- mc->parent->mixext.extname);
- }
-}
-
-static void
-gst_oss4_mixer_controls_find_virtual (GstOss4Mixer * mixer,
- const GList * controls)
-{
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
-
- /* or sscanf (mc->mixext.extname, "vmix%d-out.", &n) == 1 ? */
- /* for now we just flag all virtual controls with managed labels, those
- * are really more appropriate for a pavucontrol-type control thing than
- * the (more hardware-oriented) mixer interface */
- if (mc->mixext.id[0] == '@') {
- mc->is_virtual = TRUE;
- GST_LOG ("%s is virtual control with managed label", mc->mixext.extname);
- }
- }
-}
-
-static void
-gst_oss4_mixer_controls_dump_unused (GstOss4Mixer * mixer,
- const GList * controls)
-{
- const GList *l;
-
- for (l = controls; l != NULL; l = l->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) l->data;
-
- if (mc->used)
- continue;
-
- switch (mc->mixext.type) {
- case MIXT_DEVROOT:
- case MIXT_GROUP:
- case MIXT_MESSAGE:
- case MIXT_MONOVU:
- case MIXT_STEREOVU:
- case MIXT_MONOPEAK:
- case MIXT_STEREOPEAK:
- case MIXT_MARKER:
- continue; /* not interested in these types of controls */
- case MIXT_MONODB:
- case MIXT_STEREODB:
- GST_DEBUG ("obsolete control type %d", mc->mixext.type);
- continue;
- case MIXT_MONOSLIDER:
- case MIXT_STEREOSLIDER:
- case MIXT_SLIDER:
- case MIXT_MONOSLIDER16:
- case MIXT_STEREOSLIDER16:
- /* this shouldn't happen */
- GST_ERROR ("unused slider control?!");
- continue;
- case MIXT_VALUE:
- case MIXT_HEXVALUE:
- /* value entry, not sure what to do with that, skip for now */
- continue;
- case MIXT_ONOFF:
- case MIXT_MUTE:
- case MIXT_ENUM:
- case MIXT_3D:
- case MIXT_RADIOGROUP:
- GST_DEBUG ("FIXME: handle %s %s",
- mixer_ext_type_get_name (mc->mixext.type), mc->mixext.extname);
- break;
- default:
- GST_WARNING ("unknown control type %d", mc->mixext.type);
- continue;
- }
- }
-}
-
-static GList *
-gst_oss4_mixer_create_tracks (GstOss4Mixer * mixer, const GList * controls)
-{
- const GList *c;
- GList *tracks = NULL;
-
- for (c = controls; c != NULL; c = c->next) {
- GstOss4MixerControl *mc = (GstOss4MixerControl *) c->data;
- GstMixerTrack *track = NULL;
-
- if (mc->is_virtual)
- continue;
-
- if (mc->is_slider) {
- track = gst_oss4_mixer_slider_new (mixer, mc);
- } else if (mc->is_enum) {
- track = gst_oss4_mixer_enum_new (mixer, mc);
- } else if (mc->is_switch) {
- track = gst_oss4_mixer_switch_new (mixer, mc);
- }
-
- if (track == NULL)
- continue;
-
- track->label = gst_oss4_mixer_control_get_translated_name (mc);
- track->flags = 0;
-
- GST_LOG ("translated label: %s [%s] = %s", track->label, mc->mixext.id,
- track->label);
-
- /* This whole 'a track is either INPUT or OUTPUT' model is just flawed,
- * esp. if a slider's role can be changed on the fly, like when you change
- * function of a connector. What should we do in that case? Change the flag
- * and make the app rebuild the interface? Ignore it? */
- if (mc->mixext.flags & (MIXF_MAINVOL | MIXF_PCMVOL)) {
- track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST;
-
- } else if (mc->mixext.flags & MIXF_RECVOL) {
- /* record gain whitelisted by default */
- track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD |
- GST_MIXER_TRACK_WHITELIST;
-
- } else if (mc->mixext.flags & MIXF_MONVOL) {
- /* monitor sources not whitelisted by default */
- track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD;
- }
-
- /*
- * The kernel may give us better clues about the scope of a control.
- * If so, try to honor it.
- */
- switch (mc->mixext.desc & MIXEXT_SCOPE_MASK) {
- case MIXEXT_SCOPE_INPUT:
- case MIXEXT_SCOPE_RECSWITCH:
- track->flags |= GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD |
- GST_MIXER_TRACK_WHITELIST;
- break;
- case MIXEXT_SCOPE_MONITOR:
- /* don't whitelist monitor tracks by default */
- track->flags |= GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD;
- break;
- case MIXEXT_SCOPE_OUTPUT:
- track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST;
- break;
- }
-
- if (mc->is_master) {
- track->flags |= GST_MIXER_TRACK_OUTPUT;
- }
-
- if (mc->is_master)
- track->flags |= GST_MIXER_TRACK_MASTER;
-
- tracks = g_list_append (tracks, track);
- }
-
- return tracks;
-}
-
-static void
-gst_oss4_mixer_update_tracks (GstOss4Mixer * mixer)
-{
- GList *controls, *tracks;
-
- /* read and process controls */
- controls = gst_oss4_mixer_get_controls (mixer);
-
- gst_oss4_mixer_controls_guess_master (mixer, controls);
-
- gst_oss4_mixer_controls_find_sliders (mixer, controls);
-
- gst_oss4_mixer_controls_find_enums (mixer, controls);
-
- gst_oss4_mixer_controls_find_switches (mixer, controls);
-
- gst_oss4_mixer_controls_find_virtual (mixer, controls);
-
- gst_oss4_mixer_controls_dump_unused (mixer, controls);
-
- tracks = gst_oss4_mixer_create_tracks (mixer, controls);
-
- /* free old tracks and controls */
- gst_oss4_mixer_free_tracks (mixer);
-
- /* replace old with new */
- mixer->tracks = tracks;
- mixer->controls = controls;
-}
-
-static const GList *
-gst_oss4_mixer_list_tracks (GstMixer * mixer_iface)
-{
- GstOss4Mixer *mixer = GST_OSS4_MIXER (mixer_iface);
-
- g_return_val_if_fail (mixer != NULL, NULL);
- g_return_val_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer), NULL);
-
- GST_OBJECT_LOCK (mixer);
-
- /* Do a read on the last control to check if the interface has changed */
- if (!mixer->need_update && mixer->last_mixext.ctrl > 0) {
- GstOss4MixerControl mc = { {0,}
- ,
- };
- int val;
-
- mc.mixext = mixer->last_mixext;
- gst_oss4_mixer_get_control_val (mixer, &mc, &val);
- }
-
- if (mixer->need_update || mixer->tracks == NULL) {
- gst_oss4_mixer_update_tracks (mixer);
- mixer->need_update = FALSE;
- }
-
- GST_OBJECT_UNLOCK (mixer);
-
- return (const GList *) mixer->tracks;
-}
-
-static void
-gst_oss4_mixer_set_volume (GstMixer * mixer, GstMixerTrack * track,
- gint * volumes)
-{
- GstOss4Mixer *oss;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (GST_IS_OSS4_MIXER (mixer));
- g_return_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer));
- g_return_if_fail (gst_oss4_mixer_contains_track (mixer, track));
- g_return_if_fail (volumes != NULL);
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- if (GST_IS_OSS4_MIXER_SLIDER (track)) {
- gst_oss4_mixer_slider_set_volume (GST_OSS4_MIXER_SLIDER (track), volumes);
- }
-
- GST_OBJECT_UNLOCK (oss);
-}
-
-static void
-gst_oss4_mixer_get_volume (GstMixer * mixer, GstMixerTrack * track,
- gint * volumes)
-{
- GstOss4Mixer *oss;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (GST_IS_OSS4_MIXER (mixer));
- g_return_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer));
- g_return_if_fail (gst_oss4_mixer_contains_track (mixer, track));
- g_return_if_fail (volumes != NULL);
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- memset (volumes, 0, track->num_channels * sizeof (gint));
-
- if (GST_IS_OSS4_MIXER_SWITCH (track)) {
- gboolean enabled = FALSE;
- gst_oss4_mixer_switch_get (GST_OSS4_MIXER_SWITCH (track), &enabled);
- }
- if (GST_IS_OSS4_MIXER_SLIDER (track)) {
- gst_oss4_mixer_slider_get_volume (GST_OSS4_MIXER_SLIDER (track), volumes);
- }
-
- GST_OBJECT_UNLOCK (oss);
-}
-
-static void
-gst_oss4_mixer_set_record (GstMixer * mixer, GstMixerTrack * track,
- gboolean record)
-{
- GstOss4Mixer *oss;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (GST_IS_OSS4_MIXER (mixer));
- g_return_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer));
- g_return_if_fail (gst_oss4_mixer_contains_track (mixer, track));
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- if (GST_IS_OSS4_MIXER_SLIDER (track)) {
- gst_oss4_mixer_slider_set_record (GST_OSS4_MIXER_SLIDER (track), record);
- } else if (GST_IS_OSS4_MIXER_SWITCH (track)) {
- if ((track->flags & GST_MIXER_TRACK_INPUT)) {
- gst_oss4_mixer_switch_set (GST_OSS4_MIXER_SWITCH (track), record);
- } else {
- GST_WARNING_OBJECT (track, "set_record called on non-INPUT track");
- }
- }
-
- GST_OBJECT_UNLOCK (oss);
-}
-
-static void
-gst_oss4_mixer_set_mute (GstMixer * mixer, GstMixerTrack * track, gboolean mute)
-{
- GstOss4Mixer *oss;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (GST_IS_OSS4_MIXER (mixer));
- g_return_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer));
- g_return_if_fail (gst_oss4_mixer_contains_track (mixer, track));
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- if (GST_IS_OSS4_MIXER_SLIDER (track)) {
- gst_oss4_mixer_slider_set_mute (GST_OSS4_MIXER_SLIDER (track), mute);
- } else if (GST_IS_OSS4_MIXER_SWITCH (track)) {
- gst_oss4_mixer_switch_set (GST_OSS4_MIXER_SWITCH (track), mute);
- }
-
- GST_OBJECT_UNLOCK (oss);
-}
-
-static void
-gst_oss4_mixer_set_option (GstMixer * mixer, GstMixerOptions * options,
- gchar * value)
-{
- GstOss4Mixer *oss;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (value != NULL);
- g_return_if_fail (GST_IS_OSS4_MIXER (mixer));
- g_return_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer));
- g_return_if_fail (GST_IS_OSS4_MIXER_ENUM (options));
- g_return_if_fail (gst_oss4_mixer_contains_options (mixer, options));
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- if (!gst_oss4_mixer_enum_set_option (GST_OSS4_MIXER_ENUM (options), value)) {
- /* not much we can do here but wake up the watch thread early, so it
- * can do its thing and post messages if anything has changed */
- gst_oss4_mixer_wake_up_watch_task (oss);
- }
-
- GST_OBJECT_UNLOCK (oss);
-}
-
-static const gchar *
-gst_oss4_mixer_get_option (GstMixer * mixer, GstMixerOptions * options)
-{
- GstOss4Mixer *oss;
- const gchar *current_val;
-
- g_return_val_if_fail (mixer != NULL, NULL);
- g_return_val_if_fail (GST_IS_OSS4_MIXER (mixer), NULL);
- g_return_val_if_fail (GST_OSS4_MIXER_IS_OPEN (mixer), NULL);
- g_return_val_if_fail (GST_IS_OSS4_MIXER_ENUM (options), NULL);
- g_return_val_if_fail (gst_oss4_mixer_contains_options (mixer, options), NULL);
-
- oss = GST_OSS4_MIXER (mixer);
-
- GST_OBJECT_LOCK (oss);
-
- current_val = gst_oss4_mixer_enum_get_option (GST_OSS4_MIXER_ENUM (options));
-
- if (current_val == NULL) {
- /* not much we can do here but wake up the watch thread early, so it
- * can do its thing and post messages if anything has changed */
- gst_oss4_mixer_wake_up_watch_task (oss);
- }
-
- GST_OBJECT_UNLOCK (oss);
-
- return current_val;
-}
-
-static GstMixerFlags
-gst_oss4_mixer_get_mixer_flags (GstMixer * mixer)
-{
- return GST_MIXER_FLAG_AUTO_NOTIFICATIONS | GST_MIXER_FLAG_HAS_WHITELIST |
- GST_MIXER_FLAG_GROUPING;
-}
-
-static void
-gst_oss4_mixer_interface_init (GstMixerClass * klass)
-{
- GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE;
-
- klass->list_tracks = gst_oss4_mixer_list_tracks;
- klass->set_volume = gst_oss4_mixer_set_volume;
- klass->get_volume = gst_oss4_mixer_get_volume;
- klass->set_mute = gst_oss4_mixer_set_mute;
- klass->set_record = gst_oss4_mixer_set_record;
- klass->set_option = gst_oss4_mixer_set_option;
- klass->get_option = gst_oss4_mixer_get_option;
- klass->get_mixer_flags = gst_oss4_mixer_get_mixer_flags;
-}
-
-/* Implement the horror that is GstImplementsInterface */
-
-static gboolean
-gst_oss4_mixer_supported (GstImplementsInterface * iface, GType iface_type)
-{
- GstOss4Mixer *mixer;
-
- g_return_val_if_fail (iface_type == GST_TYPE_MIXER, FALSE);
-
- mixer = GST_OSS4_MIXER (iface);
-
- return GST_OSS4_MIXER_IS_OPEN (mixer);
-}
-
-static void
-gst_oss4_mixer_implements_interface_init (GstImplementsInterfaceClass * klass)
-{
- klass->supported = gst_oss4_mixer_supported;
-}
-
-static void
-gst_oss4_mixer_init_interfaces (GType type)
-{
- static const GInterfaceInfo implements_iface_info = {
- (GInterfaceInitFunc) gst_oss4_mixer_implements_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo mixer_iface_info = {
- (GInterfaceInitFunc) gst_oss4_mixer_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_IMPLEMENTS_INTERFACE,
- &implements_iface_info);
- g_type_add_interface_static (type, GST_TYPE_MIXER, &mixer_iface_info);
-
- gst_oss4_add_property_probe_interface (type);
-}
diff --git a/wearable/sys/oss4/oss4-mixer.h b/wearable/sys/oss4/oss4-mixer.h
deleted file mode 100644
index 4eaff50..0000000
--- a/wearable/sys/oss4/oss4-mixer.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* GStreamer OSS4 mixer implementation
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef OSS4_MIXER_H
-#define OSS4_MIXER_H
-
-#include <gst/gst.h>
-
-#include "oss4-soundcard.h"
-
-#define GST_OSS4_MIXER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_MIXER,GstOss4Mixer))
-#define GST_OSS4_MIXER_CAST(obj) ((GstOss4Mixer *)(obj))
-#define GST_OSS4_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_MIXER,GstOss4MixerClass))
-#define GST_IS_OSS4_MIXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_MIXER))
-#define GST_IS_OSS4_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_MIXER))
-#define GST_TYPE_OSS4_MIXER (gst_oss4_mixer_get_type())
-
-#define GST_OSS4_MIXER_IS_OPEN(obj) (GST_OSS4_MIXER(obj)->fd != -1)
-
-typedef struct _GstOss4Mixer GstOss4Mixer;
-typedef struct _GstOss4MixerClass GstOss4MixerClass;
-
-struct _GstOss4Mixer {
- GstElement element;
-
- /*< private >*/
-
- /* element bits'n'bops */
- gchar * device;
-
- /* mixer details */
- gint fd; /* file descriptor if open, or -1 */
- gchar * device_name; /* device description, or NULL */
- gchar * open_device; /* the device we opened */
-
- GList * tracks; /* list of available tracks */
- GList * controls; /* list of available controls */
- gboolean need_update; /* re-read list of available tracks? */
-
- oss_mixext last_mixext; /* we keep this around so we can
- * easily check if the mixer
- * interface has changed */
-
- GThread * watch_thread; /* thread watching for value changes */
- GCond * watch_cond;
- gint watch_shutdown;
- gint modify_counter; /* from MIXERINFO */
-
- /* for property probe interface */
- GList * property_probe_list;
-};
-
-struct _GstOss4MixerClass {
- GstElementClass element_class;
-};
-
-/* helper struct holding info about one control */
-typedef struct _GstOss4MixerControl GstOss4MixerControl;
-
-struct _GstOss4MixerControl {
- oss_mixext mixext;
- GstOss4MixerControl *parent; /* NULL if root */
- GstOss4MixerControl *mute; /* sibling with mute function, or NULL */
- GList *mute_group; /* group of mute controls, or NULL */
- GList *children; /* GstOss4MixerControls (no ownership) */
-
- GQuark *enum_vals; /* 0-terminated array of values or NULL */
- int enum_version; /* 0 = list won't change */
-
- int last_val; /* last value seen */
-
- gboolean is_virtual : 1; /* is a vmix control with dynamic label */
- gboolean is_master : 1;
- gboolean is_slider : 1; /* represent as slider */
- gboolean is_switch : 1; /* represent as switch */
- gboolean is_enum : 1; /* represent as combo/enumeration */
- gboolean no_list : 1; /* enumeration with no list available */
- gboolean is_input : 1; /* is an input-related control */
- gboolean is_output : 1; /* is an output-related control */
- gboolean used : 1; /* whether we know what to do with this */
-
- gboolean changed : 1; /* transient flag used by watch thread */
- gboolean list_changed : 1; /* transient flag used by watch thread */
-};
-
-/* header says parent=-1 means root, but it can also be parent=ctrl */
-#define MIXEXT_IS_ROOT(me) ((me).parent == -1 || (me).parent == (me).ctrl)
-
-#define MIXEXT_IS_SLIDER(me) ((me).type == MIXT_MONOSLIDER || \
- (me).type == MIXT_STEREOSLIDER || (me).type == MIXT_MONOSLIDER16 || \
- (me).type == MIXT_STEREOSLIDER16 || (me).type == MIXT_SLIDER)
-
-#define MIXEXT_HAS_DESCRIPTION(me) (((me).flags & MIXF_DESCR) != 0)
-
-#define MIXEXT_ENUM_IS_AVAILABLE(me,num) \
- (((me).enum_present[num/8]) & (1 << (num % 8)))
-
-
-GType gst_oss4_mixer_get_type (void);
-
-gboolean gst_oss4_mixer_get_control_val (GstOss4Mixer * mixer,
- GstOss4MixerControl * mc,
- int * val);
-
-gboolean gst_oss4_mixer_set_control_val (GstOss4Mixer * mixer,
- GstOss4MixerControl * mc,
- int val);
-
-G_END_DECLS
-
-#endif /* OSS4_MIXER_H */
-
diff --git a/wearable/sys/oss4/oss4-property-probe.c b/wearable/sys/oss4/oss4-property-probe.c
deleted file mode 100644
index a99410e..0000000
--- a/wearable/sys/oss4/oss4-property-probe.c
+++ /dev/null
@@ -1,412 +0,0 @@
-/* GStreamer OSS4 audio property probe interface implementation
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-audio.h"
-#include "oss4-mixer.h"
-#include "oss4-sink.h"
-#include "oss4-source.h"
-#include "oss4-soundcard.h"
-#include "oss4-property-probe.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-
-GST_DEBUG_CATEGORY_EXTERN (oss4_debug);
-#define GST_CAT_DEFAULT oss4_debug
-
-static const GList *
-gst_oss4_property_probe_get_properties (GstPropertyProbe * probe)
-{
- GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
- GList *list;
-
- GST_OBJECT_LOCK (GST_OBJECT (probe));
-
- /* we create a new list and store it in the instance struct, since apparently
- * we forgot to update the API for 0.10 (and why don't we mark probable
- * properties with a flag instead anyway?). A bit hackish, but what can you
- * do (can't really use a static variable since the pspec will be different
- * for src and sink class); this isn't particularly pretty, but the best
- * we can do given that we can't create a common base class (we could do
- * fancy things with the interface, or use g_object_set_data instead, but
- * it's not really going to make it much better) */
- if (GST_IS_AUDIO_SINK_CLASS (klass)) {
- list = GST_OSS4_SINK (probe)->property_probe_list;
- } else if (GST_IS_AUDIO_SRC_CLASS (klass)) {
- list = GST_OSS4_SOURCE (probe)->property_probe_list;
- } else if (GST_IS_OSS4_MIXER_CLASS (klass)) {
- list = GST_OSS4_MIXER (probe)->property_probe_list;
- } else {
- GST_OBJECT_UNLOCK (GST_OBJECT (probe));
- g_return_val_if_reached (NULL);
- }
-
- if (list == NULL) {
- GParamSpec *pspec;
-
- pspec = g_object_class_find_property (klass, "device");
- list = g_list_prepend (NULL, pspec);
-
- if (GST_IS_AUDIO_SINK_CLASS (klass)) {
- GST_OSS4_SINK (probe)->property_probe_list = list;
- } else if (GST_IS_AUDIO_SRC_CLASS (klass)) {
- GST_OSS4_SOURCE (probe)->property_probe_list = list;
- } else if (GST_IS_OSS4_MIXER_CLASS (klass)) {
- GST_OSS4_MIXER (probe)->property_probe_list = list;
- }
- }
-
- GST_OBJECT_UNLOCK (GST_OBJECT (probe));
-
- return list;
-}
-
-static void
-gst_oss4_property_probe_probe_property (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec)
-{
- if (!g_str_equal (pspec->name, "device")) {
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- }
-}
-
-static gboolean
-gst_oss4_property_probe_needs_probe (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec)
-{
- /* don't cache probed data */
- return TRUE;
-}
-
-static gint
-oss4_mixerinfo_priority_cmp (struct oss_mixerinfo *mi1,
- struct oss_mixerinfo *mi2)
-{
- /* return negative vaue if mi1 comes before mi2 */
- if (mi1->priority != mi2->priority)
- return mi2->priority - mi1->priority;
-
- return strcmp (mi1->devnode, mi2->devnode);
-}
-
-/* caller must ensure LOCK is taken (e.g. if ioctls need to be serialised) */
-gboolean
-gst_oss4_property_probe_find_device_name (GstObject * obj, int fd,
- const gchar * device_handle, gchar ** device_name)
-{
- struct oss_sysinfo si = { {0,}, };
- gchar *name = NULL;
-
- if (ioctl (fd, SNDCTL_SYSINFO, &si) == 0) {
- int i;
-
- for (i = 0; i < si.numaudios; ++i) {
- struct oss_audioinfo ai = { 0, };
-
- ai.dev = i;
- if (ioctl (fd, SNDCTL_AUDIOINFO, &ai) == -1) {
- GST_DEBUG_OBJECT (obj, "AUDIOINFO ioctl for device %d failed", i);
- continue;
- }
- if (strcmp (ai.devnode, device_handle) == 0) {
- name = g_strdup (ai.name);
- break;
- }
- }
- } else {
- GST_WARNING_OBJECT (obj, "SYSINFO ioctl failed: %s", g_strerror (errno));
- }
-
- /* try ENGINEINFO as fallback (which is better than nothing) */
- if (name == NULL) {
- struct oss_audioinfo ai = { 0, };
-
- GST_LOG_OBJECT (obj, "device %s not listed in AUDIOINFO", device_handle);
- ai.dev = -1;
- if (ioctl (fd, SNDCTL_ENGINEINFO, &ai) == 0)
- name = g_strdup (ai.name);
- }
-
- GST_DEBUG_OBJECT (obj, "Device name: %s", GST_STR_NULL (name));
-
- if (name != NULL)
- *device_name = name;
-
- return (name != NULL);
-}
-
-gboolean
-gst_oss4_property_probe_find_device_name_nofd (GstObject * obj,
- const gchar * device_handle, gchar ** device_name)
-{
- gboolean res;
- int fd;
-
- fd = open ("/dev/mixer", O_RDONLY);
- if (fd < 0)
- return FALSE;
-
- res = gst_oss4_property_probe_find_device_name (obj, fd, device_handle,
- device_name);
-
- close (fd);
- return res;
-}
-
-static GList *
-gst_oss4_property_probe_get_mixer_devices (GstObject * obj, int fd,
- struct oss_sysinfo *si)
-{
- GList *m, *mixers = NULL;
- GList *devices = NULL;
-
- int i;
-
- GST_LOG_OBJECT (obj, "%d mixer devices", si->nummixers);
-
- /* first, find suitable mixer devices and sort by priority */
- for (i = 0; i < si->nummixers; ++i) {
- struct oss_mixerinfo mi = { 0, };
-
- mi.dev = i;
- if (ioctl (fd, SNDCTL_MIXERINFO, &mi) == -1) {
- GST_DEBUG_OBJECT (obj, "MIXERINFO ioctl for device %d failed", i);
- continue;
- }
-
- GST_INFO_OBJECT (obj, "mixer device %d:", i);
- GST_INFO_OBJECT (obj, " enabled : %s", (mi.enabled) ? "yes" :
- "no (powered off or unplugged)");
- GST_INFO_OBJECT (obj, " priority : %d", mi.priority);
- GST_INFO_OBJECT (obj, " devnode : %s", mi.devnode);
- GST_INFO_OBJECT (obj, " handle : %s", mi.handle);
- GST_INFO_OBJECT (obj, " caps : 0x%02x", mi.caps);
- GST_INFO_OBJECT (obj, " name : %s", mi.name);
-
- if (!mi.enabled) {
- GST_DEBUG_OBJECT (obj, "mixer device is not usable/enabled, skipping");
- continue;
- }
-
- /* only want mixers that control hardware directly */
- if ((mi.caps & MIXER_CAP_VIRTUAL)) {
- GST_DEBUG_OBJECT (obj, "mixer device is a virtual device, skipping");
- continue;
- }
-
- mixers = g_list_insert_sorted (mixers, g_memdup (&mi, sizeof (mi)),
- (GCompareFunc) oss4_mixerinfo_priority_cmp);
- }
-
- /* then create device list according to priority */
- for (m = mixers; m != NULL; m = m->next) {
- struct oss_mixerinfo *mi = (struct oss_mixerinfo *) m->data;
-
- GST_LOG_OBJECT (obj, "mixer device: '%s'", mi->devnode);
- devices = g_list_prepend (devices, g_strdup (mi->devnode));
- g_free (m->data);
- }
- g_list_free (mixers);
- mixers = NULL;
-
- return g_list_reverse (devices);
-}
-
-static GList *
-gst_oss4_property_probe_get_audio_devices (GstObject * obj, int fd,
- struct oss_sysinfo *si, int cap_mask)
-{
- GList *devices = NULL;
- int i;
-
- GST_LOG_OBJECT (obj, "%d audio/dsp devices", si->numaudios);
-
- for (i = 0; i < si->numaudios; ++i) {
- struct oss_audioinfo ai = { 0, };
-
- ai.dev = i;
- if (ioctl (fd, SNDCTL_AUDIOINFO, &ai) == -1) {
- GST_DEBUG_OBJECT (obj, "AUDIOINFO ioctl for device %d failed", i);
- continue;
- }
-
- if ((ai.caps & cap_mask) == 0) {
- GST_DEBUG_OBJECT (obj, "audio device %d is not an %s device", i,
- (cap_mask == PCM_CAP_OUTPUT) ? "output" : "input");
- continue;
- }
-
- if (!ai.enabled) {
- GST_DEBUG_OBJECT (obj, "audio device %d is not usable/enabled", i);
- continue;
- }
-
- GST_DEBUG_OBJECT (obj, "audio device %d looks ok: %s (\"%s\")", i,
- ai.devnode, ai.name);
-
- devices = g_list_prepend (devices, g_strdup (ai.devnode));
- }
-
- return g_list_reverse (devices);
-}
-
-static GValueArray *
-gst_oss4_property_probe_get_values (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec)
-{
- struct oss_sysinfo si = { {0,}, };
- GValueArray *array = NULL;
- GstObject *obj;
- GList *devices, *l;
- int cap_mask, fd = -1;
-
- if (!g_str_equal (pspec->name, "device")) {
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- return NULL;
- }
-
- obj = GST_OBJECT (probe);
-
- GST_OBJECT_LOCK (obj);
-
- /* figure out whether the element is a source or sink */
- if (GST_IS_OSS4_SINK (probe)) {
- GST_DEBUG_OBJECT (probe, "probing available output devices");
- cap_mask = PCM_CAP_OUTPUT;
- fd = GST_OSS4_SINK (probe)->fd;
- } else if (GST_IS_OSS4_SOURCE (probe)) {
- GST_DEBUG_OBJECT (probe, "probing available input devices");
- cap_mask = PCM_CAP_INPUT;
- fd = GST_OSS4_SOURCE (probe)->fd;
- } else if (GST_IS_OSS4_MIXER (probe)) {
- fd = GST_OSS4_MIXER (probe)->fd;
- cap_mask = 0;
- } else {
- GST_OBJECT_UNLOCK (obj);
- g_return_val_if_reached (NULL);
- }
-
- /* copy fd if it's open, so we can just unconditionally close() later */
- if (fd != -1)
- fd = dup (fd);
-
- /* this will also catch the unlikely case where the above dup() failed */
- if (fd == -1) {
- fd = open ("/dev/mixer", O_RDONLY | O_NONBLOCK, 0);
- if (fd < 0)
- goto open_failed;
- else if (!gst_oss4_audio_check_version (GST_OBJECT (probe), fd))
- goto legacy_oss;
- }
-
- if (ioctl (fd, SNDCTL_SYSINFO, &si) == -1)
- goto no_sysinfo;
-
- if (cap_mask != 0) {
- devices =
- gst_oss4_property_probe_get_audio_devices (obj, fd, &si, cap_mask);
- } else {
- devices = gst_oss4_property_probe_get_mixer_devices (obj, fd, &si);
- }
-
- if (devices == NULL) {
- GST_DEBUG_OBJECT (obj, "No devices found");
- goto done;
- }
-
- array = g_value_array_new (1);
-
- for (l = devices; l != NULL; l = l->next) {
- GValue val = { 0, };
-
- g_value_init (&val, G_TYPE_STRING);
- g_value_take_string (&val, (gchar *) l->data);
- l->data = NULL;
- g_value_array_append (array, &val);
- g_value_unset (&val);
- }
-
- GST_OBJECT_UNLOCK (obj);
-
- g_list_free (devices);
-
-done:
-
- close (fd);
-
- return array;
-
-/* ERRORS */
-open_failed:
- {
- GST_OBJECT_UNLOCK (GST_OBJECT (probe));
- GST_WARNING_OBJECT (probe, "Can't open file descriptor to probe "
- "available devices: %s", g_strerror (errno));
- return NULL;
- }
-legacy_oss:
- {
- close (fd);
- GST_OBJECT_UNLOCK (GST_OBJECT (probe));
- GST_DEBUG_OBJECT (probe, "Legacy OSS (ie. not OSSv4), not supported");
- return NULL;
- }
-no_sysinfo:
- {
- close (fd);
- GST_OBJECT_UNLOCK (GST_OBJECT (probe));
- GST_WARNING_OBJECT (probe, "Can't open file descriptor to probe "
- "available devices: %s", g_strerror (errno));
- return NULL;
- }
-}
-
-static void
-gst_oss4_property_probe_interface_init (GstPropertyProbeInterface * iface)
-{
- iface->get_properties = gst_oss4_property_probe_get_properties;
- iface->probe_property = gst_oss4_property_probe_probe_property;
- iface->needs_probe = gst_oss4_property_probe_needs_probe;
- iface->get_values = gst_oss4_property_probe_get_values;
-}
-
-void
-gst_oss4_add_property_probe_interface (GType type)
-{
- static const GInterfaceInfo probe_iface_info = {
- (GInterfaceInitFunc) gst_oss4_property_probe_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE,
- &probe_iface_info);
-}
diff --git a/wearable/sys/oss4/oss4-property-probe.h b/wearable/sys/oss4/oss4-property-probe.h
deleted file mode 100644
index 707af02..0000000
--- a/wearable/sys/oss4/oss4-property-probe.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* GStreamer OSS4 audio property probe interface implementation
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_PROPERTY_PROBE_H
-#define GST_OSS4_PROPERTY_PROBE_H
-
-#include <gst/interfaces/propertyprobe.h>
-
-void gst_oss4_add_property_probe_interface (GType type);
-
-gboolean gst_oss4_property_probe_find_device_name (GstObject * obj,
- int fd,
- const gchar * device_handle,
- gchar ** device_name);
-
-gboolean gst_oss4_property_probe_find_device_name_nofd (GstObject * obj,
- const gchar * device_handle,
- gchar ** device_name);
-
-#endif /* GST_OSS4_PROPERTY_PROBE_H */
-
-
diff --git a/wearable/sys/oss4/oss4-sink.c b/wearable/sys/oss4/oss4-sink.c
deleted file mode 100644
index 54e95b9..0000000
--- a/wearable/sys/oss4/oss4-sink.c
+++ /dev/null
@@ -1,696 +0,0 @@
-/* GStreamer OSS4 audio sink
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/**
- * SECTION:element-oss4sink
- *
- * This element lets you output sound using the Open Sound System (OSS)
- * version 4.
- *
- * Note that you should almost always use generic audio conversion elements
- * like audioconvert and audioresample in front of an audiosink to make sure
- * your pipeline works under all circumstances (those conversion elements will
- * act in passthrough-mode if no conversion is necessary).
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v audiotestsrc ! audioconvert ! volume volume=0.1 ! oss4sink
- * ]| will output a sine wave (continuous beep sound) to your sound card (with
- * a very low volume as precaution).
- * |[
- * gst-launch -v filesrc location=music.ogg ! decodebin ! audioconvert ! audioresample ! oss4sink
- * ]| will play an Ogg/Vorbis audio file and output it using the Open Sound System
- * version 4.
- * </refsect2>
- *
- * Since: 0.10.7
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <gst/gst-i18n-plugin.h>
-#include <gst/interfaces/streamvolume.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-audio.h"
-#include "oss4-sink.h"
-#include "oss4-property-probe.h"
-#include "oss4-soundcard.h"
-
-GST_DEBUG_CATEGORY_EXTERN (oss4sink_debug);
-#define GST_CAT_DEFAULT oss4sink_debug
-
-static void gst_oss4_sink_init_interfaces (GType type);
-static void gst_oss4_sink_dispose (GObject * object);
-static void gst_oss4_sink_finalize (GObject * object);
-
-static void gst_oss4_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_oss4_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_oss4_sink_getcaps (GstBaseSink * bsink);
-static gboolean gst_oss4_sink_open (GstAudioSink * asink,
- gboolean silent_errors);
-static gboolean gst_oss4_sink_open_func (GstAudioSink * asink);
-static gboolean gst_oss4_sink_close (GstAudioSink * asink);
-static gboolean gst_oss4_sink_prepare (GstAudioSink * asink,
- GstRingBufferSpec * spec);
-static gboolean gst_oss4_sink_unprepare (GstAudioSink * asink);
-static guint gst_oss4_sink_write (GstAudioSink * asink, gpointer data,
- guint length);
-static guint gst_oss4_sink_delay (GstAudioSink * asink);
-static void gst_oss4_sink_reset (GstAudioSink * asink);
-
-#define DEFAULT_DEVICE NULL
-#define DEFAULT_DEVICE_NAME NULL
-#define DEFAULT_MUTE FALSE
-#define DEFAULT_VOLUME 1.0
-#define MAX_VOLUME 10.0
-
-enum
-{
- PROP_0,
- PROP_DEVICE,
- PROP_DEVICE_NAME,
- PROP_VOLUME,
- PROP_MUTE,
- PROP_LAST
-};
-
-GST_BOILERPLATE_FULL (GstOss4Sink, gst_oss4_sink, GstAudioSink,
- GST_TYPE_AUDIO_SINK, gst_oss4_sink_init_interfaces);
-
-static void
-gst_oss4_sink_dispose (GObject * object)
-{
- GstOss4Sink *osssink = GST_OSS4_SINK (object);
-
- if (osssink->probed_caps) {
- gst_caps_unref (osssink->probed_caps);
- osssink->probed_caps = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_oss4_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- GstPadTemplate *templ;
-
- gst_element_class_set_details_simple (element_class,
- "OSS v4 Audio Sink", "Sink/Audio",
- "Output to a sound card via OSS version 4",
- "Tim-Philipp Müller <tim centricular net>");
-
- templ = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- gst_oss4_audio_get_template_caps ());
- gst_element_class_add_pad_template (element_class, templ);
- gst_object_unref (templ);
-}
-
-static void
-gst_oss4_sink_class_init (GstOss4SinkClass * klass)
-{
- GstAudioSinkClass *audiosink_class = (GstAudioSinkClass *) klass;
- GstBaseSinkClass *basesink_class = (GstBaseSinkClass *) klass;
- GObjectClass *gobject_class = (GObjectClass *) klass;
-
- gobject_class->dispose = gst_oss4_sink_dispose;
- gobject_class->finalize = gst_oss4_sink_finalize;
- gobject_class->get_property = gst_oss4_sink_get_property;
- gobject_class->set_property = gst_oss4_sink_set_property;
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS4 device (e.g. /dev/oss/hdaudio0/pcm0 or /dev/dspN) "
- "(NULL = use first available playback device)",
- DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class,
- PROP_VOLUME,
- g_param_spec_double ("volume", "Volume",
- "Linear volume of this stream, 1.0=100%", 0.0, MAX_VOLUME,
- DEFAULT_VOLUME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class,
- PROP_MUTE,
- g_param_spec_boolean ("mute", "Mute",
- "Mute state of this stream", DEFAULT_MUTE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_oss4_sink_getcaps);
-
- audiosink_class->open = GST_DEBUG_FUNCPTR (gst_oss4_sink_open_func);
- audiosink_class->close = GST_DEBUG_FUNCPTR (gst_oss4_sink_close);
- audiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_oss4_sink_prepare);
- audiosink_class->unprepare = GST_DEBUG_FUNCPTR (gst_oss4_sink_unprepare);
- audiosink_class->write = GST_DEBUG_FUNCPTR (gst_oss4_sink_write);
- audiosink_class->delay = GST_DEBUG_FUNCPTR (gst_oss4_sink_delay);
- audiosink_class->reset = GST_DEBUG_FUNCPTR (gst_oss4_sink_reset);
-}
-
-static void
-gst_oss4_sink_init (GstOss4Sink * osssink, GstOss4SinkClass * klass)
-{
- const gchar *device;
-
- device = g_getenv ("AUDIODEV");
- if (device == NULL)
- device = DEFAULT_DEVICE;
- osssink->device = g_strdup (device);
- osssink->fd = -1;
- osssink->bytes_per_sample = 0;
- osssink->probed_caps = NULL;
- osssink->device_name = NULL;
- osssink->mute_volume = 100 | (100 << 8);
-}
-
-static void
-gst_oss4_sink_finalize (GObject * object)
-{
- GstOss4Sink *osssink = GST_OSS4_SINK (object);
-
- g_free (osssink->device);
- osssink->device = NULL;
-
- g_list_free (osssink->property_probe_list);
- osssink->property_probe_list = NULL;
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_oss4_sink_set_volume (GstOss4Sink * oss, gdouble volume)
-{
- int ivol;
-
- volume = volume * 100.0;
- ivol = (int) volume | ((int) volume << 8);
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_SETPLAYVOL, &ivol) < 0) {
- GST_LOG_OBJECT (oss, "SETPLAYVOL failed");
- }
- GST_OBJECT_UNLOCK (oss);
-}
-
-static gdouble
-gst_oss4_sink_get_volume (GstOss4Sink * oss)
-{
- int ivol, lvol, rvol;
- gdouble dvol = DEFAULT_VOLUME;
-
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_GETPLAYVOL, &ivol) < 0) {
- GST_LOG_OBJECT (oss, "GETPLAYVOL failed");
- } else {
- /* Return the higher of the two volume channels, if different */
- lvol = ivol & 0xff;
- rvol = (ivol >> 8) & 0xff;
- dvol = MAX (lvol, rvol) / 100.0;
- }
- GST_OBJECT_UNLOCK (oss);
-
- return dvol;
-}
-
-static void
-gst_oss4_sink_set_mute (GstOss4Sink * oss, gboolean mute)
-{
- int ivol;
-
- if (mute) {
- /*
- * OSSv4 does not have a per-channel mute, so simulate by setting
- * the value to 0. Save the volume before doing a mute so we can
- * reset the value when the user un-mutes.
- */
- ivol = 0;
-
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_GETPLAYVOL, &oss->mute_volume) < 0) {
- GST_LOG_OBJECT (oss, "GETPLAYVOL failed");
- }
- if (ioctl (oss->fd, SNDCTL_DSP_SETPLAYVOL, &ivol) < 0) {
- GST_LOG_OBJECT (oss, "SETPLAYVOL failed");
- }
- GST_OBJECT_UNLOCK (oss);
- } else {
- /*
- * If the saved volume is 0, then reset it to 100. Otherwise the mute
- * can get stuck. This can happen, for example, due to rounding
- * errors in converting from the float to an integer.
- */
- if (oss->mute_volume == 0) {
- oss->mute_volume = 100 | (100 << 8);
- }
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_SETPLAYVOL, &oss->mute_volume) < 0) {
- GST_LOG_OBJECT (oss, "SETPLAYVOL failed");
- }
- GST_OBJECT_UNLOCK (oss);
- }
-}
-
-static gboolean
-gst_oss4_sink_get_mute (GstOss4Sink * oss)
-{
- int ivol, lvol, rvol;
-
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_GETPLAYVOL, &ivol) < 0) {
- GST_LOG_OBJECT (oss, "GETPLAYVOL failed");
- lvol = rvol = 100;
- } else {
- lvol = ivol & 0xff;
- rvol = (ivol >> 8) & 0xff;
- }
- GST_OBJECT_UNLOCK (oss);
-
- return (lvol == 0 && rvol == 0);
-}
-
-static void
-gst_oss4_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOss4Sink *oss = GST_OSS4_SINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (oss);
- if (oss->fd == -1) {
- g_free (oss->device);
- oss->device = g_value_dup_string (value);
- if (oss->probed_caps) {
- gst_caps_unref (oss->probed_caps);
- oss->probed_caps = NULL;
- }
- g_free (oss->device_name);
- oss->device_name = NULL;
- } else {
- g_warning ("%s: can't change \"device\" property while audio sink "
- "is open", GST_OBJECT_NAME (oss));
- }
- GST_OBJECT_UNLOCK (oss);
- break;
- case PROP_VOLUME:
- gst_oss4_sink_set_volume (oss, g_value_get_double (value));
- break;
- case PROP_MUTE:
- gst_oss4_sink_set_mute (oss, g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss4_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOss4Sink *oss = GST_OSS4_SINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (oss);
- g_value_set_string (value, oss->device);
- GST_OBJECT_UNLOCK (oss);
- break;
- case PROP_DEVICE_NAME:
- GST_OBJECT_LOCK (oss);
- if (oss->fd == -1 && oss->device != NULL) {
- /* If device is set, try to retrieve the name even if we're not open */
- if (gst_oss4_sink_open (GST_AUDIO_SINK (oss), TRUE)) {
- g_value_set_string (value, oss->device_name);
- gst_oss4_sink_close (GST_AUDIO_SINK (oss));
- } else {
- gchar *name = NULL;
-
- gst_oss4_property_probe_find_device_name_nofd (GST_OBJECT (oss),
- oss->device, &name);
- g_value_set_string (value, name);
- g_free (name);
- }
- } else {
- g_value_set_string (value, oss->device_name);
- }
- GST_OBJECT_UNLOCK (oss);
- break;
- case PROP_VOLUME:
- g_value_set_double (value, gst_oss4_sink_get_volume (oss));
- break;
- case PROP_MUTE:
- g_value_set_boolean (value, gst_oss4_sink_get_mute (oss));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_oss4_sink_getcaps (GstBaseSink * bsink)
-{
- GstOss4Sink *oss;
- GstCaps *caps;
-
- oss = GST_OSS4_SINK (bsink);
-
- if (oss->fd == -1) {
- caps = gst_oss4_audio_get_template_caps ();
- } else if (oss->probed_caps) {
- caps = gst_caps_copy (oss->probed_caps);
- } else {
- caps = gst_oss4_audio_probe_caps (GST_OBJECT (oss), oss->fd);
- if (caps != NULL && !gst_caps_is_empty (caps)) {
- oss->probed_caps = gst_caps_copy (caps);
- }
- }
-
- return caps;
-}
-
-/* note: we must not take the object lock here unless we fix up get_property */
-static gboolean
-gst_oss4_sink_open (GstAudioSink * asink, gboolean silent_errors)
-{
- GstOss4Sink *oss;
- gchar *device;
- int mode;
-
- oss = GST_OSS4_SINK (asink);
-
- if (oss->device)
- device = g_strdup (oss->device);
- else
- device = gst_oss4_audio_find_device (GST_OBJECT_CAST (oss));
-
- /* desperate times, desperate measures */
- if (device == NULL)
- device = g_strdup ("/dev/dsp0");
-
- GST_INFO_OBJECT (oss, "Trying to open OSS4 device '%s'", device);
-
- /* we open in non-blocking mode even if we don't really want to do writes
- * non-blocking because we can't be sure that this is really a genuine
- * OSS4 device with well-behaved drivers etc. We really don't want to
- * hang forever under any circumstances. */
- oss->fd = open (device, O_WRONLY | O_NONBLOCK, 0);
- if (oss->fd == -1) {
- switch (errno) {
- case EBUSY:
- goto busy;
- case EACCES:
- goto no_permission;
- default:
- goto open_failed;
- }
- }
-
- GST_INFO_OBJECT (oss, "Opened device '%s'", device);
-
- /* Make sure it's OSS4. If it's old OSS, let osssink handle it */
- if (!gst_oss4_audio_check_version (GST_OBJECT_CAST (oss), oss->fd))
- goto legacy_oss;
-
- /* now remove the non-blocking flag. */
- mode = fcntl (oss->fd, F_GETFL);
- mode &= ~O_NONBLOCK;
- if (fcntl (oss->fd, F_SETFL, mode) < 0) {
- /* some drivers do no support unsetting the non-blocking flag, try to
- * close/open the device then. This is racy but we error out properly. */
- GST_WARNING_OBJECT (oss, "failed to unset O_NONBLOCK (buggy driver?), "
- "will try to re-open device now");
- gst_oss4_sink_close (asink);
- if ((oss->fd = open (device, O_WRONLY, 0)) == -1)
- goto non_block;
- }
-
- oss->open_device = device;
-
- /* not using ENGINEINFO here because it sometimes returns a different and
- * less useful name than AUDIOINFO for the same device */
- if (!gst_oss4_property_probe_find_device_name (GST_OBJECT (oss), oss->fd,
- oss->open_device, &oss->device_name)) {
- oss->device_name = NULL;
- }
-
- /* list output routings, for informational purposes only so far */
- {
- oss_mixer_enuminfo routings = { 0, };
- guint i;
-
- if (ioctl (oss->fd, SNDCTL_DSP_GET_PLAYTGT_NAMES, &routings) != -1) {
- GST_LOG_OBJECT (oss, "%u output routings (static list: %d)",
- routings.nvalues, !!(routings.version == 0));
- for (i = 0; i < routings.nvalues; ++i) {
- GST_LOG_OBJECT (oss, " output routing %d: %s", i,
- &routings.strings[routings.strindex[i]]);
- }
- }
- }
-
- return TRUE;
-
- /* ERRORS */
-busy:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
- (_("Could not open audio device for playback. "
- "Device is being used by another application.")), (NULL));
- }
- g_free (device);
- return FALSE;
- }
-no_permission:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open audio device for playback. "
- "You don't have permission to open the device.")),
- GST_ERROR_SYSTEM);
- }
- g_free (device);
- return FALSE;
- }
-open_failed:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open audio device for playback.")), GST_ERROR_SYSTEM);
- }
- g_free (device);
- return FALSE;
- }
-legacy_oss:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_WRITE,
- (_("Could not open audio device for playback. "
- "This version of the Open Sound System is not supported by this "
- "element.")), ("Try the 'osssink' element instead"));
- }
- gst_oss4_sink_close (asink);
- g_free (device);
- return FALSE;
- }
-non_block:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
- ("Unable to set device %s into non-blocking mode: %s",
- oss->device, g_strerror (errno)));
- }
- g_free (device);
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss4_sink_open_func (GstAudioSink * asink)
-{
- return gst_oss4_sink_open (asink, FALSE);
-}
-
-static gboolean
-gst_oss4_sink_close (GstAudioSink * asink)
-{
- GstOss4Sink *oss = GST_OSS4_SINK (asink);
-
- if (oss->fd != -1) {
- GST_DEBUG_OBJECT (oss, "closing device");
- close (oss->fd);
- oss->fd = -1;
- }
-
- oss->bytes_per_sample = 0;
- /* we keep the probed caps cached, at least until the device changes */
-
- g_free (oss->open_device);
- oss->open_device = NULL;
-
- g_free (oss->device_name);
- oss->device_name = NULL;
-
- if (oss->probed_caps) {
- gst_caps_unref (oss->probed_caps);
- oss->probed_caps = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_oss4_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
-{
- GstOss4Sink *oss;
-
- oss = GST_OSS4_SINK (asink);
-
- if (!gst_oss4_audio_set_format (GST_OBJECT_CAST (oss), oss->fd, spec)) {
- GST_WARNING_OBJECT (oss, "Couldn't set requested format %" GST_PTR_FORMAT,
- spec->caps);
- return FALSE;
- }
-
- oss->bytes_per_sample = spec->bytes_per_sample;
- return TRUE;
-}
-
-static gboolean
-gst_oss4_sink_unprepare (GstAudioSink * asink)
-{
- /* could do a SNDCTL_DSP_HALT, but the OSS manual recommends a close/open,
- * since HALT won't properly reset some devices, apparently */
-
- if (!gst_oss4_sink_close (asink))
- goto couldnt_close;
-
- if (!gst_oss4_sink_open_func (asink))
- goto couldnt_reopen;
-
- return TRUE;
-
- /* ERRORS */
-couldnt_close:
- {
- GST_DEBUG_OBJECT (asink, "Couldn't close the audio device");
- return FALSE;
- }
-couldnt_reopen:
- {
- GST_DEBUG_OBJECT (asink, "Couldn't reopen the audio device");
- return FALSE;
- }
-}
-
-static guint
-gst_oss4_sink_write (GstAudioSink * asink, gpointer data, guint length)
-{
- GstOss4Sink *oss;
- int n;
-
- oss = GST_OSS4_SINK_CAST (asink);
-
- n = write (oss->fd, data, length);
- GST_LOG_OBJECT (asink, "wrote %d/%d samples, %d bytes",
- n / oss->bytes_per_sample, length / oss->bytes_per_sample, n);
-
- if (G_UNLIKELY (n < 0)) {
- switch (errno) {
- case ENOTSUP:
- case EACCES:{
- /* This is the most likely cause, I think */
- GST_ELEMENT_ERROR (asink, RESOURCE, WRITE,
- (_("Playback is not supported by this audio device.")),
- ("write: %s (device: %s) (maybe this is an input-only device?)",
- g_strerror (errno), oss->open_device));
- break;
- }
- default:{
- GST_ELEMENT_ERROR (asink, RESOURCE, WRITE,
- (_("Audio playback error.")),
- ("write: %s (device: %s)", g_strerror (errno), oss->open_device));
- break;
- }
- }
- }
-
- return n;
-}
-
-static guint
-gst_oss4_sink_delay (GstAudioSink * asink)
-{
- GstOss4Sink *oss;
- gint delay = -1;
-
- oss = GST_OSS4_SINK_CAST (asink);
-
- GST_OBJECT_LOCK (oss);
- if (ioctl (oss->fd, SNDCTL_DSP_GETODELAY, &delay) < 0 || delay < 0) {
- GST_LOG_OBJECT (oss, "GETODELAY failed");
- }
- GST_OBJECT_UNLOCK (oss);
-
- if (G_UNLIKELY (delay < 0)) /* error case */
- return 0;
-
- return delay / oss->bytes_per_sample;
-}
-
-static void
-gst_oss4_sink_reset (GstAudioSink * asink)
-{
- /* There's nothing we can do here really: OSS can't handle access to the
- * same device/fd from multiple threads and might deadlock or blow up in
- * other ways if we try an ioctl SNDCTL_DSP_HALT or similar */
-}
-
-static void
-gst_oss4_sink_init_interfaces (GType type)
-{
- static const GInterfaceInfo svol_iface_info = {
- NULL, NULL, NULL
- };
-
- g_type_add_interface_static (type, GST_TYPE_STREAM_VOLUME, &svol_iface_info);
-
- gst_oss4_add_property_probe_interface (type);
-}
diff --git a/wearable/sys/oss4/oss4-sink.h b/wearable/sys/oss4/oss4-sink.h
deleted file mode 100644
index b1489a7..0000000
--- a/wearable/sys/oss4/oss4-sink.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* GStreamer OSS4 audio sink
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_SINK_H
-#define GST_OSS4_SINK_H
-
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosink.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS4_SINK (gst_oss4_sink_get_type())
-#define GST_OSS4_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_SINK,GstOss4Sink))
-#define GST_OSS4_SINK_CAST(obj) ((GstOss4Sink *)(obj))
-#define GST_OSS4_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_SINK,GstOss4SinkClass))
-#define GST_IS_OSS4_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_SINK))
-#define GST_IS_OSS4_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_SINK))
-
-typedef struct _GstOss4Sink GstOss4Sink;
-typedef struct _GstOss4SinkClass GstOss4SinkClass;
-
-struct _GstOss4Sink {
- GstAudioSink audio_sink;
-
- gchar * device; /* NULL if none was set */
- gchar * open_device; /* the device we opened */
- gchar * device_name; /* set if the device is open */
- gint fd; /* -1 if not open */
- gint bytes_per_sample;
- gint mute_volume;
-
- GstCaps * probed_caps;
-
- GList * property_probe_list;
-};
-
-struct _GstOss4SinkClass {
- GstAudioSinkClass audio_sink_class;
-};
-
-GType gst_oss4_sink_get_type (void);
-
-G_END_DECLS
-
-#endif /* GST_OSS4_SINK_H */
-
-
diff --git a/wearable/sys/oss4/oss4-soundcard.h b/wearable/sys/oss4/oss4-soundcard.h
deleted file mode 100644
index 8b12489..0000000
--- a/wearable/sys/oss4/oss4-soundcard.h
+++ /dev/null
@@ -1,2067 +0,0 @@
-/*
- * Purpose: The C/C++ header file that defines the OSS API.
- * Description:
- * This header file contains all the declarations required to compile OSS
- * programs. The latest version is always installed together with OSS
- * use of the latest version is strongly recommended.
- *
- * {!notice This header file contains many obsolete definitions
- * (for compatibility with older applications that still ned them).
- * Do not use this file as a reference manual of OSS.
- * Please check the OSS Programmer's guide for descriptions
- * of the supported API details (http://manuals.opensound.com/developer).}
- */
-
-#ifndef SOUNDCARD_H
-#define SOUNDCARD_H
-
-#define COPYING40 Copyright (C) 4Front Technologies 2000-2006. Released under the BSD license.
-
-#if defined(__cplusplus)
-#define EXTERNC extern "C"
-#else
-#define EXTERNC extern
-#endif /* EXTERN_C_WRAPPERS */
-
-#define OSS_VERSION 0x040090 // Pre 4.1
-
-#define SOUND_VERSION OSS_VERSION
-#define OPEN_SOUND_SYSTEM
-
-#if defined(__hpux) && !defined(_HPUX_SOURCE)
-# error "-D_HPUX_SOURCE must be used when compiling OSS applications"
-#endif
-
-#ifdef __hpux
-#include <sys/ioctl.h>
-#endif
-
-#ifdef linux
-/* In Linux we need to be prepared for cross compiling */
-#include <linux/ioctl.h>
-#else
-# ifdef __FreeBSD__
-# include <sys/ioccom.h>
-# else
-# include <sys/ioctl.h>
-# endif
-#endif
-
-#ifndef __SIOWR
-#if defined(__hpux) || (defined(_IOWR) && (defined(_AIX) || (!defined(sun) && !defined(sparc) && !defined(__INCioctlh) && !defined(__Lynx__))))
-
-/*
- * Make sure the ioctl macros are compatible with the ones already used
- * by this operating system.
- */
-#define SIOCPARM_MASK IOCPARM_MASK
-#define SIOC_VOID IOC_VOID
-#define SIOC_OUT IOC_OUT
-#define SIOC_IN IOC_IN
-#define SIOC_INOUT IOC_INOUT
-#define __SIOC_SIZE _IOC_SIZE
-#define __SIOC_DIR _IOC_DIR
-#define __SIOC_NONE _IOC_NONE
-#define __SIOC_READ _IOC_READ
-#define __SIOC_WRITE _IOC_WRITE
-#define __SIO _IO
-#define __SIOR _IOR
-#define __SIOW _IOW
-#define __SIOWR _IOWR
-#else
-
-/* #define SIOCTYPE (0xff<<8) */
-#define SIOCPARM_MASK 0x1fff /* parameters must be < 8192 bytes */
-#define SIOC_VOID 0x00000000 /* no parameters */
-#define SIOC_OUT 0x20000000 /* copy out parameters */
-#define SIOC_IN 0x40000000 /* copy in parameters */
-#define SIOC_INOUT (SIOC_IN|SIOC_OUT)
-
-#define __SIO(x,y) ((int)(SIOC_VOID|(x<<8)|y))
-#define __SIOR(x,y,t) ((int)(SIOC_OUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-#define __SIOW(x,y,t) ((int)(SIOC_IN|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-#define __SIOWR(x,y,t) ((int)(SIOC_INOUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-#define __SIOC_SIZE(x) ((x>>16)&SIOCPARM_MASK)
-#define __SIOC_DIR(x) (x & 0xf0000000)
-#define __SIOC_NONE SIOC_VOID
-#define __SIOC_READ SIOC_OUT
-#define __SIOC_WRITE SIOC_IN
-# endif /* _IOWR */
-#endif /* !__SIOWR */
-
-#define OSS_LONGNAME_SIZE 64
-#define OSS_LABEL_SIZE 16
-#define OSS_DEVNODE_SIZE 32
-typedef char oss_longname_t[OSS_LONGNAME_SIZE];
-typedef char oss_label_t[OSS_LABEL_SIZE];
-typedef char oss_devnode_t[OSS_DEVNODE_SIZE];
-
-#ifndef DISABLE_SEQUENCER
-/*
- ****************************************************************************
- * IOCTL Commands for /dev/sequencer and /dev/music (AKA /dev/sequencer2)
- *
- * Note that this interface is obsolete and no longer developed. New
- * applications should use /dev/midi instead.
- ****************************************************************************/
-#define SNDCTL_SEQ_RESET __SIO ('Q', 0)
-#define SNDCTL_SEQ_SYNC __SIO ('Q', 1)
-#define SNDCTL_SYNTH_INFO __SIOWR('Q', 2, struct synth_info)
-#define SNDCTL_SEQ_CTRLRATE __SIOWR('Q', 3, int) /* Set/get timer resolution (HZ) */
-#define SNDCTL_SEQ_GETOUTCOUNT __SIOR ('Q', 4, int)
-#define SNDCTL_SEQ_GETINCOUNT __SIOR ('Q', 5, int)
-#define SNDCTL_SEQ_PERCMODE __SIOW ('Q', 6, int)
-#define SNDCTL_FM_LOAD_INSTR __SIOW ('Q', 7, struct sbi_instrument) /* Obsolete. Don't use!!!!!! */
-#define SNDCTL_SEQ_TESTMIDI __SIOW ('Q', 8, int)
-#define SNDCTL_SEQ_RESETSAMPLES __SIOW ('Q', 9, int)
-#define SNDCTL_SEQ_NRSYNTHS __SIOR ('Q',10, int)
-#define SNDCTL_SEQ_NRMIDIS __SIOR ('Q',11, int)
-#define SNDCTL_MIDI_INFO __SIOWR('Q',12, struct midi_info) /* OBSOLETE - use SNDCTL_MIDIINFO instead */
-#define SNDCTL_SEQ_THRESHOLD __SIOW ('Q',13, int)
-#define SNDCTL_SYNTH_MEMAVL __SIOWR('Q',14, int) /* in=dev#, out=memsize */
-#define SNDCTL_FM_4OP_ENABLE __SIOW ('Q',15, int) /* in=dev# */
-#define SNDCTL_SEQ_PANIC __SIO ('Q',17)
-#define SNDCTL_SEQ_OUTOFBAND __SIOW ('Q',18, struct seq_event_rec)
-#define SNDCTL_SEQ_GETTIME __SIOR ('Q',19, int)
-#define SNDCTL_SYNTH_ID __SIOWR('Q',20, struct synth_info)
-#define SNDCTL_SYNTH_CONTROL __SIOWR('Q',21, struct synth_control)
-#define SNDCTL_SYNTH_REMOVESAMPLE __SIOWR('Q',22, struct remove_sample) /* Reserved for future use */
-#define SNDCTL_SEQ_TIMING_ENABLE __SIO ('Q', 23) /* Enable incoming MIDI timing messages */
-#define SNDCTL_SEQ_ACTSENSE_ENABLE __SIO ('Q', 24) /* Enable incoming active sensing messages */
-#define SNDCTL_SEQ_RT_ENABLE __SIO ('Q', 25) /* Enable other incoming realtime messages */
-
-typedef struct synth_control
-{
- int devno; /* Synthesizer # */
- char data[4000]; /* Device spesific command/data record */
-} synth_control;
-
-typedef struct remove_sample
-{
- int devno; /* Synthesizer # */
- int bankno; /* MIDI bank # (0=General MIDI) */
- int instrno; /* MIDI instrument number */
-} remove_sample;
-
-typedef struct seq_event_rec
-{
- unsigned char arr[8];
-} seq_event_rec;
-
-#define SNDCTL_TMR_TIMEBASE __SIOWR('T', 1, int)
-#define SNDCTL_TMR_START __SIO ('T', 2)
-#define SNDCTL_TMR_STOP __SIO ('T', 3)
-#define SNDCTL_TMR_CONTINUE __SIO ('T', 4)
-#define SNDCTL_TMR_TEMPO __SIOWR('T', 5, int)
-#define SNDCTL_TMR_SOURCE __SIOWR('T', 6, int)
-# define TMR_INTERNAL 0x00000001
-# define TMR_EXTERNAL 0x00000002
-# define TMR_MODE_MIDI 0x00000010
-# define TMR_MODE_FSK 0x00000020
-# define TMR_MODE_CLS 0x00000040
-# define TMR_MODE_SMPTE 0x00000080
-#define SNDCTL_TMR_METRONOME __SIOW ('T', 7, int)
-#define SNDCTL_TMR_SELECT __SIOW ('T', 8, int)
-
-/*
- * Sample loading mechanism for internal synthesizers (/dev/sequencer)
- * (for the .PAT format).
- */
-
-struct patch_info
-{
- unsigned short key; /* Use WAVE_PATCH here */
-#define WAVE_PATCH _PATCHKEY(0x04)
-#define GUS_PATCH WAVE_PATCH
-#define WAVEFRONT_PATCH _PATCHKEY(0x06)
-
- short device_no; /* Synthesizer number */
- short instr_no; /* Midi pgm# */
-
- unsigned int mode;
-/*
- * The least significant byte has the same format than the GUS .PAT
- * files
- */
-#define WAVE_16_BITS 0x01 /* bit 0 = 8 or 16 bit wave data. */
-#define WAVE_UNSIGNED 0x02 /* bit 1 = Signed - Unsigned data. */
-#define WAVE_LOOPING 0x04 /* bit 2 = looping enabled-1. */
-#define WAVE_BIDIR_LOOP 0x08 /* bit 3 = Set is bidirectional looping. */
-#define WAVE_LOOP_BACK 0x10 /* bit 4 = Set is looping backward. */
-#define WAVE_SUSTAIN_ON 0x20 /* bit 5 = Turn sustaining on. (Env. pts. 3) */
-#define WAVE_ENVELOPES 0x40 /* bit 6 = Enable envelopes - 1 */
-#define WAVE_FAST_RELEASE 0x80 /* bit 7 = Shut off immediately after note off */
- /* (use the env_rate/env_offs fields). */
-/* Linux specific bits */
-#define WAVE_VIBRATO 0x00010000 /* The vibrato info is valid */
-#define WAVE_TREMOLO 0x00020000 /* The tremolo info is valid */
-#define WAVE_SCALE 0x00040000 /* The scaling info is valid */
-#define WAVE_FRACTIONS 0x00080000 /* Fraction information is valid */
-/* Reserved bits */
-#define WAVE_ROM 0x40000000 /* For future use */
-#define WAVE_MULAW 0x20000000 /* For future use */
-/* Other bits must be zeroed */
-
- int len; /* Size of the wave data in bytes */
- int loop_start, loop_end; /* Byte offsets from the beginning */
-
-/*
- * The base_freq and base_note fields are used when computing the
- * playback speed for a note. The base_note defines the tone frequency
- * which is heard if the sample is played using the base_freq as the
- * playback speed.
- *
- * The low_note and high_note fields define the minimum and maximum note
- * frequencies for which this sample is valid. It is possible to define
- * more than one samples for an instrument number at the same time. The
- * low_note and high_note fields are used to select the most suitable one.
- *
- * The fields base_note, high_note and low_note should contain
- * the note frequency multiplied by 1000. For example value for the
- * middle A is 440*1000.
- */
-
- unsigned int base_freq;
- unsigned int base_note;
- unsigned int high_note;
- unsigned int low_note;
- int panning; /* -128=left, 127=right */
- int detuning;
-
- /* Envelope. Enabled by mode bit WAVE_ENVELOPES */
- unsigned char env_rate[6]; /* GUS HW ramping rate */
- unsigned char env_offset[6]; /* 255 == 100% */
-
- /*
- * The tremolo, vibrato and scale info are not supported yet.
- * Enable by setting the mode bits WAVE_TREMOLO, WAVE_VIBRATO or
- * WAVE_SCALE
- */
-
- unsigned char tremolo_sweep;
- unsigned char tremolo_rate;
- unsigned char tremolo_depth;
-
- unsigned char vibrato_sweep;
- unsigned char vibrato_rate;
- unsigned char vibrato_depth;
-
- int scale_frequency;
- unsigned int scale_factor; /* from 0 to 2048 or 0 to 2 */
-
- int volume;
- int fractions;
- int reserved1;
- int spare[2];
- char data[1]; /* The waveform data starts here */
-};
-
-struct sysex_info
-{
- short key; /* Use SYSEX_PATCH or MAUI_PATCH here */
-#define SYSEX_PATCH _PATCHKEY(0x05)
-#define MAUI_PATCH _PATCHKEY(0x06)
- short device_no; /* Synthesizer number */
- int len; /* Size of the sysex data in bytes */
- unsigned char data[1]; /* Sysex data starts here */
-};
-
-/*
- * /dev/sequencer input events.
- *
- * The data written to the /dev/sequencer is a stream of events. Events
- * are records of 4 or 8 bytes. The first byte defines the size.
- * Any number of events can be written with a write call. There
- * is a set of macros for sending these events. Use these macros if you
- * want to maximize portability of your program.
- *
- * Events SEQ_WAIT, SEQ_MIDIPUTC and SEQ_ECHO. Are also input events.
- * (All input events are currently 4 bytes long. Be prepared to support
- * 8 byte events also. If you receive any event having first byte >= 128,
- * it's a 8 byte event.
- *
- * The events are documented at the end of this file.
- *
- * Normal events (4 bytes)
- * There is also a 8 byte version of most of the 4 byte events. The
- * 8 byte one is recommended.
- *
- * NOTE! All 4 byte events are now obsolete. Applications should not write
- * them. However 4 byte events are still used as inputs from
- * /dev/sequencer (/dev/music uses only 8 byte ones).
- */
-#define SEQ_NOTEOFF 0
-#define SEQ_FMNOTEOFF SEQ_NOTEOFF /* Just old name */
-#define SEQ_NOTEON 1
-#define SEQ_FMNOTEON SEQ_NOTEON
-#define SEQ_WAIT TMR_WAIT_ABS
-#define SEQ_PGMCHANGE 3
-#define SEQ_FMPGMCHANGE SEQ_PGMCHANGE
-#define SEQ_SYNCTIMER TMR_START
-#define SEQ_MIDIPUTC 5
-#define SEQ_DRUMON 6 /*** OBSOLETE ***/
-#define SEQ_DRUMOFF 7 /*** OBSOLETE ***/
-#define SEQ_ECHO TMR_ECHO /* For synching programs with output */
-#define SEQ_AFTERTOUCH 9
-#define SEQ_CONTROLLER 10
-#define SEQ_BALANCE 11
-#define SEQ_VOLMODE 12
-
-/************************************
- * Midi controller numbers *
- ************************************/
-/*
- * Controllers 0 to 31 (0x00 to 0x1f) and
- * 32 to 63 (0x20 to 0x3f) are continuous
- * controllers.
- * In the MIDI 1.0 these controllers are sent using
- * two messages. Controller numbers 0 to 31 are used
- * to send the MSB and the controller numbers 32 to 63
- * are for the LSB. Note that just 7 bits are used in MIDI bytes.
- */
-
-#define CTL_BANK_SELECT 0x00
-#define CTL_MODWHEEL 0x01
-#define CTL_BREATH 0x02
-/* undefined 0x03 */
-#define CTL_FOOT 0x04
-#define CTL_PORTAMENTO_TIME 0x05
-#define CTL_DATA_ENTRY 0x06
-#define CTL_MAIN_VOLUME 0x07
-#define CTL_BALANCE 0x08
-/* undefined 0x09 */
-#define CTL_PAN 0x0a
-#define CTL_EXPRESSION 0x0b
-/* undefined 0x0c */
-/* undefined 0x0d */
-/* undefined 0x0e */
-/* undefined 0x0f */
-#define CTL_GENERAL_PURPOSE1 0x10
-#define CTL_GENERAL_PURPOSE2 0x11
-#define CTL_GENERAL_PURPOSE3 0x12
-#define CTL_GENERAL_PURPOSE4 0x13
-/* undefined 0x14 - 0x1f */
-
-/* undefined 0x20 */
-/* The controller numbers 0x21 to 0x3f are reserved for the */
-/* least significant bytes of the controllers 0x00 to 0x1f. */
-/* These controllers are not recognised by the driver. */
-
-/* Controllers 64 to 69 (0x40 to 0x45) are on/off switches. */
-/* 0=OFF and 127=ON (intermediate values are possible) */
-#define CTL_DAMPER_PEDAL 0x40
-#define CTL_SUSTAIN 0x40 /* Alias */
-#define CTL_HOLD 0x40 /* Alias */
-#define CTL_PORTAMENTO 0x41
-#define CTL_SOSTENUTO 0x42
-#define CTL_SOFT_PEDAL 0x43
-/* undefined 0x44 */
-#define CTL_HOLD2 0x45
-/* undefined 0x46 - 0x4f */
-
-#define CTL_GENERAL_PURPOSE5 0x50
-#define CTL_GENERAL_PURPOSE6 0x51
-#define CTL_GENERAL_PURPOSE7 0x52
-#define CTL_GENERAL_PURPOSE8 0x53
-/* undefined 0x54 - 0x5a */
-#define CTL_EXT_EFF_DEPTH 0x5b
-#define CTL_TREMOLO_DEPTH 0x5c
-#define CTL_CHORUS_DEPTH 0x5d
-#define CTL_DETUNE_DEPTH 0x5e
-#define CTL_CELESTE_DEPTH 0x5e /* Alias for the above one */
-#define CTL_PHASER_DEPTH 0x5f
-#define CTL_DATA_INCREMENT 0x60
-#define CTL_DATA_DECREMENT 0x61
-#define CTL_NONREG_PARM_NUM_LSB 0x62
-#define CTL_NONREG_PARM_NUM_MSB 0x63
-#define CTL_REGIST_PARM_NUM_LSB 0x64
-#define CTL_REGIST_PARM_NUM_MSB 0x65
-/* undefined 0x66 - 0x78 */
-/* reserved 0x79 - 0x7f */
-
-/* Pseudo controllers (not midi compatible) */
-#define CTRL_PITCH_BENDER 255
-#define CTRL_PITCH_BENDER_RANGE 254
-#define CTRL_EXPRESSION 253 /* Obsolete */
-#define CTRL_MAIN_VOLUME 252 /* Obsolete */
-
-/*
- * Volume mode defines how volumes are used
- */
-
-#define VOL_METHOD_ADAGIO 1
-#define VOL_METHOD_LINEAR 2
-
-/*
- * Note! SEQ_WAIT, SEQ_MIDIPUTC and SEQ_ECHO are used also as
- * input events.
- */
-
-/*
- * Event codes 0xf0 to 0xfc are reserved for future extensions.
- */
-
-#define SEQ_FULLSIZE 0xfd /* Long events */
-/*
- * SEQ_FULLSIZE events are used for loading patches/samples to the
- * synthesizer devices. These events are passed directly to the driver
- * of the associated synthesizer device. There is no limit to the size
- * of the extended events. These events are not queued but executed
- * immediately when the write() is called (execution can take several
- * seconds of time).
- *
- * When a SEQ_FULLSIZE message is written to the device, it must
- * be written using exactly one write() call. Other events cannot
- * be mixed to the same write.
- *
- * For FM synths (YM3812/OPL3) use struct sbi_instrument and write it to the
- * /dev/sequencer. Don't write other data together with the instrument structure
- * Set the key field of the structure to FM_PATCH. The device field is used to
- * route the patch to the corresponding device.
- *
- * For wave table use struct patch_info. Initialize the key field
- * to WAVE_PATCH.
- */
-#define SEQ_PRIVATE 0xfe /* Low level HW dependent events (8 bytes) */
-#define SEQ_EXTENDED 0xff /* Extended events (8 bytes) OBSOLETE */
-
-/*
- * Record for FM patches
- */
-
-typedef unsigned char sbi_instr_data[32];
-
-struct sbi_instrument
-{
- unsigned short key; /* FM_PATCH or OPL3_PATCH */
-#define FM_PATCH _PATCHKEY(0x01)
-#define OPL3_PATCH _PATCHKEY(0x03)
- short device; /* Synth# (0-4) */
- int channel; /* Program# to be initialized */
- sbi_instr_data operators; /* Register settings for operator cells (.SBI format) */
-};
-
-struct synth_info
-{ /* Read only */
- char name[30];
- int device; /* 0-N. INITIALIZE BEFORE CALLING */
- int synth_type;
-#define SYNTH_TYPE_FM 0
-#define SYNTH_TYPE_SAMPLE 1
-#define SYNTH_TYPE_MIDI 2 /* Midi interface */
-
- int synth_subtype;
-#define FM_TYPE_ADLIB 0x00
-#define FM_TYPE_OPL3 0x01
-#define MIDI_TYPE_MPU401 0x401
-
-#define SAMPLE_TYPE_BASIC 0x10
-#define SAMPLE_TYPE_GUS SAMPLE_TYPE_BASIC
-#define SAMPLE_TYPE_WAVEFRONT 0x11
-
- int perc_mode; /* No longer supported */
- int nr_voices;
- int nr_drums; /* Obsolete field */
- int instr_bank_size;
- unsigned int capabilities;
-#define SYNTH_CAP_PERCMODE 0x00000001 /* No longer used */
-#define SYNTH_CAP_OPL3 0x00000002 /* Set if OPL3 supported */
-#define SYNTH_CAP_INPUT 0x00000004 /* Input (MIDI) device */
- int dummies[19]; /* Reserve space */
-};
-
-struct sound_timer_info
-{
- char name[32];
- int caps;
-};
-
-struct midi_info /* OBSOLETE */
-{
- char name[30];
- int device; /* 0-N. INITIALIZE BEFORE CALLING */
- unsigned int capabilities; /* To be defined later */
- int dev_type;
- int dummies[18]; /* Reserve space */
-};
-
-/*
- * Level 2 event types for /dev/sequencer
- */
-
-/*
- * The 4 most significant bits of byte 0 specify the class of
- * the event:
- *
- * 0x8X = system level events,
- * 0x9X = device/port specific events, event[1] = device/port,
- * The last 4 bits give the subtype:
- * 0x02 = Channel event (event[3] = chn).
- * 0x01 = note event (event[4] = note).
- * (0x01 is not used alone but always with bit 0x02).
- * event[2] = MIDI message code (0x80=note off etc.)
- *
- */
-
-#define EV_SEQ_LOCAL 0x80
-#define EV_TIMING 0x81
-#define EV_CHN_COMMON 0x92
-#define EV_CHN_VOICE 0x93
-#define EV_SYSEX 0x94
-#define EV_SYSTEM 0x95 /* MIDI system and real time messages (input only) */
-/*
- * Event types 200 to 220 are reserved for application use.
- * These numbers will not be used by the driver.
- */
-
-/*
- * Events for event type EV_CHN_VOICE
- */
-
-#define MIDI_NOTEOFF 0x80
-#define MIDI_NOTEON 0x90
-#define MIDI_KEY_PRESSURE 0xA0
-
-/*
- * Events for event type EV_CHN_COMMON
- */
-
-#define MIDI_CTL_CHANGE 0xB0
-#define MIDI_PGM_CHANGE 0xC0
-#define MIDI_CHN_PRESSURE 0xD0
-#define MIDI_PITCH_BEND 0xE0
-
-#define MIDI_SYSTEM_PREFIX 0xF0
-
-/*
- * Timer event types
- */
-#define TMR_WAIT_REL 1 /* Time relative to the prev time */
-#define TMR_WAIT_ABS 2 /* Absolute time since TMR_START */
-#define TMR_STOP 3
-#define TMR_START 4
-#define TMR_CONTINUE 5
-#define TMR_TEMPO 6
-#define TMR_ECHO 8
-#define TMR_CLOCK 9 /* MIDI clock */
-#define TMR_SPP 10 /* Song position pointer */
-#define TMR_TIMESIG 11 /* Time signature */
-
-/*
- * Local event types
- */
-#define LOCL_STARTAUDIO 1
-#define LOCL_STARTAUDIO2 2
-#define LOCL_STARTAUDIO3 3
-#define LOCL_STARTAUDIO4 4
-
-#if (!defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL)) || defined(USE_SEQ_MACROS)
-/*
- * Some convenience macros to simplify programming of the
- * /dev/sequencer interface
- *
- * These macros define the API which should be used when possible.
- */
-#define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
-
-void seqbuf_dump (void); /* This function must be provided by programs */
-
-EXTERNC int OSS_init (int seqfd, int buflen);
-EXTERNC void OSS_seqbuf_dump (int fd, unsigned char *buf, int buflen);
-EXTERNC void OSS_seq_advbuf (int len, int fd, unsigned char *buf, int buflen);
-EXTERNC void OSS_seq_needbuf (int len, int fd, unsigned char *buf,
- int buflen);
-EXTERNC void OSS_patch_caching (int dev, int chn, int patch, int fd,
- unsigned char *buf, int buflen);
-EXTERNC void OSS_drum_caching (int dev, int chn, int patch, int fd,
- unsigned char *buf, int buflen);
-EXTERNC void OSS_write_patch (int fd, unsigned char *buf, int len);
-EXTERNC int OSS_write_patch2 (int fd, unsigned char *buf, int len);
-
-#define SEQ_PM_DEFINES int __foo_bar___
-#ifdef OSSLIB
-# define SEQ_USE_EXTBUF() \
- EXTERNC unsigned char *_seqbuf; \
- EXTERNC int _seqbuflen;EXTERNC int _seqbufptr
-# define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len
-# define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen)
-# define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen)
-# define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen)
-
-# define SEQ_LOAD_GMINSTR(dev, instr) \
- OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen)
-# define SEQ_LOAD_GMDRUM(dev, drum) \
- OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen)
-#else /* !OSSLIB */
-
-# define SEQ_LOAD_GMINSTR(dev, instr)
-# define SEQ_LOAD_GMDRUM(dev, drum)
-
-# define SEQ_USE_EXTBUF() \
- EXTERNC unsigned char _seqbuf[]; \
- EXTERNC int _seqbuflen;EXTERNC int _seqbufptr
-
-#ifndef USE_SIMPLE_MACROS
-/* Sample seqbuf_dump() implementation:
- *
- * SEQ_DEFINEBUF (2048); -- Defines a buffer for 2048 bytes
- *
- * int seqfd; -- The file descriptor for /dev/sequencer.
- *
- * void
- * seqbuf_dump ()
- * {
- * if (_seqbufptr)
- * if (write (seqfd, _seqbuf, _seqbufptr) == -1)
- * {
- * perror ("write /dev/sequencer");
- * exit (-1);
- * }
- * _seqbufptr = 0;
- * }
- */
-
-#define SEQ_DEFINEBUF(len) \
- unsigned char _seqbuf[len]; int _seqbuflen = len;int _seqbufptr = 0
-#define _SEQ_NEEDBUF(len) \
- if ((_seqbufptr+(len)) > _seqbuflen) seqbuf_dump()
-#define _SEQ_ADVBUF(len) _seqbufptr += len
-#define SEQ_DUMPBUF seqbuf_dump
-#else
-/*
- * This variation of the sequencer macros is used just to format one event
- * using fixed buffer.
- *
- * The program using the macro library must define the following macros before
- * using this library.
- *
- * #define _seqbuf name of the buffer (unsigned char[])
- * #define _SEQ_ADVBUF(len) If the applic needs to know the exact
- * size of the event, this macro can be used.
- * Otherwise this must be defined as empty.
- * #define _seqbufptr Define the name of index variable or 0 if
- * not required.
- */
-#define _SEQ_NEEDBUF(len) /* empty */
-#endif
-#endif /* !OSSLIB */
-
-#define SEQ_VOLUME_MODE(dev, mode) \
- {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr] = SEQ_EXTENDED;\
- _seqbuf[_seqbufptr+1] = SEQ_VOLMODE;\
- _seqbuf[_seqbufptr+2] = (dev);\
- _seqbuf[_seqbufptr+3] = (mode);\
- _seqbuf[_seqbufptr+4] = 0;\
- _seqbuf[_seqbufptr+5] = 0;\
- _seqbuf[_seqbufptr+6] = 0;\
- _seqbuf[_seqbufptr+7] = 0;\
- _SEQ_ADVBUF(8);}
-
-/*
- * Midi voice messages
- */
-
-#define _CHN_VOICE(dev, event, chn, note, parm) \
- {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr] = EV_CHN_VOICE;\
- _seqbuf[_seqbufptr+1] = (dev);\
- _seqbuf[_seqbufptr+2] = (event);\
- _seqbuf[_seqbufptr+3] = (chn);\
- _seqbuf[_seqbufptr+4] = (note);\
- _seqbuf[_seqbufptr+5] = (parm);\
- _seqbuf[_seqbufptr+6] = (0);\
- _seqbuf[_seqbufptr+7] = 0;\
- _SEQ_ADVBUF(8);}
-
-#define SEQ_START_NOTE(dev, chn, note, vol) \
- _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
-
-#define SEQ_STOP_NOTE(dev, chn, note, vol) \
- _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
-
-#define SEQ_KEY_PRESSURE(dev, chn, note, pressure) \
- _CHN_VOICE(dev, MIDI_KEY_PRESSURE, chn, note, pressure)
-
-/*
- * Midi channel messages
- */
-
-#define _CHN_COMMON(dev, event, chn, p1, p2, w14) \
- {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr] = EV_CHN_COMMON;\
- _seqbuf[_seqbufptr+1] = (dev);\
- _seqbuf[_seqbufptr+2] = (event);\
- _seqbuf[_seqbufptr+3] = (chn);\
- _seqbuf[_seqbufptr+4] = (p1);\
- _seqbuf[_seqbufptr+5] = (p2);\
- *(short *)&_seqbuf[_seqbufptr+6] = (w14);\
- _SEQ_ADVBUF(8);}
-/*
- * SEQ_SYSEX permits sending of sysex messages. (It may look that it permits
- * sending any MIDI bytes but it's absolutely not possible. Trying to do
- * so _will_ cause problems with MPU401 intelligent mode).
- *
- * Sysex messages are sent in blocks of 1 to 6 bytes. Longer messages must be
- * sent by calling SEQ_SYSEX() several times (there must be no other events
- * between them). First sysex fragment must have 0xf0 in the first byte
- * and the last byte (buf[len-1] of the last fragment must be 0xf7. No byte
- * between these sysex start and end markers cannot be larger than 0x7f. Also
- * lengths of each fragments (except the last one) must be 6.
- *
- * Breaking the above rules may work with some MIDI ports but is likely to
- * cause fatal problems with some other devices (such as MPU401).
- */
-#define SEQ_SYSEX(dev, buf, len) \
- {int ii, ll=(len); \
- unsigned char *bufp=buf;\
- if (ll>6)ll=6;\
- _SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr] = EV_SYSEX;\
- _seqbuf[_seqbufptr+1] = (dev);\
- for(ii=0;ii<ll;ii++)\
- _seqbuf[_seqbufptr+ii+2] = bufp[ii];\
- for(ii=ll;ii<6;ii++)\
- _seqbuf[_seqbufptr+ii+2] = 0xff;\
- _SEQ_ADVBUF(8);}
-
-#define SEQ_CHN_PRESSURE(dev, chn, pressure) \
- _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
-
-#define SEQ_SET_PATCH SEQ_PGM_CHANGE
-#ifdef OSSLIB
-# define SEQ_PGM_CHANGE(dev, chn, patch) \
- {OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen); \
- _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);}
-#else
-# define SEQ_PGM_CHANGE(dev, chn, patch) \
- _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
-#endif
-
-#define SEQ_CONTROL(dev, chn, controller, value) \
- _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
-
-#define SEQ_BENDER(dev, chn, value) \
- _CHN_COMMON(dev, MIDI_PITCH_BEND, chn, 0, 0, value)
-
-#define SEQ_V2_X_CONTROL(dev, voice, controller, value) \
- {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr] = SEQ_EXTENDED;\
- _seqbuf[_seqbufptr+1] = SEQ_CONTROLLER;\
- _seqbuf[_seqbufptr+2] = (dev);\
- _seqbuf[_seqbufptr+3] = (voice);\
- _seqbuf[_seqbufptr+4] = (controller);\
- _seqbuf[_seqbufptr+5] = ((value)&0xff);\
- _seqbuf[_seqbufptr+6] = ((value>>8)&0xff);\
- _seqbuf[_seqbufptr+7] = 0;\
- _SEQ_ADVBUF(8);}
-/*
- * The following 5 macros are incorrectly implemented and obsolete.
- * Use SEQ_BENDER and SEQ_CONTROL (with proper controller) instead.
- */
-#define SEQ_PITCHBEND(dev, voice, value) \
- SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
-#define SEQ_BENDER_RANGE(dev, voice, value) \
- SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
-#define SEQ_EXPRESSION(dev, voice, value) \
- SEQ_CONTROL(dev, voice, CTL_EXPRESSION, value*128)
-#define SEQ_MAIN_VOLUME(dev, voice, value) \
- SEQ_CONTROL(dev, voice, CTL_MAIN_VOLUME, (value*16383)/100)
-#define SEQ_PANNING(dev, voice, pos) \
- SEQ_CONTROL(dev, voice, CTL_PAN, (pos+128) / 2)
-
-/*
- * Timing and syncronization macros
- */
-
-#define _TIMER_EVENT(ev, parm) {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr+0] = EV_TIMING; \
- _seqbuf[_seqbufptr+1] = (ev); \
- _seqbuf[_seqbufptr+2] = 0;\
- _seqbuf[_seqbufptr+3] = 0;\
- *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm); \
- _SEQ_ADVBUF(8);}
-
-#define SEQ_START_TIMER() _TIMER_EVENT(TMR_START, 0)
-#define SEQ_STOP_TIMER() _TIMER_EVENT(TMR_STOP, 0)
-#define SEQ_CONTINUE_TIMER() _TIMER_EVENT(TMR_CONTINUE, 0)
-#define SEQ_WAIT_TIME(ticks) _TIMER_EVENT(TMR_WAIT_ABS, ticks)
-#define SEQ_DELTA_TIME(ticks) _TIMER_EVENT(TMR_WAIT_REL, ticks)
-#define SEQ_ECHO_BACK(key) _TIMER_EVENT(TMR_ECHO, key)
-#define SEQ_SET_TEMPO(value) _TIMER_EVENT(TMR_TEMPO, value)
-#define SEQ_SONGPOS(pos) _TIMER_EVENT(TMR_SPP, pos)
-#define SEQ_TIME_SIGNATURE(sig) _TIMER_EVENT(TMR_TIMESIG, sig)
-
-/*
- * Local control events
- */
-
-#define _LOCAL_EVENT(ev, parm) {_SEQ_NEEDBUF(8);\
- _seqbuf[_seqbufptr+0] = EV_SEQ_LOCAL; \
- _seqbuf[_seqbufptr+1] = (ev); \
- _seqbuf[_seqbufptr+2] = 0;\
- _seqbuf[_seqbufptr+3] = 0;\
- *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm); \
- _SEQ_ADVBUF(8);}
-
-#define SEQ_PLAYAUDIO(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO, devmask)
-#define SEQ_PLAYAUDIO2(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO2, devmask)
-#define SEQ_PLAYAUDIO3(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO3, devmask)
-#define SEQ_PLAYAUDIO4(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO4, devmask)
-/*
- * Events for the level 1 interface only
- */
-
-#define SEQ_MIDIOUT(device, byte) {_SEQ_NEEDBUF(4);\
- _seqbuf[_seqbufptr] = SEQ_MIDIPUTC;\
- _seqbuf[_seqbufptr+1] = (byte);\
- _seqbuf[_seqbufptr+2] = (device);\
- _seqbuf[_seqbufptr+3] = 0;\
- _SEQ_ADVBUF(4);}
-
-/*
- * Patch loading.
- */
-#ifdef OSSLIB
-# define SEQ_WRPATCH(patchx, len) \
- OSS_write_patch(seqfd, (char*)(patchx), len)
-# define SEQ_WRPATCH2(patchx, len) \
- OSS_write_patch2(seqfd, (char*)(patchx), len)
-#else
-# define SEQ_WRPATCH(patchx, len) \
- {if (_seqbufptr) SEQ_DUMPBUF();\
- if (write(seqfd, (char*)(patchx), len)==-1) \
- perror("Write patch: /dev/sequencer");}
-# define SEQ_WRPATCH2(patchx, len) \
- (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
-#endif
-
-#endif
-#endif /* ifndef DISABLE_SEQUENCER */
-
-/*
- ****************************************************************************
- * ioctl commands for the /dev/midi##
- ****************************************************************************/
-#define SNDCTL_MIDI_PRETIME __SIOWR('m', 0, int)
-
-#if 0
-/*
- * The SNDCTL_MIDI_MPUMODE and SNDCTL_MIDI_MPUCMD calls
- * are completely obsolete. The hardware device (MPU-401 "intelligent mode"
- * and compatibles) has disappeared from the market 10 years ago so there
- * is no need for this stuff. The MPU-401 "UART" mode devices don't support
- * this stuff.
- */
-typedef struct
-{
- unsigned char cmd;
- char nr_args, nr_returns;
- unsigned char data[30];
-} mpu_command_rec;
-
-#define SNDCTL_MIDI_MPUMODE __SIOWR('m', 1, int)
-#define SNDCTL_MIDI_MPUCMD __SIOWR('m', 2, mpu_command_rec)
-#endif
-
-/*
- * SNDCTL_MIDI_MTCINPUT turns on a mode where OSS automatically inserts
- * MTC quarter frame messages (F1 xx) to the input.
- * The argument is the MTC mode:
- *
- * -1 = Turn MTC messages OFF (default)
- * 24 = 24 FPS
- * 25 = 25 FPS
- * 29 = 30 FPS drop frame
- * 30 = 30 FPS
- *
- * Note that 25 FPS mode is probably the only mode that is supported. Other
- * modes may be supported in the future versions of OSS, 25 FPS is handy
- * because it generates 25*4=100 quarter frame messages per second which
- * matches the usual 100 HZ system timer rate).
- *
- * The quarter frame timer will be reset to 0:00:00:00.0 at the moment this
- * ioctl is made.
- */
-#define SNDCTL_MIDI_MTCINPUT __SIOWR('m', 3, int)
-
-/*
- * MTC/SMPTE time code record (for future use)
- */
-typedef struct
-{
- unsigned char hours, minutes, seconds, frames, qframes;
- char direction;
-#define MTC_DIR_STOPPED 0
-#define MTC_DIR_FORWARD 1
-#define MTC_DIR_BACKWARD -1
- unsigned char time_code_type;
- unsigned int flags;
-} oss_mtc_data_t;
-
-#define SNDCTL_MIDI_SETMODE __SIOWR('m', 6, int)
-# define MIDI_MODE_TRADITIONAL 0
-# define MIDI_MODE_TIMED 1 /* Input times are in MIDI ticks */
-# define MIDI_MODE_TIMED_ABS 2 /* Input times are absolute (usecs) */
-
-/*
- * Packet header for MIDI_MODE_TIMED and MIDI_MODE_TIMED_ABS
- */
-typedef unsigned long long oss_midi_time_t; /* Variable type for MIDI time (clock ticks) */
-
-typedef struct
-{
- int magic; /* Initialize to MIDI_HDR_MAGIC */
-#define MIDI_HDR_MAGIC -1
- unsigned short event_type;
-#define MIDI_EV_WRITE 0 /* Write or read (with payload) */
-#define MIDI_EV_TEMPO 1
-#define MIDI_EV_ECHO 2
-#define MIDI_EV_START 3
-#define MIDI_EV_STOP 4
-#define MIDI_EV_CONTINUE 5
-#define MIDI_EV_XPRESSWRITE 6
-#define MIDI_EV_TIMEBASE 7
-#define MIDI_EV_DEVCTL 8 /* Device control read/write */
- unsigned short options;
-#define MIDI_OPT_NONE 0x0000
-#define MIDI_OPT_TIMED 0x0001
-#define MIDI_OPT_CONTINUATION 0x0002
-#define MIDI_OPT_USECTIME 0x0004 /* Time is absolute (in usecs) */
-#define MIDI_OPT_BUSY 0x0008 /* Reserved for internal use */
- oss_midi_time_t time;
- int parm;
- int filler[3]; /* Fur future expansion - init to zeros */
-} midi_packet_header_t;
-/*
- * MIDI_PAYLOAD_SIZE is the maximum size of one MIDI input chunk. It must be
- * less (or equal) than 1024 which is the read size recommended in the
- * documentation. TODO: Explain this better.
- */
-#define MIDI_PAYLOAD_SIZE 1000
-
-typedef struct
-{
- midi_packet_header_t hdr;
- unsigned char payload[MIDI_PAYLOAD_SIZE];
-} midi_packet_t;
-
-#define SNDCTL_MIDI_TIMEBASE __SIOWR('m', 7, int)
-#define SNDCTL_MIDI_TEMPO __SIOWR('m', 8, int)
-/*
- * User land MIDI servers (synths) can use SNDCTL_MIDI_SET_LATENCY
- * to request MIDI events to be sent to them in advance. The parameter
- * (in microseconds) tells how much before the events are submitted.
- *
- * This feature is only valid for loopback devices and possibly some other
- * types of virtual devices.
- */
-#define SNDCTL_MIDI_SET_LATENCY __SIOW ('m', 9, int)
-/*
- ****************************************************************************
- * IOCTL commands for /dev/dsp
- ****************************************************************************/
-
-#define SNDCTL_DSP_HALT __SIO ('P', 0)
-#define SNDCTL_DSP_RESET SNDCTL_DSP_HALT /* Old name */
-#define SNDCTL_DSP_SYNC __SIO ('P', 1)
-#define SNDCTL_DSP_SPEED __SIOWR('P', 2, int)
-
-/* SNDCTL_DSP_STEREO is obsolete - use SNDCTL_DSP_CHANNELS instead */
-#define SNDCTL_DSP_STEREO __SIOWR('P', 3, int)
-/* SNDCTL_DSP_STEREO is obsolete - use SNDCTL_DSP_CHANNELS instead */
-
-#define SNDCTL_DSP_GETBLKSIZE __SIOWR('P', 4, int)
-#define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
-#define SNDCTL_DSP_CHANNELS __SIOWR('P', 6, int)
-#define SNDCTL_DSP_POST __SIO ('P', 8)
-#define SNDCTL_DSP_SUBDIVIDE __SIOWR('P', 9, int)
-#define SNDCTL_DSP_SETFRAGMENT __SIOWR('P',10, int)
-
-/* Audio data formats (Note! U8=8 and S16_LE=16 for compatibility) */
-#define SNDCTL_DSP_GETFMTS __SIOR ('P',11, int) /* Returns a mask */
-#define SNDCTL_DSP_SETFMT __SIOWR('P',5, int) /* Selects ONE fmt */
-# define AFMT_QUERY 0x00000000 /* Return current fmt */
-# define AFMT_MU_LAW 0x00000001
-# define AFMT_A_LAW 0x00000002
-# define AFMT_IMA_ADPCM 0x00000004
-# define AFMT_U8 0x00000008
-# define AFMT_S16_LE 0x00000010 /* Little endian signed 16 */
-# define AFMT_S16_BE 0x00000020 /* Big endian signed 16 */
-# define AFMT_S8 0x00000040
-# define AFMT_U16_LE 0x00000080 /* Little endian U16 */
-# define AFMT_U16_BE 0x00000100 /* Big endian U16 */
-# define AFMT_MPEG 0x00000200 /* MPEG (2) audio */
-
-/* AC3 _compressed_ bitstreams (See Programmer's Guide for details). */
-# define AFMT_AC3 0x00000400
-/* Ogg Vorbis _compressed_ bit streams */
-# define AFMT_VORBIS 0x00000800
-
-/* 32 bit formats (MSB aligned) formats */
-# define AFMT_S32_LE 0x00001000
-# define AFMT_S32_BE 0x00002000
-
-/* Reserved for _native_ endian double precision IEEE floating point */
-# define AFMT_FLOAT 0x00004000
-
-/* 24 bit formats (LSB aligned in 32 bit word) formats */
-# define AFMT_S24_LE 0x00008000
-# define AFMT_S24_BE 0x00010000
-
-/*
- * S/PDIF raw format. In this format the S/PDIF frames (including all
- * control and user bits) are included in the data stream. Each sample
- * is stored in a 32 bit frame (see IEC-958 for more info). This format
- * is supported by very few devices and it's only usable for purposes
- * where full access to the control/user bits is required (real time control).
- */
-# define AFMT_SPDIF_RAW 0x00020000
-
-/* 24 bit packed (3 byte) little endian format (USB compatibility) */
-# define AFMT_S24_PACKED 0x00040000
-
-
-/*
- * Some big endian/little endian handling macros (native endian and opposite
- * endian formats). The usage of these macros is described in the OSS
- * Programmer's Manual.
- */
-
-#if defined(_AIX) || defined(AIX) || defined(sparc) || defined(__hppa) || defined(PPC) || defined(__powerpc__) && !defined(i386) && !defined(__i386) && !defined(__i386__)
-
-/* Big endian machines */
-# define _PATCHKEY(id) (0xfd00|id)
-# define AFMT_S16_NE AFMT_S16_BE
-# define AFMT_U16_NE AFMT_U16_BE
-# define AFMT_S32_NE AFMT_S32_BE
-# define AFMT_S24_NE AFMT_S24_BE
-# define AFMT_S16_OE AFMT_S16_LE
-# define AFMT_S32_OE AFMT_S32_LE
-# define AFMT_S24_OE AFMT_S24_LE
-#else
-# define _PATCHKEY(id) ((id<<8)|0xfd)
-# define AFMT_S16_NE AFMT_S16_LE
-# define AFMT_U16_NE AFMT_U16_LE
-# define AFMT_S32_NE AFMT_S32_LE
-# define AFMT_S24_NE AFMT_S24_LE
-# define AFMT_S16_OE AFMT_S16_BE
-# define AFMT_S32_OE AFMT_S32_BE
-# define AFMT_S24_OE AFMT_S24_BE
-#endif
-/*
- * Buffer status queries.
- */
-typedef struct audio_buf_info
-{
- int fragments; /* # of available fragments (partially usend ones not counted) */
- int fragstotal; /* Total # of fragments allocated */
- int fragsize; /* Size of a fragment in bytes */
- int bytes; /* Available space in bytes (includes partially used fragments) */
- /* Note! 'bytes' could be more than fragments*fragsize */
-} audio_buf_info;
-
-#define SNDCTL_DSP_GETOSPACE __SIOR ('P',12, audio_buf_info)
-#define SNDCTL_DSP_GETISPACE __SIOR ('P',13, audio_buf_info)
-#define SNDCTL_DSP_GETCAPS __SIOR ('P',15, int)
-# define PCM_CAP_REVISION 0x000000ff /* Bits for revision level (0 to 255) */
-# define PCM_CAP_DUPLEX 0x00000100 /* Full duplex record/playback */
-# define PCM_CAP_REALTIME 0x00000200 /* Not in use */
-# define PCM_CAP_BATCH 0x00000400 /* Device has some kind of */
- /* internal buffers which may */
- /* cause some delays and */
- /* decrease precision of timing */
-# define PCM_CAP_COPROC 0x00000800 /* Has a coprocessor */
- /* Sometimes it's a DSP */
- /* but usually not */
-# define PCM_CAP_TRIGGER 0x00001000 /* Supports SETTRIGGER */
-# define PCM_CAP_MMAP 0x00002000 /* Supports mmap() */
-# define PCM_CAP_MULTI 0x00004000 /* Supports multiple open */
-# define PCM_CAP_BIND 0x00008000 /* Supports binding to front/rear/center/lfe */
-# define PCM_CAP_INPUT 0x00010000 /* Supports recording */
-# define PCM_CAP_OUTPUT 0x00020000 /* Supports playback */
-# define PCM_CAP_VIRTUAL 0x00040000 /* Virtual device */
-/* 0x00040000 and 0x00080000 reserved for future use */
-
-/* Analog/digital control capabilities */
-# define PCM_CAP_ANALOGOUT 0x00100000
-# define PCM_CAP_ANALOGIN 0x00200000
-# define PCM_CAP_DIGITALOUT 0x00400000
-# define PCM_CAP_DIGITALIN 0x00800000
-# define PCM_CAP_ADMASK 0x00f00000
-/*
- * NOTE! (capabilities & PCM_CAP_ADMASK)==0 means just that the
- * digital/analog interface control features are not supported by the
- * device/driver. However the device still supports analog, digital or
- * both inputs/outputs (depending on the device). See the OSS Programmer's
- * Guide for full details.
- */
-# define PCM_CAP_SHADOW 0x01000000 /* "Shadow" device */
-
-/*
- * Preferred channel usage. These bits can be used to
- * give recommendations to the application. Used by few drivers.
- * For example if ((caps & DSP_CH_MASK) == DSP_CH_MONO) means that
- * the device works best in mono mode. However it doesn't necessarily mean
- * that the device cannot be used in stereo. These bits should only be used
- * by special applications such as multi track hard disk recorders to find
- * out the initial setup. However the user should be able to override this
- * selection.
- *
- * To find out which modes are actually supported the application should
- * try to select them using SNDCTL_DSP_CHANNELS.
- */
-# define DSP_CH_MASK 0x06000000 /* Mask */
-# define DSP_CH_ANY 0x00000000 /* No preferred mode */
-# define DSP_CH_MONO 0x02000000
-# define DSP_CH_STEREO 0x04000000
-# define DSP_CH_MULTI 0x06000000 /* More than two channels */
-
-# define PCM_CAP_HIDDEN 0x08000000 /* Hidden device */
-# define PCM_CAP_FREERATE 0x10000000
-# define PCM_CAP_MODEM 0x20000000 /* Modem device */
-# define PCM_CAP_DEFAULT 0x40000000 /* "Default" device */
-
-/*
- * The PCM_CAP_* capability names were known as DSP_CAP_* prior OSS 4.0
- * so it's necessary to define the older names too.
- */
-#define DSP_CAP_ADMASK PCM_CAP_ADMASK
-#define DSP_CAP_ANALOGIN PCM_CAP_ANALOGIN
-#define DSP_CAP_ANALOGOUT PCM_CAP_ANALOGOUT
-#define DSP_CAP_BATCH PCM_CAP_BATCH
-#define DSP_CAP_BIND PCM_CAP_BIND
-#define DSP_CAP_COPROC PCM_CAP_COPROC
-#define DSP_CAP_DEFAULT PCM_CAP_DEFAULT
-#define DSP_CAP_DIGITALIN PCM_CAP_DIGITALIN
-#define DSP_CAP_DIGITALOUT PCM_CAP_DIGITALOUT
-#define DSP_CAP_DUPLEX PCM_CAP_DUPLEX
-#define DSP_CAP_FREERATE PCM_CAP_FREERATE
-#define DSP_CAP_HIDDEN PCM_CAP_HIDDEN
-#define DSP_CAP_INPUT PCM_CAP_INPUT
-#define DSP_CAP_MMAP PCM_CAP_MMAP
-#define DSP_CAP_MODEM PCM_CAP_MODEM
-#define DSP_CAP_MULTI PCM_CAP_MULTI
-#define DSP_CAP_OUTPUT PCM_CAP_OUTPUT
-#define DSP_CAP_REALTIME PCM_CAP_REALTIME
-#define DSP_CAP_REVISION PCM_CAP_REVISION
-#define DSP_CAP_SHADOW PCM_CAP_SHADOW
-#define DSP_CAP_TRIGGER PCM_CAP_TRIGGER
-#define DSP_CAP_VIRTUAL PCM_CAP_VIRTUAL
-
-#define SNDCTL_DSP_GETTRIGGER __SIOR ('P',16, int)
-#define SNDCTL_DSP_SETTRIGGER __SIOW ('P',16, int)
-# define PCM_ENABLE_INPUT 0x00000001
-# define PCM_ENABLE_OUTPUT 0x00000002
-
-typedef struct count_info
-{
- unsigned int bytes; /* Total # of bytes processed */
- int blocks; /* # of fragment transitions since last time */
- int ptr; /* Current DMA pointer value */
-} count_info;
-
-#define SNDCTL_DSP_GETIPTR __SIOR ('P',17, count_info)
-#define SNDCTL_DSP_GETOPTR __SIOR ('P',18, count_info)
-
-typedef struct buffmem_desc
-{
- unsigned *buffer;
- int size;
-} buffmem_desc;
-#define SNDCTL_DSP_SETSYNCRO __SIO ('P', 21)
-#define SNDCTL_DSP_SETDUPLEX __SIO ('P', 22)
-
-#define SNDCTL_DSP_PROFILE __SIOW ('P', 23, int) /* OBSOLETE */
-#define APF_NORMAL 0 /* Normal applications */
-#define APF_NETWORK 1 /* Underruns probably caused by an "external" delay */
-#define APF_CPUINTENS 2 /* Underruns probably caused by "overheating" the CPU */
-
-#define SNDCTL_DSP_GETODELAY __SIOR ('P', 23, int)
-
-typedef struct audio_errinfo
-{
- int play_underruns;
- int rec_overruns;
- unsigned int play_ptradjust;
- unsigned int rec_ptradjust;
- int play_errorcount;
- int rec_errorcount;
- int play_lasterror;
- int rec_lasterror;
- int play_errorparm;
- int rec_errorparm;
- int filler[16];
-} audio_errinfo;
-
-#define SNDCTL_DSP_GETPLAYVOL __SIOR ('P', 24, int)
-#define SNDCTL_DSP_SETPLAYVOL __SIOWR('P', 24, int)
-#define SNDCTL_DSP_GETERROR __SIOR ('P', 25, audio_errinfo)
-/*
- ****************************************************************************
- * Digital interface (S/PDIF) control interface
- */
-
-typedef struct oss_digital_control
-{
- unsigned int caps;
-#define DIG_CBITIN_NONE 0x00000000
-#define DIG_CBITIN_LIMITED 0x00000001
-#define DIG_CBITIN_DATA 0x00000002
-#define DIG_CBITIN_BYTE0 0x00000004
-#define DIG_CBITIN_FULL 0x00000008
-#define DIG_CBITIN_MASK 0x0000000f
-#define DIG_CBITOUT_NONE 0x00000000
-#define DIG_CBITOUT_LIMITED 0x00000010
-#define DIG_CBITOUT_BYTE0 0x00000020
-#define DIG_CBITOUT_FULL 0x00000040
-#define DIG_CBITOUT_DATA 0x00000080
-#define DIG_CBITOUT_MASK 0x000000f0
-#define DIG_UBITIN 0x00000100
-#define DIG_UBITOUT 0x00000200
-#define DIG_VBITOUT 0x00000400
-#define DIG_OUTRATE 0x00000800
-#define DIG_INRATE 0x00001000
-#define DIG_INBITS 0x00002000
-#define DIG_OUTBITS 0x00004000
-#define DIG_EXACT 0x00010000
-#define DIG_PRO 0x00020000
-#define DIG_CONSUMER 0x00040000
-#define DIG_PASSTHROUGH 0x00080000
-#define DIG_OUTSEL 0x00100000
-
- unsigned int valid;
-#define VAL_CBITIN 0x00000001
-#define VAL_UBITIN 0x00000002
-#define VAL_CBITOUT 0x00000004
-#define VAL_UBITOUT 0x00000008
-#define VAL_ISTATUS 0x00000010
-#define VAL_IRATE 0x00000020
-#define VAL_ORATE 0x00000040
-#define VAL_INBITS 0x00000080
-#define VAL_OUTBITS 0x00000100
-#define VAL_REQUEST 0x00000200
-#define VAL_OUTSEL 0x00000400
-
-#define VAL_OUTMASK (VAL_CBITOUT|VAL_UBITOUT|VAL_ORATE|VAL_OUTBITS|VAL_OUTSEL)
-
- unsigned int request, param;
-#define SPD_RQ_PASSTHROUGH 1
-
- unsigned char cbitin[24];
- unsigned char ubitin[24];
- unsigned char cbitout[24];
- unsigned char ubitout[24];
-
- unsigned int outsel;
-#define OUTSEL_DIGITAL 1
-#define OUTSEL_ANALOG 2
-#define OUTSEL_BOTH (OUTSEL_DIGITAL|OUTSEL_ANALOG)
-
- int in_data; /* Audio/data if autodetectable by the receiver */
-#define IND_UNKNOWN 0
-#define IND_AUDIO 1
-#define IND_DATA 2
-
- int in_locked; /* Receiver locked */
-#define LOCK_NOT_INDICATED 0
-#define LOCK_UNLOCKED 1
-#define LOCK_LOCKED 2
-
- int in_quality; /* Input signal quality */
-#define IN_QUAL_NOT_INDICATED 0
-#define IN_QUAL_POOR 1
-#define IN_QUAL_GOOD 2
-
- int in_vbit, out_vbit; /* V bits */
-#define VBIT_NOT_INDICATED 0
-#define VBIT_OFF 1
-#define VBIT_ON 2
-
- unsigned int in_errors; /* Various input error conditions */
-#define INERR_CRC 0x0001
-#define INERR_QCODE_CRC 0x0002
-#define INERR_PARITY 0x0004
-#define INERR_BIPHASE 0x0008
-
- int srate_in, srate_out;
- int bits_in, bits_out;
-
- int filler[32];
-} oss_digital_control;
-
-#define SNDCTL_DSP_READCTL __SIOWR('P', 26, oss_digital_control)
-#define SNDCTL_DSP_WRITECTL __SIOWR('P', 27, oss_digital_control)
-
-/*
- ****************************************************************************
- * Sync groups for audio devices
- */
-typedef struct oss_syncgroup
-{
- int id;
- int mode;
- int filler[16];
-} oss_syncgroup;
-
-#define SNDCTL_DSP_SYNCGROUP __SIOWR('P', 28, oss_syncgroup)
-#define SNDCTL_DSP_SYNCSTART __SIOW ('P', 29, int)
-
-/*
- **************************************************************************
- * "cooked" mode enables software based conversions for sample rate, sample
- * format (bits) and number of channels (mono/stereo). These conversions are
- * required with some devices that support only one sample rate or just stereo
- * to let the applications to use other formats. The cooked mode is enabled by
- * default. However it's necessary to disable this mode when mmap() is used or
- * when very deterministic timing is required. SNDCTL_DSP_COOKEDMODE is an
- * optional call introduced in OSS 3.9.6f. It's _error return must be ignored_
- * since normally this call will return erno=EINVAL.
- *
- * SNDCTL_DSP_COOKEDMODE must be called immediately after open before doing
- * anything else. Otherwise the call will not have any effect.
- */
-#define SNDCTL_DSP_COOKEDMODE __SIOW ('P', 30, int)
-
-/*
- **************************************************************************
- * SNDCTL_DSP_SILENCE and SNDCTL_DSP_SKIP are new calls in OSS 3.99.0
- * that can be used to implement pause/continue during playback (no effect
- * on recording).
- */
-#define SNDCTL_DSP_SILENCE __SIO ('P', 31)
-#define SNDCTL_DSP_SKIP __SIO ('P', 32)
-/*
- ****************************************************************************
- * Abort transfer (reset) functions for input and output
- */
-#define SNDCTL_DSP_HALT_INPUT __SIO ('P', 33)
-#define SNDCTL_DSP_RESET_INPUT SNDCTL_DSP_HALT_INPUT /* Old name */
-#define SNDCTL_DSP_HALT_OUTPUT __SIO ('P', 34)
-#define SNDCTL_DSP_RESET_OUTPUT SNDCTL_DSP_HALT_OUTPUT /* Old name */
-/*
- ****************************************************************************
- * Low water level control
- */
-#define SNDCTL_DSP_LOW_WATER __SIOW ('P', 34, int)
-
-/*
- ****************************************************************************
- * 64 bit pointer support. Only available in environments that support
- * the 64 bit (long long) integer type.
- */
-#ifndef OSS_NO_LONG_LONG
-typedef struct
-{
- long long samples;
- int fifo_samples;
- int filler[32]; /* For future use */
-} oss_count_t;
-
-#define SNDCTL_DSP_CURRENT_IPTR __SIOR ('P', 35, oss_count_t)
-#define SNDCTL_DSP_CURRENT_OPTR __SIOR ('P', 36, oss_count_t)
-#endif
-
-/*
- ****************************************************************************
- * Interface for selecting recording sources and playback output routings.
- */
-#define SNDCTL_DSP_GET_RECSRC_NAMES __SIOR ('P', 37, oss_mixer_enuminfo)
-#define SNDCTL_DSP_GET_RECSRC __SIOR ('P', 38, int)
-#define SNDCTL_DSP_SET_RECSRC __SIOWR('P', 38, int)
-
-#define SNDCTL_DSP_GET_PLAYTGT_NAMES __SIOR ('P', 39, oss_mixer_enuminfo)
-#define SNDCTL_DSP_GET_PLAYTGT __SIOR ('P', 40, int)
-#define SNDCTL_DSP_SET_PLAYTGT __SIOWR('P', 40, int)
-#define SNDCTL_DSP_GETRECVOL __SIOR ('P', 41, int)
-#define SNDCTL_DSP_SETRECVOL __SIOWR('P', 41, int)
-
-/*
- ***************************************************************************
- * Some calls for setting the channel assignment with multi channel devices
- * (see the manual for details).
- */
-#ifndef OSS_NO_LONG_LONG
-#define SNDCTL_DSP_GET_CHNORDER __SIOR ('P', 42, unsigned long long)
-#define SNDCTL_DSP_SET_CHNORDER __SIOWR('P', 42, unsigned long long)
-# define CHID_UNDEF 0
-# define CHID_L 1
-# define CHID_R 2
-# define CHID_C 3
-# define CHID_LFE 4
-# define CHID_LS 5
-# define CHID_RS 6
-# define CHID_LR 7
-# define CHID_RR 8
-#define CHNORDER_UNDEF 0x0000000000000000ULL
-#define CHNORDER_NORMAL 0x0000000087654321ULL
-#endif
-
-#define MAX_PEAK_CHANNELS 128
-typedef unsigned short oss_peaks_t[MAX_PEAK_CHANNELS];
-#define SNDCTL_DSP_GETIPEAKS __SIOR('P', 43, oss_peaks_t)
-#define SNDCTL_DSP_GETOPEAKS __SIOR('P', 44, oss_peaks_t)
-
-#define SNDCTL_DSP_POLICY __SIOW('P', 45, int) /* See the manual */
-
-/*
- ****************************************************************************
- * Few ioctl calls that are not official parts of OSS. They have been used
- * by few freeware implementations of OSS.
- */
-#define SNDCTL_DSP_GETCHANNELMASK __SIOWR('P', 64, int)
-#define SNDCTL_DSP_BIND_CHANNEL __SIOWR('P', 65, int)
-# define DSP_BIND_QUERY 0x00000000
-# define DSP_BIND_FRONT 0x00000001
-# define DSP_BIND_SURR 0x00000002
-# define DSP_BIND_CENTER_LFE 0x00000004
-# define DSP_BIND_HANDSET 0x00000008
-# define DSP_BIND_MIC 0x00000010
-# define DSP_BIND_MODEM1 0x00000020
-# define DSP_BIND_MODEM2 0x00000040
-# define DSP_BIND_I2S 0x00000080
-# define DSP_BIND_SPDIF 0x00000100
-# define DSP_BIND_REAR 0x00000200
-
-#ifdef sun
-/* Not part of OSS. Reserved for internal use by Solaris */
-#define X_SADA_GET_PLAYTGT_MASK __SIOR ('P', 66, int)
-#define X_SADA_GET_PLAYTGT __SIOR ('P', 67, int)
-#define X_SADA_SET_PLAYTGT __SIOWR('P', 68, int)
-#endif
-
-#ifndef NO_LEGACY_MIXER
-/*
- ****************************************************************************
- * IOCTL commands for the "legacy " /dev/mixer API (obsolete)
- *
- * Mixer controls
- *
- * There can be up to 20 different analog mixer channels. The
- * SOUND_MIXER_NRDEVICES gives the currently supported maximum.
- * The SOUND_MIXER_READ_DEVMASK returns a bitmask which tells
- * the devices supported by the particular mixer.
- *
- * {!notice This "legacy" mixer API is obsolete. It has been superceded
- * by a new one (see below).
- */
-
-#define SOUND_MIXER_NRDEVICES 28
-#define SOUND_MIXER_VOLUME 0
-#define SOUND_MIXER_BASS 1
-#define SOUND_MIXER_TREBLE 2
-#define SOUND_MIXER_SYNTH 3
-#define SOUND_MIXER_PCM 4
-#define SOUND_MIXER_SPEAKER 5
-#define SOUND_MIXER_LINE 6
-#define SOUND_MIXER_MIC 7
-#define SOUND_MIXER_CD 8
-#define SOUND_MIXER_IMIX 9 /* Recording monitor */
-#define SOUND_MIXER_ALTPCM 10
-#define SOUND_MIXER_RECLEV 11 /* Recording level */
-#define SOUND_MIXER_IGAIN 12 /* Input gain */
-#define SOUND_MIXER_OGAIN 13 /* Output gain */
-/*
- * Some soundcards have three line level inputs (line, aux1 and aux2).
- * Since each card manufacturer has assigned different meanings to
- * these inputs, it's impractical to assign specific meanings
- * (eg line, cd, synth etc.) to them.
- */
-#define SOUND_MIXER_LINE1 14 /* Input source 1 (aux1) */
-#define SOUND_MIXER_LINE2 15 /* Input source 2 (aux2) */
-#define SOUND_MIXER_LINE3 16 /* Input source 3 (line) */
-#define SOUND_MIXER_DIGITAL1 17 /* Digital I/O 1 */
-#define SOUND_MIXER_DIGITAL2 18 /* Digital I/O 2 */
-#define SOUND_MIXER_DIGITAL3 19 /* Digital I/O 3 */
-#define SOUND_MIXER_PHONE 20 /* Phone */
-#define SOUND_MIXER_MONO 21 /* Mono Output */
-#define SOUND_MIXER_VIDEO 22 /* Video/TV (audio) in */
-#define SOUND_MIXER_RADIO 23 /* Radio in */
-#define SOUND_MIXER_DEPTH 24 /* Surround depth */
-#define SOUND_MIXER_REARVOL 25 /* Rear/Surround speaker vol */
-#define SOUND_MIXER_CENTERVOL 26 /* Center/LFE speaker vol */
-#define SOUND_MIXER_SIDEVOL 27 /* Side-Surround (8speaker) vol */
-
-/*
- * Warning: SOUND_MIXER_SURRVOL is an old name of SOUND_MIXER_SIDEVOL.
- * They are both assigned to the same mixer control. Don't
- * use both control names in the same program/driver.
- */
-#define SOUND_MIXER_SURRVOL SOUND_MIXER_SIDEVOL
-
-/* Some on/off settings (SOUND_SPECIAL_MIN - SOUND_SPECIAL_MAX) */
-/* Not counted to SOUND_MIXER_NRDEVICES, but use the same number space */
-#define SOUND_ONOFF_MIN 28
-#define SOUND_ONOFF_MAX 30
-
-/* Note! Number 31 cannot be used since the sign bit is reserved */
-#define SOUND_MIXER_NONE 31
-
-/*
- * The following unsupported macros are no longer functional.
- * Use SOUND_MIXER_PRIVATE# macros in future.
- */
-#define SOUND_MIXER_ENHANCE SOUND_MIXER_NONE
-#define SOUND_MIXER_MUTE SOUND_MIXER_NONE
-#define SOUND_MIXER_LOUD SOUND_MIXER_NONE
-
-#define SOUND_DEVICE_LABELS \
- {"Vol ", "Bass ", "Treble", "Synth", "Pcm ", "Speaker ", "Line ", \
- "Mic ", "CD ", "Mix ", "Pcm2 ", "Rec ", "IGain", "OGain", \
- "Aux1", "Aux2", "Aux3", "Digital1", "Digital2", "Digital3", \
- "Phone", "Mono", "Video", "Radio", "Depth", \
- "Rear", "Center", "Side"}
-
-#define SOUND_DEVICE_NAMES \
- {"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \
- "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", \
- "aux1", "aux2", "aux3", "dig1", "dig2", "dig3", \
- "phone", "mono", "video", "radio", "depth", \
- "rear", "center", "side"}
-
-/* Device bitmask identifiers */
-
-#define SOUND_MIXER_RECSRC 0xff /* Arg contains a bit for each recording source */
-#define SOUND_MIXER_DEVMASK 0xfe /* Arg contains a bit for each supported device */
-#define SOUND_MIXER_RECMASK 0xfd /* Arg contains a bit for each supported recording source */
-#define SOUND_MIXER_CAPS 0xfc
-# define SOUND_CAP_EXCL_INPUT 0x00000001 /* Only one recording source at a time */
-# define SOUND_CAP_NOLEGACY 0x00000004 /* For internal use only */
-# define SOUND_CAP_NORECSRC 0x00000008
-#define SOUND_MIXER_STEREODEVS 0xfb /* Mixer channels supporting stereo */
-
-/* OSS/Free ONLY */
-#define SOUND_MIXER_OUTSRC 0xfa /* Arg contains a bit for each input source to output */
-#define SOUND_MIXER_OUTMASK 0xf9 /* Arg contains a bit for each supported input source to output */
-/* OSS/Free ONLY */
-
-/* Device mask bits */
-
-#define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
-#define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
-#define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
-#define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
-#define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
-#define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
-#define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
-#define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
-#define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
-#define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
-#define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
-#define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
-#define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
-#define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
-#define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
-#define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
-#define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
-#define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
-#define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
-#define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
-#define SOUND_MASK_MONO (1 << SOUND_MIXER_MONO)
-#define SOUND_MASK_PHONE (1 << SOUND_MIXER_PHONE)
-#define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
-#define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
-#define SOUND_MASK_DEPTH (1 << SOUND_MIXER_DEPTH)
-#define SOUND_MASK_REARVOL (1 << SOUND_MIXER_REARVOL)
-#define SOUND_MASK_CENTERVOL (1 << SOUND_MIXER_CENTERVOL)
-#define SOUND_MASK_SIDEVOL (1 << SOUND_MIXER_SIDEVOL)
-
-/* Note! SOUND_MASK_SURRVOL is alias of SOUND_MASK_SIDEVOL */
-#define SOUND_MASK_SURRVOL (1 << SOUND_MIXER_SIDEVOL)
-
-/* Obsolete macros */
-#define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)
-#define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)
-#define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)
-
-#define MIXER_READ(dev) __SIOR('M', dev, int)
-#define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
-#define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
-#define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
-#define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
-#define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
-#define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
-#define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
-#define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
-#define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
-#define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
-#define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
-#define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
-#define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
-#define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
-#define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
-#define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
-#define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
-
-/* Obsolete macros */
-#define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)
-#define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)
-#define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)
-
-#define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
-#define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
-#define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
-#define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
-#define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
-
-#define MIXER_WRITE(dev) __SIOWR('M', dev, int)
-#define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
-#define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
-#define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
-#define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
-#define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
-#define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
-#define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
-#define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
-#define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
-#define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
-#define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
-#define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
-#define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
-#define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
-#define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
-#define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
-#define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
-
-/* Obsolete macros */
-#define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)
-#define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)
-#define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)
-
-#define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
-
-typedef struct mixer_info /* OBSOLETE */
-{
- char id[16];
- char name[32];
- int modify_counter;
- int card_number;
- int port_number;
- char handle[32];
-} mixer_info;
-
-/* SOUND_MIXER_INFO is obsolete - use SNDCTL_MIXERINFO instead */
-#define SOUND_MIXER_INFO __SIOR ('M', 101, mixer_info)
-
-/*
- * Two ioctls for special souncard function (OSS/Free only)
- */
-#define SOUND_MIXER_AGC _SIOWR('M', 103, int)
-#define SOUND_MIXER_3DSE _SIOWR('M', 104, int)
-/*
- * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers.
- * These features can be used when accessing device specific features.
- */
-#define SOUND_MIXER_PRIVATE1 __SIOWR('M', 111, int)
-#define SOUND_MIXER_PRIVATE2 __SIOWR('M', 112, int)
-#define SOUND_MIXER_PRIVATE3 __SIOWR('M', 113, int)
-#define SOUND_MIXER_PRIVATE4 __SIOWR('M', 114, int)
-#define SOUND_MIXER_PRIVATE5 __SIOWR('M', 115, int)
-
-/* The following two controls were never implemented and they should not be used. */
-#define SOUND_MIXER_READ_MAINVOL __SIOR ('M', 116, int)
-#define SOUND_MIXER_WRITE_MAINVOL __SIOWR('M', 116, int)
-
-/*
- * SOUND_MIXER_GETLEVELS and SOUND_MIXER_SETLEVELS calls can be used
- * for querying current mixer settings from the driver and for loading
- * default volume settings _prior_ activating the mixer (loading
- * doesn't affect current state of the mixer hardware). These calls
- * are for internal use by the driver software only.
- */
-
-typedef struct mixer_vol_table
-{
- int num; /* Index to volume table */
- char name[32];
- int levels[32];
-} mixer_vol_table;
-
-#define SOUND_MIXER_GETLEVELS __SIOWR('M', 116, mixer_vol_table)
-#define SOUND_MIXER_SETLEVELS __SIOWR('M', 117, mixer_vol_table)
-
-#define OSS_GETVERSION __SIOR ('M', 118, int)
-
-/*
- * Calls to set/get the recording gain for the currently active
- * recording source. These calls automatically map to the right control.
- * Note that these calls are not supported by all drivers. In this case
- * the call will return -1 with errno set to EINVAL
- *
- * The _MONGAIN work in similar way but set/get the monitoring gain for
- * the currently selected recording source.
- */
-#define SOUND_MIXER_READ_RECGAIN __SIOR ('M', 119, int)
-#define SOUND_MIXER_WRITE_RECGAIN __SIOWR('M', 119, int)
-#define SOUND_MIXER_READ_MONGAIN __SIOR ('M', 120, int)
-#define SOUND_MIXER_WRITE_MONGAIN __SIOWR('M', 120, int)
-
-/* The following call is for driver development time purposes. It's not
- * present in any released drivers.
- */
-typedef unsigned char oss_reserved_t[512];
-#define SOUND_MIXER_RESERVED __SIOWR('M', 121, oss_reserved_t)
-#endif /* ifndef NO_LEGACY_MIXER */
-
-/*
- *************************************************************************
- * The "new" mixer API of OSS 4.0 and later.
- *
- * This improved mixer API makes it possible to access every possible feature
- * of every possible device. However you should read the mixer programming
- * section of the OSS API Developer's Manual. There is no chance that you
- * could use this interface correctly just by examining this header.
- */
-
-typedef struct oss_sysinfo
-{
- char product[32]; /* For example OSS/Free, OSS/Linux or OSS/Solaris */
- char version[32]; /* For example 4.0a */
- int versionnum; /* See OSS_GETVERSION */
- char options[128]; /* Reserved */
-
- int numaudios; /* # of audio/dsp devices */
- int openedaudio[8]; /* Bit mask telling which audio devices are busy */
-
- int numsynths; /* # of availavle synth devices */
- int nummidis; /* # of available MIDI ports */
- int numtimers; /* # of available timer devices */
- int nummixers; /* # of mixer devices */
-
- int openedmidi[8]; /* Bit mask telling which midi devices are busy */
- int numcards; /* Number of sound cards in the system */
- int numaudioengines; /* Number of audio engines in the system */
- char license[16]; /* For example "GPL" or "CDDL" */
- int filler[236]; /* For future expansion (set to -1) */
-} oss_sysinfo;
-
-typedef struct oss_mixext
-{
- int dev; /* Mixer device number */
- int ctrl; /* Controller number */
- int type; /* Entry type */
-# define MIXT_DEVROOT 0 /* Device root entry */
-# define MIXT_GROUP 1 /* Controller group */
-# define MIXT_ONOFF 2 /* OFF (0) or ON (1) */
-# define MIXT_ENUM 3 /* Enumerated (0 to maxvalue) */
-# define MIXT_MONOSLIDER 4 /* Mono slider (0 to 255) */
-# define MIXT_STEREOSLIDER 5 /* Stereo slider (dual 0 to 255) */
-# define MIXT_MESSAGE 6 /* (Readable) textual message */
-# define MIXT_MONOVU 7 /* VU meter value (mono) */
-# define MIXT_STEREOVU 8 /* VU meter value (stereo) */
-# define MIXT_MONOPEAK 9 /* VU meter peak value (mono) */
-# define MIXT_STEREOPEAK 10 /* VU meter peak value (stereo) */
-# define MIXT_RADIOGROUP 11 /* Radio button group */
-# define MIXT_MARKER 12 /* Separator between normal and extension entries */
-# define MIXT_VALUE 13 /* Decimal value entry */
-# define MIXT_HEXVALUE 14 /* Hexadecimal value entry */
-# define MIXT_MONODB 15 /* OBSOLETE */
-# define MIXT_STEREODB 16 /* OBSOLETE */
-# define MIXT_SLIDER 17 /* Slider (mono) with full (31 bit) postitive integer range */
-# define MIXT_3D 18
-
-/*
- * Sliders with range expanded to 15 bits per channel (0-32767)
- */
-# define MIXT_MONOSLIDER16 19
-# define MIXT_STEREOSLIDER16 20
-# define MIXT_MUTE 21 /* Mute=1, unmute=0 */
-
- /**************************************************************/
-
- /* Possible value range (minvalue to maxvalue) */
- /* Note that maxvalue may also be smaller than minvalue */
- int maxvalue;
- int minvalue;
-
- int flags;
-# define MIXF_READABLE 0x00000001 /* Has readable value */
-# define MIXF_WRITEABLE 0x00000002 /* Has writeable value */
-# define MIXF_POLL 0x00000004 /* May change itself */
-# define MIXF_HZ 0x00000008 /* Herz scale */
-# define MIXF_STRING 0x00000010 /* Use dynamic extensions for value */
-# define MIXF_DYNAMIC 0x00000010 /* Supports dynamic extensions */
-# define MIXF_OKFAIL 0x00000020 /* Interpret value as 1=OK, 0=FAIL */
-# define MIXF_FLAT 0x00000040 /* Flat vertical space requirements */
-# define MIXF_LEGACY 0x00000080 /* Legacy mixer control group */
-# define MIXF_CENTIBEL 0x00000100 /* Centibel (0.1 dB) step size */
-# define MIXF_DECIBEL 0x00000200 /* Step size of 1 dB */
-# define MIXF_MAINVOL 0x00000400 /* Main volume control */
-# define MIXF_PCMVOL 0x00000800 /* PCM output volume control */
-# define MIXF_RECVOL 0x00001000 /* PCM recording volume control */
-# define MIXF_MONVOL 0x00002000 /* Input->output monitor volume */
-# define MIXF_WIDE 0x00004000 /* Enum control has wide labels */
-# define MIXF_DESCR 0x00008000 /* Description (tooltip) available */
- char id[16]; /* Mnemonic ID (mainly for internal use) */
- int parent; /* Entry# of parent (group) node (-1 if root) */
-
- int dummy; /* Internal use */
-
- int timestamp;
-
- char data[64]; /* Misc data (entry type dependent) */
- unsigned char enum_present[32]; /* Mask of allowed enum values */
- int control_no; /* SOUND_MIXER_VOLUME..SOUND_MIXER_MIDI */
- /* (-1 means not indicated) */
-
-/*
- * The desc field is reserved for internal purposes of OSS. It should not be
- * used by applications.
- */
- unsigned int desc;
-#define MIXEXT_SCOPE_MASK 0x0000003f
-#define MIXEXT_SCOPE_OTHER 0x00000000
-#define MIXEXT_SCOPE_INPUT 0x00000001
-#define MIXEXT_SCOPE_OUTPUT 0x00000002
-#define MIXEXT_SCOPE_MONITOR 0x00000003
-#define MIXEXT_SCOPE_RECSWITCH 0x00000004
-
- char extname[32];
- int update_counter;
- int rgbcolor; /* 0 means default color (not black) . Otherwise 24 bit RGB color */
- int filler[6];
-} oss_mixext;
-
-/*
- * Recommended colors to be used in the rgbcolor field. These match the
- * colors used as the audio jack colors in HD audio motherboards.
- */
-#define OSS_RGB_BLUE 0x7aabde // Light blue
-#define OSS_RGB_GREEN 0xb3c98c // Lime green
-#define OSS_RGB_PINK 0xe88c99
-#define OSS_RGB_GRAY 0xd1ccc4
-#define OSS_RGB_BLACK 0x2b2926 // Light black
-#define OSS_RGB_ORANGE 0xe89e47
-#define OSS_RGB_RED 0xff0000
-#define OSS_RGB_YELLOW 0xffff00
-#define OSS_RGB_PURPLE 0x800080
-#define OSS_RGB_WHITE 0xf8f8ff
-
-typedef struct oss_mixext_root
-{
- char id[16];
- char name[48];
-} oss_mixext_root;
-
-typedef struct oss_mixer_value
-{
- int dev;
- int ctrl;
- int value;
- int flags; /* Reserved for future use. Initialize to 0 */
- int timestamp; /* Must be set to oss_mixext.timestamp */
- int filler[8]; /* Reserved for future use. Initialize to 0 */
-} oss_mixer_value;
-
-#define OSS_ENUM_MAXVALUE 255
-#define OSS_ENUM_STRINGSIZE 3000
-typedef struct oss_mixer_enuminfo
-{
- int dev;
- int ctrl;
- int nvalues;
- int version; /* Read the manual */
- short strindex[OSS_ENUM_MAXVALUE];
- char strings[OSS_ENUM_STRINGSIZE];
-} oss_mixer_enuminfo;
-
-#define OPEN_READ PCM_ENABLE_INPUT
-#define OPEN_WRITE PCM_ENABLE_OUTPUT
-#define OPEN_READWRITE (OPEN_READ|OPEN_WRITE)
-
-typedef struct oss_audioinfo
-{
- int dev; /* Audio device number */
- char name[64];
- int busy; /* 0, OPEN_READ, OPEN_WRITE or OPEN_READWRITE */
- int pid;
- int caps; /* PCM_CAP_INPUT, PCM_CAP_OUTPUT */
- int iformats, oformats;
- int magic; /* Reserved for internal use */
- char cmd[64]; /* Command using the device (if known) */
- int card_number;
- int port_number;
- int mixer_dev;
- int legacy_device; /* Obsolete field. Replaced by devnode */
- int enabled; /* 1=enabled, 0=device not ready at this moment */
- int flags; /* For internal use only - no practical meaning */
- int min_rate, max_rate; /* Sample rate limits */
- int min_channels, max_channels; /* Number of channels supported */
- int binding; /* DSP_BIND_FRONT, etc. 0 means undefined */
- int rate_source;
- char handle[32];
-#define OSS_MAX_SAMPLE_RATES 20 /* Cannot be changed */
- unsigned int nrates, rates[OSS_MAX_SAMPLE_RATES]; /* Please read the manual before using these */
- oss_longname_t song_name; /* Song name (if given) */
- oss_label_t label; /* Device label (if given) */
- int latency; /* In usecs, -1=unknown */
- oss_devnode_t devnode; /* Device special file name (absolute path) */
- int next_play_engine; /* Read the documentation for more info */
- int next_rec_engine; /* Read the documentation for more info */
- int filler[184];
-} oss_audioinfo;
-
-typedef struct oss_mixerinfo
-{
- int dev;
- char id[16];
- char name[32];
- int modify_counter;
- int card_number;
- int port_number;
- char handle[32];
- int magic; /* Reserved */
- int enabled; /* Reserved */
- int caps;
-#define MIXER_CAP_VIRTUAL 0x00000001
-#define MIXER_CAP_LAYOUT_B 0x00000002 /* For internal use only */
-#define MIXER_CAP_NARROW 0x00000004 /* Conserve horiz space */
- int flags; /* Reserved */
- int nrext;
- /*
- * The priority field can be used to select the default (motherboard)
- * mixer device. The mixer with the highest priority is the
- * most preferred one. -2 or less means that this device cannot be used
- * as the default mixer.
- */
- int priority;
- oss_devnode_t devnode; /* Device special file name (absolute path) */
- int legacy_device;
- int filler[245]; /* Reserved */
-} oss_mixerinfo;
-
-typedef struct oss_midi_info
-{
- int dev; /* Midi device number */
- char name[64];
- int busy; /* 0, OPEN_READ, OPEN_WRITE or OPEN_READWRITE */
- int pid;
- char cmd[64]; /* Command using the device (if known) */
- int caps;
-#define MIDI_CAP_MPU401 0x00000001 /**** OBSOLETE ****/
-#define MIDI_CAP_INPUT 0x00000002
-#define MIDI_CAP_OUTPUT 0x00000004
-#define MIDI_CAP_INOUT (MIDI_CAP_INPUT|MIDI_CAP_OUTPUT)
-#define MIDI_CAP_VIRTUAL 0x00000008 /* Pseudo device */
-#define MIDI_CAP_MTCINPUT 0x00000010 /* Supports SNDCTL_MIDI_MTCINPUT */
-#define MIDI_CAP_CLIENT 0x00000020 /* Virtual client side device */
-#define MIDI_CAP_SERVER 0x00000040 /* Virtual server side device */
-#define MIDI_CAP_INTERNAL 0x00000080 /* Internal (synth) device */
-#define MIDI_CAP_EXTERNAL 0x00000100 /* external (MIDI port) device */
-#define MIDI_CAP_PTOP 0x00000200 /* Point to point link to one device */
-#define MIDI_CAP_MTC 0x00000400 /* MTC/SMPTE (control) device */
- int magic; /* Reserved for internal use */
- int card_number;
- int port_number;
- int enabled; /* 1=enabled, 0=device not ready at this moment */
- int flags; /* For internal use only - no practical meaning */
- char handle[32];
- oss_longname_t song_name; /* Song name (if known) */
- oss_label_t label; /* Device label (if given) */
- int latency; /* In usecs, -1=unknown */
- oss_devnode_t devnode; /* Device special file name (absolute path) */
- int legacy_device; /* Legacy device mapping */
- int filler[235];
-} oss_midi_info;
-
-typedef struct oss_card_info
-{
- int card;
- char shortname[16];
- char longname[128];
- int flags;
- char hw_info[400];
- int intr_count, ack_count;
- int filler[154];
-} oss_card_info;
-
-#define SNDCTL_SYSINFO __SIOR ('X', 1, oss_sysinfo)
-#define OSS_SYSINFO SNDCTL_SYSINFO /* Old name */
-
-#define SNDCTL_MIX_NRMIX __SIOR ('X', 2, int)
-#define SNDCTL_MIX_NREXT __SIOWR('X', 3, int)
-#define SNDCTL_MIX_EXTINFO __SIOWR('X', 4, oss_mixext)
-#define SNDCTL_MIX_READ __SIOWR('X', 5, oss_mixer_value)
-#define SNDCTL_MIX_WRITE __SIOWR('X', 6, oss_mixer_value)
-
-#define SNDCTL_AUDIOINFO __SIOWR('X', 7, oss_audioinfo)
-#define SNDCTL_MIX_ENUMINFO __SIOWR('X', 8, oss_mixer_enuminfo)
-#define SNDCTL_MIDIINFO __SIOWR('X', 9, oss_midi_info)
-#define SNDCTL_MIXERINFO __SIOWR('X',10, oss_mixerinfo)
-#define SNDCTL_CARDINFO __SIOWR('X',11, oss_card_info)
-#define SNDCTL_ENGINEINFO __SIOWR('X',12, oss_audioinfo)
-#define SNDCTL_AUDIOINFO_EX __SIOWR('X',13, oss_audioinfo)
-
-#define SNDCTL_MIX_DESCRIPTION __SIOWR('X',14, oss_mixer_enuminfo)
-
-/* ioctl codes 'X', 200-255 are reserved for internal use */
-
-/*
- * Few more "globally" available ioctl calls.
- */
-#define SNDCTL_SETSONG __SIOW ('Y', 2, oss_longname_t)
-#define SNDCTL_GETSONG __SIOR ('Y', 2, oss_longname_t)
-#define SNDCTL_SETNAME __SIOW ('Y', 3, oss_longname_t)
-#define SNDCTL_SETLABEL __SIOW ('Y', 4, oss_label_t)
-#define SNDCTL_GETLABEL __SIOR ('Y', 4, oss_label_t)
-/*
- * The "new" mixer API definitions end here.
- ***************************************
- */
-
-/*
- *********************************************************
- * Few routines that are included in -lOSSlib
- *
- * At this moment this interface is not used. OSSlib contains just
- * stubs that call the related system calls directly.
- */
-#ifdef OSSLIB
-extern int osslib_open (const char *path, int flags, int dummy);
-extern void osslib_close (int fd);
-extern int osslib_write (int fd, const void *buf, int count);
-extern int osslib_read (int fd, void *buf, int count);
-extern int osslib_ioctl (int fd, unsigned int request, void *arg);
-#else
-# define osslib_open open
-# define osslib_close close
-# define osslib_write write
-# define osslib_read read
-# define osslib_ioctl ioctl
-#endif
-
-#if 1
-#define SNDCTL_DSP_NONBLOCK __SIO ('P',14) /* Obsolete. Not supported any more */
-#endif
-
-#if 1
-/*
- * Some obsolete macros that are not part of Open Sound System API.
- */
-#define SOUND_PCM_READ_RATE SOUND_PCM_READ_RATE_is_obsolete
-#define SOUND_PCM_READ_BITS SOUND_PCM_READ_BITS_is_obsolete
-#define SOUND_PCM_READ_CHANNELS SOUND_PCM_READ_CHANNELS_is_obsolete
-#define SOUND_PCM_WRITE_RATE SOUND_PCM_WRITE_RATE_is_obsolet_use_SNDCTL_DSP_SPEED_instead
-#define SOUND_PCM_WRITE_CHANNELS SOUND_PCM_WRITE_CHANNELS_is_obsolete_use_SNDCTL_DSP_CHANNELS_instead
-#define SOUND_PCM_WRITE_BITS SOUND_PCM_WRITE_BITS_is_obsolete_use_SNDCTL_DSP_SETFMT_instead
-#define SOUND_PCM_POST SOUND_PCM_POST_is_obsolete_use_SNDCTL_DSP_POST_instead
-#define SOUND_PCM_RESET SOUND_PCM_RESET_is_obsolete_use_SNDCTL_DSP_HALT_instead
-#define SOUND_PCM_SYNC SOUND_PCM_SYNC_is_obsolete_use_SNDCTL_DSP_SYNC_instead
-#define SOUND_PCM_SUBDIVIDE SOUND_PCM_SUBDIVIDE_is_obsolete_use_SNDCTL_DSP_SUBDIVIDE_instead
-#define SOUND_PCM_SETFRAGMENT SOUND_PCM_SETFRAGMENT_is_obsolete_use_SNDCTL_DSP_SETFRAGMENT_instead
-#define SOUND_PCM_GETFMTS SOUND_PCM_GETFMTS_is_obsolete_use_SNDCTL_DSP_GETFMTS_instead
-#define SOUND_PCM_SETFMT SOUND_PCM_SETFMT_is_obsolete_use_SNDCTL_DSP_SETFMT_instead
-#define SOUND_PCM_GETOSPACE SOUND_PCM_GETOSPACE_is_obsolete_use_SNDCTL_DSP_GETOSPACE_instead
-#define SOUND_PCM_GETISPACE SOUND_PCM_GETISPACE_is_obsolete_use_SNDCTL_DSP_GETISPACE_instead
-#define SOUND_PCM_NONBLOCK SOUND_PCM_NONBLOCK_is_obsolete_use_SNDCTL_DSP_NONBLOCK_instead
-#define SOUND_PCM_GETCAPS SOUND_PCM_GETCAPS_is_obsolete_use_SNDCTL_DSP_GETCAPS_instead
-#define SOUND_PCM_GETTRIGGER SOUND_PCM_GETTRIGGER_is_obsolete_use_SNDCTL_DSP_GETTRIGGER_instead
-#define SOUND_PCM_SETTRIGGER SOUND_PCM_SETTRIGGER_is_obsolete_use_SNDCTL_DSP_SETTRIGGER_instead
-#define SOUND_PCM_SETSYNCRO SOUND_PCM_SETSYNCRO_is_obsolete_use_SNDCTL_DSP_SETSYNCRO_instead
-#define SOUND_PCM_GETIPTR SOUND_PCM_GETIPTR_is_obsolete_use_SNDCTL_DSP_GETIPTR_instead
-#define SOUND_PCM_GETOPTR SOUND_PCM_GETOPTR_is_obsolete_use_SNDCTL_DSP_GETOPTR_instead
-#define SOUND_PCM_MAPINBUF SOUND_PCM_MAPINBUF_is_obsolete_use_SNDCTL_DSP_MAPINBUF_instead
-#define SOUND_PCM_MAPOUTBUF SOUND_PCM_MAPOUTBUF_is_obsolete_use_SNDCTL_DSP_MAPOUTBUF_instead
-#endif
-
-#endif
diff --git a/wearable/sys/oss4/oss4-source.c b/wearable/sys/oss4/oss4-source.c
deleted file mode 100644
index eadb4c5..0000000
--- a/wearable/sys/oss4/oss4-source.c
+++ /dev/null
@@ -1,997 +0,0 @@
-/* GStreamer OSS4 audio source
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-oss4src
- *
- * This element lets you record sound using the Open Sound System (OSS)
- * version 4.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v oss4src ! queue ! audioconvert ! vorbisenc ! oggmux ! filesink location=mymusic.ogg
- * ]| will record sound from your sound card using OSS4 and encode it to an
- * Ogg/Vorbis file (this will only work if your mixer settings are right
- * and the right inputs areenabled etc.)
- * </refsect2>
- *
- * Since: 0.10.7
- */
-
-/* FIXME: make sure we're not doing ioctls from the app thread (e.g. via the
- * mixer interface) while recording */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#include <gst/interfaces/mixer.h>
-#include <gst/gst-i18n-plugin.h>
-
-#define NO_LEGACY_MIXER
-#include "oss4-audio.h"
-#include "oss4-source.h"
-#include "oss4-property-probe.h"
-#include "oss4-soundcard.h"
-
-#define GST_OSS4_SOURCE_IS_OPEN(src) (GST_OSS4_SOURCE(src)->fd != -1)
-
-GST_DEBUG_CATEGORY_EXTERN (oss4src_debug);
-#define GST_CAT_DEFAULT oss4src_debug
-
-#define DEFAULT_DEVICE NULL
-#define DEFAULT_DEVICE_NAME NULL
-
-enum
-{
- PROP_0,
- PROP_DEVICE,
- PROP_DEVICE_NAME
-};
-
-static void gst_oss4_source_init_interfaces (GType type);
-
-GST_BOILERPLATE_FULL (GstOss4Source, gst_oss4_source, GstAudioSrc,
- GST_TYPE_AUDIO_SRC, gst_oss4_source_init_interfaces);
-
-static void gst_oss4_source_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_oss4_source_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-
-static void gst_oss4_source_dispose (GObject * object);
-static void gst_oss4_source_finalize (GstOss4Source * osssrc);
-
-static GstCaps *gst_oss4_source_getcaps (GstBaseSrc * bsrc);
-
-static gboolean gst_oss4_source_open (GstAudioSrc * asrc,
- gboolean silent_errors);
-static gboolean gst_oss4_source_open_func (GstAudioSrc * asrc);
-static gboolean gst_oss4_source_close (GstAudioSrc * asrc);
-static gboolean gst_oss4_source_prepare (GstAudioSrc * asrc,
- GstRingBufferSpec * spec);
-static gboolean gst_oss4_source_unprepare (GstAudioSrc * asrc);
-static guint gst_oss4_source_read (GstAudioSrc * asrc, gpointer data,
- guint length);
-static guint gst_oss4_source_delay (GstAudioSrc * asrc);
-static void gst_oss4_source_reset (GstAudioSrc * asrc);
-
-static void
-gst_oss4_source_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- GstPadTemplate *templ;
-
- gst_element_class_set_details_simple (element_class,
- "OSS v4 Audio Source", "Source/Audio",
- "Capture from a sound card via OSS version 4",
- "Tim-Philipp Müller <tim centricular net>");
-
- templ = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_oss4_audio_get_template_caps ());
- gst_element_class_add_pad_template (element_class, templ);
- gst_object_unref (templ);
-}
-
-static void
-gst_oss4_source_class_init (GstOss4SourceClass * klass)
-{
- GObjectClass *gobject_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstAudioSrcClass *gstaudiosrc_class;
-
- gobject_class = (GObjectClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstaudiosrc_class = (GstAudioSrcClass *) klass;
-
- gobject_class->dispose = gst_oss4_source_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_oss4_source_finalize;
- gobject_class->get_property = gst_oss4_source_get_property;
- gobject_class->set_property = gst_oss4_source_set_property;
-
- gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_oss4_source_getcaps);
-
- gstaudiosrc_class->open = GST_DEBUG_FUNCPTR (gst_oss4_source_open_func);
- gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_oss4_source_prepare);
- gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_oss4_source_unprepare);
- gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_oss4_source_close);
- gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_oss4_source_read);
- gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_oss4_source_delay);
- gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_oss4_source_reset);
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "OSS4 device (e.g. /dev/oss/hdaudio0/pcm0 or /dev/dspN) "
- "(NULL = use first available device)",
- DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_oss4_source_init (GstOss4Source * osssrc, GstOss4SourceClass * g_class)
-{
- const gchar *device;
-
- device = g_getenv ("AUDIODEV");
- if (device == NULL)
- device = DEFAULT_DEVICE;
-
- osssrc->fd = -1;
- osssrc->device = g_strdup (device);
- osssrc->device_name = g_strdup (DEFAULT_DEVICE_NAME);
- osssrc->device_name = NULL;
-}
-
-static void
-gst_oss4_source_finalize (GstOss4Source * oss)
-{
- g_free (oss->device);
- oss->device = NULL;
-
- g_list_free (oss->property_probe_list);
- oss->property_probe_list = NULL;
-
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (oss));
-}
-
-static void
-gst_oss4_source_dispose (GObject * object)
-{
- GstOss4Source *oss = GST_OSS4_SOURCE (object);
-
- if (oss->probed_caps) {
- gst_caps_unref (oss->probed_caps);
- oss->probed_caps = NULL;
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_oss4_source_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOss4Source *oss;
-
- oss = GST_OSS4_SOURCE (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (oss);
- if (oss->fd == -1) {
- g_free (oss->device);
- oss->device = g_value_dup_string (value);
- g_free (oss->device_name);
- oss->device_name = NULL;
- } else {
- g_warning ("%s: can't change \"device\" property while audio source "
- "is open", GST_OBJECT_NAME (oss));
- }
- GST_OBJECT_UNLOCK (oss);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_oss4_source_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOss4Source *oss;
-
- oss = GST_OSS4_SOURCE (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (oss);
- g_value_set_string (value, oss->device);
- GST_OBJECT_UNLOCK (oss);
- break;
- case PROP_DEVICE_NAME:
- GST_OBJECT_LOCK (oss);
- /* If device is set, try to retrieve the name even if we're not open */
- if (oss->fd == -1 && oss->device != NULL) {
- if (gst_oss4_source_open (GST_AUDIO_SRC (oss), TRUE)) {
- g_value_set_string (value, oss->device_name);
- gst_oss4_source_close (GST_AUDIO_SRC (oss));
- } else {
- gchar *name = NULL;
-
- gst_oss4_property_probe_find_device_name_nofd (GST_OBJECT (oss),
- oss->device, &name);
- g_value_set_string (value, name);
- g_free (name);
- }
- } else {
- g_value_set_string (value, oss->device_name);
- }
-
- GST_OBJECT_UNLOCK (oss);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_oss4_source_getcaps (GstBaseSrc * bsrc)
-{
- GstOss4Source *oss;
- GstCaps *caps;
-
- oss = GST_OSS4_SOURCE (bsrc);
-
- if (oss->fd == -1) {
- caps = gst_oss4_audio_get_template_caps ();
- } else if (oss->probed_caps) {
- caps = gst_caps_copy (oss->probed_caps);
- } else {
- caps = gst_oss4_audio_probe_caps (GST_OBJECT (oss), oss->fd);
- if (caps != NULL && !gst_caps_is_empty (caps)) {
- oss->probed_caps = gst_caps_copy (caps);
- }
- }
-
- return caps;
-}
-
-/* note: we must not take the object lock here unless we fix up get_property */
-static gboolean
-gst_oss4_source_open (GstAudioSrc * asrc, gboolean silent_errors)
-{
- GstOss4Source *oss;
- gchar *device;
- int mode;
-
- oss = GST_OSS4_SOURCE (asrc);
-
- if (oss->device)
- device = g_strdup (oss->device);
- else
- device = gst_oss4_audio_find_device (GST_OBJECT_CAST (oss));
-
- /* desperate times, desperate measures */
- if (device == NULL)
- device = g_strdup ("/dev/dsp0");
-
- GST_INFO_OBJECT (oss, "Trying to open OSS4 device '%s'", device);
-
- /* we open in non-blocking mode even if we don't really want to do writes
- * non-blocking because we can't be sure that this is really a genuine
- * OSS4 device with well-behaved drivers etc. We really don't want to
- * hang forever under any circumstances. */
- oss->fd = open (device, O_RDONLY | O_NONBLOCK, 0);
- if (oss->fd == -1) {
- switch (errno) {
- case EBUSY:
- goto busy;
- case EACCES:
- goto no_permission;
- default:
- goto open_failed;
- }
- }
-
- GST_INFO_OBJECT (oss, "Opened device");
-
- /* Make sure it's OSS4. If it's old OSS, let osssink handle it */
- if (!gst_oss4_audio_check_version (GST_OBJECT_CAST (oss), oss->fd))
- goto legacy_oss;
-
- /* now remove the non-blocking flag. */
- mode = fcntl (oss->fd, F_GETFL);
- mode &= ~O_NONBLOCK;
- if (fcntl (oss->fd, F_SETFL, mode) < 0) {
- /* some drivers do no support unsetting the non-blocking flag, try to
- * close/open the device then. This is racy but we error out properly. */
- GST_WARNING_OBJECT (oss, "failed to unset O_NONBLOCK (buggy driver?), "
- "will try to re-open device now");
- gst_oss4_source_close (asrc);
- if ((oss->fd = open (device, O_RDONLY, 0)) == -1)
- goto non_block;
- }
-
- oss->open_device = device;
-
- /* not using ENGINEINFO here because it sometimes returns a different and
- * less useful name than AUDIOINFO for the same device */
- if (!gst_oss4_property_probe_find_device_name (GST_OBJECT (oss), oss->fd,
- oss->open_device, &oss->device_name)) {
- oss->device_name = NULL;
- }
-
- return TRUE;
-
- /* ERRORS */
-busy:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, BUSY,
- (_("Could not open audio device for playback. "
- "Device is being used by another application.")), (NULL));
- }
- g_free (device);
- return FALSE;
- }
-no_permission:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open audio device for playback. "
- "You don't have permission to open the device.")),
- GST_ERROR_SYSTEM);
- }
- g_free (device);
- return FALSE;
- }
-open_failed:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open audio device for playback.")), GST_ERROR_SYSTEM);
- }
- g_free (device);
- return FALSE;
- }
-legacy_oss:
- {
- gst_oss4_source_close (asrc);
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, OPEN_READ,
- (_("Could not open audio device for playback. "
- "This version of the Open Sound System is not supported by this "
- "element.")), ("Try the 'osssink' element instead"));
- }
- g_free (device);
- return FALSE;
- }
-non_block:
- {
- if (!silent_errors) {
- GST_ELEMENT_ERROR (oss, RESOURCE, SETTINGS, (NULL),
- ("Unable to set device %s into non-blocking mode: %s",
- oss->device, g_strerror (errno)));
- }
- g_free (device);
- return FALSE;
- }
-}
-
-static gboolean
-gst_oss4_source_open_func (GstAudioSrc * asrc)
-{
- return gst_oss4_source_open (asrc, FALSE);
-}
-
-static void
-gst_oss4_source_free_mixer_tracks (GstOss4Source * oss)
-{
- g_list_foreach (oss->tracks, (GFunc) g_object_unref, NULL);
- g_list_free (oss->tracks);
- oss->tracks = NULL;
-}
-
-static gboolean
-gst_oss4_source_close (GstAudioSrc * asrc)
-{
- GstOss4Source *oss;
-
- oss = GST_OSS4_SOURCE (asrc);
-
- if (oss->fd != -1) {
- GST_DEBUG_OBJECT (oss, "closing device");
- close (oss->fd);
- oss->fd = -1;
- }
-
- oss->bytes_per_sample = 0;
-
- gst_caps_replace (&oss->probed_caps, NULL);
-
- g_free (oss->open_device);
- oss->open_device = NULL;
-
- g_free (oss->device_name);
- oss->device_name = NULL;
-
- gst_oss4_source_free_mixer_tracks (oss);
-
- return TRUE;
-}
-
-static gboolean
-gst_oss4_source_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec)
-{
- GstOss4Source *oss;
-
- oss = GST_OSS4_SOURCE (asrc);
-
- if (!gst_oss4_audio_set_format (GST_OBJECT_CAST (oss), oss->fd, spec)) {
- GST_WARNING_OBJECT (oss, "Couldn't set requested format %" GST_PTR_FORMAT,
- spec->caps);
- return FALSE;
- }
-
- oss->bytes_per_sample = spec->bytes_per_sample;
- return TRUE;
-}
-
-static gboolean
-gst_oss4_source_unprepare (GstAudioSrc * asrc)
-{
- /* could do a SNDCTL_DSP_HALT, but the OSS manual recommends a close/open,
- * since HALT won't properly reset some devices, apparently */
-
- if (!gst_oss4_source_close (asrc))
- goto couldnt_close;
-
- if (!gst_oss4_source_open_func (asrc))
- goto couldnt_reopen;
-
- return TRUE;
-
- /* ERRORS */
-couldnt_close:
- {
- GST_DEBUG_OBJECT (asrc, "Couldn't close the audio device");
- return FALSE;
- }
-couldnt_reopen:
- {
- GST_DEBUG_OBJECT (asrc, "Couldn't reopen the audio device");
- return FALSE;
- }
-}
-
-static guint
-gst_oss4_source_read (GstAudioSrc * asrc, gpointer data, guint length)
-{
- GstOss4Source *oss;
- int n;
-
- oss = GST_OSS4_SOURCE_CAST (asrc);
-
- n = read (oss->fd, data, length);
- GST_LOG_OBJECT (asrc, "%u bytes, %u samples", n, n / oss->bytes_per_sample);
-
- if (G_UNLIKELY (n < 0)) {
- switch (errno) {
- case ENOTSUP:
- case EACCES:{
- /* This is the most likely cause, I think */
- GST_ELEMENT_ERROR (asrc, RESOURCE, READ,
- (_("Recording is not supported by this audio device.")),
- ("read: %s (device: %s) (maybe this is an output-only device?)",
- g_strerror (errno), oss->open_device));
- break;
- }
- default:{
- GST_ELEMENT_ERROR (asrc, RESOURCE, READ,
- (_("Error recording from audio device.")),
- ("read: %s (device: %s)", g_strerror (errno), oss->open_device));
- break;
- }
- }
- }
-
- return (guint) n;
-}
-
-static guint
-gst_oss4_source_delay (GstAudioSrc * asrc)
-{
- audio_buf_info info = { 0, };
- GstOss4Source *oss;
- guint delay;
-
- oss = GST_OSS4_SOURCE_CAST (asrc);
-
- if (ioctl (oss->fd, SNDCTL_DSP_GETISPACE, &info) == -1) {
- GST_LOG_OBJECT (oss, "GETISPACE failed: %s", g_strerror (errno));
- return 0;
- }
-
- delay = (info.fragstotal * info.fragsize) - info.bytes;
- GST_LOG_OBJECT (oss, "fragstotal:%d, fragsize:%d, bytes:%d, delay:%d",
- info.fragstotal, info.fragsize, info.bytes, delay);
- return delay;
-}
-
-static void
-gst_oss4_source_reset (GstAudioSrc * asrc)
-{
- /* There's nothing we can do here really: OSS can't handle access to the
- * same device/fd from multiple threads and might deadlock or blow up in
- * other ways if we try an ioctl SNDCTL_DSP_HALT or similar */
-}
-
-/* GstMixer interface, which we abuse here for input selection, because we
- * don't have a proper interface for that and because that's what
- * gnome-sound-recorder does. */
-
-/* GstMixerTrack is a plain GObject, so let's just use the GLib macro here */
-G_DEFINE_TYPE (GstOss4SourceInput, gst_oss4_source_input, GST_TYPE_MIXER_TRACK);
-
-static void
-gst_oss4_source_input_class_init (GstOss4SourceInputClass * klass)
-{
- /* nothing to do here */
-}
-
-static void
-gst_oss4_source_input_init (GstOss4SourceInput * i)
-{
- /* nothing to do here */
-}
-
-#if 0
-
-static void
-gst_ossmixer_ensure_track_list (GstOssMixer * mixer)
-{
- gint i, master = -1;
-
- g_return_if_fail (mixer->fd != -1);
-
- if (mixer->tracklist)
- return;
-
- /* find master volume */
- if (mixer->devmask & SOUND_MASK_VOLUME)
- master = SOUND_MIXER_VOLUME;
- else if (mixer->devmask & SOUND_MASK_PCM)
- master = SOUND_MIXER_PCM;
- else if (mixer->devmask & SOUND_MASK_SPEAKER)
- master = SOUND_MIXER_SPEAKER; /* doubtful... */
- /* else: no master, so we won't set any */
-
- /* build track list */
- for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) {
- if (mixer->devmask & (1 << i)) {
- GstMixerTrack *track;
- gboolean input = FALSE, stereo = FALSE, record = FALSE;
-
- /* track exists, make up capabilities */
- if (MASK_BIT_IS_SET (mixer->stereomask, i))
- stereo = TRUE;
- if (MASK_BIT_IS_SET (mixer->recmask, i))
- input = TRUE;
- if (MASK_BIT_IS_SET (mixer->recdevs, i))
- record = TRUE;
-
- /* do we want mixer in our list? */
- if (!((mixer->dir & GST_OSS_MIXER_CAPTURE && input == TRUE) ||
- (mixer->dir & GST_OSS_MIXER_PLAYBACK && i != SOUND_MIXER_PCM)))
- /* the PLAYBACK case seems hacky, but that's how 0.8 had it */
- continue;
-
- /* add track to list */
- track = gst_ossmixer_track_new (mixer->fd, i, stereo ? 2 : 1,
- (record ? GST_MIXER_TRACK_RECORD : 0) |
- (input ? GST_MIXER_TRACK_INPUT :
- GST_MIXER_TRACK_OUTPUT) |
- ((master != i) ? 0 : GST_MIXER_TRACK_MASTER));
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- }
-}
-
-/* unused with G_DISABLE_* */
-static G_GNUC_UNUSED gboolean
-gst_ossmixer_contains_track (GstOssMixer * mixer, GstOssMixerTrack * osstrack)
-{
- const GList *item;
-
- for (item = mixer->tracklist; item != NULL; item = item->next)
- if (item->data == osstrack)
- return TRUE;
-
- return FALSE;
-}
-
-const GList *
-gst_ossmixer_list_tracks (GstOssMixer * mixer)
-{
- gst_ossmixer_ensure_track_list (mixer);
-
- return (const GList *) mixer->tracklist;
-}
-
-void
-gst_ossmixer_get_volume (GstOssMixer * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- gint volume;
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- if (track->flags & GST_MIXER_TRACK_MUTE) {
- volumes[0] = osstrack->lvol;
- if (track->num_channels == 2) {
- volumes[1] = osstrack->rvol;
- }
- } else {
- /* get */
- if (ioctl (mixer->fd, MIXER_READ (osstrack->track_num), &volume) < 0) {
- g_warning ("Error getting recording device (%d) volume: %s",
- osstrack->track_num, g_strerror (errno));
- volume = 0;
- }
-
- osstrack->lvol = volumes[0] = (volume & 0xff);
- if (track->num_channels == 2) {
- osstrack->rvol = volumes[1] = ((volume >> 8) & 0xff);
- }
- }
-}
-
-void
-gst_ossmixer_set_mute (GstOssMixer * mixer, GstMixerTrack * track,
- gboolean mute)
-{
- int volume;
- GstOssMixerTrack *osstrack = GST_OSSMIXER_TRACK (track);
-
- g_return_if_fail (mixer->fd != -1);
- g_return_if_fail (gst_ossmixer_contains_track (mixer, osstrack));
-
- if (mute) {
- volume = 0;
- } else {
- volume = (osstrack->lvol & 0xff);
- if (MASK_BIT_IS_SET (mixer->stereomask, osstrack->track_num)) {
- volume |= ((osstrack->rvol & 0xff) << 8);
- }
- }
-
- if (ioctl (mixer->fd, MIXER_WRITE (osstrack->track_num), &volume) < 0) {
- g_warning ("Error setting mixer recording device volume (0x%x): %s",
- volume, g_strerror (errno));
- return;
- }
-
- if (mute) {
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-}
-#endif
-
-static gint
-gst_oss4_source_mixer_get_current_input (GstOss4Source * oss)
-{
- int cur = -1;
-
- if (ioctl (oss->fd, SNDCTL_DSP_GET_RECSRC, &cur) == -1 || cur < 0)
- return -1;
-
- return cur;
-}
-
-static const gchar *
-gst_oss4_source_mixer_update_record_flags (GstOss4Source * oss, gint cur_route)
-{
- const gchar *cur_name = "";
- GList *t;
-
- for (t = oss->tracks; t != NULL; t = t->next) {
- GstMixerTrack *track = t->data;
-
- if (GST_OSS4_SOURCE_INPUT (track)->route == cur_route) {
- if (!GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_RECORD)) {
- track->flags |= GST_MIXER_TRACK_RECORD;
- /* no point in sending a mixer-record-changes message here */
- }
- cur_name = track->label;
- } else {
- if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_RECORD)) {
- track->flags &= ~GST_MIXER_TRACK_RECORD;
- /* no point in sending a mixer-record-changes message here */
- }
- }
- }
-
- return cur_name;
-}
-
-static const GList *
-gst_oss4_source_mixer_list_tracks (GstMixer * mixer)
-{
- oss_mixer_enuminfo names = { 0, };
- GstOss4Source *oss;
- const gchar *cur_name;
- GList *tracks = NULL;
- gint i, cur;
-
- g_return_val_if_fail (mixer != NULL, NULL);
- g_return_val_if_fail (GST_IS_OSS4_SOURCE (mixer), NULL);
- g_return_val_if_fail (GST_OSS4_SOURCE_IS_OPEN (mixer), NULL);
-
- oss = GST_OSS4_SOURCE (mixer);
-
- if (oss->tracks != NULL && oss->tracks_static)
- goto done;
-
- if (ioctl (oss->fd, SNDCTL_DSP_GET_RECSRC_NAMES, &names) == -1)
- goto get_recsrc_names_error;
-
- oss->tracks_static = (names.version == 0);
-
- GST_INFO_OBJECT (oss, "%d inputs (list is static: %s):", names.nvalues,
- (oss->tracks_static) ? "yes" : "no");
-
- for (i = 0; i < MIN (names.nvalues, OSS_ENUM_MAXVALUE + 1); ++i) {
- GstMixerTrack *track;
-
- track = g_object_new (GST_TYPE_OSS4_SOURCE_INPUT, NULL);
- track->label = g_strdup (&names.strings[names.strindex[i]]);
- track->flags = GST_MIXER_TRACK_INPUT;
- track->num_channels = 2;
- track->min_volume = 0;
- track->max_volume = 100;
- GST_OSS4_SOURCE_INPUT (track)->route = i;
-
- GST_INFO_OBJECT (oss, " [%d] %s", i, track->label);
- tracks = g_list_append (tracks, track);
- }
-
- gst_oss4_source_free_mixer_tracks (oss);
- oss->tracks = tracks;
-
-done:
-
- /* update RECORD flags */
- cur = gst_oss4_source_mixer_get_current_input (oss);
- cur_name = gst_oss4_source_mixer_update_record_flags (oss, cur);
- GST_DEBUG_OBJECT (oss, "current input route: %d (%s)", cur, cur_name);
-
- return (const GList *) oss->tracks;
-
-/* ERRORS */
-get_recsrc_names_error:
- {
- GST_WARNING_OBJECT (oss, "GET_RECSRC_NAMES failed: %s", g_strerror (errno));
- return NULL;
- }
-}
-
-static void
-gst_oss4_source_mixer_set_volume (GstMixer * mixer, GstMixerTrack * track,
- gint * volumes)
-{
- GstOss4Source *oss;
- int new_vol, cur;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (track != NULL);
- g_return_if_fail (GST_IS_MIXER_TRACK (track));
- g_return_if_fail (GST_IS_OSS4_SOURCE (mixer));
- g_return_if_fail (GST_OSS4_SOURCE_IS_OPEN (mixer));
-
- oss = GST_OSS4_SOURCE (mixer);
-
- cur = gst_oss4_source_mixer_get_current_input (oss);
- if (cur != GST_OSS4_SOURCE_INPUT (track)->route) {
- GST_DEBUG_OBJECT (oss, "track not selected input route, ignoring request");
- return;
- }
-
- new_vol = (volumes[1] << 8) | volumes[0];
- if (ioctl (oss->fd, SNDCTL_DSP_SETRECVOL, &new_vol) == -1) {
- GST_WARNING_OBJECT (oss, "SETRECVOL failed: %s", g_strerror (errno));
- }
-}
-
-static void
-gst_oss4_source_mixer_get_volume (GstMixer * mixer, GstMixerTrack * track,
- gint * volumes)
-{
- GstOss4Source *oss;
- int cur;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (GST_IS_OSS4_SOURCE (mixer));
- g_return_if_fail (GST_OSS4_SOURCE_IS_OPEN (mixer));
-
- oss = GST_OSS4_SOURCE (mixer);
-
- cur = gst_oss4_source_mixer_get_current_input (oss);
- if (cur != GST_OSS4_SOURCE_INPUT (track)->route) {
- volumes[0] = 0;
- volumes[1] = 0;
- } else {
- int vol = -1;
-
- if (ioctl (oss->fd, SNDCTL_DSP_GETRECVOL, &vol) == -1 || vol < 0) {
- GST_WARNING_OBJECT (oss, "GETRECVOL failed: %s", g_strerror (errno));
- volumes[0] = 100;
- volumes[1] = 100;
- } else {
- volumes[0] = MIN (100, vol & 0xff);
- volumes[1] = MIN (100, (vol >> 8) & 0xff);
- }
- }
-}
-
-static void
-gst_oss4_source_mixer_set_record (GstMixer * mixer, GstMixerTrack * track,
- gboolean record)
-{
- GstOss4Source *oss;
- const gchar *cur_name;
- gint cur;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (track != NULL);
- g_return_if_fail (GST_IS_MIXER_TRACK (track));
- g_return_if_fail (GST_IS_OSS4_SOURCE (mixer));
- g_return_if_fail (GST_OSS4_SOURCE_IS_OPEN (mixer));
-
- oss = GST_OSS4_SOURCE (mixer);
-
- cur = gst_oss4_source_mixer_get_current_input (oss);
-
- /* stop recording for an input that's not selected anyway => nothing to do */
- if (!record && cur != GST_OSS4_SOURCE_INPUT (track)->route)
- goto done;
-
- /* select recording for an input that's already selected => nothing to do
- * (or should we mess with the recording volume in this case maybe?) */
- if (record && cur == GST_OSS4_SOURCE_INPUT (track)->route)
- goto done;
-
- /* make current input stop recording: we can't really make an input stop
- * recording, we can only select an input FOR recording, so we'll just ignore
- * all requests to stop for now */
- if (!record) {
- GST_WARNING_OBJECT (oss, "Can't un-select an input as such, only switch "
- "to a different input source");
- /* FIXME: set recording volume to 0 maybe? */
- } else {
- int new_route = GST_OSS4_SOURCE_INPUT (track)->route;
-
- /* select this input for recording */
-
- if (ioctl (oss->fd, SNDCTL_DSP_SET_RECSRC, &new_route) == -1) {
- GST_WARNING_OBJECT (oss, "Could not select input %d for recording: %s",
- new_route, g_strerror (errno));
- } else {
- cur = new_route;
- }
- }
-
-done:
-
- cur_name = gst_oss4_source_mixer_update_record_flags (oss, cur);
- GST_DEBUG_OBJECT (oss, "active input route: %d (%s)", cur, cur_name);
-}
-
-static void
-gst_oss4_source_mixer_set_mute (GstMixer * mixer, GstMixerTrack * track,
- gboolean mute)
-{
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (track != NULL);
- g_return_if_fail (GST_IS_MIXER_TRACK (track));
- g_return_if_fail (GST_IS_OSS4_SOURCE (mixer));
- g_return_if_fail (GST_OSS4_SOURCE_IS_OPEN (mixer));
-
- /* FIXME: implement gst_oss4_source_mixer_set_mute() - what to do here? */
- /* oss4_mixer_set_mute (mixer->mixer, track, mute); */
-}
-
-static void
-gst_oss4_source_mixer_interface_init (GstMixerClass * klass)
-{
- GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE;
-
- klass->list_tracks = gst_oss4_source_mixer_list_tracks;
- klass->set_volume = gst_oss4_source_mixer_set_volume;
- klass->get_volume = gst_oss4_source_mixer_get_volume;
- klass->set_mute = gst_oss4_source_mixer_set_mute;
- klass->set_record = gst_oss4_source_mixer_set_record;
-}
-
-/* Implement the horror that is GstImplementsInterface */
-
-static gboolean
-gst_oss4_source_mixer_supported (GstImplementsInterface * iface,
- GType iface_type)
-{
- GstOss4Source *oss;
- gboolean is_open;
-
- g_return_val_if_fail (GST_IS_OSS4_SOURCE (iface), FALSE);
- g_return_val_if_fail (iface_type == GST_TYPE_MIXER, FALSE);
-
- oss = GST_OSS4_SOURCE (iface);
-
- GST_OBJECT_LOCK (oss);
- is_open = GST_OSS4_SOURCE_IS_OPEN (iface);
- GST_OBJECT_UNLOCK (oss);
-
- return is_open;
-}
-
-static void
-gst_oss4_source_mixer_implements_interface_init (GstImplementsInterfaceClass *
- klass)
-{
- klass->supported = gst_oss4_source_mixer_supported;
-}
-
-static void
-gst_oss4_source_init_interfaces (GType type)
-{
- static const GInterfaceInfo implements_iface_info = {
- (GInterfaceInitFunc) gst_oss4_source_mixer_implements_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo mixer_iface_info = {
- (GInterfaceInitFunc) gst_oss4_source_mixer_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_IMPLEMENTS_INTERFACE,
- &implements_iface_info);
- g_type_add_interface_static (type, GST_TYPE_MIXER, &mixer_iface_info);
-
- gst_oss4_add_property_probe_interface (type);
-}
diff --git a/wearable/sys/oss4/oss4-source.h b/wearable/sys/oss4/oss4-source.h
deleted file mode 100644
index 3a86b43..0000000
--- a/wearable/sys/oss4/oss4-source.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* GStreamer OSS4 audio source
- * Copyright (C) 2007-2008 Tim-Philipp Müller <tim centricular net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef GST_OSS4_SOURCE_H
-#define GST_OSS4_SOURCE_H
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosrc.h>
-#include <gst/interfaces/mixertrack.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSS4_SOURCE (gst_oss4_source_get_type())
-#define GST_OSS4_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_SOURCE,GstOss4Source))
-#define GST_OSS4_SOURCE_CAST(obj) ((GstOss4Source *)(obj))
-#define GST_OSS4_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_SOURCE,GstOss4SourceClass))
-#define GST_IS_OSS4_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_SOURCE))
-#define GST_IS_OSS4_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_SOURCE))
-
-typedef struct _GstOss4Source GstOss4Source;
-typedef struct _GstOss4SourceClass GstOss4SourceClass;
-
-struct _GstOss4Source {
- GstAudioSrc audiosrc;
-
- gchar * device; /* NULL if none was set */
- gchar * open_device; /* the device we opened */
- gchar * device_name; /* set if the device is open */
- gint fd; /* -1 if not open */
- gint bytes_per_sample;
-
- GstCaps * probed_caps;
-
- /* property probe interface */
- GList * property_probe_list;
-
- /* mixer interface */
- GList * tracks;
- gboolean tracks_static; /* FALSE if the list of inputs may change */
-};
-
-struct _GstOss4SourceClass {
- GstAudioSrcClass audiosrc_class;
-};
-
-GType gst_oss4_source_get_type (void);
-
-/* our mixer track for input selection */
-#define GST_TYPE_OSS4_SOURCE_INPUT (gst_oss4_source_input_get_type())
-#define GST_OSS4_SOURCE_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSS4_SOURCE_INPUT,GstOss4SourceInput))
-#define GST_OSS4_SOURCE_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSS4_SOURCE_INPUT,GstOss4SourceInputClass))
-#define GST_IS_OSS4_SOURCE_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSS4_SOURCE_INPUT))
-#define GST_IS_OSS4_SOURCE_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSS4_SOURCE_INPUT))
-
-typedef struct _GstOss4SourceInput GstOss4SourceInput;
-typedef struct _GstOss4SourceInputClass GstOss4SourceInputClass;
-
-struct _GstOss4SourceInput {
- GstMixerTrack mixer_track;
-
- int route; /* number for SNDCTL_DSP_SET_RECSRC etc. */
-};
-
-struct _GstOss4SourceInputClass {
- GstMixerTrackClass mixer_track_class;
-};
-
-GType gst_oss4_source_input_get_type (void);
-
-G_END_DECLS
-
-#endif /* GST_OSS4_SOURCE_H */
-
diff --git a/wearable/sys/osxaudio/Makefile.am b/wearable/sys/osxaudio/Makefile.am
deleted file mode 100644
index cfd0c4d..0000000
--- a/wearable/sys/osxaudio/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-plugin_LTLIBRARIES = libgstosxaudio.la
-
-libgstosxaudio_la_SOURCES = gstosxringbuffer.c \
- gstosxaudioelement.c \
- gstosxaudiosink.c \
- gstosxaudiosrc.c \
- gstosxaudio.c
-
-libgstosxaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
- -Wno-deprecated-declarations
-libgstosxaudio_la_LIBADD = \
- -lgstinterfaces-@GST_MAJORMINOR@ \
- -lgstaudio-@GST_MAJORMINOR@ \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS)
-libgstosxaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,-framework -Wl,CoreAudio -Wl,-framework -Wl,AudioUnit -Wl,-framework -Wl,CoreServices
-libgstosxaudio_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstosxaudiosink.h \
- gstosxaudioelement.h \
- gstosxringbuffer.h \
- gstosxaudiosrc.h
-
-
-
diff --git a/wearable/sys/osxaudio/Makefile.in b/wearable/sys/osxaudio/Makefile.in
deleted file mode 100644
index 9e8e186..0000000
--- a/wearable/sys/osxaudio/Makefile.in
+++ /dev/null
@@ -1,858 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/osxaudio
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstosxaudio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstosxaudio_la_OBJECTS = libgstosxaudio_la-gstosxringbuffer.lo \
- libgstosxaudio_la-gstosxaudioelement.lo \
- libgstosxaudio_la-gstosxaudiosink.lo \
- libgstosxaudio_la-gstosxaudiosrc.lo \
- libgstosxaudio_la-gstosxaudio.lo
-libgstosxaudio_la_OBJECTS = $(am_libgstosxaudio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstosxaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) \
- $(libgstosxaudio_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstosxaudio_la_SOURCES)
-DIST_SOURCES = $(libgstosxaudio_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstosxaudio.la
-libgstosxaudio_la_SOURCES = gstosxringbuffer.c \
- gstosxaudioelement.c \
- gstosxaudiosink.c \
- gstosxaudiosrc.c \
- gstosxaudio.c
-
-libgstosxaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
- -Wno-deprecated-declarations
-
-libgstosxaudio_la_LIBADD = \
- -lgstinterfaces-@GST_MAJORMINOR@ \
- -lgstaudio-@GST_MAJORMINOR@ \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS)
-
-libgstosxaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,-framework -Wl,CoreAudio -Wl,-framework -Wl,AudioUnit -Wl,-framework -Wl,CoreServices
-libgstosxaudio_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstosxaudiosink.h \
- gstosxaudioelement.h \
- gstosxringbuffer.h \
- gstosxaudiosrc.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/osxaudio/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/osxaudio/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstosxaudio.la: $(libgstosxaudio_la_OBJECTS) $(libgstosxaudio_la_DEPENDENCIES) $(EXTRA_libgstosxaudio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstosxaudio_la_LINK) -rpath $(plugindir) $(libgstosxaudio_la_OBJECTS) $(libgstosxaudio_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxaudio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxaudioelement.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxaudiosink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxaudiosrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxaudio_la-gstosxringbuffer.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstosxaudio_la-gstosxringbuffer.lo: gstosxringbuffer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -MT libgstosxaudio_la-gstosxringbuffer.lo -MD -MP -MF $(DEPDIR)/libgstosxaudio_la-gstosxringbuffer.Tpo -c -o libgstosxaudio_la-gstosxringbuffer.lo `test -f 'gstosxringbuffer.c' || echo '$(srcdir)/'`gstosxringbuffer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxaudio_la-gstosxringbuffer.Tpo $(DEPDIR)/libgstosxaudio_la-gstosxringbuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosxringbuffer.c' object='libgstosxaudio_la-gstosxringbuffer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -c -o libgstosxaudio_la-gstosxringbuffer.lo `test -f 'gstosxringbuffer.c' || echo '$(srcdir)/'`gstosxringbuffer.c
-
-libgstosxaudio_la-gstosxaudioelement.lo: gstosxaudioelement.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -MT libgstosxaudio_la-gstosxaudioelement.lo -MD -MP -MF $(DEPDIR)/libgstosxaudio_la-gstosxaudioelement.Tpo -c -o libgstosxaudio_la-gstosxaudioelement.lo `test -f 'gstosxaudioelement.c' || echo '$(srcdir)/'`gstosxaudioelement.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxaudio_la-gstosxaudioelement.Tpo $(DEPDIR)/libgstosxaudio_la-gstosxaudioelement.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosxaudioelement.c' object='libgstosxaudio_la-gstosxaudioelement.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -c -o libgstosxaudio_la-gstosxaudioelement.lo `test -f 'gstosxaudioelement.c' || echo '$(srcdir)/'`gstosxaudioelement.c
-
-libgstosxaudio_la-gstosxaudiosink.lo: gstosxaudiosink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -MT libgstosxaudio_la-gstosxaudiosink.lo -MD -MP -MF $(DEPDIR)/libgstosxaudio_la-gstosxaudiosink.Tpo -c -o libgstosxaudio_la-gstosxaudiosink.lo `test -f 'gstosxaudiosink.c' || echo '$(srcdir)/'`gstosxaudiosink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxaudio_la-gstosxaudiosink.Tpo $(DEPDIR)/libgstosxaudio_la-gstosxaudiosink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosxaudiosink.c' object='libgstosxaudio_la-gstosxaudiosink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -c -o libgstosxaudio_la-gstosxaudiosink.lo `test -f 'gstosxaudiosink.c' || echo '$(srcdir)/'`gstosxaudiosink.c
-
-libgstosxaudio_la-gstosxaudiosrc.lo: gstosxaudiosrc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -MT libgstosxaudio_la-gstosxaudiosrc.lo -MD -MP -MF $(DEPDIR)/libgstosxaudio_la-gstosxaudiosrc.Tpo -c -o libgstosxaudio_la-gstosxaudiosrc.lo `test -f 'gstosxaudiosrc.c' || echo '$(srcdir)/'`gstosxaudiosrc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxaudio_la-gstosxaudiosrc.Tpo $(DEPDIR)/libgstosxaudio_la-gstosxaudiosrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosxaudiosrc.c' object='libgstosxaudio_la-gstosxaudiosrc.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -c -o libgstosxaudio_la-gstosxaudiosrc.lo `test -f 'gstosxaudiosrc.c' || echo '$(srcdir)/'`gstosxaudiosrc.c
-
-libgstosxaudio_la-gstosxaudio.lo: gstosxaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -MT libgstosxaudio_la-gstosxaudio.lo -MD -MP -MF $(DEPDIR)/libgstosxaudio_la-gstosxaudio.Tpo -c -o libgstosxaudio_la-gstosxaudio.lo `test -f 'gstosxaudio.c' || echo '$(srcdir)/'`gstosxaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxaudio_la-gstosxaudio.Tpo $(DEPDIR)/libgstosxaudio_la-gstosxaudio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstosxaudio.c' object='libgstosxaudio_la-gstosxaudio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstosxaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstosxaudio_la_CFLAGS) $(CFLAGS) -c -o libgstosxaudio_la-gstosxaudio.lo `test -f 'gstosxaudio.c' || echo '$(srcdir)/'`gstosxaudio.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/osxaudio/gstosxaudio.c b/wearable/sys/osxaudio/gstosxaudio.c
deleted file mode 100644
index 1ddfce4..0000000
--- a/wearable/sys/osxaudio/gstosxaudio.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
- * Copyright (C) 2007,2008 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstosxaudioelement.h"
-#include "gstosxaudiosink.h"
-#include "gstosxaudiosrc.h"
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "osxaudiosink", GST_RANK_PRIMARY,
- GST_TYPE_OSX_AUDIO_SINK)) {
- return FALSE;
- }
- if (!gst_element_register (plugin, "osxaudiosrc", GST_RANK_PRIMARY,
- GST_TYPE_OSX_AUDIO_SRC)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "osxaudio",
- "OSX (Mac OS X) audio support for GStreamer",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/osxaudio/gstosxaudioelement.c b/wearable/sys/osxaudio/gstosxaudioelement.c
deleted file mode 100644
index a41f4b8..0000000
--- a/wearable/sys/osxaudio/gstosxaudioelement.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-#include <gst/gst.h>
-#include "gstosxaudioelement.h"
-
-static void
-gst_osx_audio_element_class_init (GstOsxAudioElementInterface * klass);
-
-GType
-gst_osx_audio_element_get_type (void)
-{
- static GType gst_osxaudioelement_type = 0;
-
- if (!gst_osxaudioelement_type) {
- static const GTypeInfo gst_osxaudioelement_info = {
- sizeof (GstOsxAudioElementInterface),
- (GBaseInitFunc) gst_osx_audio_element_class_init,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,
- 0,
- NULL,
- NULL
- };
-
- gst_osxaudioelement_type = g_type_register_static (G_TYPE_INTERFACE,
- "GstOsxAudioElement", &gst_osxaudioelement_info, 0);
- }
-
- return gst_osxaudioelement_type;
-}
-
-static void
-gst_osx_audio_element_class_init (GstOsxAudioElementInterface * klass)
-{
- static gboolean initialized = FALSE;
-
- if (!initialized) {
- initialized = TRUE;
- }
-
- /* default virtual functions */
- klass->io_proc = NULL;
-}
diff --git a/wearable/sys/osxaudio/gstosxaudioelement.h b/wearable/sys/osxaudio/gstosxaudioelement.h
deleted file mode 100644
index b5d90c0..0000000
--- a/wearable/sys/osxaudio/gstosxaudioelement.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-#ifndef __GST_OSX_AUDIO_ELEMENT_H__
-#define __GST_OSX_AUDIO_ELEMENT_H__
-
-#include <gst/gst.h>
-#include <CoreAudio/CoreAudio.h>
-#include <AudioUnit/AudioUnit.h>
-
-G_BEGIN_DECLS
-
-#define GST_OSX_AUDIO_ELEMENT_TYPE \
- (gst_osx_audio_element_get_type())
-#define GST_OSX_AUDIO_ELEMENT(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_OSX_AUDIO_ELEMENT_TYPE,GstOsxAudioElementInterface))
-#define GST_IS_OSX_AUDIO_ELEMENT(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_OSX_AUDIO_ELEMENT_TYPE))
-#define GST_OSX_AUDIO_ELEMENT_GET_INTERFACE(inst) \
- (G_TYPE_INSTANCE_GET_INTERFACE((inst),GST_OSX_AUDIO_ELEMENT_TYPE,GstOsxAudioElementInterface))
-
-typedef struct _GstOsxAudioElementInterface GstOsxAudioElementInterface;
-
-struct _GstOsxAudioElementInterface
-{
- GTypeInterface parent;
-
- OSStatus (*io_proc) (void * userdata,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp,
- UInt32 inBusNumber, UInt32 inNumberFrames,
- AudioBufferList * bufferList);
-};
-
-GType gst_osx_audio_element_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_OSX_AUDIO_ELEMENT_H__ */
diff --git a/wearable/sys/osxaudio/gstosxaudiosink.c b/wearable/sys/osxaudio/gstosxaudiosink.c
deleted file mode 100644
index cd456e5..0000000
--- a/wearable/sys/osxaudio/gstosxaudiosink.c
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005,2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007,2008 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-/**
- * SECTION:element-osxaudiosink
- *
- * This element renders raw audio samples using the CoreAudio api.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch filesrc location=sine.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! osxaudiosink
- * ]| Play an Ogg/Vorbis file.
- * </refsect2>
- *
- * Last reviewed on 2006-03-01 (0.10.4)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <CoreAudio/CoreAudio.h>
-#include <CoreAudio/AudioHardware.h>
-#include "gstosxaudiosink.h"
-#include "gstosxaudioelement.h"
-
-GST_DEBUG_CATEGORY_STATIC (osx_audiosink_debug);
-#define GST_CAT_DEFAULT osx_audiosink_debug
-
-/* Filter signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- ARG_0,
- ARG_DEVICE,
- ARG_VOLUME
-};
-
-#define DEFAULT_VOLUME 1.0
-
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-float, "
- "endianness = (int) {" G_STRINGIFY (G_BYTE_ORDER) " }, "
- "signed = (boolean) { TRUE }, "
- "width = (int) 32, "
- "depth = (int) 32, "
- "rate = (int) [1, MAX], " "channels = (int) [1, MAX]")
- );
-
-static void gst_osx_audio_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_osx_audio_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstRingBuffer *gst_osx_audio_sink_create_ringbuffer (GstBaseAudioSink *
- sink);
-static void gst_osx_audio_sink_osxelement_init (gpointer g_iface,
- gpointer iface_data);
-static void gst_osx_audio_sink_select_device (GstOsxAudioSink * osxsink);
-static void gst_osx_audio_sink_set_volume (GstOsxAudioSink * sink);
-
-static OSStatus gst_osx_audio_sink_io_proc (GstOsxRingBuffer * buf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp,
- UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList * bufferList);
-
-static void
-gst_osx_audio_sink_do_init (GType type)
-{
- static const GInterfaceInfo osxelement_info = {
- gst_osx_audio_sink_osxelement_init,
- NULL,
- NULL
- };
-
- GST_DEBUG_CATEGORY_INIT (osx_audiosink_debug, "osxaudiosink", 0,
- "OSX Audio Sink");
- GST_DEBUG ("Adding static interface");
- g_type_add_interface_static (type, GST_OSX_AUDIO_ELEMENT_TYPE,
- &osxelement_info);
-}
-
-GST_BOILERPLATE_FULL (GstOsxAudioSink, gst_osx_audio_sink, GstBaseAudioSink,
- GST_TYPE_BASE_AUDIO_SINK, gst_osx_audio_sink_do_init);
-
-static void
-gst_osx_audio_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_static_pad_template (element_class, &sink_factory);
-
- gst_element_class_set_details_simple (element_class, "Audio Sink (OSX)",
- "Sink/Audio",
- "Output to a sound card in OS X",
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-}
-
-static void
-gst_osx_audio_sink_class_init (GstOsxAudioSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
- GstBaseAudioSinkClass *gstbaseaudiosink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
- gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->set_property = gst_osx_audio_sink_set_property;
- gobject_class->get_property = gst_osx_audio_sink_get_property;
-
- g_object_class_install_property (gobject_class, ARG_DEVICE,
- g_param_spec_int ("device", "Device ID", "Device ID of output device",
- 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, ARG_VOLUME,
- g_param_spec_double ("volume", "Volume", "Volume of this stream",
- 0, 1.0, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- gstbaseaudiosink_class->create_ringbuffer =
- GST_DEBUG_FUNCPTR (gst_osx_audio_sink_create_ringbuffer);
-}
-
-static void
-gst_osx_audio_sink_init (GstOsxAudioSink * sink, GstOsxAudioSinkClass * gclass)
-{
- GST_DEBUG ("Initialising object");
-
- sink->device_id = kAudioDeviceUnknown;
- sink->volume = DEFAULT_VOLUME;
-}
-
-static void
-gst_osx_audio_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOsxAudioSink *sink = GST_OSX_AUDIO_SINK (object);
-
- switch (prop_id) {
- case ARG_DEVICE:
- sink->device_id = g_value_get_int (value);
- break;
- case ARG_VOLUME:
- sink->volume = g_value_get_double (value);
- gst_osx_audio_sink_set_volume (sink);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_osx_audio_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOsxAudioSink *sink = GST_OSX_AUDIO_SINK (object);
- switch (prop_id) {
- case ARG_DEVICE:
- g_value_set_int (value, sink->device_id);
- break;
- case ARG_VOLUME:
- g_value_set_double (value, sink->volume);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstRingBuffer *
-gst_osx_audio_sink_create_ringbuffer (GstBaseAudioSink * sink)
-{
- GstOsxAudioSink *osxsink;
- GstOsxRingBuffer *ringbuffer;
-
- osxsink = GST_OSX_AUDIO_SINK (sink);
-
- gst_osx_audio_sink_select_device (osxsink);
-
- GST_DEBUG ("Creating ringbuffer");
- ringbuffer = g_object_new (GST_TYPE_OSX_RING_BUFFER, NULL);
- GST_DEBUG ("osx sink 0x%p element 0x%p ioproc 0x%p", osxsink,
- GST_OSX_AUDIO_ELEMENT_GET_INTERFACE (osxsink),
- (void *) gst_osx_audio_sink_io_proc);
-
- gst_osx_audio_sink_set_volume (osxsink);
-
- ringbuffer->element = GST_OSX_AUDIO_ELEMENT_GET_INTERFACE (osxsink);
- ringbuffer->device_id = osxsink->device_id;
-
- return GST_RING_BUFFER (ringbuffer);
-}
-
-/* HALOutput AudioUnit will request fairly arbitrarily-sized chunks of data,
- * not of a fixed size. So, we keep track of where in the current ringbuffer
- * segment we are, and only advance the segment once we've read the whole
- * thing */
-static OSStatus
-gst_osx_audio_sink_io_proc (GstOsxRingBuffer * buf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp,
- UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList * bufferList)
-{
- guint8 *readptr;
- gint readseg;
- gint len;
- gint remaining = bufferList->mBuffers[0].mDataByteSize;
- gint offset = 0;
-
- while (remaining) {
- if (!gst_ring_buffer_prepare_read (GST_RING_BUFFER (buf),
- &readseg, &readptr, &len))
- return 0;
-
- len -= buf->segoffset;
-
- if (len > remaining)
- len = remaining;
-
- memcpy ((char *) bufferList->mBuffers[0].mData + offset,
- readptr + buf->segoffset, len);
-
- buf->segoffset += len;
- offset += len;
- remaining -= len;
-
- if ((gint) buf->segoffset == GST_RING_BUFFER (buf)->spec.segsize) {
- /* clear written samples */
- gst_ring_buffer_clear (GST_RING_BUFFER (buf), readseg);
-
- /* we wrote one segment */
- gst_ring_buffer_advance (GST_RING_BUFFER (buf), 1);
-
- buf->segoffset = 0;
- }
- }
- return 0;
-}
-
-static void
-gst_osx_audio_sink_osxelement_init (gpointer g_iface, gpointer iface_data)
-{
- GstOsxAudioElementInterface *iface = (GstOsxAudioElementInterface *) g_iface;
-
- iface->io_proc = (AURenderCallback) gst_osx_audio_sink_io_proc;
-}
-
-static void
-gst_osx_audio_sink_set_volume (GstOsxAudioSink * sink)
-{
- if (!sink->audiounit)
- return;
-
- AudioUnitSetParameter (sink->audiounit, kHALOutputParam_Volume,
- kAudioUnitScope_Global, 0, (float) sink->volume, 0);
-}
-
-static void
-gst_osx_audio_sink_select_device (GstOsxAudioSink * osxsink)
-{
- OSStatus status;
- UInt32 propertySize;
-
- if (osxsink->device_id == kAudioDeviceUnknown) {
- /* If no specific device has been selected by the user, then pick the
- * default device */
- GST_DEBUG_OBJECT (osxsink, "Selecting device for OSXAudioSink");
- propertySize = sizeof (osxsink->device_id);
- status =
- AudioHardwareGetProperty (kAudioHardwarePropertyDefaultOutputDevice,
- &propertySize, &osxsink->device_id);
-
- if (status) {
- GST_WARNING_OBJECT (osxsink,
- "AudioHardwareGetProperty returned %d", (int) status);
- } else {
- GST_DEBUG_OBJECT (osxsink, "AudioHardwareGetProperty returned 0");
- }
-
- if (osxsink->device_id == kAudioDeviceUnknown) {
- GST_WARNING_OBJECT (osxsink,
- "AudioHardwareGetProperty: device_id is kAudioDeviceUnknown");
- }
-
- GST_DEBUG_OBJECT (osxsink, "AudioHardwareGetProperty: device_id is %lu",
- (long) osxsink->device_id);
- }
-}
diff --git a/wearable/sys/osxaudio/gstosxaudiosink.h b/wearable/sys/osxaudio/gstosxaudiosink.h
deleted file mode 100644
index aac9719..0000000
--- a/wearable/sys/osxaudio/gstosxaudiosink.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005-2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-#ifndef __GST_OSXAUDIOSINK_H__
-#define __GST_OSXAUDIOSINK_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstbaseaudiosink.h>
-#include "gstosxringbuffer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSX_AUDIO_SINK \
- (gst_osx_audio_sink_get_type())
-#define GST_OSX_AUDIO_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSX_AUDIO_SINK,GstOsxAudioSink))
-#define GST_OSX_AUDIO_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSX_AUDIO_SINK,GstOsxAudioSinkClass))
-
-typedef struct _GstOsxAudioSink GstOsxAudioSink;
-typedef struct _GstOsxAudioSinkClass GstOsxAudioSinkClass;
-
-struct _GstOsxAudioSink
-{
- GstBaseAudioSink sink;
-
- AudioDeviceID device_id;
- AudioUnit audiounit;
- double volume;
-};
-
-struct _GstOsxAudioSinkClass
-{
- GstBaseAudioSinkClass parent_class;
-};
-
-GType gst_osx_audio_sink_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_OSXAUDIOSINK_H__ */
diff --git a/wearable/sys/osxaudio/gstosxaudiosrc.c b/wearable/sys/osxaudio/gstosxaudiosrc.c
deleted file mode 100644
index 7e9ad24..0000000
--- a/wearable/sys/osxaudio/gstosxaudiosrc.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005,2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2008 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-osxaudiosrc
- *
- * This element captures raw audio samples using the CoreAudio api.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch osxaudiosrc ! wavenc ! filesink location=audio.wav
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <CoreAudio/CoreAudio.h>
-#include <CoreAudio/AudioHardware.h>
-#include "gstosxaudiosrc.h"
-#include "gstosxaudioelement.h"
-
-GST_DEBUG_CATEGORY_STATIC (osx_audiosrc_debug);
-#define GST_CAT_DEFAULT osx_audiosrc_debug
-
-/* Filter signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- ARG_0,
- ARG_DEVICE
-};
-
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-float, "
- "endianness = (int) {" G_STRINGIFY (G_BYTE_ORDER) " }, "
- "signed = (boolean) { TRUE }, "
- "width = (int) 32, "
- "depth = (int) 32, "
- "rate = (int) [1, MAX], " "channels = (int) [1, MAX]")
- );
-
-static void gst_osx_audio_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_osx_audio_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_osx_audio_src_get_caps (GstBaseSrc * src);
-
-static GstRingBuffer *gst_osx_audio_src_create_ringbuffer (GstBaseAudioSrc *
- src);
-static void gst_osx_audio_src_osxelement_init (gpointer g_iface,
- gpointer iface_data);
-static OSStatus gst_osx_audio_src_io_proc (GstOsxRingBuffer * buf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp, UInt32 inBusNumber,
- UInt32 inNumberFrames, AudioBufferList * bufferList);
-static void gst_osx_audio_src_select_device (GstOsxAudioSrc * osxsrc);
-
-static void
-gst_osx_audio_src_do_init (GType type)
-{
- static const GInterfaceInfo osxelement_info = {
- gst_osx_audio_src_osxelement_init,
- NULL,
- NULL
- };
-
- GST_DEBUG_CATEGORY_INIT (osx_audiosrc_debug, "osxaudiosrc", 0,
- "OSX Audio Src");
- GST_DEBUG ("Adding static interface");
- g_type_add_interface_static (type, GST_OSX_AUDIO_ELEMENT_TYPE,
- &osxelement_info);
-}
-
-GST_BOILERPLATE_FULL (GstOsxAudioSrc, gst_osx_audio_src, GstBaseAudioSrc,
- GST_TYPE_BASE_AUDIO_SRC, gst_osx_audio_src_do_init);
-
-static void
-gst_osx_audio_src_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_static_pad_template (element_class, &src_factory);
-
- gst_element_class_set_details_simple (element_class, "Audio Source (OSX)",
- "Source/Audio",
- "Input from a sound card in OS X",
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-}
-
-static void
-gst_osx_audio_src_class_init (GstOsxAudioSrcClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstBaseAudioSrcClass *gstbaseaudiosrc_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstbaseaudiosrc_class = (GstBaseAudioSrcClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->set_property = gst_osx_audio_src_set_property;
- gobject_class->get_property = gst_osx_audio_src_get_property;
-
- gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_osx_audio_src_get_caps);
-
- g_object_class_install_property (gobject_class, ARG_DEVICE,
- g_param_spec_int ("device", "Device ID", "Device ID of input device",
- 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- gstbaseaudiosrc_class->create_ringbuffer =
- GST_DEBUG_FUNCPTR (gst_osx_audio_src_create_ringbuffer);
-}
-
-static void
-gst_osx_audio_src_init (GstOsxAudioSrc * src, GstOsxAudioSrcClass * gclass)
-{
- gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
-
- src->device_id = kAudioDeviceUnknown;
- src->deviceChannels = -1;
-}
-
-static void
-gst_osx_audio_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOsxAudioSrc *src = GST_OSX_AUDIO_SRC (object);
-
- switch (prop_id) {
- case ARG_DEVICE:
- src->device_id = g_value_get_int (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_osx_audio_src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOsxAudioSrc *src = GST_OSX_AUDIO_SRC (object);
-
- switch (prop_id) {
- case ARG_DEVICE:
- g_value_set_int (value, src->device_id);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_osx_audio_src_get_caps (GstBaseSrc * src)
-{
- GstElementClass *gstelement_class;
- GstOsxAudioSrc *osxsrc;
- GstPadTemplate *pad_template;
- GstCaps *caps;
- gint min, max;
-
- gstelement_class = GST_ELEMENT_GET_CLASS (src);
- osxsrc = GST_OSX_AUDIO_SRC (src);
-
- if (osxsrc->deviceChannels == -1) {
- /* -1 means we don't know the number of channels yet. for now, return
- * template caps.
- */
- return NULL;
- }
-
- max = osxsrc->deviceChannels;
- if (max < 1)
- max = 1; /* 0 channels means 1 channel? */
-
- min = MIN (1, max);
-
- pad_template = gst_element_class_get_pad_template (gstelement_class, "src");
- g_return_val_if_fail (pad_template != NULL, NULL);
-
- caps = gst_caps_copy (gst_pad_template_get_caps (pad_template));
-
- if (min == max) {
- gst_caps_set_simple (caps, "channels", G_TYPE_INT, max, NULL);
- } else {
- gst_caps_set_simple (caps, "channels", GST_TYPE_INT_RANGE, min, max, NULL);
- }
-
- return caps;
-}
-
-static GstRingBuffer *
-gst_osx_audio_src_create_ringbuffer (GstBaseAudioSrc * src)
-{
- GstOsxAudioSrc *osxsrc;
- GstOsxRingBuffer *ringbuffer;
-
- osxsrc = GST_OSX_AUDIO_SRC (src);
-
- gst_osx_audio_src_select_device (osxsrc);
-
- GST_DEBUG ("Creating ringbuffer");
- ringbuffer = g_object_new (GST_TYPE_OSX_RING_BUFFER, NULL);
- GST_DEBUG ("osx src 0x%p element 0x%p ioproc 0x%p", osxsrc,
- GST_OSX_AUDIO_ELEMENT_GET_INTERFACE (osxsrc),
- (void *) gst_osx_audio_src_io_proc);
-
- ringbuffer->element = GST_OSX_AUDIO_ELEMENT_GET_INTERFACE (osxsrc);
- ringbuffer->is_src = TRUE;
- ringbuffer->device_id = osxsrc->device_id;
-
- return GST_RING_BUFFER (ringbuffer);
-}
-
-static OSStatus
-gst_osx_audio_src_io_proc (GstOsxRingBuffer * buf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp,
- UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList * bufferList)
-{
- OSStatus status;
- guint8 *writeptr;
- gint writeseg;
- gint len;
- gint remaining;
- gint offset = 0;
-
- status = AudioUnitRender (buf->audiounit, ioActionFlags, inTimeStamp,
- inBusNumber, inNumberFrames, buf->recBufferList);
-
- if (status) {
- GST_WARNING_OBJECT (buf, "AudioUnitRender returned %d", (int) status);
- return status;
- }
-
- remaining = buf->recBufferList->mBuffers[0].mDataByteSize;
-
- while (remaining) {
- if (!gst_ring_buffer_prepare_read (GST_RING_BUFFER (buf),
- &writeseg, &writeptr, &len))
- return 0;
-
- len -= buf->segoffset;
-
- if (len > remaining)
- len = remaining;
-
- memcpy (writeptr + buf->segoffset,
- (char *) buf->recBufferList->mBuffers[0].mData + offset, len);
-
- buf->segoffset += len;
- offset += len;
- remaining -= len;
-
- if ((gint) buf->segoffset == GST_RING_BUFFER (buf)->spec.segsize) {
- /* we wrote one segment */
- gst_ring_buffer_advance (GST_RING_BUFFER (buf), 1);
-
- buf->segoffset = 0;
- }
- }
- return 0;
-}
-
-static void
-gst_osx_audio_src_osxelement_init (gpointer g_iface, gpointer iface_data)
-{
- GstOsxAudioElementInterface *iface = (GstOsxAudioElementInterface *) g_iface;
-
- iface->io_proc = (AURenderCallback) gst_osx_audio_src_io_proc;
-}
-
-static void
-gst_osx_audio_src_select_device (GstOsxAudioSrc * osxsrc)
-{
- OSStatus status;
- UInt32 propertySize;
-
- if (osxsrc->device_id == kAudioDeviceUnknown) {
- /* If no specific device has been selected by the user, then pick the
- * default device */
- GST_DEBUG_OBJECT (osxsrc, "Selecting device for OSXAudioSrc");
- propertySize = sizeof (osxsrc->device_id);
- status = AudioHardwareGetProperty (kAudioHardwarePropertyDefaultInputDevice,
- &propertySize, &osxsrc->device_id);
-
- if (status) {
- GST_WARNING_OBJECT (osxsrc,
- "AudioHardwareGetProperty returned %d", (int) status);
- } else {
- GST_DEBUG_OBJECT (osxsrc, "AudioHardwareGetProperty returned 0");
- }
-
- if (osxsrc->device_id == kAudioDeviceUnknown) {
- GST_WARNING_OBJECT (osxsrc,
- "AudioHardwareGetProperty: device_id is kAudioDeviceUnknown");
- }
-
- GST_DEBUG_OBJECT (osxsrc, "AudioHardwareGetProperty: device_id is %lu",
- (long) osxsrc->device_id);
- }
-}
diff --git a/wearable/sys/osxaudio/gstosxaudiosrc.h b/wearable/sys/osxaudio/gstosxaudiosrc.h
deleted file mode 100644
index a812d9e..0000000
--- a/wearable/sys/osxaudio/gstosxaudiosrc.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005-2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_OSXAUDIOSRC_H__
-#define __GST_OSXAUDIOSRC_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstbaseaudiosrc.h>
-#include "gstosxringbuffer.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSX_AUDIO_SRC \
- (gst_osx_audio_src_get_type())
-#define GST_OSX_AUDIO_SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSX_AUDIO_SRC,GstOsxAudioSrc))
-#define GST_OSX_AUDIO_SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSX_AUDIO_SRC,GstOsxAudioSrcClass))
-
-typedef struct _GstOsxAudioSrc GstOsxAudioSrc;
-typedef struct _GstOsxAudioSrcClass GstOsxAudioSrcClass;
-
-struct _GstOsxAudioSrc
-{
- GstBaseAudioSrc src;
-
- AudioDeviceID device_id;
-
- /* actual number of channels reported by input device */
- int deviceChannels;
-};
-
-struct _GstOsxAudioSrcClass
-{
- GstBaseAudioSrcClass parent_class;
-};
-
-GType gst_osx_audio_src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_OSXAUDIOSRC_H__ */
diff --git a/wearable/sys/osxaudio/gstosxringbuffer.c b/wearable/sys/osxaudio/gstosxringbuffer.c
deleted file mode 100644
index 095efc1..0000000
--- a/wearable/sys/osxaudio/gstosxringbuffer.c
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2008 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <CoreAudio/CoreAudio.h>
-#include <CoreServices/CoreServices.h>
-#include <gst/gst.h>
-#include <gst/audio/multichannel.h>
-#include "gstosxringbuffer.h"
-#include "gstosxaudiosink.h"
-#include "gstosxaudiosrc.h"
-
-GST_DEBUG_CATEGORY_STATIC (osx_audio_debug);
-#define GST_CAT_DEFAULT osx_audio_debug
-
-static void gst_osx_ring_buffer_dispose (GObject * object);
-static void gst_osx_ring_buffer_finalize (GObject * object);
-static gboolean gst_osx_ring_buffer_open_device (GstRingBuffer * buf);
-static gboolean gst_osx_ring_buffer_close_device (GstRingBuffer * buf);
-
-static gboolean gst_osx_ring_buffer_acquire (GstRingBuffer * buf,
- GstRingBufferSpec * spec);
-static gboolean gst_osx_ring_buffer_release (GstRingBuffer * buf);
-
-static gboolean gst_osx_ring_buffer_start (GstRingBuffer * buf);
-static gboolean gst_osx_ring_buffer_pause (GstRingBuffer * buf);
-static gboolean gst_osx_ring_buffer_stop (GstRingBuffer * buf);
-static guint gst_osx_ring_buffer_delay (GstRingBuffer * buf);
-static GstRingBufferClass *ring_parent_class = NULL;
-
-static OSStatus gst_osx_ring_buffer_render_notify (GstOsxRingBuffer * osxbuf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp, unsigned int inBusNumber,
- unsigned int inNumberFrames, AudioBufferList * ioData);
-
-static AudioBufferList *buffer_list_alloc (int channels, int size);
-static void buffer_list_free (AudioBufferList * list);
-
-static void
-gst_osx_ring_buffer_do_init (GType type)
-{
- GST_DEBUG_CATEGORY_INIT (osx_audio_debug, "osxaudio", 0,
- "OSX Audio Elements");
-}
-
-GST_BOILERPLATE_FULL (GstOsxRingBuffer, gst_osx_ring_buffer, GstRingBuffer,
- GST_TYPE_RING_BUFFER, gst_osx_ring_buffer_do_init);
-
-static void
-gst_osx_ring_buffer_base_init (gpointer g_class)
-{
- /* Nothing to do right now */
-}
-
-static void
-gst_osx_ring_buffer_class_init (GstOsxRingBufferClass * klass)
-{
- GObjectClass *gobject_class;
- GstObjectClass *gstobject_class;
- GstRingBufferClass *gstringbuffer_class;
-
- gobject_class = (GObjectClass *) klass;
- gstobject_class = (GstObjectClass *) klass;
- gstringbuffer_class = (GstRingBufferClass *) klass;
-
- ring_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->dispose = gst_osx_ring_buffer_dispose;
- gobject_class->finalize = gst_osx_ring_buffer_finalize;
-
- gstringbuffer_class->open_device =
- GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_open_device);
- gstringbuffer_class->close_device =
- GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_close_device);
- gstringbuffer_class->acquire =
- GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_acquire);
- gstringbuffer_class->release =
- GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_release);
- gstringbuffer_class->start = GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_start);
- gstringbuffer_class->pause = GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_pause);
- gstringbuffer_class->resume = GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_start);
- gstringbuffer_class->stop = GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_stop);
-
- gstringbuffer_class->delay = GST_DEBUG_FUNCPTR (gst_osx_ring_buffer_delay);
-
- GST_DEBUG ("osx ring buffer class init");
-}
-
-static void
-gst_osx_ring_buffer_init (GstOsxRingBuffer * ringbuffer,
- GstOsxRingBufferClass * g_class)
-{
- /* Nothing to do right now */
-}
-
-static void
-gst_osx_ring_buffer_dispose (GObject * object)
-{
- G_OBJECT_CLASS (ring_parent_class)->dispose (object);
-}
-
-static void
-gst_osx_ring_buffer_finalize (GObject * object)
-{
- G_OBJECT_CLASS (ring_parent_class)->finalize (object);
-}
-
-static AudioUnit
-gst_osx_ring_buffer_create_audio_unit (GstOsxRingBuffer * osxbuf,
- gboolean input, AudioDeviceID device_id)
-{
- ComponentDescription desc;
- Component comp;
- OSStatus status;
- AudioUnit unit;
- UInt32 enableIO;
-
- /* Create a HALOutput AudioUnit.
- * This is the lowest-level output API that is actually sensibly usable
- * (the lower level ones require that you do channel-remapping yourself,
- * and the CoreAudio channel mapping is sufficiently complex that doing
- * so would be very difficult)
- *
- * Note that for input we request an output unit even though we will do
- * input with it: http://developer.apple.com/technotes/tn2002/tn2091.html
- */
- desc.componentType = kAudioUnitType_Output;
- desc.componentSubType = kAudioUnitSubType_HALOutput;
- desc.componentManufacturer = kAudioUnitManufacturer_Apple;
- desc.componentFlags = 0;
- desc.componentFlagsMask = 0;
-
- comp = FindNextComponent (NULL, &desc);
- if (comp == NULL) {
- GST_WARNING_OBJECT (osxbuf, "Couldn't find HALOutput component");
- return NULL;
- }
-
- status = OpenAComponent (comp, &unit);
-
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Couldn't open HALOutput component");
- return NULL;
- }
-
- if (input) {
- /* enable input */
- enableIO = 1;
- status = AudioUnitSetProperty (unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, 1, /* 1 = input element */
- &enableIO, sizeof (enableIO));
-
- if (status) {
- CloseComponent (unit);
- GST_WARNING_OBJECT (osxbuf, "Failed to enable input: %lx",
- (gulong) status);
- return NULL;
- }
-
- /* disable output */
- enableIO = 0;
- status = AudioUnitSetProperty (unit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, /* 0 = output element */
- &enableIO, sizeof (enableIO));
-
- if (status) {
- CloseComponent (unit);
- GST_WARNING_OBJECT (osxbuf, "Failed to disable output: %lx",
- (gulong) status);
- return NULL;
- }
- }
-
- /* Specify which device we're using. */
- GST_DEBUG_OBJECT (osxbuf, "Setting device to %d", (int) device_id);
- status = AudioUnitSetProperty (unit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global, 0, /* N/A for global */
- &device_id, sizeof (AudioDeviceID));
-
- if (status) {
- CloseComponent (unit);
- GST_WARNING_OBJECT (osxbuf, "Failed to set device: %lx", (gulong) status);
- return NULL;
- }
-
- GST_DEBUG_OBJECT (osxbuf, "Create HALOutput AudioUnit: %p", unit);
-
- return unit;
-}
-
-static gboolean
-gst_osx_ring_buffer_open_device (GstRingBuffer * buf)
-{
- GstOsxRingBuffer *osxbuf;
- GstOsxAudioSink *sink;
- GstOsxAudioSrc *src;
- AudioStreamBasicDescription asbd_in;
- OSStatus status;
- UInt32 propertySize;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
- sink = NULL;
- src = NULL;
-
- osxbuf->audiounit = gst_osx_ring_buffer_create_audio_unit (osxbuf,
- osxbuf->is_src, osxbuf->device_id);
-
- if (osxbuf->is_src) {
- src = GST_OSX_AUDIO_SRC (GST_OBJECT_PARENT (buf));
-
- propertySize = sizeof (asbd_in);
- status = AudioUnitGetProperty (osxbuf->audiounit,
- kAudioUnitProperty_StreamFormat,
- kAudioUnitScope_Input, 1, &asbd_in, &propertySize);
-
- if (status) {
- CloseComponent (osxbuf->audiounit);
- osxbuf->audiounit = NULL;
- GST_WARNING_OBJECT (osxbuf, "Unable to obtain device properties: %lx",
- (gulong) status);
- return FALSE;
- }
-
- src->deviceChannels = asbd_in.mChannelsPerFrame;
- } else {
- sink = GST_OSX_AUDIO_SINK (GST_OBJECT_PARENT (buf));
-
- /* needed for the sink's volume control */
- sink->audiounit = osxbuf->audiounit;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_osx_ring_buffer_close_device (GstRingBuffer * buf)
-{
- GstOsxRingBuffer *osxbuf;
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- CloseComponent (osxbuf->audiounit);
- osxbuf->audiounit = NULL;
-
- return TRUE;
-}
-
-static AudioChannelLabel
-gst_audio_channel_position_to_coreaudio_channel_label (GstAudioChannelPosition
- position, int channel)
-{
- switch (position) {
- case GST_AUDIO_CHANNEL_POSITION_NONE:
- return kAudioChannelLabel_Discrete_0 | channel;
- case GST_AUDIO_CHANNEL_POSITION_FRONT_MONO:
- return kAudioChannelLabel_Mono;
- case GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT:
- return kAudioChannelLabel_Left;
- case GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT:
- return kAudioChannelLabel_Right;
- case GST_AUDIO_CHANNEL_POSITION_REAR_CENTER:
- return kAudioChannelLabel_CenterSurround;
- case GST_AUDIO_CHANNEL_POSITION_REAR_LEFT:
- return kAudioChannelLabel_LeftSurround;
- case GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT:
- return kAudioChannelLabel_RightSurround;
- case GST_AUDIO_CHANNEL_POSITION_LFE:
- return kAudioChannelLabel_LFEScreen;
- case GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER:
- return kAudioChannelLabel_Center;
- case GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
- return kAudioChannelLabel_Center; // ???
- case GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
- return kAudioChannelLabel_Center; // ???
- case GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT:
- return kAudioChannelLabel_LeftSurroundDirect;
- case GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT:
- return kAudioChannelLabel_RightSurroundDirect;
- default:
- return kAudioChannelLabel_Unknown;
- }
-}
-
-static gboolean
-gst_osx_ring_buffer_acquire (GstRingBuffer * buf, GstRingBufferSpec * spec)
-{
- /* Configure the output stream and allocate ringbuffer memory */
- GstOsxRingBuffer *osxbuf;
- AudioStreamBasicDescription format;
- AudioChannelLayout *layout = NULL;
- OSStatus status;
- UInt32 propertySize;
- int layoutSize;
- int element;
- int i;
- AudioUnitScope scope;
- gboolean ret = FALSE;
- GstStructure *structure;
- GstAudioChannelPosition *positions;
- UInt32 frameSize;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- /* Fill out the audio description we're going to be using */
- format.mFormatID = kAudioFormatLinearPCM;
- format.mSampleRate = (double) spec->rate;
- format.mChannelsPerFrame = spec->channels;
- format.mFormatFlags = kAudioFormatFlagsNativeFloatPacked;
- format.mBytesPerFrame = spec->channels * sizeof (float);
- format.mBitsPerChannel = sizeof (float) * 8;
- format.mBytesPerPacket = spec->channels * sizeof (float);
- format.mFramesPerPacket = 1;
- format.mReserved = 0;
-
- /* Describe channels */
- layoutSize = sizeof (AudioChannelLayout) +
- spec->channels * sizeof (AudioChannelDescription);
- layout = g_malloc (layoutSize);
-
- structure = gst_caps_get_structure (spec->caps, 0);
- positions = gst_audio_get_channel_positions (structure);
-
- layout->mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelDescriptions;
- layout->mChannelBitmap = 0; /* Not used */
- layout->mNumberChannelDescriptions = spec->channels;
- for (i = 0; i < spec->channels; i++) {
- if (positions) {
- layout->mChannelDescriptions[i].mChannelLabel =
- gst_audio_channel_position_to_coreaudio_channel_label (positions[i],
- i);
- } else {
- /* Discrete channel numbers are ORed into this */
- layout->mChannelDescriptions[i].mChannelLabel =
- kAudioChannelLabel_Discrete_0 | i;
- }
-
- /* Others unused */
- layout->mChannelDescriptions[i].mChannelFlags = 0;
- layout->mChannelDescriptions[i].mCoordinates[0] = 0.f;
- layout->mChannelDescriptions[i].mCoordinates[1] = 0.f;
- layout->mChannelDescriptions[i].mCoordinates[2] = 0.f;
- }
-
- if (positions) {
- g_free (positions);
- positions = NULL;
- }
-
- GST_LOG_OBJECT (osxbuf, "Format: %x, %f, %u, %x, %d, %d, %d, %d, %d",
- (unsigned int) format.mFormatID,
- format.mSampleRate,
- (unsigned int) format.mChannelsPerFrame,
- (unsigned int) format.mFormatFlags,
- (unsigned int) format.mBytesPerFrame,
- (unsigned int) format.mBitsPerChannel,
- (unsigned int) format.mBytesPerPacket,
- (unsigned int) format.mFramesPerPacket, (unsigned int) format.mReserved);
-
- GST_DEBUG_OBJECT (osxbuf, "Setting format for AudioUnit");
-
- scope = osxbuf->is_src ? kAudioUnitScope_Output : kAudioUnitScope_Input;
- element = osxbuf->is_src ? 1 : 0;
-
- propertySize = sizeof (format);
- status = AudioUnitSetProperty (osxbuf->audiounit,
- kAudioUnitProperty_StreamFormat, scope, element, &format, propertySize);
-
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Failed to set audio description: %lx",
- (gulong) status);
- goto done;
- }
-
- status = AudioUnitSetProperty (osxbuf->audiounit,
- kAudioUnitProperty_AudioChannelLayout,
- scope, element, layout, layoutSize);
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Failed to set output channel layout: %lx",
- (gulong) status);
- goto done;
- }
-
- spec->segsize =
- (spec->latency_time * spec->rate / G_USEC_PER_SEC) *
- spec->bytes_per_sample;
- spec->segtotal = spec->buffer_time / spec->latency_time;
-
- /* create AudioBufferList needed for recording */
- if (osxbuf->is_src) {
- propertySize = sizeof (frameSize);
- status = AudioUnitGetProperty (osxbuf->audiounit, kAudioDevicePropertyBufferFrameSize, kAudioUnitScope_Global, 0, /* N/A for global */
- &frameSize, &propertySize);
-
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Failed to get frame size: %lx",
- (gulong) status);
- goto done;
- }
-
- osxbuf->recBufferList = buffer_list_alloc (format.mChannelsPerFrame,
- frameSize * format.mBytesPerFrame);
- }
-
- buf->data = gst_buffer_new_and_alloc (spec->segtotal * spec->segsize);
- memset (GST_BUFFER_DATA (buf->data), 0, GST_BUFFER_SIZE (buf->data));
-
- osxbuf->segoffset = 0;
-
- status = AudioUnitInitialize (osxbuf->audiounit);
- if (status) {
- gst_buffer_unref (buf->data);
- buf->data = NULL;
-
- if (osxbuf->recBufferList) {
- buffer_list_free (osxbuf->recBufferList);
- osxbuf->recBufferList = NULL;
- }
-
- GST_WARNING_OBJECT (osxbuf,
- "Failed to initialise AudioUnit: %d", (int) status);
- goto done;
- }
-
- GST_DEBUG_OBJECT (osxbuf, "osx ring buffer acquired");
-
- ret = TRUE;
-
-done:
- g_free (layout);
- return ret;
-}
-
-static gboolean
-gst_osx_ring_buffer_release (GstRingBuffer * buf)
-{
- GstOsxRingBuffer *osxbuf;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- AudioUnitUninitialize (osxbuf->audiounit);
-
- gst_buffer_unref (buf->data);
- buf->data = NULL;
-
- if (osxbuf->recBufferList) {
- buffer_list_free (osxbuf->recBufferList);
- osxbuf->recBufferList = NULL;
- }
-
- return TRUE;
-}
-
-static void
-gst_osx_ring_buffer_remove_render_callback (GstOsxRingBuffer * osxbuf)
-{
- AURenderCallbackStruct input;
- OSStatus status;
-
- /* Deactivate the render callback by calling SetRenderCallback with a NULL
- * inputProc.
- */
- input.inputProc = NULL;
- input.inputProcRefCon = NULL;
-
- status = AudioUnitSetProperty (osxbuf->audiounit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Global, 0, /* N/A for global */
- &input, sizeof (input));
-
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Failed to remove render callback");
- }
-
- /* Remove the RenderNotify too */
- status = AudioUnitRemoveRenderNotify (osxbuf->audiounit,
- (AURenderCallback) gst_osx_ring_buffer_render_notify, osxbuf);
-
- if (status) {
- GST_WARNING_OBJECT (osxbuf, "Failed to remove render notify callback");
- }
-
- /* We're deactivated.. */
- osxbuf->io_proc_needs_deactivation = FALSE;
- osxbuf->io_proc_active = FALSE;
-}
-
-static OSStatus
-gst_osx_ring_buffer_render_notify (GstOsxRingBuffer * osxbuf,
- AudioUnitRenderActionFlags * ioActionFlags,
- const AudioTimeStamp * inTimeStamp,
- unsigned int inBusNumber,
- unsigned int inNumberFrames, AudioBufferList * ioData)
-{
- /* Before rendering a frame, we get the PreRender notification.
- * Here, we detach the RenderCallback if we've been paused.
- *
- * This is necessary (rather than just directly detaching it) to work
- * around some thread-safety issues in CoreAudio
- */
- if ((*ioActionFlags) & kAudioUnitRenderAction_PreRender) {
- if (osxbuf->io_proc_needs_deactivation) {
- gst_osx_ring_buffer_remove_render_callback (osxbuf);
- }
- }
-
- return noErr;
-}
-
-static gboolean
-gst_osx_ring_buffer_start (GstRingBuffer * buf)
-{
- OSStatus status;
- GstOsxRingBuffer *osxbuf;
- AURenderCallbackStruct input;
- AudioUnitPropertyID callback_type;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- GST_DEBUG ("osx ring buffer start ioproc: 0x%p device_id %lu",
- osxbuf->element->io_proc, (gulong) osxbuf->device_id);
- if (!osxbuf->io_proc_active) {
- callback_type = osxbuf->is_src ?
- kAudioOutputUnitProperty_SetInputCallback :
- kAudioUnitProperty_SetRenderCallback;
-
- input.inputProc = (AURenderCallback) osxbuf->element->io_proc;
- input.inputProcRefCon = osxbuf;
-
- status = AudioUnitSetProperty (osxbuf->audiounit, callback_type, kAudioUnitScope_Global, 0, /* N/A for global */
- &input, sizeof (input));
-
- if (status) {
- GST_WARNING ("AudioUnitSetProperty returned %d", (int) status);
- return FALSE;
- }
- // ### does it make sense to do this notify stuff for input mode?
- status = AudioUnitAddRenderNotify (osxbuf->audiounit,
- (AURenderCallback) gst_osx_ring_buffer_render_notify, osxbuf);
-
- if (status) {
- GST_WARNING ("AudioUnitAddRenderNotify returned %d", (int) status);
- return FALSE;
- }
-
- osxbuf->io_proc_active = TRUE;
- }
-
- osxbuf->io_proc_needs_deactivation = FALSE;
-
- status = AudioOutputUnitStart (osxbuf->audiounit);
- if (status) {
- GST_WARNING ("AudioOutputUnitStart returned %d", (int) status);
- return FALSE;
- }
- return TRUE;
-}
-
-// ###
-static gboolean
-gst_osx_ring_buffer_pause (GstRingBuffer * buf)
-{
- GstOsxRingBuffer *osxbuf = GST_OSX_RING_BUFFER (buf);
-
- GST_DEBUG ("osx ring buffer pause ioproc: 0x%p device_id %lu",
- osxbuf->element->io_proc, (gulong) osxbuf->device_id);
- if (osxbuf->io_proc_active) {
- /* CoreAudio isn't threadsafe enough to do this here; we must deactivate
- * the render callback elsewhere. See:
- * http://lists.apple.com/archives/Coreaudio-api/2006/Mar/msg00010.html
- */
- osxbuf->io_proc_needs_deactivation = TRUE;
- }
- return TRUE;
-}
-
-// ###
-static gboolean
-gst_osx_ring_buffer_stop (GstRingBuffer * buf)
-{
- OSErr status;
- GstOsxRingBuffer *osxbuf;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- GST_DEBUG ("osx ring buffer stop ioproc: 0x%p device_id %lu",
- osxbuf->element->io_proc, (gulong) osxbuf->device_id);
-
- status = AudioOutputUnitStop (osxbuf->audiounit);
- if (status)
- GST_WARNING ("AudioOutputUnitStop returned %d", (int) status);
-
- // ###: why is it okay to directly remove from here but not from pause() ?
- if (osxbuf->io_proc_active) {
- gst_osx_ring_buffer_remove_render_callback (osxbuf);
- }
- return TRUE;
-}
-
-static guint
-gst_osx_ring_buffer_delay (GstRingBuffer * buf)
-{
- double latency;
- UInt32 size = sizeof (double);
- GstOsxRingBuffer *osxbuf;
- OSStatus status;
- guint samples;
-
- osxbuf = GST_OSX_RING_BUFFER (buf);
-
- status = AudioUnitGetProperty (osxbuf->audiounit, kAudioUnitProperty_Latency, kAudioUnitScope_Global, 0, /* N/A for global */
- &latency, &size);
-
- if (status) {
- GST_WARNING_OBJECT (buf, "Failed to get latency: %d", (int) status);
- return 0;
- }
-
- samples = latency * GST_RING_BUFFER (buf)->spec.rate;
- GST_DEBUG_OBJECT (buf, "Got latency: %f seconds -> %d samples", latency,
- samples);
- return samples;
-}
-
-static AudioBufferList *
-buffer_list_alloc (int channels, int size)
-{
- AudioBufferList *list;
- int total_size;
- int n;
-
- total_size = sizeof (AudioBufferList) + 1 * sizeof (AudioBuffer);
- list = (AudioBufferList *) g_malloc (total_size);
-
- list->mNumberBuffers = 1;
- for (n = 0; n < (int) list->mNumberBuffers; ++n) {
- list->mBuffers[n].mNumberChannels = channels;
- list->mBuffers[n].mDataByteSize = size;
- list->mBuffers[n].mData = g_malloc (size);
- }
-
- return list;
-}
-
-static void
-buffer_list_free (AudioBufferList * list)
-{
- int n;
-
- for (n = 0; n < (int) list->mNumberBuffers; ++n) {
- if (list->mBuffers[n].mData)
- g_free (list->mBuffers[n].mData);
- }
-
- g_free (list);
-}
diff --git a/wearable/sys/osxaudio/gstosxringbuffer.h b/wearable/sys/osxaudio/gstosxringbuffer.h
deleted file mode 100644
index 5e6dbe4..0000000
--- a/wearable/sys/osxaudio/gstosxringbuffer.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2006 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_OSX_RING_BUFFER_H__
-#define __GST_OSX_RING_BUFFER_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstringbuffer.h>
-#include <CoreAudio/CoreAudio.h>
-#include "gstosxaudioelement.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSX_RING_BUFFER \
- (gst_osx_ring_buffer_get_type())
-#define GST_OSX_RING_BUFFER(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OSX_RING_BUFFER,GstOsxRingBuffer))
-#define GST_OSX_RING_BUFFER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OSX_RING_BUFFER,GstOsxRingBufferClass))
-#define GST_OSX_RING_BUFFER_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_OSX_RING_BUFFER,GstOsxRingBufferClass))
-#define GST_IS_OSX_RING_BUFFER(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_OSX_RING_BUFFER))
-#define GST_IS_OSX_RING_BUFFER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_OSX_RING_BUFFER))
-
-typedef struct _GstOsxRingBuffer GstOsxRingBuffer;
-typedef struct _GstOsxRingBufferClass GstOsxRingBufferClass;
-
-struct _GstOsxRingBuffer
-{
- GstRingBuffer object;
-
- gboolean is_src;
- AudioUnit audiounit;
- AudioDeviceID device_id;
- gboolean io_proc_active;
- gboolean io_proc_needs_deactivation;
- guint buffer_len;
- guint segoffset;
- AudioBufferList * recBufferList;
- GstOsxAudioElementInterface * element;
-};
-
-struct _GstOsxRingBufferClass
-{
- GstRingBufferClass parent_class;
-};
-
-GType gst_osx_ring_buffer_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_OSX_RING_BUFFER_H__ */
diff --git a/wearable/sys/osxvideo/Makefile.am b/wearable/sys/osxvideo/Makefile.am
deleted file mode 100644
index 8893c2e..0000000
--- a/wearable/sys/osxvideo/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-
-plugin_LTLIBRARIES = libgstosxvideosink.la
-
-libgstosxvideosink_la_SOURCES = osxvideosink.m cocoawindow.m
-libgstosxvideosink_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS)
-libgstosxvideosink_la_LIBADD = \
- $(GST_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_MAJORMINOR) \
- -lgstinterfaces-$(GST_MAJORMINOR)
-
-libgstosxvideosink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,-framework -Wl,Cocoa -Wl,-framework -Wl,QuickTime -Wl,-framework -Wl,OpenGL
-libgstosxvideosink_la_LIBTOOLFLAGS = --tag=disable-static
-
-AM_OBJCFLAGS=$(CFLAGS) $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) -Wno-aggregate-return
-
-noinst_HEADERS = osxvideosink.h cocoawindow.h
diff --git a/wearable/sys/osxvideo/Makefile.in b/wearable/sys/osxvideo/Makefile.in
deleted file mode 100644
index fe62cb4..0000000
--- a/wearable/sys/osxvideo/Makefile.in
+++ /dev/null
@@ -1,824 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/osxvideo
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstosxvideosink_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstosxvideosink_la_OBJECTS = \
- libgstosxvideosink_la-osxvideosink.lo \
- libgstosxvideosink_la-cocoawindow.lo
-libgstosxvideosink_la_OBJECTS = $(am_libgstosxvideosink_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstosxvideosink_la_LINK = $(LIBTOOL) $(AM_V_lt) \
- $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) \
- $(libgstosxvideosink_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
-LTOBJCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_OBJCFLAGS) $(OBJCFLAGS)
-AM_V_OBJC = $(am__v_OBJC_@AM_V@)
-am__v_OBJC_ = $(am__v_OBJC_@AM_DEFAULT_V@)
-am__v_OBJC_0 = @echo " OBJC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-OBJCLD = $(OBJC)
-OBJCLINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_OBJCLD = $(am__v_OBJCLD_@AM_V@)
-am__v_OBJCLD_ = $(am__v_OBJCLD_@AM_DEFAULT_V@)
-am__v_OBJCLD_0 = @echo " OBJCLD" $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstosxvideosink_la_SOURCES)
-DIST_SOURCES = $(libgstosxvideosink_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstosxvideosink.la
-libgstosxvideosink_la_SOURCES = osxvideosink.m cocoawindow.m
-libgstosxvideosink_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS)
-
-libgstosxvideosink_la_LIBADD = \
- $(GST_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_MAJORMINOR) \
- -lgstinterfaces-$(GST_MAJORMINOR)
-
-libgstosxvideosink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,-framework -Wl,Cocoa -Wl,-framework -Wl,QuickTime -Wl,-framework -Wl,OpenGL
-libgstosxvideosink_la_LIBTOOLFLAGS = --tag=disable-static
-AM_OBJCFLAGS = $(CFLAGS) $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) -Wno-aggregate-return
-noinst_HEADERS = osxvideosink.h cocoawindow.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .lo .m .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/osxvideo/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/osxvideo/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstosxvideosink.la: $(libgstosxvideosink_la_OBJECTS) $(libgstosxvideosink_la_DEPENDENCIES) $(EXTRA_libgstosxvideosink_la_DEPENDENCIES)
- $(AM_V_OBJCLD)$(libgstosxvideosink_la_LINK) -rpath $(plugindir) $(libgstosxvideosink_la_OBJECTS) $(libgstosxvideosink_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxvideosink_la-cocoawindow.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstosxvideosink_la-osxvideosink.Plo@am__quote@
-
-.m.o:
-@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(OBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ $<
-
-.m.obj:
-@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(OBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.m.lo:
-@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LTOBJCCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LTOBJCCOMPILE) -c -o $@ $<
-
-libgstosxvideosink_la-osxvideosink.lo: osxvideosink.m
-@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS) -MT libgstosxvideosink_la-osxvideosink.lo -MD -MP -MF $(DEPDIR)/libgstosxvideosink_la-osxvideosink.Tpo -c -o libgstosxvideosink_la-osxvideosink.lo `test -f 'osxvideosink.m' || echo '$(srcdir)/'`osxvideosink.m
-@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxvideosink_la-osxvideosink.Tpo $(DEPDIR)/libgstosxvideosink_la-osxvideosink.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='osxvideosink.m' object='libgstosxvideosink_la-osxvideosink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS) -c -o libgstosxvideosink_la-osxvideosink.lo `test -f 'osxvideosink.m' || echo '$(srcdir)/'`osxvideosink.m
-
-libgstosxvideosink_la-cocoawindow.lo: cocoawindow.m
-@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS) -MT libgstosxvideosink_la-cocoawindow.lo -MD -MP -MF $(DEPDIR)/libgstosxvideosink_la-cocoawindow.Tpo -c -o libgstosxvideosink_la-cocoawindow.lo `test -f 'cocoawindow.m' || echo '$(srcdir)/'`cocoawindow.m
-@am__fastdepOBJC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstosxvideosink_la-cocoawindow.Tpo $(DEPDIR)/libgstosxvideosink_la-cocoawindow.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ $(AM_V_OBJC)source='cocoawindow.m' object='libgstosxvideosink_la-cocoawindow.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@ DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@ $(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(libgstosxvideosink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS) -c -o libgstosxvideosink_la-cocoawindow.lo `test -f 'cocoawindow.m' || echo '$(srcdir)/'`cocoawindow.m
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/osxvideo/cocoawindow.h b/wearable/sys/osxvideo/cocoawindow.h
deleted file mode 100644
index 7324cc7..0000000
--- a/wearable/sys/osxvideo/cocoawindow.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* GStreamer
- * Copyright (C) 2004 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of Pioneers
- * of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-/* inspiration gained from looking at source of osx video out of xine and vlc
- * and is reflected in the code
- */
-
-#import <Cocoa/Cocoa.h>
-#import <QuickTime/QuickTime.h>
-#import <glib.h>
-
-struct _GstOSXImage;
-
-@interface GstGLView : NSOpenGLView
-{
- int i_effect;
- unsigned int pi_texture;
- float f_x;
- float f_y;
- int initDone;
- char* data;
- int width, height;
- BOOL fullscreen;
- NSOpenGLContext* fullScreenContext;
- NSOpenGLContext* actualContext;
-}
-- (void) drawQuad;
-- (void) drawRect: (NSRect) rect;
-- (id) initWithFrame: (NSRect) frame;
-- (void) initTextures;
-- (void) reloadTexture;
-- (void) cleanUp;
-- (void) displayTexture;
-- (char*) getTextureBuffer;
-- (void) setFullScreen: (BOOL) flag;
-- (void) reshape;
-- (void) setVideoSize: (int) w: (int) h;
-- (BOOL) haveSuperview;
-- (void) haveSuperviewReal: (NSMutableArray *)closure;
-- (void) addToSuperview: (NSView *)superview;
-- (void) removeFromSuperview: (id)unused;
-
-@end
-
-@interface GstOSXVideoSinkWindow: NSWindow {
- int width, height;
- GstGLView *gstview;
-}
-
-- (void) setContentSize: (NSSize) size;
-- (GstGLView *) gstView;
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag screen:(NSScreen *)aScreen;
-@end
diff --git a/wearable/sys/osxvideo/cocoawindow.m b/wearable/sys/osxvideo/cocoawindow.m
deleted file mode 100644
index ed24fad..0000000
--- a/wearable/sys/osxvideo/cocoawindow.m
+++ /dev/null
@@ -1,432 +0,0 @@
-/* GStreamer
- * Copyright (C) 2004 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of Pioneers
- * of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-/* inspiration gained from looking at source of osx video out of xine and vlc
- * and is reflected in the code
- */
-
-
-#include <Cocoa/Cocoa.h>
-#include <gst/gst.h>
-#import "cocoawindow.h"
-#import "osxvideosink.h"
-
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/gl.h>
-#include <OpenGL/glext.h>
-
-/* Debugging category */
-#include <gst/gstinfo.h>
-
-@ implementation GstOSXVideoSinkWindow
-
-/* The object has to be released */
-- (id) initWithContentRect: (NSRect) rect
- styleMask: (unsigned int) styleMask
- backing: (NSBackingStoreType) bufferingType
- defer: (BOOL) flag
- screen:(NSScreen *) aScreen
-{
- self = [super initWithContentRect: rect
- styleMask: styleMask
- backing: bufferingType
- defer: flag
- screen:aScreen];
-
- GST_DEBUG ("Initializing GstOSXvideoSinkWindow");
-
- gstview = [[GstGLView alloc] initWithFrame:rect];
-
- if (gstview)
- [self setContentView:gstview];
- [self setTitle:@"GStreamer Video Output"];
-
- return self;
-}
-
-- (void) setContentSize:(NSSize) size {
- width = size.width;
- height = size.height;
-
- [gstview setVideoSize: (int) width:(int) height];
-
- [super setContentSize:size];
-}
-
-- (GstGLView *) gstView {
- return gstview;
-}
-
-- (void) awakeFromNib {
- [self setAcceptsMouseMovedEvents:YES];
-}
-
-- (void) sendEvent:(NSEvent *) event {
- BOOL taken = NO;
-
- GST_DEBUG ("event %p type:%d", event,(gint)[event type]);
-
- if ([event type] == NSKeyDown) {
- }
- /*taken = [gstview keyDown:event]; */
-
- if (!taken) {
- [super sendEvent:event];
- }
-}
-
-
-@end
-
-
-//
-// OpenGL implementation
-//
-
-@ implementation GstGLView
-
-- (id) initWithFrame:(NSRect) frame {
- NSOpenGLPixelFormat *fmt;
- NSOpenGLPixelFormatAttribute attribs[] = {
- NSOpenGLPFAAccelerated,
- NSOpenGLPFANoRecovery,
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFAColorSize, 24,
- NSOpenGLPFAAlphaSize, 8,
- NSOpenGLPFADepthSize, 24,
- NSOpenGLPFAWindow,
- 0
- };
-
- fmt = [[NSOpenGLPixelFormat alloc]
- initWithAttributes:attribs];
-
- if (!fmt) {
- GST_WARNING ("Cannot create NSOpenGLPixelFormat");
- return nil;
- }
-
- self = [super initWithFrame: frame pixelFormat:fmt];
- [fmt release];
-
- actualContext = [self openGLContext];
- [actualContext makeCurrentContext];
- [actualContext update];
-
- /* Black background */
- glClearColor (0.0, 0.0, 0.0, 0.0);
-
- pi_texture = 0;
- data = nil;
- width = frame.size.width;
- height = frame.size.height;
-
- GST_LOG ("Width: %d Height: %d", width, height);
-
- [self initTextures];
- return self;
-}
-
-- (void) reshape {
- NSRect bounds;
-
- GST_LOG ("reshaping");
-
- if (!initDone) {
- return;
- }
-
- [actualContext makeCurrentContext];
-
- bounds = [self bounds];
-
- glViewport (0, 0, (GLint) bounds.size.width, (GLint) bounds.size.height);
-
-}
-
-- (void) initTextures {
-
- [actualContext makeCurrentContext];
-
- /* Free previous texture if any */
- if (pi_texture) {
- glDeleteTextures (1, (GLuint *)&pi_texture);
- }
-
- if (data) {
- data = g_realloc (data, width * height * sizeof(short)); // short or 3byte?
- } else {
- data = g_malloc0(width * height * sizeof(short));
- }
- /* Create textures */
- glGenTextures (1, (GLuint *)&pi_texture);
-
- glEnable (GL_TEXTURE_RECTANGLE_EXT);
- glEnable (GL_UNPACK_CLIENT_STORAGE_APPLE);
-
- glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei (GL_UNPACK_ROW_LENGTH, width);
-
- glBindTexture (GL_TEXTURE_RECTANGLE_EXT, pi_texture);
-
- /* Use VRAM texturing */
- glTexParameteri (GL_TEXTURE_RECTANGLE_EXT,
- GL_TEXTURE_STORAGE_HINT_APPLE, GL_STORAGE_CACHED_APPLE);
-
- /* Tell the driver not to make a copy of the texture but to use
- our buffer */
- glPixelStorei (GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
-
- /* Linear interpolation */
- glTexParameteri (GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri (GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- /* I have no idea what this exactly does, but it seems to be
- necessary for scaling */
- glTexParameteri (GL_TEXTURE_RECTANGLE_EXT,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri (GL_TEXTURE_RECTANGLE_EXT,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- // glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); WHY ??
-
- glTexImage2D (GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA,
- width, height, 0,
- GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, data);
-
-
- initDone = 1;
-}
-
-- (void) reloadTexture {
- if (!initDone) {
- return;
- }
-
- GST_LOG ("Reloading Texture");
-
- [actualContext makeCurrentContext];
-
- glBindTexture (GL_TEXTURE_RECTANGLE_EXT, pi_texture);
- glPixelStorei (GL_UNPACK_ROW_LENGTH, width);
-
- /* glTexSubImage2D is faster than glTexImage2D
- http://developer.apple.com/samplecode/Sample_Code/Graphics_3D/
- TextureRange/MainOpenGLView.m.htm */
- glTexSubImage2D (GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0,
- width, height,
- GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, data); //FIXME
-}
-
-- (void) cleanUp {
- initDone = 0;
-}
-
-- (void) drawQuad {
- f_x = 1.0;
- f_y = 1.0;
-
- glBegin (GL_QUADS);
- /* Top left */
- glTexCoord2f (0.0, 0.0);
- glVertex2f (-f_x, f_y);
- /* Bottom left */
- glTexCoord2f (0.0, (float) height);
- glVertex2f (-f_x, -f_y);
- /* Bottom right */
- glTexCoord2f ((float) width, (float) height);
- glVertex2f (f_x, -f_y);
- /* Top right */
- glTexCoord2f ((float) width, 0.0);
- glVertex2f (f_x, f_y);
- glEnd ();
-}
-
-- (void) drawRect:(NSRect) rect {
- GLint params[] = { 1 };
-
- [actualContext makeCurrentContext];
-
- CGLSetParameter (CGLGetCurrentContext (), kCGLCPSwapInterval, params);
-
- /* Black background */
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (!initDone) {
- [actualContext flushBuffer];
- return;
- }
-
- /* Draw */
- glBindTexture (GL_TEXTURE_RECTANGLE_EXT, pi_texture); // FIXME
- [self drawQuad];
- /* Draw */
- [actualContext flushBuffer];
-}
-
-- (void) displayTexture {
- if ([self lockFocusIfCanDraw]) {
-
- [self drawRect:[self bounds]];
- [self reloadTexture];
-
- [self unlockFocus];
-
- }
-
-}
-
-- (char *) getTextureBuffer {
- return data;
-}
-
-- (void) setFullScreen:(BOOL) flag {
- if (!fullscreen && flag) {
- // go to full screen
- /* Create the new pixel format */
- NSOpenGLPixelFormat *fmt;
- NSOpenGLPixelFormatAttribute attribs[] = {
- NSOpenGLPFAAccelerated,
- NSOpenGLPFANoRecovery,
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFAColorSize, 24,
- NSOpenGLPFAAlphaSize, 8,
- NSOpenGLPFADepthSize, 24,
- NSOpenGLPFAFullScreen,
- NSOpenGLPFAScreenMask,
- CGDisplayIDToOpenGLDisplayMask (kCGDirectMainDisplay),
- 0
- };
-
- fmt = [[NSOpenGLPixelFormat alloc]
- initWithAttributes:attribs];
-
- if (!fmt) {
- GST_WARNING ("Cannot create NSOpenGLPixelFormat");
- return;
- }
-
- /* Create the new OpenGL context */
- fullScreenContext = [[NSOpenGLContext alloc]
- initWithFormat: fmt shareContext:nil];
- if (!fullScreenContext) {
- GST_WARNING ("Failed to create new NSOpenGLContext");
- return;
- }
-
- actualContext = fullScreenContext;
-
- /* Capture display, switch to fullscreen */
- if (CGCaptureAllDisplays () != CGDisplayNoErr) {
- GST_WARNING ("CGCaptureAllDisplays() failed");
- return;
- }
- [fullScreenContext setFullScreen];
- [fullScreenContext makeCurrentContext];
-
- fullscreen = YES;
-
- [self initTextures];
- [self setNeedsDisplay:YES];
-
- } else if (fullscreen && !flag) {
- // fullscreen now and needs to go back to normal
- initDone = NO;
-
- actualContext = [self openGLContext];
-
- [NSOpenGLContext clearCurrentContext];
- [fullScreenContext clearDrawable];
- [fullScreenContext release];
- fullScreenContext = nil;
-
- CGReleaseAllDisplays ();
-
- [self reshape];
- [self initTextures];
-
- [self setNeedsDisplay:YES];
-
- fullscreen = NO;
- initDone = YES;
- }
-}
-
-- (void) setVideoSize: (int) w:(int) h {
- GST_LOG ("width:%d, height:%d", w, h);
-
- width = w;
- height = h;
-
-// if (data) g_free(data);
-
-// data = g_malloc0 (2 * w * h);
- [self initTextures];
-}
-
-- (void) haveSuperviewReal:(NSMutableArray *)closure {
- BOOL haveSuperview = [self superview] != nil;
- [closure addObject:[NSNumber numberWithBool:haveSuperview]];
-}
-
-- (BOOL) haveSuperview {
- NSMutableArray *closure = [NSMutableArray arrayWithCapacity:1];
- [self performSelectorOnMainThread:@selector(haveSuperviewReal:)
- withObject:(id)closure waitUntilDone:YES];
-
- return [[closure objectAtIndex:0] boolValue];
-}
-
-- (void) addToSuperviewReal:(NSView *)superview {
- NSRect bounds;
- [superview addSubview:self];
- bounds = [superview bounds];
- [self setFrame:bounds];
- [self setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
-}
-
-- (void) addToSuperview: (NSView *)superview {
- [self performSelectorOnMainThread:@selector(addToSuperviewReal:)
- withObject:superview waitUntilDone:YES];
-}
-
-- (void) removeFromSuperview: (id)unused
-{
- [self removeFromSuperview];
-}
-
-- (void) dealloc {
- GST_LOG ("dealloc called");
- if (data) g_free(data);
-
- if (fullScreenContext) {
- [NSOpenGLContext clearCurrentContext];
- [fullScreenContext clearDrawable];
- [fullScreenContext release];
- if (actualContext == fullScreenContext) actualContext = nil;
- fullScreenContext = nil;
- }
-
- [super dealloc];
-}
-@end
diff --git a/wearable/sys/osxvideo/osxvideosink.h b/wearable/sys/osxvideo/osxvideosink.h
deleted file mode 100644
index 2a228d0..0000000
--- a/wearable/sys/osxvideo/osxvideosink.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* GStreamer
- * Copyright (C) 2004-6 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- *
- * The development of this code was made possible due to the involvement of Pioneers
- * of the Inevitable, the creators of the Songbird Music player
- *
- */
-
-#ifndef __GST_OSX_VIDEO_SINK_H__
-#define __GST_OSX_VIDEO_SINK_H__
-
-#include <gst/video/gstvideosink.h>
-
-#include <string.h>
-#include <math.h>
-#include <Cocoa/Cocoa.h>
-
-#include <QuickTime/QuickTime.h>
-#import "cocoawindow.h"
-
-GST_DEBUG_CATEGORY_EXTERN (gst_debug_osx_video_sink);
-#define GST_CAT_DEFAULT gst_debug_osx_video_sink
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_OSX_VIDEO_SINK \
- (gst_osx_video_sink_get_type())
-#define GST_OSX_VIDEO_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_OSX_VIDEO_SINK, GstOSXVideoSink))
-#define GST_OSX_VIDEO_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_OSX_VIDEO_SINK, GstOSXVideoSinkClass))
-#define GST_IS_OSX_VIDEO_SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_OSX_VIDEO_SINK))
-#define GST_IS_OSX_VIDEO_SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_OSX_VIDEO_SINK))
-
-typedef struct _GstOSXWindow GstOSXWindow;
-
-typedef struct _GstOSXVideoSink GstOSXVideoSink;
-typedef struct _GstOSXVideoSinkClass GstOSXVideoSinkClass;
-
-#define GST_TYPE_OSXVIDEOBUFFER (gst_osxvideobuffer_get_type())
-
-/* OSXWindow stuff */
-struct _GstOSXWindow {
- gint width, height;
- gboolean internal;
- GstGLView* gstview;
-};
-
-struct _GstOSXVideoSink {
- /* Our element stuff */
- GstVideoSink videosink;
- GstOSXWindow *osxwindow;
- NSView *superview;
-};
-
-struct _GstOSXVideoSinkClass {
- GstVideoSinkClass parent_class;
-};
-
-GType gst_osx_video_sink_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_OSX_VIDEO_SINK_H__ */
-
diff --git a/wearable/sys/osxvideo/osxvideosink.m b/wearable/sys/osxvideo/osxvideosink.m
deleted file mode 100644
index 5914550..0000000
--- a/wearable/sys/osxvideo/osxvideosink.m
+++ /dev/null
@@ -1,524 +0,0 @@
-/* GStreamer
- * OSX video sink
- * Copyright (C) 2004-6 Zaheer Abbas Merali <zaheerabbas at merali dot org>
- * Copyright (C) 2007,2008,2009 Pioneers of the Inevitable <songbird@songbirdnest.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * The development of this code was made possible due to the involvement of
- * Pioneers of the Inevitable, the creators of the Songbird Music player.
- *
- */
-
-/**
- * SECTION:element-osxvideosink
- *
- * The OSXVideoSink renders video frames to a MacOSX window. The video output
- * must be directed to a window embedded in an existing NSApp.
- *
- * When the NSView to be embedded is created an element #GstMessage with a
- * name of 'have-ns-view' will be created and posted on the bus.
- * The pointer to the NSView to embed will be in the 'nsview' field of that
- * message. The application MUST handle this message and embed the view
- * appropriately.
- */
-
-#include "config.h"
-#include <gst/interfaces/xoverlay.h>
-
-#include "osxvideosink.h"
-#include <unistd.h>
-#import "cocoawindow.h"
-
-GST_DEBUG_CATEGORY (gst_debug_osx_video_sink);
-#define GST_CAT_DEFAULT gst_debug_osx_video_sink
-
-static GstStaticPadTemplate gst_osx_video_sink_sink_template_factory =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-yuv, "
- "framerate = (fraction) [ 0, MAX ], "
- "width = (int) [ 1, MAX ], "
- "height = (int) [ 1, MAX ], "
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- "format = (fourcc) YUY2")
-#else
- "format = (fourcc) UYVY")
-#endif
- );
-
-enum
-{
- ARG_0,
- ARG_EMBED,
-};
-
-static void gst_osx_video_sink_osxwindow_destroy (GstOSXVideoSink * osxvideosink);
-
-static GstVideoSinkClass *parent_class = NULL;
-
-/* This function handles osx window creation */
-static gboolean
-gst_osx_video_sink_osxwindow_create (GstOSXVideoSink * osxvideosink, gint width,
- gint height)
-{
- NSRect rect;
- GstOSXWindow *osxwindow = NULL;
- GstStructure *s;
- GstMessage *msg;
- gboolean res = TRUE;
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- g_return_val_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink), FALSE);
-
- GST_DEBUG_OBJECT (osxvideosink, "Creating new OSX window");
-
- osxvideosink->osxwindow = osxwindow = g_new0 (GstOSXWindow, 1);
-
- osxwindow->width = width;
- osxwindow->height = height;
-
- /* Allocate our GstGLView for the window, and then tell the application
- * about it (hopefully it's listening...) */
- rect.origin.x = 0.0;
- rect.origin.y = 0.0;
- rect.size.width = (float) osxwindow->width;
- rect.size.height = (float) osxwindow->height;
- osxwindow->gstview =[[GstGLView alloc] initWithFrame:rect];
-
- s = gst_structure_new ("have-ns-view",
- "nsview", G_TYPE_POINTER, osxwindow->gstview,
- nil);
-
- msg = gst_message_new_element (GST_OBJECT (osxvideosink), s);
- gst_element_post_message (GST_ELEMENT (osxvideosink), msg);
-
- GST_INFO_OBJECT (osxvideosink, "'have-ns-view' message sent");
-
- /* check if have-ns-view was handled and osxwindow->gstview was added to a
- * superview
- */
- if ([osxwindow->gstview haveSuperview] == NO) {
- /* have-ns-view wasn't handled, post prepare-xwindow-id */
- if (osxvideosink->superview == NULL) {
- GST_INFO_OBJECT (osxvideosink, "emitting prepare-xwindow-id");
- gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (osxvideosink));
- }
-
- if (osxvideosink->superview != NULL) {
- /* prepare-xwindow-id was handled, we have the superview in
- * osxvideosink->superview. We now add osxwindow->gstview to the superview
- * from the main thread
- */
- GST_INFO_OBJECT (osxvideosink, "we have a superview, adding our view to it");
- [osxwindow->gstview performSelectorOnMainThread:@selector(addToSuperview:)
- withObject:osxvideosink->superview waitUntilDone:YES];
- } else {
- /* the view wasn't added to a superview. It's possible that the
- * application handled have-ns-view, stored our view internally and is
- * going to add it to a superview later (webkit does that now).
- */
- GST_INFO_OBJECT (osxvideosink, "no superview");
- }
- }
-
- [pool release];
-
- return res;
-}
-
-static void
-gst_osx_video_sink_osxwindow_destroy (GstOSXVideoSink * osxvideosink)
-{
- NSAutoreleasePool *pool;
-
- g_return_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink));
- pool = [[NSAutoreleasePool alloc] init];
-
- if (osxvideosink->osxwindow) {
- if (osxvideosink->superview) {
- [osxvideosink->osxwindow->gstview
- performSelectorOnMainThread:@selector(removeFromSuperview:)
- withObject:(id)nil waitUntilDone:YES];
- }
- [osxvideosink->osxwindow->gstview release];
-
- g_free (osxvideosink->osxwindow);
- osxvideosink->osxwindow = NULL;
- }
- [pool release];
-}
-
-/* This function resizes a GstXWindow */
-static void
-gst_osx_video_sink_osxwindow_resize (GstOSXVideoSink * osxvideosink,
- GstOSXWindow * osxwindow, guint width, guint height)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- g_return_if_fail (osxwindow != NULL);
- g_return_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink));
-
- osxwindow->width = width;
- osxwindow->height = height;
-
- GST_DEBUG_OBJECT (osxvideosink, "Resizing window to (%d,%d)", width, height);
-
- /* Directly resize the underlying view */
- GST_DEBUG_OBJECT (osxvideosink, "Calling setVideoSize on %p", osxwindow->gstview);
- [osxwindow->gstview setVideoSize:width :height];
-
- [pool release];
-}
-
-static gboolean
-gst_osx_video_sink_setcaps (GstBaseSink * bsink, GstCaps * caps)
-{
- GstOSXVideoSink *osxvideosink;
- GstStructure *structure;
- gboolean res, result = FALSE;
- gint video_width, video_height;
-
- osxvideosink = GST_OSX_VIDEO_SINK (bsink);
-
- GST_DEBUG_OBJECT (osxvideosink, "caps: %" GST_PTR_FORMAT, caps);
-
- structure = gst_caps_get_structure (caps, 0);
- res = gst_structure_get_int (structure, "width", &video_width);
- res &= gst_structure_get_int (structure, "height", &video_height);
-
- if (!res) {
- goto beach;
- }
-
- GST_DEBUG_OBJECT (osxvideosink, "our format is: %dx%d video",
- video_width, video_height);
-
- GST_VIDEO_SINK_WIDTH (osxvideosink) = video_width;
- GST_VIDEO_SINK_HEIGHT (osxvideosink) = video_height;
-
- gst_osx_video_sink_osxwindow_resize (osxvideosink, osxvideosink->osxwindow,
- video_width, video_height);
- result = TRUE;
-
-beach:
- return result;
-
-}
-
-static GstStateChangeReturn
-gst_osx_video_sink_change_state (GstElement * element,
- GstStateChange transition)
-{
- GstOSXVideoSink *osxvideosink;
- GstStateChangeReturn ret;
-
- osxvideosink = GST_OSX_VIDEO_SINK (element);
-
- GST_DEBUG_OBJECT (osxvideosink, "%s => %s",
- gst_element_state_get_name(GST_STATE_TRANSITION_CURRENT (transition)),
- gst_element_state_get_name(GST_STATE_TRANSITION_NEXT (transition)));
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- /* Creating our window and our image */
- GST_VIDEO_SINK_WIDTH (osxvideosink) = 320;
- GST_VIDEO_SINK_HEIGHT (osxvideosink) = 240;
- if (!gst_osx_video_sink_osxwindow_create (osxvideosink,
- GST_VIDEO_SINK_WIDTH (osxvideosink),
- GST_VIDEO_SINK_HEIGHT (osxvideosink))) {
- ret = GST_STATE_CHANGE_FAILURE;
- goto done;
- }
- break;
- default:
- break;
- }
-
- ret = (GST_ELEMENT_CLASS (parent_class))->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- GST_VIDEO_SINK_WIDTH (osxvideosink) = 0;
- GST_VIDEO_SINK_HEIGHT (osxvideosink) = 0;
- gst_osx_video_sink_osxwindow_destroy (osxvideosink);
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- break;
- default:
- break;
- }
-
-done:
- return ret;
-}
-
-static GstFlowReturn
-gst_osx_video_sink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
-{
- GstOSXVideoSink *osxvideosink;
- guint8 *viewdata;
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- osxvideosink = GST_OSX_VIDEO_SINK (bsink);
- viewdata = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer];
-
- GST_DEBUG ("show_frame");
- memcpy (viewdata, GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf));
- [osxvideosink->osxwindow->gstview displayTexture];
-
- [pool release];
-
- return GST_FLOW_OK;
-}
-
-/* Buffer management */
-
-
-
-/* =========================================== */
-/* */
-/* Init & Class init */
-/* */
-/* =========================================== */
-
-static void
-gst_osx_video_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOSXVideoSink *osxvideosink;
-
- g_return_if_fail (GST_IS_OSX_VIDEO_SINK (object));
-
- osxvideosink = GST_OSX_VIDEO_SINK (object);
-
- switch (prop_id) {
- case ARG_EMBED:
- /* Ignore, just here for backwards compatibility */
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_osx_video_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOSXVideoSink *osxvideosink;
-
- g_return_if_fail (GST_IS_OSX_VIDEO_SINK (object));
-
- osxvideosink = GST_OSX_VIDEO_SINK (object);
-
- switch (prop_id) {
- case ARG_EMBED:
- g_value_set_boolean (value, TRUE);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-static void
-gst_osx_video_sink_init (GstOSXVideoSink * osxvideosink)
-{
- osxvideosink->osxwindow = NULL;
- osxvideosink->superview = NULL;
-}
-
-static void
-gst_osx_video_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "OSX Video sink",
- "Sink/Video", "OSX native videosink",
- "Zaheer Abbas Merali <zaheerabbas at merali dot org>");
-
- gst_element_class_add_static_pad_template (element_class,
- &gst_osx_video_sink_sink_template_factory);
-}
-
-static void
-gst_osx_video_sink_finalize (GObject *object)
-{
- GstOSXVideoSink *osxvideosink = GST_OSX_VIDEO_SINK (object);
-
- if (osxvideosink->superview)
- [osxvideosink->superview release];
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_osx_video_sink_class_init (GstOSXVideoSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
-
-
- parent_class = g_type_class_ref (GST_TYPE_VIDEO_SINK);
-
- gobject_class->set_property = gst_osx_video_sink_set_property;
- gobject_class->get_property = gst_osx_video_sink_get_property;
- gobject_class->finalize = gst_osx_video_sink_finalize;
-
- gstbasesink_class->set_caps = gst_osx_video_sink_setcaps;
- gstbasesink_class->preroll = gst_osx_video_sink_show_frame;
- gstbasesink_class->render = gst_osx_video_sink_show_frame;
- gstelement_class->change_state = gst_osx_video_sink_change_state;
-
- /**
- * GstOSXVideoSink:embed
- *
- * Set to #TRUE if you are embedding the video window in an application.
- *
- **/
-
- g_object_class_install_property (gobject_class, ARG_EMBED,
- g_param_spec_boolean ("embed", "embed", "For ABI compatiblity only, do not use",
- FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static gboolean
-gst_osx_video_sink_interface_supported (GstImplementsInterface * iface, GType type)
-{
- g_assert (type == GST_TYPE_X_OVERLAY);
- return TRUE;
-}
-
-static void
-gst_osx_video_sink_interface_init (GstImplementsInterfaceClass * klass)
-{
- klass->supported = gst_osx_video_sink_interface_supported;
-}
-
-static void
-gst_osx_video_sink_set_window_handle (GstXOverlay * overlay, guintptr handle_id)
-{
- GstOSXVideoSink *osxvideosink = GST_OSX_VIDEO_SINK (overlay);
- gulong window_id = (gulong) handle_id;
-
- if (osxvideosink->superview) {
- GST_INFO_OBJECT (osxvideosink, "old xwindow id %p", osxvideosink->superview);
- if (osxvideosink->osxwindow) {
- [osxvideosink->osxwindow->gstview
- performSelectorOnMainThread:@selector(removeFromSuperview:)
- withObject:(id)nil waitUntilDone:YES];
- }
- [osxvideosink->superview release];
- }
-
- GST_INFO_OBJECT (osxvideosink, "set xwindow id 0x%lx", window_id);
- osxvideosink->superview = [((NSView *) window_id) retain];
- if (osxvideosink->osxwindow) {
- [osxvideosink->osxwindow->gstview performSelectorOnMainThread:@selector(addToSuperview:)
- withObject:osxvideosink->superview waitUntilDone:YES];
- }
-}
-
-static void
-gst_osx_video_sink_xoverlay_init (GstXOverlayClass * iface)
-{
- iface->set_window_handle = gst_osx_video_sink_set_window_handle;
- iface->expose = NULL;
- iface->handle_events = NULL;
-}
-
-/* ============================================================= */
-/* */
-/* Public Methods */
-/* */
-/* ============================================================= */
-
-/* =========================================== */
-/* */
-/* Object typing & Creation */
-/* */
-/* =========================================== */
-
-GType
-gst_osx_video_sink_get_type (void)
-{
- static GType osxvideosink_type = 0;
-
- if (!osxvideosink_type) {
- static const GTypeInfo osxvideosink_info = {
- sizeof (GstOSXVideoSinkClass),
- gst_osx_video_sink_base_init,
- NULL,
- (GClassInitFunc) gst_osx_video_sink_class_init,
- NULL,
- NULL,
- sizeof (GstOSXVideoSink),
- 0,
- (GInstanceInitFunc) gst_osx_video_sink_init,
- };
-
- static const GInterfaceInfo iface_info = {
- (GInterfaceInitFunc) gst_osx_video_sink_interface_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo overlay_info = {
- (GInterfaceInitFunc) gst_osx_video_sink_xoverlay_init,
- NULL,
- NULL,
- };
-
- osxvideosink_type = g_type_register_static (GST_TYPE_VIDEO_SINK,
- "GstOSXVideoSink", &osxvideosink_info, 0);
-
- g_type_add_interface_static (osxvideosink_type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &iface_info);
- g_type_add_interface_static (osxvideosink_type, GST_TYPE_X_OVERLAY,
- &overlay_info);
- }
-
- return osxvideosink_type;
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-
- if (!gst_element_register (plugin, "osxvideosink",
- GST_RANK_PRIMARY, GST_TYPE_OSX_VIDEO_SINK))
- return FALSE;
-
- GST_DEBUG_CATEGORY_INIT (gst_debug_osx_video_sink, "osxvideosink", 0,
- "osxvideosink element");
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "osxvideo",
- "OSX native video output plugin",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/sunaudio/Makefile.am b/wearable/sys/sunaudio/Makefile.am
deleted file mode 100644
index e106ce3..0000000
--- a/wearable/sys/sunaudio/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-plugin_LTLIBRARIES = libgstsunaudio.la
-
-libgstsunaudio_la_SOURCES = gstsunaudio.c \
- gstsunaudiosink.c \
- gstsunaudiomixerctrl.c \
- gstsunaudiomixer.c \
- gstsunaudiomixertrack.c \
- gstsunaudiomixeroptions.c \
- gstsunaudiosrc.c
-
-libgstsunaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
-libgstsunaudio_la_LIBADD = \
- -lgstinterfaces-@GST_MAJORMINOR@ \
- -lgstaudio-@GST_MAJORMINOR@ \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_LIBS)
-libgstsunaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstsunaudio_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstsunaudiosink.h \
- gstsunaudiomixer.h \
- gstsunaudiomixerctrl.h \
- gstsunaudiomixertrack.h \
- gstsunaudiomixeroptions.h \
- gstsunaudiosrc.h
-
diff --git a/wearable/sys/sunaudio/Makefile.in b/wearable/sys/sunaudio/Makefile.in
deleted file mode 100644
index a1d1abd..0000000
--- a/wearable/sys/sunaudio/Makefile.in
+++ /dev/null
@@ -1,877 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/sunaudio
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstsunaudio_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstsunaudio_la_OBJECTS = libgstsunaudio_la-gstsunaudio.lo \
- libgstsunaudio_la-gstsunaudiosink.lo \
- libgstsunaudio_la-gstsunaudiomixerctrl.lo \
- libgstsunaudio_la-gstsunaudiomixer.lo \
- libgstsunaudio_la-gstsunaudiomixertrack.lo \
- libgstsunaudio_la-gstsunaudiomixeroptions.lo \
- libgstsunaudio_la-gstsunaudiosrc.lo
-libgstsunaudio_la_OBJECTS = $(am_libgstsunaudio_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstsunaudio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) \
- $(libgstsunaudio_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstsunaudio_la_SOURCES)
-DIST_SOURCES = $(libgstsunaudio_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstsunaudio.la
-libgstsunaudio_la_SOURCES = gstsunaudio.c \
- gstsunaudiosink.c \
- gstsunaudiomixerctrl.c \
- gstsunaudiomixer.c \
- gstsunaudiomixertrack.c \
- gstsunaudiomixeroptions.c \
- gstsunaudiosrc.c
-
-libgstsunaudio_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS)
-libgstsunaudio_la_LIBADD = \
- -lgstinterfaces-@GST_MAJORMINOR@ \
- -lgstaudio-@GST_MAJORMINOR@ \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_LIBS)
-
-libgstsunaudio_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstsunaudio_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstsunaudiosink.h \
- gstsunaudiomixer.h \
- gstsunaudiomixerctrl.h \
- gstsunaudiomixertrack.h \
- gstsunaudiomixeroptions.h \
- gstsunaudiosrc.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/sunaudio/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/sunaudio/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstsunaudio.la: $(libgstsunaudio_la_OBJECTS) $(libgstsunaudio_la_DEPENDENCIES) $(EXTRA_libgstsunaudio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstsunaudio_la_LINK) -rpath $(plugindir) $(libgstsunaudio_la_OBJECTS) $(libgstsunaudio_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiomixer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiomixerctrl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiomixeroptions.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiomixertrack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiosink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsunaudio_la-gstsunaudiosrc.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstsunaudio_la-gstsunaudio.lo: gstsunaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudio.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudio.Tpo -c -o libgstsunaudio_la-gstsunaudio.lo `test -f 'gstsunaudio.c' || echo '$(srcdir)/'`gstsunaudio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudio.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudio.c' object='libgstsunaudio_la-gstsunaudio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudio.lo `test -f 'gstsunaudio.c' || echo '$(srcdir)/'`gstsunaudio.c
-
-libgstsunaudio_la-gstsunaudiosink.lo: gstsunaudiosink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiosink.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiosink.Tpo -c -o libgstsunaudio_la-gstsunaudiosink.lo `test -f 'gstsunaudiosink.c' || echo '$(srcdir)/'`gstsunaudiosink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiosink.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiosink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiosink.c' object='libgstsunaudio_la-gstsunaudiosink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiosink.lo `test -f 'gstsunaudiosink.c' || echo '$(srcdir)/'`gstsunaudiosink.c
-
-libgstsunaudio_la-gstsunaudiomixerctrl.lo: gstsunaudiomixerctrl.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiomixerctrl.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixerctrl.Tpo -c -o libgstsunaudio_la-gstsunaudiomixerctrl.lo `test -f 'gstsunaudiomixerctrl.c' || echo '$(srcdir)/'`gstsunaudiomixerctrl.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixerctrl.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixerctrl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiomixerctrl.c' object='libgstsunaudio_la-gstsunaudiomixerctrl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiomixerctrl.lo `test -f 'gstsunaudiomixerctrl.c' || echo '$(srcdir)/'`gstsunaudiomixerctrl.c
-
-libgstsunaudio_la-gstsunaudiomixer.lo: gstsunaudiomixer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiomixer.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixer.Tpo -c -o libgstsunaudio_la-gstsunaudiomixer.lo `test -f 'gstsunaudiomixer.c' || echo '$(srcdir)/'`gstsunaudiomixer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixer.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiomixer.c' object='libgstsunaudio_la-gstsunaudiomixer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiomixer.lo `test -f 'gstsunaudiomixer.c' || echo '$(srcdir)/'`gstsunaudiomixer.c
-
-libgstsunaudio_la-gstsunaudiomixertrack.lo: gstsunaudiomixertrack.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiomixertrack.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixertrack.Tpo -c -o libgstsunaudio_la-gstsunaudiomixertrack.lo `test -f 'gstsunaudiomixertrack.c' || echo '$(srcdir)/'`gstsunaudiomixertrack.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixertrack.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixertrack.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiomixertrack.c' object='libgstsunaudio_la-gstsunaudiomixertrack.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiomixertrack.lo `test -f 'gstsunaudiomixertrack.c' || echo '$(srcdir)/'`gstsunaudiomixertrack.c
-
-libgstsunaudio_la-gstsunaudiomixeroptions.lo: gstsunaudiomixeroptions.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiomixeroptions.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixeroptions.Tpo -c -o libgstsunaudio_la-gstsunaudiomixeroptions.lo `test -f 'gstsunaudiomixeroptions.c' || echo '$(srcdir)/'`gstsunaudiomixeroptions.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixeroptions.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiomixeroptions.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiomixeroptions.c' object='libgstsunaudio_la-gstsunaudiomixeroptions.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiomixeroptions.lo `test -f 'gstsunaudiomixeroptions.c' || echo '$(srcdir)/'`gstsunaudiomixeroptions.c
-
-libgstsunaudio_la-gstsunaudiosrc.lo: gstsunaudiosrc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -MT libgstsunaudio_la-gstsunaudiosrc.lo -MD -MP -MF $(DEPDIR)/libgstsunaudio_la-gstsunaudiosrc.Tpo -c -o libgstsunaudio_la-gstsunaudiosrc.lo `test -f 'gstsunaudiosrc.c' || echo '$(srcdir)/'`gstsunaudiosrc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsunaudio_la-gstsunaudiosrc.Tpo $(DEPDIR)/libgstsunaudio_la-gstsunaudiosrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsunaudiosrc.c' object='libgstsunaudio_la-gstsunaudiosrc.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsunaudio_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsunaudio_la_CFLAGS) $(CFLAGS) -c -o libgstsunaudio_la-gstsunaudiosrc.lo `test -f 'gstsunaudiosrc.c' || echo '$(srcdir)/'`gstsunaudiosrc.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/sunaudio/gstsunaudio.c b/wearable/sys/sunaudio/gstsunaudio.c
deleted file mode 100644
index 07aa575..0000000
--- a/wearable/sys/sunaudio/gstsunaudio.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * GStreamer - SunAudio plugin
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gst/gst-i18n-plugin.h"
-
-#include "gstsunaudiomixer.h"
-#include "gstsunaudiosink.h"
-#include "gstsunaudiosrc.h"
-
-extern gchar *__gst_oss_plugin_dir;
-
-GST_DEBUG_CATEGORY (sunaudio_debug);
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "sunaudiomixer", GST_RANK_NONE,
- GST_TYPE_SUNAUDIO_MIXER) ||
- !gst_element_register (plugin, "sunaudiosink", GST_RANK_SECONDARY,
- GST_TYPE_SUNAUDIO_SINK) ||
- !gst_element_register (plugin, "sunaudiosrc", GST_RANK_SECONDARY,
- GST_TYPE_SUNAUDIO_SRC)) {
- return FALSE;
- }
-
- GST_DEBUG_CATEGORY_INIT (sunaudio_debug, "sunaudio", 0, "sunaudio elements");
-
-#ifdef ENABLE_NLS
- setlocale (LC_ALL, "");
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif /* ENABLE_NLS */
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "sunaudio",
- "Sun Audio support for GStreamer",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/sunaudio/gstsunaudiomixer.c b/wearable/sys/sunaudio/gstsunaudiomixer.c
deleted file mode 100644
index 7688450..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixer.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * GStreamer - SunAudio mixer
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-sunaudiomixer
- *
- * sunaudiomixer is an mixer that controls the sound input and output
- * levels with the Sun Audio interface available in Solaris.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstsunaudiomixer.h"
-
-GST_BOILERPLATE_WITH_INTERFACE (GstSunAudioMixer, gst_sunaudiomixer,
- GstElement, GST_TYPE_ELEMENT, GstMixer, GST_TYPE_MIXER, gst_sunaudiomixer);
-
-GST_IMPLEMENT_SUNAUDIO_MIXER_CTRL_METHODS (GstSunAudioMixer, gst_sunaudiomixer);
-
-static GstStateChangeReturn gst_sunaudiomixer_change_state (GstElement *
- element, GstStateChange transition);
-
-static void
-gst_sunaudiomixer_base_init (gpointer klass)
-{
- gst_element_class_set_details_simple (GST_ELEMENT_CLASS (klass),
- "Sun Audio Mixer", "Generic/Audio",
- "Control sound input and output levels with Sun Audio",
- "Brian Cameron <brian.cameron@sun.com>");
-}
-
-static void
-gst_sunaudiomixer_class_init (GstSunAudioMixerClass * klass)
-{
- GstElementClass *element_class;
-
- element_class = (GstElementClass *) klass;
-
- element_class->change_state = gst_sunaudiomixer_change_state;
-}
-
-static void
-gst_sunaudiomixer_init (GstSunAudioMixer * this,
- GstSunAudioMixerClass * g_class)
-{
- this->mixer = NULL;
-}
-
-static GstStateChangeReturn
-gst_sunaudiomixer_change_state (GstElement * element, GstStateChange transition)
-{
- GstSunAudioMixer *this = GST_SUNAUDIO_MIXER (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- if (!this->mixer) {
- const char *audiodev;
-
- audiodev = g_getenv ("AUDIODEV");
- if (audiodev == NULL) {
- this->mixer = gst_sunaudiomixer_ctrl_new ("/dev/audioctl");
- } else {
- gchar *device = g_strdup_printf ("%sctl", audiodev);
-
- this->mixer = gst_sunaudiomixer_ctrl_new (device);
- g_free (device);
- }
- }
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- if (this->mixer) {
- gst_sunaudiomixer_ctrl_free (this->mixer);
- this->mixer = NULL;
- }
- break;
- default:
- break;
- }
-
- if (GST_ELEMENT_CLASS (parent_class)->change_state)
- return GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- return GST_STATE_CHANGE_SUCCESS;
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiomixer.h b/wearable/sys/sunaudio/gstsunaudiomixer.h
deleted file mode 100644
index 7ab6e74..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixer.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * GStreamer - SunAudio mixer
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __GST_SUNAUDIO_MIXER_H__
-#define __GST_SUNAUDIO_MIXER_H__
-
-#include "gstsunaudiomixerctrl.h"
-
-G_BEGIN_DECLS
-
-#define GST_SUNAUDIO_MIXER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SUNAUDIO_MIXER,GstSunAudioMixer))
-#define GST_SUNAUDIO_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SUNAUDIO_MIXER,GstSunAudioMixerClass))
-#define GST_IS_SUNAUDIO_MIXER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SUNAUDIO_MIXER))
-#define GST_IS_SUNAUDIO_MIXER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SUNAUDIO_MIXER))
-#define GST_TYPE_SUNAUDIO_MIXER (gst_sunaudiomixer_get_type())
-
-typedef struct _GstSunAudioMixer GstSunAudioMixer;
-typedef struct _GstSunAudioMixerClass GstSunAudioMixerClass;
-
-struct _GstSunAudioMixer {
- GstElement parent;
-
- GstSunAudioMixerCtrl *mixer;
-};
-
-struct _GstSunAudioMixerClass {
- GstElementClass parent;
-};
-
-GType gst_sunaudiomixer_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_SUNAUDIO_MIXER_H__ */
diff --git a/wearable/sys/sunaudio/gstsunaudiomixerctrl.c b/wearable/sys/sunaudio/gstsunaudiomixerctrl.c
deleted file mode 100644
index 0723134..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixerctrl.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * GStreamer - SunAudio mixer interface element
- * Copyright (C) 2005,2006,2008,2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2008 Sun Microsystems, Inc.,
- * Jan Schmidt <jan.schmidt@sun.com>
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <sys/audio.h>
-#include <sys/mixer.h>
-
-#include <gst/gst-i18n-plugin.h>
-
-#include "gstsunaudiomixerctrl.h"
-#include "gstsunaudiomixertrack.h"
-#include "gstsunaudiomixeroptions.h"
-
-GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
-#define GST_CAT_DEFAULT sunaudio_debug
-
-static gboolean
-gst_sunaudiomixer_ctrl_open (GstSunAudioMixerCtrl * mixer)
-{
- int fd;
-
- /* First try to open non-blocking */
- fd = open (mixer->device, O_RDWR | O_NONBLOCK);
-
- if (fd >= 0) {
- close (fd);
- fd = open (mixer->device, O_WRONLY);
- }
-
- if (fd == -1) {
- GST_DEBUG_OBJECT (mixer,
- "Failed to open mixer device %s, mixing disabled: %s", mixer->device,
- strerror (errno));
-
- return FALSE;
- }
- mixer->mixer_fd = fd;
-
- /* Try to set the multiple open flag if we can, but ignore errors */
- ioctl (mixer->mixer_fd, AUDIO_MIXER_MULTIPLE_OPEN);
-
- GST_DEBUG_OBJECT (mixer, "Opened mixer device %s", mixer->device);
-
- return TRUE;
-}
-
-void
-gst_sunaudiomixer_ctrl_build_list (GstSunAudioMixerCtrl * mixer)
-{
- GstMixerTrack *track;
- GstMixerOptions *options;
-
- struct audio_info audioinfo;
-
- /*
- * Do not continue appending the same 3 static tracks onto the list
- */
- if (mixer->tracklist == NULL) {
- g_return_if_fail (mixer->mixer_fd != -1);
-
- /* query available ports */
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &audioinfo) < 0) {
- g_warning ("Error getting audio device volume");
- return;
- }
-
- /* Output & should be MASTER when it's the only one. */
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_OUTPUT);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
-
- /* Input */
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_RECORD);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
-
- /* Monitor */
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_MONITOR);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
-
- if (audioinfo.play.avail_ports & AUDIO_SPEAKER) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_SPEAKER);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- if (audioinfo.play.avail_ports & AUDIO_HEADPHONE) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_HP);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- if (audioinfo.play.avail_ports & AUDIO_LINE_OUT) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_LINEOUT);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- if (audioinfo.play.avail_ports & AUDIO_SPDIF_OUT) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_SPDIFOUT);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- if (audioinfo.play.avail_ports & AUDIO_AUX1_OUT) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_AUX1OUT);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
- if (audioinfo.play.avail_ports & AUDIO_AUX2_OUT) {
- track = gst_sunaudiomixer_track_new (GST_SUNAUDIO_TRACK_AUX2OUT);
- mixer->tracklist = g_list_append (mixer->tracklist, track);
- }
-
- if (audioinfo.record.avail_ports != AUDIO_NONE) {
- options =
- gst_sunaudiomixer_options_new (mixer, GST_SUNAUDIO_TRACK_RECSRC);
- mixer->tracklist = g_list_append (mixer->tracklist, options);
- }
- }
-}
-
-GstSunAudioMixerCtrl *
-gst_sunaudiomixer_ctrl_new (const char *device)
-{
- GstSunAudioMixerCtrl *ret = NULL;
-
- g_return_val_if_fail (device != NULL, NULL);
-
- ret = g_new0 (GstSunAudioMixerCtrl, 1);
-
- ret->device = g_strdup (device);
- ret->mixer_fd = -1;
- ret->tracklist = NULL;
-
- if (!gst_sunaudiomixer_ctrl_open (ret))
- goto error;
-
- return ret;
-
-error:
- if (ret)
- gst_sunaudiomixer_ctrl_free (ret);
-
- return NULL;
-}
-
-void
-gst_sunaudiomixer_ctrl_free (GstSunAudioMixerCtrl * mixer)
-{
- g_return_if_fail (mixer != NULL);
-
- if (mixer->device) {
- g_free (mixer->device);
- mixer->device = NULL;
- }
-
- if (mixer->tracklist) {
- g_list_foreach (mixer->tracklist, (GFunc) g_object_unref, NULL);
- g_list_free (mixer->tracklist);
- mixer->tracklist = NULL;
- }
-
- if (mixer->mixer_fd != -1) {
- close (mixer->mixer_fd);
- mixer->mixer_fd = -1;
- }
-
- g_free (mixer);
-}
-
-GstMixerFlags
-gst_sunaudiomixer_ctrl_get_mixer_flags (GstSunAudioMixerCtrl * mixer)
-{
- return GST_MIXER_FLAG_HAS_WHITELIST | GST_MIXER_FLAG_GROUPING;
-}
-
-const GList *
-gst_sunaudiomixer_ctrl_list_tracks (GstSunAudioMixerCtrl * mixer)
-{
- gst_sunaudiomixer_ctrl_build_list (mixer);
-
- return (const GList *) mixer->tracklist;
-}
-
-void
-gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- gint gain, balance;
- float ratio;
- struct audio_info audioinfo;
- GstSunAudioMixerTrack *sunaudiotrack;
-
- g_return_if_fail (GST_IS_SUNAUDIO_MIXER_TRACK (track));
- sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track);
-
- g_return_if_fail (mixer->mixer_fd != -1);
-
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &audioinfo) < 0) {
- g_warning ("Error getting audio device volume");
- return;
- }
-
- balance = AUDIO_MID_BALANCE;
- gain = 0;
-
- switch (sunaudiotrack->track_num) {
- case GST_SUNAUDIO_TRACK_OUTPUT:
- gain = (int) audioinfo.play.gain;
- balance = audioinfo.play.balance;
- break;
- case GST_SUNAUDIO_TRACK_RECORD:
- gain = (int) audioinfo.record.gain;
- balance = audioinfo.record.balance;
- break;
- case GST_SUNAUDIO_TRACK_MONITOR:
- gain = (int) audioinfo.monitor_gain;
- balance = audioinfo.record.balance;
- break;
- case GST_SUNAUDIO_TRACK_SPEAKER:
- if (audioinfo.play.port & AUDIO_SPEAKER)
- gain = AUDIO_MAX_GAIN;
- break;
- case GST_SUNAUDIO_TRACK_HP:
- if (audioinfo.play.port & AUDIO_HEADPHONE)
- gain = AUDIO_MAX_GAIN;
- break;
- case GST_SUNAUDIO_TRACK_LINEOUT:
- if (audioinfo.play.port & AUDIO_LINE_OUT)
- gain = AUDIO_MAX_GAIN;
- break;
- case GST_SUNAUDIO_TRACK_SPDIFOUT:
- if (audioinfo.play.port & AUDIO_SPDIF_OUT)
- gain = AUDIO_MAX_GAIN;
- break;
- case GST_SUNAUDIO_TRACK_AUX1OUT:
- if (audioinfo.play.port & AUDIO_AUX1_OUT)
- gain = AUDIO_MAX_GAIN;
- break;
- case GST_SUNAUDIO_TRACK_AUX2OUT:
- if (audioinfo.play.port & AUDIO_AUX2_OUT)
- gain = AUDIO_MAX_GAIN;
- break;
- default:
- break;
- }
-
- switch (track->num_channels) {
- case 2:
- if (balance == AUDIO_MID_BALANCE) {
- volumes[0] = gain;
- volumes[1] = gain;
- } else if (balance < AUDIO_MID_BALANCE) {
- volumes[0] = gain;
- ratio = 1 - (float) (AUDIO_MID_BALANCE - balance) /
- (float) AUDIO_MID_BALANCE;
- volumes[1] = (int) ((float) gain * ratio + 0.5);
- } else {
- volumes[1] = gain;
- ratio = 1 - (float) (balance - AUDIO_MID_BALANCE) /
- (float) AUDIO_MID_BALANCE;
- volumes[0] = (int) ((float) gain * ratio + 0.5);
- }
- break;
- case 1:
- volumes[0] = gain;
- break;
- }
-
- /* Likewise reset MUTE */
- if ((sunaudiotrack->track_num == GST_SUNAUDIO_TRACK_OUTPUT
- && audioinfo.output_muted == 1)
- || (sunaudiotrack->track_num != GST_SUNAUDIO_TRACK_OUTPUT && gain == 0)) {
- /*
- * If MUTE is set, then gain is always 0, so don't bother
- * resetting our internal value.
- */
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- sunaudiotrack->gain = gain;
- sunaudiotrack->balance = balance;
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-}
-
-void
-gst_sunaudiomixer_ctrl_set_volume (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track, gint * volumes)
-{
- gint gain;
- gint balance;
- gint l_real_gain;
- gint r_real_gain;
- float ratio;
- struct audio_info audioinfo;
- GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track);
-
- l_real_gain = volumes[0];
- r_real_gain = volumes[1];
-
- if (l_real_gain == r_real_gain) {
- gain = l_real_gain;
- balance = AUDIO_MID_BALANCE;
- } else if (l_real_gain < r_real_gain) {
- gain = r_real_gain;
- ratio = (float) l_real_gain / (float) r_real_gain;
- balance =
- AUDIO_RIGHT_BALANCE - (int) (ratio * (float) AUDIO_MID_BALANCE + 0.5);
- } else {
- gain = l_real_gain;
- ratio = (float) r_real_gain / (float) l_real_gain;
- balance =
- AUDIO_LEFT_BALANCE + (int) (ratio * (float) AUDIO_MID_BALANCE + 0.5);
- }
-
- sunaudiotrack->gain = gain;
- sunaudiotrack->balance = balance;
-
- if (GST_MIXER_TRACK_HAS_FLAG (track, GST_MIXER_TRACK_MUTE)) {
- if (sunaudiotrack->track_num == GST_SUNAUDIO_TRACK_OUTPUT) {
- return;
- } else if (gain == 0) {
- return;
- } else {
- /*
- * If the volume is set to a non-zero value for LINE_IN
- * or MONITOR, then unset MUTE.
- */
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
- }
-
- /* Set the volume */
- AUDIO_INITINFO (&audioinfo);
-
- switch (sunaudiotrack->track_num) {
- case GST_SUNAUDIO_TRACK_OUTPUT:
- audioinfo.play.gain = gain;
- audioinfo.play.balance = balance;
- break;
- case GST_SUNAUDIO_TRACK_RECORD:
- audioinfo.record.gain = gain;
- audioinfo.record.balance = balance;
- break;
- case GST_SUNAUDIO_TRACK_MONITOR:
- audioinfo.monitor_gain = gain;
- audioinfo.record.balance = balance;
- break;
- default:
- break;
- }
-
- g_return_if_fail (mixer->mixer_fd != -1);
-
- if (ioctl (mixer->mixer_fd, AUDIO_SETINFO, &audioinfo) < 0) {
- g_warning ("Error setting audio device volume");
- return;
- }
-}
-
-void
-gst_sunaudiomixer_ctrl_set_mute (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track, gboolean mute)
-{
- struct audio_info audioinfo;
- struct audio_info oldinfo;
- GstSunAudioMixerTrack *sunaudiotrack = GST_SUNAUDIO_MIXER_TRACK (track);
- gint volume, balance;
-
- AUDIO_INITINFO (&audioinfo);
-
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &oldinfo) < 0) {
- g_warning ("Error getting audio device volume");
- return;
- }
-
- if (mute) {
- volume = 0;
- track->flags |= GST_MIXER_TRACK_MUTE;
- } else {
- volume = sunaudiotrack->gain;
- track->flags &= ~GST_MIXER_TRACK_MUTE;
- }
-
- balance = sunaudiotrack->balance;
-
- switch (sunaudiotrack->track_num) {
- case GST_SUNAUDIO_TRACK_OUTPUT:
- if (mute)
- audioinfo.output_muted = 1;
- else
- audioinfo.output_muted = 0;
-
- audioinfo.play.gain = volume;
- audioinfo.play.balance = balance;
- break;
- case GST_SUNAUDIO_TRACK_RECORD:
- audioinfo.record.gain = volume;
- audioinfo.record.balance = balance;
- break;
- case GST_SUNAUDIO_TRACK_MONITOR:
- audioinfo.monitor_gain = volume;
- audioinfo.record.balance = balance;
- break;
- case GST_SUNAUDIO_TRACK_SPEAKER:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_SPEAKER;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_SPEAKER;
- }
- break;
- case GST_SUNAUDIO_TRACK_HP:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_HEADPHONE;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_HEADPHONE;
- }
- break;
- case GST_SUNAUDIO_TRACK_LINEOUT:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_LINE_OUT;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_LINE_OUT;
- }
- break;
- case GST_SUNAUDIO_TRACK_SPDIFOUT:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_SPDIF_OUT;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_SPDIF_OUT;
- }
- break;
- case GST_SUNAUDIO_TRACK_AUX1OUT:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_AUX1_OUT;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_AUX1_OUT;
- }
- break;
- case GST_SUNAUDIO_TRACK_AUX2OUT:
- if (mute) {
- audioinfo.play.port = oldinfo.play.port & ~AUDIO_AUX2_OUT;
- } else {
- audioinfo.play.port = oldinfo.play.port | AUDIO_AUX2_OUT;
- }
- break;
- default:
- break;
- }
-
- if (audioinfo.play.port != ((unsigned) ~0)) {
- /* mask off ports we can't modify. Hack for broken drivers where mod_ports == 0 */
- if (oldinfo.play.mod_ports != 0) {
- audioinfo.play.port &= oldinfo.play.mod_ports;
- /* and add in any that are forced to be on */
- audioinfo.play.port |= (oldinfo.play.port & ~oldinfo.play.mod_ports);
- }
- }
- g_return_if_fail (mixer->mixer_fd != -1);
-
- if (audioinfo.play.port != (guint) (-1) &&
- audioinfo.play.port != oldinfo.play.port)
- GST_LOG_OBJECT (mixer, "Changing play port mask to 0x%08x",
- audioinfo.play.port);
-
- if (ioctl (mixer->mixer_fd, AUDIO_SETINFO, &audioinfo) < 0) {
- g_warning ("Error setting audio settings");
- return;
- }
-}
-
-void
-gst_sunaudiomixer_ctrl_set_record (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track, gboolean record)
-{
-}
-
-void
-gst_sunaudiomixer_ctrl_set_option (GstSunAudioMixerCtrl * mixer,
- GstMixerOptions * options, gchar * value)
-{
- struct audio_info audioinfo;
- GstMixerTrack *track;
- GstSunAudioMixerOptions *opts;
- GQuark q;
- int i;
-
- g_return_if_fail (mixer != NULL);
- g_return_if_fail (mixer->mixer_fd != -1);
- g_return_if_fail (value != NULL);
- g_return_if_fail (GST_IS_SUNAUDIO_MIXER_OPTIONS (options));
-
- track = GST_MIXER_TRACK (options);
- opts = GST_SUNAUDIO_MIXER_OPTIONS (options);
-
- if (opts->track_num != GST_SUNAUDIO_TRACK_RECSRC) {
- g_warning ("set_option not supported on track %s", track->label);
- return;
- }
-
- q = g_quark_try_string (value);
- if (q == 0) {
- g_warning ("unknown option '%s'", value);
- return;
- }
-
- for (i = 0; i < 8; i++) {
- if (opts->names[i] == q) {
- break;
- }
- }
-
- if (((1 << (i)) & opts->avail) == 0) {
- g_warning ("Record port %s not available", g_quark_to_string (q));
- return;
- }
-
- AUDIO_INITINFO (&audioinfo);
- audioinfo.record.port = (1 << (i));
-
- if (ioctl (mixer->mixer_fd, AUDIO_SETINFO, &audioinfo) < 0) {
- g_warning ("Error setting audio record port");
- }
-}
-
-const gchar *
-gst_sunaudiomixer_ctrl_get_option (GstSunAudioMixerCtrl * mixer,
- GstMixerOptions * options)
-{
- GstMixerTrack *track;
- GstSunAudioMixerOptions *opts;
- struct audio_info audioinfo;
- int i;
-
- g_return_val_if_fail (mixer != NULL, NULL);
- g_return_val_if_fail (mixer->fd != -1, NULL);
- g_return_val_if_fail (GST_IS_SUNAUDIO_MIXER_OPTIONS (options), NULL);
-
- track = GST_MIXER_TRACK (options);
- opts = GST_SUNAUDIO_MIXER_OPTIONS (options);
-
- g_return_val_if_fail (opts->track_num == GST_SUNAUDIO_TRACK_RECSRC, NULL);
-
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &audioinfo) < 0) {
- g_warning ("Error getting audio device settings");
- return (NULL);
- }
-
- for (i = 0; i < 8; i++) {
- if ((1 << i) == audioinfo.record.port) {
- const gchar *s = g_quark_to_string (opts->names[i]);
- GST_DEBUG_OBJECT (mixer, "Getting value for option %d: %s",
- opts->track_num, s);
- return (s);
- }
- }
-
- GST_DEBUG_OBJECT (mixer, "Unable to get value for option %d",
- opts->track_num);
-
- g_warning ("Record port value %d seems illegal", audioinfo.record.port);
- return (NULL);
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiomixerctrl.h b/wearable/sys/sunaudio/gstsunaudiomixerctrl.h
deleted file mode 100644
index d38f02f..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixerctrl.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * GStreamer - SunAudio mixer interface element.
- * Copyright (C) 2005,2006,2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifndef __GST_SUNAUDIO_MIXER_CTRL_H
-#define __GST_SUNAUDIO_MIXER_CTRL_H
-
-#include <sys/audioio.h>
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-G_BEGIN_DECLS
-
-#define GST_SUNAUDIO_MIXER_CTRL(obj) ((GstSunAudioMixerCtrl*)(obj))
-
-typedef struct _GstSunAudioMixerCtrl GstSunAudioMixerCtrl;
-
-struct _GstSunAudioMixerCtrl {
- GList * tracklist; /* list of available tracks */
-
- gint fd;
- gint mixer_fd;
-
- gchar * device;
-};
-
-GstSunAudioMixerCtrl* gst_sunaudiomixer_ctrl_new (const gchar *device);
-void gst_sunaudiomixer_ctrl_free (GstSunAudioMixerCtrl *mixer);
-
-const GList* gst_sunaudiomixer_ctrl_list_tracks (GstSunAudioMixerCtrl * mixer);
-void gst_sunaudiomixer_ctrl_set_volume (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track,
- gint * volumes);
-void gst_sunaudiomixer_ctrl_get_volume (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track,
- gint * volumes);
-void gst_sunaudiomixer_ctrl_set_record (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track,
- gboolean record);
-void gst_sunaudiomixer_ctrl_set_mute (GstSunAudioMixerCtrl * mixer,
- GstMixerTrack * track,
- gboolean mute);
-void gst_sunaudiomixer_ctrl_set_option (GstSunAudioMixerCtrl * mixer,
- GstMixerOptions * options,
- gchar * value);
-const gchar * gst_sunaudiomixer_ctrl_get_option (GstSunAudioMixerCtrl * mixer,
- GstMixerOptions * options);
-GstMixerFlags gst_sunaudiomixer_ctrl_get_mixer_flags (GstSunAudioMixerCtrl *mixer);
-
-#define GST_IMPLEMENT_SUNAUDIO_MIXER_CTRL_METHODS(Type, interface_as_function) \
-static gboolean \
-interface_as_function ## _supported (Type *this, GType iface_type) \
-{ \
- g_assert (iface_type == GST_TYPE_MIXER); \
- \
- return (this->mixer != NULL); \
-} \
- \
-static const GList* \
-interface_as_function ## _list_tracks (GstMixer * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_val_if_fail (this != NULL, NULL); \
- g_return_val_if_fail (this->mixer != NULL, NULL); \
- \
- return gst_sunaudiomixer_ctrl_list_tracks (this->mixer); \
-} \
- \
-static void \
-interface_as_function ## _set_volume (GstMixer * mixer, GstMixerTrack * track, \
- gint * volumes) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_sunaudiomixer_ctrl_set_volume (this->mixer, track, volumes); \
-} \
- \
-static void \
-interface_as_function ## _get_volume (GstMixer * mixer, GstMixerTrack * track, \
- gint * volumes) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_sunaudiomixer_ctrl_get_volume (this->mixer, track, volumes); \
-} \
- \
-static void \
-interface_as_function ## _set_record (GstMixer * mixer, GstMixerTrack * track, \
- gboolean record) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_sunaudiomixer_ctrl_set_record (this->mixer, track, record); \
-} \
- \
-static void \
-interface_as_function ## _set_mute (GstMixer * mixer, GstMixerTrack * track, \
- gboolean mute) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_sunaudiomixer_ctrl_set_mute (this->mixer, track, mute); \
-} \
- \
-static const gchar * \
-interface_as_function ## _get_option (GstMixer * mixer, GstMixerOptions * opts) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_val_if_fail (this != NULL, NULL); \
- g_return_val_if_fail (this->mixer != NULL, NULL); \
- \
- return gst_sunaudiomixer_ctrl_get_option (this->mixer, opts); \
-} \
-\
-static void \
-interface_as_function ## _set_option (GstMixer * mixer, GstMixerOptions * opts, \
- gchar * value) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_if_fail (this != NULL); \
- g_return_if_fail (this->mixer != NULL); \
- \
- gst_sunaudiomixer_ctrl_set_option (this->mixer, opts, value); \
-} \
-\
-static GstMixerFlags \
-interface_as_function ## _get_mixer_flags (GstMixer * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- \
- g_return_val_if_fail (this != NULL, GST_MIXER_FLAG_NONE); \
- g_return_val_if_fail (this->mixer != NULL, GST_MIXER_FLAG_NONE); \
- \
- return gst_sunaudiomixer_ctrl_get_mixer_flags (this->mixer); \
-} \
- \
-static void \
-interface_as_function ## _interface_init (GstMixerClass * klass) \
-{ \
- GST_MIXER_TYPE (klass) = GST_MIXER_HARDWARE; \
- \
- /* set up the interface hooks */ \
- klass->list_tracks = interface_as_function ## _list_tracks; \
- klass->set_volume = interface_as_function ## _set_volume; \
- klass->get_volume = interface_as_function ## _get_volume; \
- klass->set_mute = interface_as_function ## _set_mute; \
- klass->set_record = interface_as_function ## _set_record; \
- klass->get_option = interface_as_function ## _get_option; \
- klass->set_option = interface_as_function ## _set_option; \
- klass->get_mixer_flags = interface_as_function ## _get_mixer_flags; \
-}
-
-G_END_DECLS
-
-#endif
diff --git a/wearable/sys/sunaudio/gstsunaudiomixeroptions.c b/wearable/sys/sunaudio/gstsunaudiomixeroptions.c
deleted file mode 100644
index 1fa025b..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixeroptions.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * GStreamer SunAudio mixer track implementation
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * gstsunaudiomixeroptions.c: Sun Audio mixer options object
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <sys/audio.h>
-#include <sys/mixer.h>
-
-#include <gst/gst-i18n-plugin.h>
-
-#include "gstsunaudiomixeroptions.h"
-#include "gstsunaudiomixertrack.h"
-
-GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
-#define GST_CAT_DEFAULT sunaudio_debug
-
-static void gst_sunaudiomixer_options_init (GstSunAudioMixerOptions * sun_opts);
-static void gst_sunaudiomixer_options_class_init (gpointer g_class,
- gpointer class_data);
-
-static GstMixerOptionsClass *parent_class = NULL;
-
-GType
-gst_sunaudiomixer_options_get_type (void)
-{
- static GType opts_type = 0;
-
- if (!opts_type) {
- static const GTypeInfo opts_info = {
- sizeof (GstSunAudioMixerOptionsClass),
- NULL,
- NULL,
- gst_sunaudiomixer_options_class_init,
- NULL,
- NULL,
- sizeof (GstSunAudioMixerOptions),
- 0,
- (GInstanceInitFunc) gst_sunaudiomixer_options_init,
- };
-
- opts_type =
- g_type_register_static (GST_TYPE_MIXER_OPTIONS,
- "GstSunAudioMixerOptions", &opts_info, 0);
- }
-
- return opts_type;
-}
-
-static void
-gst_sunaudiomixer_options_class_init (gpointer g_class, gpointer class_data)
-{
- parent_class = g_type_class_peek_parent (g_class);
-}
-
-static void
-gst_sunaudiomixer_options_init (GstSunAudioMixerOptions * sun_opts)
-{
-}
-
-GstMixerOptions *
-gst_sunaudiomixer_options_new (GstSunAudioMixerCtrl * mixer, gint track_num)
-{
- GstMixerOptions *opts;
- GstSunAudioMixerOptions *sun_opts;
- GstMixerTrack *track;
- const gchar *label;
- gint i;
- struct audio_info audioinfo;
-
- if ((mixer == NULL) || (mixer->mixer_fd == -1)) {
- g_warning ("mixer not initialized");
- return NULL;
- }
-
- if (track_num != GST_SUNAUDIO_TRACK_RECSRC) {
- g_warning ("invalid options track");
- return (NULL);
- }
-
- label = N_("Record Source");
-
- opts = g_object_new (GST_TYPE_SUNAUDIO_MIXER_OPTIONS,
- "untranslated-label", label, NULL);
- sun_opts = GST_SUNAUDIO_MIXER_OPTIONS (opts);
- track = GST_MIXER_TRACK (opts);
-
- GST_DEBUG_OBJECT (opts, "New mixer options, track %d: %s",
- track_num, GST_STR_NULL (label));
-
- /* save off names for the record sources */
- sun_opts->names[0] = g_quark_from_string (_("Microphone"));
- sun_opts->names[1] = g_quark_from_string (_("Line In"));
- sun_opts->names[2] = g_quark_from_string (_("Internal CD"));
- sun_opts->names[3] = g_quark_from_string (_("SPDIF In"));
- sun_opts->names[4] = g_quark_from_string (_("AUX 1 In"));
- sun_opts->names[5] = g_quark_from_string (_("AUX 2 In"));
- sun_opts->names[6] = g_quark_from_string (_("Codec Loopback"));
- sun_opts->names[7] = g_quark_from_string (_("SunVTS Loopback"));
-
- /* set basic information */
- track->label = g_strdup (_(label));
- track->num_channels = 0;
- track->min_volume = 0;
- track->max_volume = 0;
- track->flags =
- GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_WHITELIST |
- GST_MIXER_TRACK_NO_RECORD;
-
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &audioinfo) < 0) {
- g_warning ("Error getting audio device settings");
- g_object_unref (G_OBJECT (sun_opts));
- return NULL;
- }
-
- sun_opts->avail = audioinfo.record.avail_ports;
- sun_opts->track_num = track_num;
-
- for (i = 0; i < 8; i++) {
- if ((1 << i) & audioinfo.record.avail_ports) {
- const char *s = g_quark_to_string (sun_opts->names[i]);
- opts->values = g_list_append (opts->values, g_strdup (s));
- GST_DEBUG_OBJECT (opts, "option for track %d: %s",
- track_num, GST_STR_NULL (s));
- }
- }
-
- return opts;
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiomixeroptions.h b/wearable/sys/sunaudio/gstsunaudiomixeroptions.h
deleted file mode 100644
index fb02b46..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixeroptions.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * GStreamer SunAudio mixer track implementation
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * gstsunaudiomixeroptions.h: Sun Audio mixer options object
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- */
-
-#ifndef __GST_SUNAUDIO_MIXER_OPTIONS_H__
-#define __GST_SUNAUDIO_MIXER_OPTIONS_H__
-
-
-#include "gstsunaudiomixer.h"
-#include <gst/interfaces/mixeroptions.h>
-
-
-G_BEGIN_DECLS
-
-
-#define GST_SUNAUDIO_MIXER_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SUNAUDIO_MIXER_OPTIONS, GstSunAudioMixerOptions))
-#define GST_SUNAUDIO_MIXER_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SUNAUDIO_MIXER_OPTIONS, GstSunAudioMixerOptionsClass))
-#define GST_IS_SUNAUDIO_MIXER_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SUNAUDIO_MIXER_OPTIONS))
-#define GST_IS_SUNAUDIO_MIXER_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SUNAUDIO_MIXER_OPTIONS))
-#define GST_TYPE_SUNAUDIO_MIXER_OPTIONS (gst_sunaudiomixer_options_get_type())
-
-
-typedef struct _GstSunAudioMixerOptions GstSunAudioMixerOptions;
-typedef struct _GstSunAudioMixerOptionsClass GstSunAudioMixerOptionsClass;
-
-
-struct _GstSunAudioMixerOptions {
- GstMixerOptions parent;
- gint track_num;
- GQuark names[8]; /* only 8 possible */
- gint avail; /* mask of avail */
-};
-
-struct _GstSunAudioMixerOptionsClass {
- GstMixerOptionsClass parent;
-};
-
-
-GType gst_sunaudiomixer_options_get_type (void);
-GstMixerOptions *gst_sunaudiomixer_options_new (GstSunAudioMixerCtrl *mixer, gint track_num);
-
-
-G_END_DECLS
-
-
-#endif /* __GST_SUNAUDIO_MIXER_OPTIONS_H__ */
diff --git a/wearable/sys/sunaudio/gstsunaudiomixertrack.c b/wearable/sys/sunaudio/gstsunaudiomixertrack.c
deleted file mode 100644
index 786ef0d..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixertrack.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005,2008, 2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * gstsunaudiomixer.c: mixer interface implementation for OSS
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/ioctl.h>
-#include <sys/audioio.h>
-
-#include <gst/gst-i18n-plugin.h>
-
-#include "gstsunaudiomixertrack.h"
-
-GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
-#define GST_CAT_DEFAULT sunaudio_debug
-
-#define MASK_BIT_IS_SET(mask, bit) \
- (mask & (1 << bit))
-
-G_DEFINE_TYPE (GstSunAudioMixerTrack, gst_sunaudiomixer_track,
- GST_TYPE_MIXER_TRACK);
-
-static void
-gst_sunaudiomixer_track_class_init (GstSunAudioMixerTrackClass * klass)
-{
- /* nop */
-}
-
-static void
-gst_sunaudiomixer_track_init (GstSunAudioMixerTrack * track)
-{
- track->gain = 0;
- track->balance = AUDIO_MID_BALANCE;
- track->track_num = 0;
-}
-
-GstMixerTrack *
-gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num)
-{
- const gchar *labels[] = { N_("Volume"),
- N_("Gain"),
- N_("Monitor"),
- N_("Built-in Speaker"),
- N_("Headphone"),
- N_("Line Out"),
- N_("SPDIF Out"),
- N_("AUX 1 Out"),
- N_("AUX 2 Out"),
- };
-
-
- GstSunAudioMixerTrack *sunaudiotrack;
- GstMixerTrack *track;
- const gchar *untranslated_label;
-
- if ((guint) track_num < G_N_ELEMENTS (labels))
- untranslated_label = labels[track_num];
- else
- untranslated_label = NULL;
-
- sunaudiotrack = g_object_new (GST_TYPE_SUNAUDIO_MIXER_TRACK,
- "untranslated-label", untranslated_label, NULL);
-
- GST_DEBUG_OBJECT (sunaudiotrack, "Creating new mixer track of type %d: %s",
- track_num, GST_STR_NULL (untranslated_label));
-
- switch (track_num) {
- case GST_SUNAUDIO_TRACK_OUTPUT:
- /* these are sliders */
- track = GST_MIXER_TRACK (sunaudiotrack);
- track->label = g_strdup (_(untranslated_label));
- track->num_channels = 2;
- track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST |
- GST_MIXER_TRACK_MASTER;
- track->min_volume = 0;
- track->max_volume = 255;
- sunaudiotrack->track_num = track_num;
- sunaudiotrack->gain = (0 & 0xff);
- sunaudiotrack->balance = AUDIO_MID_BALANCE;
- break;
- case GST_SUNAUDIO_TRACK_RECORD:
- /* these are sliders */
- track = GST_MIXER_TRACK (sunaudiotrack);
- track->label = g_strdup (_(untranslated_label));
- track->num_channels = 2;
- track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD |
- GST_MIXER_TRACK_WHITELIST;
- track->min_volume = 0;
- track->max_volume = 255;
- sunaudiotrack->track_num = track_num;
- sunaudiotrack->gain = (0 & 0xff);
- sunaudiotrack->balance = AUDIO_MID_BALANCE;
- break;
- case GST_SUNAUDIO_TRACK_MONITOR:
- /* these are sliders */
- track = GST_MIXER_TRACK (sunaudiotrack);
- track->label = g_strdup (_(untranslated_label));
- track->num_channels = 2;
- track->flags = GST_MIXER_TRACK_INPUT | GST_MIXER_TRACK_NO_RECORD;
- track->min_volume = 0;
- track->max_volume = 255;
- sunaudiotrack->track_num = track_num;
- sunaudiotrack->gain = (0 & 0xff);
- sunaudiotrack->balance = AUDIO_MID_BALANCE;
- break;
- case GST_SUNAUDIO_TRACK_SPEAKER:
- case GST_SUNAUDIO_TRACK_HP:
- case GST_SUNAUDIO_TRACK_LINEOUT:
- case GST_SUNAUDIO_TRACK_SPDIFOUT:
- case GST_SUNAUDIO_TRACK_AUX1OUT:
- case GST_SUNAUDIO_TRACK_AUX2OUT:
- /* these are switches */
- track = GST_MIXER_TRACK (sunaudiotrack);
- track->label = g_strdup (_(untranslated_label));
- track->num_channels = 0;
- track->flags = GST_MIXER_TRACK_OUTPUT | GST_MIXER_TRACK_WHITELIST;
- track->min_volume = 0;
- track->max_volume = 255;
- sunaudiotrack->track_num = track_num;
- sunaudiotrack->gain = (0 & 0xff);
- sunaudiotrack->balance = AUDIO_MID_BALANCE;
- break;
- default:
- g_warning ("Unknown sun audio track num %d", track_num);
- track = NULL;
- }
-
- return track;
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiomixertrack.h b/wearable/sys/sunaudio/gstsunaudiomixertrack.h
deleted file mode 100644
index 83be9fc..0000000
--- a/wearable/sys/sunaudio/gstsunaudiomixertrack.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * GStreamer SunAudio mixer track implementation
- * Copyright (C) 2005,2006,2009 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2009 Sun Microsystems, Inc.,
- * Garrett D'Amore <garrett.damore@sun.com>
- *
- * gstsunaudiomixertrack.h: SunAudio mixer tracks
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_SUNAUDIO_MIXER_TRACK_H__
-#define __GST_SUNAUDIO_MIXER_TRACK_H__
-
-#include <gst/gst.h>
-#include <gst/interfaces/mixer.h>
-
-G_BEGIN_DECLS
-
-typedef enum
-{
- GST_SUNAUDIO_TRACK_OUTPUT = 0,
- GST_SUNAUDIO_TRACK_RECORD,
- GST_SUNAUDIO_TRACK_MONITOR,
- GST_SUNAUDIO_TRACK_SPEAKER,
- GST_SUNAUDIO_TRACK_HP,
- GST_SUNAUDIO_TRACK_LINEOUT,
- GST_SUNAUDIO_TRACK_SPDIFOUT,
- GST_SUNAUDIO_TRACK_AUX1OUT,
- GST_SUNAUDIO_TRACK_AUX2OUT,
- GST_SUNAUDIO_TRACK_RECSRC
-} GstSunAudioTrackType;
-
-#define GST_TYPE_SUNAUDIO_MIXER_TRACK \
- (gst_sunaudiomixer_track_get_type ())
-#define GST_SUNAUDIO_MIXER_TRACK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SUNAUDIO_MIXER_TRACK, \
- GstSunAudioMixerTrack))
-#define GST_SUNAUDIO_MIXER_TRACK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SUNAUDIO_MIXER_TRACK, \
- GstSunAudioMixerTrackClass))
-#define GST_IS_SUNAUDIO_MIXER_TRACK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SUNAUDIO_MIXER_TRACK))
-#define GST_IS_SUNAUDIO_MIXER_TRACK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SUNAUDIO_MIXER_TRACK))
-
-typedef struct _GstSunAudioMixerTrack {
- GstMixerTrack parent;
-
- gint gain;
- gint balance;
- GstSunAudioTrackType track_num;
-} GstSunAudioMixerTrack;
-
-typedef struct _GstSunAudioMixerTrackClass {
- GstMixerTrackClass parent;
-} GstSunAudioMixerTrackClass;
-
-GType gst_sunaudiomixer_track_get_type (void);
-GstMixerTrack* gst_sunaudiomixer_track_new (GstSunAudioTrackType track_num);
-
-G_END_DECLS
-
-#endif /* __GST_SUNAUDIO_MIXER_TRACK_H__ */
diff --git a/wearable/sys/sunaudio/gstsunaudiosink.c b/wearable/sys/sunaudio/gstsunaudiosink.c
deleted file mode 100644
index 2a3cf19..0000000
--- a/wearable/sys/sunaudio/gstsunaudiosink.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * GStreamer - SunAudio sink
- * Copyright (C) 2004 David A. Schleef <ds@schleef.org>
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2006 Jan Schmidt <thaytan@mad.scientist.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-sunaudiosink
- *
- * sunaudiosink is an audio sink designed to work with the Sun Audio
- * interface available in Solaris.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch audiotestsrc volume=0.5 ! sunaudiosink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <fcntl.h>
-#include <string.h>
-#include <stropts.h>
-#include <unistd.h>
-#include <sys/mman.h>
-
-#include "gstsunaudiosink.h"
-
-GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
-#define GST_CAT_DEFAULT sunaudio_debug
-
-static void gst_sunaudiosink_base_init (gpointer g_class);
-static void gst_sunaudiosink_class_init (GstSunAudioSinkClass * klass);
-static void gst_sunaudiosink_init (GstSunAudioSink * filter);
-static void gst_sunaudiosink_dispose (GObject * object);
-static void gst_sunaudiosink_finalize (GObject * object);
-
-static void gst_sunaudiosink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_sunaudiosink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_sunaudiosink_getcaps (GstBaseSink * bsink);
-
-static gboolean gst_sunaudiosink_open (GstAudioSink * asink);
-static gboolean gst_sunaudiosink_close (GstAudioSink * asink);
-static gboolean gst_sunaudiosink_prepare (GstAudioSink * asink,
- GstRingBufferSpec * spec);
-static gboolean gst_sunaudiosink_unprepare (GstAudioSink * asink);
-static guint gst_sunaudiosink_write (GstAudioSink * asink, gpointer data,
- guint length);
-static guint gst_sunaudiosink_delay (GstAudioSink * asink);
-static void gst_sunaudiosink_reset (GstAudioSink * asink);
-
-#define DEFAULT_DEVICE "/dev/audio"
-enum
-{
- PROP_0,
- PROP_DEVICE,
-};
-
-static GstStaticPadTemplate gst_sunaudiosink_factory =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) TRUE, " "width = (int) 16, " "depth = (int) 16, "
- /* [5510,48000] seems to be a Solaris limit */
- "rate = (int) [ 5510, 48000 ], " "channels = (int) [ 1, 2 ]")
- );
-
-static GstElementClass *parent_class = NULL;
-
-GType
-gst_sunaudiosink_get_type (void)
-{
- static GType plugin_type = 0;
-
- if (!plugin_type) {
- static const GTypeInfo plugin_info = {
- sizeof (GstSunAudioSinkClass),
- gst_sunaudiosink_base_init,
- NULL,
- (GClassInitFunc) gst_sunaudiosink_class_init,
- NULL,
- NULL,
- sizeof (GstSunAudioSink),
- 0,
- (GInstanceInitFunc) gst_sunaudiosink_init,
- };
-
- plugin_type = g_type_register_static (GST_TYPE_AUDIO_SINK,
- "GstSunAudioSink", &plugin_info, 0);
- }
- return plugin_type;
-}
-
-static void
-gst_sunaudiosink_dispose (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_sunaudiosink_finalize (GObject * object)
-{
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (object);
-
- g_mutex_free (sunaudiosink->write_mutex);
- g_cond_free (sunaudiosink->sleep_cond);
-
- g_free (sunaudiosink->device);
-
- if (sunaudiosink->fd != -1) {
- close (sunaudiosink->fd);
- sunaudiosink->fd = -1;
- }
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_sunaudiosink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_static_pad_template (element_class,
- &gst_sunaudiosink_factory);
- gst_element_class_set_details_simple (element_class, "Sun Audio Sink",
- "Sink/Audio",
- "Audio sink for Sun Audio devices",
- "David A. Schleef <ds@schleef.org>, "
- "Brian Cameron <brian.cameron@sun.com>");
-}
-
-static void
-gst_sunaudiosink_class_init (GstSunAudioSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
- GstBaseAudioSinkClass *gstbaseaudiosink_class;
- GstAudioSinkClass *gstaudiosink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
- gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
- gstaudiosink_class = (GstAudioSinkClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->dispose = gst_sunaudiosink_dispose;
- gobject_class->finalize = gst_sunaudiosink_finalize;
-
- gobject_class->set_property = gst_sunaudiosink_set_property;
- gobject_class->get_property = gst_sunaudiosink_get_property;
-
- gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_sunaudiosink_getcaps);
-
- gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_sunaudiosink_open);
- gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_sunaudiosink_close);
- gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_sunaudiosink_prepare);
- gstaudiosink_class->unprepare =
- GST_DEBUG_FUNCPTR (gst_sunaudiosink_unprepare);
- gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_sunaudiosink_write);
- gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_sunaudiosink_delay);
- gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_sunaudiosink_reset);
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device", "Audio Device (/dev/audio)",
- DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_sunaudiosink_init (GstSunAudioSink * sunaudiosink)
-{
- const char *audiodev;
-
- GST_DEBUG_OBJECT (sunaudiosink, "initializing sunaudiosink");
-
- sunaudiosink->fd = -1;
-
- audiodev = g_getenv ("AUDIODEV");
- if (audiodev == NULL)
- audiodev = DEFAULT_DEVICE;
- sunaudiosink->device = g_strdup (audiodev);
-
- /* mutex and gcond used to control the write method */
- sunaudiosink->write_mutex = g_mutex_new ();
- sunaudiosink->sleep_cond = g_cond_new ();
-}
-
-static void
-gst_sunaudiosink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstSunAudioSink *sunaudiosink;
-
- sunaudiosink = GST_SUNAUDIO_SINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (sunaudiosink);
- g_free (sunaudiosink->device);
- sunaudiosink->device = g_strdup (g_value_get_string (value));
- GST_OBJECT_UNLOCK (sunaudiosink);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_sunaudiosink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstSunAudioSink *sunaudiosink;
-
- sunaudiosink = GST_SUNAUDIO_SINK (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- GST_OBJECT_LOCK (sunaudiosink);
- g_value_set_string (value, sunaudiosink->device);
- GST_OBJECT_UNLOCK (sunaudiosink);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_sunaudiosink_getcaps (GstBaseSink * bsink)
-{
- GstPadTemplate *pad_template;
- GstCaps *caps = NULL;
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (bsink);
-
- GST_DEBUG_OBJECT (sunaudiosink, "getcaps called");
-
- pad_template = gst_static_pad_template_get (&gst_sunaudiosink_factory);
- caps = gst_caps_copy (gst_pad_template_get_caps (pad_template));
-
- gst_object_unref (pad_template);
-
- return caps;
-}
-
-static gboolean
-gst_sunaudiosink_open (GstAudioSink * asink)
-{
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (asink);
- int fd, ret;
-
- /* First try to open non-blocking */
- GST_OBJECT_LOCK (sunaudiosink);
- fd = open (sunaudiosink->device, O_WRONLY | O_NONBLOCK);
-
- if (fd >= 0) {
- close (fd);
- fd = open (sunaudiosink->device, O_WRONLY);
- }
-
- if (fd == -1) {
- GST_OBJECT_UNLOCK (sunaudiosink);
- goto open_failed;
- }
-
- sunaudiosink->fd = fd;
- GST_OBJECT_UNLOCK (sunaudiosink);
-
- ret = ioctl (fd, AUDIO_GETDEV, &sunaudiosink->dev);
- if (ret == -1)
- goto ioctl_error;
-
- GST_DEBUG_OBJECT (sunaudiosink, "name %s", sunaudiosink->dev.name);
- GST_DEBUG_OBJECT (sunaudiosink, "version %s", sunaudiosink->dev.version);
- GST_DEBUG_OBJECT (sunaudiosink, "config %s", sunaudiosink->dev.config);
-
- ret = ioctl (fd, AUDIO_GETINFO, &sunaudiosink->info);
- if (ret == -1)
- goto ioctl_error;
-
- GST_DEBUG_OBJECT (sunaudiosink, "monitor_gain %d",
- sunaudiosink->info.monitor_gain);
- GST_DEBUG_OBJECT (sunaudiosink, "output_muted %d",
- sunaudiosink->info.output_muted);
- GST_DEBUG_OBJECT (sunaudiosink, "hw_features %08x",
- sunaudiosink->info.hw_features);
- GST_DEBUG_OBJECT (sunaudiosink, "sw_features %08x",
- sunaudiosink->info.sw_features);
- GST_DEBUG_OBJECT (sunaudiosink, "sw_features_enabled %08x",
- sunaudiosink->info.sw_features_enabled);
-
- return TRUE;
-
-open_failed:
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, OPEN_WRITE, (NULL),
- ("can't open connection to Sun Audio device %s", sunaudiosink->device));
- return FALSE;
-ioctl_error:
- close (sunaudiosink->fd);
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
-}
-
-static gboolean
-gst_sunaudiosink_close (GstAudioSink * asink)
-{
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (asink);
-
- if (sunaudiosink->fd != -1) {
- close (sunaudiosink->fd);
- sunaudiosink->fd = -1;
- }
- return TRUE;
-}
-
-static gboolean
-gst_sunaudiosink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
-{
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (asink);
- audio_info_t ainfo;
- int ret;
- int ports;
-
- ret = ioctl (sunaudiosink->fd, AUDIO_GETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
- if (spec->width != 16)
- return FALSE;
-
- ports = ainfo.play.port;
-
- AUDIO_INITINFO (&ainfo);
-
- ainfo.play.sample_rate = spec->rate;
- ainfo.play.channels = spec->channels;
- ainfo.play.precision = spec->width;
- ainfo.play.encoding = AUDIO_ENCODING_LINEAR;
- ainfo.play.port = ports;
-
- /* buffer_time for playback is not implemented in Solaris at the moment,
- but at some point in the future, it might be */
- ainfo.play.buffer_size =
- gst_util_uint64_scale (spec->rate * spec->bytes_per_sample,
- spec->buffer_time, GST_SECOND / GST_USECOND);
-
- spec->silence_sample[0] = 0;
- spec->silence_sample[1] = 0;
- spec->silence_sample[2] = 0;
- spec->silence_sample[3] = 0;
-
- ret = ioctl (sunaudiosink->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
- /* Now read back the info to find out the actual buffer size and set
- segtotal */
- AUDIO_INITINFO (&ainfo);
-
- ret = ioctl (sunaudiosink->fd, AUDIO_GETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-#if 0
- /* We don't actually use the buffer_size from the sound device, because
- * it seems it's just bogus sometimes */
- sunaudiosink->segtotal = spec->segtotal =
- ainfo.play.buffer_size / spec->segsize;
-#else
- sunaudiosink->segtotal = spec->segtotal;
-#endif
- sunaudiosink->segtotal_samples =
- spec->segtotal * spec->segsize / spec->bytes_per_sample;
-
- sunaudiosink->segs_written = (gint) ainfo.play.eof;
- sunaudiosink->samples_written = ainfo.play.samples;
- sunaudiosink->bytes_per_sample = spec->bytes_per_sample;
-
- GST_DEBUG_OBJECT (sunaudiosink, "Got device buffer_size of %u",
- ainfo.play.buffer_size);
-
- return TRUE;
-}
-
-static gboolean
-gst_sunaudiosink_unprepare (GstAudioSink * asink)
-{
- return TRUE;
-}
-
-#define LOOP_WHILE_EINTR(v,func) do { (v) = (func); } \
- while ((v) == -1 && errno == EINTR);
-
-/* Called with the write_mutex held */
-static void
-gst_sunaudio_sink_do_delay (GstSunAudioSink * sink)
-{
- GstBaseAudioSink *ba_sink = GST_BASE_AUDIO_SINK (sink);
- GstClockTime total_sleep;
- GstClockTime max_sleep;
- gint sleep_usecs;
- GTimeVal sleep_end;
- gint err;
- audio_info_t ainfo;
- guint diff;
-
- /* This code below ensures that we don't race any further than buffer_time
- * ahead of the audio output, by sleeping if the next write call would cause
- * us to advance too far in the ring-buffer */
- LOOP_WHILE_EINTR (err, ioctl (sink->fd, AUDIO_GETINFO, &ainfo));
- if (err < 0)
- goto write_error;
-
- /* Compute our offset from the output (copes with overflow) */
- diff = (guint) (sink->segs_written) - ainfo.play.eof;
- if (diff > sink->segtotal) {
- /* This implies that reset did a flush just as the sound device aquired
- * some buffers internally, and it causes us to be out of sync with the
- * eof measure. This corrects it */
- sink->segs_written = ainfo.play.eof;
- diff = 0;
- }
-
- if (diff + 1 < sink->segtotal)
- return; /* no need to sleep at all */
-
- /* Never sleep longer than the initial number of undrained segments in the
- device plus one */
- total_sleep = 0;
- max_sleep = (diff + 1) * (ba_sink->latency_time * GST_USECOND);
- /* sleep for a segment period between .eof polls */
- sleep_usecs = ba_sink->latency_time;
-
- /* Current time is our reference point */
- g_get_current_time (&sleep_end);
-
- /* If the next segment would take us too far along the ring buffer,
- * sleep for a bit to free up a slot. If there were a way to find out
- * when the eof field actually increments, we could use, but the only
- * notification mechanism seems to be SIGPOLL, which we can't use from
- * a support library */
- while (diff + 1 >= sink->segtotal && total_sleep < max_sleep) {
- GST_LOG_OBJECT (sink, "need to block to drain segment(s). "
- "Sleeping for %d us", sleep_usecs);
-
- g_time_val_add (&sleep_end, sleep_usecs);
-
- if (g_cond_timed_wait (sink->sleep_cond, sink->write_mutex, &sleep_end)) {
- GST_LOG_OBJECT (sink, "Waking up early due to reset");
- return; /* Got told to wake up */
- }
- total_sleep += (sleep_usecs * GST_USECOND);
-
- LOOP_WHILE_EINTR (err, ioctl (sink->fd, AUDIO_GETINFO, &ainfo));
- if (err < 0)
- goto write_error;
-
- /* Compute our (new) offset from the output (copes with overflow) */
- diff = (guint) g_atomic_int_get (&sink->segs_written) - ainfo.play.eof;
- }
-
- return;
-
-write_error:
- GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, (NULL),
- ("Playback error on device '%s': %s", sink->device, strerror (errno)));
- return;
-}
-
-static guint
-gst_sunaudiosink_write (GstAudioSink * asink, gpointer data, guint length)
-{
- GstSunAudioSink *sink = GST_SUNAUDIO_SINK (asink);
-
- gint bytes_written, err;
-
- g_mutex_lock (sink->write_mutex);
- if (sink->flushing) {
- /* Exit immediately if reset tells us to */
- g_mutex_unlock (sink->write_mutex);
- return length;
- }
-
- LOOP_WHILE_EINTR (bytes_written, write (sink->fd, data, length));
- if (bytes_written < 0) {
- err = bytes_written;
- goto write_error;
- }
-
- /* Increment our sample counter, for delay calcs */
- g_atomic_int_add (&sink->samples_written, length / sink->bytes_per_sample);
-
- /* Don't consider the segment written if we didn't output the whole lot yet */
- if (bytes_written < length) {
- g_mutex_unlock (sink->write_mutex);
- return (guint) bytes_written;
- }
-
- /* Write a zero length output to trigger increment of the eof field */
- LOOP_WHILE_EINTR (err, write (sink->fd, NULL, 0));
- if (err < 0)
- goto write_error;
-
- /* Count this extra segment we've written */
- sink->segs_written += 1;
-
- /* Now delay so we don't overrun the ring buffer */
- gst_sunaudio_sink_do_delay (sink);
-
- g_mutex_unlock (sink->write_mutex);
- return length;
-
-write_error:
- g_mutex_unlock (sink->write_mutex);
-
- GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, (NULL),
- ("Playback error on device '%s': %s", sink->device, strerror (errno)));
- return length; /* Say we wrote the segment to let the ringbuffer exit */
-}
-
-/*
- * Provide the current number of unplayed samples that have been written
- * to the device */
-static guint
-gst_sunaudiosink_delay (GstAudioSink * asink)
-{
- GstSunAudioSink *sink = GST_SUNAUDIO_SINK (asink);
- audio_info_t ainfo;
- gint ret;
- guint offset;
-
- ret = ioctl (sink->fd, AUDIO_GETINFO, &ainfo);
- if (G_UNLIKELY (ret == -1))
- return 0;
-
- offset = (g_atomic_int_get (&sink->samples_written) - ainfo.play.samples);
-
- /* If the offset is larger than the total ringbuffer size, then we asked
- between the write call and when samples_written is updated */
- if (G_UNLIKELY (offset > sink->segtotal_samples))
- return 0;
-
- return offset;
-}
-
-static void
-gst_sunaudiosink_reset (GstAudioSink * asink)
-{
- /* Get current values */
- GstSunAudioSink *sunaudiosink = GST_SUNAUDIO_SINK (asink);
- audio_info_t ainfo;
- int ret;
-
- ret = ioctl (sunaudiosink->fd, AUDIO_GETINFO, &ainfo);
- if (ret == -1) {
- /*
- * Should never happen, but if we couldn't getinfo, then no point
- * trying to setinfo
- */
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return;
- }
-
- /*
- * Pause the audio - so audio stops playing immediately rather than
- * waiting for the ringbuffer to empty.
- */
- ainfo.play.pause = !NULL;
- ret = ioctl (sunaudiosink->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* Flush the audio */
- ret = ioctl (sunaudiosink->fd, I_FLUSH, FLUSHW);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* Now, we take the write_mutex and signal to ensure the write thread
- * is not busy, and we signal the condition to wake up any sleeper,
- * then we flush again in case the write wrote something after we flushed,
- * and finally release the lock and unpause */
- g_mutex_lock (sunaudiosink->write_mutex);
- sunaudiosink->flushing = TRUE;
-
- g_cond_signal (sunaudiosink->sleep_cond);
-
- ret = ioctl (sunaudiosink->fd, I_FLUSH, FLUSHW);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* unpause the audio */
- ainfo.play.pause = NULL;
- ret = ioctl (sunaudiosink->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosink, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* After flushing the audio device, we need to remeasure the sample count
- * and segments written count so we're in sync with the device */
-
- sunaudiosink->segs_written = ainfo.play.eof;
- g_atomic_int_set (&sunaudiosink->samples_written, ainfo.play.samples);
-
- sunaudiosink->flushing = FALSE;
- g_mutex_unlock (sunaudiosink->write_mutex);
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiosink.h b/wearable/sys/sunaudio/gstsunaudiosink.h
deleted file mode 100644
index 9454475..0000000
--- a/wearable/sys/sunaudio/gstsunaudiosink.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * GStreamer - SunAudio sink
- * Copyright (C) 2004 David A. Schleef <ds@schleef.org>
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- * Copyright (C) 2006 Jan Schmidt <thaytan@mad.scientist.com>
- *
- * gstsunaudiosink.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_SUNAUDIO_SINK_H__
-#define __GST_SUNAUDIO_SINK_H__
-
-#include <sys/audioio.h>
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosink.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_SUNAUDIO_SINK (gst_sunaudiosink_get_type())
-#define GST_SUNAUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SUNAUDIO_SINK,GstSunAudioSink))
-#define GST_SUNAUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SUNAUDIO_SINK,GstSunAudioSinkClass))
-#define GST_IS_SUNAUDIO_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SUNAUDIO_SINK))
-#define GST_IS_SUNAUDIO_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SUNAUDIO_SINK))
-
-typedef struct _GstSunAudioSink GstSunAudioSink;
-typedef struct _GstSunAudioSinkClass GstSunAudioSinkClass;
-
-struct _GstSunAudioSink {
- GstAudioSink sink;
-
- gchar *device;
- gint fd;
-
- audio_device_t dev;
- audio_info_t info;
-
- /* Number of segments the ringbuffer is configured for */
- guint segtotal;
- guint segtotal_samples;
-
- /* Number of segments written to the device */
- gint segs_written;
- /* Number of samples written to the device */
- gint samples_written;
- guint bytes_per_sample;
-
- /* mutex and gcond used to control the write method */
- GMutex *write_mutex;
- GCond *sleep_cond;
- gboolean flushing;
-};
-
-struct _GstSunAudioSinkClass {
- GstAudioSinkClass parent_class;
-};
-
-GType gst_sunaudiosink_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_SUNAUDIO_SINK_H__ */
-
diff --git a/wearable/sys/sunaudio/gstsunaudiosrc.c b/wearable/sys/sunaudio/gstsunaudiosrc.c
deleted file mode 100644
index 08282cf..0000000
--- a/wearable/sys/sunaudio/gstsunaudiosrc.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * GStreamer - SunAudio source
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- *
- * gstsunaudiosrc.c:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-sunaudiosrc
- *
- * sunaudiosrc is an audio source designed to work with the Sun Audio
- * interface available in Solaris.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch sunaudiosrc ! wavenc ! filesink location=audio.wav
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <stropts.h>
-#include <sys/mixer.h>
-
-#include "gstsunaudiosrc.h"
-
-GST_DEBUG_CATEGORY_EXTERN (sunaudio_debug);
-#define GST_CAT_DEFAULT sunaudio_debug
-
-static void gst_sunaudiosrc_base_init (gpointer g_class);
-static void gst_sunaudiosrc_class_init (GstSunAudioSrcClass * klass);
-static void gst_sunaudiosrc_init (GstSunAudioSrc * sunaudiosrc,
- GstSunAudioSrcClass * g_class);
-static void gst_sunaudiosrc_dispose (GObject * object);
-
-static void gst_sunaudiosrc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_sunaudiosrc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_sunaudiosrc_getcaps (GstBaseSrc * bsrc);
-
-static gboolean gst_sunaudiosrc_open (GstAudioSrc * asrc);
-static gboolean gst_sunaudiosrc_close (GstAudioSrc * asrc);
-static gboolean gst_sunaudiosrc_prepare (GstAudioSrc * asrc,
- GstRingBufferSpec * spec);
-static gboolean gst_sunaudiosrc_unprepare (GstAudioSrc * asrc);
-static guint gst_sunaudiosrc_read (GstAudioSrc * asrc, gpointer data,
- guint length);
-static guint gst_sunaudiosrc_delay (GstAudioSrc * asrc);
-static void gst_sunaudiosrc_reset (GstAudioSrc * asrc);
-
-#define DEFAULT_DEVICE "/dev/audio"
-
-enum
-{
- PROP_0,
- PROP_DEVICE
-};
-
-GST_BOILERPLATE_WITH_INTERFACE (GstSunAudioSrc, gst_sunaudiosrc,
- GstAudioSrc, GST_TYPE_AUDIO_SRC, GstMixer, GST_TYPE_MIXER, gst_sunaudiosrc);
-
-GST_IMPLEMENT_SUNAUDIO_MIXER_CTRL_METHODS (GstSunAudioSrc, gst_sunaudiosrc);
-
-static GstStaticPadTemplate gst_sunaudiosrc_factory =
-GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "endianness = (int) BYTE_ORDER, "
- "signed = (boolean) TRUE, " "width = (int) 16, " "depth = (int) 16, "
- /* [5510,48000] seems to be a Solaris limit */
- "rate = (int) [ 5510, 48000 ], " "channels = (int) [ 1, 2 ]")
- );
-
-static void
-gst_sunaudiosrc_dispose (GObject * object)
-{
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_sunaudiosrc_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_add_static_pad_template (element_class,
- &gst_sunaudiosrc_factory);
- gst_element_class_set_details_simple (element_class, "Sun Audio Source",
- "Source/Audio",
- "Audio source for Sun Audio devices",
- "Brian Cameron <brian.cameron@sun.com>");
-}
-
-static void
-gst_sunaudiosrc_class_init (GstSunAudioSrcClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstBaseAudioSrcClass *gstbaseaudiosrc_class;
- GstAudioSrcClass *gstaudiosrc_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstbaseaudiosrc_class = (GstBaseAudioSrcClass *) klass;
- gstaudiosrc_class = (GstAudioSrcClass *) klass;
-
- gobject_class->dispose = gst_sunaudiosrc_dispose;
- gobject_class->get_property = gst_sunaudiosrc_get_property;
- gobject_class->set_property = gst_sunaudiosrc_set_property;
-
- gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_getcaps);
-
- gstaudiosrc_class->open = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_open);
- gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_prepare);
- gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_unprepare);
- gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_close);
- gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_read);
- gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_delay);
- gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_sunaudiosrc_reset);
-
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device",
- "SunAudio device (usually /dev/audio)", DEFAULT_DEVICE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-static void
-gst_sunaudiosrc_init (GstSunAudioSrc * sunaudiosrc,
- GstSunAudioSrcClass * g_class)
-{
- const char *audiodev;
-
- GST_DEBUG_OBJECT (sunaudiosrc, "initializing sunaudiosrc");
-
- sunaudiosrc->fd = -1;
-
- audiodev = g_getenv ("AUDIODEV");
- if (audiodev == NULL)
- audiodev = DEFAULT_DEVICE;
- sunaudiosrc->device = g_strdup (audiodev);
-}
-
-static void
-gst_sunaudiosrc_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstSunAudioSrc *sunaudiosrc;
-
- sunaudiosrc = GST_SUNAUDIO_SRC (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- if (sunaudiosrc->device)
- g_free (sunaudiosrc->device);
- sunaudiosrc->device = g_value_dup_string (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_sunaudiosrc_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstSunAudioSrc *sunaudiosrc;
-
- sunaudiosrc = GST_SUNAUDIO_SRC (object);
-
- switch (prop_id) {
- case PROP_DEVICE:
- g_value_set_string (value, sunaudiosrc->device);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_sunaudiosrc_getcaps (GstBaseSrc * bsrc)
-{
- GstPadTemplate *pad_template;
- GstCaps *caps = NULL;
- GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (bsrc);
-
- GST_DEBUG_OBJECT (sunaudiosrc, "getcaps called");
-
- pad_template = gst_static_pad_template_get (&gst_sunaudiosrc_factory);
- caps = gst_caps_copy (gst_pad_template_get_caps (pad_template));
-
- gst_object_unref (pad_template);
-
- return caps;
-}
-
-static gboolean
-gst_sunaudiosrc_open (GstAudioSrc * asrc)
-{
- GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (asrc);
- int fd, ret;
-
- fd = open (sunaudiosrc->device, O_RDONLY);
-
- if (fd == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, OPEN_READ, (NULL),
- ("can't open connection to Sun Audio device %s", sunaudiosrc->device));
-
- return FALSE;
- }
-
- sunaudiosrc->fd = fd;
-
- ret = ioctl (fd, AUDIO_GETDEV, &sunaudiosrc->dev);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
- GST_DEBUG_OBJECT (sunaudiosrc, "name %s", sunaudiosrc->dev.name);
- GST_DEBUG_OBJECT (sunaudiosrc, "version %s", sunaudiosrc->dev.version);
- GST_DEBUG_OBJECT (sunaudiosrc, "config %s", sunaudiosrc->dev.config);
-
- ret = ioctl (fd, AUDIO_GETINFO, &sunaudiosrc->info);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
- GST_DEBUG_OBJECT (sunaudiosrc, "monitor_gain %d",
- sunaudiosrc->info.monitor_gain);
- GST_DEBUG_OBJECT (sunaudiosrc, "output_muted %d",
- sunaudiosrc->info.output_muted);
- GST_DEBUG_OBJECT (sunaudiosrc, "hw_features %08x",
- sunaudiosrc->info.hw_features);
- GST_DEBUG_OBJECT (sunaudiosrc, "sw_features %08x",
- sunaudiosrc->info.sw_features);
- GST_DEBUG_OBJECT (sunaudiosrc, "sw_features_enabled %08x",
- sunaudiosrc->info.sw_features_enabled);
-
- if (!sunaudiosrc->mixer) {
- const char *audiodev;
-
- audiodev = g_getenv ("AUDIODEV");
- if (audiodev == NULL) {
- sunaudiosrc->mixer = gst_sunaudiomixer_ctrl_new ("/dev/audioctl");
- } else {
- gchar *device = g_strdup_printf ("%sctl", audiodev);
-
- sunaudiosrc->mixer = gst_sunaudiomixer_ctrl_new (device);
- g_free (device);
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_sunaudiosrc_close (GstAudioSrc * asrc)
-{
- GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (asrc);
-
- close (sunaudiosrc->fd);
- sunaudiosrc->fd = -1;
-
- if (sunaudiosrc->mixer) {
- gst_sunaudiomixer_ctrl_free (sunaudiosrc->mixer);
- sunaudiosrc->mixer = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_sunaudiosrc_prepare (GstAudioSrc * asrc, GstRingBufferSpec * spec)
-{
- GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (asrc);
- audio_info_t ainfo;
- int ret;
- GstSunAudioMixerCtrl *mixer;
- struct audio_info audioinfo;
-
- ret = ioctl (sunaudiosrc->fd, AUDIO_GETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
- if (spec->width != 16)
- return FALSE;
-
- AUDIO_INITINFO (&ainfo);
-
- ainfo.record.sample_rate = spec->rate;
- ainfo.record.precision = spec->width;
- ainfo.record.channels = spec->channels;
- ainfo.record.encoding = AUDIO_ENCODING_LINEAR;
- ainfo.record.buffer_size = spec->buffer_time;
-
- mixer = sunaudiosrc->mixer;
-
- if (ioctl (mixer->mixer_fd, AUDIO_GETINFO, &audioinfo) < 0) {
- g_warning ("Error getting audio device volume");
- }
- ainfo.record.port = audioinfo.record.port;
- ainfo.record.gain = audioinfo.record.gain;
- ainfo.record.balance = audioinfo.record.balance;
-
- spec->segsize = 128;
- spec->segtotal = spec->buffer_time / 128;
-
- spec->silence_sample[0] = 0;
- spec->silence_sample[1] = 0;
- spec->silence_sample[2] = 0;
- spec->silence_sample[3] = 0;
-
- ret = ioctl (sunaudiosrc->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return FALSE;
- }
-
-
- ioctl (sunaudiosrc->fd, I_FLUSH, FLUSHR);
-
- return TRUE;
-}
-
-static gboolean
-gst_sunaudiosrc_unprepare (GstAudioSrc * asrc)
-{
- return TRUE;
-}
-
-static guint
-gst_sunaudiosrc_read (GstAudioSrc * asrc, gpointer data, guint length)
-{
- return read (GST_SUNAUDIO_SRC (asrc)->fd, data, length);
-}
-
-static guint
-gst_sunaudiosrc_delay (GstAudioSrc * asrc)
-{
- return 0;
-}
-
-static void
-gst_sunaudiosrc_reset (GstAudioSrc * asrc)
-{
- /* Get current values */
- GstSunAudioSrc *sunaudiosrc = GST_SUNAUDIO_SRC (asrc);
- audio_info_t ainfo;
- int ret;
-
- ret = ioctl (sunaudiosrc->fd, AUDIO_GETINFO, &ainfo);
- if (ret == -1) {
- /*
- * Should never happen, but if we couldn't getinfo, then no point
- * trying to setinfo
- */
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- return;
- }
-
- /*
- * Pause the audio - so audio stops playing immediately rather than
- * waiting for the ringbuffer to empty.
- */
- ainfo.record.pause = !NULL;
- ret = ioctl (sunaudiosrc->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* Flush the audio */
- ret = ioctl (sunaudiosrc->fd, I_FLUSH, FLUSHR);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-
- /* unpause the audio */
- ainfo.record.pause = NULL;
- ret = ioctl (sunaudiosrc->fd, AUDIO_SETINFO, &ainfo);
- if (ret == -1) {
- GST_ELEMENT_ERROR (sunaudiosrc, RESOURCE, SETTINGS, (NULL), ("%s",
- strerror (errno)));
- }
-}
diff --git a/wearable/sys/sunaudio/gstsunaudiosrc.h b/wearable/sys/sunaudio/gstsunaudiosrc.h
deleted file mode 100644
index 95d9613..0000000
--- a/wearable/sys/sunaudio/gstsunaudiosrc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* GStreamer - SunAudio source
- * Copyright (C) 2005,2006 Sun Microsystems, Inc.,
- * Brian Cameron <brian.cameron@sun.com>
- *
- * gstsunaudiosrc.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_SUNAUDIO_SRC_H__
-#define __GST_SUNAUDIO_SRC_H__
-
-#include <sys/audioio.h>
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosrc.h>
-
-#include "gstsunaudiomixerctrl.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_SUNAUDIO_SRC (gst_sunaudiosrc_get_type())
-#define GST_SUNAUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_SUNAUDIO_SRC,GstSunAudioSrc))
-#define GST_SUNAUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_SUNAUDIO_SRC,GstSunAudioSrcClass))
-#define GST_IS_SUNAUDIO_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SUNAUDIO_SRC))
-#define GST_IS_SUNAUDIO_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SUNAUDIO_SRC))
-
-typedef struct _GstSunAudioSrc GstSunAudioSrc;
-typedef struct _GstSunAudioSrcClass GstSunAudioSrcClass;
-
-struct _GstSunAudioSrc {
- GstAudioSrc src;
-
- gchar *device;
- gint fd;
- gint control_fd;
-
- audio_device_t dev;
- audio_info_t info;
-
- gint bytes_per_sample;
-
- GstSunAudioMixerCtrl *mixer;
-};
-
-struct _GstSunAudioSrcClass {
- GstAudioSrcClass parent_class;
-};
-
-GType gst_sunaudiosrc_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_SUNAUDIO_SRC_H__ */
-
diff --git a/wearable/sys/v4l2/Makefile.am b/wearable/sys/v4l2/Makefile.am
deleted file mode 100644
index a7a99de..0000000
--- a/wearable/sys/v4l2/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-plugin_LTLIBRARIES = libgstvideo4linux2.la
-
-if USE_XVIDEO
-xv_source = gstv4l2xoverlay.c
-xv_libs = $(X_LIBS) $(XVIDEO_LIBS)
-else
-xv_source =
-xv_libs =
-endif
-
-libgstvideo4linux2_la_SOURCES = gstv4l2.c \
- gstv4l2colorbalance.c \
- gstv4l2object.c \
- gstv4l2bufferpool.c \
- gstv4l2src.c \
- gstv4l2radio.c \
- gstv4l2tuner.c \
- gstv4l2vidorient.c \
- v4l2_calls.c \
- v4l2src_calls.c \
- $(xv_source)
-
-if BUILD_EXPERIMENTAL
-libgstvideo4linux2_la_SOURCES += gstv4l2sink.c
-endif
-
-libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CONTROLLER_CFLAGS) \
- $(GST_CFLAGS) \
- $(X_CFLAGS) \
- $(LIBV4L2_CFLAGS) \
- $(GUDEV_CFLAGS)
-
-libgstvideo4linux2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstvideo4linux2_la_LIBTOOLFLAGS = --tag=disable-static
-
-libgstvideo4linux2_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_CONTROLLER_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_MAJORMINOR) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_LIBS) \
- $(xv_libs) \
- $(LIBV4L2_LIBS) \
- $(GUDEV_LIBS)
-
-noinst_HEADERS = \
- gstv4l2bufferpool.h \
- gstv4l2colorbalance.h \
- gstv4l2object.h \
- gstv4l2sink.h \
- gstv4l2src.h \
- gstv4l2radio.h \
- gstv4l2tuner.h \
- gstv4l2vidorient.h \
- gstv4l2xoverlay.h \
- v4l2_calls.h \
- v4l2src_calls.h
diff --git a/wearable/sys/v4l2/Makefile.in b/wearable/sys/v4l2/Makefile.in
deleted file mode 100644
index c9ad860..0000000
--- a/wearable/sys/v4l2/Makefile.in
+++ /dev/null
@@ -1,953 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@BUILD_EXPERIMENTAL_TRUE@am__append_1 = gstv4l2sink.c
-subdir = sys/v4l2
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-@USE_XVIDEO_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \
-@USE_XVIDEO_TRUE@ $(am__DEPENDENCIES_1)
-libgstvideo4linux2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am__libgstvideo4linux2_la_SOURCES_DIST = gstv4l2.c \
- gstv4l2colorbalance.c gstv4l2object.c gstv4l2bufferpool.c \
- gstv4l2src.c gstv4l2radio.c gstv4l2tuner.c gstv4l2vidorient.c \
- v4l2_calls.c v4l2src_calls.c gstv4l2xoverlay.c gstv4l2sink.c
-@USE_XVIDEO_TRUE@am__objects_1 = \
-@USE_XVIDEO_TRUE@ libgstvideo4linux2_la-gstv4l2xoverlay.lo
-@BUILD_EXPERIMENTAL_TRUE@am__objects_2 = \
-@BUILD_EXPERIMENTAL_TRUE@ libgstvideo4linux2_la-gstv4l2sink.lo
-am_libgstvideo4linux2_la_OBJECTS = libgstvideo4linux2_la-gstv4l2.lo \
- libgstvideo4linux2_la-gstv4l2colorbalance.lo \
- libgstvideo4linux2_la-gstv4l2object.lo \
- libgstvideo4linux2_la-gstv4l2bufferpool.lo \
- libgstvideo4linux2_la-gstv4l2src.lo \
- libgstvideo4linux2_la-gstv4l2radio.lo \
- libgstvideo4linux2_la-gstv4l2tuner.lo \
- libgstvideo4linux2_la-gstv4l2vidorient.lo \
- libgstvideo4linux2_la-v4l2_calls.lo \
- libgstvideo4linux2_la-v4l2src_calls.lo $(am__objects_1) \
- $(am__objects_2)
-libgstvideo4linux2_la_OBJECTS = $(am_libgstvideo4linux2_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstvideo4linux2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) \
- $(libgstvideo4linux2_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstvideo4linux2_la_SOURCES)
-DIST_SOURCES = $(am__libgstvideo4linux2_la_SOURCES_DIST)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstvideo4linux2.la
-@USE_XVIDEO_FALSE@xv_source =
-@USE_XVIDEO_TRUE@xv_source = gstv4l2xoverlay.c
-@USE_XVIDEO_FALSE@xv_libs =
-@USE_XVIDEO_TRUE@xv_libs = $(X_LIBS) $(XVIDEO_LIBS)
-libgstvideo4linux2_la_SOURCES = gstv4l2.c gstv4l2colorbalance.c \
- gstv4l2object.c gstv4l2bufferpool.c gstv4l2src.c \
- gstv4l2radio.c gstv4l2tuner.c gstv4l2vidorient.c v4l2_calls.c \
- v4l2src_calls.c $(xv_source) $(am__append_1)
-libgstvideo4linux2_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CONTROLLER_CFLAGS) \
- $(GST_CFLAGS) \
- $(X_CFLAGS) \
- $(LIBV4L2_CFLAGS) \
- $(GUDEV_CFLAGS)
-
-libgstvideo4linux2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstvideo4linux2_la_LIBTOOLFLAGS = --tag=disable-static
-libgstvideo4linux2_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(GST_CONTROLLER_LIBS) \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_MAJORMINOR) \
- -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_LIBS) \
- $(xv_libs) \
- $(LIBV4L2_LIBS) \
- $(GUDEV_LIBS)
-
-noinst_HEADERS = \
- gstv4l2bufferpool.h \
- gstv4l2colorbalance.h \
- gstv4l2object.h \
- gstv4l2sink.h \
- gstv4l2src.h \
- gstv4l2radio.h \
- gstv4l2tuner.h \
- gstv4l2vidorient.h \
- gstv4l2xoverlay.h \
- v4l2_calls.h \
- v4l2src_calls.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/v4l2/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/v4l2/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstvideo4linux2.la: $(libgstvideo4linux2_la_OBJECTS) $(libgstvideo4linux2_la_DEPENDENCIES) $(EXTRA_libgstvideo4linux2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstvideo4linux2_la_LINK) -rpath $(plugindir) $(libgstvideo4linux2_la_OBJECTS) $(libgstvideo4linux2_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2bufferpool.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2colorbalance.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2radio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2sink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2src.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2tuner.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2vidorient.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-gstv4l2xoverlay.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-v4l2_calls.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideo4linux2_la-v4l2src_calls.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstvideo4linux2_la-gstv4l2.lo: gstv4l2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2.Tpo -c -o libgstvideo4linux2_la-gstv4l2.lo `test -f 'gstv4l2.c' || echo '$(srcdir)/'`gstv4l2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2.c' object='libgstvideo4linux2_la-gstv4l2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2.lo `test -f 'gstv4l2.c' || echo '$(srcdir)/'`gstv4l2.c
-
-libgstvideo4linux2_la-gstv4l2colorbalance.lo: gstv4l2colorbalance.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2colorbalance.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2colorbalance.Tpo -c -o libgstvideo4linux2_la-gstv4l2colorbalance.lo `test -f 'gstv4l2colorbalance.c' || echo '$(srcdir)/'`gstv4l2colorbalance.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2colorbalance.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2colorbalance.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2colorbalance.c' object='libgstvideo4linux2_la-gstv4l2colorbalance.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2colorbalance.lo `test -f 'gstv4l2colorbalance.c' || echo '$(srcdir)/'`gstv4l2colorbalance.c
-
-libgstvideo4linux2_la-gstv4l2object.lo: gstv4l2object.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2object.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Tpo -c -o libgstvideo4linux2_la-gstv4l2object.lo `test -f 'gstv4l2object.c' || echo '$(srcdir)/'`gstv4l2object.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2object.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2object.c' object='libgstvideo4linux2_la-gstv4l2object.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2object.lo `test -f 'gstv4l2object.c' || echo '$(srcdir)/'`gstv4l2object.c
-
-libgstvideo4linux2_la-gstv4l2bufferpool.lo: gstv4l2bufferpool.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2bufferpool.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2bufferpool.Tpo -c -o libgstvideo4linux2_la-gstv4l2bufferpool.lo `test -f 'gstv4l2bufferpool.c' || echo '$(srcdir)/'`gstv4l2bufferpool.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2bufferpool.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2bufferpool.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2bufferpool.c' object='libgstvideo4linux2_la-gstv4l2bufferpool.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2bufferpool.lo `test -f 'gstv4l2bufferpool.c' || echo '$(srcdir)/'`gstv4l2bufferpool.c
-
-libgstvideo4linux2_la-gstv4l2src.lo: gstv4l2src.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2src.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2src.Tpo -c -o libgstvideo4linux2_la-gstv4l2src.lo `test -f 'gstv4l2src.c' || echo '$(srcdir)/'`gstv4l2src.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2src.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2src.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2src.c' object='libgstvideo4linux2_la-gstv4l2src.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2src.lo `test -f 'gstv4l2src.c' || echo '$(srcdir)/'`gstv4l2src.c
-
-libgstvideo4linux2_la-gstv4l2radio.lo: gstv4l2radio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2radio.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2radio.Tpo -c -o libgstvideo4linux2_la-gstv4l2radio.lo `test -f 'gstv4l2radio.c' || echo '$(srcdir)/'`gstv4l2radio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2radio.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2radio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2radio.c' object='libgstvideo4linux2_la-gstv4l2radio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2radio.lo `test -f 'gstv4l2radio.c' || echo '$(srcdir)/'`gstv4l2radio.c
-
-libgstvideo4linux2_la-gstv4l2tuner.lo: gstv4l2tuner.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2tuner.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2tuner.Tpo -c -o libgstvideo4linux2_la-gstv4l2tuner.lo `test -f 'gstv4l2tuner.c' || echo '$(srcdir)/'`gstv4l2tuner.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2tuner.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2tuner.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2tuner.c' object='libgstvideo4linux2_la-gstv4l2tuner.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2tuner.lo `test -f 'gstv4l2tuner.c' || echo '$(srcdir)/'`gstv4l2tuner.c
-
-libgstvideo4linux2_la-gstv4l2vidorient.lo: gstv4l2vidorient.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2vidorient.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2vidorient.Tpo -c -o libgstvideo4linux2_la-gstv4l2vidorient.lo `test -f 'gstv4l2vidorient.c' || echo '$(srcdir)/'`gstv4l2vidorient.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2vidorient.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2vidorient.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2vidorient.c' object='libgstvideo4linux2_la-gstv4l2vidorient.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2vidorient.lo `test -f 'gstv4l2vidorient.c' || echo '$(srcdir)/'`gstv4l2vidorient.c
-
-libgstvideo4linux2_la-v4l2_calls.lo: v4l2_calls.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-v4l2_calls.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-v4l2_calls.Tpo -c -o libgstvideo4linux2_la-v4l2_calls.lo `test -f 'v4l2_calls.c' || echo '$(srcdir)/'`v4l2_calls.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-v4l2_calls.Tpo $(DEPDIR)/libgstvideo4linux2_la-v4l2_calls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v4l2_calls.c' object='libgstvideo4linux2_la-v4l2_calls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-v4l2_calls.lo `test -f 'v4l2_calls.c' || echo '$(srcdir)/'`v4l2_calls.c
-
-libgstvideo4linux2_la-v4l2src_calls.lo: v4l2src_calls.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-v4l2src_calls.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-v4l2src_calls.Tpo -c -o libgstvideo4linux2_la-v4l2src_calls.lo `test -f 'v4l2src_calls.c' || echo '$(srcdir)/'`v4l2src_calls.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-v4l2src_calls.Tpo $(DEPDIR)/libgstvideo4linux2_la-v4l2src_calls.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v4l2src_calls.c' object='libgstvideo4linux2_la-v4l2src_calls.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-v4l2src_calls.lo `test -f 'v4l2src_calls.c' || echo '$(srcdir)/'`v4l2src_calls.c
-
-libgstvideo4linux2_la-gstv4l2xoverlay.lo: gstv4l2xoverlay.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2xoverlay.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2xoverlay.Tpo -c -o libgstvideo4linux2_la-gstv4l2xoverlay.lo `test -f 'gstv4l2xoverlay.c' || echo '$(srcdir)/'`gstv4l2xoverlay.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2xoverlay.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2xoverlay.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2xoverlay.c' object='libgstvideo4linux2_la-gstv4l2xoverlay.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2xoverlay.lo `test -f 'gstv4l2xoverlay.c' || echo '$(srcdir)/'`gstv4l2xoverlay.c
-
-libgstvideo4linux2_la-gstv4l2sink.lo: gstv4l2sink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -MT libgstvideo4linux2_la-gstv4l2sink.lo -MD -MP -MF $(DEPDIR)/libgstvideo4linux2_la-gstv4l2sink.Tpo -c -o libgstvideo4linux2_la-gstv4l2sink.lo `test -f 'gstv4l2sink.c' || echo '$(srcdir)/'`gstv4l2sink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideo4linux2_la-gstv4l2sink.Tpo $(DEPDIR)/libgstvideo4linux2_la-gstv4l2sink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstv4l2sink.c' object='libgstvideo4linux2_la-gstv4l2sink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideo4linux2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideo4linux2_la_CFLAGS) $(CFLAGS) -c -o libgstvideo4linux2_la-gstv4l2sink.lo `test -f 'gstv4l2sink.c' || echo '$(srcdir)/'`gstv4l2sink.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/v4l2/README b/wearable/sys/v4l2/README
deleted file mode 100644
index e9c4ab4..0000000
--- a/wearable/sys/v4l2/README
+++ /dev/null
@@ -1,32 +0,0 @@
-v4l2 plugins
-============
-
-The idea is a bit the same as the idea for the v4l1 plugins. We want
-one generic v4l2element, and a few child objects (probably only two:
-v4l2src and v4l2sink):
-
- /-------- v4l2src
-v4l2element ---=
- \-------- v4l2sink
-
-Both v4l2src and v4l2sink have a uncompressed and a compressed
-recording-/playback-mode. Since this is all part of v4l2, the 'client'
-of these elements, i.e. an application using v4l2src/v4l2sink, will
-hardly notice this. All capsnego stuff is done inside, and the plugin
-knows which formats are compressed and which are not.
-
-Please note that the v4l1 and the v4l2 plugins are *not* compatible
-concerning properties. Naming has been kept the same where possible,
-but in some cases, properties had to be removed or added to make
-full use of v4l2.
-
-V4L2 API: http://linux.bytesex.org/v4l2/.
- http://v4l2spec.bytesex.org/
- /usr/include/linux/videodev2.h or
-
-Kernel patches available from
- http://dl.bytesex.org/patches/.
-
-Articles:
- http://lwn.net/Articles/203924/
-
diff --git a/wearable/sys/v4l2/gstv4l2.c b/wearable/sys/v4l2/gstv4l2.c
deleted file mode 100644
index 95f64db..0000000
--- a/wearable/sys/v4l2/gstv4l2.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2.c: plugin for v4l2 elements
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gst/gst-i18n-plugin.h"
-
-#include <gst/gst.h>
-#include <gst/controller/gstcontroller.h>
-
-#include "gstv4l2object.h"
-#include "gstv4l2src.h"
-#ifdef HAVE_EXPERIMENTAL
-#include "gstv4l2sink.h"
-#endif
-#include "gstv4l2radio.h"
-/* #include "gstv4l2jpegsrc.h" */
-/* #include "gstv4l2mjpegsrc.h" */
-/* #include "gstv4l2mjpegsink.h" */
-
-/* used in v4l2_calls.c and v4l2src_calls.c */
-GST_DEBUG_CATEGORY (v4l2_debug);
-GST_DEBUG_CATEGORY (GST_CAT_PERFORMANCE);
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (v4l2_debug, "v4l2", 0, "V4L2 API calls");
- GST_DEBUG_CATEGORY_GET (GST_CAT_PERFORMANCE, "GST_PERFORMANCE");
-
- /* initialize gst controller library */
- gst_controller_init (NULL, NULL);
-
- if (!gst_element_register (plugin, "v4l2src", GST_RANK_PRIMARY,
- GST_TYPE_V4L2SRC) ||
-#ifdef HAVE_EXPERIMENTAL
- !gst_element_register (plugin, "v4l2sink", GST_RANK_NONE,
- GST_TYPE_V4L2SINK) ||
-#endif
- !gst_element_register (plugin, "v4l2radio", GST_RANK_NONE,
- GST_TYPE_V4L2RADIO) ||
- /* !gst_element_register (plugin, "v4l2jpegsrc", */
- /* GST_RANK_NONE, GST_TYPE_V4L2JPEGSRC) || */
- /* !gst_element_register (plugin, "v4l2mjpegsrc", */
- /* GST_RANK_NONE, GST_TYPE_V4L2MJPEGSRC) || */
- /* !gst_element_register (plugin, "v4l2mjpegsink", */
- /* GST_RANK_NONE, GST_TYPE_V4L2MJPEGSINK)) */
- FALSE)
- return FALSE;
-
-#ifdef ENABLE_NLS
- setlocale (LC_ALL, "");
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif /* ENABLE_NLS */
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "video4linux2",
- "elements for Video 4 Linux",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/v4l2/gstv4l2bufferpool.c b/wearable/sys/v4l2/gstv4l2bufferpool.c
deleted file mode 100644
index b81c6a4..0000000
--- a/wearable/sys/v4l2/gstv4l2bufferpool.c
+++ /dev/null
@@ -1,652 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- * 2009 Texas Instruments, Inc - http://www.ti.com/
- *
- * gstv4l2bufferpool.c V4L2 buffer pool class
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/mman.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "gst/video/video.h"
-
-#include <gstv4l2bufferpool.h>
-#include "gstv4l2src.h"
-#ifdef HAVE_EXPERIMENTAL
-#include "gstv4l2sink.h"
-#endif
-#include "v4l2_calls.h"
-#include "gst/gst-i18n-plugin.h"
-#include <gst/glib-compat-private.h>
-
-/* videodev2.h is not versioned and we can't easily check for the presence
- * of enum values at compile time, but the V4L2_CAP_VIDEO_OUTPUT_OVERLAY define
- * was added in the same commit as V4L2_FIELD_INTERLACED_{TB,BT} (b2787845) */
-#ifndef V4L2_CAP_VIDEO_OUTPUT_OVERLAY
-#define V4L2_FIELD_INTERLACED_TB 8
-#define V4L2_FIELD_INTERLACED_BT 9
-#endif
-
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
-#define GST_CAT_DEFAULT v4l2_debug
-
-
-/*
- * GstV4l2Buffer:
- */
-
-static GstBufferClass *v4l2buffer_parent_class = NULL;
-
-static void
-gst_v4l2_buffer_finalize (GstV4l2Buffer * buffer)
-{
- GstV4l2BufferPool *pool;
- gboolean resuscitated = FALSE;
- gint index;
-
- pool = buffer->pool;
-
- index = buffer->vbuffer.index;
-
- GST_LOG_OBJECT (pool->v4l2elem, "finalizing buffer %p %d", buffer, index);
-
- GST_V4L2_BUFFER_POOL_LOCK (pool);
- if (pool->running) {
- if (pool->requeuebuf) {
- if (!gst_v4l2_buffer_pool_qbuf (pool, buffer)) {
- GST_WARNING ("could not requeue buffer %p %d", buffer, index);
- } else {
- resuscitated = TRUE;
- }
- } else {
- resuscitated = TRUE;
- /* XXX double check this... I think it is ok to not synchronize this
- * w.r.t. destruction of the pool, since the buffer is still live and
- * the buffer holds a ref to the pool..
- */
- g_async_queue_push (pool->avail_buffers, buffer);
- }
- } else {
- GST_LOG_OBJECT (pool->v4l2elem, "the pool is shutting down");
- }
-
- if (resuscitated) {
- /* FIXME: check that the caps didn't change */
- GST_LOG_OBJECT (pool->v4l2elem, "reviving buffer %p, %d", buffer, index);
- gst_buffer_ref (GST_BUFFER (buffer));
- GST_BUFFER_SIZE (buffer) = 0;
- pool->buffers[index] = buffer;
- }
-
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
-
- if (!resuscitated) {
- GST_LOG_OBJECT (pool->v4l2elem,
- "buffer %p (data %p, len %u) not recovered, unmapping",
- buffer, GST_BUFFER_DATA (buffer), buffer->vbuffer.length);
- gst_mini_object_unref (GST_MINI_OBJECT (pool));
- v4l2_munmap ((void *) GST_BUFFER_DATA (buffer), buffer->vbuffer.length);
-
- GST_MINI_OBJECT_CLASS (v4l2buffer_parent_class)->finalize (GST_MINI_OBJECT
- (buffer));
- }
-}
-
-static void
-gst_v4l2_buffer_class_init (gpointer g_class, gpointer class_data)
-{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
-
- v4l2buffer_parent_class = g_type_class_peek_parent (g_class);
-
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- gst_v4l2_buffer_finalize;
-}
-
-GType
-gst_v4l2_buffer_get_type (void)
-{
- static GType _gst_v4l2_buffer_type;
-
- if (G_UNLIKELY (_gst_v4l2_buffer_type == 0)) {
- static const GTypeInfo v4l2_buffer_info = {
- sizeof (GstBufferClass),
- NULL,
- NULL,
- gst_v4l2_buffer_class_init,
- NULL,
- NULL,
- sizeof (GstV4l2Buffer),
- 0,
- NULL,
- NULL
- };
- _gst_v4l2_buffer_type = g_type_register_static (GST_TYPE_BUFFER,
- "GstV4l2Buffer", &v4l2_buffer_info, 0);
- }
- return _gst_v4l2_buffer_type;
-}
-
-static GstV4l2Buffer *
-gst_v4l2_buffer_new (GstV4l2BufferPool * pool, guint index, GstCaps * caps)
-{
- GstV4l2Buffer *ret;
- guint8 *data;
-
- ret = (GstV4l2Buffer *) gst_mini_object_new (GST_TYPE_V4L2_BUFFER);
-
- GST_LOG_OBJECT (pool->v4l2elem, "creating buffer %u, %p in pool %p", index,
- ret, pool);
-
- ret->pool =
- (GstV4l2BufferPool *) gst_mini_object_ref (GST_MINI_OBJECT (pool));
-
- ret->vbuffer.index = index;
- ret->vbuffer.type = pool->type;
- ret->vbuffer.memory = V4L2_MEMORY_MMAP;
-
- if (v4l2_ioctl (pool->video_fd, VIDIOC_QUERYBUF, &ret->vbuffer) < 0)
- goto querybuf_failed;
-
- GST_LOG_OBJECT (pool->v4l2elem, " index: %u", ret->vbuffer.index);
- GST_LOG_OBJECT (pool->v4l2elem, " type: %d", ret->vbuffer.type);
- GST_LOG_OBJECT (pool->v4l2elem, " bytesused: %u", ret->vbuffer.bytesused);
- GST_LOG_OBJECT (pool->v4l2elem, " flags: %08x", ret->vbuffer.flags);
- GST_LOG_OBJECT (pool->v4l2elem, " field: %d", ret->vbuffer.field);
- GST_LOG_OBJECT (pool->v4l2elem, " memory: %d", ret->vbuffer.memory);
- if (ret->vbuffer.memory == V4L2_MEMORY_MMAP)
- GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u",
- ret->vbuffer.m.offset);
- GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length);
- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input);
-
- data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length,
- PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd,
- ret->vbuffer.m.offset);
-
- if (data == MAP_FAILED)
- goto mmap_failed;
-
- GST_BUFFER_DATA (ret) = data;
- GST_BUFFER_SIZE (ret) = ret->vbuffer.length;
-
- GST_BUFFER_FLAG_SET (ret, GST_BUFFER_FLAG_READONLY);
-
- gst_buffer_set_caps (GST_BUFFER (ret), caps);
-
- return ret;
-
- /* ERRORS */
-querybuf_failed:
- {
- gint errnosave = errno;
-
- GST_WARNING ("Failed QUERYBUF: %s", g_strerror (errnosave));
- gst_buffer_unref (GST_BUFFER (ret));
- errno = errnosave;
- return NULL;
- }
-mmap_failed:
- {
- gint errnosave = errno;
-
- GST_WARNING ("Failed to mmap: %s", g_strerror (errnosave));
- gst_buffer_unref (GST_BUFFER (ret));
- errno = errnosave;
- return NULL;
- }
-}
-
-
-/*
- * GstV4l2BufferPool:
- */
-
-static GstMiniObjectClass *buffer_pool_parent_class = NULL;
-
-static void
-gst_v4l2_buffer_pool_finalize (GstV4l2BufferPool * pool)
-{
- g_mutex_free (pool->lock);
- pool->lock = NULL;
-
- g_async_queue_unref (pool->avail_buffers);
- pool->avail_buffers = NULL;
-
- if (pool->video_fd >= 0)
- v4l2_close (pool->video_fd);
-
- if (pool->buffers) {
- g_free (pool->buffers);
- pool->buffers = NULL;
- }
-
- GST_MINI_OBJECT_CLASS (buffer_pool_parent_class)->finalize (GST_MINI_OBJECT
- (pool));
-}
-
-static void
-gst_v4l2_buffer_pool_init (GstV4l2BufferPool * pool, gpointer g_class)
-{
- pool->lock = g_mutex_new ();
- pool->running = FALSE;
- pool->num_live_buffers = 0;
-}
-
-static void
-gst_v4l2_buffer_pool_class_init (gpointer g_class, gpointer class_data)
-{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
-
- buffer_pool_parent_class = g_type_class_peek_parent (g_class);
-
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- gst_v4l2_buffer_pool_finalize;
-}
-
-GType
-gst_v4l2_buffer_pool_get_type (void)
-{
- static GType _gst_v4l2_buffer_pool_type;
-
- if (G_UNLIKELY (_gst_v4l2_buffer_pool_type == 0)) {
- static const GTypeInfo v4l2_buffer_pool_info = {
- sizeof (GstMiniObjectClass),
- NULL,
- NULL,
- gst_v4l2_buffer_pool_class_init,
- NULL,
- NULL,
- sizeof (GstV4l2BufferPool),
- 0,
- (GInstanceInitFunc) gst_v4l2_buffer_pool_init,
- NULL
- };
- _gst_v4l2_buffer_pool_type = g_type_register_static (GST_TYPE_MINI_OBJECT,
- "GstV4l2BufferPool", &v4l2_buffer_pool_info, 0);
- }
- return _gst_v4l2_buffer_pool_type;
-}
-
-
-/* this is somewhat of a hack.. but better to keep the hack in
- * one place than copy/pasting it around..
- */
-static GstV4l2Object *
-get_v4l2_object (GstElement * v4l2elem)
-{
- GstV4l2Object *v4l2object = NULL;
- if (GST_IS_V4L2SRC (v4l2elem)) {
- v4l2object = (GST_V4L2SRC (v4l2elem))->v4l2object;
-#ifdef HAVE_EXPERIMENTAL
- } else if (GST_IS_V4L2SINK (v4l2elem)) {
- v4l2object = (GST_V4L2SINK (v4l2elem))->v4l2object;
-#endif
- } else {
- GST_ERROR_OBJECT (v4l2elem, "unknown v4l2 element");
- }
- return v4l2object;
-}
-
-
-
-/**
- * gst_v4l2_buffer_pool_new:
- * @v4l2elem: the v4l2 element (src or sink) that owns this pool
- * @fd: the video device file descriptor
- * @num_buffers: the requested number of buffers in the pool
- * @caps: the caps to set on the buffer
- * @requeuebuf: if %TRUE, and if the pool is still in the running state, a
- * buffer with no remaining references is immediately passed back to v4l2
- * (VIDIOC_QBUF), otherwise it is returned to the pool of available buffers
- * (which can be accessed via gst_v4l2_buffer_pool_get().
- *
- * Construct a new buffer pool.
- *
- * Returns: the new pool, use gst_v4l2_buffer_pool_destroy() to free resources
- */
-GstV4l2BufferPool *
-gst_v4l2_buffer_pool_new (GstElement * v4l2elem, gint fd, gint num_buffers,
- GstCaps * caps, gboolean requeuebuf, enum v4l2_buf_type type)
-{
- GstV4l2BufferPool *pool;
- gint n;
- struct v4l2_requestbuffers breq;
-
- pool = (GstV4l2BufferPool *) gst_mini_object_new (GST_TYPE_V4L2_BUFFER_POOL);
-
- pool->video_fd = v4l2_dup (fd);
- if (pool->video_fd < 0)
- goto dup_failed;
-
-
- /* first, lets request buffers, and see how many we can get: */
- GST_DEBUG_OBJECT (v4l2elem, "STREAMING, requesting %d MMAP buffers",
- num_buffers);
-
- memset (&breq, 0, sizeof (struct v4l2_requestbuffers));
- breq.type = type;
- breq.count = num_buffers;
- breq.memory = V4L2_MEMORY_MMAP;
-
- if (v4l2_ioctl (fd, VIDIOC_REQBUFS, &breq) < 0)
- goto reqbufs_failed;
-
- GST_LOG_OBJECT (v4l2elem, " count: %u", breq.count);
- GST_LOG_OBJECT (v4l2elem, " type: %d", breq.type);
- GST_LOG_OBJECT (v4l2elem, " memory: %d", breq.memory);
-
- if (breq.count < GST_V4L2_MIN_BUFFERS)
- goto no_buffers;
-
- if (num_buffers != breq.count) {
- GST_WARNING_OBJECT (v4l2elem, "using %u buffers instead", breq.count);
- num_buffers = breq.count;
- }
-
- pool->v4l2elem = v4l2elem;
- pool->requeuebuf = requeuebuf;
- pool->type = type;
- pool->buffer_count = num_buffers;
- pool->buffers = g_new0 (GstV4l2Buffer *, num_buffers);
- pool->avail_buffers = g_async_queue_new ();
-
- /* now, map the buffers: */
- for (n = 0; n < num_buffers; n++) {
- pool->buffers[n] = gst_v4l2_buffer_new (pool, n, caps);
- if (!pool->buffers[n])
- goto buffer_new_failed;
- pool->num_live_buffers++;
- g_async_queue_push (pool->avail_buffers, pool->buffers[n]);
- }
-
- return pool;
-
- /* ERRORS */
-dup_failed:
- {
- gint errnosave = errno;
-
- gst_mini_object_unref (GST_MINI_OBJECT (pool));
-
- errno = errnosave;
-
- return NULL;
- }
-reqbufs_failed:
- {
- GstV4l2Object *v4l2object = get_v4l2_object (v4l2elem);
- GST_ELEMENT_ERROR (v4l2elem, RESOURCE, READ,
- (_("Could not get buffers from device '%s'."),
- v4l2object->videodev),
- ("error requesting %d buffers: %s", num_buffers, g_strerror (errno)));
- return NULL;
- }
-no_buffers:
- {
- GstV4l2Object *v4l2object = get_v4l2_object (v4l2elem);
- GST_ELEMENT_ERROR (v4l2elem, RESOURCE, READ,
- (_("Could not get enough buffers from device '%s'."),
- v4l2object->videodev),
- ("we received %d from device '%s', we want at least %d",
- breq.count, v4l2object->videodev, GST_V4L2_MIN_BUFFERS));
- return NULL;
- }
-buffer_new_failed:
- {
- gint errnosave = errno;
-
- gst_v4l2_buffer_pool_destroy (pool);
-
- errno = errnosave;
-
- return NULL;
- }
-}
-
-/**
- * gst_v4l2_buffer_pool_destroy:
- * @pool: the pool
- *
- * Free all resources in the pool and the pool itself.
- */
-void
-gst_v4l2_buffer_pool_destroy (GstV4l2BufferPool * pool)
-{
- gint n;
-
- GST_V4L2_BUFFER_POOL_LOCK (pool);
- pool->running = FALSE;
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
-
- GST_DEBUG_OBJECT (pool->v4l2elem, "destroy pool");
-
- /* after this point, no more buffers will be queued or dequeued; no buffer
- * from pool->buffers that is NULL will be set to a buffer, and no buffer that
- * is not NULL will be pushed out. */
-
- /* miniobjects have no dispose, so they can't break ref-cycles, as buffers ref
- * the pool, we need to unref the buffer to properly finalize te pool */
- for (n = 0; n < pool->buffer_count; n++) {
- GstBuffer *buf;
-
- GST_V4L2_BUFFER_POOL_LOCK (pool);
- buf = GST_BUFFER (pool->buffers[n]);
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
-
- if (buf)
- /* we own the ref if the buffer is in pool->buffers; drop it. */
- gst_buffer_unref (buf);
- }
-
- gst_mini_object_unref (GST_MINI_OBJECT (pool));
-}
-
-/**
- * gst_v4l2_buffer_pool_get:
- * @pool: the "this" object
- * @blocking: should this call suspend until there is a buffer available
- * in the buffer pool?
- *
- * Get an available buffer in the pool
- */
-GstV4l2Buffer *
-gst_v4l2_buffer_pool_get (GstV4l2BufferPool * pool, gboolean blocking)
-{
- GstV4l2Buffer *buf;
-
- if (blocking) {
- buf = g_async_queue_pop (pool->avail_buffers);
- } else {
- buf = g_async_queue_try_pop (pool->avail_buffers);
- }
-
- if (buf) {
- GST_V4L2_BUFFER_POOL_LOCK (pool);
- GST_BUFFER_SIZE (buf) = buf->vbuffer.length;
- GST_BUFFER_FLAG_UNSET (buf, 0xffffffff);
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
- }
-
- pool->running = TRUE;
-
- return buf;
-}
-
-
-/**
- * gst_v4l2_buffer_pool_qbuf:
- * @pool: the pool
- * @buf: the buffer to queue
- *
- * Queue a buffer to the driver
- *
- * Returns: %TRUE for success
- */
-gboolean
-gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool * pool, GstV4l2Buffer * buf)
-{
- GST_LOG_OBJECT (pool->v4l2elem, "enqueue pool buffer %d", buf->vbuffer.index);
-
- if (v4l2_ioctl (pool->video_fd, VIDIOC_QBUF, &buf->vbuffer) < 0)
- return FALSE;
-
- pool->num_live_buffers--;
- GST_DEBUG_OBJECT (pool->v4l2elem, "num_live_buffers--: %d",
- pool->num_live_buffers);
-
- return TRUE;
-}
-
-/**
- * gst_v4l2_buffer_pool_dqbuf:
- * @pool: the pool
- *
- * Dequeue a buffer from the driver. Some generic error handling is done in
- * this function, but any error handling specific to v4l2src (capture) or
- * v4l2sink (output) can be done outside this function by checking 'errno'
- *
- * Returns: a buffer
- */
-GstV4l2Buffer *
-gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool * pool)
-{
- GstV4l2Object *v4l2object = get_v4l2_object (pool->v4l2elem);
- GstV4l2Buffer *pool_buffer;
- struct v4l2_buffer buffer;
-
- memset (&buffer, 0x00, sizeof (buffer));
- buffer.type = pool->type;
- buffer.memory = V4L2_MEMORY_MMAP;
-
-
- if (v4l2_ioctl (pool->video_fd, VIDIOC_DQBUF, &buffer) >= 0) {
-
- GST_V4L2_BUFFER_POOL_LOCK (pool);
-
- /* get our GstBuffer with that index from the pool, if the buffer was
- * outstanding we have a serious problem.
- */
- pool_buffer = pool->buffers[buffer.index];
-
- if (pool_buffer == NULL) {
- GST_ELEMENT_ERROR (pool->v4l2elem, RESOURCE, FAILED,
- (_("Failed trying to get video frames from device '%s'."),
- v4l2object->videodev),
- (_("No free buffers found in the pool at index %d."), buffer.index));
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
- return NULL;
- }
-
- GST_LOG_OBJECT (pool->v4l2elem,
- "grabbed frame %d (ix=%d), flags %08x, pool-ct=%d, buffer=%p",
- buffer.sequence, buffer.index, buffer.flags, pool->num_live_buffers,
- pool_buffer);
-
- pool->num_live_buffers++;
- GST_DEBUG_OBJECT (pool->v4l2elem, "num_live_buffers++: %d",
- pool->num_live_buffers);
-
- /* set top/bottom field first if v4l2_buffer has the information */
- if (buffer.field == V4L2_FIELD_INTERLACED_TB)
- GST_BUFFER_FLAG_SET (pool_buffer, GST_VIDEO_BUFFER_TFF);
- if (buffer.field == V4L2_FIELD_INTERLACED_BT)
- GST_BUFFER_FLAG_UNSET (pool_buffer, GST_VIDEO_BUFFER_TFF);
-
- /* this can change at every frame, esp. with jpeg */
- GST_BUFFER_SIZE (pool_buffer) = buffer.bytesused;
-
- GST_V4L2_BUFFER_POOL_UNLOCK (pool);
-
- return pool_buffer;
- }
-
-
- GST_WARNING_OBJECT (pool->v4l2elem,
- "problem grabbing frame %d (ix=%d), pool-ct=%d, buf.flags=%d",
- buffer.sequence, buffer.index,
- GST_MINI_OBJECT_REFCOUNT (pool), buffer.flags);
-
- switch (errno) {
- case EAGAIN:
- GST_WARNING_OBJECT (pool->v4l2elem,
- "Non-blocking I/O has been selected using O_NONBLOCK and"
- " no buffer was in the outgoing queue. device %s",
- v4l2object->videodev);
- break;
- case EINVAL:
- GST_ELEMENT_ERROR (pool->v4l2elem, RESOURCE, FAILED,
- (_("Failed trying to get video frames from device '%s'."),
- v4l2object->videodev),
- (_("The buffer type is not supported, or the index is out of bounds,"
- " or no buffers have been allocated yet, or the userptr"
- " or length are invalid. device %s"), v4l2object->videodev));
- break;
- case ENOMEM:
- GST_ELEMENT_ERROR (pool->v4l2elem, RESOURCE, FAILED,
- (_("Failed trying to get video frames from device '%s'. Not enough memory."), v4l2object->videodev), (_("insufficient memory to enqueue a user pointer buffer. device %s."), v4l2object->videodev));
- break;
- case EIO:
- GST_INFO_OBJECT (pool->v4l2elem,
- "VIDIOC_DQBUF failed due to an internal error."
- " Can also indicate temporary problems like signal loss."
- " Note the driver might dequeue an (empty) buffer despite"
- " returning an error, or even stop capturing."
- " device %s", v4l2object->videodev);
- /* have we de-queued a buffer ? */
- if (!(buffer.flags & (V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE))) {
- GST_DEBUG_OBJECT (pool->v4l2elem, "reenqueing buffer");
- /* FIXME ... should we do something here? */
- }
- break;
- case EINTR:
- GST_WARNING_OBJECT (pool->v4l2elem,
- "could not sync on a buffer on device %s", v4l2object->videodev);
- break;
- default:
- GST_WARNING_OBJECT (pool->v4l2elem,
- "Grabbing frame got interrupted on %s unexpectedly. %d: %s.",
- v4l2object->videodev, errno, g_strerror (errno));
- break;
- }
-
- return NULL;
-}
-
-/**
- * gst_v4l2_buffer_pool_available_buffers:
- * @pool: the pool
- *
- * Check the number of buffers available to the driver, ie. buffers that
- * have been QBUF'd but not yet DQBUF'd.
- *
- * Returns: the number of buffers available.
- */
-gint
-gst_v4l2_buffer_pool_available_buffers (GstV4l2BufferPool * pool)
-{
- return pool->buffer_count - pool->num_live_buffers;
-}
diff --git a/wearable/sys/v4l2/gstv4l2bufferpool.h b/wearable/sys/v4l2/gstv4l2bufferpool.h
deleted file mode 100644
index caad9ac..0000000
--- a/wearable/sys/v4l2/gstv4l2bufferpool.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- * 2009 Texas Instruments, Inc - http://www.ti.com/
- *
- * gstv4l2bufferpool.h V4L2 buffer pool class
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GSTV4L2BUFFER_H__
-#define __GSTV4L2BUFFER_H__
-
-#include <gst/gst.h>
-#include "v4l2_calls.h"
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2buffer_debug);
-
-G_BEGIN_DECLS
-
-
-GType gst_v4l2_buffer_get_type (void);
-#define GST_TYPE_V4L2_BUFFER (gst_v4l2_buffer_get_type())
-#define GST_IS_V4L2_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_BUFFER))
-#define GST_V4L2_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_BUFFER, GstV4l2Buffer))
-
-GType gst_v4l2_buffer_pool_get_type (void);
-#define GST_TYPE_V4L2_BUFFER_POOL (gst_v4l2_buffer_pool_get_type())
-#define GST_IS_V4L2_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_BUFFER_POOL))
-#define GST_V4L2_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_BUFFER_POOL, GstV4l2BufferPool))
-
-
-
-typedef struct _GstV4l2BufferPool GstV4l2BufferPool;
-typedef struct _GstV4l2Buffer GstV4l2Buffer;
-
-
-struct _GstV4l2BufferPool
-{
- GstMiniObject parent;
-
- GstElement *v4l2elem; /* the v4l2 src/sink that owns us.. maybe we should be owned by v4l2object? */
- gboolean requeuebuf; /* if true, unusued buffers are automatically re-QBUF'd */
- enum v4l2_buf_type type; /* V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_OUTPUT */
-
- GMutex *lock;
- gboolean running; /* with lock */
- gint num_live_buffers; /* number of buffers not with driver */
- GAsyncQueue* avail_buffers;/* pool of available buffers, not with the driver and which aren't held outside the bufferpool */
- gint video_fd; /* a dup(2) of the v4l2object's video_fd */
- guint buffer_count;
- GstV4l2Buffer **buffers;
-};
-
-struct _GstV4l2Buffer {
- GstBuffer buffer;
-
- struct v4l2_buffer vbuffer;
-
- /* FIXME: have GstV4l2Src* instead, as this has GstV4l2BufferPool* */
- /* FIXME: do we really want to fix this if GstV4l2Buffer/Pool is shared
- * between v4l2src and v4l2sink??
- */
- GstV4l2BufferPool *pool;
-};
-
-void gst_v4l2_buffer_pool_destroy (GstV4l2BufferPool * pool);
-GstV4l2BufferPool *gst_v4l2_buffer_pool_new (GstElement *v4l2elem, gint fd, gint num_buffers, GstCaps * caps, gboolean requeuebuf, enum v4l2_buf_type type);
-
-
-GstV4l2Buffer *gst_v4l2_buffer_pool_get (GstV4l2BufferPool *pool, gboolean blocking);
-gboolean gst_v4l2_buffer_pool_qbuf (GstV4l2BufferPool *pool, GstV4l2Buffer *buf);
-GstV4l2Buffer *gst_v4l2_buffer_pool_dqbuf (GstV4l2BufferPool *pool);
-
-gint gst_v4l2_buffer_pool_available_buffers (GstV4l2BufferPool *pool);
-
-
-#define GST_V4L2_BUFFER_POOL_LOCK(pool) g_mutex_lock ((pool)->lock)
-#define GST_V4L2_BUFFER_POOL_UNLOCK(pool) g_mutex_unlock ((pool)->lock)
-
-G_END_DECLS
-
-#endif /* __GSTV4L2BUFFER_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2colorbalance.c b/wearable/sys/v4l2/gstv4l2colorbalance.c
deleted file mode 100644
index f5cde09..0000000
--- a/wearable/sys/v4l2/gstv4l2colorbalance.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2colorbalance.c: color balance interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include "gstv4l2colorbalance.h"
-#include "gstv4l2object.h"
-
-GST_BOILERPLATE (GstV4l2ColorBalanceChannel,
- gst_v4l2_color_balance_channel,
- GstColorBalanceChannel, GST_TYPE_COLOR_BALANCE_CHANNEL);
-
-static void
-gst_v4l2_color_balance_channel_base_init (gpointer g_class)
-{
-}
-
-static void
-gst_v4l2_color_balance_channel_class_init (GstV4l2ColorBalanceChannelClass *
- klass)
-{
-}
-
-static void
-gst_v4l2_color_balance_channel_init (GstV4l2ColorBalanceChannel * channel,
- GstV4l2ColorBalanceChannelClass * klass)
-{
- channel->id = (guint32) - 1;
-}
-
-static G_GNUC_UNUSED gboolean
-gst_v4l2_color_balance_contains_channel (GstV4l2Object * v4l2object,
- GstV4l2ColorBalanceChannel * v4l2channel)
-{
- const GList *item;
-
- for (item = v4l2object->colors; item != NULL; item = item->next)
- if (item->data == v4l2channel)
- return TRUE;
-
- return FALSE;
-}
-
-const GList *
-gst_v4l2_color_balance_list_channels (GstV4l2Object * v4l2object)
-{
- return v4l2object->colors;
-}
-
-void
-gst_v4l2_color_balance_set_value (GstV4l2Object * v4l2object,
- GstColorBalanceChannel * channel, gint value)
-{
-
- GstV4l2ColorBalanceChannel *v4l2channel =
- GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
-
- /* assert that we're opened and that we're using a known item */
- g_return_if_fail (GST_V4L2_IS_OPEN (v4l2object));
- g_return_if_fail (gst_v4l2_color_balance_contains_channel (v4l2object,
- v4l2channel));
-
- gst_v4l2_set_attribute (v4l2object, v4l2channel->id, value);
-}
-
-gint
-gst_v4l2_color_balance_get_value (GstV4l2Object * v4l2object,
- GstColorBalanceChannel * channel)
-{
- GstV4l2ColorBalanceChannel *v4l2channel =
- GST_V4L2_COLOR_BALANCE_CHANNEL (channel);
- gint value;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), 0);
- g_return_val_if_fail (gst_v4l2_color_balance_contains_channel (v4l2object,
- v4l2channel), 0);
-
- if (!gst_v4l2_get_attribute (v4l2object, v4l2channel->id, &value))
- return 0;
-
- return value;
-}
diff --git a/wearable/sys/v4l2/gstv4l2colorbalance.h b/wearable/sys/v4l2/gstv4l2colorbalance.h
deleted file mode 100644
index 9e183f0..0000000
--- a/wearable/sys/v4l2/gstv4l2colorbalance.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2colorbalance.h: color balance interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2_COLOR_BALANCE_H__
-#define __GST_V4L2_COLOR_BALANCE_H__
-
-#include <gst/gst.h>
-#include <gst/interfaces/colorbalance.h>
-#include "v4l2_calls.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL \
- (gst_v4l2_color_balance_channel_get_type ())
-#define GST_V4L2_COLOR_BALANCE_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, \
- GstV4l2ColorBalanceChannel))
-#define GST_V4L2_COLOR_BALANCE_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, \
- GstV4l2ColorBalanceChannelClass))
-#define GST_IS_V4L2_COLOR_BALANCE_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL))
-#define GST_IS_V4L2_COLOR_BALANCE_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL))
-
-typedef struct _GstV4l2ColorBalanceChannel {
- GstColorBalanceChannel parent;
-
- guint32 id;
-} GstV4l2ColorBalanceChannel;
-
-typedef struct _GstV4l2ColorBalanceChannelClass {
- GstColorBalanceChannelClass parent;
-} GstV4l2ColorBalanceChannelClass;
-
-GType gst_v4l2_color_balance_channel_get_type (void);
-
-const GList * gst_v4l2_color_balance_list_channels (GstV4l2Object * v4l2object);
-
-void gst_v4l2_color_balance_set_value (GstV4l2Object * v4l2object,
- GstColorBalanceChannel * channel,
- gint value);
-
-gint gst_v4l2_color_balance_get_value (GstV4l2Object * v4l2object,
- GstColorBalanceChannel * channel);
-
-#define GST_IMPLEMENT_V4L2_COLOR_BALANCE_METHODS(Type, interface_as_function) \
- \
-static const GList * \
-interface_as_function ## _color_balance_list_channels (GstColorBalance * balance) \
-{ \
- Type *this = (Type*) balance; \
- return gst_v4l2_color_balance_list_channels(this->v4l2object); \
-} \
- \
-static void \
-interface_as_function ## _color_balance_set_value (GstColorBalance * balance, \
- GstColorBalanceChannel * channel, \
- gint value) \
-{ \
- Type *this = (Type*) balance; \
- gst_v4l2_color_balance_set_value(this->v4l2object, channel, value); \
-} \
- \
-static gint \
-interface_as_function ## _color_balance_get_value (GstColorBalance * balance, \
- GstColorBalanceChannel * channel) \
-{ \
- Type *this = (Type*) balance; \
- return gst_v4l2_color_balance_get_value(this->v4l2object, channel); \
-} \
- \
-static void \
-interface_as_function ## _color_balance_interface_init (GstColorBalanceClass * klass) \
-{ \
- GST_COLOR_BALANCE_TYPE (klass) = GST_COLOR_BALANCE_HARDWARE; \
- \
- /* default virtual functions */ \
- klass->list_channels = interface_as_function ## _color_balance_list_channels; \
- klass->set_value = interface_as_function ## _color_balance_set_value; \
- klass->get_value = interface_as_function ## _color_balance_get_value; \
-} \
-
-#endif /* __GST_V4L2_COLOR_BALANCE_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2object.c b/wearable/sys/v4l2/gstv4l2object.c
deleted file mode 100644
index 81d1cb7..0000000
--- a/wearable/sys/v4l2/gstv4l2object.c
+++ /dev/null
@@ -1,2247 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2object.c: base class for V4L2 elements
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version. This library is distributed in the hope
- * that it will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Library General Public License for more details.
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#ifdef HAVE_GUDEV
-#include <gudev/gudev.h>
-#endif
-
-#include "v4l2_calls.h"
-#include "gstv4l2tuner.h"
-#ifdef HAVE_XVIDEO
-#include "gstv4l2xoverlay.h"
-#endif
-#include "gstv4l2colorbalance.h"
-
-#include "gst/gst-i18n-plugin.h"
-
-/* videodev2.h is not versioned and we can't easily check for the presence
- * of enum values at compile time, but the V4L2_CAP_VIDEO_OUTPUT_OVERLAY define
- * was added in the same commit as V4L2_FIELD_INTERLACED_{TB,BT} (b2787845) */
-#ifndef V4L2_CAP_VIDEO_OUTPUT_OVERLAY
-#define V4L2_FIELD_INTERLACED_TB 8
-#define V4L2_FIELD_INTERLACED_BT 9
-#endif
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
-#define GST_CAT_DEFAULT v4l2_debug
-
-
-#define DEFAULT_PROP_DEVICE_NAME NULL
-#define DEFAULT_PROP_DEVICE_FD -1
-#define DEFAULT_PROP_FLAGS 0
-#define DEFAULT_PROP_TV_NORM 0
-#define DEFAULT_PROP_CHANNEL NULL
-#define DEFAULT_PROP_FREQUENCY 0
-
-enum
-{
- PROP_0,
- V4L2_STD_OBJECT_PROPS,
-};
-
-G_LOCK_DEFINE_STATIC (probe_lock);
-
-const GList *
-gst_v4l2_probe_get_properties (GstPropertyProbe * probe)
-{
- GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
- static GList *list = NULL;
-
- /* well, not perfect, but better than no locking at all.
- * In the worst case we leak a list node, so who cares? */
- G_LOCK (probe_lock);
-
- if (!list) {
- list = g_list_append (NULL, g_object_class_find_property (klass, "device"));
- }
-
- G_UNLOCK (probe_lock);
-
- return list;
-}
-
-static gboolean init = FALSE;
-static GList *devices = NULL;
-
-#ifdef HAVE_GUDEV
-static gboolean
-gst_v4l2_class_probe_devices_with_udev (GstElementClass * klass, gboolean check,
- GList ** klass_devices)
-{
- GUdevClient *client = NULL;
- GList *item;
-
- if (!check) {
- while (devices) {
- gchar *device = devices->data;
- devices = g_list_remove (devices, device);
- g_free (device);
- }
-
- GST_INFO ("Enumerating video4linux devices from udev");
- client = g_udev_client_new (NULL);
- if (!client) {
- GST_WARNING ("Failed to initialize gudev client");
- goto finish;
- }
-
- item = g_udev_client_query_by_subsystem (client, "video4linux");
- while (item) {
- GUdevDevice *device = item->data;
- gchar *devnode = g_strdup (g_udev_device_get_device_file (device));
- gint api = g_udev_device_get_property_as_int (device, "ID_V4L_VERSION");
- GST_INFO ("Found new device: %s, API: %d", devnode, api);
- /* Append v4l2 devices only. If api is 0 probably v4l_id has
- been stripped out of the current udev installation, append
- anyway */
- if (api == 0) {
- GST_WARNING
- ("Couldn't retrieve ID_V4L_VERSION, silly udev installation?");
- }
- if ((api == 2 || api == 0)) {
- devices = g_list_append (devices, devnode);
- } else {
- g_free (devnode);
- }
- g_object_unref (device);
- item = item->next;
- }
- g_list_free (item);
- init = TRUE;
- }
-
-finish:
- if (client) {
- g_object_unref (client);
- }
-
- *klass_devices = devices;
-
- return init;
-}
-#endif /* HAVE_GUDEV */
-
-static gboolean
-gst_v4l2_class_probe_devices (GstElementClass * klass, gboolean check,
- GList ** klass_devices)
-{
- if (!check) {
- const gchar *dev_base[] = { "/dev/video", "/dev/v4l2/video", NULL };
- gint base, n, fd;
-
- while (devices) {
- gchar *device = devices->data;
- devices = g_list_remove (devices, device);
- g_free (device);
- }
-
- /*
- * detect /dev entries
- */
- for (n = 0; n < 64; n++) {
- for (base = 0; dev_base[base] != NULL; base++) {
- struct stat s;
- gchar *device = g_strdup_printf ("%s%d",
- dev_base[base],
- n);
-
- /*
- * does the /dev/ entry exist at all?
- */
- if (stat (device, &s) == 0) {
- /*
- * yes: is a device attached?
- */
- if (S_ISCHR (s.st_mode)) {
-
- if ((fd = open (device, O_RDWR | O_NONBLOCK)) > 0 || errno == EBUSY) {
- if (fd > 0)
- close (fd);
-
- devices = g_list_append (devices, device);
- break;
- }
- }
- }
- g_free (device);
- }
- }
- init = TRUE;
- }
-
- *klass_devices = devices;
-
- return init;
-}
-
-void
-gst_v4l2_probe_probe_property (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec, GList ** klass_devices)
-{
- GstElementClass *klass = GST_ELEMENT_GET_CLASS (probe);
-
- switch (prop_id) {
- case PROP_DEVICE:
-#ifdef HAVE_GUDEV
- if (!gst_v4l2_class_probe_devices_with_udev (klass, FALSE, klass_devices))
- gst_v4l2_class_probe_devices (klass, FALSE, klass_devices);
-#else /* !HAVE_GUDEV */
- gst_v4l2_class_probe_devices (klass, FALSE, klass_devices);
-#endif /* HAVE_GUDEV */
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
-}
-
-gboolean
-gst_v4l2_probe_needs_probe (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec, GList ** klass_devices)
-{
- GstElementClass *klass = GST_ELEMENT_GET_CLASS (probe);
- gboolean ret = FALSE;
-
- switch (prop_id) {
- case PROP_DEVICE:
-#ifdef HAVE_GUDEV
- ret =
- !gst_v4l2_class_probe_devices_with_udev (klass, FALSE, klass_devices);
-#else /* !HAVE_GUDEV */
- ret = !gst_v4l2_class_probe_devices (klass, TRUE, klass_devices);
-#endif /* HAVE_GUDEV */
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
- return ret;
-}
-
-static GValueArray *
-gst_v4l2_class_list_devices (GstElementClass * klass, GList ** klass_devices)
-{
- GValueArray *array;
- GValue value = { 0 };
- GList *item;
-
- if (!*klass_devices)
- return NULL;
-
- array = g_value_array_new (g_list_length (*klass_devices));
- item = *klass_devices;
- g_value_init (&value, G_TYPE_STRING);
- while (item) {
- gchar *device = item->data;
-
- g_value_set_string (&value, device);
- g_value_array_append (array, &value);
-
- item = item->next;
- }
- g_value_unset (&value);
-
- return array;
-}
-
-GValueArray *
-gst_v4l2_probe_get_values (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec, GList ** klass_devices)
-{
- GstElementClass *klass = GST_ELEMENT_GET_CLASS (probe);
- GValueArray *array = NULL;
-
- switch (prop_id) {
- case PROP_DEVICE:
- array = gst_v4l2_class_list_devices (klass, klass_devices);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- break;
- }
-
- return array;
-}
-
-#define GST_TYPE_V4L2_DEVICE_FLAGS (gst_v4l2_device_get_type ())
-static GType
-gst_v4l2_device_get_type (void)
-{
- static GType v4l2_device_type = 0;
-
- if (v4l2_device_type == 0) {
- static const GFlagsValue values[] = {
- {V4L2_CAP_VIDEO_CAPTURE, "Device supports video capture", "capture"},
- {V4L2_CAP_VIDEO_OUTPUT, "Device supports video playback", "output"},
- {V4L2_CAP_VIDEO_OVERLAY, "Device supports video overlay", "overlay"},
-
- {V4L2_CAP_VBI_CAPTURE, "Device supports the VBI capture", "vbi-capture"},
- {V4L2_CAP_VBI_OUTPUT, "Device supports the VBI output", "vbi-output"},
-
- {V4L2_CAP_TUNER, "Device has a tuner or modulator", "tuner"},
- {V4L2_CAP_AUDIO, "Device has audio inputs or outputs", "audio"},
-
- {0, NULL, NULL}
- };
-
- v4l2_device_type =
- g_flags_register_static ("GstV4l2DeviceTypeFlags", values);
- }
-
- return v4l2_device_type;
-}
-
-#define GST_TYPE_V4L2_TV_NORM (gst_v4l2_tv_norm_get_type ())
-static GType
-gst_v4l2_tv_norm_get_type (void)
-{
- static GType v4l2_tv_norm = 0;
-
- if (!v4l2_tv_norm) {
- static const GEnumValue tv_norms[] = {
- {0, "none", "none"},
-
- {V4L2_STD_NTSC, "NTSC", "NTSC"},
- {V4L2_STD_NTSC_M, "NTSC-M", "NTSC-M"},
- {V4L2_STD_NTSC_M_JP, "NTSC-M-JP", "NTSC-M-JP"},
- {V4L2_STD_NTSC_M_KR, "NTSC-M-KR", "NTSC-M-KR"},
- {V4L2_STD_NTSC_443, "NTSC-443", "NTSC-443"},
-
- {V4L2_STD_PAL, "PAL", "PAL"},
- {V4L2_STD_PAL_BG, "PAL-BG", "PAL-BG"},
- {V4L2_STD_PAL_B, "PAL-B", "PAL-B"},
- {V4L2_STD_PAL_B1, "PAL-B1", "PAL-B1"},
- {V4L2_STD_PAL_G, "PAL-G", "PAL-G"},
- {V4L2_STD_PAL_H, "PAL-H", "PAL-H"},
- {V4L2_STD_PAL_I, "PAL-I", "PAL-I"},
- {V4L2_STD_PAL_DK, "PAL-DK", "PAL-DK"},
- {V4L2_STD_PAL_D, "PAL-D", "PAL-D"},
- {V4L2_STD_PAL_D1, "PAL-D1", "PAL-D1"},
- {V4L2_STD_PAL_K, "PAL-K", "PAL-K"},
- {V4L2_STD_PAL_M, "PAL-M", "PAL-M"},
- {V4L2_STD_PAL_N, "PAL-N", "PAL-N"},
- {V4L2_STD_PAL_Nc, "PAL-Nc", "PAL-Nc"},
- {V4L2_STD_PAL_60, "PAL-60", "PAL-60"},
-
- {V4L2_STD_SECAM, "SECAM", "SECAM"},
- {V4L2_STD_SECAM_B, "SECAM-B", "SECAM-B"},
- {V4L2_STD_SECAM_G, "SECAM-G", "SECAM-G"},
- {V4L2_STD_SECAM_H, "SECAM-H", "SECAM-H"},
- {V4L2_STD_SECAM_DK, "SECAM-DK", "SECAM-DK"},
- {V4L2_STD_SECAM_D, "SECAM-D", "SECAM-D"},
- {V4L2_STD_SECAM_K, "SECAM-K", "SECAM-K"},
- {V4L2_STD_SECAM_K1, "SECAM-K1", "SECAM-K1"},
- {V4L2_STD_SECAM_L, "SECAM-L", "SECAM-L"},
- {V4L2_STD_SECAM_LC, "SECAM-Lc", "SECAM-Lc"},
-
- {0, NULL, NULL}
- };
-
- v4l2_tv_norm = g_enum_register_static ("V4L2_TV_norms", tv_norms);
- }
-
- return v4l2_tv_norm;
-}
-
-void
-gst_v4l2_object_install_properties_helper (GObjectClass * gobject_class,
- const char *default_device)
-{
- g_object_class_install_property (gobject_class, PROP_DEVICE,
- g_param_spec_string ("device", "Device", "Device location",
- default_device, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
- g_param_spec_string ("device-name", "Device name",
- "Name of the device", DEFAULT_PROP_DEVICE_NAME,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_DEVICE_FD,
- g_param_spec_int ("device-fd", "File descriptor",
- "File descriptor of the device", -1, G_MAXINT, DEFAULT_PROP_DEVICE_FD,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_FLAGS,
- g_param_spec_flags ("flags", "Flags", "Device type flags",
- GST_TYPE_V4L2_DEVICE_FLAGS, DEFAULT_PROP_FLAGS,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstV4l2Src:brightness
- *
- * Picture brightness, or more precisely, the black level
- *
- * Since: 0.10.26
- */
- g_object_class_install_property (gobject_class, PROP_BRIGHTNESS,
- g_param_spec_int ("brightness", "Brightness",
- "Picture brightness, or more precisely, the black level", G_MININT,
- G_MAXINT, 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
- /**
- * GstV4l2Src:contrast
- *
- * Picture contrast or luma gain
- *
- * Since: 0.10.26
- */
- g_object_class_install_property (gobject_class, PROP_CONTRAST,
- g_param_spec_int ("contrast", "Contrast",
- "Picture contrast or luma gain", G_MININT,
- G_MAXINT, 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
- /**
- * GstV4l2Src:saturation
- *
- * Picture color saturation or chroma gain
- *
- * Since: 0.10.26
- */
- g_object_class_install_property (gobject_class, PROP_SATURATION,
- g_param_spec_int ("saturation", "Saturation",
- "Picture color saturation or chroma gain", G_MININT,
- G_MAXINT, 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
- /**
- * GstV4l2Src:hue
- *
- * Hue or color balance
- *
- * Since: 0.10.26
- */
- g_object_class_install_property (gobject_class, PROP_HUE,
- g_param_spec_int ("hue", "Hue",
- "Hue or color balance", G_MININT,
- G_MAXINT, 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
-
- /**
- * GstV4l2Src:norm
- *
- * TV norm
- *
- * Since: 0.10.31
- */
- g_object_class_install_property (gobject_class, PROP_TV_NORM,
- g_param_spec_enum ("norm", "TV norm",
- "video standard",
- GST_TYPE_V4L2_TV_NORM, DEFAULT_PROP_TV_NORM,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-}
-
-GstV4l2Object *
-gst_v4l2_object_new (GstElement * element,
- enum v4l2_buf_type type,
- const char *default_device,
- GstV4l2GetInOutFunction get_in_out_func,
- GstV4l2SetInOutFunction set_in_out_func,
- GstV4l2UpdateFpsFunction update_fps_func)
-{
- GstV4l2Object *v4l2object;
-
- /*
- * some default values
- */
- v4l2object = g_new0 (GstV4l2Object, 1);
-
- v4l2object->type = type;
- v4l2object->formats = NULL;
-
- v4l2object->element = element;
- v4l2object->get_in_out_func = get_in_out_func;
- v4l2object->set_in_out_func = set_in_out_func;
- v4l2object->update_fps_func = update_fps_func;
-
- v4l2object->video_fd = -1;
- v4l2object->poll = gst_poll_new (TRUE);
- v4l2object->buffer = NULL;
- v4l2object->videodev = g_strdup (default_device);
-
- v4l2object->norms = NULL;
- v4l2object->channels = NULL;
- v4l2object->colors = NULL;
-
- v4l2object->xwindow_id = 0;
-
- return v4l2object;
-}
-
-static gboolean gst_v4l2_object_clear_format_list (GstV4l2Object * v4l2object);
-
-
-void
-gst_v4l2_object_destroy (GstV4l2Object * v4l2object)
-{
- g_return_if_fail (v4l2object != NULL);
-
- if (v4l2object->videodev)
- g_free (v4l2object->videodev);
-
- if (v4l2object->poll)
- gst_poll_free (v4l2object->poll);
-
- if (v4l2object->channel)
- g_free (v4l2object->channel);
-
- if (v4l2object->formats) {
- gst_v4l2_object_clear_format_list (v4l2object);
- }
-
- g_free (v4l2object);
-}
-
-
-static gboolean
-gst_v4l2_object_clear_format_list (GstV4l2Object * v4l2object)
-{
- g_slist_foreach (v4l2object->formats, (GFunc) g_free, NULL);
- g_slist_free (v4l2object->formats);
- v4l2object->formats = NULL;
-
- return TRUE;
-}
-
-static gint
-gst_v4l2_object_prop_to_cid (guint prop_id)
-{
- gint cid = -1;
-
- switch (prop_id) {
- case PROP_BRIGHTNESS:
- cid = V4L2_CID_BRIGHTNESS;
- break;
- case PROP_CONTRAST:
- cid = V4L2_CID_CONTRAST;
- break;
- case PROP_SATURATION:
- cid = V4L2_CID_SATURATION;
- break;
- case PROP_HUE:
- cid = V4L2_CID_HUE;
- break;
- default:
- GST_WARNING ("unmapped property id: %d", prop_id);
- }
- return cid;
-}
-
-
-gboolean
-gst_v4l2_object_set_property_helper (GstV4l2Object * v4l2object,
- guint prop_id, const GValue * value, GParamSpec * pspec)
-{
- switch (prop_id) {
- case PROP_DEVICE:
- g_free (v4l2object->videodev);
- v4l2object->videodev = g_value_dup_string (value);
- break;
- case PROP_BRIGHTNESS:
- case PROP_CONTRAST:
- case PROP_SATURATION:
- case PROP_HUE:
- {
- gint cid = gst_v4l2_object_prop_to_cid (prop_id);
-
- if (cid != -1) {
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- gst_v4l2_set_attribute (v4l2object, cid, g_value_get_int (value));
- }
- }
- return TRUE;
- }
- break;
- case PROP_TV_NORM:
- v4l2object->tv_norm = g_value_get_enum (value);
- break;
-#if 0
- case PROP_CHANNEL:
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- GstTuner *tuner = GST_TUNER (v4l2object->element);
- GstTunerChannel *channel = gst_tuner_find_channel_by_name (tuner,
- (gchar *) g_value_get_string (value));
-
- if (channel) {
- /* like gst_tuner_set_channel (tuner, channel)
- without g_object_notify */
- gst_v4l2_tuner_set_channel (v4l2object, channel);
- }
- } else {
- g_free (v4l2object->channel);
- v4l2object->channel = g_value_dup_string (value);
- }
- break;
- case PROP_FREQUENCY:
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- GstTuner *tuner = GST_TUNER (v4l2object->element);
- GstTunerChannel *channel = gst_tuner_get_channel (tuner);
-
- if (channel &&
- GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- /* like
- gst_tuner_set_frequency (tuner, channel, g_value_get_ulong (value))
- without g_object_notify */
- gst_v4l2_tuner_set_frequency (v4l2object, channel,
- g_value_get_ulong (value));
- }
- } else {
- v4l2object->frequency = g_value_get_ulong (value);
- }
- break;
-#endif
- default:
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-
-gboolean
-gst_v4l2_object_get_property_helper (GstV4l2Object * v4l2object,
- guint prop_id, GValue * value, GParamSpec * pspec)
-{
- switch (prop_id) {
- case PROP_DEVICE:
- g_value_set_string (value, v4l2object->videodev);
- break;
- case PROP_DEVICE_NAME:
- {
- const guchar *new = NULL;
-
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- new = v4l2object->vcap.card;
- } else if (gst_v4l2_open (v4l2object)) {
- new = v4l2object->vcap.card;
- gst_v4l2_close (v4l2object);
- }
- g_value_set_string (value, (gchar *) new);
- break;
- }
- case PROP_DEVICE_FD:
- {
- if (GST_V4L2_IS_OPEN (v4l2object))
- g_value_set_int (value, v4l2object->video_fd);
- else
- g_value_set_int (value, DEFAULT_PROP_DEVICE_FD);
- break;
- }
- case PROP_FLAGS:
- {
- guint flags = 0;
-
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- flags |= v4l2object->vcap.capabilities &
- (V4L2_CAP_VIDEO_CAPTURE |
- V4L2_CAP_VIDEO_OUTPUT |
- V4L2_CAP_VIDEO_OVERLAY |
- V4L2_CAP_VBI_CAPTURE |
- V4L2_CAP_VBI_OUTPUT | V4L2_CAP_TUNER | V4L2_CAP_AUDIO);
- }
- g_value_set_flags (value, flags);
- break;
- }
- case PROP_BRIGHTNESS:
- case PROP_CONTRAST:
- case PROP_SATURATION:
- case PROP_HUE:
- {
- gint cid = gst_v4l2_object_prop_to_cid (prop_id);
-
- if (cid != -1) {
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- gint v;
- if (gst_v4l2_get_attribute (v4l2object, cid, &v)) {
- g_value_set_int (value, v);
- }
- }
- }
- return TRUE;
- }
- break;
- case PROP_TV_NORM:
- g_value_set_enum (value, v4l2object->tv_norm);
- break;
- default:
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-static void
-gst_v4l2_set_defaults (GstV4l2Object * v4l2object)
-{
- GstTunerNorm *norm = NULL;
- GstTunerChannel *channel = NULL;
- GstTuner *tuner;
-
- if (!GST_IS_TUNER (v4l2object->element))
- return;
-
- tuner = GST_TUNER (v4l2object->element);
-
- if (v4l2object->tv_norm)
- norm = gst_v4l2_tuner_get_norm_by_std_id (v4l2object, v4l2object->tv_norm);
- GST_DEBUG_OBJECT (v4l2object->element, "tv_norm=0x%" G_GINT64_MODIFIER "x, "
- "norm=%p", (guint64) v4l2object->tv_norm, norm);
- if (norm) {
- gst_tuner_set_norm (tuner, norm);
- } else {
- norm =
- GST_TUNER_NORM (gst_tuner_get_norm (GST_TUNER (v4l2object->element)));
- if (norm) {
- v4l2object->tv_norm =
- gst_v4l2_tuner_get_std_id_by_norm (v4l2object, norm);
- gst_tuner_norm_changed (tuner, norm);
- }
- }
-
- if (v4l2object->channel)
- channel = gst_tuner_find_channel_by_name (tuner, v4l2object->channel);
- if (channel) {
- gst_tuner_set_channel (tuner, channel);
- } else {
- channel =
- GST_TUNER_CHANNEL (gst_tuner_get_channel (GST_TUNER
- (v4l2object->element)));
- if (channel) {
- g_free (v4l2object->channel);
- v4l2object->channel = g_strdup (channel->label);
- gst_tuner_channel_changed (tuner, channel);
- }
- }
-
- if (channel
- && GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- if (v4l2object->frequency != 0) {
- gst_tuner_set_frequency (tuner, channel, v4l2object->frequency);
- } else {
- v4l2object->frequency = gst_tuner_get_frequency (tuner, channel);
- if (v4l2object->frequency == 0) {
- /* guess */
- gst_tuner_set_frequency (tuner, channel, 1000);
- } else {
- }
- }
- }
-}
-
-gboolean
-gst_v4l2_object_start (GstV4l2Object * v4l2object)
-{
- if (gst_v4l2_open (v4l2object))
- gst_v4l2_set_defaults (v4l2object);
- else
- return FALSE;
-
-#ifdef HAVE_XVIDEO
- gst_v4l2_xoverlay_start (v4l2object);
-#endif
-
- return TRUE;
-}
-
-gboolean
-gst_v4l2_object_stop (GstV4l2Object * v4l2object)
-{
-#ifdef HAVE_XVIDEO
- gst_v4l2_xoverlay_stop (v4l2object);
-#endif
-
- if (!gst_v4l2_close (v4l2object))
- return FALSE;
-
- if (v4l2object->formats) {
- gst_v4l2_object_clear_format_list (v4l2object);
- }
-
- return TRUE;
-}
-
-
-/*
- * common format / caps utilities:
- */
-typedef struct
-{
- guint32 format;
- gboolean dimensions;
-} GstV4L2FormatDesc;
-
-static const GstV4L2FormatDesc gst_v4l2_formats[] = {
- /* from Linux 2.6.15 videodev2.h */
- {V4L2_PIX_FMT_RGB332, TRUE},
- {V4L2_PIX_FMT_RGB555, TRUE},
- {V4L2_PIX_FMT_RGB565, TRUE},
- {V4L2_PIX_FMT_RGB555X, TRUE},
- {V4L2_PIX_FMT_RGB565X, TRUE},
- {V4L2_PIX_FMT_BGR24, TRUE},
- {V4L2_PIX_FMT_RGB24, TRUE},
- {V4L2_PIX_FMT_BGR32, TRUE},
- {V4L2_PIX_FMT_RGB32, TRUE},
- {V4L2_PIX_FMT_GREY, TRUE},
- {V4L2_PIX_FMT_YVU410, TRUE},
- {V4L2_PIX_FMT_YVU420, TRUE},
- {V4L2_PIX_FMT_YUYV, TRUE},
- {V4L2_PIX_FMT_UYVY, TRUE},
- {V4L2_PIX_FMT_YUV422P, TRUE},
- {V4L2_PIX_FMT_YUV411P, TRUE},
- {V4L2_PIX_FMT_Y41P, TRUE},
-
- /* two planes -- one Y, one Cr + Cb interleaved */
- {V4L2_PIX_FMT_NV12, TRUE},
- {V4L2_PIX_FMT_NV21, TRUE},
-
- /* The following formats are not defined in the V4L2 specification */
- {V4L2_PIX_FMT_YUV410, TRUE},
- {V4L2_PIX_FMT_YUV420, TRUE},
- {V4L2_PIX_FMT_YYUV, TRUE},
- {V4L2_PIX_FMT_HI240, TRUE},
-
- /* see http://www.siliconimaging.com/RGB%20Bayer.htm */
-#ifdef V4L2_PIX_FMT_SBGGR8
- {V4L2_PIX_FMT_SBGGR8, TRUE},
-#endif
-
- /* compressed formats */
- {V4L2_PIX_FMT_MJPEG, TRUE},
- {V4L2_PIX_FMT_JPEG, TRUE},
-#ifdef V4L2_PIX_FMT_PJPG
- {V4L2_PIX_FMT_PJPG, TRUE},
-#endif
- {V4L2_PIX_FMT_DV, TRUE},
- {V4L2_PIX_FMT_MPEG, FALSE},
-
- /* Vendor-specific formats */
- {V4L2_PIX_FMT_WNVA, TRUE},
-
-#ifdef V4L2_PIX_FMT_SN9C10X
- {V4L2_PIX_FMT_SN9C10X, TRUE},
-#endif
-#ifdef V4L2_PIX_FMT_PWC1
- {V4L2_PIX_FMT_PWC1, TRUE},
-#endif
-#ifdef V4L2_PIX_FMT_PWC2
- {V4L2_PIX_FMT_PWC2, TRUE},
-#endif
-#ifdef V4L2_PIX_FMT_YVYU
- {V4L2_PIX_FMT_YVYU, TRUE},
-#endif
-};
-
-#define GST_V4L2_FORMAT_COUNT (G_N_ELEMENTS (gst_v4l2_formats))
-
-
-static struct v4l2_fmtdesc *
-gst_v4l2_object_get_format_from_fourcc (GstV4l2Object * v4l2object,
- guint32 fourcc)
-{
- struct v4l2_fmtdesc *fmt;
- GSList *walk;
-
- if (fourcc == 0)
- return NULL;
-
- walk = gst_v4l2_object_get_format_list (v4l2object);
- while (walk) {
- fmt = (struct v4l2_fmtdesc *) walk->data;
- if (fmt->pixelformat == fourcc)
- return fmt;
- /* special case for jpeg */
- if (fmt->pixelformat == V4L2_PIX_FMT_MJPEG ||
- fmt->pixelformat == V4L2_PIX_FMT_JPEG
-#ifdef V4L2_PIX_FMT_PJPG
- || fmt->pixelformat == V4L2_PIX_FMT_PJPG
-#endif
- ) {
- if (fourcc == V4L2_PIX_FMT_JPEG || fourcc == V4L2_PIX_FMT_MJPEG
-#ifdef V4L2_PIX_FMT_PJPG
- || fourcc == V4L2_PIX_FMT_PJPG
-#endif
- ) {
- return fmt;
- }
- }
- walk = g_slist_next (walk);
- }
-
- return NULL;
-}
-
-
-
-/* complete made up ranking, the values themselves are meaningless */
-/* These ranks MUST be X such that X<<15 fits on a signed int - see
- the comment at the end of gst_v4l2_object_format_get_rank. */
-#define YUV_BASE_RANK 1000
-#define JPEG_BASE_RANK 500
-#define DV_BASE_RANK 200
-#define RGB_BASE_RANK 100
-#define YUV_ODD_BASE_RANK 50
-#define RGB_ODD_BASE_RANK 25
-#define BAYER_BASE_RANK 15
-#define S910_BASE_RANK 10
-#define GREY_BASE_RANK 5
-#define PWC_BASE_RANK 1
-
-/* This flag is already used by libv4l2 although
- * it was added to the Linux kernel in 2.6.32
- */
-#ifndef V4L2_FMT_FLAG_EMULATED
-#define V4L2_FMT_FLAG_EMULATED 0x0002
-#endif
-
-static gint
-gst_v4l2_object_format_get_rank (const struct v4l2_fmtdesc *fmt)
-{
- guint32 fourcc = fmt->pixelformat;
- gboolean emulated = ((fmt->flags & V4L2_FMT_FLAG_EMULATED) != 0);
- gint rank = 0;
-
- switch (fourcc) {
- case V4L2_PIX_FMT_MJPEG:
-#ifdef V4L2_PIX_FMT_PJPG
- case V4L2_PIX_FMT_PJPG:
- rank = JPEG_BASE_RANK;
- break;
-#endif
- case V4L2_PIX_FMT_JPEG:
- rank = JPEG_BASE_RANK + 1;
- break;
- case V4L2_PIX_FMT_MPEG: /* MPEG */
- rank = JPEG_BASE_RANK + 2;
- break;
-
- case V4L2_PIX_FMT_RGB332:
- case V4L2_PIX_FMT_RGB555:
- case V4L2_PIX_FMT_RGB555X:
- case V4L2_PIX_FMT_RGB565:
- case V4L2_PIX_FMT_RGB565X:
- rank = RGB_ODD_BASE_RANK;
- break;
-
- case V4L2_PIX_FMT_RGB24:
- case V4L2_PIX_FMT_BGR24:
- rank = RGB_BASE_RANK - 1;
- break;
-
- case V4L2_PIX_FMT_RGB32:
- case V4L2_PIX_FMT_BGR32:
- rank = RGB_BASE_RANK;
- break;
-
- case V4L2_PIX_FMT_GREY: /* 8 Greyscale */
- rank = GREY_BASE_RANK;
- break;
-
- case V4L2_PIX_FMT_NV12: /* 12 Y/CbCr 4:2:0 */
- case V4L2_PIX_FMT_NV21: /* 12 Y/CrCb 4:2:0 */
- case V4L2_PIX_FMT_YYUV: /* 16 YUV 4:2:2 */
- case V4L2_PIX_FMT_HI240: /* 8 8-bit color */
- rank = YUV_ODD_BASE_RANK;
- break;
-
- case V4L2_PIX_FMT_YVU410: /* YVU9, 9 bits per pixel */
- rank = YUV_BASE_RANK + 3;
- break;
- case V4L2_PIX_FMT_YUV410: /* YUV9, 9 bits per pixel */
- rank = YUV_BASE_RANK + 2;
- break;
- case V4L2_PIX_FMT_YUV420: /* I420, 12 bits per pixel */
- rank = YUV_BASE_RANK + 7;
- break;
- case V4L2_PIX_FMT_YUYV: /* YUY2, 16 bits per pixel */
- rank = YUV_BASE_RANK + 10;
- break;
- case V4L2_PIX_FMT_YVU420: /* YV12, 12 bits per pixel */
- rank = YUV_BASE_RANK + 6;
- break;
- case V4L2_PIX_FMT_UYVY: /* UYVY, 16 bits per pixel */
- rank = YUV_BASE_RANK + 9;
- break;
- case V4L2_PIX_FMT_Y41P: /* Y41P, 12 bits per pixel */
- rank = YUV_BASE_RANK + 5;
- break;
- case V4L2_PIX_FMT_YUV411P: /* Y41B, 12 bits per pixel */
- rank = YUV_BASE_RANK + 4;
- break;
- case V4L2_PIX_FMT_YUV422P: /* Y42B, 16 bits per pixel */
- rank = YUV_BASE_RANK + 8;
- break;
-
- case V4L2_PIX_FMT_DV:
- rank = DV_BASE_RANK;
- break;
-
- case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
- rank = 0;
- break;
-
-#ifdef V4L2_PIX_FMT_SBGGR8
- case V4L2_PIX_FMT_SBGGR8:
- rank = BAYER_BASE_RANK;
- break;
-#endif
-
-#ifdef V4L2_PIX_FMT_SN9C10X
- case V4L2_PIX_FMT_SN9C10X:
- rank = S910_BASE_RANK;
- break;
-#endif
-
-#ifdef V4L2_PIX_FMT_PWC1
- case V4L2_PIX_FMT_PWC1:
- rank = PWC_BASE_RANK;
- break;
-#endif
-#ifdef V4L2_PIX_FMT_PWC2
- case V4L2_PIX_FMT_PWC2:
- rank = PWC_BASE_RANK;
- break;
-#endif
-
- default:
- rank = 0;
- break;
- }
-
- /* All ranks are below 1<<15 so a shift by 15
- * will a) make all non-emulated formats larger
- * than emulated and b) will not overflow
- */
- if (!emulated)
- rank <<= 15;
-
- return rank;
-}
-
-
-
-static gint
-format_cmp_func (gconstpointer a, gconstpointer b)
-{
- const struct v4l2_fmtdesc *fa = a;
- const struct v4l2_fmtdesc *fb = b;
-
- if (fa->pixelformat == fb->pixelformat)
- return 0;
-
- return gst_v4l2_object_format_get_rank (fb) -
- gst_v4l2_object_format_get_rank (fa);
-}
-
-/******************************************************
- * gst_v4l2_object_fill_format_list():
- * create list of supported capture formats
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-static gboolean
-gst_v4l2_object_fill_format_list (GstV4l2Object * v4l2object)
-{
- gint n;
- struct v4l2_fmtdesc *format;
-
- GST_DEBUG_OBJECT (v4l2object->element, "getting src format enumerations");
-
- /* format enumeration */
- for (n = 0;; n++) {
- format = g_new0 (struct v4l2_fmtdesc, 1);
-
- format->index = n;
- format->type = v4l2object->type;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_ENUM_FMT, format) < 0) {
- if (errno == EINVAL) {
- g_free (format);
- break; /* end of enumeration */
- } else {
- goto failed;
- }
- }
-
- GST_LOG_OBJECT (v4l2object->element, "index: %u", format->index);
- GST_LOG_OBJECT (v4l2object->element, "type: %d", format->type);
- GST_LOG_OBJECT (v4l2object->element, "flags: %08x", format->flags);
- GST_LOG_OBJECT (v4l2object->element, "description: '%s'",
- format->description);
- GST_LOG_OBJECT (v4l2object->element, "pixelformat: %" GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (format->pixelformat));
-
- /* sort formats according to our preference; we do this, because caps
- * are probed in the order the formats are in the list, and the order of
- * formats in the final probed caps matters for things like fixation */
- v4l2object->formats = g_slist_insert_sorted (v4l2object->formats, format,
- (GCompareFunc) format_cmp_func);
- }
-
-#ifndef GST_DISABLE_GST_DEBUG
- {
- GSList *l;
-
- GST_INFO_OBJECT (v4l2object->element, "got %d format(s):", n);
- for (l = v4l2object->formats; l != NULL; l = l->next) {
- format = l->data;
-
- GST_INFO_OBJECT (v4l2object->element,
- " %" GST_FOURCC_FORMAT "%s", GST_FOURCC_ARGS (format->pixelformat),
- ((format->flags & V4L2_FMT_FLAG_EMULATED)) ? " (emulated)" : "");
- }
- }
-#endif
-
- return TRUE;
-
- /* ERRORS */
-failed:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to enumerate possible video formats device '%s' can work with"), v4l2object->videodev), ("Failed to get number %d in pixelformat enumeration for %s. (%d - %s)", n, v4l2object->videodev, errno, g_strerror (errno)));
- g_free (format);
- return FALSE;
- }
-}
-
-/*
- * Get the list of supported capture formats, a list of
- * <code>struct v4l2_fmtdesc</code>.
- */
-GSList *
-gst_v4l2_object_get_format_list (GstV4l2Object * v4l2object)
-{
- if (!v4l2object->formats)
- gst_v4l2_object_fill_format_list (v4l2object);
- return v4l2object->formats;
-}
-
-
-GstStructure *
-gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc)
-{
- GstStructure *structure = NULL;
-
- switch (fourcc) {
- case V4L2_PIX_FMT_MJPEG: /* Motion-JPEG */
-#ifdef V4L2_PIX_FMT_PJPG
- case V4L2_PIX_FMT_PJPG: /* Progressive-JPEG */
-#endif
- case V4L2_PIX_FMT_JPEG: /* JFIF JPEG */
- structure = gst_structure_new ("image/jpeg", NULL);
- break;
- case V4L2_PIX_FMT_RGB332:
- case V4L2_PIX_FMT_RGB555:
- case V4L2_PIX_FMT_RGB555X:
- case V4L2_PIX_FMT_RGB565:
- case V4L2_PIX_FMT_RGB565X:
- case V4L2_PIX_FMT_RGB24:
- case V4L2_PIX_FMT_BGR24:
- case V4L2_PIX_FMT_RGB32:
- case V4L2_PIX_FMT_BGR32:{
- guint depth = 0, bpp = 0;
-
- gint endianness = 0;
-
- guint32 r_mask = 0, b_mask = 0, g_mask = 0;
-
- switch (fourcc) {
- case V4L2_PIX_FMT_RGB332:
- bpp = depth = 8;
- endianness = G_BYTE_ORDER; /* 'like, whatever' */
- r_mask = 0xe0;
- g_mask = 0x1c;
- b_mask = 0x03;
- break;
- case V4L2_PIX_FMT_RGB555:
- case V4L2_PIX_FMT_RGB555X:
- bpp = 16;
- depth = 15;
- endianness =
- fourcc == V4L2_PIX_FMT_RGB555X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
- r_mask = 0x7c00;
- g_mask = 0x03e0;
- b_mask = 0x001f;
- break;
- case V4L2_PIX_FMT_RGB565:
- case V4L2_PIX_FMT_RGB565X:
- bpp = depth = 16;
- endianness =
- fourcc == V4L2_PIX_FMT_RGB565X ? G_BIG_ENDIAN : G_LITTLE_ENDIAN;
- r_mask = 0xf800;
- g_mask = 0x07e0;
- b_mask = 0x001f;
- break;
- case V4L2_PIX_FMT_RGB24:
- bpp = depth = 24;
- endianness = G_BIG_ENDIAN;
- r_mask = 0xff0000;
- g_mask = 0x00ff00;
- b_mask = 0x0000ff;
- break;
- case V4L2_PIX_FMT_BGR24:
- bpp = depth = 24;
- endianness = G_BIG_ENDIAN;
- r_mask = 0x0000ff;
- g_mask = 0x00ff00;
- b_mask = 0xff0000;
- break;
- case V4L2_PIX_FMT_RGB32:
- bpp = depth = 32;
- endianness = G_BIG_ENDIAN;
- r_mask = 0xff000000;
- g_mask = 0x00ff0000;
- b_mask = 0x0000ff00;
- break;
- case V4L2_PIX_FMT_BGR32:
- bpp = depth = 32;
- endianness = G_BIG_ENDIAN;
- r_mask = 0x000000ff;
- g_mask = 0x0000ff00;
- b_mask = 0x00ff0000;
- break;
- default:
- g_assert_not_reached ();
- break;
- }
- structure = gst_structure_new ("video/x-raw-rgb",
- "bpp", G_TYPE_INT, bpp,
- "depth", G_TYPE_INT, depth,
- "red_mask", G_TYPE_INT, r_mask,
- "green_mask", G_TYPE_INT, g_mask,
- "blue_mask", G_TYPE_INT, b_mask,
- "endianness", G_TYPE_INT, endianness, NULL);
- break;
- }
- case V4L2_PIX_FMT_GREY: /* 8 Greyscale */
- structure = gst_structure_new ("video/x-raw-gray",
- "bpp", G_TYPE_INT, 8, NULL);
- break;
- case V4L2_PIX_FMT_YYUV: /* 16 YUV 4:2:2 */
- case V4L2_PIX_FMT_HI240: /* 8 8-bit color */
- /* FIXME: get correct fourccs here */
- break;
- case V4L2_PIX_FMT_NV12: /* 12 Y/CbCr 4:2:0 */
- case V4L2_PIX_FMT_NV21: /* 12 Y/CrCb 4:2:0 */
- case V4L2_PIX_FMT_YVU410:
- case V4L2_PIX_FMT_YUV410:
- case V4L2_PIX_FMT_YUV420: /* I420/IYUV */
- case V4L2_PIX_FMT_YUYV:
- case V4L2_PIX_FMT_YVU420:
- case V4L2_PIX_FMT_UYVY:
- case V4L2_PIX_FMT_Y41P:
- case V4L2_PIX_FMT_YUV422P:
-#ifdef V4L2_PIX_FMT_YVYU
- case V4L2_PIX_FMT_YVYU:
-#endif
- case V4L2_PIX_FMT_YUV411P:{
- guint32 fcc = 0;
-
- switch (fourcc) {
- case V4L2_PIX_FMT_NV12:
- fcc = GST_MAKE_FOURCC ('N', 'V', '1', '2');
- break;
- case V4L2_PIX_FMT_NV21:
- fcc = GST_MAKE_FOURCC ('N', 'V', '2', '1');
- break;
- case V4L2_PIX_FMT_YVU410:
- fcc = GST_MAKE_FOURCC ('Y', 'V', 'U', '9');
- break;
- case V4L2_PIX_FMT_YUV410:
- fcc = GST_MAKE_FOURCC ('Y', 'U', 'V', '9');
- break;
- case V4L2_PIX_FMT_YUV420:
- fcc = GST_MAKE_FOURCC ('I', '4', '2', '0');
- break;
- case V4L2_PIX_FMT_YUYV:
- fcc = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2');
- break;
- case V4L2_PIX_FMT_YVU420:
- fcc = GST_MAKE_FOURCC ('Y', 'V', '1', '2');
- break;
- case V4L2_PIX_FMT_UYVY:
- fcc = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y');
- break;
- case V4L2_PIX_FMT_Y41P:
- fcc = GST_MAKE_FOURCC ('Y', '4', '1', 'P');
- break;
- case V4L2_PIX_FMT_YUV411P:
- fcc = GST_MAKE_FOURCC ('Y', '4', '1', 'B');
- break;
- case V4L2_PIX_FMT_YUV422P:
- fcc = GST_MAKE_FOURCC ('Y', '4', '2', 'B');
- break;
-#ifdef V4L2_PIX_FMT_YVYU
- case V4L2_PIX_FMT_YVYU:
- fcc = GST_MAKE_FOURCC ('Y', 'V', 'Y', 'U');
- break;
-#endif
- default:
- g_assert_not_reached ();
- break;
- }
- structure = gst_structure_new ("video/x-raw-yuv",
- "format", GST_TYPE_FOURCC, fcc, NULL);
- break;
- }
- case V4L2_PIX_FMT_DV:
- structure =
- gst_structure_new ("video/x-dv", "systemstream", G_TYPE_BOOLEAN, TRUE,
- NULL);
- break;
- case V4L2_PIX_FMT_MPEG: /* MPEG */
- structure = gst_structure_new ("video/mpegts", NULL);
- break;
- case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */
- break;
-#ifdef V4L2_PIX_FMT_SBGGR8
- case V4L2_PIX_FMT_SBGGR8:
- structure = gst_structure_new ("video/x-raw-bayer", NULL);
- break;
-#endif
-#ifdef V4L2_PIX_FMT_SN9C10X
- case V4L2_PIX_FMT_SN9C10X:
- structure = gst_structure_new ("video/x-sonix", NULL);
- break;
-#endif
-#ifdef V4L2_PIX_FMT_PWC1
- case V4L2_PIX_FMT_PWC1:
- structure = gst_structure_new ("video/x-pwc1", NULL);
- break;
-#endif
-#ifdef V4L2_PIX_FMT_PWC2
- case V4L2_PIX_FMT_PWC2:
- structure = gst_structure_new ("video/x-pwc2", NULL);
- break;
-#endif
- default:
- GST_DEBUG ("Unknown fourcc 0x%08x %" GST_FOURCC_FORMAT,
- fourcc, GST_FOURCC_ARGS (fourcc));
- break;
- }
-
- return structure;
-}
-
-
-
-GstCaps *
-gst_v4l2_object_get_all_caps (void)
-{
- static GstCaps *caps = NULL;
-
- if (caps == NULL) {
- GstStructure *structure;
-
- guint i;
-
- caps = gst_caps_new_empty ();
- for (i = 0; i < GST_V4L2_FORMAT_COUNT; i++) {
- structure =
- gst_v4l2_object_v4l2fourcc_to_structure (gst_v4l2_formats[i].format);
- if (structure) {
- if (gst_v4l2_formats[i].dimensions) {
- gst_structure_set (structure,
- "width", GST_TYPE_INT_RANGE, 1, GST_V4L2_MAX_SIZE,
- "height", GST_TYPE_INT_RANGE, 1, GST_V4L2_MAX_SIZE,
- "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 100, 1, NULL);
- }
- gst_caps_append_structure (caps, structure);
- }
- }
- }
-
- return gst_caps_ref (caps);
-}
-
-
-/* collect data for the given caps
- * @caps: given input caps
- * @format: location for the v4l format
- * @w/@h: location for width and height
- * @fps_n/@fps_d: location for framerate
- * @size: location for expected size of the frame or 0 if unknown
- */
-gboolean
-gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps,
- struct v4l2_fmtdesc ** format, gint * w, gint * h,
- gboolean * interlaced, guint * fps_n, guint * fps_d, guint * size)
-{
- GstStructure *structure;
- const GValue *framerate;
- guint32 fourcc;
- const gchar *mimetype;
- guint outsize;
-
- /* default unknown values */
- fourcc = 0;
- outsize = 0;
-
- structure = gst_caps_get_structure (caps, 0);
-
- mimetype = gst_structure_get_name (structure);
-
- if (strcmp (mimetype, "video/mpegts") == 0) {
- fourcc = V4L2_PIX_FMT_MPEG;
- *fps_n = 0;
- *fps_d = 1;
- goto done;
- }
-
- if (!gst_structure_get_int (structure, "width", w))
- return FALSE;
-
- if (!gst_structure_get_int (structure, "height", h))
- return FALSE;
-
- if (!gst_structure_get_boolean (structure, "interlaced", interlaced))
- *interlaced = FALSE;
-
- framerate = gst_structure_get_value (structure, "framerate");
- if (!framerate)
- return FALSE;
-
- *fps_n = gst_value_get_fraction_numerator (framerate);
- *fps_d = gst_value_get_fraction_denominator (framerate);
-
- if (!strcmp (mimetype, "video/x-raw-yuv")) {
- gst_structure_get_fourcc (structure, "format", &fourcc);
-
- switch (fourcc) {
- case GST_MAKE_FOURCC ('I', '4', '2', '0'):
- case GST_MAKE_FOURCC ('I', 'Y', 'U', 'V'):
- fourcc = V4L2_PIX_FMT_YUV420;
- outsize = GST_ROUND_UP_4 (*w) * GST_ROUND_UP_2 (*h);
- outsize += 2 * ((GST_ROUND_UP_8 (*w) / 2) * (GST_ROUND_UP_2 (*h) / 2));
- break;
- case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
- fourcc = V4L2_PIX_FMT_YUYV;
- outsize = (GST_ROUND_UP_2 (*w) * 2) * *h;
- break;
- case GST_MAKE_FOURCC ('Y', '4', '1', 'P'):
- fourcc = V4L2_PIX_FMT_Y41P;
- outsize = (GST_ROUND_UP_2 (*w) * 2) * *h;
- break;
- case GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'):
- fourcc = V4L2_PIX_FMT_UYVY;
- outsize = (GST_ROUND_UP_2 (*w) * 2) * *h;
- break;
- case GST_MAKE_FOURCC ('Y', 'V', '1', '2'):
- fourcc = V4L2_PIX_FMT_YVU420;
- outsize = GST_ROUND_UP_4 (*w) * GST_ROUND_UP_2 (*h);
- outsize += 2 * ((GST_ROUND_UP_8 (*w) / 2) * (GST_ROUND_UP_2 (*h) / 2));
- break;
- case GST_MAKE_FOURCC ('Y', '4', '1', 'B'):
- fourcc = V4L2_PIX_FMT_YUV411P;
- outsize = GST_ROUND_UP_4 (*w) * *h;
- outsize += 2 * ((GST_ROUND_UP_8 (*w) / 4) * *h);
- break;
- case GST_MAKE_FOURCC ('Y', '4', '2', 'B'):
- fourcc = V4L2_PIX_FMT_YUV422P;
- outsize = GST_ROUND_UP_4 (*w) * *h;
- outsize += 2 * ((GST_ROUND_UP_8 (*w) / 2) * *h);
- break;
- case GST_MAKE_FOURCC ('N', 'V', '1', '2'):
- fourcc = V4L2_PIX_FMT_NV12;
- outsize = GST_ROUND_UP_4 (*w) * GST_ROUND_UP_2 (*h);
- outsize += (GST_ROUND_UP_4 (*w) * *h) / 2;
- break;
- case GST_MAKE_FOURCC ('N', 'V', '2', '1'):
- fourcc = V4L2_PIX_FMT_NV21;
- outsize = GST_ROUND_UP_4 (*w) * GST_ROUND_UP_2 (*h);
- outsize += (GST_ROUND_UP_4 (*w) * *h) / 2;
- break;
-#ifdef V4L2_PIX_FMT_YVYU
- case GST_MAKE_FOURCC ('Y', 'V', 'Y', 'U'):
- fourcc = V4L2_PIX_FMT_YVYU;
- outsize = (GST_ROUND_UP_2 (*w) * 2) * *h;
- break;
-#endif
- }
- } else if (!strcmp (mimetype, "video/x-raw-rgb")) {
- gint depth, endianness, r_mask;
-
- gst_structure_get_int (structure, "depth", &depth);
- gst_structure_get_int (structure, "endianness", &endianness);
- gst_structure_get_int (structure, "red_mask", &r_mask);
-
- switch (depth) {
- case 8:
- fourcc = V4L2_PIX_FMT_RGB332;
- break;
- case 15:
- fourcc = (endianness == G_LITTLE_ENDIAN) ?
- V4L2_PIX_FMT_RGB555 : V4L2_PIX_FMT_RGB555X;
- break;
- case 16:
- fourcc = (endianness == G_LITTLE_ENDIAN) ?
- V4L2_PIX_FMT_RGB565 : V4L2_PIX_FMT_RGB565X;
- break;
- case 24:
- fourcc = (r_mask == 0xFF) ? V4L2_PIX_FMT_BGR24 : V4L2_PIX_FMT_RGB24;
- break;
- case 32:
- fourcc = (r_mask == 0xFF) ? V4L2_PIX_FMT_BGR32 : V4L2_PIX_FMT_RGB32;
- break;
- }
- } else if (strcmp (mimetype, "video/x-dv") == 0) {
- fourcc = V4L2_PIX_FMT_DV;
- } else if (strcmp (mimetype, "image/jpeg") == 0) {
- fourcc = V4L2_PIX_FMT_JPEG;
-#ifdef V4L2_PIX_FMT_SBGGR8
- } else if (strcmp (mimetype, "video/x-raw-bayer") == 0) {
- fourcc = V4L2_PIX_FMT_SBGGR8;
-#endif
-#ifdef V4L2_PIX_FMT_SN9C10X
- } else if (strcmp (mimetype, "video/x-sonix") == 0) {
- fourcc = V4L2_PIX_FMT_SN9C10X;
-#endif
-#ifdef V4L2_PIX_FMT_PWC1
- } else if (strcmp (mimetype, "video/x-pwc1") == 0) {
- fourcc = V4L2_PIX_FMT_PWC1;
-#endif
-#ifdef V4L2_PIX_FMT_PWC2
- } else if (strcmp (mimetype, "video/x-pwc2") == 0) {
- fourcc = V4L2_PIX_FMT_PWC2;
-#endif
- } else if (strcmp (mimetype, "video/x-raw-gray") == 0) {
- fourcc = V4L2_PIX_FMT_GREY;
- }
-
- if (fourcc == 0)
- return FALSE;
-
-done:
- *format = gst_v4l2_object_get_format_from_fourcc (v4l2object, fourcc);
- *size = outsize;
-
- return TRUE;
-}
-
-
-static gboolean
-gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object,
- guint32 pixelformat, gint * width, gint * height, gboolean * interlaced);
-
-
-/* The frame interval enumeration code first appeared in Linux 2.6.19. */
-#ifdef VIDIOC_ENUM_FRAMEINTERVALS
-static GstStructure *
-gst_v4l2_object_probe_caps_for_format_and_size (GstV4l2Object * v4l2object,
- guint32 pixelformat,
- guint32 width, guint32 height, const GstStructure * template)
-{
- gint fd = v4l2object->video_fd;
- struct v4l2_frmivalenum ival;
- guint32 num, denom;
- GstStructure *s;
- GValue rates = { 0, };
- gboolean interlaced;
- gint int_width = width;
- gint int_height = height;
-
- /* interlaced detection using VIDIOC_TRY/S_FMT */
- if (!gst_v4l2_object_get_nearest_size (v4l2object, pixelformat,
- &int_width, &int_height, &interlaced))
- return NULL;
-
- memset (&ival, 0, sizeof (struct v4l2_frmivalenum));
- ival.index = 0;
- ival.pixel_format = pixelformat;
- ival.width = width;
- ival.height = height;
-
- GST_LOG_OBJECT (v4l2object->element,
- "get frame interval for %ux%u, %" GST_FOURCC_FORMAT, width, height,
- GST_FOURCC_ARGS (pixelformat));
-
- /* keep in mind that v4l2 gives us frame intervals (durations); we invert the
- * fraction to get framerate */
- if (v4l2_ioctl (fd, VIDIOC_ENUM_FRAMEINTERVALS, &ival) < 0)
- goto enum_frameintervals_failed;
-
- if (ival.type == V4L2_FRMIVAL_TYPE_DISCRETE) {
- GValue rate = { 0, };
-
- g_value_init (&rates, GST_TYPE_LIST);
- g_value_init (&rate, GST_TYPE_FRACTION);
-
- do {
- num = ival.discrete.numerator;
- denom = ival.discrete.denominator;
-
- if (num > G_MAXINT || denom > G_MAXINT) {
- /* let us hope we don't get here... */
- num >>= 1;
- denom >>= 1;
- }
-
- GST_LOG_OBJECT (v4l2object->element, "adding discrete framerate: %d/%d",
- denom, num);
-
- /* swap to get the framerate */
- gst_value_set_fraction (&rate, denom, num);
- gst_value_list_append_value (&rates, &rate);
-
- ival.index++;
- } while (v4l2_ioctl (fd, VIDIOC_ENUM_FRAMEINTERVALS, &ival) >= 0);
- } else if (ival.type == V4L2_FRMIVAL_TYPE_STEPWISE) {
- GValue min = { 0, };
- GValue step = { 0, };
- GValue max = { 0, };
- gboolean added = FALSE;
- guint32 minnum, mindenom;
- guint32 maxnum, maxdenom;
-
- g_value_init (&rates, GST_TYPE_LIST);
-
- g_value_init (&min, GST_TYPE_FRACTION);
- g_value_init (&step, GST_TYPE_FRACTION);
- g_value_init (&max, GST_TYPE_FRACTION);
-
- /* get the min */
- minnum = ival.stepwise.min.numerator;
- mindenom = ival.stepwise.min.denominator;
- if (minnum > G_MAXINT || mindenom > G_MAXINT) {
- minnum >>= 1;
- mindenom >>= 1;
- }
- GST_LOG_OBJECT (v4l2object->element, "stepwise min frame interval: %d/%d",
- minnum, mindenom);
- gst_value_set_fraction (&min, minnum, mindenom);
-
- /* get the max */
- maxnum = ival.stepwise.max.numerator;
- maxdenom = ival.stepwise.max.denominator;
- if (maxnum > G_MAXINT || maxdenom > G_MAXINT) {
- maxnum >>= 1;
- maxdenom >>= 1;
- }
-
- GST_LOG_OBJECT (v4l2object->element, "stepwise max frame interval: %d/%d",
- maxnum, maxdenom);
- gst_value_set_fraction (&max, maxnum, maxdenom);
-
- /* get the step */
- num = ival.stepwise.step.numerator;
- denom = ival.stepwise.step.denominator;
- if (num > G_MAXINT || denom > G_MAXINT) {
- num >>= 1;
- denom >>= 1;
- }
-
- if (num == 0 || denom == 0) {
- /* in this case we have a wrong fraction or no step, set the step to max
- * so that we only add the min value in the loop below */
- num = maxnum;
- denom = maxdenom;
- }
-
- /* since we only have gst_value_fraction_subtract and not add, negate the
- * numerator */
- GST_LOG_OBJECT (v4l2object->element, "stepwise step frame interval: %d/%d",
- num, denom);
- gst_value_set_fraction (&step, -num, denom);
-
- while (gst_value_compare (&min, &max) != GST_VALUE_GREATER_THAN) {
- GValue rate = { 0, };
-
- num = gst_value_get_fraction_numerator (&min);
- denom = gst_value_get_fraction_denominator (&min);
- GST_LOG_OBJECT (v4l2object->element, "adding stepwise framerate: %d/%d",
- denom, num);
-
- /* invert to get the framerate */
- g_value_init (&rate, GST_TYPE_FRACTION);
- gst_value_set_fraction (&rate, denom, num);
- gst_value_list_append_value (&rates, &rate);
- added = TRUE;
-
- /* we're actually adding because step was negated above. This is because
- * there is no _add function... */
- if (!gst_value_fraction_subtract (&min, &min, &step)) {
- GST_WARNING_OBJECT (v4l2object->element, "could not step fraction!");
- break;
- }
- }
- if (!added) {
- /* no range was added, leave the default range from the template */
- GST_WARNING_OBJECT (v4l2object->element,
- "no range added, leaving default");
- g_value_unset (&rates);
- }
- } else if (ival.type == V4L2_FRMIVAL_TYPE_CONTINUOUS) {
- guint32 maxnum, maxdenom;
-
- g_value_init (&rates, GST_TYPE_FRACTION_RANGE);
-
- num = ival.stepwise.min.numerator;
- denom = ival.stepwise.min.denominator;
- if (num > G_MAXINT || denom > G_MAXINT) {
- num >>= 1;
- denom >>= 1;
- }
-
- maxnum = ival.stepwise.max.numerator;
- maxdenom = ival.stepwise.max.denominator;
- if (maxnum > G_MAXINT || maxdenom > G_MAXINT) {
- maxnum >>= 1;
- maxdenom >>= 1;
- }
-
- GST_LOG_OBJECT (v4l2object->element,
- "continuous frame interval %d/%d to %d/%d", maxdenom, maxnum, denom,
- num);
-
- gst_value_set_fraction_range_full (&rates, maxdenom, maxnum, denom, num);
- } else {
- goto unknown_type;
- }
-
-return_data:
- s = gst_structure_copy (template);
- gst_structure_set (s, "width", G_TYPE_INT, (gint) width,
- "height", G_TYPE_INT, (gint) height,
- "interlaced", G_TYPE_BOOLEAN, interlaced,
- "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL);
-
- if (G_IS_VALUE (&rates)) {
- /* only change the framerate on the template when we have a valid probed new
- * value */
- gst_structure_set_value (s, "framerate", &rates);
- g_value_unset (&rates);
- } else {
- gst_structure_set (s, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 100, 1,
- NULL);
- }
- return s;
-
- /* ERRORS */
-enum_frameintervals_failed:
- {
- GST_DEBUG_OBJECT (v4l2object->element,
- "Unable to enumerate intervals for %" GST_FOURCC_FORMAT "@%ux%u",
- GST_FOURCC_ARGS (pixelformat), width, height);
- goto return_data;
- }
-unknown_type:
- {
- /* I don't see how this is actually an error, we ignore the format then */
- GST_WARNING_OBJECT (v4l2object->element,
- "Unknown frame interval type at %" GST_FOURCC_FORMAT "@%ux%u: %u",
- GST_FOURCC_ARGS (pixelformat), width, height, ival.type);
- return NULL;
- }
-}
-#endif /* defined VIDIOC_ENUM_FRAMEINTERVALS */
-
-#ifdef VIDIOC_ENUM_FRAMESIZES
-static gint
-sort_by_frame_size (GstStructure * s1, GstStructure * s2)
-{
- int w1, h1, w2, h2;
-
- gst_structure_get_int (s1, "width", &w1);
- gst_structure_get_int (s1, "height", &h1);
- gst_structure_get_int (s2, "width", &w2);
- gst_structure_get_int (s2, "height", &h2);
-
- /* I think it's safe to assume that this won't overflow for a while */
- return ((w2 * h2) - (w1 * h1));
-}
-#endif
-
-GstCaps *
-gst_v4l2_object_probe_caps_for_format (GstV4l2Object * v4l2object,
- guint32 pixelformat, const GstStructure * template)
-{
- GstCaps *ret = gst_caps_new_empty ();
- GstStructure *tmp;
-
-#ifdef VIDIOC_ENUM_FRAMESIZES
- gint fd = v4l2object->video_fd;
- struct v4l2_frmsizeenum size;
- GList *results = NULL;
- guint32 w, h;
-
- if (pixelformat == GST_MAKE_FOURCC ('M', 'P', 'E', 'G'))
- return gst_caps_new_simple ("video/mpegts", NULL);
-
- memset (&size, 0, sizeof (struct v4l2_frmsizeenum));
- size.index = 0;
- size.pixel_format = pixelformat;
-
- GST_DEBUG_OBJECT (v4l2object->element, "Enumerating frame sizes");
-
- if (v4l2_ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) < 0)
- goto enum_framesizes_failed;
-
- if (size.type == V4L2_FRMSIZE_TYPE_DISCRETE) {
- do {
- GST_LOG_OBJECT (v4l2object->element, "got discrete frame size %dx%d",
- size.discrete.width, size.discrete.height);
-
- w = MIN (size.discrete.width, G_MAXINT);
- h = MIN (size.discrete.height, G_MAXINT);
-
- if (w && h) {
- tmp =
- gst_v4l2_object_probe_caps_for_format_and_size (v4l2object,
- pixelformat, w, h, template);
-
- if (tmp)
- results = g_list_prepend (results, tmp);
- }
-
- size.index++;
- } while (v4l2_ioctl (fd, VIDIOC_ENUM_FRAMESIZES, &size) >= 0);
- GST_DEBUG_OBJECT (v4l2object->element,
- "done iterating discrete frame sizes");
- } else if (size.type == V4L2_FRMSIZE_TYPE_STEPWISE) {
- GST_DEBUG_OBJECT (v4l2object->element, "we have stepwise frame sizes:");
- GST_DEBUG_OBJECT (v4l2object->element, "min width: %d",
- size.stepwise.min_width);
- GST_DEBUG_OBJECT (v4l2object->element, "min height: %d",
- size.stepwise.min_height);
- GST_DEBUG_OBJECT (v4l2object->element, "max width: %d",
- size.stepwise.max_width);
- GST_DEBUG_OBJECT (v4l2object->element, "min height: %d",
- size.stepwise.max_height);
- GST_DEBUG_OBJECT (v4l2object->element, "step width: %d",
- size.stepwise.step_width);
- GST_DEBUG_OBJECT (v4l2object->element, "step height: %d",
- size.stepwise.step_height);
-
- for (w = size.stepwise.min_width, h = size.stepwise.min_height;
- w <= size.stepwise.max_width && h <= size.stepwise.max_height;
- w += size.stepwise.step_width, h += size.stepwise.step_height) {
- if (w == 0 || h == 0)
- continue;
-
- tmp =
- gst_v4l2_object_probe_caps_for_format_and_size (v4l2object,
- pixelformat, w, h, template);
-
- if (tmp)
- results = g_list_prepend (results, tmp);
- }
- GST_DEBUG_OBJECT (v4l2object->element,
- "done iterating stepwise frame sizes");
- } else if (size.type == V4L2_FRMSIZE_TYPE_CONTINUOUS) {
- guint32 maxw, maxh;
-
- GST_DEBUG_OBJECT (v4l2object->element, "we have continuous frame sizes:");
- GST_DEBUG_OBJECT (v4l2object->element, "min width: %d",
- size.stepwise.min_width);
- GST_DEBUG_OBJECT (v4l2object->element, "min height: %d",
- size.stepwise.min_height);
- GST_DEBUG_OBJECT (v4l2object->element, "max width: %d",
- size.stepwise.max_width);
- GST_DEBUG_OBJECT (v4l2object->element, "min height: %d",
- size.stepwise.max_height);
-
- w = MAX (size.stepwise.min_width, 1);
- h = MAX (size.stepwise.min_height, 1);
- maxw = MIN (size.stepwise.max_width, G_MAXINT);
- maxh = MIN (size.stepwise.max_height, G_MAXINT);
-
- tmp =
- gst_v4l2_object_probe_caps_for_format_and_size (v4l2object, pixelformat,
- w, h, template);
- if (tmp) {
- gst_structure_set (tmp, "width", GST_TYPE_INT_RANGE, (gint) w,
- (gint) maxw, "height", GST_TYPE_INT_RANGE, (gint) h, (gint) maxh,
- NULL);
-
- /* no point using the results list here, since there's only one struct */
- gst_caps_append_structure (ret, tmp);
- }
- } else {
- goto unknown_type;
- }
-
- /* we use an intermediary list to store and then sort the results of the
- * probing because we can't make any assumptions about the order in which
- * the driver will give us the sizes, but we want the final caps to contain
- * the results starting with the highest resolution and having the lowest
- * resolution last, since order in caps matters for things like fixation. */
- results = g_list_sort (results, (GCompareFunc) sort_by_frame_size);
- while (results != NULL) {
- gst_caps_append_structure (ret, GST_STRUCTURE (results->data));
- results = g_list_delete_link (results, results);
- }
-
- if (gst_caps_is_empty (ret))
- goto enum_framesizes_no_results;
-
- return ret;
-
- /* ERRORS */
-enum_framesizes_failed:
- {
- /* I don't see how this is actually an error */
- GST_DEBUG_OBJECT (v4l2object->element,
- "Failed to enumerate frame sizes for pixelformat %" GST_FOURCC_FORMAT
- " (%s)", GST_FOURCC_ARGS (pixelformat), g_strerror (errno));
- goto default_frame_sizes;
- }
-enum_framesizes_no_results:
- {
- /* it's possible that VIDIOC_ENUM_FRAMESIZES is defined but the driver in
- * question doesn't actually support it yet */
- GST_DEBUG_OBJECT (v4l2object->element,
- "No results for pixelformat %" GST_FOURCC_FORMAT
- " enumerating frame sizes, trying fallback",
- GST_FOURCC_ARGS (pixelformat));
- goto default_frame_sizes;
- }
-unknown_type:
- {
- GST_WARNING_OBJECT (v4l2object->element,
- "Unknown frame sizeenum type for pixelformat %" GST_FOURCC_FORMAT
- ": %u", GST_FOURCC_ARGS (pixelformat), size.type);
- goto default_frame_sizes;
- }
-default_frame_sizes:
-#endif /* defined VIDIOC_ENUM_FRAMESIZES */
- {
- gint min_w, max_w, min_h, max_h, fix_num = 0, fix_denom = 0;
- gboolean interlaced;
-
- /* This code is for Linux < 2.6.19 */
- min_w = min_h = 1;
- max_w = max_h = GST_V4L2_MAX_SIZE;
- if (!gst_v4l2_object_get_nearest_size (v4l2object, pixelformat, &min_w,
- &min_h, &interlaced)) {
- GST_WARNING_OBJECT (v4l2object->element,
- "Could not probe minimum capture size for pixelformat %"
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (pixelformat));
- }
- if (!gst_v4l2_object_get_nearest_size (v4l2object, pixelformat, &max_w,
- &max_h, &interlaced)) {
- GST_WARNING_OBJECT (v4l2object->element,
- "Could not probe maximum capture size for pixelformat %"
- GST_FOURCC_FORMAT, GST_FOURCC_ARGS (pixelformat));
- }
-
- /* Since we can't get framerate directly, try to use the current norm */
- if (v4l2object->tv_norm && v4l2object->norms) {
- GList *norms;
- GstTunerNorm *norm = NULL;
- GstTunerNorm *current =
- gst_v4l2_tuner_get_norm_by_std_id (v4l2object, v4l2object->tv_norm);
-
- for (norms = v4l2object->norms; norms != NULL; norms = norms->next) {
- norm = (GstTunerNorm *) norms->data;
- if (!strcmp (norm->label, current->label))
- break;
- }
- /* If it's possible, set framerate to that (discrete) value */
- if (norm) {
- fix_num = gst_value_get_fraction_numerator (&norm->framerate);
- fix_denom = gst_value_get_fraction_denominator (&norm->framerate);
- }
- }
-
- tmp = gst_structure_copy (template);
- if (fix_num) {
- gst_structure_set (tmp, "framerate", GST_TYPE_FRACTION, fix_num,
- fix_denom, NULL);
- } else {
- /* if norm can't be used, copy the template framerate */
- gst_structure_set (tmp, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1,
- 100, 1, NULL);
- }
-
- if (min_w == max_w)
- gst_structure_set (tmp, "width", G_TYPE_INT, max_w, NULL);
- else
- gst_structure_set (tmp, "width", GST_TYPE_INT_RANGE, min_w, max_w, NULL);
-
- if (min_h == max_h)
- gst_structure_set (tmp, "height", G_TYPE_INT, max_h, NULL);
- else
- gst_structure_set (tmp, "height", GST_TYPE_INT_RANGE, min_h, max_h, NULL);
-
- gst_structure_set (tmp, "interlaced", G_TYPE_BOOLEAN, interlaced, NULL);
- gst_structure_set (tmp, "pixel-aspect-ratio",
- GST_TYPE_FRACTION, 1, 1, NULL);
-
- gst_caps_append_structure (ret, tmp);
-
- return ret;
- }
-}
-
-static gboolean
-gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object,
- guint32 pixelformat, gint * width, gint * height, gboolean * interlaced)
-{
- struct v4l2_format fmt, prevfmt;
- int fd;
- int r;
- int prevfmt_valid;
-
- g_return_val_if_fail (width != NULL, FALSE);
- g_return_val_if_fail (height != NULL, FALSE);
-
- GST_LOG_OBJECT (v4l2object->element,
- "getting nearest size to %dx%d with format %" GST_FOURCC_FORMAT,
- *width, *height, GST_FOURCC_ARGS (pixelformat));
-
- fd = v4l2object->video_fd;
-
- /* Some drivers are buggy and will modify the currently set format
- when processing VIDIOC_TRY_FMT, so we remember what is set at the
- minute, and will reset it when done. */
- prevfmt_valid = (v4l2_ioctl (fd, VIDIOC_G_FMT, &prevfmt) >= 0);
-
- /* get size delimiters */
- memset (&fmt, 0, sizeof (fmt));
- fmt.type = v4l2object->type;
- fmt.fmt.pix.width = *width;
- fmt.fmt.pix.height = *height;
- fmt.fmt.pix.pixelformat = pixelformat;
- fmt.fmt.pix.field = V4L2_FIELD_NONE;
-
- r = v4l2_ioctl (fd, VIDIOC_TRY_FMT, &fmt);
- if (r < 0 && errno == EINVAL) {
- /* try again with interlaced video */
- fmt.fmt.pix.width = *width;
- fmt.fmt.pix.height = *height;
- fmt.fmt.pix.pixelformat = pixelformat;
- fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
- r = v4l2_ioctl (fd, VIDIOC_TRY_FMT, &fmt);
- }
-
- if (r < 0) {
- /* The driver might not implement TRY_FMT, in which case we will try
- S_FMT to probe */
- if (errno != ENOTTY)
- goto error;
-
- /* Only try S_FMT if we're not actively capturing yet, which we shouldn't
- be, because we're still probing */
- if (GST_V4L2_IS_ACTIVE (v4l2object))
- goto error;
-
- GST_LOG_OBJECT (v4l2object->element,
- "Failed to probe size limit with VIDIOC_TRY_FMT, trying VIDIOC_S_FMT");
-
- fmt.fmt.pix.width = *width;
- fmt.fmt.pix.height = *height;
-
- r = v4l2_ioctl (fd, VIDIOC_S_FMT, &fmt);
- if (r < 0 && errno == EINVAL) {
- /* try again with progressive video */
- fmt.fmt.pix.width = *width;
- fmt.fmt.pix.height = *height;
- fmt.fmt.pix.pixelformat = pixelformat;
- fmt.fmt.pix.field = V4L2_FIELD_NONE;
- r = v4l2_ioctl (fd, VIDIOC_S_FMT, &fmt);
- }
-
- if (r < 0)
- goto error;
- }
-
- GST_LOG_OBJECT (v4l2object->element,
- "got nearest size %dx%d", fmt.fmt.pix.width, fmt.fmt.pix.height);
-
- *width = fmt.fmt.pix.width;
- *height = fmt.fmt.pix.height;
-
- switch (fmt.fmt.pix.field) {
- case V4L2_FIELD_ANY:
- case V4L2_FIELD_NONE:
- *interlaced = FALSE;
- break;
- case V4L2_FIELD_INTERLACED:
- case V4L2_FIELD_INTERLACED_TB:
- case V4L2_FIELD_INTERLACED_BT:
- *interlaced = TRUE;
- break;
- default:
- GST_WARNING_OBJECT (v4l2object->element,
- "Unsupported field type for %" GST_FOURCC_FORMAT "@%ux%u",
- GST_FOURCC_ARGS (pixelformat), *width, *height);
- goto error;
- }
-
- if (prevfmt_valid)
- v4l2_ioctl (fd, VIDIOC_S_FMT, &prevfmt);
- return TRUE;
-
-error:
- if (prevfmt_valid)
- v4l2_ioctl (fd, VIDIOC_S_FMT, &prevfmt);
- return FALSE;
-}
-
-
-gboolean
-gst_v4l2_object_set_format (GstV4l2Object * v4l2object, guint32 pixelformat,
- guint32 width, guint32 height, gboolean interlaced)
-{
- gint fd = v4l2object->video_fd;
- struct v4l2_format format;
- enum v4l2_field field;
-
- if (interlaced) {
- GST_DEBUG_OBJECT (v4l2object->element, "interlaced video");
- /* ideally we would differentiate between types of interlaced video
- * but there is not sufficient information in the caps..
- */
- field = V4L2_FIELD_INTERLACED;
- } else {
- GST_DEBUG_OBJECT (v4l2object->element, "progressive video");
- field = V4L2_FIELD_NONE;
- }
-
- GST_DEBUG_OBJECT (v4l2object->element, "Setting format to %dx%d, format "
- "%" GST_FOURCC_FORMAT, width, height, GST_FOURCC_ARGS (pixelformat));
-
- GST_V4L2_CHECK_OPEN (v4l2object);
- GST_V4L2_CHECK_NOT_ACTIVE (v4l2object);
-
- /* Only unconditionally accept mpegts for sources */
- if ((v4l2object->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) &&
- (pixelformat == GST_MAKE_FOURCC ('M', 'P', 'E', 'G')))
- return TRUE;
-
- memset (&format, 0x00, sizeof (struct v4l2_format));
- format.type = v4l2object->type;
-
- if (v4l2_ioctl (fd, VIDIOC_G_FMT, &format) < 0)
- goto get_fmt_failed;
-
- if (format.type == v4l2object->type &&
- format.fmt.pix.width == width &&
- format.fmt.pix.height == height &&
- format.fmt.pix.pixelformat == pixelformat &&
- format.fmt.pix.field == field) {
- /* Nothing to do. We want to succeed immediately
- * here because setting the same format back
- * can still fail due to EBUSY. By short-circuiting
- * here, we allow pausing and re-playing pipelines
- * with changed caps, as long as the changed caps
- * do not change the webcam's format. Otherwise,
- * any caps change would require us to go to NULL
- * state to close the device and set format.
- */
- return TRUE;
- }
-
- format.type = v4l2object->type;
- format.fmt.pix.width = width;
- format.fmt.pix.height = height;
- format.fmt.pix.pixelformat = pixelformat;
- format.fmt.pix.field = field;
-
- if (v4l2_ioctl (fd, VIDIOC_S_FMT, &format) < 0) {
- goto set_fmt_failed;
- }
-
- if (format.fmt.pix.width != width || format.fmt.pix.height != height)
- goto invalid_dimensions;
-
- if (format.fmt.pix.pixelformat != pixelformat)
- goto invalid_pixelformat;
-
- return TRUE;
-
- /* ERRORS */
-get_fmt_failed:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Device '%s' does not support video capture"),
- v4l2object->videodev),
- ("Call to G_FMT failed: (%s)", g_strerror (errno)));
- return FALSE;
- }
-set_fmt_failed:
- {
- if (errno == EBUSY) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, BUSY,
- (_("Device '%s' is busy"), v4l2object->videodev),
- ("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
- GST_FOURCC_ARGS (pixelformat), width, height,
- g_strerror (errno)));
- } else {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Device '%s' cannot capture at %dx%d"),
- v4l2object->videodev, width, height),
- ("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
- GST_FOURCC_ARGS (pixelformat), width, height,
- g_strerror (errno)));
- }
- return FALSE;
- }
-invalid_dimensions:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Device '%s' cannot capture at %dx%d"),
- v4l2object->videodev, width, height),
- ("Tried to capture at %dx%d, but device returned size %dx%d",
- width, height, format.fmt.pix.width, format.fmt.pix.height));
- return FALSE;
- }
-invalid_pixelformat:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Device '%s' cannot capture in the specified format"),
- v4l2object->videodev),
- ("Tried to capture in %" GST_FOURCC_FORMAT
- ", but device returned format" " %" GST_FOURCC_FORMAT,
- GST_FOURCC_ARGS (pixelformat),
- GST_FOURCC_ARGS (format.fmt.pix.pixelformat)));
- return FALSE;
- }
-}
-
-gboolean
-gst_v4l2_object_start_streaming (GstV4l2Object * v4l2object)
-{
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_STREAMON,
- &(v4l2object->type)) < 0) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, OPEN_READ,
- (_("Error starting streaming on device '%s'."), v4l2object->videodev),
- GST_ERROR_SYSTEM);
- return FALSE;
- }
- return TRUE;
-}
-
-gboolean
-gst_v4l2_object_stop_streaming (GstV4l2Object * v4l2object)
-{
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_STREAMOFF,
- &(v4l2object->type)) < 0) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, OPEN_READ,
- (_("Error stopping streaming on device '%s'."), v4l2object->videodev),
- GST_ERROR_SYSTEM);
- return FALSE;
- }
- return TRUE;
-}
diff --git a/wearable/sys/v4l2/gstv4l2object.h b/wearable/sys/v4l2/gstv4l2object.h
deleted file mode 100644
index a7b590d..0000000
--- a/wearable/sys/v4l2/gstv4l2object.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2object.h: base class for V4L2 elements
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2_OBJECT_H__
-#define __GST_V4L2_OBJECT_H__
-
-/* Because of some really cool feature in video4linux1, also known as
- * 'not including sys/types.h and sys/time.h', we had to include it
- * ourselves. In all their intelligence, these people decided to fix
- * this in the next version (video4linux2) in such a cool way that it
- * breaks all compilations of old stuff...
- * The real problem is actually that linux/time.h doesn't use proper
- * macro checks before defining types like struct timeval. The proper
- * fix here is to either fuck the kernel header (which is what we do
- * by defining _LINUX_TIME_H, an innocent little hack) or by fixing it
- * upstream, which I'll consider doing later on. If you get compiler
- * errors here, check your linux/time.h && sys/time.h header setup.
- */
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#ifndef __sun
-#include <linux/types.h>
-#define _LINUX_TIME_H
-#define __user
-#include <linux/videodev2.h>
-#else
-#include <sys/videodev2.h>
-#endif
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-#include <gst/controller/gstcontroller.h>
-
-#include <gst/interfaces/propertyprobe.h>
-
-
-/* size of v4l2 buffer pool in streaming case */
-#define GST_V4L2_MAX_BUFFERS 16
-#define GST_V4L2_MIN_BUFFERS 1
-
-/* max frame width/height */
-#define GST_V4L2_MAX_SIZE (1<<15) /* 2^15 == 32768 */
-
-
-
-G_BEGIN_DECLS
-
-#define GST_V4L2_OBJECT(obj) (GstV4l2Object *)(obj)
-
-typedef struct _GstV4l2Object GstV4l2Object;
-typedef struct _GstV4l2ObjectClassHelper GstV4l2ObjectClassHelper;
-typedef struct _GstV4l2Xv GstV4l2Xv;
-
-typedef gboolean (*GstV4l2GetInOutFunction) (GstV4l2Object * v4l2object, gint * input);
-typedef gboolean (*GstV4l2SetInOutFunction) (GstV4l2Object * v4l2object, gint input);
-typedef gboolean (*GstV4l2UpdateFpsFunction) (GstV4l2Object * v4l2object);
-
-struct _GstV4l2Object {
- GstElement * element;
-
- /* the video device */
- char *videodev;
-
- /* the video-device's file descriptor */
- gint video_fd;
- GstPoll * poll;
- gboolean can_poll_device;
-
- /* the video buffer (mmap()'ed) */
- guint8 **buffer;
-
- enum v4l2_buf_type type; /* V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_OUTPUT */
-
- /* the video device's capabilities */
- struct v4l2_capability vcap;
-
- /* the video device's window properties */
- struct v4l2_window vwin;
-
- /* some more info about the current input's capabilities */
- struct v4l2_input vinput;
-
- /* lists... */
- GSList *formats; /* list of available capture formats */
-
- GList *colors;
- GList *norms;
- GList *channels;
-
- /* properties */
- v4l2_std_id tv_norm;
- gchar *channel;
- gulong frequency;
-
- /* X-overlay */
- GstV4l2Xv *xv;
- gulong xwindow_id;
-
- /* funcs */
- GstV4l2GetInOutFunction get_in_out_func;
- GstV4l2SetInOutFunction set_in_out_func;
- GstV4l2UpdateFpsFunction update_fps_func;
-};
-
-struct _GstV4l2ObjectClassHelper {
- /* probed devices */
- GList *devices;
-};
-
-GType gst_v4l2_object_get_type (void);
-
-#define V4L2_STD_OBJECT_PROPS \
- PROP_DEVICE, \
- PROP_DEVICE_NAME, \
- PROP_DEVICE_FD, \
- PROP_FLAGS, \
- PROP_BRIGHTNESS, \
- PROP_CONTRAST, \
- PROP_SATURATION, \
- PROP_HUE, \
- PROP_TV_NORM
-
-/* create/destroy */
-GstV4l2Object * gst_v4l2_object_new (GstElement * element,
- enum v4l2_buf_type type,
- const char *default_device,
- GstV4l2GetInOutFunction get_in_out_func,
- GstV4l2SetInOutFunction set_in_out_func,
- GstV4l2UpdateFpsFunction update_fps_func);
-void gst_v4l2_object_destroy (GstV4l2Object * v4l2object);
-
-/* properties */
-
-void gst_v4l2_object_install_properties_helper (GObjectClass *gobject_class, const char *default_device);
-
-gboolean gst_v4l2_object_set_property_helper (GstV4l2Object *v4l2object,
- guint prop_id, const GValue * value,
- GParamSpec * pspec);
-gboolean gst_v4l2_object_get_property_helper (GstV4l2Object *v4l2object,
- guint prop_id, GValue * value,
- GParamSpec * pspec);
-/* starting/stopping */
-gboolean gst_v4l2_object_start (GstV4l2Object *v4l2object);
-gboolean gst_v4l2_object_stop (GstV4l2Object *v4l2object);
-
-/* probing */
-const GList* gst_v4l2_probe_get_properties (GstPropertyProbe * probe);
-
-void gst_v4l2_probe_probe_property (GstPropertyProbe * probe, guint prop_id,
- const GParamSpec * pspec,
- GList ** klass_devices);
-gboolean gst_v4l2_probe_needs_probe (GstPropertyProbe * probe, guint prop_id,
- const GParamSpec * pspec,
- GList ** klass_devices);
-GValueArray* gst_v4l2_probe_get_values (GstPropertyProbe * probe, guint prop_id,
- const GParamSpec * pspec,
- GList ** klass_devices);
-
-GstCaps* gst_v4l2_object_probe_caps_for_format (GstV4l2Object *v4l2object, guint32 pixelformat,
- const GstStructure * template);
-
-gboolean gst_v4l2_object_get_caps_info (GstV4l2Object *v4l2object, GstCaps *caps,
- struct v4l2_fmtdesc **format, gint *w, gint *h,
- gboolean * interlaced, guint *fps_n, guint *fps_d, guint *size);
-
-
-GSList* gst_v4l2_object_get_format_list (GstV4l2Object *v4l2object);
-
-GstCaps* gst_v4l2_object_get_all_caps (void);
-
-GstStructure* gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc);
-
-gboolean gst_v4l2_object_set_format (GstV4l2Object *v4l2object, guint32 pixelformat, guint32 width, guint32 height, gboolean interlaced);
-
-gboolean gst_v4l2_object_start_streaming (GstV4l2Object *v4l2object);
-gboolean gst_v4l2_object_stop_streaming (GstV4l2Object *v4l2object);
-
-
-#define GST_IMPLEMENT_V4L2_PROBE_METHODS(Type_Class, interface_as_function) \
- \
-static void \
-interface_as_function ## _probe_probe_property (GstPropertyProbe * probe, \
- guint prop_id, \
- const GParamSpec * pspec) \
-{ \
- Type_Class *this_class = (Type_Class*) G_OBJECT_GET_CLASS (probe); \
- gst_v4l2_probe_probe_property (probe, prop_id, pspec, \
- &this_class->v4l2_class_devices); \
-} \
- \
-static gboolean \
-interface_as_function ## _probe_needs_probe (GstPropertyProbe * probe, \
- guint prop_id, \
- const GParamSpec * pspec) \
-{ \
- Type_Class *this_class = (Type_Class*) G_OBJECT_GET_CLASS (probe); \
- return gst_v4l2_probe_needs_probe (probe, prop_id, pspec, \
- &this_class->v4l2_class_devices); \
-} \
- \
-static GValueArray * \
-interface_as_function ## _probe_get_values (GstPropertyProbe * probe, \
- guint prop_id, \
- const GParamSpec * pspec) \
-{ \
- Type_Class *this_class = (Type_Class*) G_OBJECT_GET_CLASS (probe); \
- return gst_v4l2_probe_get_values (probe, prop_id, pspec, \
- &this_class->v4l2_class_devices); \
-} \
- \
-static void \
-interface_as_function ## _property_probe_interface_init (GstPropertyProbeInterface * iface) \
-{ \
- iface->get_properties = gst_v4l2_probe_get_properties; \
- iface->probe_property = interface_as_function ## _probe_probe_property; \
- iface->needs_probe = interface_as_function ## _probe_needs_probe; \
- iface->get_values = interface_as_function ## _probe_get_values; \
-}
-
-G_END_DECLS
-
-#endif /* __GST_V4L2_OBJECT_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2radio.c b/wearable/sys/v4l2/gstv4l2radio.c
deleted file mode 100644
index 63a2fed..0000000
--- a/wearable/sys/v4l2/gstv4l2radio.c
+++ /dev/null
@@ -1,635 +0,0 @@
-/* GStreamer v4l2 radio tuner element
- * Copyright (C) 2010, 2011 Alexey Chernov <4ernov@gmail.com>
- *
- * gstv4l2radio.c - V4L2 radio tuner element
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-v4l2radio
- *
- * v4l2radio can be used to control radio device
- * and to tune it to different radiostations.
- *
- * <refsect2>
- * <title>Example launch lines</title>
- * |[
- * gst-launch v4l2radio device=/dev/radio0 frequency=101200000
- * gst-launch alsasrc device=hw:1 ! audioconvert ! audioresample ! alsasink
- * ]|
- * First pipeline tunes the radio device /dev/radio0 to station 101.2 MHz,
- * second pipeline connects digital audio out (hw:1) to default sound card.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "gst/gst-i18n-plugin.h"
-
-#include "gstv4l2tuner.h"
-#include "gstv4l2radio.h"
-#include "v4l2_calls.h"
-
-GST_DEBUG_CATEGORY_STATIC (v4l2radio_debug);
-#define GST_CAT_DEFAULT v4l2radio_debug
-
-#define DEFAULT_PROP_DEVICE "/dev/radio0"
-#define MIN_FREQUENCY 87500000
-#define DEFAULT_FREQUENCY 100000000
-#define MAX_FREQUENCY 108000000
-
-enum
-{
- ARG_0,
- ARG_DEVICE,
- ARG_FREQUENCY
-};
-
-static gboolean
-gst_v4l2radio_fill_channel_list (GstV4l2Radio * radio)
-{
- int res;
- struct v4l2_tuner vtun;
- struct v4l2_capability vc;
- GstV4l2TunerChannel *v4l2channel;
- GstTunerChannel *channel;
-
- GstElement *e;
-
- GstV4l2Object *v4l2object;
-
- e = GST_ELEMENT (radio);
- v4l2object = radio->v4l2object;
-
- GST_DEBUG_OBJECT (e, "getting audio enumeration");
- GST_V4L2_CHECK_OPEN (v4l2object);
-
- GST_DEBUG_OBJECT (e, " audio input");
-
- memset (&vc, 0, sizeof (vc));
-
- res = v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYCAP, &vc);
- if (res < 0)
- goto caps_failed;
-
- if (!(vc.capabilities & V4L2_CAP_TUNER))
- goto not_a_tuner;
-
- /* getting audio input */
- memset (&vtun, 0, sizeof (vtun));
- vtun.index = 0;
-
- res = v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_TUNER, &vtun);
- if (res < 0)
- goto tuner_failed;
-
- GST_LOG_OBJECT (e, " index: %d", vtun.index);
- GST_LOG_OBJECT (e, " name: '%s'", vtun.name);
- GST_LOG_OBJECT (e, " type: %016x", (guint) vtun.type);
- GST_LOG_OBJECT (e, " caps: %016x", (guint) vtun.capability);
- GST_LOG_OBJECT (e, " rlow: %016x", (guint) vtun.rangelow);
- GST_LOG_OBJECT (e, " rhigh: %016x", (guint) vtun.rangehigh);
- GST_LOG_OBJECT (e, " audmode: %016x", (guint) vtun.audmode);
-
- v4l2channel = g_object_new (GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
- channel = GST_TUNER_CHANNEL (v4l2channel);
- channel->label = g_strdup ((const gchar *) vtun.name);
- channel->flags = GST_TUNER_CHANNEL_FREQUENCY | GST_TUNER_CHANNEL_AUDIO;
- v4l2channel->index = 0;
- v4l2channel->tuner = 0;
-
- channel->freq_multiplicator =
- 62.5 * ((vtun.capability & V4L2_TUNER_CAP_LOW) ? 1 : 1000);
- channel->min_frequency = vtun.rangelow * channel->freq_multiplicator;
- channel->max_frequency = vtun.rangehigh * channel->freq_multiplicator;
- channel->min_signal = 0;
- channel->max_signal = 0xffff;
-
- v4l2object->channels =
- g_list_prepend (v4l2object->channels, (gpointer) channel);
-
- v4l2object->channels = g_list_reverse (v4l2object->channels);
-
- GST_DEBUG_OBJECT (e, "done");
- return TRUE;
-
- /* ERRORS */
-tuner_failed:
- {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Failed to get settings of tuner %d on device '%s'."),
- vtun.index, v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-caps_failed:
- {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Error getting capabilities for device '%s'."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-not_a_tuner:
- {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Device '%s' is not a tuner."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-static gboolean
-gst_v4l2radio_get_input (GstV4l2Object * v4l2object, gint * input)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "trying to get radio input");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (!v4l2object->channels)
- goto input_failed;
-
- *input = 0;
-
- GST_DEBUG_OBJECT (v4l2object->element, "input: %d", 0);
-
- return TRUE;
-
- /* ERRORS */
-input_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get radio input on device '%s'. "),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-static gboolean
-gst_v4l2radio_set_input (GstV4l2Object * v4l2object, gint input)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "trying to set input to %d", input);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (!v4l2object->channels)
- goto input_failed;
-
- return TRUE;
-
- /* ERRORS */
-input_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set input %d on device %s."),
- input, v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-static gboolean
-gst_v4l2radio_set_mute_on (GstV4l2Radio * radio, gboolean on)
-{
- gint res;
- struct v4l2_control vctrl;
-
- GST_DEBUG_OBJECT (radio, "setting current tuner mute state: %d", on);
-
- if (!GST_V4L2_IS_OPEN (radio->v4l2object))
- return FALSE;
-
- memset (&vctrl, 0, sizeof (vctrl));
- vctrl.id = V4L2_CID_AUDIO_MUTE;
- vctrl.value = on;
-
- GST_DEBUG_OBJECT (radio, "radio fd: %d", radio->v4l2object->video_fd);
-
- res = ioctl (radio->v4l2object->video_fd, VIDIOC_S_CTRL, &vctrl);
- GST_DEBUG_OBJECT (radio, "mute state change result: %d", res);
- if (res < 0)
- goto freq_failed;
-
- return TRUE;
-
- /* ERRORS */
-freq_failed:
- {
- GST_ELEMENT_WARNING (radio, RESOURCE, SETTINGS,
- (_("Failed to change mute state for device '%s'."),
- radio->v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-static gboolean
-gst_v4l2radio_set_mute (GstV4l2Radio * radio)
-{
- return gst_v4l2radio_set_mute_on (radio, TRUE);
-}
-
-static gboolean
-gst_v4l2radio_set_unmute (GstV4l2Radio * radio)
-{
- return gst_v4l2radio_set_mute_on (radio, FALSE);
-}
-
-GST_IMPLEMENT_V4L2_PROBE_METHODS (GstV4l2RadioClass, gst_v4l2radio);
-GST_IMPLEMENT_V4L2_TUNER_METHODS (GstV4l2Radio, gst_v4l2radio);
-
-static void gst_v4l2radio_uri_handler_init (gpointer g_iface,
- gpointer iface_data);
-
-static gboolean
-gst_v4l2radio_interface_supported (GstImplementsInterface * iface,
- GType iface_type)
-{
- if (iface_type == GST_TYPE_TUNER)
- return TRUE;
- else
- return FALSE;
-}
-
-static void
-gst_v4l2radio_implements_interface_init (GstImplementsInterfaceClass * iface)
-{
- iface->supported = gst_v4l2radio_interface_supported;
-}
-
-static void
-gst_v4l2radio_tuner_interface_reinit (GstTunerClass * iface)
-{
- gst_v4l2radio_tuner_interface_init (iface);
-}
-
-static void
-gst_v4l2radio_interfaces (GType type)
-{
- static const GInterfaceInfo urihandler_info = {
- (GInterfaceInitFunc) gst_v4l2radio_uri_handler_init,
- NULL,
- NULL
- };
-
- static const GInterfaceInfo implements_interface_info = {
- (GInterfaceInitFunc) gst_v4l2radio_implements_interface_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo propertyprobe_info = {
- (GInterfaceInitFunc) gst_v4l2radio_property_probe_interface_init,
- NULL,
- NULL,
- };
-
- static const GInterfaceInfo tuner_interface_info = {
- (GInterfaceInitFunc) gst_v4l2radio_tuner_interface_reinit,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &urihandler_info);
- g_type_add_interface_static (type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &implements_interface_info);
-
- g_type_add_interface_static (type, GST_TYPE_TUNER, &tuner_interface_info);
-
- g_type_add_interface_static (type,
- GST_TYPE_PROPERTY_PROBE, &propertyprobe_info);
-}
-
-GST_BOILERPLATE_FULL (GstV4l2Radio, gst_v4l2radio, GstElement, GST_TYPE_ELEMENT,
- gst_v4l2radio_interfaces);
-
-static void gst_v4l2radio_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_v4l2radio_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-static void gst_v4l2radio_finalize (GstV4l2Radio * radio);
-static void gst_v4l2radio_dispose (GObject * object);
-static GstStateChangeReturn gst_v4l2radio_change_state (GstElement * element,
- GstStateChange transition);
-
-static void
-gst_v4l2radio_base_init (gpointer gclass)
-{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (gclass);
- GstV4l2RadioClass *gstv4l2radio_class = GST_V4L2RADIO_CLASS (gclass);
-
- GST_DEBUG_CATEGORY_INIT (v4l2radio_debug, "v4l2radio", 0,
- "V4l2 radio element");
-
- gstv4l2radio_class->v4l2_class_devices = NULL;
-
- gst_element_class_set_details_simple (gstelement_class,
- "Radio (video4linux2) Tuner",
- "Tuner",
- "Controls a Video4Linux2 radio device",
- "Alexey Chernov <4ernov@gmail.com>");
-}
-
-static void
-gst_v4l2radio_class_init (GstV4l2RadioClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
-
- gobject_class->set_property = gst_v4l2radio_set_property;
- gobject_class->get_property = gst_v4l2radio_get_property;
-
- g_object_class_install_property (gobject_class, ARG_DEVICE,
- g_param_spec_string ("device", "Radio device location",
- "Video4Linux2 radio device location",
- DEFAULT_PROP_DEVICE, G_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class, ARG_FREQUENCY,
- g_param_spec_int ("frequency", "Station frequency",
- "Station frequency in Hz",
- MIN_FREQUENCY, MAX_FREQUENCY, DEFAULT_FREQUENCY, G_PARAM_READWRITE));
-
- gobject_class->dispose = gst_v4l2radio_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2radio_finalize;
-
- gstelement_class->change_state =
- GST_DEBUG_FUNCPTR (gst_v4l2radio_change_state);
-
-}
-
-static void
-gst_v4l2radio_init (GstV4l2Radio * filter, GstV4l2RadioClass * gclass)
-{
- filter->v4l2object = gst_v4l2_object_new (GST_ELEMENT (filter),
- V4L2_BUF_TYPE_VIDEO_CAPTURE, DEFAULT_PROP_DEVICE,
- gst_v4l2radio_get_input, gst_v4l2radio_set_input, NULL);
-
- filter->v4l2object->frequency = DEFAULT_FREQUENCY;
- g_free (filter->v4l2object->videodev);
- filter->v4l2object->videodev = g_strdup (DEFAULT_PROP_DEVICE);
-}
-
-static void
-gst_v4l2radio_dispose (GObject * object)
-{
- GstV4l2Radio *radio = GST_V4L2RADIO (object);
- gst_v4l2_close (radio->v4l2object);
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_v4l2radio_finalize (GstV4l2Radio * radio)
-{
- gst_v4l2_object_destroy (radio->v4l2object);
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (radio));
-}
-
-static gboolean
-gst_v4l2radio_open (GstV4l2Radio * radio)
-{
- GstV4l2Object *v4l2object;
-
- v4l2object = radio->v4l2object;
- if (gst_v4l2_open (v4l2object))
- return gst_v4l2radio_fill_channel_list (radio);
- else
- return FALSE;
-}
-
-static void
-gst_v4l2radio_set_defaults (GstV4l2Radio * radio)
-{
- GstV4l2Object *v4l2object;
- GstTunerChannel *channel = NULL;
- GstTuner *tuner;
-
- v4l2object = radio->v4l2object;
-
- if (!GST_IS_TUNER (v4l2object->element))
- return;
-
- tuner = GST_TUNER (v4l2object->element);
-
- if (v4l2object->channel)
- channel = gst_tuner_find_channel_by_name (tuner, v4l2object->channel);
- if (channel) {
- gst_tuner_set_channel (tuner, channel);
- } else {
- channel =
- GST_TUNER_CHANNEL (gst_tuner_get_channel (GST_TUNER
- (v4l2object->element)));
- if (channel) {
- g_free (v4l2object->channel);
- v4l2object->channel = g_strdup (channel->label);
- gst_tuner_channel_changed (tuner, channel);
- }
- }
-
- if (channel
- && GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- if (v4l2object->frequency != 0) {
- gst_tuner_set_frequency (tuner, channel, v4l2object->frequency);
- } else {
- v4l2object->frequency = gst_tuner_get_frequency (tuner, channel);
- if (v4l2object->frequency == 0) {
- /* guess */
- gst_tuner_set_frequency (tuner, channel, MIN_FREQUENCY);
- } else {
- }
- }
- }
-}
-
-static gboolean
-gst_v4l2radio_start (GstV4l2Radio * radio)
-{
- if (!gst_v4l2radio_open (radio))
- return FALSE;
-
- gst_v4l2radio_set_defaults (radio);
-
- return TRUE;
-}
-
-static gboolean
-gst_v4l2radio_stop (GstV4l2Radio * radio)
-{
- if (!gst_v4l2_object_stop (radio->v4l2object))
- return FALSE;
-
- return TRUE;
-}
-
-static GstStateChangeReturn
-gst_v4l2radio_change_state (GstElement * element, GstStateChange transition)
-{
- GstV4l2Radio *radio;
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
- radio = GST_V4L2RADIO (element);
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- /*start radio */
- if (!gst_v4l2radio_start (radio))
- ret = GST_STATE_CHANGE_FAILURE;
- break;
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- /*unmute radio */
- if (!gst_v4l2radio_set_unmute (radio))
- ret = GST_STATE_CHANGE_FAILURE;
- break;
- case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
- /*mute radio */
- if (!gst_v4l2radio_set_mute (radio))
- ret = GST_STATE_CHANGE_FAILURE;
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- /*stop radio */
- if (!gst_v4l2radio_stop (radio))
- ret = GST_STATE_CHANGE_FAILURE;
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-static void
-gst_v4l2radio_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstV4l2Radio *radio = GST_V4L2RADIO (object);
- gint frequency;
- switch (prop_id) {
- case ARG_DEVICE:
- g_free (radio->v4l2object->videodev);
- radio->v4l2object->videodev =
- g_strdup ((gchar *) g_value_get_string (value));
- break;
- case ARG_FREQUENCY:
- frequency = g_value_get_int (value);
- if (frequency >= MIN_FREQUENCY && frequency <= MAX_FREQUENCY) {
- radio->v4l2object->frequency = frequency;
- gst_v4l2_set_frequency (radio->v4l2object, 0,
- radio->v4l2object->frequency);
- }
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_v4l2radio_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstV4l2Radio *radio = GST_V4L2RADIO (object);
-
- switch (prop_id) {
- case ARG_DEVICE:
- g_value_set_string (value, radio->v4l2object->videodev);
- break;
- case ARG_FREQUENCY:
- if (gst_v4l2_get_frequency (radio->v4l2object,
- 0, &(radio->v4l2object->frequency)))
- g_value_set_int (value, radio->v4l2object->frequency);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/* GstURIHandler interface */
-static GstURIType
-gst_v4l2radio_uri_get_type (void)
-{
- return GST_URI_SRC;
-}
-
-static gchar **
-gst_v4l2radio_uri_get_protocols (void)
-{
- static gchar *protocols[] = { (char *) "radio", NULL };
- return protocols;
-}
-
-static const gchar *
-gst_v4l2radio_uri_get_uri (GstURIHandler * handler)
-{
- GstV4l2Radio *radio = GST_V4L2RADIO (handler);
-
- if (radio->v4l2object->videodev != NULL) {
- if (gst_v4l2_get_frequency (radio->v4l2object,
- 0, &(radio->v4l2object->frequency))) {
- gchar uri[20];
- gchar freq[6];
- g_ascii_formatd (freq, 6, "%4.1f", radio->v4l2object->frequency / 1e6);
- g_snprintf (uri, sizeof (uri), "radio://%s", freq);
- return g_intern_string (uri);
- }
- }
-
- return "radio://";
-}
-
-static gboolean
-gst_v4l2radio_uri_set_uri (GstURIHandler * handler, const gchar * uri)
-{
- GstV4l2Radio *radio = GST_V4L2RADIO (handler);
- gdouble dfreq;
- gint ifreq;
- const gchar *freq;
- gchar *end;
-
- if (strcmp (uri, "radio://") != 0) {
- freq = uri + 8;
-
- dfreq = g_ascii_strtod (freq, &end);
-
- if (errno || strlen (end))
- goto uri_failed;
-
- ifreq = dfreq * 1e6;
- g_object_set (radio, "frequency", ifreq, NULL);
-
- } else
- goto uri_failed;
-
- return TRUE;
-
-uri_failed:
- return FALSE;
-}
-
-static void
-gst_v4l2radio_uri_handler_init (gpointer g_iface, gpointer iface_data)
-{
- GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
-
- iface->get_type = gst_v4l2radio_uri_get_type;
- iface->get_protocols = gst_v4l2radio_uri_get_protocols;
- iface->get_uri = gst_v4l2radio_uri_get_uri;
- iface->set_uri = gst_v4l2radio_uri_set_uri;
-}
diff --git a/wearable/sys/v4l2/gstv4l2radio.h b/wearable/sys/v4l2/gstv4l2radio.h
deleted file mode 100644
index 68b7ec3..0000000
--- a/wearable/sys/v4l2/gstv4l2radio.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* GStreamer v4l2 radio tuner element
- * Copyright (C) 2010, 2011 Alexey Chernov <4ernov@gmail.com>
- *
- * gstv4l2radio.h - V4L2 radio tuner element
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2RADIO_H__
-#define __GST_V4L2RADIO_H__
-
-#include "gstv4l2object.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_V4L2RADIO \
- (gst_v4l2radio_get_type())
-#define GST_V4L2RADIO(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_V4L2RADIO,GstV4l2Radio))
-#define GST_V4L2RADIO_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_V4L2RADIO,GstV4l2RadioClass))
-#define GST_IS_V4L2RADIO(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_V4L2RADIO))
-#define GST_IS_V4L2RADIO_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_V4L2RADIO))
-
-typedef struct _GstV4l2Radio GstV4l2Radio;
-typedef struct _GstV4l2RadioClass GstV4l2RadioClass;
-
-/**
- * GstV4l2Radio:
- *
- * Opaque video4linux2 radio tuner element
- */
-struct _GstV4l2Radio
-{
- GstElement element;
-
- /*< private >*/
- GstV4l2Object * v4l2object;
-};
-
-struct _GstV4l2RadioClass
-{
- GstElementClass parent_class;
-
- GList *v4l2_class_devices;
-};
-
-GType gst_v4l2radio_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_V4L2RADIO_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2sink.c b/wearable/sys/v4l2/gstv4l2sink.c
deleted file mode 100644
index f6aba24..0000000
--- a/wearable/sys/v4l2/gstv4l2sink.c
+++ /dev/null
@@ -1,971 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2009 Texas Instruments, Inc - http://www.ti.com/
- *
- * Description: V4L2 sink element
- * Created on: Jul 2, 2009
- * Author: Rob Clark <rob@ti.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-v4l2sink
- *
- * v4l2sink can be used to display video to v4l2 devices (screen overlays
- * provided by the graphics hardware, tv-out, etc)
- *
- * <refsect2>
- * <title>Example launch lines</title>
- * |[
- * gst-launch videotestsrc ! v4l2sink device=/dev/video1
- * ]| This pipeline displays a test pattern on /dev/video1
- * |[
- * gst-launch -v videotestsrc ! navigationtest ! v4l2sink
- * ]| A pipeline to test navigation events.
- * While moving the mouse pointer over the test signal you will see a black box
- * following the mouse pointer. If you press the mouse button somewhere on the
- * video and release it somewhere else a green box will appear where you pressed
- * the button and a red one where you released it. (The navigationtest element
- * is part of gst-plugins-good.) You can observe here that even if the images
- * are scaled through hardware the pointer coordinates are converted back to the
- * original video frame geometry so that the box can be drawn to the correct
- * position. This also handles borders correctly, limiting coordinates to the
- * image area
- * </refsect2>
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "gstv4l2colorbalance.h"
-#include "gstv4l2tuner.h"
-#ifdef HAVE_XVIDEO
-#include "gstv4l2xoverlay.h"
-#endif
-#include "gstv4l2vidorient.h"
-
-#include "gstv4l2sink.h"
-#include "gst/gst-i18n-plugin.h"
-
-#include <string.h>
-
-GST_DEBUG_CATEGORY (v4l2sink_debug);
-#define GST_CAT_DEFAULT v4l2sink_debug
-
-#define PROP_DEF_QUEUE_SIZE 12
-#define PROP_DEF_MIN_QUEUED_BUFS 1
-#define DEFAULT_PROP_DEVICE "/dev/video1"
-
-enum
-{
- PROP_0,
- V4L2_STD_OBJECT_PROPS,
- PROP_QUEUE_SIZE,
- PROP_MIN_QUEUED_BUFS,
- PROP_OVERLAY_TOP,
- PROP_OVERLAY_LEFT,
- PROP_OVERLAY_WIDTH,
- PROP_OVERLAY_HEIGHT,
- PROP_CROP_TOP,
- PROP_CROP_LEFT,
- PROP_CROP_WIDTH,
- PROP_CROP_HEIGHT,
-};
-
-
-GST_IMPLEMENT_V4L2_PROBE_METHODS (GstV4l2SinkClass, gst_v4l2sink);
-GST_IMPLEMENT_V4L2_COLOR_BALANCE_METHODS (GstV4l2Sink, gst_v4l2sink);
-GST_IMPLEMENT_V4L2_TUNER_METHODS (GstV4l2Sink, gst_v4l2sink);
-#ifdef HAVE_XVIDEO
-GST_IMPLEMENT_V4L2_XOVERLAY_METHODS (GstV4l2Sink, gst_v4l2sink);
-#endif
-GST_IMPLEMENT_V4L2_VIDORIENT_METHODS (GstV4l2Sink, gst_v4l2sink);
-
-static gboolean
-gst_v4l2sink_iface_supported (GstImplementsInterface * iface, GType iface_type)
-{
- GstV4l2Object *v4l2object = GST_V4L2SINK (iface)->v4l2object;
-
-#ifdef HAVE_XVIDEO
- g_assert (iface_type == GST_TYPE_X_OVERLAY ||
- iface_type == GST_TYPE_NAVIGATION ||
- iface_type == GST_TYPE_COLOR_BALANCE ||
- iface_type == GST_TYPE_VIDEO_ORIENTATION ||
- iface_type == GST_TYPE_TUNER);
-#else
- g_assert (iface_type == GST_TYPE_COLOR_BALANCE ||
- iface_type == GST_TYPE_VIDEO_ORIENTATION ||
- iface_type == GST_TYPE_TUNER);
-#endif
-
- if (v4l2object->video_fd == -1)
- return FALSE;
-
-#ifdef HAVE_XVIDEO
- if (!GST_V4L2_IS_OVERLAY (v4l2object)) {
- if (iface_type == GST_TYPE_X_OVERLAY || iface_type == GST_TYPE_NAVIGATION)
- return FALSE;
- }
-#endif
-
- return TRUE;
-}
-
-static void
-gst_v4l2sink_interface_init (GstImplementsInterfaceClass * klass)
-{
- /*
- * default virtual functions
- */
- klass->supported = gst_v4l2sink_iface_supported;
-}
-
-#ifdef HAVE_XVIDEO
-static void gst_v4l2sink_navigation_send_event (GstNavigation * navigation,
- GstStructure * structure);
-static void
-gst_v4l2sink_navigation_init (GstNavigationInterface * iface)
-{
- iface->send_event = gst_v4l2sink_navigation_send_event;
-}
-#endif
-
-static void
-gst_v4l2sink_init_interfaces (GType type)
-{
- static const GInterfaceInfo v4l2iface_info = {
- (GInterfaceInitFunc) gst_v4l2sink_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_tuner_info = {
- (GInterfaceInitFunc) gst_v4l2sink_tuner_interface_init,
- NULL,
- NULL,
- };
-#ifdef HAVE_XVIDEO
- static const GInterfaceInfo v4l2_xoverlay_info = {
- (GInterfaceInitFunc) gst_v4l2sink_xoverlay_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_navigation_info = {
- (GInterfaceInitFunc) gst_v4l2sink_navigation_init,
- NULL,
- NULL,
- };
-#endif
- static const GInterfaceInfo v4l2_colorbalance_info = {
- (GInterfaceInitFunc) gst_v4l2sink_color_balance_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_videoorientation_info = {
- (GInterfaceInitFunc) gst_v4l2sink_video_orientation_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_propertyprobe_info = {
- (GInterfaceInitFunc) gst_v4l2sink_property_probe_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &v4l2iface_info);
- g_type_add_interface_static (type, GST_TYPE_TUNER, &v4l2_tuner_info);
-#ifdef HAVE_XVIDEO
- g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &v4l2_xoverlay_info);
- g_type_add_interface_static (type,
- GST_TYPE_NAVIGATION, &v4l2_navigation_info);
-#endif
- g_type_add_interface_static (type,
- GST_TYPE_COLOR_BALANCE, &v4l2_colorbalance_info);
- g_type_add_interface_static (type,
- GST_TYPE_VIDEO_ORIENTATION, &v4l2_videoorientation_info);
- g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE,
- &v4l2_propertyprobe_info);
-}
-
-
-GST_BOILERPLATE_FULL (GstV4l2Sink, gst_v4l2sink, GstVideoSink,
- GST_TYPE_VIDEO_SINK, gst_v4l2sink_init_interfaces);
-
-
-static void gst_v4l2sink_dispose (GObject * object);
-static void gst_v4l2sink_finalize (GstV4l2Sink * v4l2sink);
-
-/* GObject methods: */
-static void gst_v4l2sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_v4l2sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-
-/* GstElement methods: */
-static GstStateChangeReturn gst_v4l2sink_change_state (GstElement * element,
- GstStateChange transition);
-
-/* GstBaseSink methods: */
-static GstCaps *gst_v4l2sink_get_caps (GstBaseSink * bsink);
-static gboolean gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
-static GstFlowReturn gst_v4l2sink_buffer_alloc (GstBaseSink * bsink,
- guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf);
-static GstFlowReturn gst_v4l2sink_show_frame (GstBaseSink * bsink,
- GstBuffer * buf);
-
-static void
-gst_v4l2sink_base_init (gpointer g_class)
-{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
- GstV4l2SinkClass *gstv4l2sink_class = GST_V4L2SINK_CLASS (g_class);
- GstPadTemplate *pad_template;
-
- gstv4l2sink_class->v4l2_class_devices = NULL;
-
- GST_DEBUG_CATEGORY_INIT (v4l2sink_debug, "v4l2sink", 0, "V4L2 sink element");
-
- gst_element_class_set_details_simple (gstelement_class,
- "Video (video4linux2) Sink", "Sink/Video",
- "Displays frames on a video4linux2 device", "Rob Clark <rob@ti.com>,");
-
- pad_template =
- gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- gst_v4l2_object_get_all_caps ());
- gst_element_class_add_pad_template (gstelement_class, pad_template);
- gst_object_unref (pad_template);
-}
-
-static void
-gst_v4l2sink_class_init (GstV4l2SinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *element_class;
- GstBaseSinkClass *basesink_class;
-
- gobject_class = G_OBJECT_CLASS (klass);
- element_class = GST_ELEMENT_CLASS (klass);
- basesink_class = GST_BASE_SINK_CLASS (klass);
-
- gobject_class->dispose = gst_v4l2sink_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2sink_finalize;
- gobject_class->set_property = gst_v4l2sink_set_property;
- gobject_class->get_property = gst_v4l2sink_get_property;
-
- element_class->change_state = gst_v4l2sink_change_state;
-
- gst_v4l2_object_install_properties_helper (gobject_class,
- DEFAULT_PROP_DEVICE);
- g_object_class_install_property (gobject_class, PROP_QUEUE_SIZE,
- g_param_spec_uint ("queue-size", "Queue size",
- "Number of buffers to be enqueud in the driver in streaming mode",
- GST_V4L2_MIN_BUFFERS, GST_V4L2_MAX_BUFFERS, PROP_DEF_QUEUE_SIZE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_MIN_QUEUED_BUFS,
- g_param_spec_uint ("min-queued-bufs", "Minimum queued bufs",
- "Minimum number of queued bufs; v4l2sink won't dqbuf if the driver "
- "doesn't have more than this number (which normally you shouldn't change)",
- 0, GST_V4L2_MAX_BUFFERS, PROP_DEF_MIN_QUEUED_BUFS,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_OVERLAY_TOP,
- g_param_spec_int ("overlay-top", "Overlay top",
- "The topmost (y) coordinate of the video overlay; top left corner of screen is 0,0",
- G_MININT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_OVERLAY_LEFT,
- g_param_spec_int ("overlay-left", "Overlay left",
- "The leftmost (x) coordinate of the video overlay; top left corner of screen is 0,0",
- G_MININT, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_OVERLAY_WIDTH,
- g_param_spec_uint ("overlay-width", "Overlay width",
- "The width of the video overlay; default is equal to negotiated image width",
- 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_OVERLAY_HEIGHT,
- g_param_spec_uint ("overlay-height", "Overlay height",
- "The height of the video overlay; default is equal to negotiated image height",
- 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_CROP_TOP,
- g_param_spec_int ("crop-top", "Crop top",
- "The topmost (y) coordinate of the video crop; top left corner of image is 0,0",
- 0x80000000, 0x7fffffff, 0, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, PROP_CROP_LEFT,
- g_param_spec_int ("crop-left", "Crop left",
- "The leftmost (x) coordinate of the video crop; top left corner of image is 0,0",
- 0x80000000, 0x7fffffff, 0, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, PROP_CROP_WIDTH,
- g_param_spec_uint ("crop-width", "Crop width",
- "The width of the video crop; default is equal to negotiated image width",
- 0, 0xffffffff, 0, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, PROP_CROP_HEIGHT,
- g_param_spec_uint ("crop-height", "Crop height",
- "The height of the video crop; default is equal to negotiated image height",
- 0, 0xffffffff, 0, G_PARAM_READWRITE));
-
- basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_v4l2sink_get_caps);
- basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_v4l2sink_set_caps);
- basesink_class->buffer_alloc = GST_DEBUG_FUNCPTR (gst_v4l2sink_buffer_alloc);
- basesink_class->render = GST_DEBUG_FUNCPTR (gst_v4l2sink_show_frame);
-}
-
-static void
-gst_v4l2sink_init (GstV4l2Sink * v4l2sink, GstV4l2SinkClass * klass)
-{
- v4l2sink->v4l2object = gst_v4l2_object_new (GST_ELEMENT (v4l2sink),
- V4L2_BUF_TYPE_VIDEO_OUTPUT, DEFAULT_PROP_DEVICE,
- gst_v4l2_get_output, gst_v4l2_set_output, NULL);
-
- /* same default value for video output device as is used for
- * v4l2src/capture is no good.. so lets set a saner default
- * (which can be overridden by the one creating the v4l2sink
- * after the constructor returns)
- */
- g_object_set (v4l2sink, "device", "/dev/video1", NULL);
-
- /* number of buffers requested */
- v4l2sink->num_buffers = PROP_DEF_QUEUE_SIZE;
- v4l2sink->min_queued_bufs = PROP_DEF_MIN_QUEUED_BUFS;
-
- v4l2sink->probed_caps = NULL;
- v4l2sink->current_caps = NULL;
-
- v4l2sink->overlay_fields_set = 0;
- v4l2sink->crop_fields_set = 0;
- v4l2sink->state = 0;
-}
-
-
-static void
-gst_v4l2sink_dispose (GObject * object)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (object);
-
- if (v4l2sink->probed_caps) {
- gst_caps_unref (v4l2sink->probed_caps);
- }
-
- if (v4l2sink->current_caps) {
- gst_caps_unref (v4l2sink->current_caps);
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-
-static void
-gst_v4l2sink_finalize (GstV4l2Sink * v4l2sink)
-{
- gst_v4l2_object_destroy (v4l2sink->v4l2object);
-
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (v4l2sink));
-}
-
-
-/*
- * State values
- */
-enum
-{
- STATE_OFF = 0,
- STATE_PENDING_STREAMON,
- STATE_STREAMING
-};
-
-/*
- * flags to indicate which overlay/crop properties the user has set (and
- * therefore which ones should override the defaults from the driver)
- */
-enum
-{
- RECT_TOP_SET = 0x01,
- RECT_LEFT_SET = 0x02,
- RECT_WIDTH_SET = 0x04,
- RECT_HEIGHT_SET = 0x08
-};
-
-static void
-gst_v4l2sink_sync_overlay_fields (GstV4l2Sink * v4l2sink)
-{
- if (!v4l2sink->overlay_fields_set)
- return;
-
- if (GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) {
-
- gint fd = v4l2sink->v4l2object->video_fd;
- struct v4l2_format format;
-
- memset (&format, 0x00, sizeof (struct v4l2_format));
- format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
-
- if (v4l2_ioctl (fd, VIDIOC_G_FMT, &format) < 0) {
- GST_WARNING_OBJECT (v4l2sink, "VIDIOC_G_FMT failed");
- return;
- }
-
- GST_DEBUG_OBJECT (v4l2sink,
- "setting overlay: overlay_fields_set=0x%02x, top=%d, left=%d, width=%d, height=%d",
- v4l2sink->overlay_fields_set,
- v4l2sink->overlay.top, v4l2sink->overlay.left,
- v4l2sink->overlay.width, v4l2sink->overlay.height);
-
- if (v4l2sink->overlay_fields_set & RECT_TOP_SET)
- format.fmt.win.w.top = v4l2sink->overlay.top;
- if (v4l2sink->overlay_fields_set & RECT_LEFT_SET)
- format.fmt.win.w.left = v4l2sink->overlay.left;
- if (v4l2sink->overlay_fields_set & RECT_WIDTH_SET)
- format.fmt.win.w.width = v4l2sink->overlay.width;
- if (v4l2sink->overlay_fields_set & RECT_HEIGHT_SET)
- format.fmt.win.w.height = v4l2sink->overlay.height;
-
- if (v4l2_ioctl (fd, VIDIOC_S_FMT, &format) < 0) {
- GST_WARNING_OBJECT (v4l2sink, "VIDIOC_S_FMT failed");
- return;
- }
-
- v4l2sink->overlay_fields_set = 0;
- v4l2sink->overlay = format.fmt.win.w;
- }
-}
-
-static void
-gst_v4l2sink_sync_crop_fields (GstV4l2Sink * v4l2sink)
-{
- if (!v4l2sink->crop_fields_set)
- return;
-
- if (GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) {
-
- gint fd = v4l2sink->v4l2object->video_fd;
- struct v4l2_crop crop;
-
- memset (&crop, 0x00, sizeof (struct v4l2_crop));
- crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-
- if (v4l2_ioctl (fd, VIDIOC_G_CROP, &crop) < 0) {
- GST_WARNING_OBJECT (v4l2sink, "VIDIOC_G_CROP failed");
- return;
- }
-
- GST_DEBUG_OBJECT (v4l2sink,
- "setting crop: crop_fields_set=0x%02x, top=%d, left=%d, width=%d, height=%d",
- v4l2sink->crop_fields_set,
- v4l2sink->crop.top, v4l2sink->crop.left,
- v4l2sink->crop.width, v4l2sink->crop.height);
-
- if (v4l2sink->crop_fields_set & RECT_TOP_SET)
- crop.c.top = v4l2sink->crop.top;
- if (v4l2sink->crop_fields_set & RECT_LEFT_SET)
- crop.c.left = v4l2sink->crop.left;
- if (v4l2sink->crop_fields_set & RECT_WIDTH_SET)
- crop.c.width = v4l2sink->crop.width;
- if (v4l2sink->crop_fields_set & RECT_HEIGHT_SET)
- crop.c.height = v4l2sink->crop.height;
-
- if (v4l2_ioctl (fd, VIDIOC_S_CROP, &crop) < 0) {
- GST_WARNING_OBJECT (v4l2sink, "VIDIOC_S_CROP failed");
- return;
- }
-
- v4l2sink->crop_fields_set = 0;
- v4l2sink->crop = crop.c;
- }
-}
-
-
-static void
-gst_v4l2sink_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (object);
-
- if (!gst_v4l2_object_set_property_helper (v4l2sink->v4l2object,
- prop_id, value, pspec)) {
- switch (prop_id) {
- case PROP_QUEUE_SIZE:
- v4l2sink->num_buffers = g_value_get_uint (value);
- break;
- case PROP_MIN_QUEUED_BUFS:
- v4l2sink->min_queued_bufs = g_value_get_uint (value);
- break;
- case PROP_OVERLAY_TOP:
- v4l2sink->overlay.top = g_value_get_int (value);
- v4l2sink->overlay_fields_set |= RECT_TOP_SET;
- gst_v4l2sink_sync_overlay_fields (v4l2sink);
- break;
- case PROP_OVERLAY_LEFT:
- v4l2sink->overlay.left = g_value_get_int (value);
- v4l2sink->overlay_fields_set |= RECT_LEFT_SET;
- gst_v4l2sink_sync_overlay_fields (v4l2sink);
- break;
- case PROP_OVERLAY_WIDTH:
- v4l2sink->overlay.width = g_value_get_uint (value);
- v4l2sink->overlay_fields_set |= RECT_WIDTH_SET;
- gst_v4l2sink_sync_overlay_fields (v4l2sink);
- break;
- case PROP_OVERLAY_HEIGHT:
- v4l2sink->overlay.height = g_value_get_uint (value);
- v4l2sink->overlay_fields_set |= RECT_HEIGHT_SET;
- gst_v4l2sink_sync_overlay_fields (v4l2sink);
- break;
- case PROP_CROP_TOP:
- v4l2sink->crop.top = g_value_get_int (value);
- v4l2sink->crop_fields_set |= RECT_TOP_SET;
- gst_v4l2sink_sync_crop_fields (v4l2sink);
- break;
- case PROP_CROP_LEFT:
- v4l2sink->crop.left = g_value_get_int (value);
- v4l2sink->crop_fields_set |= RECT_LEFT_SET;
- gst_v4l2sink_sync_crop_fields (v4l2sink);
- break;
- case PROP_CROP_WIDTH:
- v4l2sink->crop.width = g_value_get_uint (value);
- v4l2sink->crop_fields_set |= RECT_WIDTH_SET;
- gst_v4l2sink_sync_crop_fields (v4l2sink);
- break;
- case PROP_CROP_HEIGHT:
- v4l2sink->crop.height = g_value_get_uint (value);
- v4l2sink->crop_fields_set |= RECT_HEIGHT_SET;
- gst_v4l2sink_sync_crop_fields (v4l2sink);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
- }
-}
-
-
-static void
-gst_v4l2sink_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (object);
-
- if (!gst_v4l2_object_get_property_helper (v4l2sink->v4l2object,
- prop_id, value, pspec)) {
- switch (prop_id) {
- case PROP_QUEUE_SIZE:
- g_value_set_uint (value, v4l2sink->num_buffers);
- break;
- case PROP_MIN_QUEUED_BUFS:
- g_value_set_uint (value, v4l2sink->min_queued_bufs);
- break;
- case PROP_OVERLAY_TOP:
- g_value_set_int (value, v4l2sink->overlay.top);
- break;
- case PROP_OVERLAY_LEFT:
- g_value_set_int (value, v4l2sink->overlay.left);
- break;
- case PROP_OVERLAY_WIDTH:
- g_value_set_uint (value, v4l2sink->overlay.width);
- break;
- case PROP_OVERLAY_HEIGHT:
- g_value_set_uint (value, v4l2sink->overlay.height);
- break;
- case PROP_CROP_TOP:
- g_value_set_int (value, v4l2sink->crop.top);
- break;
- case PROP_CROP_LEFT:
- g_value_set_int (value, v4l2sink->crop.left);
- break;
- case PROP_CROP_WIDTH:
- g_value_set_uint (value, v4l2sink->crop.width);
- break;
- case PROP_CROP_HEIGHT:
- g_value_set_uint (value, v4l2sink->crop.height);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
- }
-}
-
-static GstStateChangeReturn
-gst_v4l2sink_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (element);
-
- GST_DEBUG_OBJECT (v4l2sink, "%d -> %d",
- GST_STATE_TRANSITION_CURRENT (transition),
- GST_STATE_TRANSITION_NEXT (transition));
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- /* open the device */
- if (!gst_v4l2_object_start (v4l2sink->v4l2object))
- return GST_STATE_CHANGE_FAILURE;
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- if (v4l2sink->state == STATE_STREAMING) {
- if (!gst_v4l2_object_stop_streaming (v4l2sink->v4l2object)) {
- return GST_STATE_CHANGE_FAILURE;
- }
- v4l2sink->state = STATE_PENDING_STREAMON;
- }
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- if (NULL != v4l2sink->pool)
- gst_v4l2_buffer_pool_destroy (v4l2sink->pool);
- v4l2sink->pool = NULL;
- /* close the device */
- if (!gst_v4l2_object_stop (v4l2sink->v4l2object))
- return GST_STATE_CHANGE_FAILURE;
- v4l2sink->state = STATE_OFF;
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-
-static GstCaps *
-gst_v4l2sink_get_caps (GstBaseSink * bsink)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
- GstCaps *ret;
- GSList *walk;
- GSList *formats;
-
- if (!GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) {
- /* FIXME: copy? */
- GST_DEBUG_OBJECT (v4l2sink, "device is not open");
- return
- gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD
- (v4l2sink)));
- }
-
- if (v4l2sink->probed_caps) {
- LOG_CAPS (v4l2sink, v4l2sink->probed_caps);
- return gst_caps_ref (v4l2sink->probed_caps);
- }
-
- formats = gst_v4l2_object_get_format_list (v4l2sink->v4l2object);
-
- ret = gst_caps_new_empty ();
-
- for (walk = formats; walk; walk = walk->next) {
- struct v4l2_fmtdesc *format;
-
- GstStructure *template;
-
- format = (struct v4l2_fmtdesc *) walk->data;
-
- template = gst_v4l2_object_v4l2fourcc_to_structure (format->pixelformat);
-
- if (template) {
- GstCaps *tmp;
-
- tmp =
- gst_v4l2_object_probe_caps_for_format (v4l2sink->v4l2object,
- format->pixelformat, template);
- if (tmp)
- gst_caps_append (ret, tmp);
-
- gst_structure_free (template);
- } else {
- GST_DEBUG_OBJECT (v4l2sink, "unknown format %u", format->pixelformat);
- }
- }
-
- v4l2sink->probed_caps = gst_caps_ref (ret);
-
- GST_INFO_OBJECT (v4l2sink, "probed caps: %p", ret);
- LOG_CAPS (v4l2sink, ret);
-
- return ret;
-}
-
-static gboolean
-gst_v4l2sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
- gint w = 0, h = 0;
- gboolean interlaced;
- struct v4l2_fmtdesc *format;
- guint fps_n, fps_d;
- guint size;
-
- LOG_CAPS (v4l2sink, caps);
-
- if (!GST_V4L2_IS_OPEN (v4l2sink->v4l2object)) {
- GST_DEBUG_OBJECT (v4l2sink, "device is not open");
- return FALSE;
- }
-
- if (v4l2sink->current_caps) {
- GST_DEBUG_OBJECT (v4l2sink, "already have caps set.. are they equal?");
- LOG_CAPS (v4l2sink, v4l2sink->current_caps);
- if (gst_caps_is_equal (v4l2sink->current_caps, caps)) {
- GST_DEBUG_OBJECT (v4l2sink, "yes they are!");
- return TRUE;
- }
- GST_DEBUG_OBJECT (v4l2sink, "no they aren't!");
- }
-
- if (v4l2sink->pool) {
- /* TODO: if we've already allocated buffers, we probably need to
- * do something here to free and reallocate....
- *
- * gst_v4l2_object_stop_streaming()
- * gst_v4l2_buffer_pool_destroy()
- *
- */
- GST_DEBUG_OBJECT (v4l2sink, "warning, changing caps not supported yet");
- return FALSE;
- }
-
- /* we want our own v4l2 type of fourcc codes */
- if (!gst_v4l2_object_get_caps_info (v4l2sink->v4l2object, caps,
- &format, &w, &h, &interlaced, &fps_n, &fps_d, &size)) {
- GST_DEBUG_OBJECT (v4l2sink, "can't get capture format from caps %p", caps);
- return FALSE;
- }
-
- if (!format) {
- GST_DEBUG_OBJECT (v4l2sink, "unrecognized caps!!");
- return FALSE;
- }
-
- if (!gst_v4l2_object_set_format (v4l2sink->v4l2object, format->pixelformat,
- w, h, interlaced)) {
- /* error already posted */
- return FALSE;
- }
-
- v4l2sink->video_width = w;
- v4l2sink->video_height = h;
-
- /* TODO: videosink width/height should be scaled according to
- * pixel-aspect-ratio
- */
- GST_VIDEO_SINK_WIDTH (v4l2sink) = w;
- GST_VIDEO_SINK_HEIGHT (v4l2sink) = h;
-
- v4l2sink->current_caps = gst_caps_ref (caps);
-
- return TRUE;
-}
-
-/* buffer alloc function to implement pad_alloc for upstream element */
-static GstFlowReturn
-gst_v4l2sink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size,
- GstCaps * caps, GstBuffer ** buf)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
- GstV4l2Buffer *v4l2buf;
-
- if (v4l2sink->v4l2object->vcap.capabilities & V4L2_CAP_STREAMING) {
-
- /* initialize the buffer pool if not initialized yet (first buffer): */
- if (G_UNLIKELY (!v4l2sink->pool)) {
-
- /* set_caps() might not be called yet.. so just to make sure: */
- if (!gst_v4l2sink_set_caps (bsink, caps)) {
- return GST_FLOW_ERROR;
- }
-
- GST_V4L2_CHECK_OPEN (v4l2sink->v4l2object);
-
- if (!(v4l2sink->pool = gst_v4l2_buffer_pool_new (GST_ELEMENT (v4l2sink),
- v4l2sink->v4l2object->video_fd,
- v4l2sink->num_buffers, caps, FALSE,
- V4L2_BUF_TYPE_VIDEO_OUTPUT))) {
- return GST_FLOW_ERROR;
- }
-
- gst_v4l2sink_sync_overlay_fields (v4l2sink);
- gst_v4l2sink_sync_crop_fields (v4l2sink);
-
-#ifdef HAVE_XVIDEO
- gst_v4l2_xoverlay_prepare_xwindow_id (v4l2sink->v4l2object, TRUE);
-#endif
-
- v4l2sink->state = STATE_PENDING_STREAMON;
-
- GST_INFO_OBJECT (v4l2sink, "outputting buffers via mmap()");
-
- if (v4l2sink->num_buffers != v4l2sink->pool->buffer_count) {
- v4l2sink->num_buffers = v4l2sink->pool->buffer_count;
- g_object_notify (G_OBJECT (v4l2sink), "queue-size");
- }
- }
-
- v4l2buf = gst_v4l2_buffer_pool_get (v4l2sink->pool, TRUE);
-
- if (G_LIKELY (v4l2buf)) {
- GST_DEBUG_OBJECT (v4l2sink, "allocated buffer: %p", v4l2buf);
- *buf = GST_BUFFER (v4l2buf);
- return GST_FLOW_OK;
- } else {
- GST_DEBUG_OBJECT (v4l2sink, "failed to allocate buffer");
- return GST_FLOW_ERROR;
- }
-
- } else {
- GST_ERROR_OBJECT (v4l2sink, "only supporting streaming mode for now...");
- return GST_FLOW_ERROR;
- }
-}
-
-/* called after A/V sync to render frame */
-static GstFlowReturn
-gst_v4l2sink_show_frame (GstBaseSink * bsink, GstBuffer * buf)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (bsink);
- GstBuffer *newbuf = NULL;
-
- GST_DEBUG_OBJECT (v4l2sink, "render buffer: %p", buf);
-
- if (!GST_IS_V4L2_BUFFER (buf)) {
- GstFlowReturn ret;
-
- /* special case check for sub-buffers: In certain cases, places like
- * GstBaseTransform, which might check that the buffer is writable
- * before copying metadata, timestamp, and such, will find that the
- * buffer has more than one reference to it. In these cases, they
- * will create a sub-buffer with an offset=0 and length equal to the
- * original buffer size.
- *
- * This could happen in two scenarios: (1) a tee in the pipeline, and
- * (2) because the refcnt is incremented in gst_mini_object_free()
- * before the finalize function is called, and decremented after it
- * returns.. but returning this buffer to the buffer pool in the
- * finalize function, could wake up a thread blocked in _buffer_alloc()
- * which could run and get a buffer w/ refcnt==2 before the thread
- * originally unref'ing the buffer returns from finalize function and
- * decrements the refcnt back to 1!
- */
- if (buf->parent &&
- (GST_BUFFER_DATA (buf) == GST_BUFFER_DATA (buf->parent)) &&
- (GST_BUFFER_SIZE (buf) == GST_BUFFER_SIZE (buf->parent))) {
- GST_DEBUG_OBJECT (v4l2sink, "I have a sub-buffer!");
- return gst_v4l2sink_show_frame (bsink, buf->parent);
- }
-
- GST_DEBUG_OBJECT (v4l2sink, "slow-path.. I got a %s so I need to memcpy",
- g_type_name (G_OBJECT_TYPE (buf)));
-
- ret = gst_v4l2sink_buffer_alloc (bsink,
- GST_BUFFER_OFFSET (buf), GST_BUFFER_SIZE (buf), GST_BUFFER_CAPS (buf),
- &newbuf);
-
- if (GST_FLOW_OK != ret) {
- GST_DEBUG_OBJECT (v4l2sink,
- "dropping frame! Consider increasing 'queue-size' property!");
- return GST_FLOW_OK;
- }
-
- memcpy (GST_BUFFER_DATA (newbuf),
- GST_BUFFER_DATA (buf),
- MIN (GST_BUFFER_SIZE (newbuf), GST_BUFFER_SIZE (buf)));
-
- GST_DEBUG_OBJECT (v4l2sink, "render copied buffer: %p", newbuf);
-
- buf = newbuf;
- }
-
- if (!gst_v4l2_buffer_pool_qbuf (v4l2sink->pool, GST_V4L2_BUFFER (buf))) {
- return GST_FLOW_ERROR;
- }
- if (v4l2sink->state == STATE_PENDING_STREAMON) {
- if (!gst_v4l2_object_start_streaming (v4l2sink->v4l2object)) {
- return GST_FLOW_ERROR;
- }
- v4l2sink->state = STATE_STREAMING;
- }
-
- if (!newbuf) {
- gst_buffer_ref (buf);
- }
-
- /* if the driver has more than one buffer, ie. more than just the one we
- * just queued, then dequeue one immediately to make it available via
- * _buffer_alloc():
- */
- if (gst_v4l2_buffer_pool_available_buffers (v4l2sink->pool) >
- v4l2sink->min_queued_bufs) {
- GstV4l2Buffer *v4l2buf = gst_v4l2_buffer_pool_dqbuf (v4l2sink->pool);
-
- /* note: if we get a buf, we don't want to use it directly (because
- * someone else could still hold a ref).. but instead we release our
- * reference to it, and if no one else holds a ref it will be returned
- * to the pool of available buffers.. and if not, we keep looping.
- */
- if (v4l2buf) {
- gst_buffer_unref (GST_BUFFER (v4l2buf));
- }
- }
-
- return GST_FLOW_OK;
-}
-
-#ifdef HAVE_XVIDEO
-static void
-gst_v4l2sink_navigation_send_event (GstNavigation * navigation,
- GstStructure * structure)
-{
- GstV4l2Sink *v4l2sink = GST_V4L2SINK (navigation);
- GstV4l2Xv *xv = v4l2sink->v4l2object->xv;
- GstPad *peer;
-
- if (!xv)
- return;
-
- if ((peer = gst_pad_get_peer (GST_VIDEO_SINK_PAD (v4l2sink)))) {
- GstVideoRectangle rect;
- gdouble x, y, xscale = 1.0, yscale = 1.0;
-
- gst_v4l2_xoverlay_get_render_rect (v4l2sink->v4l2object, &rect);
-
- /* We calculate scaling using the original video frames geometry to
- * include pixel aspect ratio scaling.
- */
- xscale = (gdouble) v4l2sink->video_width / rect.w;
- yscale = (gdouble) v4l2sink->video_height / rect.h;
-
- /* Converting pointer coordinates to the non scaled geometry */
- if (gst_structure_get_double (structure, "pointer_x", &x)) {
- x = MIN (x, rect.x + rect.w);
- x = MAX (x - rect.x, 0);
- gst_structure_set (structure, "pointer_x", G_TYPE_DOUBLE,
- (gdouble) x * xscale, NULL);
- }
- if (gst_structure_get_double (structure, "pointer_y", &y)) {
- y = MIN (y, rect.y + rect.h);
- y = MAX (y - rect.y, 0);
- gst_structure_set (structure, "pointer_y", G_TYPE_DOUBLE,
- (gdouble) y * yscale, NULL);
- }
-
- gst_pad_send_event (peer, gst_event_new_navigation (structure));
- gst_object_unref (peer);
- }
-}
-#endif
diff --git a/wearable/sys/v4l2/gstv4l2sink.h b/wearable/sys/v4l2/gstv4l2sink.h
deleted file mode 100644
index 8fe8222..0000000
--- a/wearable/sys/v4l2/gstv4l2sink.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2009 Texas Instruments, Inc - http://www.ti.com/
- *
- * Description: V4L2 sink element
- * Created on: Jul 2, 2009
- * Author: Rob Clark <rob@ti.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GSTV4L2SINK_H__
-#define __GSTV4L2SINK_H__
-
-#include <gst/video/gstvideosink.h>
-#include <gstv4l2object.h>
-#include <gstv4l2bufferpool.h>
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2sink_debug);
-
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_V4L2SINK \
- (gst_v4l2sink_get_type())
-#define GST_V4L2SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_V4L2SINK, GstV4l2Sink))
-#define GST_V4L2SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_V4L2SINK, GstV4l2SinkClass))
-#define GST_IS_V4L2SINK(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_V4L2SINK))
-#define GST_IS_V4L2SINK_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_V4L2SINK))
-
-typedef struct _GstV4l2Sink GstV4l2Sink;
-typedef struct _GstV4l2SinkClass GstV4l2SinkClass;
-
-
-struct _GstV4l2Sink {
- GstVideoSink videosink;
-
- /*< private >*/
- GstV4l2Object * v4l2object;
- GstCaps *probed_caps; /* all supported caps of underlying v4l2 device */
- GstCaps *current_caps; /* the current negotiated caps */
- GstV4l2BufferPool *pool;
- guint32 num_buffers;
- guint32 min_queued_bufs;
-
- gint video_width, video_height; /* original (unscaled) video w/h */
-
- /*
- * field to store requested overlay and crop top/left/width/height props:
- * note, could maybe be combined with 'vwin' field in GstV4l2Object?
- */
- struct v4l2_rect overlay, crop;
-
- /*
- * bitmask to track which overlay and crop fields user has requested by
- * setting properties:
- */
- guint8 overlay_fields_set, crop_fields_set;
-
- guint8 state;
-};
-
-struct _GstV4l2SinkClass {
- GstVideoSinkClass parent_class;
-
- GList *v4l2_class_devices;
-};
-
-GType gst_v4l2sink_get_type(void);
-
-G_END_DECLS
-
-
-#endif /* __GSTV4L2SINK_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2src.c b/wearable/sys/v4l2/gstv4l2src.c
deleted file mode 100644
index f8ae09c..0000000
--- a/wearable/sys/v4l2/gstv4l2src.c
+++ /dev/null
@@ -1,1072 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2src.c: Video4Linux2 source element
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-v4l2src
- *
- * v4l2src can be used to capture video from v4l2 devices, like webcams and tv
- * cards.
- *
- * <refsect2>
- * <title>Example launch lines</title>
- * |[
- * gst-launch v4l2src ! xvimagesink
- * ]| This pipeline shows the video captured from /dev/video0 tv card and for
- * webcams.
- * |[
- * gst-launch v4l2src ! jpegdec ! xvimagesink
- * ]| This pipeline shows the video captured from a webcam that delivers jpeg
- * images.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#undef HAVE_XVIDEO
-
-#include <string.h>
-#include <sys/time.h>
-#include "v4l2src_calls.h"
-#include <unistd.h>
-
-#include "gstv4l2colorbalance.h"
-#include "gstv4l2tuner.h"
-#ifdef HAVE_XVIDEO
-#include "gstv4l2xoverlay.h"
-#endif
-#include "gstv4l2vidorient.h"
-
-#include "gst/gst-i18n-plugin.h"
-
-GST_DEBUG_CATEGORY (v4l2src_debug);
-#define GST_CAT_DEFAULT v4l2src_debug
-
-#define PROP_DEF_QUEUE_SIZE 2
-#define PROP_DEF_ALWAYS_COPY TRUE
-#define PROP_DEF_DECIMATE 1
-
-#define DEFAULT_PROP_DEVICE "/dev/video0"
-
-enum
-{
- PROP_0,
- V4L2_STD_OBJECT_PROPS,
- PROP_QUEUE_SIZE,
- PROP_ALWAYS_COPY,
- PROP_DECIMATE
-};
-
-GST_IMPLEMENT_V4L2_PROBE_METHODS (GstV4l2SrcClass, gst_v4l2src);
-GST_IMPLEMENT_V4L2_COLOR_BALANCE_METHODS (GstV4l2Src, gst_v4l2src);
-GST_IMPLEMENT_V4L2_TUNER_METHODS (GstV4l2Src, gst_v4l2src);
-#ifdef HAVE_XVIDEO
-GST_IMPLEMENT_V4L2_XOVERLAY_METHODS (GstV4l2Src, gst_v4l2src);
-#endif
-GST_IMPLEMENT_V4L2_VIDORIENT_METHODS (GstV4l2Src, gst_v4l2src);
-
-static void gst_v4l2src_uri_handler_init (gpointer g_iface,
- gpointer iface_data);
-
-static gboolean
-gst_v4l2src_iface_supported (GstImplementsInterface * iface, GType iface_type)
-{
- GstV4l2Object *v4l2object = GST_V4L2SRC (iface)->v4l2object;
-
-#ifdef HAVE_XVIDEO
- if (!(iface_type == GST_TYPE_TUNER ||
- iface_type == GST_TYPE_X_OVERLAY ||
- iface_type == GST_TYPE_COLOR_BALANCE ||
- iface_type == GST_TYPE_VIDEO_ORIENTATION))
- return FALSE;
-#else
- if (!(iface_type == GST_TYPE_TUNER ||
- iface_type == GST_TYPE_COLOR_BALANCE ||
- iface_type == GST_TYPE_VIDEO_ORIENTATION))
- return FALSE;
-#endif
-
- if (v4l2object->video_fd == -1)
- return FALSE;
-
-#ifdef HAVE_XVIDEO
- if (iface_type == GST_TYPE_X_OVERLAY && !GST_V4L2_IS_OVERLAY (v4l2object))
- return FALSE;
-#endif
-
- return TRUE;
-}
-
-static void
-gst_v4l2src_interface_init (GstImplementsInterfaceClass * klass)
-{
- /*
- * default virtual functions
- */
- klass->supported = gst_v4l2src_iface_supported;
-}
-
-static void
-gst_v4l2src_init_interfaces (GType type)
-{
- static const GInterfaceInfo urihandler_info = {
- gst_v4l2src_uri_handler_init,
- NULL,
- NULL
- };
-
- static const GInterfaceInfo v4l2iface_info = {
- (GInterfaceInitFunc) gst_v4l2src_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_tuner_info = {
- (GInterfaceInitFunc) gst_v4l2src_tuner_interface_init,
- NULL,
- NULL,
- };
-#ifdef HAVE_XVIDEO
- /* FIXME: does GstXOverlay for v4l2src make sense in a GStreamer context? */
- static const GInterfaceInfo v4l2_xoverlay_info = {
- (GInterfaceInitFunc) gst_v4l2src_xoverlay_interface_init,
- NULL,
- NULL,
- };
-#endif
- static const GInterfaceInfo v4l2_colorbalance_info = {
- (GInterfaceInitFunc) gst_v4l2src_color_balance_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_videoorientation_info = {
- (GInterfaceInitFunc) gst_v4l2src_video_orientation_interface_init,
- NULL,
- NULL,
- };
- static const GInterfaceInfo v4l2_propertyprobe_info = {
- (GInterfaceInitFunc) gst_v4l2src_property_probe_interface_init,
- NULL,
- NULL,
- };
-
- g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &urihandler_info);
- g_type_add_interface_static (type,
- GST_TYPE_IMPLEMENTS_INTERFACE, &v4l2iface_info);
- g_type_add_interface_static (type, GST_TYPE_TUNER, &v4l2_tuner_info);
-#ifdef HAVE_XVIDEO
- g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &v4l2_xoverlay_info);
-#endif
- g_type_add_interface_static (type,
- GST_TYPE_COLOR_BALANCE, &v4l2_colorbalance_info);
- g_type_add_interface_static (type,
- GST_TYPE_VIDEO_ORIENTATION, &v4l2_videoorientation_info);
- g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE,
- &v4l2_propertyprobe_info);
-}
-
-GST_BOILERPLATE_FULL (GstV4l2Src, gst_v4l2src, GstPushSrc, GST_TYPE_PUSH_SRC,
- gst_v4l2src_init_interfaces);
-
-static void gst_v4l2src_dispose (GObject * object);
-static void gst_v4l2src_finalize (GstV4l2Src * v4l2src);
-
-/* element methods */
-static GstStateChangeReturn gst_v4l2src_change_state (GstElement * element,
- GstStateChange transition);
-
-/* basesrc methods */
-static gboolean gst_v4l2src_start (GstBaseSrc * src);
-static gboolean gst_v4l2src_unlock (GstBaseSrc * src);
-static gboolean gst_v4l2src_unlock_stop (GstBaseSrc * src);
-static gboolean gst_v4l2src_stop (GstBaseSrc * src);
-static gboolean gst_v4l2src_set_caps (GstBaseSrc * src, GstCaps * caps);
-static GstCaps *gst_v4l2src_get_caps (GstBaseSrc * src);
-static gboolean gst_v4l2src_query (GstBaseSrc * bsrc, GstQuery * query);
-static GstFlowReturn gst_v4l2src_create (GstPushSrc * src, GstBuffer ** out);
-static void gst_v4l2src_fixate (GstBaseSrc * basesrc, GstCaps * caps);
-static gboolean gst_v4l2src_negotiate (GstBaseSrc * basesrc);
-
-static void gst_v4l2src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_v4l2src_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-/* get_frame io methods */
-static GstFlowReturn
-gst_v4l2src_get_read (GstV4l2Src * v4l2src, GstBuffer ** buf);
-static GstFlowReturn
-gst_v4l2src_get_mmap (GstV4l2Src * v4l2src, GstBuffer ** buf);
-
-static void
-gst_v4l2src_base_init (gpointer g_class)
-{
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
- GstV4l2SrcClass *gstv4l2src_class = GST_V4L2SRC_CLASS (g_class);
- GstPadTemplate *pad_template;
-
- gstv4l2src_class->v4l2_class_devices = NULL;
-
- GST_DEBUG_CATEGORY_INIT (v4l2src_debug, "v4l2src", 0, "V4L2 source element");
-
- gst_element_class_set_details_simple (gstelement_class,
- "Video (video4linux2) Source", "Source/Video",
- "Reads frames from a Video4Linux2 device",
- "Edgard Lima <edgard.lima@indt.org.br>,"
- " Stefan Kost <ensonic@users.sf.net>");
-
- pad_template =
- gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_v4l2_object_get_all_caps ());
- gst_element_class_add_pad_template (gstelement_class, pad_template);
- gst_object_unref (pad_template);
-}
-
-static void
-gst_v4l2src_class_init (GstV4l2SrcClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *element_class;
- GstBaseSrcClass *basesrc_class;
- GstPushSrcClass *pushsrc_class;
-
- gobject_class = G_OBJECT_CLASS (klass);
- element_class = GST_ELEMENT_CLASS (klass);
- basesrc_class = GST_BASE_SRC_CLASS (klass);
- pushsrc_class = GST_PUSH_SRC_CLASS (klass);
-
- gobject_class->dispose = gst_v4l2src_dispose;
- gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2src_finalize;
- gobject_class->set_property = gst_v4l2src_set_property;
- gobject_class->get_property = gst_v4l2src_get_property;
-
- element_class->change_state = gst_v4l2src_change_state;
-
- gst_v4l2_object_install_properties_helper (gobject_class,
- DEFAULT_PROP_DEVICE);
- g_object_class_install_property (gobject_class, PROP_QUEUE_SIZE,
- g_param_spec_uint ("queue-size", "Queue size",
- "Number of buffers to be enqueud in the driver in streaming mode",
- GST_V4L2_MIN_BUFFERS, GST_V4L2_MAX_BUFFERS, PROP_DEF_QUEUE_SIZE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_ALWAYS_COPY,
- g_param_spec_boolean ("always-copy", "Always Copy",
- "If the buffer will or not be used directly from mmap",
- PROP_DEF_ALWAYS_COPY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- /**
- * GstV4l2Src:decimate
- *
- * Only use every nth frame
- *
- * Since: 0.10.26
- */
- g_object_class_install_property (gobject_class, PROP_DECIMATE,
- g_param_spec_int ("decimate", "Decimate",
- "Only use every nth frame", 1, G_MAXINT,
- PROP_DEF_DECIMATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_v4l2src_get_caps);
- basesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_v4l2src_set_caps);
- basesrc_class->start = GST_DEBUG_FUNCPTR (gst_v4l2src_start);
- basesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_v4l2src_unlock);
- basesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_v4l2src_unlock_stop);
- basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_v4l2src_stop);
- basesrc_class->query = GST_DEBUG_FUNCPTR (gst_v4l2src_query);
- basesrc_class->fixate = GST_DEBUG_FUNCPTR (gst_v4l2src_fixate);
- basesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_v4l2src_negotiate);
-
- pushsrc_class->create = GST_DEBUG_FUNCPTR (gst_v4l2src_create);
-}
-
-static void
-gst_v4l2src_init (GstV4l2Src * v4l2src, GstV4l2SrcClass * klass)
-{
- /* fixme: give an update_fps_function */
- v4l2src->v4l2object = gst_v4l2_object_new (GST_ELEMENT (v4l2src),
- V4L2_BUF_TYPE_VIDEO_CAPTURE, DEFAULT_PROP_DEVICE,
- gst_v4l2_get_input, gst_v4l2_set_input, NULL);
-
- /* number of buffers requested */
- v4l2src->num_buffers = PROP_DEF_QUEUE_SIZE;
-
- v4l2src->always_copy = PROP_DEF_ALWAYS_COPY;
- v4l2src->decimate = PROP_DEF_DECIMATE;
-
- v4l2src->is_capturing = FALSE;
-
- gst_base_src_set_format (GST_BASE_SRC (v4l2src), GST_FORMAT_TIME);
- gst_base_src_set_live (GST_BASE_SRC (v4l2src), TRUE);
-
- v4l2src->fps_d = 0;
- v4l2src->fps_n = 0;
-}
-
-
-static void
-gst_v4l2src_dispose (GObject * object)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (object);
-
- if (v4l2src->probed_caps) {
- gst_caps_unref (v4l2src->probed_caps);
- }
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-
-static void
-gst_v4l2src_finalize (GstV4l2Src * v4l2src)
-{
- gst_v4l2_object_destroy (v4l2src->v4l2object);
-
- G_OBJECT_CLASS (parent_class)->finalize ((GObject *) (v4l2src));
-}
-
-
-static void
-gst_v4l2src_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (object);
-
- if (!gst_v4l2_object_set_property_helper (v4l2src->v4l2object,
- prop_id, value, pspec)) {
- switch (prop_id) {
- case PROP_QUEUE_SIZE:
- v4l2src->num_buffers = g_value_get_uint (value);
- break;
- case PROP_ALWAYS_COPY:
- v4l2src->always_copy = g_value_get_boolean (value);
- break;
- case PROP_DECIMATE:
- v4l2src->decimate = g_value_get_int (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
- }
-}
-
-
-static void
-gst_v4l2src_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (object);
-
- if (!gst_v4l2_object_get_property_helper (v4l2src->v4l2object,
- prop_id, value, pspec)) {
- switch (prop_id) {
- case PROP_QUEUE_SIZE:
- g_value_set_uint (value, v4l2src->num_buffers);
- break;
- case PROP_ALWAYS_COPY:
- g_value_set_boolean (value, v4l2src->always_copy);
- break;
- case PROP_DECIMATE:
- g_value_set_int (value, v4l2src->decimate);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
- }
-}
-
-
-/* this function is a bit of a last resort */
-static void
-gst_v4l2src_fixate (GstBaseSrc * basesrc, GstCaps * caps)
-{
- GstStructure *structure;
- gint i;
-
- GST_DEBUG_OBJECT (basesrc, "fixating caps %" GST_PTR_FORMAT, caps);
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- const GValue *v;
-
- structure = gst_caps_get_structure (caps, i);
-
- /* FIXME such sizes? we usually fixate to something in the 320x200
- * range... */
- /* We are fixating to greater possble size (limited to GST_V4L2_MAX_SIZE)
- and the maximum framerate resolution for that size */
- gst_structure_fixate_field_nearest_int (structure, "width",
- GST_V4L2_MAX_SIZE);
- gst_structure_fixate_field_nearest_int (structure, "height",
- GST_V4L2_MAX_SIZE);
- gst_structure_fixate_field_nearest_fraction (structure, "framerate",
- G_MAXINT, 1);
-
- v = gst_structure_get_value (structure, "format");
- if (v && G_VALUE_TYPE (v) != GST_TYPE_FOURCC) {
- guint32 fourcc;
-
- g_return_if_fail (G_VALUE_TYPE (v) == GST_TYPE_LIST);
-
- fourcc = gst_value_get_fourcc (gst_value_list_get_value (v, 0));
- gst_structure_set (structure, "format", GST_TYPE_FOURCC, fourcc, NULL);
- }
- }
-
- GST_DEBUG_OBJECT (basesrc, "fixated caps %" GST_PTR_FORMAT, caps);
-}
-
-
-static gboolean
-gst_v4l2src_negotiate (GstBaseSrc * basesrc)
-{
- GstCaps *thiscaps;
- GstCaps *caps = NULL;
- GstCaps *peercaps = NULL;
- gboolean result = FALSE;
-
- /* first see what is possible on our source pad */
- thiscaps = gst_pad_get_caps (GST_BASE_SRC_PAD (basesrc));
- GST_DEBUG_OBJECT (basesrc, "caps of src: %" GST_PTR_FORMAT, thiscaps);
- LOG_CAPS (basesrc, thiscaps);
-
- /* nothing or anything is allowed, we're done */
- if (thiscaps == NULL || gst_caps_is_any (thiscaps))
- goto no_nego_needed;
-
- /* get the peer caps */
- peercaps = gst_pad_peer_get_caps (GST_BASE_SRC_PAD (basesrc));
- GST_DEBUG_OBJECT (basesrc, "caps of peer: %" GST_PTR_FORMAT, peercaps);
- LOG_CAPS (basesrc, peercaps);
- if (peercaps && !gst_caps_is_any (peercaps)) {
- GstCaps *icaps = NULL;
- int i;
-
- /* Prefer the first caps we are compatible with that the peer proposed */
- for (i = 0; i < gst_caps_get_size (peercaps); i++) {
- /* get intersection */
- GstCaps *ipcaps = gst_caps_copy_nth (peercaps, i);
-
- GST_DEBUG_OBJECT (basesrc, "peer: %" GST_PTR_FORMAT, ipcaps);
- LOG_CAPS (basesrc, ipcaps);
-
- icaps = gst_caps_intersect (thiscaps, ipcaps);
- gst_caps_unref (ipcaps);
-
- if (!gst_caps_is_empty (icaps))
- break;
-
- gst_caps_unref (icaps);
- icaps = NULL;
- }
-
- GST_DEBUG_OBJECT (basesrc, "intersect: %" GST_PTR_FORMAT, icaps);
- LOG_CAPS (basesrc, icaps);
- if (icaps) {
- /* If there are multiple intersections pick the one with the smallest
- * resolution strictly bigger then the first peer caps */
- if (gst_caps_get_size (icaps) > 1) {
- GstStructure *s = gst_caps_get_structure (peercaps, 0);
-
- int best = 0;
-
- int twidth, theight;
-
- int width = G_MAXINT, height = G_MAXINT;
-
- if (gst_structure_get_int (s, "width", &twidth)
- && gst_structure_get_int (s, "height", &theight)) {
-
- /* Walk the structure backwards to get the first entry of the
- * smallest resolution bigger (or equal to) the preferred resolution)
- */
- for (i = gst_caps_get_size (icaps) - 1; i >= 0; i--) {
- GstStructure *is = gst_caps_get_structure (icaps, i);
-
- int w, h;
-
- if (gst_structure_get_int (is, "width", &w)
- && gst_structure_get_int (is, "height", &h)) {
- if (w >= twidth && w <= width && h >= theight && h <= height) {
- width = w;
- height = h;
- best = i;
- }
- }
- }
- }
-
- caps = gst_caps_copy_nth (icaps, best);
- gst_caps_unref (icaps);
- } else {
- caps = icaps;
- }
- }
- gst_caps_unref (thiscaps);
- } else {
- /* no peer or peer have ANY caps, work with our own caps then */
- caps = thiscaps;
- }
- if (peercaps)
- gst_caps_unref (peercaps);
- if (caps) {
- caps = gst_caps_make_writable (caps);
- gst_caps_truncate (caps);
-
- /* now fixate */
- if (!gst_caps_is_empty (caps)) {
- gst_pad_fixate_caps (GST_BASE_SRC_PAD (basesrc), caps);
- GST_DEBUG_OBJECT (basesrc, "fixated to: %" GST_PTR_FORMAT, caps);
- LOG_CAPS (basesrc, caps);
-
- if (gst_caps_is_any (caps)) {
- /* hmm, still anything, so element can do anything and
- * nego is not needed */
- result = TRUE;
- } else if (gst_caps_is_fixed (caps)) {
- /* yay, fixed caps, use those then */
- if (gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps))
- result = TRUE;
- }
- }
- gst_caps_unref (caps);
- }
- return result;
-
-no_nego_needed:
- {
- GST_DEBUG_OBJECT (basesrc, "no negotiation needed");
- if (thiscaps)
- gst_caps_unref (thiscaps);
- return TRUE;
- }
-}
-
-static GstCaps *
-gst_v4l2src_get_caps (GstBaseSrc * src)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
- GstCaps *ret;
- GSList *walk;
- GSList *formats;
-
- if (!GST_V4L2_IS_OPEN (v4l2src->v4l2object)) {
- /* FIXME: copy? */
- return
- gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD
- (v4l2src)));
- }
-
- if (v4l2src->probed_caps)
- return gst_caps_ref (v4l2src->probed_caps);
-
- formats = gst_v4l2_object_get_format_list (v4l2src->v4l2object);
-
- ret = gst_caps_new_empty ();
-
- for (walk = formats; walk; walk = walk->next) {
- struct v4l2_fmtdesc *format;
-
- GstStructure *template;
-
- format = (struct v4l2_fmtdesc *) walk->data;
-
- template = gst_v4l2_object_v4l2fourcc_to_structure (format->pixelformat);
-
- if (template) {
- GstCaps *tmp;
-
- tmp =
- gst_v4l2_object_probe_caps_for_format (v4l2src->v4l2object,
- format->pixelformat, template);
- if (tmp)
- gst_caps_append (ret, tmp);
-
- gst_structure_free (template);
- } else {
- GST_DEBUG_OBJECT (v4l2src, "unknown format %u", format->pixelformat);
- }
- }
-
- v4l2src->probed_caps = gst_caps_ref (ret);
-
- GST_INFO_OBJECT (v4l2src, "probed caps: %" GST_PTR_FORMAT, ret);
-
- return ret;
-}
-
-static gboolean
-gst_v4l2src_set_caps (GstBaseSrc * src, GstCaps * caps)
-{
- GstV4l2Src *v4l2src;
- gint w = 0, h = 0;
- gboolean interlaced;
- struct v4l2_fmtdesc *format;
- guint fps_n, fps_d;
- guint size;
-
- v4l2src = GST_V4L2SRC (src);
-
- /* if we're not open, punt -- we'll get setcaps'd later via negotiate */
- if (!GST_V4L2_IS_OPEN (v4l2src->v4l2object))
- return FALSE;
-
- /* make sure we stop capturing and dealloc buffers */
- if (GST_V4L2_IS_ACTIVE (v4l2src->v4l2object)) {
- /* both will throw an element-error on failure */
- if (!gst_v4l2src_capture_stop (v4l2src))
- return FALSE;
- if (!gst_v4l2src_capture_deinit (v4l2src))
- return FALSE;
- }
-
- /* we want our own v4l2 type of fourcc codes */
- if (!gst_v4l2_object_get_caps_info (v4l2src->v4l2object, caps, &format, &w,
- &h, &interlaced, &fps_n, &fps_d, &size)) {
- GST_INFO_OBJECT (v4l2src,
- "can't get capture format from caps %" GST_PTR_FORMAT, caps);
- return FALSE;
- }
-
- GST_DEBUG_OBJECT (v4l2src, "trying to set_capture %dx%d at %d/%d fps, "
- "format %s", w, h, fps_n, fps_d, format->description);
-
- if (!gst_v4l2src_set_capture (v4l2src, format->pixelformat, w, h,
- interlaced, fps_n, fps_d))
- /* error already posted */
- return FALSE;
-
- if (!gst_v4l2src_capture_init (v4l2src, caps))
- return FALSE;
-
- if (v4l2src->use_mmap) {
- v4l2src->get_frame = gst_v4l2src_get_mmap;
- } else {
- v4l2src->get_frame = gst_v4l2src_get_read;
- }
-
- if (!gst_v4l2src_capture_start (v4l2src))
- return FALSE;
-
- /* now store the expected output size */
- v4l2src->frame_byte_size = size;
-
- return TRUE;
-}
-
-static gboolean
-gst_v4l2src_query (GstBaseSrc * bsrc, GstQuery * query)
-{
- GstV4l2Src *src;
-
- gboolean res = FALSE;
-
- src = GST_V4L2SRC (bsrc);
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_LATENCY:{
- GstClockTime min_latency, max_latency;
-
- /* device must be open */
- if (!GST_V4L2_IS_OPEN (src->v4l2object)) {
- GST_WARNING_OBJECT (src,
- "Can't give latency since device isn't open !");
- goto done;
- }
-
- /* we must have a framerate */
- if (src->fps_n <= 0 || src->fps_d <= 0) {
- GST_WARNING_OBJECT (src,
- "Can't give latency since framerate isn't fixated !");
- goto done;
- }
-
- /* min latency is the time to capture one frame */
- min_latency =
- gst_util_uint64_scale_int (GST_SECOND, src->fps_d, src->fps_n);
-
- /* max latency is total duration of the frame buffer */
- max_latency = src->num_buffers * min_latency;
-
- GST_DEBUG_OBJECT (bsrc,
- "report latency min %" GST_TIME_FORMAT " max %" GST_TIME_FORMAT,
- GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
-
- /* we are always live, the min latency is 1 frame and the max latency is
- * the complete buffer of frames. */
- gst_query_set_latency (query, TRUE, min_latency, max_latency);
-
- res = TRUE;
- break;
- }
- default:
- res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
- break;
- }
-
-done:
-
- return res;
-}
-
-/* start and stop are not symmetric -- start will open the device, but not start
- * capture. it's setcaps that will start capture, which is called via basesrc's
- * negotiate method. stop will both stop capture and close the device.
- */
-static gboolean
-gst_v4l2src_start (GstBaseSrc * src)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
-
- v4l2src->offset = 0;
-
- /* activate settings for first frame */
- v4l2src->ctrl_time = 0;
- gst_object_sync_values (G_OBJECT (src), v4l2src->ctrl_time);
-
- return TRUE;
-}
-
-static gboolean
-gst_v4l2src_unlock (GstBaseSrc * src)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
-
- GST_LOG_OBJECT (src, "Flushing");
- gst_poll_set_flushing (v4l2src->v4l2object->poll, TRUE);
-
- return TRUE;
-}
-
-static gboolean
-gst_v4l2src_unlock_stop (GstBaseSrc * src)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
-
- GST_LOG_OBJECT (src, "No longer flushing");
- gst_poll_set_flushing (v4l2src->v4l2object->poll, FALSE);
-
- return TRUE;
-}
-
-static gboolean
-gst_v4l2src_stop (GstBaseSrc * src)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
-
- if (GST_V4L2_IS_ACTIVE (v4l2src->v4l2object)
- && !gst_v4l2src_capture_stop (v4l2src))
- return FALSE;
-
- if (v4l2src->v4l2object->buffer != NULL) {
- if (!gst_v4l2src_capture_deinit (v4l2src))
- return FALSE;
- }
-
- v4l2src->fps_d = 0;
- v4l2src->fps_n = 0;
-
- return TRUE;
-}
-
-static GstStateChangeReturn
-gst_v4l2src_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstV4l2Src *v4l2src = GST_V4L2SRC (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- /* open the device */
- if (!gst_v4l2_object_start (v4l2src->v4l2object))
- return GST_STATE_CHANGE_FAILURE;
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_READY_TO_NULL:
- /* close the device */
- if (!gst_v4l2_object_stop (v4l2src->v4l2object))
- return GST_STATE_CHANGE_FAILURE;
-
- if (v4l2src->probed_caps) {
- gst_caps_unref (v4l2src->probed_caps);
- v4l2src->probed_caps = NULL;
- }
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-static GstFlowReturn
-gst_v4l2src_get_read (GstV4l2Src * v4l2src, GstBuffer ** buf)
-{
- gint amount;
- gint ret;
-
- gint buffersize;
-
- buffersize = v4l2src->frame_byte_size;
- /* In case the size per frame is unknown assume it's a streaming format (e.g.
- * mpegts) and grab a reasonable default size instead */
- if (buffersize == 0)
- buffersize = GST_BASE_SRC (v4l2src)->blocksize;
-
- *buf = gst_buffer_new_and_alloc (buffersize);
-
- do {
- ret = gst_poll_wait (v4l2src->v4l2object->poll, GST_CLOCK_TIME_NONE);
- if (G_UNLIKELY (ret < 0)) {
- if (errno == EBUSY)
- goto stopped;
- if (errno == ENXIO) {
- GST_DEBUG_OBJECT (v4l2src,
- "v4l2 device doesn't support polling. Disabling");
- v4l2src->v4l2object->can_poll_device = FALSE;
- } else {
- if (errno != EAGAIN && errno != EINTR)
- goto select_error;
- }
- }
- amount =
- v4l2_read (v4l2src->v4l2object->video_fd, GST_BUFFER_DATA (*buf),
- buffersize);
- if (amount == buffersize) {
- break;
- } else if (amount == -1) {
- if (errno == EAGAIN || errno == EINTR) {
- continue;
- } else
- goto read_error;
- } else {
- /* short reads can happen if a signal interrupts the read */
- continue;
- }
- } while (TRUE);
-
- /* we set the buffer metadata in gst_v4l2src_create() */
-
- return GST_FLOW_OK;
-
- /* ERRORS */
-select_error:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ, (NULL),
- ("select error %d: %s (%d)", ret, g_strerror (errno), errno));
- return GST_FLOW_ERROR;
- }
-stopped:
- {
- GST_DEBUG ("stop called");
- return GST_FLOW_WRONG_STATE;
- }
-read_error:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Error reading %d bytes from device '%s'."),
- buffersize, v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM);
- gst_buffer_unref (*buf);
- return GST_FLOW_ERROR;
- }
-}
-
-static GstFlowReturn
-gst_v4l2src_get_mmap (GstV4l2Src * v4l2src, GstBuffer ** buf)
-{
- GstBuffer *temp;
- GstFlowReturn ret;
- guint size;
- guint count = 0;
-
-again:
- ret = gst_v4l2src_grab_frame (v4l2src, &temp);
- if (G_UNLIKELY (ret != GST_FLOW_OK))
- goto done;
-
- if (v4l2src->frame_byte_size > 0) {
- size = GST_BUFFER_SIZE (temp);
-
- /* if size does not match what we expected, try again */
- if (size != v4l2src->frame_byte_size) {
- GST_ELEMENT_WARNING (v4l2src, RESOURCE, READ,
- (_("Got unexpected frame size of %u instead of %u."),
- size, v4l2src->frame_byte_size), (NULL));
- gst_buffer_unref (temp);
- if (count++ > 50)
- goto size_error;
-
- goto again;
- }
- }
-
- *buf = temp;
-done:
- return ret;
-
- /* ERRORS */
-size_error:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Error reading %d bytes on device '%s'."),
- v4l2src->frame_byte_size, v4l2src->v4l2object->videodev), (NULL));
- return GST_FLOW_ERROR;
- }
-}
-
-static GstFlowReturn
-gst_v4l2src_create (GstPushSrc * src, GstBuffer ** buf)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (src);
- int i;
- GstFlowReturn ret;
-
- for (i = 0; i < v4l2src->decimate - 1; i++) {
- ret = v4l2src->get_frame (v4l2src, buf);
- if (ret != GST_FLOW_OK) {
- return ret;
- }
- gst_buffer_unref (*buf);
- }
-
- ret = v4l2src->get_frame (v4l2src, buf);
-
- /* set buffer metadata */
- if (G_LIKELY (ret == GST_FLOW_OK && *buf)) {
- GstClock *clock;
- GstClockTime timestamp;
-
- GST_BUFFER_OFFSET (*buf) = v4l2src->offset++;
- GST_BUFFER_OFFSET_END (*buf) = v4l2src->offset;
-
- /* timestamps, LOCK to get clock and base time. */
- /* FIXME: element clock and base_time is rarely changing */
- GST_OBJECT_LOCK (v4l2src);
- if ((clock = GST_ELEMENT_CLOCK (v4l2src))) {
- /* we have a clock, get base time and ref clock */
- timestamp = GST_ELEMENT (v4l2src)->base_time;
- gst_object_ref (clock);
- } else {
- /* no clock, can't set timestamps */
- timestamp = GST_CLOCK_TIME_NONE;
- }
- GST_OBJECT_UNLOCK (v4l2src);
-
- if (G_LIKELY (clock)) {
- /* the time now is the time of the clock minus the base time */
- timestamp = gst_clock_get_time (clock) - timestamp;
- gst_object_unref (clock);
-
- /* if we have a framerate adjust timestamp for frame latency */
- if (GST_CLOCK_TIME_IS_VALID (v4l2src->duration)) {
- if (timestamp > v4l2src->duration)
- timestamp -= v4l2src->duration;
- else
- timestamp = 0;
- }
- }
-
- /* activate settings for next frame */
- if (GST_CLOCK_TIME_IS_VALID (v4l2src->duration)) {
- v4l2src->ctrl_time += v4l2src->duration;
- } else {
- /* this is not very good (as it should be the next timestamp),
- * still good enough for linear fades (as long as it is not -1)
- */
- v4l2src->ctrl_time = timestamp;
- }
- gst_object_sync_values (G_OBJECT (src), v4l2src->ctrl_time);
- GST_INFO_OBJECT (src, "sync to %" GST_TIME_FORMAT,
- GST_TIME_ARGS (v4l2src->ctrl_time));
-
- /* FIXME: use the timestamp from the buffer itself! */
- GST_BUFFER_TIMESTAMP (*buf) = timestamp;
- GST_BUFFER_DURATION (*buf) = v4l2src->duration;
- }
- return ret;
-}
-
-
-/* GstURIHandler interface */
-static GstURIType
-gst_v4l2src_uri_get_type (void)
-{
- return GST_URI_SRC;
-}
-
-static gchar **
-gst_v4l2src_uri_get_protocols (void)
-{
- static gchar *protocols[] = { (char *) "v4l2", NULL };
-
- return protocols;
-}
-
-static const gchar *
-gst_v4l2src_uri_get_uri (GstURIHandler * handler)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (handler);
-
- if (v4l2src->v4l2object->videodev != NULL) {
- gchar uri[256];
-
- /* need to return a const string, but also don't want to leak the generated
- * string, so just intern it - there's a limited number of video devices
- * after all */
- g_snprintf (uri, sizeof (uri), "v4l2://%s", v4l2src->v4l2object->videodev);
- return g_intern_string (uri);
- }
-
- return "v4l2://";
-}
-
-static gboolean
-gst_v4l2src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
-{
- GstV4l2Src *v4l2src = GST_V4L2SRC (handler);
- const gchar *device = DEFAULT_PROP_DEVICE;
-
- if (strcmp (uri, "v4l2://") != 0) {
- device = uri + 7;
- }
- g_object_set (v4l2src, "device", device, NULL);
-
- return TRUE;
-}
-
-
-static void
-gst_v4l2src_uri_handler_init (gpointer g_iface, gpointer iface_data)
-{
- GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
-
- iface->get_type = gst_v4l2src_uri_get_type;
- iface->get_protocols = gst_v4l2src_uri_get_protocols;
- iface->get_uri = gst_v4l2src_uri_get_uri;
- iface->set_uri = gst_v4l2src_uri_set_uri;
-}
diff --git a/wearable/sys/v4l2/gstv4l2src.h b/wearable/sys/v4l2/gstv4l2src.h
deleted file mode 100644
index 0dd794a..0000000
--- a/wearable/sys/v4l2/gstv4l2src.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2001-2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2src.h: BT8x8/V4L2 source element
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2SRC_H__
-#define __GST_V4L2SRC_H__
-
-#include <gstv4l2object.h>
-#include <gstv4l2bufferpool.h>
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2src_debug);
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_V4L2SRC \
- (gst_v4l2src_get_type())
-#define GST_V4L2SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_V4L2SRC,GstV4l2Src))
-#define GST_V4L2SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_V4L2SRC,GstV4l2SrcClass))
-#define GST_IS_V4L2SRC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_V4L2SRC))
-#define GST_IS_V4L2SRC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_V4L2SRC))
-
-typedef struct _GstV4l2Src GstV4l2Src;
-typedef struct _GstV4l2SrcClass GstV4l2SrcClass;
-
-typedef GstFlowReturn (*GstV4l2SrcGetFunc)(GstV4l2Src * v4l2src, GstBuffer ** buf);
-
-/**
- * GstV4l2Src:
- *
- * Opaque object.
- */
-struct _GstV4l2Src
-{
- GstPushSrc pushsrc;
-
- /*< private >*/
- GstV4l2Object * v4l2object;
-
- /* pads */
- GstCaps *probed_caps;
-
- /* buffer handling */
- GstV4l2BufferPool *pool;
-
- guint32 num_buffers;
- gboolean use_mmap;
- guint32 frame_byte_size;
-
- /* if the buffer will be or not used from directly mmap */
- gboolean always_copy;
-
- int decimate;
-
- /* True if we want to stop */
- gboolean quit;
- gboolean is_capturing;
-
- guint64 offset;
-
- gint fps_d, fps_n; /* framerate if device is open */
- GstClockTime duration; /* duration of one frame */
-
- GstClockTime ctrl_time;
-
- GstV4l2SrcGetFunc get_frame;
-};
-
-struct _GstV4l2SrcClass
-{
- GstPushSrcClass parent_class;
-
- GList *v4l2_class_devices;
-};
-
-GType gst_v4l2src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_V4L2SRC_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2tuner.c b/wearable/sys/v4l2/gstv4l2tuner.c
deleted file mode 100644
index a805396..0000000
--- a/wearable/sys/v4l2/gstv4l2tuner.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2tuner.c: tuner interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-
-#include "gstv4l2tuner.h"
-#include "gstv4l2object.h"
-#include "v4l2_calls.h"
-#include "v4l2src_calls.h"
-
-static void gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass *
- klass);
-static void gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel);
-
-static void gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass);
-static void gst_v4l2_tuner_norm_init (GstV4l2TunerNorm * norm);
-
-static GstTunerNormClass *norm_parent_class = NULL;
-static GstTunerChannelClass *channel_parent_class = NULL;
-
-GType
-gst_v4l2_tuner_channel_get_type (void)
-{
- static GType gst_v4l2_tuner_channel_type = 0;
-
- if (!gst_v4l2_tuner_channel_type) {
- static const GTypeInfo v4l2_tuner_channel_info = {
- sizeof (GstV4l2TunerChannelClass),
- NULL,
- NULL,
- (GClassInitFunc) gst_v4l2_tuner_channel_class_init,
- NULL,
- NULL,
- sizeof (GstV4l2TunerChannel),
- 0,
- (GInstanceInitFunc) gst_v4l2_tuner_channel_init,
- NULL
- };
-
- gst_v4l2_tuner_channel_type =
- g_type_register_static (GST_TYPE_TUNER_CHANNEL,
- "GstV4l2TunerChannel", &v4l2_tuner_channel_info, 0);
- }
-
- return gst_v4l2_tuner_channel_type;
-}
-
-static void
-gst_v4l2_tuner_channel_class_init (GstV4l2TunerChannelClass * klass)
-{
- channel_parent_class = g_type_class_peek_parent (klass);
-}
-
-static void
-gst_v4l2_tuner_channel_init (GstV4l2TunerChannel * channel)
-{
- channel->index = (guint32) - 1;
- channel->tuner = (guint32) - 1;
- channel->audio = (guint32) - 1;
-}
-
-GType
-gst_v4l2_tuner_norm_get_type (void)
-{
- static GType gst_v4l2_tuner_norm_type = 0;
-
- if (!gst_v4l2_tuner_norm_type) {
- static const GTypeInfo v4l2_tuner_norm_info = {
- sizeof (GstV4l2TunerNormClass),
- NULL,
- NULL,
- (GClassInitFunc) gst_v4l2_tuner_norm_class_init,
- NULL,
- NULL,
- sizeof (GstV4l2TunerNorm),
- 0,
- (GInstanceInitFunc) gst_v4l2_tuner_norm_init,
- NULL
- };
-
- gst_v4l2_tuner_norm_type =
- g_type_register_static (GST_TYPE_TUNER_NORM,
- "GstV4l2TunerNorm", &v4l2_tuner_norm_info, 0);
- }
-
- return gst_v4l2_tuner_norm_type;
-}
-
-static void
-gst_v4l2_tuner_norm_class_init (GstV4l2TunerNormClass * klass)
-{
- norm_parent_class = g_type_class_peek_parent (klass);
-}
-
-static void
-gst_v4l2_tuner_norm_init (GstV4l2TunerNorm * norm)
-{
- norm->index = 0;
-}
-
-static G_GNUC_UNUSED gboolean
-gst_v4l2_tuner_contains_channel (GstV4l2Object * v4l2object,
- GstV4l2TunerChannel * v4l2channel)
-{
- const GList *item;
-
- for (item = v4l2object->channels; item != NULL; item = item->next)
- if (item->data == v4l2channel)
- return TRUE;
-
- return FALSE;
-}
-
-const GList *
-gst_v4l2_tuner_list_channels (GstV4l2Object * v4l2object)
-{
- return v4l2object->channels;
-}
-
-gboolean
-gst_v4l2_tuner_set_channel (GstV4l2Object * v4l2object,
- GstTunerChannel * channel)
-{
- GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), FALSE);
- g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2object,
- v4l2channel), FALSE);
-
- if (v4l2object->set_in_out_func (v4l2object, v4l2channel->index)) {
- gst_tuner_channel_changed (GST_TUNER (v4l2object->element), channel);
- /* can FPS change here? */
- return TRUE;
- }
-
- return FALSE;
-
-}
-
-GstTunerChannel *
-gst_v4l2_tuner_get_channel (GstV4l2Object * v4l2object)
-{
- GList *item;
- gint channel;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), NULL);
-
- if (v4l2object->get_in_out_func (v4l2object, &channel)) {
-
- for (item = v4l2object->channels; item != NULL; item = item->next) {
- if (channel == GST_V4L2_TUNER_CHANNEL (item->data)->index)
- return (GstTunerChannel *) item->data;
- }
-
- }
-
- return NULL;
-}
-
-static G_GNUC_UNUSED gboolean
-gst_v4l2_tuner_contains_norm (GstV4l2Object * v4l2object,
- GstV4l2TunerNorm * v4l2norm)
-{
- const GList *item;
-
- for (item = v4l2object->norms; item != NULL; item = item->next)
- if (item->data == v4l2norm)
- return TRUE;
-
- return FALSE;
-}
-
-const GList *
-gst_v4l2_tuner_list_norms (GstV4l2Object * v4l2object)
-{
- return v4l2object->norms;
-}
-
-void
-gst_v4l2_tuner_set_norm_and_notify (GstV4l2Object * v4l2object,
- GstTunerNorm * norm)
-{
- if (gst_v4l2_tuner_set_norm (v4l2object, norm)) {
-#if 0
- g_object_notify (G_OBJECT (v4l2object->element), "norm");
-#endif
- }
-}
-
-gboolean
-gst_v4l2_tuner_set_norm (GstV4l2Object * v4l2object, GstTunerNorm * norm)
-{
- GstV4l2TunerNorm *v4l2norm = GST_V4L2_TUNER_NORM (norm);
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), FALSE);
- g_return_val_if_fail (gst_v4l2_tuner_contains_norm (v4l2object, v4l2norm),
- FALSE);
-
- if (gst_v4l2_set_norm (v4l2object, v4l2norm->index)) {
- gst_tuner_norm_changed (GST_TUNER (v4l2object->element), norm);
- if (v4l2object->update_fps_func)
- v4l2object->update_fps_func (v4l2object);
- return TRUE;
- }
-
- return FALSE;
-
-}
-
-GstTunerNorm *
-gst_v4l2_tuner_get_norm (GstV4l2Object * v4l2object)
-{
- v4l2_std_id norm;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), NULL);
-
- gst_v4l2_get_norm (v4l2object, &norm);
-
- return gst_v4l2_tuner_get_norm_by_std_id (v4l2object, norm);
-}
-
-GstTunerNorm *
-gst_v4l2_tuner_get_norm_by_std_id (GstV4l2Object * v4l2object, v4l2_std_id norm)
-{
- GList *item;
-
- for (item = v4l2object->norms; item != NULL; item = item->next) {
- if (norm & GST_V4L2_TUNER_NORM (item->data)->index)
- return (GstTunerNorm *) item->data;
- }
-
- return NULL;
-}
-
-v4l2_std_id
-gst_v4l2_tuner_get_std_id_by_norm (GstV4l2Object * v4l2object,
- GstTunerNorm * norm)
-{
- GList *item;
-
- for (item = v4l2object->norms; item != NULL; item = item->next) {
- if (norm == GST_TUNER_NORM (item->data))
- return GST_V4L2_TUNER_NORM (item->data)->index;
- }
-
- return 0;
-}
-
-void
-gst_v4l2_tuner_set_frequency_and_notify (GstV4l2Object * v4l2object,
- GstTunerChannel * channel, gulong frequency)
-{
- if (gst_v4l2_tuner_set_frequency (v4l2object, channel, frequency)) {
-#if 0
- g_object_notify (G_OBJECT (v4l2object->element), "frequency");
-#endif
- }
-}
-
-gboolean
-gst_v4l2_tuner_set_frequency (GstV4l2Object * v4l2object,
- GstTunerChannel * channel, gulong frequency)
-{
- GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
- gint chan;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), FALSE);
- g_return_val_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY), FALSE);
- g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2object,
- v4l2channel), FALSE);
-
- if (v4l2object->get_in_out_func (v4l2object, &chan)) {
- if (chan == GST_V4L2_TUNER_CHANNEL (channel)->index &&
- GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- if (gst_v4l2_set_frequency (v4l2object, v4l2channel->tuner, frequency)) {
- gst_tuner_frequency_changed (GST_TUNER (v4l2object->element), channel,
- frequency);
- return TRUE;
- }
- }
- }
-
- return FALSE;
-}
-
-gulong
-gst_v4l2_tuner_get_frequency (GstV4l2Object * v4l2object,
- GstTunerChannel * channel)
-{
- GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
- gint chan;
- gulong frequency = 0;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), 0);
- g_return_val_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY), 0);
- g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2object,
- v4l2channel), 0);
-
- if (v4l2object->get_in_out_func (v4l2object, &chan)) {
- if (chan == GST_V4L2_TUNER_CHANNEL (channel)->index &&
- GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- gst_v4l2_get_frequency (v4l2object, v4l2channel->tuner, &frequency);
- }
- }
-
- return frequency;
-}
-
-gint
-gst_v4l2_tuner_signal_strength (GstV4l2Object * v4l2object,
- GstTunerChannel * channel)
-{
- GstV4l2TunerChannel *v4l2channel = GST_V4L2_TUNER_CHANNEL (channel);
- gint chan;
- gulong signal = 0;
-
- /* assert that we're opened and that we're using a known item */
- g_return_val_if_fail (GST_V4L2_IS_OPEN (v4l2object), 0);
- g_return_val_if_fail (GST_TUNER_CHANNEL_HAS_FLAG (channel,
- GST_TUNER_CHANNEL_FREQUENCY), 0);
- g_return_val_if_fail (gst_v4l2_tuner_contains_channel (v4l2object,
- v4l2channel), 0);
-
- if (v4l2object->get_in_out_func (v4l2object, &chan)) {
- if (chan == GST_V4L2_TUNER_CHANNEL (channel)->index &&
- GST_TUNER_CHANNEL_HAS_FLAG (channel, GST_TUNER_CHANNEL_FREQUENCY)) {
- gst_v4l2_signal_strength (v4l2object, v4l2channel->tuner, &signal);
- }
- }
-
- return signal;
-}
diff --git a/wearable/sys/v4l2/gstv4l2tuner.h b/wearable/sys/v4l2/gstv4l2tuner.h
deleted file mode 100644
index 699ca87..0000000
--- a/wearable/sys/v4l2/gstv4l2tuner.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2tuner.h: tuner interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2_TUNER_H__
-#define __GST_V4L2_TUNER_H__
-
-#include <gst/gst.h>
-#include <gst/interfaces/tuner.h>
-
-#include "gstv4l2object.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_V4L2_TUNER_CHANNEL \
- (gst_v4l2_tuner_channel_get_type ())
-#define GST_V4L2_TUNER_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_TUNER_CHANNEL, \
- GstV4l2TunerChannel))
-#define GST_V4L2_TUNER_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_V4L2_TUNER_CHANNEL, \
- GstV4l2TunerChannelClass))
-#define GST_IS_V4L2_TUNER_CHANNEL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_TUNER_CHANNEL))
-#define GST_IS_V4L2_TUNER_CHANNEL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_TUNER_CHANNEL))
-
-typedef struct _GstV4l2TunerChannel {
- GstTunerChannel parent;
-
- guint32 index;
- guint32 tuner;
- guint32 audio;
-} GstV4l2TunerChannel;
-
-typedef struct _GstV4l2TunerChannelClass {
- GstTunerChannelClass parent;
-} GstV4l2TunerChannelClass;
-
-#define GST_TYPE_V4L2_TUNER_NORM \
- (gst_v4l2_tuner_norm_get_type ())
-#define GST_V4L2_TUNER_NORM(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_V4L2_TUNER_NORM, \
- GstV4l2TunerNorm))
-#define GST_V4L2_TUNER_NORM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_V4L2_TUNER_NORM, \
- GstV4l2TunerNormClass))
-#define GST_IS_V4L2_TUNER_NORM(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_V4L2_TUNER_NORM))
-#define GST_IS_V4L2_TUNER_NORM_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_V4L2_TUNER_NORM))
-
-typedef struct _GstV4l2TunerNorm {
- GstTunerNorm parent;
-
- v4l2_std_id index;
-} GstV4l2TunerNorm;
-
-typedef struct _GstV4l2TunerNormClass {
- GstTunerNormClass parent;
-} GstV4l2TunerNormClass;
-
-GType gst_v4l2_tuner_channel_get_type (void);
-GType gst_v4l2_tuner_norm_get_type (void);
-
-/* channels */
-const GList* gst_v4l2_tuner_list_channels (GstV4l2Object * v4l2object);
-GstTunerChannel* gst_v4l2_tuner_get_channel (GstV4l2Object * v4l2object);
-gboolean gst_v4l2_tuner_set_channel (GstV4l2Object * v4l2object,
- GstTunerChannel * channel);
-/* norms */
-const GList* gst_v4l2_tuner_list_norms (GstV4l2Object * v4l2object);
-void gst_v4l2_tuner_set_norm_and_notify (GstV4l2Object * v4l2object,
- GstTunerNorm * norm);
-GstTunerNorm* gst_v4l2_tuner_get_norm (GstV4l2Object * v4l2object);
-gboolean gst_v4l2_tuner_set_norm (GstV4l2Object * v4l2object,
- GstTunerNorm * norm);
-GstTunerNorm* gst_v4l2_tuner_get_norm_by_std_id (GstV4l2Object * v4l2object,
- v4l2_std_id norm);
-v4l2_std_id gst_v4l2_tuner_get_std_id_by_norm (GstV4l2Object * v4l2object,
- GstTunerNorm * norm);
-
-/* frequency */
-void gst_v4l2_tuner_set_frequency_and_notify (GstV4l2Object * v4l2object,
- GstTunerChannel * channel,
- gulong frequency);
-gint gst_v4l2_tuner_signal_strength (GstV4l2Object * v4l2object,
- GstTunerChannel * channel);
-gulong gst_v4l2_tuner_get_frequency (GstV4l2Object * v4l2object,
- GstTunerChannel * channel);
-gboolean gst_v4l2_tuner_set_frequency (GstV4l2Object * v4l2object,
- GstTunerChannel * channel,
- gulong frequency);
-
-#define GST_IMPLEMENT_V4L2_TUNER_METHODS(Type, interface_as_function) \
- \
-static const GList * \
-interface_as_function ## _tuner_list_channels (GstTuner * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_list_channels (this->v4l2object); \
-} \
- \
-static void \
-interface_as_function ## _tuner_set_channel (GstTuner * mixer, \
- GstTunerChannel * channel) \
-{ \
- Type *this = (Type*) mixer; \
- gst_v4l2_tuner_set_channel (this->v4l2object, channel); \
-} \
-static GstTunerChannel * \
-interface_as_function ## _tuner_get_channel (GstTuner * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_get_channel (this->v4l2object); \
-} \
-static const GList * \
-interface_as_function ## _tuner_list_norms (GstTuner * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_list_norms (this->v4l2object); \
-} \
-static void \
-interface_as_function ## _tuner_set_norm_and_notify (GstTuner * mixer, \
- GstTunerNorm * norm) \
-{ \
- Type *this = (Type*) mixer; \
- gst_v4l2_tuner_set_norm_and_notify (this->v4l2object, norm); \
-} \
-static GstTunerNorm * \
-interface_as_function ## _tuner_get_norm (GstTuner * mixer) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_get_norm (this->v4l2object); \
-} \
- \
-static void \
-interface_as_function ## _tuner_set_frequency_and_notify (GstTuner * mixer, \
- GstTunerChannel * channel, \
- gulong frequency) \
-{ \
- Type *this = (Type*) mixer; \
- gst_v4l2_tuner_set_frequency_and_notify (this->v4l2object, channel, frequency); \
-} \
- \
-static gulong \
-interface_as_function ## _tuner_get_frequency (GstTuner * mixer, \
- GstTunerChannel * channel) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_get_frequency (this->v4l2object, channel); \
-} \
- \
-static gint \
-interface_as_function ## _tuner_signal_strength (GstTuner * mixer, \
- GstTunerChannel * channel) \
-{ \
- Type *this = (Type*) mixer; \
- return gst_v4l2_tuner_signal_strength (this->v4l2object, channel); \
-} \
- \
-static void \
-interface_as_function ## _tuner_interface_init (GstTunerClass * klass) \
-{ \
- /* default virtual functions */ \
- klass->list_channels = interface_as_function ## _tuner_list_channels; \
- klass->set_channel = interface_as_function ## _tuner_set_channel; \
- klass->get_channel = interface_as_function ## _tuner_get_channel; \
- \
- klass->list_norms = interface_as_function ## _tuner_list_norms; \
- klass->set_norm = interface_as_function ## _tuner_set_norm_and_notify; \
- klass->get_norm = interface_as_function ## _tuner_get_norm; \
- \
- klass->set_frequency = interface_as_function ## _tuner_set_frequency_and_notify; \
- klass->get_frequency = interface_as_function ## _tuner_get_frequency; \
- klass->signal_strength = interface_as_function ## _tuner_signal_strength; \
-} \
-
-#endif /* __GST_V4L2_TUNER_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2vidorient.c b/wearable/sys/v4l2/gstv4l2vidorient.c
deleted file mode 100644
index 1fa47e7..0000000
--- a/wearable/sys/v4l2/gstv4l2vidorient.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2vidorient.c: video orientation interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-
-#include "gstv4l2vidorient.h"
-#include "gstv4l2object.h"
-#include "v4l2_calls.h"
-#include "v4l2src_calls.h"
-
-GST_DEBUG_CATEGORY_STATIC (v4l2vo_debug);
-#define GST_CAT_DEFAULT v4l2vo_debug
-
-/* Those are deprecated calls that have been replaced */
-#ifndef V4L2_CID_HCENTER
-#define V4L2_CID_HCENTER V4L2_CID_PAN_RESET
-#endif
-#ifndef V4L2_CID_VCENTER
-#define V4L2_CID_VCENTER V4L2_CID_TILT_RESET
-#endif
-
-void
-gst_v4l2_video_orientation_interface_init (GstVideoOrientationInterface * klass)
-{
- GST_DEBUG_CATEGORY_INIT (v4l2vo_debug, "v4l2vo", 0,
- "V4L2 VideoOrientation interface debugging");
-}
-
-
-gboolean
-gst_v4l2_video_orientation_get_hflip (GstV4l2Object * v4l2object,
- gboolean * flip)
-{
-
- return gst_v4l2_get_attribute (v4l2object, V4L2_CID_HFLIP, flip);
-}
-
-gboolean
-gst_v4l2_video_orientation_get_vflip (GstV4l2Object * v4l2object,
- gboolean * flip)
-{
- return gst_v4l2_get_attribute (v4l2object, V4L2_CID_VFLIP, flip);
-}
-
-gboolean
-gst_v4l2_video_orientation_get_hcenter (GstV4l2Object * v4l2object,
- gint * center)
-{
- return gst_v4l2_get_attribute (v4l2object, V4L2_CID_HCENTER, center);
-}
-
-gboolean
-gst_v4l2_video_orientation_get_vcenter (GstV4l2Object * v4l2object,
- gint * center)
-{
- return gst_v4l2_get_attribute (v4l2object, V4L2_CID_VCENTER, center);
-}
-
-gboolean
-gst_v4l2_video_orientation_set_hflip (GstV4l2Object * v4l2object, gboolean flip)
-{
- return gst_v4l2_set_attribute (v4l2object, V4L2_CID_HFLIP, flip);
-}
-
-gboolean
-gst_v4l2_video_orientation_set_vflip (GstV4l2Object * v4l2object, gboolean flip)
-{
- return gst_v4l2_set_attribute (v4l2object, V4L2_CID_VFLIP, flip);
-}
-
-gboolean
-gst_v4l2_video_orientation_set_hcenter (GstV4l2Object * v4l2object, gint center)
-{
- return gst_v4l2_set_attribute (v4l2object, V4L2_CID_HCENTER, center);
-}
-
-gboolean
-gst_v4l2_video_orientation_set_vcenter (GstV4l2Object * v4l2object, gint center)
-{
- return gst_v4l2_set_attribute (v4l2object, V4L2_CID_VCENTER, center);
-}
diff --git a/wearable/sys/v4l2/gstv4l2vidorient.h b/wearable/sys/v4l2/gstv4l2vidorient.h
deleted file mode 100644
index 39682e2..0000000
--- a/wearable/sys/v4l2/gstv4l2vidorient.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2vidorient.h: video orientation interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2_VIDORIENT_H__
-#define __GST_V4L2_VIDORIENT_H__
-
-#include <gst/gst.h>
-#include <gst/interfaces/videoorientation.h>
-
-#include "gstv4l2object.h"
-
-G_BEGIN_DECLS
-
-void gst_v4l2_video_orientation_interface_init (GstVideoOrientationInterface * klass);
-
-gboolean gst_v4l2_video_orientation_get_hflip (GstV4l2Object *v4l2object, gboolean *flip);
-gboolean gst_v4l2_video_orientation_get_vflip (GstV4l2Object *v4l2object, gboolean *flip);
-gboolean gst_v4l2_video_orientation_get_hcenter (GstV4l2Object *v4l2object, gint *center);
-gboolean gst_v4l2_video_orientation_get_vcenter (GstV4l2Object *v4l2object, gint *center);
-
-gboolean gst_v4l2_video_orientation_set_hflip (GstV4l2Object *v4l2object, gboolean flip);
-gboolean gst_v4l2_video_orientation_set_vflip (GstV4l2Object *v4l2object, gboolean flip);
-gboolean gst_v4l2_video_orientation_set_hcenter (GstV4l2Object *v4l2object, gint center);
-gboolean gst_v4l2_video_orientation_set_vcenter (GstV4l2Object *v4l2object, gint center);
-
-#define GST_IMPLEMENT_V4L2_VIDORIENT_METHODS(Type, interface_as_function) \
- \
- static gboolean \
- interface_as_function ## _video_orientation_get_hflip (GstVideoOrientation *vo, gboolean *flip) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_get_hflip (this->v4l2object, flip); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_get_vflip (GstVideoOrientation *vo, gboolean *flip) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_get_vflip (this->v4l2object, flip); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_get_hcenter (GstVideoOrientation *vo, gint *center) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_get_hcenter (this->v4l2object, center); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_get_vcenter (GstVideoOrientation *vo, gint *center) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_get_vcenter (this->v4l2object, center); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_set_hflip (GstVideoOrientation *vo, gboolean flip) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_set_hflip (this->v4l2object, flip); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_set_vflip (GstVideoOrientation *vo, gboolean flip) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_set_vflip (this->v4l2object, flip); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_set_hcenter (GstVideoOrientation *vo, gint center) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_set_hcenter (this->v4l2object, center); \
- } \
- \
- static gboolean \
- interface_as_function ## _video_orientation_set_vcenter (GstVideoOrientation *vo, gint center) \
- { \
- Type *this = (Type*) vo; \
- return gst_v4l2_video_orientation_set_vcenter (this->v4l2object, center); \
- } \
- \
- static void \
- interface_as_function ## _video_orientation_interface_init (GstVideoOrientationInterface * klass) \
- { \
- /* default virtual functions */ \
- klass->get_hflip = interface_as_function ## _video_orientation_get_hflip; \
- klass->get_vflip = interface_as_function ## _video_orientation_get_vflip; \
- klass->get_hcenter = interface_as_function ## _video_orientation_get_hcenter; \
- klass->get_vcenter = interface_as_function ## _video_orientation_get_vcenter; \
- klass->set_hflip = interface_as_function ## _video_orientation_set_hflip; \
- klass->set_vflip = interface_as_function ## _video_orientation_set_vflip; \
- klass->set_hcenter = interface_as_function ## _video_orientation_set_hcenter; \
- klass->set_vcenter = interface_as_function ## _video_orientation_set_vcenter; \
- }
-
-#endif /* __GST_V4L2_VIDORIENT_H__ */
diff --git a/wearable/sys/v4l2/gstv4l2xoverlay.c b/wearable/sys/v4l2/gstv4l2xoverlay.c
deleted file mode 100644
index 60d0919..0000000
--- a/wearable/sys/v4l2/gstv4l2xoverlay.c
+++ /dev/null
@@ -1,486 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2xoverlay.c: X-based overlay interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-#include <gst/gst.h>
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include <X11/extensions/Xv.h>
-#include <X11/extensions/Xvlib.h>
-#include <sys/stat.h>
-
-#include <gst/interfaces/navigation.h>
-
-#include "gstv4l2xoverlay.h"
-#include "gstv4l2object.h"
-#include "v4l2_calls.h"
-
-#include "gst/gst-i18n-plugin.h"
-#include <gst/glib-compat-private.h>
-
-struct _GstV4l2Xv
-{
- Display *dpy;
- gint port, idle_id, event_id;
- GMutex *mutex; /* to serialize calls to X11 */
-};
-
-GST_DEBUG_CATEGORY_STATIC (v4l2xv_debug);
-#define GST_CAT_DEFAULT v4l2xv_debug
-
-void
-gst_v4l2_xoverlay_interface_init (GstXOverlayClass * klass)
-{
- GST_DEBUG_CATEGORY_INIT (v4l2xv_debug, "v4l2xv", 0,
- "V4L2 XOverlay interface debugging");
-}
-
-static void
-gst_v4l2_xoverlay_open (GstV4l2Object * v4l2object)
-{
- struct stat s;
- GstV4l2Xv *v4l2xv;
- const gchar *name = g_getenv ("DISPLAY");
- unsigned int ver, rel, req, ev, err, anum;
- int i, id = 0, first_id = 0, min;
- XvAdaptorInfo *ai;
- Display *dpy;
-
- /* we need a display, obviously */
- if (!name || !(dpy = XOpenDisplay (name))) {
- GST_WARNING_OBJECT (v4l2object->element,
- "No $DISPLAY set or failed to open - no overlay");
- return;
- }
-
- /* First let's check that XVideo extension is available */
- if (!XQueryExtension (dpy, "XVideo", &i, &i, &i)) {
- GST_WARNING_OBJECT (v4l2object->element,
- "Xv extension not available - no overlay");
- XCloseDisplay (dpy);
- return;
- }
-
- /* find port that belongs to this device */
- if (XvQueryExtension (dpy, &ver, &rel, &req, &ev, &err) != Success) {
- GST_WARNING_OBJECT (v4l2object->element,
- "Xv extension not supported - no overlay");
- XCloseDisplay (dpy);
- return;
- }
- if (XvQueryAdaptors (dpy, DefaultRootWindow (dpy), &anum, &ai) != Success) {
- GST_WARNING_OBJECT (v4l2object->element, "Failed to query Xv adaptors");
- XCloseDisplay (dpy);
- return;
- }
- if (fstat (v4l2object->video_fd, &s) < 0) {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, NOT_FOUND,
- (_("Cannot identify device '%s'."), v4l2object->videodev),
- GST_ERROR_SYSTEM);
- XCloseDisplay (dpy);
- return;
- }
- min = s.st_rdev & 0xff;
- for (i = 0; i < anum; i++) {
- GST_DEBUG_OBJECT (v4l2object->element, "found adapter: %s", ai[i].name);
- if (!strcmp (ai[i].name, "video4linux2") ||
- !strcmp (ai[i].name, "video4linux")) {
- if (first_id == 0)
- first_id = ai[i].base_id;
-
- GST_DEBUG_OBJECT (v4l2object->element,
- "first_id=%d, base_id=%lu, min=%d", first_id, ai[i].base_id, min);
-
- /* hmm... */
- if (first_id != 0 && ai[i].base_id == first_id + min)
- id = ai[i].base_id;
- }
- }
- XvFreeAdaptorInfo (ai);
-
- if (id == 0) {
- GST_WARNING_OBJECT (v4l2object->element,
- "Did not find XvPortID for device - no overlay");
- XCloseDisplay (dpy);
- return;
- }
-
- v4l2xv = g_new0 (GstV4l2Xv, 1);
- v4l2xv->dpy = dpy;
- v4l2xv->port = id;
- v4l2xv->mutex = g_mutex_new ();
- v4l2xv->idle_id = 0;
- v4l2xv->event_id = 0;
- v4l2object->xv = v4l2xv;
-
- if (v4l2object->xwindow_id) {
- gst_v4l2_xoverlay_set_window_handle (v4l2object, v4l2object->xwindow_id);
- }
-}
-
-static void
-gst_v4l2_xoverlay_close (GstV4l2Object * v4l2object)
-{
- GstV4l2Xv *v4l2xv = v4l2object->xv;
-
- if (!v4l2object->xv)
- return;
-
- if (v4l2object->xwindow_id) {
- gst_v4l2_xoverlay_set_window_handle (v4l2object, 0);
- }
-
- XCloseDisplay (v4l2xv->dpy);
- g_mutex_free (v4l2xv->mutex);
- if (v4l2xv->idle_id)
- g_source_remove (v4l2xv->idle_id);
- if (v4l2xv->event_id)
- g_source_remove (v4l2xv->event_id);
- g_free (v4l2xv);
- v4l2object->xv = NULL;
-}
-
-void
-gst_v4l2_xoverlay_start (GstV4l2Object * v4l2object)
-{
- if (v4l2object->xwindow_id) {
- gst_v4l2_xoverlay_open (v4l2object);
- }
-}
-
-void
-gst_v4l2_xoverlay_stop (GstV4l2Object * v4l2object)
-{
- gst_v4l2_xoverlay_close (v4l2object);
-}
-
-/* should be called with mutex held */
-static gboolean
-get_render_rect (GstV4l2Object * v4l2object, GstVideoRectangle * rect)
-{
- GstV4l2Xv *v4l2xv = v4l2object->xv;
- if (v4l2xv && v4l2xv->dpy && v4l2object->xwindow_id) {
- XWindowAttributes attr;
- XGetWindowAttributes (v4l2xv->dpy, v4l2object->xwindow_id, &attr);
- /* this is where we'd add support to maintain aspect ratio */
- rect->x = 0;
- rect->y = 0;
- rect->w = attr.width;
- rect->h = attr.height;
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-gboolean
-gst_v4l2_xoverlay_get_render_rect (GstV4l2Object * v4l2object,
- GstVideoRectangle * rect)
-{
- GstV4l2Xv *v4l2xv = v4l2object->xv;
- gboolean ret = FALSE;
- if (v4l2xv) {
- g_mutex_lock (v4l2xv->mutex);
- ret = get_render_rect (v4l2object, rect);
- g_mutex_unlock (v4l2xv->mutex);
- }
- return ret;
-}
-
-static void
-update_geometry (GstV4l2Object * v4l2object)
-{
- GstV4l2Xv *v4l2xv = v4l2object->xv;
- GstVideoRectangle rect;
- if (!get_render_rect (v4l2object, &rect))
- return;
- /* note: we don't pass in valid video x/y/w/h.. currently the xserver
- * doesn't need to know these, as they come from v4l2 by setting the
- * crop..
- */
- XvPutVideo (v4l2xv->dpy, v4l2xv->port, v4l2object->xwindow_id,
- DefaultGC (v4l2xv->dpy, DefaultScreen (v4l2xv->dpy)),
- 0, 0, rect.w, rect.h, rect.x, rect.y, rect.w, rect.h);
-}
-
-static gboolean
-idle_refresh (gpointer data)
-{
- GstV4l2Object *v4l2object = GST_V4L2_OBJECT (data);
- GstV4l2Xv *v4l2xv = v4l2object->xv;
-
- GST_LOG_OBJECT (v4l2object->element, "idle refresh");
-
- if (v4l2xv) {
- g_mutex_lock (v4l2xv->mutex);
-
- update_geometry (v4l2object);
-
- v4l2xv->idle_id = 0;
- g_mutex_unlock (v4l2xv->mutex);
- }
-
- /* once */
- return FALSE;
-}
-
-
-static gboolean
-event_refresh (gpointer data)
-{
- GstV4l2Object *v4l2object = GST_V4L2_OBJECT (data);
- GstV4l2Xv *v4l2xv = v4l2object->xv;
-
- GST_LOG_OBJECT (v4l2object->element, "event refresh");
-
- if (v4l2xv) {
- XEvent e;
-
- g_mutex_lock (v4l2xv->mutex);
-
- /* If the element supports navigation, collect the relavent input
- * events and push them upstream as navigation events
- */
- if (GST_IS_NAVIGATION (v4l2object->element)) {
- guint pointer_x = 0, pointer_y = 0;
- gboolean pointer_moved = FALSE;
-
- /* We get all pointer motion events, only the last position is
- * interesting.
- */
- while (XCheckWindowEvent (v4l2xv->dpy, v4l2object->xwindow_id,
- PointerMotionMask, &e)) {
- switch (e.type) {
- case MotionNotify:
- pointer_x = e.xmotion.x;
- pointer_y = e.xmotion.y;
- pointer_moved = TRUE;
- break;
- default:
- break;
- }
- }
- if (pointer_moved) {
- GST_DEBUG_OBJECT (v4l2object->element,
- "pointer moved over window at %d,%d", pointer_x, pointer_y);
- g_mutex_unlock (v4l2xv->mutex);
- gst_navigation_send_mouse_event (GST_NAVIGATION (v4l2object->element),
- "mouse-move", 0, e.xbutton.x, e.xbutton.y);
- g_mutex_lock (v4l2xv->mutex);
- }
-
- /* We get all events on our window to throw them upstream
- */
- while (XCheckWindowEvent (v4l2xv->dpy, v4l2object->xwindow_id,
- KeyPressMask | KeyReleaseMask |
- ButtonPressMask | ButtonReleaseMask, &e)) {
- KeySym keysym;
- const char *key_str = NULL;
-
- g_mutex_unlock (v4l2xv->mutex);
-
- switch (e.type) {
- case ButtonPress:
- GST_DEBUG_OBJECT (v4l2object->element,
- "button %d pressed over window at %d,%d",
- e.xbutton.button, e.xbutton.x, e.xbutton.y);
- gst_navigation_send_mouse_event (GST_NAVIGATION
- (v4l2object->element), "mouse-button-press", e.xbutton.button,
- e.xbutton.x, e.xbutton.y);
- break;
- case ButtonRelease:
- GST_DEBUG_OBJECT (v4l2object->element,
- "button %d released over window at %d,%d",
- e.xbutton.button, e.xbutton.x, e.xbutton.y);
- gst_navigation_send_mouse_event (GST_NAVIGATION
- (v4l2object->element), "mouse-button-release", e.xbutton.button,
- e.xbutton.x, e.xbutton.y);
- break;
- case KeyPress:
- case KeyRelease:
- g_mutex_lock (v4l2xv->mutex);
- keysym = XKeycodeToKeysym (v4l2xv->dpy, e.xkey.keycode, 0);
- if (keysym != NoSymbol) {
- key_str = XKeysymToString (keysym);
- } else {
- key_str = "unknown";
- }
- g_mutex_unlock (v4l2xv->mutex);
- GST_DEBUG_OBJECT (v4l2object->element,
- "key %d pressed over window at %d,%d (%s)",
- e.xkey.keycode, e.xkey.x, e.xkey.y, key_str);
- gst_navigation_send_key_event (GST_NAVIGATION (v4l2object->element),
- e.type == KeyPress ? "key-press" : "key-release", key_str);
- break;
- default:
- GST_DEBUG_OBJECT (v4l2object->element,
- "unhandled X event (%d)", e.type);
- }
-
- g_mutex_lock (v4l2xv->mutex);
- }
- }
-
- /* Handle ConfigureNotify */
- while (XCheckWindowEvent (v4l2xv->dpy, v4l2object->xwindow_id,
- StructureNotifyMask, &e)) {
- switch (e.type) {
- case ConfigureNotify:
- update_geometry (v4l2object);
- break;
- default:
- break;
- }
- }
- g_mutex_unlock (v4l2xv->mutex);
- }
-
- /* repeat */
- return TRUE;
-}
-
-void
-gst_v4l2_xoverlay_set_window_handle (GstV4l2Object * v4l2object, guintptr id)
-{
- GstV4l2Xv *v4l2xv;
- XID xwindow_id = id;
- gboolean change = (v4l2object->xwindow_id != xwindow_id);
-
- GST_LOG_OBJECT (v4l2object->element, "Setting XID to %lx",
- (gulong) xwindow_id);
-
- if (!v4l2object->xv && GST_V4L2_IS_OPEN (v4l2object))
- gst_v4l2_xoverlay_open (v4l2object);
-
- v4l2xv = v4l2object->xv;
-
- if (v4l2xv)
- g_mutex_lock (v4l2xv->mutex);
-
- if (change) {
- if (v4l2object->xwindow_id && v4l2xv) {
- GST_DEBUG_OBJECT (v4l2object->element,
- "Deactivating old port %lx", v4l2object->xwindow_id);
-
- XvSelectPortNotify (v4l2xv->dpy, v4l2xv->port, 0);
- XvSelectVideoNotify (v4l2xv->dpy, v4l2object->xwindow_id, 0);
- XvStopVideo (v4l2xv->dpy, v4l2xv->port, v4l2object->xwindow_id);
- }
-
- v4l2object->xwindow_id = xwindow_id;
- }
-
- if (!v4l2xv || xwindow_id == 0) {
- if (v4l2xv)
- g_mutex_unlock (v4l2xv->mutex);
- return;
- }
-
- if (change) {
- GST_DEBUG_OBJECT (v4l2object->element, "Activating new port %lx",
- xwindow_id);
-
- /* draw */
- XvSelectPortNotify (v4l2xv->dpy, v4l2xv->port, 1);
- XvSelectVideoNotify (v4l2xv->dpy, v4l2object->xwindow_id, 1);
- }
-
- update_geometry (v4l2object);
-
- if (v4l2xv->idle_id)
- g_source_remove (v4l2xv->idle_id);
- v4l2xv->idle_id = g_idle_add (idle_refresh, v4l2object);
- g_mutex_unlock (v4l2xv->mutex);
-}
-
-/**
- * gst_v4l2_xoverlay_prepare_xwindow_id:
- * @v4l2object: the v4l2object
- * @required: %TRUE if display is required (ie. TRUE for v4l2sink, but
- * FALSE for any other element with optional overlay capabilities)
- *
- * Helper function to create a windo if none is set from the application.
- */
-void
-gst_v4l2_xoverlay_prepare_xwindow_id (GstV4l2Object * v4l2object,
- gboolean required)
-{
- if (!GST_V4L2_IS_OVERLAY (v4l2object))
- return;
-
- gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (v4l2object->element));
-
- if (required && !v4l2object->xwindow_id) {
- GstV4l2Xv *v4l2xv;
- Window win;
- int width, height;
- long event_mask;
-
- if (!v4l2object->xv && GST_V4L2_IS_OPEN (v4l2object))
- gst_v4l2_xoverlay_open (v4l2object);
-
- v4l2xv = v4l2object->xv;
-
- /* if xoverlay is not supported, just bail */
- if (!v4l2xv)
- return;
-
- /* xoverlay is supported, but we don't have a window.. so create one */
- GST_DEBUG_OBJECT (v4l2object->element, "creating window");
-
- g_mutex_lock (v4l2xv->mutex);
-
- width = XDisplayWidth (v4l2xv->dpy, DefaultScreen (v4l2xv->dpy));
- height = XDisplayHeight (v4l2xv->dpy, DefaultScreen (v4l2xv->dpy));
- GST_DEBUG_OBJECT (v4l2object->element, "dpy=%p", v4l2xv->dpy);
-
- win = XCreateSimpleWindow (v4l2xv->dpy,
- DefaultRootWindow (v4l2xv->dpy),
- 0, 0, width, height, 0, 0,
- XBlackPixel (v4l2xv->dpy, DefaultScreen (v4l2xv->dpy)));
-
- GST_DEBUG_OBJECT (v4l2object->element, "win=%lu", win);
-
- event_mask = ExposureMask | StructureNotifyMask;
- if (GST_IS_NAVIGATION (v4l2object->element)) {
- event_mask |= PointerMotionMask |
- KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask;
- }
- XSelectInput (v4l2xv->dpy, win, event_mask);
- v4l2xv->event_id = g_timeout_add (45, event_refresh, v4l2object);
-
- XMapRaised (v4l2xv->dpy, win);
-
- XSync (v4l2xv->dpy, FALSE);
-
- g_mutex_unlock (v4l2xv->mutex);
-
- GST_DEBUG_OBJECT (v4l2object->element, "got window");
-
- gst_v4l2_xoverlay_set_window_handle (v4l2object, win);
- }
-}
diff --git a/wearable/sys/v4l2/gstv4l2xoverlay.h b/wearable/sys/v4l2/gstv4l2xoverlay.h
deleted file mode 100644
index 1a09306..0000000
--- a/wearable/sys/v4l2/gstv4l2xoverlay.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2003 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * gstv4l2xoverlay.h: tv mixer interface implementation for V4L2
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_V4L2_X_OVERLAY_H__
-#define __GST_V4L2_X_OVERLAY_H__
-
-#include <X11/X.h>
-
-#include <gst/gst.h>
-#include <gst/interfaces/xoverlay.h>
-#include <gst/interfaces/navigation.h>
-#include <gst/video/gstvideosink.h> /* for GstVideoRectange */
-
-#include "gstv4l2object.h"
-
-G_BEGIN_DECLS
-
-void gst_v4l2_xoverlay_start (GstV4l2Object *v4l2object);
-void gst_v4l2_xoverlay_stop (GstV4l2Object *v4l2object);
-gboolean gst_v4l2_xoverlay_get_render_rect (GstV4l2Object *v4l2object,
- GstVideoRectangle *rect);
-
-void gst_v4l2_xoverlay_interface_init (GstXOverlayClass * klass);
-void gst_v4l2_xoverlay_set_window_handle (GstV4l2Object * v4l2object,
- guintptr id);
-void gst_v4l2_xoverlay_prepare_xwindow_id (GstV4l2Object * v4l2object,
- gboolean required);
-
-
-#define GST_IMPLEMENT_V4L2_XOVERLAY_METHODS(Type, interface_as_function) \
- \
-static void \
-interface_as_function ## _xoverlay_set_window_handle (GstXOverlay * xoverlay, \
- guintptr id) \
-{ \
- Type *this = (Type*) xoverlay; \
- gst_v4l2_xoverlay_set_window_handle (this->v4l2object, id); \
-} \
- \
-static void \
-interface_as_function ## _xoverlay_interface_init (GstXOverlayClass * klass) \
-{ \
- /* default virtual functions */ \
- klass->set_window_handle = interface_as_function ## _xoverlay_set_window_handle; \
- \
- gst_v4l2_xoverlay_interface_init(klass); \
-} \
-
-
-#endif /* __GST_V4L2_X_OVERLAY_H__ */
diff --git a/wearable/sys/v4l2/v4l2_calls.c b/wearable/sys/v4l2/v4l2_calls.c
deleted file mode 100644
index 309bfb6..0000000
--- a/wearable/sys/v4l2/v4l2_calls.c
+++ /dev/null
@@ -1,925 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * v4l2_calls.c - generic V4L2 calls handling
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#ifdef __sun
-/* Needed on older Solaris Nevada builds (72 at least) */
-#include <stropts.h>
-#include <sys/ioccom.h>
-#endif
-#include "v4l2_calls.h"
-#include "gstv4l2tuner.h"
-#if 0
-#include "gstv4l2xoverlay.h"
-#endif
-#include "gstv4l2colorbalance.h"
-
-#include "gstv4l2src.h"
-
-#ifdef HAVE_EXPERIMENTAL
-#include "gstv4l2sink.h"
-#endif
-
-#include "gst/gst-i18n-plugin.h"
-
-/* Those are ioctl calls */
-#ifndef V4L2_CID_HCENTER
-#define V4L2_CID_HCENTER V4L2_CID_HCENTER_DEPRECATED
-#endif
-#ifndef V4L2_CID_VCENTER
-#define V4L2_CID_VCENTER V4L2_CID_VCENTER_DEPRECATED
-#endif
-
-GST_DEBUG_CATEGORY_EXTERN (v4l2_debug);
-#define GST_CAT_DEFAULT v4l2_debug
-
-/******************************************************
- * gst_v4l2_get_capabilities():
- * get the device's capturing capabilities
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_get_capabilities (GstV4l2Object * v4l2object)
-{
- GstElement *e;
-
- e = v4l2object->element;
-
- GST_DEBUG_OBJECT (e, "getting capabilities");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYCAP, &v4l2object->vcap) < 0)
- goto cap_failed;
-
- GST_LOG_OBJECT (e, "driver: '%s'", v4l2object->vcap.driver);
- GST_LOG_OBJECT (e, "card: '%s'", v4l2object->vcap.card);
- GST_LOG_OBJECT (e, "bus_info: '%s'", v4l2object->vcap.bus_info);
- GST_LOG_OBJECT (e, "version: %08x", v4l2object->vcap.version);
- GST_LOG_OBJECT (e, "capabilites: %08x", v4l2object->vcap.capabilities);
-
- return TRUE;
-
- /* ERRORS */
-cap_failed:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
- (_("Error getting capabilities for device '%s': "
- "It isn't a v4l2 driver. Check if it is a v4l1 driver."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2_empty_lists() and gst_v4l2_fill_lists():
- * fill/empty the lists of enumerations
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-static gboolean
-gst_v4l2_fill_lists (GstV4l2Object * v4l2object)
-{
- gint n;
-
- GstElement *e;
-
- e = v4l2object->element;
-
- GST_DEBUG_OBJECT (e, "getting enumerations");
- GST_V4L2_CHECK_OPEN (v4l2object);
-
- GST_DEBUG_OBJECT (e, " channels");
- /* and now, the channels */
- for (n = 0;; n++) {
- struct v4l2_input input;
- GstV4l2TunerChannel *v4l2channel;
- GstTunerChannel *channel;
-
- memset (&input, 0, sizeof (input));
-
- input.index = n;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_ENUMINPUT, &input) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Failed to query attributes of input %d in device %s"),
- n, v4l2object->videodev),
- ("Failed to get %d in input enumeration for %s. (%d - %s)",
- n, v4l2object->videodev, errno, strerror (errno)));
- return FALSE;
- }
- }
-
- GST_LOG_OBJECT (e, " index: %d", input.index);
- GST_LOG_OBJECT (e, " name: '%s'", input.name);
- GST_LOG_OBJECT (e, " type: %08x", input.type);
- GST_LOG_OBJECT (e, " audioset: %08x", input.audioset);
- GST_LOG_OBJECT (e, " std: %016x", (guint) input.std);
- GST_LOG_OBJECT (e, " status: %08x", input.status);
-
- v4l2channel = g_object_new (GST_TYPE_V4L2_TUNER_CHANNEL, NULL);
- channel = GST_TUNER_CHANNEL (v4l2channel);
- channel->label = g_strdup ((const gchar *) input.name);
- channel->flags = GST_TUNER_CHANNEL_INPUT;
- v4l2channel->index = n;
-
- if (input.type == V4L2_INPUT_TYPE_TUNER) {
- struct v4l2_tuner vtun;
-
- v4l2channel->tuner = input.tuner;
- channel->flags |= GST_TUNER_CHANNEL_FREQUENCY;
-
- vtun.index = input.tuner;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_TUNER, &vtun) < 0) {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Failed to get setting of tuner %d on device '%s'."),
- input.tuner, v4l2object->videodev), GST_ERROR_SYSTEM);
- g_object_unref (G_OBJECT (channel));
- return FALSE;
- }
-
- channel->freq_multiplicator =
- 62.5 * ((vtun.capability & V4L2_TUNER_CAP_LOW) ? 1 : 1000);
- channel->min_frequency = vtun.rangelow * channel->freq_multiplicator;
- channel->max_frequency = vtun.rangehigh * channel->freq_multiplicator;
- channel->min_signal = 0;
- channel->max_signal = 0xffff;
- }
- if (input.audioset) {
- /* we take the first. We don't care for
- * the others for now */
- while (!(input.audioset & (1 << v4l2channel->audio)))
- v4l2channel->audio++;
- channel->flags |= GST_TUNER_CHANNEL_AUDIO;
- }
-
- v4l2object->channels =
- g_list_prepend (v4l2object->channels, (gpointer) channel);
- }
- v4l2object->channels = g_list_reverse (v4l2object->channels);
-
- GST_DEBUG_OBJECT (e, " norms");
- /* norms... */
- for (n = 0;; n++) {
- struct v4l2_standard standard = { 0, };
- GstV4l2TunerNorm *v4l2norm;
-
- GstTunerNorm *norm;
-
- /* fill in defaults */
- standard.frameperiod.numerator = 1;
- standard.frameperiod.denominator = 0;
- standard.index = n;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_ENUMSTD, &standard) < 0) {
- if (errno == EINVAL || errno == ENOTTY)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Failed to query norm on device '%s'."),
- v4l2object->videodev),
- ("Failed to get attributes for norm %d on devide '%s'. (%d - %s)",
- n, v4l2object->videodev, errno, strerror (errno)));
- return FALSE;
- }
- }
-
- GST_DEBUG_OBJECT (e, " '%s', fps: %d / %d",
- standard.name, standard.frameperiod.denominator,
- standard.frameperiod.numerator);
-
- v4l2norm = g_object_new (GST_TYPE_V4L2_TUNER_NORM, NULL);
- norm = GST_TUNER_NORM (v4l2norm);
- norm->label = g_strdup ((const gchar *) standard.name);
- gst_value_set_fraction (&norm->framerate,
- standard.frameperiod.denominator, standard.frameperiod.numerator);
- v4l2norm->index = standard.id;
-
- GST_DEBUG_OBJECT (v4l2object->element, "index=%08x, label=%s",
- (unsigned int) v4l2norm->index, norm->label);
-
- v4l2object->norms = g_list_prepend (v4l2object->norms, (gpointer) norm);
- }
- v4l2object->norms = g_list_reverse (v4l2object->norms);
-
- GST_DEBUG_OBJECT (e, " controls+menus");
-
- /* and lastly, controls+menus (if appropriate) */
- for (n = V4L2_CID_BASE;; n++) {
- struct v4l2_queryctrl control = { 0, };
- GstV4l2ColorBalanceChannel *v4l2channel;
- GstColorBalanceChannel *channel;
-
- /* when we reached the last official CID, continue with private CIDs */
- if (n == V4L2_CID_LASTP1) {
- GST_DEBUG_OBJECT (e, "checking private CIDs");
- n = V4L2_CID_PRIVATE_BASE;
- }
- GST_DEBUG_OBJECT (e, "checking control %08x", n);
-
- control.id = n;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYCTRL, &control) < 0) {
- if (errno == EINVAL || errno == ENOTTY || errno == EIO) {
- if (n < V4L2_CID_PRIVATE_BASE) {
- GST_DEBUG_OBJECT (e, "skipping control %08x", n);
- /* continue so that we also check private controls */
- continue;
- } else {
- GST_DEBUG_OBJECT (e, "controls finished");
- break;
- }
- } else {
- GST_WARNING_OBJECT (e, "Failed querying control %d on device '%s'. "
- "(%d - %s)", n, v4l2object->videodev, errno, strerror (errno));
- continue;
- }
- }
- if (control.flags & V4L2_CTRL_FLAG_DISABLED) {
- GST_DEBUG_OBJECT (e, "skipping disabled control");
- continue;
- }
-
- switch (n) {
- case V4L2_CID_BRIGHTNESS:
- case V4L2_CID_CONTRAST:
- case V4L2_CID_SATURATION:
- case V4L2_CID_HUE:
- case V4L2_CID_BLACK_LEVEL:
- case V4L2_CID_AUTO_WHITE_BALANCE:
- case V4L2_CID_DO_WHITE_BALANCE:
- case V4L2_CID_RED_BALANCE:
- case V4L2_CID_BLUE_BALANCE:
- case V4L2_CID_GAMMA:
- case V4L2_CID_EXPOSURE:
- case V4L2_CID_AUTOGAIN:
- case V4L2_CID_GAIN:
-#ifdef V4L2_CID_SHARPNESS
- case V4L2_CID_SHARPNESS:
-#endif
- /* we only handle these for now (why?) */
- break;
- case V4L2_CID_HFLIP:
- case V4L2_CID_VFLIP:
- case V4L2_CID_HCENTER:
- case V4L2_CID_VCENTER:
-#ifdef V4L2_CID_PAN_RESET
- case V4L2_CID_PAN_RESET:
-#endif
-#ifdef V4L2_CID_TILT_RESET
- case V4L2_CID_TILT_RESET:
-#endif
- /* not handled here, handled by VideoOrientation interface */
- control.id++;
- break;
- case V4L2_CID_AUDIO_VOLUME:
- case V4L2_CID_AUDIO_BALANCE:
- case V4L2_CID_AUDIO_BASS:
- case V4L2_CID_AUDIO_TREBLE:
- case V4L2_CID_AUDIO_MUTE:
- case V4L2_CID_AUDIO_LOUDNESS:
- /* FIXME: We should implement GstMixer interface */
- /* fall through */
- default:
- GST_DEBUG_OBJECT (e,
- "ControlID %s (%x) unhandled, FIXME", control.name, n);
- control.id++;
- break;
- }
- if (n != control.id)
- continue;
-
- GST_DEBUG_OBJECT (e, "Adding ControlID %s (%x)", control.name, n);
- v4l2channel = g_object_new (GST_TYPE_V4L2_COLOR_BALANCE_CHANNEL, NULL);
- channel = GST_COLOR_BALANCE_CHANNEL (v4l2channel);
- channel->label = g_strdup ((const gchar *) control.name);
- v4l2channel->id = n;
-
-#if 0
- /* FIXME: it will be need just when handling private controls
- *(currently none of base controls are of this type) */
- if (control.type == V4L2_CTRL_TYPE_MENU) {
- struct v4l2_querymenu menu, *mptr;
-
- int i;
-
- menu.id = n;
- for (i = 0;; i++) {
- menu.index = i;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYMENU, &menu) < 0) {
- if (errno == EINVAL)
- break; /* end of enumeration */
- else {
- GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
- (_("Failed getting controls attributes on device '%s'."),
- v4l2object->videodev),
- ("Failed to get %d in menu enumeration for %s. (%d - %s)",
- n, v4l2object->videodev, errno, strerror (errno)));
- return FALSE;
- }
- }
- mptr = g_malloc (sizeof (menu));
- memcpy (mptr, &menu, sizeof (menu));
- menus = g_list_append (menus, mptr);
- }
- }
- v4l2object->menus = g_list_append (v4l2object->menus, menus);
-#endif
-
- switch (control.type) {
- case V4L2_CTRL_TYPE_INTEGER:
- channel->min_value = control.minimum;
- channel->max_value = control.maximum;
- break;
- case V4L2_CTRL_TYPE_BOOLEAN:
- channel->min_value = FALSE;
- channel->max_value = TRUE;
- break;
- default:
- /* FIXME we should find out how to handle V4L2_CTRL_TYPE_BUTTON.
- BUTTON controls like V4L2_CID_DO_WHITE_BALANCE can just be set (1) or
- unset (0), but can't be queried */
- GST_DEBUG_OBJECT (e,
- "Control with non supported type %s (%x), type=%d",
- control.name, n, control.type);
- channel->min_value = channel->max_value = 0;
- break;
- }
-
- v4l2object->colors =
- g_list_prepend (v4l2object->colors, (gpointer) channel);
- }
- v4l2object->colors = g_list_reverse (v4l2object->colors);
-
- GST_DEBUG_OBJECT (e, "done");
- return TRUE;
-}
-
-
-static void
-gst_v4l2_empty_lists (GstV4l2Object * v4l2object)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "deleting enumerations");
-
- g_list_foreach (v4l2object->channels, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2object->channels);
- v4l2object->channels = NULL;
-
- g_list_foreach (v4l2object->norms, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2object->norms);
- v4l2object->norms = NULL;
-
- g_list_foreach (v4l2object->colors, (GFunc) g_object_unref, NULL);
- g_list_free (v4l2object->colors);
- v4l2object->colors = NULL;
-}
-
-/******************************************************
- * gst_v4l2_open():
- * open the video device (v4l2object->videodev)
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_open (GstV4l2Object * v4l2object)
-{
- struct stat st;
- int libv4l2_fd;
- GstPollFD pollfd = GST_POLL_FD_INIT;
-
- GST_DEBUG_OBJECT (v4l2object->element, "Trying to open device %s",
- v4l2object->videodev);
-
- GST_V4L2_CHECK_NOT_OPEN (v4l2object);
- GST_V4L2_CHECK_NOT_ACTIVE (v4l2object);
-
- /* be sure we have a device */
- if (!v4l2object->videodev)
- v4l2object->videodev = g_strdup ("/dev/video");
-
- /* check if it is a device */
- if (stat (v4l2object->videodev, &st) == -1)
- goto stat_failed;
-
- if (!S_ISCHR (st.st_mode))
- goto no_device;
-
- /* open the device */
- v4l2object->video_fd =
- open (v4l2object->videodev, O_RDWR /* | O_NONBLOCK */ );
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- goto not_open;
-
- libv4l2_fd = v4l2_fd_open (v4l2object->video_fd,
- V4L2_ENABLE_ENUM_FMT_EMULATION);
- /* Note the v4l2_xxx functions are designed so that if they get passed an
- unknown fd, the will behave exactly as their regular xxx counterparts, so
- if v4l2_fd_open fails, we continue as normal (missing the libv4l2 custom
- cam format to normal formats conversion). Chances are big we will still
- fail then though, as normally v4l2_fd_open only fails if the device is not
- a v4l2 device. */
- if (libv4l2_fd != -1)
- v4l2object->video_fd = libv4l2_fd;
-
- v4l2object->can_poll_device = TRUE;
-
- /* get capabilities, error will be posted */
- if (!gst_v4l2_get_capabilities (v4l2object))
- goto error;
-
- /* do we need to be a capture device? */
- if (GST_IS_V4L2SRC (v4l2object->element) &&
- !(v4l2object->vcap.capabilities & V4L2_CAP_VIDEO_CAPTURE))
- goto not_capture;
-
-#ifdef HAVE_EXPERIMENTAL
- if (GST_IS_V4L2SINK (v4l2object->element) &&
- !(v4l2object->vcap.capabilities & V4L2_CAP_VIDEO_OUTPUT))
- goto not_output;
-#endif
-
- /* create enumerations, posts errors. */
- if (!gst_v4l2_fill_lists (v4l2object))
- goto error;
-
- GST_INFO_OBJECT (v4l2object->element,
- "Opened device '%s' (%s) successfully",
- v4l2object->vcap.card, v4l2object->videodev);
-
- pollfd.fd = v4l2object->video_fd;
- gst_poll_add_fd (v4l2object->poll, &pollfd);
- gst_poll_fd_ctl_read (v4l2object->poll, &pollfd, TRUE);
-
- return TRUE;
-
- /* ERRORS */
-stat_failed:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, NOT_FOUND,
- (_("Cannot identify device '%s'."), v4l2object->videodev),
- GST_ERROR_SYSTEM);
- goto error;
- }
-no_device:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, NOT_FOUND,
- (_("This isn't a device '%s'."), v4l2object->videodev),
- GST_ERROR_SYSTEM);
- goto error;
- }
-not_open:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, OPEN_READ_WRITE,
- (_("Could not open device '%s' for reading and writing."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- goto error;
- }
-not_capture:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, NOT_FOUND,
- (_("Device '%s' is not a capture device."),
- v4l2object->videodev),
- ("Capabilities: 0x%x", v4l2object->vcap.capabilities));
- goto error;
- }
-#ifdef HAVE_EXPERIMENTAL
-not_output:
- {
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, NOT_FOUND,
- (_("Device '%s' is not a output device."),
- v4l2object->videodev),
- ("Capabilities: 0x%x", v4l2object->vcap.capabilities));
- goto error;
- }
-#endif
-error:
- {
- if (GST_V4L2_IS_OPEN (v4l2object)) {
- /* close device */
- v4l2_close (v4l2object->video_fd);
- v4l2object->video_fd = -1;
- }
- /* empty lists */
- gst_v4l2_empty_lists (v4l2object);
-
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2_close():
- * close the video device (v4l2object->video_fd)
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_close (GstV4l2Object * v4l2object)
-{
- GstPollFD pollfd = GST_POLL_FD_INIT;
- GST_DEBUG_OBJECT (v4l2object->element, "Trying to close %s",
- v4l2object->videodev);
-
- GST_V4L2_CHECK_OPEN (v4l2object);
- GST_V4L2_CHECK_NOT_ACTIVE (v4l2object);
-
- /* close device */
- v4l2_close (v4l2object->video_fd);
- pollfd.fd = v4l2object->video_fd;
- gst_poll_remove_fd (v4l2object->poll, &pollfd);
- v4l2object->video_fd = -1;
-
- /* empty lists */
- gst_v4l2_empty_lists (v4l2object);
-
- return TRUE;
-}
-
-
-/******************************************************
- * gst_v4l2_get_norm()
- * Get the norm of the current device
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_get_norm (GstV4l2Object * v4l2object, v4l2_std_id * norm)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "getting norm");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_STD, norm) < 0)
- goto std_failed;
-
- return TRUE;
-
- /* ERRORS */
-std_failed:
- {
- GST_DEBUG ("Failed to get the current norm for device %s",
- v4l2object->videodev);
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2_set_norm()
- * Set the norm of the current device
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_set_norm (GstV4l2Object * v4l2object, v4l2_std_id norm)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "trying to set norm to "
- "%" G_GINT64_MODIFIER "x", (guint64) norm);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_S_STD, &norm) < 0)
- goto std_failed;
-
- return TRUE;
-
- /* ERRORS */
-std_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set norm for device '%s'."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-/******************************************************
- * gst_v4l2_get_frequency():
- * get the current frequency
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_get_frequency (GstV4l2Object * v4l2object,
- gint tunernum, gulong * frequency)
-{
- struct v4l2_frequency freq = { 0, };
-
- GstTunerChannel *channel;
-
- GST_DEBUG_OBJECT (v4l2object->element, "getting current tuner frequency");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- channel = gst_tuner_get_channel (GST_TUNER (v4l2object->element));
-
- freq.tuner = tunernum;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_FREQUENCY, &freq) < 0)
- goto freq_failed;
-
- *frequency = freq.frequency * channel->freq_multiplicator;
-
- return TRUE;
-
- /* ERRORS */
-freq_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get current tuner frequency for device '%s'."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2_set_frequency():
- * set frequency
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_set_frequency (GstV4l2Object * v4l2object,
- gint tunernum, gulong frequency)
-{
- struct v4l2_frequency freq = { 0, };
-
- GstTunerChannel *channel;
-
- GST_DEBUG_OBJECT (v4l2object->element,
- "setting current tuner frequency to %lu", frequency);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- channel = gst_tuner_get_channel (GST_TUNER (v4l2object->element));
-
- freq.tuner = tunernum;
- /* fill in type - ignore error */
- v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_FREQUENCY, &freq);
- freq.frequency = frequency / channel->freq_multiplicator;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_S_FREQUENCY, &freq) < 0)
- goto freq_failed;
-
- return TRUE;
-
- /* ERRORS */
-freq_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set current tuner frequency for device '%s' to %lu Hz."),
- v4l2object->videodev, frequency), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-/******************************************************
- * gst_v4l2_signal_strength():
- * get the strength of the signal on the current input
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_signal_strength (GstV4l2Object * v4l2object,
- gint tunernum, gulong * signal_strength)
-{
- struct v4l2_tuner tuner = { 0, };
-
- GST_DEBUG_OBJECT (v4l2object->element, "trying to get signal strength");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- tuner.index = tunernum;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_TUNER, &tuner) < 0)
- goto tuner_failed;
-
- *signal_strength = tuner.signal;
-
- return TRUE;
-
- /* ERRORS */
-tuner_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get signal strength for device '%s'."),
- v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-/******************************************************
- * gst_v4l2_get_attribute():
- * try to get the value of one specific attribute
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_get_attribute (GstV4l2Object * v4l2object,
- int attribute_num, int *value)
-{
- struct v4l2_control control = { 0, };
-
- GST_DEBUG_OBJECT (v4l2object->element, "getting value of attribute %d",
- attribute_num);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- control.id = attribute_num;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_CTRL, &control) < 0)
- goto ctrl_failed;
-
- *value = control.value;
-
- return TRUE;
-
- /* ERRORS */
-ctrl_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get value for control %d on device '%s'."),
- attribute_num, v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2_set_attribute():
- * try to set the value of one specific attribute
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2_set_attribute (GstV4l2Object * v4l2object,
- int attribute_num, const int value)
-{
- struct v4l2_control control = { 0, };
-
- GST_DEBUG_OBJECT (v4l2object->element, "setting value of attribute %d to %d",
- attribute_num, value);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- control.id = attribute_num;
- control.value = value;
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_S_CTRL, &control) < 0)
- goto ctrl_failed;
-
- return TRUE;
-
- /* ERRORS */
-ctrl_failed:
- {
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set value %d for control %d on device '%s'."),
- value, attribute_num, v4l2object->videodev), GST_ERROR_SYSTEM);
- return FALSE;
- }
-}
-
-gboolean
-gst_v4l2_get_input (GstV4l2Object * v4l2object, gint * input)
-{
- gint n;
-
- GST_DEBUG_OBJECT (v4l2object->element, "trying to get input");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_INPUT, &n) < 0)
- goto input_failed;
-
- *input = n;
-
- GST_DEBUG_OBJECT (v4l2object->element, "input: %d", n);
-
- return TRUE;
-
- /* ERRORS */
-input_failed:
- if (v4l2object->vcap.capabilities & V4L2_CAP_TUNER) {
- /* only give a warning message if driver actually claims to have tuner
- * support
- */
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get current input on device '%s'. May be it is a radio device"), v4l2object->videodev), GST_ERROR_SYSTEM);
- }
- return FALSE;
-}
-
-gboolean
-gst_v4l2_set_input (GstV4l2Object * v4l2object, gint input)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "trying to set input to %d", input);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_S_INPUT, &input) < 0)
- goto input_failed;
-
- return TRUE;
-
- /* ERRORS */
-input_failed:
- if (v4l2object->vcap.capabilities & V4L2_CAP_TUNER) {
- /* only give a warning message if driver actually claims to have tuner
- * support
- */
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set input %d on device %s."),
- input, v4l2object->videodev), GST_ERROR_SYSTEM);
- }
- return FALSE;
-}
-
-gboolean
-gst_v4l2_get_output (GstV4l2Object * v4l2object, gint * output)
-{
- gint n;
-
- GST_DEBUG_OBJECT (v4l2object->element, "trying to get output");
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_G_OUTPUT, &n) < 0)
- goto output_failed;
-
- *output = n;
-
- GST_DEBUG_OBJECT (v4l2object->element, "output: %d", n);
-
- return TRUE;
-
- /* ERRORS */
-output_failed:
- if (v4l2object->vcap.capabilities & V4L2_CAP_TUNER) {
- /* only give a warning message if driver actually claims to have tuner
- * support
- */
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to get current output on device '%s'. May be it is a radio device"), v4l2object->videodev), GST_ERROR_SYSTEM);
- }
- return FALSE;
-}
-
-gboolean
-gst_v4l2_set_output (GstV4l2Object * v4l2object, gint output)
-{
- GST_DEBUG_OBJECT (v4l2object->element, "trying to set output to %d", output);
-
- if (!GST_V4L2_IS_OPEN (v4l2object))
- return FALSE;
-
- if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_S_OUTPUT, &output) < 0)
- goto output_failed;
-
- return TRUE;
-
- /* ERRORS */
-output_failed:
- if (v4l2object->vcap.capabilities & V4L2_CAP_TUNER) {
- /* only give a warning message if driver actually claims to have tuner
- * support
- */
- GST_ELEMENT_WARNING (v4l2object->element, RESOURCE, SETTINGS,
- (_("Failed to set output %d on device %s."),
- output, v4l2object->videodev), GST_ERROR_SYSTEM);
- }
- return FALSE;
-}
diff --git a/wearable/sys/v4l2/v4l2_calls.h b/wearable/sys/v4l2/v4l2_calls.h
deleted file mode 100644
index d2e2c72..0000000
--- a/wearable/sys/v4l2/v4l2_calls.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * v4l2_calls.h - generic V4L2 calls handling
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __V4L2_CALLS_H__
-#define __V4L2_CALLS_H__
-
-#include "gstv4l2object.h"
-
-#ifdef HAVE_LIBV4L2
-# include <libv4l2.h>
-#else
-# include <sys/ioctl.h>
-# include <linux/videodev2.h>
-# define v4l2_fd_open(fd, flags) (fd)
-# define v4l2_close close
-# define v4l2_dup dup
-# define v4l2_ioctl ioctl
-# define v4l2_read read
-# define v4l2_mmap mmap
-# define v4l2_munmap munmap
-#endif
-
-/* simple check whether the device is open */
-#define GST_V4L2_IS_OPEN(v4l2object) \
- (v4l2object->video_fd > 0)
-
-/* check whether the device is 'active' */
-#define GST_V4L2_IS_ACTIVE(v4l2object) \
- (v4l2object->buffer != NULL)
-
-#define GST_V4L2_IS_OVERLAY(v4l2object) \
- (v4l2object->vcap.capabilities & V4L2_CAP_VIDEO_OVERLAY)
-
-/* checks whether the current v4lv4l2object has already been open()'ed or not */
-#define GST_V4L2_CHECK_OPEN(v4l2object) \
- if (!GST_V4L2_IS_OPEN(v4l2object)) \
- { \
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS, \
- (_("Device is not open.")), (NULL)); \
- return FALSE; \
- }
-
-/* checks whether the current v4lv4l2object is close()'ed or whether it is still open */
-#define GST_V4L2_CHECK_NOT_OPEN(v4l2object) \
- if (GST_V4L2_IS_OPEN(v4l2object)) \
- { \
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS, \
- (_("Device is open.")), (NULL)); \
- return FALSE; \
- }
-
-/* checks whether the current v4lv4l2object does video overlay */
-#define GST_V4L2_CHECK_OVERLAY(v4l2object) \
- if (!GST_V4L2_IS_OVERLAY(v4l2object)) \
- { \
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS, \
- (NULL), ("Device cannot handle overlay")); \
- return FALSE; \
- }
-
-/* checks whether we're in capture mode or not */
-#define GST_V4L2_CHECK_ACTIVE(v4l2object) \
- if (!GST_V4L2_IS_ACTIVE(v4l2object)) \
- { \
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS, \
- (NULL), ("Device is not in streaming mode")); \
- return FALSE; \
- }
-
-/* checks whether we're out of capture mode or not */
-#define GST_V4L2_CHECK_NOT_ACTIVE(v4l2object) \
- if (GST_V4L2_IS_ACTIVE(v4l2object)) \
- { \
- GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS, \
- (NULL), ("Device is in streaming mode")); \
- return FALSE; \
- }
-
-
-/* open/close the device */
-gboolean gst_v4l2_open (GstV4l2Object *v4l2object);
-gboolean gst_v4l2_close (GstV4l2Object *v4l2object);
-
-/* norm/input/output */
-gboolean gst_v4l2_get_norm (GstV4l2Object *v4l2object,
- v4l2_std_id *norm);
-gboolean gst_v4l2_set_norm (GstV4l2Object *v4l2object,
- v4l2_std_id norm);
-gboolean gst_v4l2_get_input (GstV4l2Object * v4l2object,
- gint * input);
-gboolean gst_v4l2_set_input (GstV4l2Object * v4l2object,
- gint input);
-gboolean gst_v4l2_get_output (GstV4l2Object *v4l2object,
- gint *output);
-gboolean gst_v4l2_set_output (GstV4l2Object *v4l2object,
- gint output);
-
-/* frequency control */
-gboolean gst_v4l2_get_frequency (GstV4l2Object *v4l2object,
- gint tunernum,
- gulong *frequency);
-gboolean gst_v4l2_set_frequency (GstV4l2Object *v4l2object,
- gint tunernum,
- gulong frequency);
-gboolean gst_v4l2_signal_strength (GstV4l2Object *v4l2object,
- gint tunernum,
- gulong *signal);
-
-/* attribute control */
-gboolean gst_v4l2_get_attribute (GstV4l2Object *v4l2object,
- int attribute,
- int *value);
-gboolean gst_v4l2_set_attribute (GstV4l2Object *v4l2object,
- int attribute,
- const int value);
-
-gboolean gst_v4l2_get_capabilities (GstV4l2Object * v4l2object);
-
-
-#define LOG_CAPS(obj, caps) GST_DEBUG_OBJECT (obj, "%s: %" GST_PTR_FORMAT, #caps, caps)
-
-#endif /* __V4L2_CALLS_H__ */
diff --git a/wearable/sys/v4l2/v4l2src_calls.c b/wearable/sys/v4l2/v4l2src_calls.c
deleted file mode 100644
index bfa5589..0000000
--- a/wearable/sys/v4l2/v4l2src_calls.c
+++ /dev/null
@@ -1,434 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * v4l2src.c - system calls
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <errno.h>
-#include "v4l2src_calls.h"
-#include <sys/time.h>
-#include <unistd.h>
-#ifdef __sun
-/* Needed on older Solaris Nevada builds (72 at least) */
-#include <stropts.h>
-#include <sys/ioccom.h>
-#endif
-
-#include "gstv4l2tuner.h"
-#include "gstv4l2bufferpool.h"
-
-#include "gst/gst-i18n-plugin.h"
-
-#define GST_CAT_DEFAULT v4l2src_debug
-GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
-
-/* lalala... */
-#define GST_V4L2_SET_ACTIVE(element) (element)->buffer = GINT_TO_POINTER (-1)
-#define GST_V4L2_SET_INACTIVE(element) (element)->buffer = NULL
-
-/* On some systems MAP_FAILED seems to be missing */
-#ifndef MAP_FAILED
-#define MAP_FAILED ((caddr_t) -1)
-#endif
-
-
-/* Local functions */
-
-static gboolean
-gst_v4l2src_buffer_pool_activate (GstV4l2BufferPool * pool,
- GstV4l2Src * v4l2src)
-{
- GstV4l2Buffer *buf;
-
- while ((buf = gst_v4l2_buffer_pool_get (pool, FALSE)) != NULL)
- if (!gst_v4l2_buffer_pool_qbuf (pool, buf))
- goto queue_failed;
-
- return TRUE;
-
- /* ERRORS */
-queue_failed:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Could not enqueue buffers in device '%s'."),
- v4l2src->v4l2object->videodev),
- ("enqueing buffer %d/%d failed: %s",
- buf->vbuffer.index, v4l2src->num_buffers, g_strerror (errno)));
- return FALSE;
- }
-}
-
-/******************************************************
- * gst_v4l2src_grab_frame ():
- * grab a frame for capturing
- * return value: GST_FLOW_OK, GST_FLOW_WRONG_STATE or GST_FLOW_ERROR
- ******************************************************/
-GstFlowReturn
-gst_v4l2src_grab_frame (GstV4l2Src * v4l2src, GstBuffer ** buf)
-{
-#define NUM_TRIALS 50
- GstV4l2Object *v4l2object;
- GstV4l2BufferPool *pool;
- gint32 trials = NUM_TRIALS;
- GstBuffer *pool_buffer;
- gboolean need_copy;
- gint ret;
-
- v4l2object = v4l2src->v4l2object;
- pool = v4l2src->pool;
- if (!pool)
- goto no_buffer_pool;
-
- GST_DEBUG_OBJECT (v4l2src, "grab frame");
-
- for (;;) {
- if (v4l2object->can_poll_device) {
- ret = gst_poll_wait (v4l2object->poll, GST_CLOCK_TIME_NONE);
- if (G_UNLIKELY (ret < 0)) {
- if (errno == EBUSY)
- goto stopped;
- if (errno == ENXIO) {
- GST_DEBUG_OBJECT (v4l2src,
- "v4l2 device doesn't support polling. Disabling");
- v4l2object->can_poll_device = FALSE;
- } else {
- if (errno != EAGAIN && errno != EINTR)
- goto select_error;
- }
- }
- }
-
- pool_buffer = GST_BUFFER (gst_v4l2_buffer_pool_dqbuf (pool));
- if (pool_buffer)
- break;
-
- GST_WARNING_OBJECT (pool->v4l2elem, "trials=%d", trials);
-
- /* if the sync() got interrupted, we can retry */
- switch (errno) {
- case EINVAL:
- case ENOMEM:
- /* fatal */
- return GST_FLOW_ERROR;
-
- case EAGAIN:
- case EIO:
- case EINTR:
- default:
- /* try again, until too many trials */
- break;
- }
-
- /* check nr. of attempts to capture */
- if (--trials == -1) {
- goto too_many_trials;
- }
- }
-
- /* if we are handing out the last buffer in the pool, we need to make a
- * copy and bring the buffer back in the pool. */
- need_copy = v4l2src->always_copy
- || !gst_v4l2_buffer_pool_available_buffers (pool);
-
- if (G_UNLIKELY (need_copy)) {
- if (!v4l2src->always_copy) {
- GST_CAT_LOG_OBJECT (GST_CAT_PERFORMANCE, v4l2src,
- "running out of buffers, making a copy to reuse current one");
- }
- *buf = gst_buffer_copy (pool_buffer);
- GST_BUFFER_FLAG_UNSET (*buf, GST_BUFFER_FLAG_READONLY);
- /* this will requeue */
- gst_buffer_unref (pool_buffer);
- } else {
- *buf = pool_buffer;
- }
- /* we set the buffer metadata in gst_v4l2src_create() */
-
- return GST_FLOW_OK;
-
- /* ERRORS */
-no_buffer_pool:
- {
- GST_DEBUG ("no buffer pool");
- return GST_FLOW_WRONG_STATE;
- }
-select_error:
- {
- GST_ELEMENT_ERROR (pool->v4l2elem, RESOURCE, READ, (NULL),
- ("select error %d: %s (%d)", ret, g_strerror (errno), errno));
- return GST_FLOW_ERROR;
- }
-stopped:
- {
- GST_DEBUG ("stop called");
- return GST_FLOW_WRONG_STATE;
- }
-too_many_trials:
- {
- GST_ELEMENT_ERROR (pool->v4l2elem, RESOURCE, FAILED,
- (_("Failed trying to get video frames from device '%s'."),
- v4l2object->videodev),
- (_("Failed after %d tries. device %s. system error: %s"),
- NUM_TRIALS, v4l2object->videodev, g_strerror (errno)));
- return GST_FLOW_ERROR;
- }
-}
-
-/******************************************************
- * gst_v4l2src_set_capture():
- * set capture parameters
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2src_set_capture (GstV4l2Src * v4l2src, guint32 pixelformat,
- guint32 width, guint32 height, gboolean interlaced,
- guint fps_n, guint fps_d)
-{
- gint fd = v4l2src->v4l2object->video_fd;
- struct v4l2_streamparm stream;
-
- if (pixelformat == GST_MAKE_FOURCC ('M', 'P', 'E', 'G'))
- return TRUE;
-
- if (!gst_v4l2_object_set_format (v4l2src->v4l2object, pixelformat, width,
- height, interlaced)) {
- /* error already reported */
- return FALSE;
- }
-
- /* Is there a reason we require the caller to always specify a framerate? */
- GST_DEBUG_OBJECT (v4l2src, "Desired framerate: %u/%u", fps_n, fps_d);
-
- memset (&stream, 0x00, sizeof (struct v4l2_streamparm));
- stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (v4l2_ioctl (fd, VIDIOC_G_PARM, &stream) < 0) {
- GST_ELEMENT_WARNING (v4l2src, RESOURCE, SETTINGS,
- (_("Could not get parameters on device '%s'"),
- v4l2src->v4l2object->videodev), GST_ERROR_SYSTEM);
- goto done;
- }
-
- /* We used to skip frame rate setup if the camera was already setup
- with the requested frame rate. This breaks some cameras though,
- causing them to not output data (several models of Thinkpad cameras
- have this problem at least).
- So, don't skip. */
-
- /* We want to change the frame rate, so check whether we can. Some cheap USB
- * cameras don't have the capability */
- if ((stream.parm.capture.capability & V4L2_CAP_TIMEPERFRAME) == 0) {
- GST_DEBUG_OBJECT (v4l2src, "Not setting framerate (not supported)");
- goto done;
- }
-
- GST_LOG_OBJECT (v4l2src, "Setting framerate to %u/%u", fps_n, fps_d);
-
- /* Note: V4L2 wants the frame interval, we have the frame rate */
- stream.parm.capture.timeperframe.numerator = fps_d;
- stream.parm.capture.timeperframe.denominator = fps_n;
-
- /* some cheap USB cam's won't accept any change */
- if (v4l2_ioctl (fd, VIDIOC_S_PARM, &stream) < 0) {
- GST_ELEMENT_WARNING (v4l2src, RESOURCE, SETTINGS,
- (_("Video input device did not accept new frame rate setting.")),
- GST_ERROR_SYSTEM);
- goto done;
- }
-
- v4l2src->fps_n = fps_n;
- v4l2src->fps_d = fps_d;
-
- /* if we have a framerate pre-calculate duration */
- if (fps_n > 0 && fps_d > 0) {
- v4l2src->duration = gst_util_uint64_scale_int (GST_SECOND, fps_d, fps_n);
- } else {
- v4l2src->duration = GST_CLOCK_TIME_NONE;
- }
-
- GST_INFO_OBJECT (v4l2src,
- "Set framerate to %u/%u and duration to %" GST_TIME_FORMAT, fps_n, fps_d,
- GST_TIME_ARGS (v4l2src->duration));
-done:
-
- return TRUE;
-}
-
-/******************************************************
- * gst_v4l2src_capture_init():
- * initialize the capture system
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2src_capture_init (GstV4l2Src * v4l2src, GstCaps * caps)
-{
- GST_DEBUG_OBJECT (v4l2src, "initializing the capture system");
-
- GST_V4L2_CHECK_OPEN (v4l2src->v4l2object);
- GST_V4L2_CHECK_NOT_ACTIVE (v4l2src->v4l2object);
-
- if (v4l2src->v4l2object->vcap.capabilities & V4L2_CAP_STREAMING) {
-
- /* Map the buffers */
- GST_LOG_OBJECT (v4l2src, "initiating buffer pool");
-
- if (!(v4l2src->pool = gst_v4l2_buffer_pool_new (GST_ELEMENT (v4l2src),
- v4l2src->v4l2object->video_fd,
- v4l2src->num_buffers, caps, TRUE, V4L2_BUF_TYPE_VIDEO_CAPTURE)))
- goto buffer_pool_new_failed;
-
- GST_INFO_OBJECT (v4l2src, "capturing buffers via mmap()");
- v4l2src->use_mmap = TRUE;
-
- if (v4l2src->num_buffers != v4l2src->pool->buffer_count) {
- v4l2src->num_buffers = v4l2src->pool->buffer_count;
- g_object_notify (G_OBJECT (v4l2src), "queue-size");
- }
-
- } else if (v4l2src->v4l2object->vcap.capabilities & V4L2_CAP_READWRITE) {
- GST_INFO_OBJECT (v4l2src, "capturing buffers via read()");
- v4l2src->use_mmap = FALSE;
- v4l2src->pool = NULL;
- } else {
- goto no_supported_capture_method;
- }
-
- GST_V4L2_SET_ACTIVE (v4l2src->v4l2object);
-
- return TRUE;
-
- /* ERRORS */
-buffer_pool_new_failed:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("Could not map buffers from device '%s'"),
- v4l2src->v4l2object->videodev),
- ("Failed to create buffer pool: %s", g_strerror (errno)));
- return FALSE;
- }
-no_supported_capture_method:
- {
- GST_ELEMENT_ERROR (v4l2src, RESOURCE, READ,
- (_("The driver of device '%s' does not support any known capture "
- "method."), v4l2src->v4l2object->videodev), (NULL));
- return FALSE;
- }
-}
-
-
-/******************************************************
- * gst_v4l2src_capture_start():
- * start streaming capture
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2src_capture_start (GstV4l2Src * v4l2src)
-{
- GST_DEBUG_OBJECT (v4l2src, "starting the capturing");
- //GST_V4L2_CHECK_OPEN (v4l2src->v4l2object);
- GST_V4L2_CHECK_ACTIVE (v4l2src->v4l2object);
-
- v4l2src->quit = FALSE;
-
- if (v4l2src->use_mmap) {
- if (!gst_v4l2src_buffer_pool_activate (v4l2src->pool, v4l2src)) {
- return FALSE;
- }
-
- if (!gst_v4l2_object_start_streaming (v4l2src->v4l2object)) {
- return FALSE;
- }
- }
-
- v4l2src->is_capturing = TRUE;
-
- return TRUE;
-}
-
-/******************************************************
- * gst_v4l2src_capture_stop():
- * stop streaming capture
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2src_capture_stop (GstV4l2Src * v4l2src)
-{
- GST_DEBUG_OBJECT (v4l2src, "stopping capturing");
-
- if (!GST_V4L2_IS_OPEN (v4l2src->v4l2object)) {
- goto done;
- }
- if (!GST_V4L2_IS_ACTIVE (v4l2src->v4l2object)) {
- goto done;
- }
-
- if (v4l2src->use_mmap) {
- /* we actually need to sync on all queued buffers but not
- * on the non-queued ones */
- if (!gst_v4l2_object_stop_streaming (v4l2src->v4l2object)) {
- return FALSE;
- }
- }
-
-done:
-
- /* make an optional pending wait stop */
- v4l2src->quit = TRUE;
- v4l2src->is_capturing = FALSE;
-
- return TRUE;
-}
-
-/******************************************************
- * gst_v4l2src_capture_deinit():
- * deinitialize the capture system
- * return value: TRUE on success, FALSE on error
- ******************************************************/
-gboolean
-gst_v4l2src_capture_deinit (GstV4l2Src * v4l2src)
-{
- GST_DEBUG_OBJECT (v4l2src, "deinitting capture system");
-
- if (!GST_V4L2_IS_OPEN (v4l2src->v4l2object)) {
- return TRUE;
- }
- if (!GST_V4L2_IS_ACTIVE (v4l2src->v4l2object)) {
- return TRUE;
- }
-
- if (v4l2src->pool) {
- gst_v4l2_buffer_pool_destroy (v4l2src->pool);
- v4l2src->pool = NULL;
- }
-
- GST_V4L2_SET_INACTIVE (v4l2src->v4l2object);
-
- return TRUE;
-}
diff --git a/wearable/sys/v4l2/v4l2src_calls.h b/wearable/sys/v4l2/v4l2src_calls.h
deleted file mode 100644
index 7091918..0000000
--- a/wearable/sys/v4l2/v4l2src_calls.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2002 Ronald Bultje <rbultje@ronald.bitfreak.net>
- * 2006 Edgard Lima <edgard.lima@indt.org.br>
- *
- * v4l2src.h - system calls
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __V4L2SRC_CALLS_H__
-#define __V4L2SRC_CALLS_H__
-
-#include "gstv4l2src.h"
-#include "v4l2_calls.h"
-
-gboolean gst_v4l2src_get_capture (GstV4l2Src * v4l2src);
-gboolean gst_v4l2src_set_capture (GstV4l2Src * v4l2src,
- guint32 pixelformat,
- guint32 width, guint32 height,
- gboolean interlaced,
- guint32 fps_n, guint32 fps_d);
-
-gboolean gst_v4l2src_capture_init (GstV4l2Src * v4l2src, GstCaps *caps);
-gboolean gst_v4l2src_capture_start (GstV4l2Src * v4l2src);
-
-GstFlowReturn gst_v4l2src_grab_frame (GstV4l2Src * v4l2src, GstBuffer **buf);
-
-gboolean gst_v4l2src_capture_stop (GstV4l2Src * v4l2src);
-gboolean gst_v4l2src_capture_deinit (GstV4l2Src * v4l2src);
-
-
-#endif /* __V4L2SRC_CALLS_H__ */
diff --git a/wearable/sys/waveform/Makefile.am b/wearable/sys/waveform/Makefile.am
deleted file mode 100644
index a9562a8..0000000
--- a/wearable/sys/waveform/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-plugin_LTLIBRARIES = libgstwaveformsink.la
-
-# FIXME: Replace DIRECTSOUND CFLAGS+LIBS with waveform related ones and fix
-# the configure.ac + sys/Makefile.am to get this stuff building in MingW
-# For now, it's just disted for use in the VS builds.
-
-libgstwaveformsink_la_SOURCES = gstwaveformsink.c gstwaveformplugin.c
-libgstwaveformsink_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) $(DIRECTSOUND_CFLAGS)
-libgstwaveformsink_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstaudio-$(GST_MAJORMINOR) -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS) \
- $(DIRECTSOUND_LIBS)
-libgstwaveformsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DIRECTSOUND_LDFLAGS)
-libgstwaveformsink_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstwaveformsink.h
-
diff --git a/wearable/sys/waveform/Makefile.in b/wearable/sys/waveform/Makefile.in
deleted file mode 100644
index efdf5e7..0000000
--- a/wearable/sys/waveform/Makefile.in
+++ /dev/null
@@ -1,828 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/waveform
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstwaveformsink_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstwaveformsink_la_OBJECTS = \
- libgstwaveformsink_la-gstwaveformsink.lo \
- libgstwaveformsink_la-gstwaveformplugin.lo
-libgstwaveformsink_la_OBJECTS = $(am_libgstwaveformsink_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstwaveformsink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) \
- $(libgstwaveformsink_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstwaveformsink_la_SOURCES)
-DIST_SOURCES = $(libgstwaveformsink_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstwaveformsink.la
-
-# FIXME: Replace DIRECTSOUND CFLAGS+LIBS with waveform related ones and fix
-# the configure.ac + sys/Makefile.am to get this stuff building in MingW
-# For now, it's just disted for use in the VS builds.
-libgstwaveformsink_la_SOURCES = gstwaveformsink.c gstwaveformplugin.c
-libgstwaveformsink_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) $(DIRECTSOUND_CFLAGS)
-
-libgstwaveformsink_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- -lgstaudio-$(GST_MAJORMINOR) -lgstinterfaces-$(GST_MAJORMINOR) \
- $(GST_BASE_LIBS) \
- $(GST_LIBS) \
- $(DIRECTSOUND_LIBS)
-
-libgstwaveformsink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DIRECTSOUND_LDFLAGS)
-libgstwaveformsink_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstwaveformsink.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/waveform/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/waveform/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstwaveformsink.la: $(libgstwaveformsink_la_OBJECTS) $(libgstwaveformsink_la_DEPENDENCIES) $(EXTRA_libgstwaveformsink_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstwaveformsink_la_LINK) -rpath $(plugindir) $(libgstwaveformsink_la_OBJECTS) $(libgstwaveformsink_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaveformsink_la-gstwaveformplugin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaveformsink_la-gstwaveformsink.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstwaveformsink_la-gstwaveformsink.lo: gstwaveformsink.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) -MT libgstwaveformsink_la-gstwaveformsink.lo -MD -MP -MF $(DEPDIR)/libgstwaveformsink_la-gstwaveformsink.Tpo -c -o libgstwaveformsink_la-gstwaveformsink.lo `test -f 'gstwaveformsink.c' || echo '$(srcdir)/'`gstwaveformsink.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstwaveformsink_la-gstwaveformsink.Tpo $(DEPDIR)/libgstwaveformsink_la-gstwaveformsink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstwaveformsink.c' object='libgstwaveformsink_la-gstwaveformsink.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) -c -o libgstwaveformsink_la-gstwaveformsink.lo `test -f 'gstwaveformsink.c' || echo '$(srcdir)/'`gstwaveformsink.c
-
-libgstwaveformsink_la-gstwaveformplugin.lo: gstwaveformplugin.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) -MT libgstwaveformsink_la-gstwaveformplugin.lo -MD -MP -MF $(DEPDIR)/libgstwaveformsink_la-gstwaveformplugin.Tpo -c -o libgstwaveformsink_la-gstwaveformplugin.lo `test -f 'gstwaveformplugin.c' || echo '$(srcdir)/'`gstwaveformplugin.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstwaveformsink_la-gstwaveformplugin.Tpo $(DEPDIR)/libgstwaveformsink_la-gstwaveformplugin.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstwaveformplugin.c' object='libgstwaveformsink_la-gstwaveformplugin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaveformsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaveformsink_la_CFLAGS) $(CFLAGS) -c -o libgstwaveformsink_la-gstwaveformplugin.lo `test -f 'gstwaveformplugin.c' || echo '$(srcdir)/'`gstwaveformplugin.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/waveform/gstwaveformplugin.c b/wearable/sys/waveform/gstwaveformplugin.c
deleted file mode 100644
index 0d7943e..0000000
--- a/wearable/sys/waveform/gstwaveformplugin.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* GStreamer
-* Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
-*
-* gstwaveformplugin.c:
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstwaveformsink.h"
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- if (!gst_element_register (plugin, "waveformsink", GST_RANK_PRIMARY,
- GST_TYPE_WAVEFORM_SINK))
- return FALSE;
-
- return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "waveform",
- "WaveForm win32 API plugin",
- plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/wearable/sys/waveform/gstwaveformsink.c b/wearable/sys/waveform/gstwaveformsink.c
deleted file mode 100644
index 0c59829..0000000
--- a/wearable/sys/waveform/gstwaveformsink.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/* GStreamer
-* Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
-*
-* gstwaveformsink.c:
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*/
-
-/**
- * SECTION:element-waveformsink
- *
- * This element lets you output sound using the Windows WaveForm API.
- *
- * Note that you should almost always use generic audio conversion elements
- * like audioconvert and audioresample in front of an audiosink to make sure
- * your pipeline works under all circumstances (those conversion elements will
- * act in passthrough-mode if no conversion is necessary).
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch -v audiotestsrc ! audioconvert ! volume volume=0.1 ! waveformsink
- * ]| will output a sine wave (continuous beep sound) to your sound card (with
- * a very low volume as precaution).
- * |[
- * gst-launch -v filesrc location=music.ogg ! decodebin ! audioconvert ! audioresample ! waveformsink
- * ]| will play an Ogg/Vorbis audio file and output it.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstwaveformsink.h"
-
-GST_DEBUG_CATEGORY_STATIC (waveformsink_debug);
-
-static void gst_waveform_sink_base_init (gpointer g_class);
-static void gst_waveform_sink_class_init (GstWaveFormSinkClass * klass);
-static void gst_waveform_sink_init (GstWaveFormSink * wfsink,
- GstWaveFormSinkClass * g_class);
-static void gst_waveform_sink_finalise (GObject * object);
-static void gst_waveform_sink_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_waveform_sink_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec);
-static GstCaps *gst_waveform_sink_getcaps (GstBaseSink * bsink);
-
-/************************************************************************/
-/* GstAudioSink functions */
-/************************************************************************/
-static gboolean gst_waveform_sink_prepare (GstAudioSink * asink,
- GstRingBufferSpec * spec);
-static gboolean gst_waveform_sink_unprepare (GstAudioSink * asink);
-static gboolean gst_waveform_sink_open (GstAudioSink * asink);
-static gboolean gst_waveform_sink_close (GstAudioSink * asink);
-static guint gst_waveform_sink_write (GstAudioSink * asink, gpointer data,
- guint length);
-static guint gst_waveform_sink_delay (GstAudioSink * asink);
-static void gst_waveform_sink_reset (GstAudioSink * asink);
-
-/************************************************************************/
-/* Utils */
-/************************************************************************/
-GstCaps *gst_waveform_sink_create_caps (gint rate, gint channels,
- gint bits_per_sample);
-WAVEHDR *bufferpool_get_buffer (GstWaveFormSink * wfsink, gpointer data,
- guint length);
-void CALLBACK waveOutProc (HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance,
- DWORD_PTR dwParam1, DWORD_PTR dwParam2);
-
-static GstStaticPadTemplate waveformsink_sink_factory =
- GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw-int, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 16, "
- "depth = (int) 16, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]; "
- "audio/x-raw-int, "
- "signed = (boolean) { TRUE, FALSE }, "
- "width = (int) 8, "
- "depth = (int) 8, "
- "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 2 ]"));
-
-GST_BOILERPLATE (GstWaveFormSink, gst_waveform_sink, GstAudioSink,
- GST_TYPE_AUDIO_SINK);
-
-static void
-gst_waveform_sink_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (element_class, "WaveForm Audio Sink",
- "Sink/Audio",
- "Output to a sound card via WaveForm API",
- "Sebastien Moutte <sebastien@moutte.net>");
- gst_element_class_add_static_pad_template (element_class,
- &waveformsink_sink_factory);
-}
-
-static void
-gst_waveform_sink_class_init (GstWaveFormSinkClass * klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
- GstBaseSinkClass *gstbasesink_class;
- GstBaseAudioSinkClass *gstbaseaudiosink_class;
- GstAudioSinkClass *gstaudiosink_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
- gstbasesink_class = (GstBaseSinkClass *) klass;
- gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass;
- gstaudiosink_class = (GstAudioSinkClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = gst_waveform_sink_finalise;
- gobject_class->get_property = gst_waveform_sink_get_property;
- gobject_class->set_property = gst_waveform_sink_set_property;
-
- gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_waveform_sink_getcaps);
-
- gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_waveform_sink_prepare);
- gstaudiosink_class->unprepare =
- GST_DEBUG_FUNCPTR (gst_waveform_sink_unprepare);
- gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_waveform_sink_open);
- gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_waveform_sink_close);
- gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_waveform_sink_write);
- gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_waveform_sink_delay);
- gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_waveform_sink_reset);
-
- GST_DEBUG_CATEGORY_INIT (waveformsink_debug, "waveformsink", 0,
- "Waveform sink");
-}
-
-static void
-gst_waveform_sink_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_waveform_sink_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (object);
-
- switch (prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_waveform_sink_init (GstWaveFormSink * wfsink,
- GstWaveFormSinkClass * g_class)
-{
- /* initialize members */
- wfsink->hwaveout = NULL;
- wfsink->cached_caps = NULL;
- wfsink->wave_buffers = NULL;
- wfsink->write_buffer = 0;
- wfsink->buffer_count = BUFFER_COUNT;
- wfsink->buffer_size = BUFFER_SIZE;
- wfsink->free_buffers_count = wfsink->buffer_count;
- wfsink->bytes_in_queue = 0;
-
- InitializeCriticalSection (&wfsink->critic_wave);
-}
-
-static void
-gst_waveform_sink_finalise (GObject * object)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (object);
-
- if (wfsink->cached_caps) {
- gst_caps_unref (wfsink->cached_caps);
- wfsink->cached_caps = NULL;
- }
-
- DeleteCriticalSection (&wfsink->critic_wave);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static GstCaps *
-gst_waveform_sink_getcaps (GstBaseSink * bsink)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (bsink);
- MMRESULT mmresult;
- WAVEOUTCAPS wocaps;
- GstCaps *caps, *caps_temp;
-
- /* return the cached caps if already defined */
- if (wfsink->cached_caps) {
- return gst_caps_ref (wfsink->cached_caps);
- }
-
- /* get the default device caps */
- mmresult = waveOutGetDevCaps (WAVE_MAPPER, &wocaps, sizeof (wocaps));
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_ELEMENT_ERROR (wfsink, RESOURCE, SETTINGS,
- ("gst_waveform_sink_getcaps: waveOutGetDevCaps failed error=>%s",
- wfsink->error_string), (NULL));
- return NULL;
- }
-
- caps = gst_caps_new_empty ();
-
- /* create a caps for all wave formats supported by the device
- starting by the best quality format */
- if (wocaps.dwFormats & WAVE_FORMAT_96S16) {
- caps_temp = gst_waveform_sink_create_caps (96000, 2, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_96S08) {
- caps_temp = gst_waveform_sink_create_caps (96000, 2, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_96M16) {
- caps_temp = gst_waveform_sink_create_caps (96000, 1, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_96M08) {
- caps_temp = gst_waveform_sink_create_caps (96000, 1, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_4S16) {
- caps_temp = gst_waveform_sink_create_caps (44100, 2, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_4S08) {
- caps_temp = gst_waveform_sink_create_caps (44100, 2, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_4M16) {
- caps_temp = gst_waveform_sink_create_caps (44100, 1, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_4M08) {
- caps_temp = gst_waveform_sink_create_caps (44100, 1, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_2S16) {
- caps_temp = gst_waveform_sink_create_caps (22050, 2, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_2S08) {
- caps_temp = gst_waveform_sink_create_caps (22050, 2, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_2M16) {
- caps_temp = gst_waveform_sink_create_caps (22050, 1, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_2M08) {
- caps_temp = gst_waveform_sink_create_caps (22050, 1, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_1S16) {
- caps_temp = gst_waveform_sink_create_caps (11025, 2, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_1S08) {
- caps_temp = gst_waveform_sink_create_caps (11025, 2, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_1M16) {
- caps_temp = gst_waveform_sink_create_caps (11025, 1, 16);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
- if (wocaps.dwFormats & WAVE_FORMAT_1M08) {
- caps_temp = gst_waveform_sink_create_caps (11025, 1, 8);
- if (caps_temp) {
- gst_caps_append (caps, caps_temp);
- }
- }
-
- if (gst_caps_is_empty (caps)) {
- gst_caps_unref (caps);
- caps = NULL;
- } else {
- wfsink->cached_caps = gst_caps_ref (caps);
- }
-
- GST_CAT_LOG_OBJECT (waveformsink_debug, wfsink, "Returning caps %s",
- gst_caps_to_string (caps));
-
- return caps;
-}
-
-static gboolean
-gst_waveform_sink_open (GstAudioSink * asink)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
-
- /* nothing to do here as the device needs to be opened with the format we will use */
-
- return TRUE;
-}
-
-static gboolean
-gst_waveform_sink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
- WAVEFORMATEX wfx;
- MMRESULT mmresult;
- guint index;
-
- /* setup waveformex struture with the input ringbuffer specs */
- memset (&wfx, 0, sizeof (wfx));
- wfx.cbSize = 0;
- wfx.wFormatTag = WAVE_FORMAT_PCM;
- wfx.nChannels = spec->channels;
- wfx.nSamplesPerSec = spec->rate;
- wfx.wBitsPerSample = (spec->bytes_per_sample * 8) / wfx.nChannels;
- wfx.nBlockAlign = spec->bytes_per_sample;
- wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
-
- /* save bytes per sample to use it in delay */
- wfsink->bytes_per_sample = spec->bytes_per_sample;
-
- /* open the default audio device with the given caps */
- mmresult = waveOutOpen (&wfsink->hwaveout, WAVE_MAPPER,
- &wfx, (DWORD_PTR) waveOutProc, (DWORD_PTR) wfsink, CALLBACK_FUNCTION);
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_ELEMENT_ERROR (wfsink, RESOURCE, OPEN_WRITE,
- ("gst_waveform_sink_prepare: waveOutOpen failed error=>%s",
- wfsink->error_string), (NULL));
- return FALSE;
- }
-
- /* evaluate the buffer size and the number of buffers needed */
- wfsink->free_buffers_count = wfsink->buffer_count;
-
- /* allocate wave buffers */
- wfsink->wave_buffers = (WAVEHDR *) g_new0 (WAVEHDR, wfsink->buffer_count);
- if (!wfsink->wave_buffers) {
- GST_ELEMENT_ERROR (wfsink, RESOURCE, OPEN_WRITE,
- ("gst_waveform_sink_prepare: Failed to allocate wave buffer headers (buffer count=%d)",
- wfsink->buffer_count), (NULL));
- return FALSE;
- }
- memset (wfsink->wave_buffers, 0, sizeof (WAVEHDR) * wfsink->buffer_count);
-
- /* setup headers */
- for (index = 0; index < wfsink->buffer_count; index++) {
- wfsink->wave_buffers[index].dwBufferLength = wfsink->buffer_size;
- wfsink->wave_buffers[index].lpData = g_new0 (gchar, wfsink->buffer_size);
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_waveform_sink_unprepare (GstAudioSink * asink)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
-
- /* free wave buffers */
- if (wfsink->wave_buffers) {
- guint index;
-
- for (index = 0; index < wfsink->buffer_count; index++) {
- if (wfsink->wave_buffers[index].dwFlags & WHDR_PREPARED) {
- MMRESULT mmresult = waveOutUnprepareHeader (wfsink->hwaveout,
- &wfsink->wave_buffers[index], sizeof (WAVEHDR));
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string,
- ERROR_LENGTH - 1);
- GST_CAT_WARNING_OBJECT (waveformsink_debug, wfsink,
- "gst_waveform_sink_unprepare: Error unpreparing buffer => %s",
- wfsink->error_string);
- }
- }
- g_free (wfsink->wave_buffers[index].lpData);
- }
- g_free (wfsink->wave_buffers);
- wfsink->wave_buffers = NULL;
- }
-
- /* close waveform-audio output device */
- if (wfsink->hwaveout) {
- waveOutClose (wfsink->hwaveout);
- wfsink->hwaveout = NULL;
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_waveform_sink_close (GstAudioSink * asink)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
-
- return TRUE;
-}
-
-static guint
-gst_waveform_sink_write (GstAudioSink * asink, gpointer data, guint length)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
- WAVEHDR *waveheader;
- MMRESULT mmresult;
- guint bytes_to_write = length;
- guint remaining_length = length;
-
- wfsink->bytes_in_queue += length;
-
- while (remaining_length > 0) {
- if (wfsink->free_buffers_count == 0) {
- /* no free buffer available, wait for one */
- Sleep (10);
- continue;
- }
-
- /* get the current write buffer header */
- waveheader = &wfsink->wave_buffers[wfsink->write_buffer];
-
- /* unprepare the header if needed */
- if (waveheader->dwFlags & WHDR_PREPARED) {
- mmresult =
- waveOutUnprepareHeader (wfsink->hwaveout, waveheader,
- sizeof (WAVEHDR));
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_CAT_WARNING_OBJECT (waveformsink_debug, wfsink,
- "Error unpreparing buffer => %s", wfsink->error_string);
- }
- }
-
- if (wfsink->buffer_size - waveheader->dwUser >= remaining_length)
- bytes_to_write = remaining_length;
- else
- bytes_to_write = wfsink->buffer_size - waveheader->dwUser;
-
- memcpy (waveheader->lpData + waveheader->dwUser, data, bytes_to_write);
- waveheader->dwUser += bytes_to_write;
- remaining_length -= bytes_to_write;
- data = (guint8 *) data + bytes_to_write;
-
- if (waveheader->dwUser == wfsink->buffer_size) {
- /* we have filled a buffer, let's prepare it and next write it to the device */
- mmresult =
- waveOutPrepareHeader (wfsink->hwaveout, waveheader, sizeof (WAVEHDR));
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_CAT_WARNING_OBJECT (waveformsink_debug, wfsink,
- "gst_waveform_sink_write: Error preparing header => %s",
- wfsink->error_string);
- }
- mmresult = waveOutWrite (wfsink->hwaveout, waveheader, sizeof (WAVEHDR));
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_CAT_WARNING_OBJECT (waveformsink_debug, wfsink,
- "gst_waveform_sink_write: Error writting buffer to the device => %s",
- wfsink->error_string);
- }
-
- EnterCriticalSection (&wfsink->critic_wave);
- wfsink->free_buffers_count--;
- LeaveCriticalSection (&wfsink->critic_wave);
-
- wfsink->write_buffer++;
- wfsink->write_buffer %= wfsink->buffer_count;
- waveheader->dwUser = 0;
- wfsink->bytes_in_queue = 0;
- GST_CAT_LOG_OBJECT (waveformsink_debug, wfsink,
- "gst_waveform_sink_write: Writting a buffer to the device (free buffers remaining=%d, write buffer=%d)",
- wfsink->free_buffers_count, wfsink->write_buffer);
- }
- }
-
- return length;
-}
-
-static guint
-gst_waveform_sink_delay (GstAudioSink * asink)
-{
- /* return the number of samples in queue (device+internal queue) */
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
- guint bytes_in_device =
- (wfsink->buffer_count - wfsink->free_buffers_count) * wfsink->buffer_size;
- guint delay =
- (bytes_in_device + wfsink->bytes_in_queue) / wfsink->bytes_per_sample;
- return delay;
-}
-
-static void
-gst_waveform_sink_reset (GstAudioSink * asink)
-{
- GstWaveFormSink *wfsink = GST_WAVEFORM_SINK (asink);
- MMRESULT mmresult = waveOutReset (wfsink->hwaveout);
-
- if (mmresult != MMSYSERR_NOERROR) {
- waveOutGetErrorText (mmresult, wfsink->error_string, ERROR_LENGTH - 1);
- GST_CAT_WARNING_OBJECT (waveformsink_debug, wfsink,
- "gst_waveform_sink_reset: Error reseting waveform-audio device => %s",
- wfsink->error_string);
- }
-}
-
-GstCaps *
-gst_waveform_sink_create_caps (gint rate, gint channels, gint bits_per_sample)
-{
- GstCaps *caps = NULL;
-
- caps = gst_caps_new_simple ("audio/x-raw-int",
- "width", G_TYPE_INT, bits_per_sample,
- "depth", G_TYPE_INT, bits_per_sample,
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
- "signed", G_TYPE_BOOLEAN, TRUE,
- "channels", G_TYPE_INT, channels, "rate", G_TYPE_INT, rate, NULL);
- return caps;
-}
-
-void CALLBACK
-waveOutProc (HWAVEOUT hwo,
- UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2)
-{
- GstWaveFormSink *wfsink = (GstWaveFormSink *) dwInstance;
-
- if (uMsg == WOM_DONE) {
- EnterCriticalSection (&wfsink->critic_wave);
- wfsink->free_buffers_count++;
- LeaveCriticalSection (&wfsink->critic_wave);
- }
-}
diff --git a/wearable/sys/waveform/gstwaveformsink.h b/wearable/sys/waveform/gstwaveformsink.h
deleted file mode 100644
index b23aea1..0000000
--- a/wearable/sys/waveform/gstwaveformsink.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* GStreamer
- * Copyright (C) 2005 Sebastien Moutte <sebastien@moutte.net>
- *
- * gstwaveformsink.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_WAVEFORMSINK_H__
-#define __GST_WAVEFORMSINK_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiosink.h>
-
-#include <windows.h>
-#include <mmsystem.h>
-
-#ifndef WAVE_FORMAT_96M08
-#define WAVE_FORMAT_96M08 0x00001000 /* 96 kHz, Mono, 8-bit */
-#endif
-
-#ifndef WAVE_FORMAT_96S08
-#define WAVE_FORMAT_96S08 0x00002000 /* 96 kHz, Stereo, 8-bit */
-#endif
-
-#ifndef WAVE_FORMAT_96M16
-#define WAVE_FORMAT_96M16 0x00004000 /* 96 kHz, Mono, 16-bit */
-#endif
-
-#ifndef WAVE_FORMAT_96S16
-#define WAVE_FORMAT_96S16 0x00008000 /* 96 kHz, Stereo, 16-bit */
-#endif
-
-#define ERROR_LENGTH MAXERRORLENGTH+50
-#define BUFFER_COUNT 20
-#define BUFFER_SIZE 8192
-
-G_BEGIN_DECLS
-#define GST_TYPE_WAVEFORM_SINK (gst_waveform_sink_get_type())
-#define GST_WAVEFORM_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WAVEFORM_SINK,GstWaveFormSink))
-#define GST_WAVEFORM_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAVEFORM_SINK,GstWaveFormSinkClass))
-#define GST_IS_WAVEFORM_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WAVEFORM_SINK))
-#define GST_IS_WAVEFORM_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAVEFORM_SINK))
-typedef struct _GstWaveFormSink GstWaveFormSink;
-typedef struct _GstWaveFormSinkClass GstWaveFormSinkClass;
-
-struct _GstWaveFormSink
-{
- /* parent object */
- GstAudioSink sink;
-
- /* supported caps */
- GstCaps *cached_caps;
-
- /* handle to the waveform-audio output device */
- HWAVEOUT hwaveout;
-
- /* table of buffer headers */
- WAVEHDR *wave_buffers;
-
- /* critical section protecting access to the number of free buffers */
- CRITICAL_SECTION critic_wave;
-
- /* number of free buffers available */
- guint free_buffers_count;
-
- /* current free buffer where you have to write incoming data */
- guint write_buffer;
-
- /* size of buffers streamed to the device */
- guint buffer_size;
-
- /* number of buffers streamed to the device */
- guint buffer_count;
-
- /* total of bytes in queue before they are written to the device */
- guint bytes_in_queue;
-
- /* bytes per sample from setcaps used to evaluate the number samples returned by delay */
- guint bytes_per_sample;
-
- /* wave form error string */
- gchar error_string[ERROR_LENGTH];
-};
-
-struct _GstWaveFormSinkClass
-{
- GstAudioSinkClass parent_class;
-};
-
-GType gst_waveform_sink_get_type (void);
-
-G_END_DECLS
-#endif /* __GST_WAVEFORMSINK_H__ */
diff --git a/wearable/sys/ximage/Makefile.am b/wearable/sys/ximage/Makefile.am
deleted file mode 100644
index db3ab22..0000000
--- a/wearable/sys/ximage/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-plugin_LTLIBRARIES = libgstximagesrc.la
-
-libgstximagesrc_la_SOURCES = gstximagesrc.c ximageutil.c
-libgstximagesrc_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CFLAGS) \
- $(X_CFLAGS) $(XFIXES_CFLAGS) $(XDAMAGE_CFLAGS)
-libgstximagesrc_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(X_LIBS) $(XSHM_LIBS) $(XFIXES_LIBS) $(XDAMAGE_LIBS)
-libgstximagesrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstximagesrc_la_LIBTOOLFLAGS = --tag=disable-static
-
-noinst_HEADERS = gstximagesrc.h ximageutil.h
diff --git a/wearable/sys/ximage/Makefile.in b/wearable/sys/ximage/Makefile.in
deleted file mode 100644
index 129f9a8..0000000
--- a/wearable/sys/ximage/Makefile.in
+++ /dev/null
@@ -1,825 +0,0 @@
-# Makefile.in generated by automake 1.11.3 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = sys/ximage
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
- $(top_srcdir)/common/m4/as-auto-alt.m4 \
- $(top_srcdir)/common/m4/as-compiler-flag.m4 \
- $(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
- $(top_srcdir)/common/m4/as-objc.m4 \
- $(top_srcdir)/common/m4/as-python.m4 \
- $(top_srcdir)/common/m4/as-scrub-include.m4 \
- $(top_srcdir)/common/m4/as-version.m4 \
- $(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
- $(top_srcdir)/common/m4/gst-arch.m4 \
- $(top_srcdir)/common/m4/gst-args.m4 \
- $(top_srcdir)/common/m4/gst-check.m4 \
- $(top_srcdir)/common/m4/gst-default.m4 \
- $(top_srcdir)/common/m4/gst-dowhile.m4 \
- $(top_srcdir)/common/m4/gst-error.m4 \
- $(top_srcdir)/common/m4/gst-feature.m4 \
- $(top_srcdir)/common/m4/gst-gettext.m4 \
- $(top_srcdir)/common/m4/gst-glib2.m4 \
- $(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
- $(top_srcdir)/common/m4/gst-platform.m4 \
- $(top_srcdir)/common/m4/gst-plugin-docs.m4 \
- $(top_srcdir)/common/m4/gst-plugindir.m4 \
- $(top_srcdir)/common/m4/gst-x11.m4 \
- $(top_srcdir)/common/m4/gst.m4 \
- $(top_srcdir)/common/m4/gtk-doc.m4 \
- $(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
- $(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/esd.m4 \
- $(top_srcdir)/m4/gconf-2.m4 $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
- $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
- $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
- $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstximagesrc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libgstximagesrc_la_OBJECTS = libgstximagesrc_la-gstximagesrc.lo \
- libgstximagesrc_la-ximageutil.lo
-libgstximagesrc_la_OBJECTS = $(am_libgstximagesrc_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-libgstximagesrc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) \
- $(libgstximagesrc_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(libgstximagesrc_la_SOURCES)
-DIST_SOURCES = $(libgstximagesrc_la_SOURCES)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-AALIB_CFLAGS = @AALIB_CFLAGS@
-AALIB_CONFIG = @AALIB_CONFIG@
-AALIB_LIBS = @AALIB_LIBS@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-ANNODEX_CFLAGS = @ANNODEX_CFLAGS@
-ANNODEX_LIBS = @ANNODEX_LIBS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BZ2_LIBS = @BZ2_LIBS@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_GOBJECT_CFLAGS = @CAIRO_GOBJECT_CFLAGS@
-CAIRO_GOBJECT_LIBS = @CAIRO_GOBJECT_LIBS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCAS = @CCAS@
-CCASDEPMODE = @CCASDEPMODE@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
-DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DV1394_CFLAGS = @DV1394_CFLAGS@
-DV1394_LIBS = @DV1394_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ESD_CFLAGS = @ESD_CFLAGS@
-ESD_CONFIG = @ESD_CONFIG@
-ESD_LIBS = @ESD_LIBS@
-EXEEXT = @EXEEXT@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLAC_CFLAGS = @FLAC_CFLAGS@
-FLAC_LIBS = @FLAC_LIBS@
-GCONFTOOL = @GCONFTOOL@
-GCONF_CFLAGS = @GCONF_CFLAGS@
-GCONF_LIBS = @GCONF_LIBS@
-GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
-GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
-GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_GDP_CFLAGS = @GST_GDP_CFLAGS@
-GST_GDP_LIBS = @GST_GDP_LIBS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_MAJORMINOR = @GST_MAJORMINOR@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
-GTK_X11_LIBS = @GTK_X11_LIBS@
-GUDEV_CFLAGS = @GUDEV_CFLAGS@
-GUDEV_LIBS = @GUDEV_LIBS@
-HAL_CFLAGS = @HAL_CFLAGS@
-HAL_LIBS = @HAL_LIBS@
-HAVE_AVC1394 = @HAVE_AVC1394@
-HAVE_BZ2 = @HAVE_BZ2@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_GCONFTOOL = @HAVE_GCONFTOOL@
-HAVE_ROM1394 = @HAVE_ROM1394@
-HAVE_SPEEX = @HAVE_SPEEX@
-HAVE_X = @HAVE_X@
-HAVE_XSHM = @HAVE_XSHM@
-HAVE_ZLIB = @HAVE_ZLIB@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
-JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
-JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
-JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
-JACK_CFLAGS = @JACK_CFLAGS@
-JACK_LIBS = @JACK_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
-LIBCACA_LIBS = @LIBCACA_LIBS@
-LIBDV_CFLAGS = @LIBDV_CFLAGS@
-LIBDV_LIBS = @LIBDV_LIBS@
-LIBICONV = @LIBICONV@
-LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
-LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
-LIBV4L2_LIBS = @LIBV4L2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJC_LDFLAGS = @OBJC_LDFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PULSE_0_9_20_CFLAGS = @PULSE_0_9_20_CFLAGS@
-PULSE_0_9_20_LIBS = @PULSE_0_9_20_LIBS@
-PULSE_1_0_CFLAGS = @PULSE_1_0_CFLAGS@
-PULSE_1_0_LIBS = @PULSE_1_0_LIBS@
-PULSE_CFLAGS = @PULSE_CFLAGS@
-PULSE_LIBS = @PULSE_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-RAW1394_CFLAGS = @RAW1394_CFLAGS@
-RAW1394_LIBS = @RAW1394_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
-SHOUT2_LIBS = @SHOUT2_LIBS@
-SOUP_CFLAGS = @SOUP_CFLAGS@
-SOUP_LIBS = @SOUP_LIBS@
-SPEEX_CFLAGS = @SPEEX_CFLAGS@
-SPEEX_LIBS = @SPEEX_LIBS@
-STRIP = @STRIP@
-TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
-TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
-TAGLIB_LIBS = @TAGLIB_LIBS@
-USE_NLS = @USE_NLS@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VERSION = @VERSION@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
-WAVPACK_LIBS = @WAVPACK_LIBS@
-WIN32_LIBS = @WIN32_LIBS@
-XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
-XDAMAGE_LIBS = @XDAMAGE_LIBS@
-XFIXES_CFLAGS = @XFIXES_CFLAGS@
-XFIXES_LIBS = @XFIXES_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XMKMF = @XMKMF@
-XSHM_LIBS = @XSHM_LIBS@
-XVIDEO_LIBS = @XVIDEO_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ZLIB_LIBS = @ZLIB_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-plugin_LTLIBRARIES = libgstximagesrc.la
-libgstximagesrc_la_SOURCES = gstximagesrc.c ximageutil.c
-libgstximagesrc_la_CFLAGS = \
- $(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_BASE_CFLAGS) \
- $(GST_CFLAGS) \
- $(X_CFLAGS) $(XFIXES_CFLAGS) $(XDAMAGE_CFLAGS)
-
-libgstximagesrc_la_LIBADD = \
- $(GST_PLUGINS_BASE_LIBS) \
- $(GST_BASE_LIBS) \
- $(X_LIBS) $(XSHM_LIBS) $(XFIXES_LIBS) $(XDAMAGE_LIBS)
-
-libgstximagesrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstximagesrc_la_LIBTOOLFLAGS = --tag=disable-static
-noinst_HEADERS = gstximagesrc.h ximageutil.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/ximage/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sys/ximage/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(plugindir)" || $(MKDIR_P) "$(DESTDIR)$(plugindir)"
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
- }
-
-uninstall-pluginLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
- done
-
-clean-pluginLTLIBRARIES:
- -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
- @list='$(plugin_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libgstximagesrc.la: $(libgstximagesrc_la_OBJECTS) $(libgstximagesrc_la_DEPENDENCIES) $(EXTRA_libgstximagesrc_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libgstximagesrc_la_LINK) -rpath $(plugindir) $(libgstximagesrc_la_OBJECTS) $(libgstximagesrc_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstximagesrc_la-gstximagesrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstximagesrc_la-ximageutil.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstximagesrc_la-gstximagesrc.lo: gstximagesrc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) -MT libgstximagesrc_la-gstximagesrc.lo -MD -MP -MF $(DEPDIR)/libgstximagesrc_la-gstximagesrc.Tpo -c -o libgstximagesrc_la-gstximagesrc.lo `test -f 'gstximagesrc.c' || echo '$(srcdir)/'`gstximagesrc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstximagesrc_la-gstximagesrc.Tpo $(DEPDIR)/libgstximagesrc_la-gstximagesrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstximagesrc.c' object='libgstximagesrc_la-gstximagesrc.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) -c -o libgstximagesrc_la-gstximagesrc.lo `test -f 'gstximagesrc.c' || echo '$(srcdir)/'`gstximagesrc.c
-
-libgstximagesrc_la-ximageutil.lo: ximageutil.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) -MT libgstximagesrc_la-ximageutil.lo -MD -MP -MF $(DEPDIR)/libgstximagesrc_la-ximageutil.Tpo -c -o libgstximagesrc_la-ximageutil.lo `test -f 'ximageutil.c' || echo '$(srcdir)/'`ximageutil.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstximagesrc_la-ximageutil.Tpo $(DEPDIR)/libgstximagesrc_la-ximageutil.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ximageutil.c' object='libgstximagesrc_la-ximageutil.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstximagesrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstximagesrc_la_CFLAGS) $(CFLAGS) -c -o libgstximagesrc_la-ximageutil.lo `test -f 'ximageutil.c' || echo '$(srcdir)/'`ximageutil.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(plugindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-pluginLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-pluginLTLIBRARIES \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pluginLTLIBRARIES
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/wearable/sys/ximage/gstximagesrc.c b/wearable/sys/ximage/gstximagesrc.c
deleted file mode 100644
index 36c0b44..0000000
--- a/wearable/sys/ximage/gstximagesrc.c
+++ /dev/null
@@ -1,1317 +0,0 @@
-/* GStreamer
- *
- * Copyright (C) 2006 Zaheer Merali <zaheerabbas at merali dot org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/**
- * SECTION:element-ximagesrc
- *
- * This element captures your X Display and creates raw RGB video. It uses
- * the XDamage extension if available to only capture areas of the screen that
- * have changed since the last frame. It uses the XFixes extension if
- * available to also capture your mouse pointer. By default it will fixate to
- * 25 frames per second.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch ximagesrc ! video/x-raw-rgb,framerate=5/1 ! ffmpegcolorspace ! theoraenc ! oggmux ! filesink location=desktop.ogg
- * ]| Encodes your X display to an Ogg theora video at 5 frames per second.
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "gstximagesrc.h"
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#include <gst/gst.h>
-#include <gst/gst-i18n-plugin.h>
-
-#include "gst/glib-compat-private.h"
-
-GST_DEBUG_CATEGORY_STATIC (gst_debug_ximage_src);
-#define GST_CAT_DEFAULT gst_debug_ximage_src
-
-static GstStaticPadTemplate t =
-GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("video/x-raw-rgb, "
- "framerate = (fraction) [ 0, MAX ], "
- "width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ], "
- "pixel-aspect-ratio = (fraction) [ 0, MAX ]"));
-
-enum
-{
- PROP_0,
- PROP_DISPLAY_NAME,
- PROP_SCREEN_NUM,
- PROP_SHOW_POINTER,
- PROP_USE_DAMAGE,
- PROP_STARTX,
- PROP_STARTY,
- PROP_ENDX,
- PROP_ENDY,
- PROP_REMOTE,
- PROP_XID,
- PROP_XNAME,
-};
-
-GST_BOILERPLATE (GstXImageSrc, gst_ximage_src, GstPushSrc, GST_TYPE_PUSH_SRC);
-
-static void gst_ximage_src_fixate (GstPad * pad, GstCaps * caps);
-static void gst_ximage_src_clear_bufpool (GstXImageSrc * ximagesrc);
-
-/* Called when a buffer is returned from the pipeline */
-static void
-gst_ximage_src_return_buf (GstXImageSrc * ximagesrc,
- GstXImageSrcBuffer * ximage)
-{
- /* If our geometry changed we can't reuse that image. */
- if ((ximage->width != ximagesrc->width) ||
- (ximage->height != ximagesrc->height)) {
- GST_DEBUG_OBJECT (ximagesrc,
- "destroy image %p as its size changed %dx%d vs current %dx%d",
- ximage, ximage->width, ximage->height,
- ximagesrc->width, ximagesrc->height);
- g_mutex_lock (ximagesrc->x_lock);
- gst_ximageutil_ximage_destroy (ximagesrc->xcontext, ximage);
- g_mutex_unlock (ximagesrc->x_lock);
- } else {
- /* In that case we can reuse the image and add it to our image pool. */
- GST_LOG_OBJECT (ximagesrc, "recycling image %p in pool", ximage);
- /* need to increment the refcount again to recycle */
- gst_buffer_ref (GST_BUFFER (ximage));
- g_mutex_lock (ximagesrc->pool_lock);
- GST_BUFFER_FLAGS (GST_BUFFER (ximage)) = 0; /* clear out any flags from the previous use */
- ximagesrc->buffer_pool = g_slist_prepend (ximagesrc->buffer_pool, ximage);
- g_mutex_unlock (ximagesrc->pool_lock);
- }
-}
-
-static Window
-gst_ximage_src_find_window (GstXImageSrc * src, Window root, const char *name)
-{
- Window *children;
- Window window = 0, root_return, parent_return;
- unsigned int nchildren;
- char *tmpname;
- int n, status;
-
- status = XFetchName (src->xcontext->disp, root, &tmpname);
- if (status && !strcmp (name, tmpname))
- return root;
-
- status =
- XQueryTree (src->xcontext->disp, root, &root_return, &parent_return,
- &children, &nchildren);
- if (!status || !children)
- return (Window) 0;
-
- for (n = 0; n < nchildren; ++n) {
- window = gst_ximage_src_find_window (src, children[n], name);
- if (window != 0)
- break;
- }
-
- XFree (children);
- return window;
-}
-
-static gboolean
-gst_ximage_src_open_display (GstXImageSrc * s, const gchar * name)
-{
- g_return_val_if_fail (GST_IS_XIMAGE_SRC (s), FALSE);
-
- if (s->xcontext != NULL)
- return TRUE;
-
- g_mutex_lock (s->x_lock);
- s->xcontext = ximageutil_xcontext_get (GST_ELEMENT (s), name);
- if (s->xcontext == NULL) {
- g_mutex_unlock (s->x_lock);
- GST_ELEMENT_ERROR (s, RESOURCE, OPEN_READ,
- ("Could not open X display for reading"),
- ("NULL returned from getting xcontext"));
- return FALSE;
- }
- s->width = s->xcontext->width;
- s->height = s->xcontext->height;
-
- s->xwindow = s->xcontext->root;
- if (s->xid != 0 || s->xname) {
- int status;
- XWindowAttributes attrs;
- Window window;
-
- if (s->xid != 0) {
- status = XGetWindowAttributes (s->xcontext->disp, s->xid, &attrs);
- if (status) {
- GST_DEBUG_OBJECT (s, "Found window XID %" G_GUINT64_FORMAT, s->xid);
- s->xwindow = s->xid;
- goto window_found;
- } else {
- GST_WARNING_OBJECT (s, "Failed to get window %" G_GUINT64_FORMAT
- " attributes", s->xid);
- }
- }
-
- if (s->xname) {
- GST_DEBUG_OBJECT (s, "Looking for window %s", s->xname);
- window = gst_ximage_src_find_window (s, s->xcontext->root, s->xname);
- if (window != 0) {
- GST_DEBUG_OBJECT (s, "Found window named %s, ", s->xname);
- status = XGetWindowAttributes (s->xcontext->disp, window, &attrs);
- if (status) {
- s->xwindow = window;
- goto window_found;
- } else {
- GST_WARNING_OBJECT (s, "Failed to get window attributes for "
- "window named %s", s->xname);
- }
- }
- }
-
- GST_INFO_OBJECT (s, "Using root window");
- goto use_root_window;
-
- window_found:
- g_assert (s->xwindow != 0);
- s->width = attrs.width;
- s->height = attrs.height;
- GST_INFO_OBJECT (s, "Using default window size of %dx%d",
- s->width, s->height);
- }
-use_root_window:
-
-#ifdef HAVE_XFIXES
- /* check if xfixes supported */
- {
- int error_base;
-
- if (XFixesQueryExtension (s->xcontext->disp, &s->fixes_event_base,
- &error_base)) {
- s->have_xfixes = TRUE;
- GST_DEBUG_OBJECT (s, "X Server supports XFixes");
- } else {
-
- GST_DEBUG_OBJECT (s, "X Server does not support XFixes");
- }
- }
-
-#ifdef HAVE_XDAMAGE
- /* check if xdamage is supported */
- {
- int error_base;
- long evmask = NoEventMask;
-
- s->have_xdamage = FALSE;
- s->damage = None;
- s->damage_copy_gc = None;
- s->damage_region = None;
-
- if (XDamageQueryExtension (s->xcontext->disp, &s->damage_event_base,
- &error_base)) {
- s->damage =
- XDamageCreate (s->xcontext->disp, s->xwindow, XDamageReportNonEmpty);
- if (s->damage != None) {
- s->damage_region = XFixesCreateRegion (s->xcontext->disp, NULL, 0);
- if (s->damage_region != None) {
- XGCValues values;
-
- GST_DEBUG_OBJECT (s, "Using XDamage extension");
- values.subwindow_mode = IncludeInferiors;
- s->damage_copy_gc = XCreateGC (s->xcontext->disp,
- s->xwindow, GCSubwindowMode, &values);
- XSelectInput (s->xcontext->disp, s->xwindow, evmask);
-
- s->have_xdamage = TRUE;
- } else {
- XDamageDestroy (s->xcontext->disp, s->damage);
- s->damage = None;
- }
- } else
- GST_DEBUG_OBJECT (s, "Could not attach to XDamage");
- } else {
- GST_DEBUG_OBJECT (s, "X Server does not have XDamage extension");
- }
- }
-#endif
-#endif
-
- g_mutex_unlock (s->x_lock);
-
- if (s->xcontext == NULL)
- return FALSE;
-
- return TRUE;
-}
-
-static gboolean
-gst_ximage_src_start (GstBaseSrc * basesrc)
-{
- GstXImageSrc *s = GST_XIMAGE_SRC (basesrc);
-
- s->last_frame_no = -1;
-#ifdef HAVE_XDAMAGE
- if (s->last_ximage)
- gst_buffer_unref (GST_BUFFER_CAST (s->last_ximage));
- s->last_ximage = NULL;
-#endif
- return gst_ximage_src_open_display (s, s->display_name);
-}
-
-static gboolean
-gst_ximage_src_stop (GstBaseSrc * basesrc)
-{
- GstXImageSrc *src = GST_XIMAGE_SRC (basesrc);
-
-#ifdef HAVE_XDAMAGE
- if (src->last_ximage)
- gst_buffer_unref (GST_BUFFER_CAST (src->last_ximage));
- src->last_ximage = NULL;
-#endif
-
- gst_ximage_src_clear_bufpool (src);
-
-#ifdef HAVE_XFIXES
- if (src->cursor_image)
- XFree (src->cursor_image);
- src->cursor_image = NULL;
-#endif
-
- if (src->xcontext) {
- g_mutex_lock (src->x_lock);
-
-#ifdef HAVE_XDAMAGE
- if (src->damage_copy_gc != None) {
- XFreeGC (src->xcontext->disp, src->damage_copy_gc);
- src->damage_copy_gc = None;
- }
- if (src->damage_region != None) {
- XFixesDestroyRegion (src->xcontext->disp, src->damage_region);
- src->damage_region = None;
- }
- if (src->damage != None) {
- XDamageDestroy (src->xcontext->disp, src->damage);
- src->damage = None;
- }
-#endif
-
- ximageutil_xcontext_clear (src->xcontext);
- src->xcontext = NULL;
- g_mutex_unlock (src->x_lock);
- }
-
- return TRUE;
-}
-
-static gboolean
-gst_ximage_src_unlock (GstBaseSrc * basesrc)
-{
- GstXImageSrc *src = GST_XIMAGE_SRC (basesrc);
-
- /* Awaken the create() func if it's waiting on the clock */
- GST_OBJECT_LOCK (src);
- if (src->clock_id) {
- GST_DEBUG_OBJECT (src, "Waking up waiting clock");
- gst_clock_id_unschedule (src->clock_id);
- }
- GST_OBJECT_UNLOCK (src);
-
- return TRUE;
-}
-
-static gboolean
-gst_ximage_src_recalc (GstXImageSrc * src)
-{
- if (!src->xcontext)
- return FALSE;
-
- /* Maybe later we can check the display hasn't changed size */
- /* We could use XQueryPointer to get only the current window. */
- return TRUE;
-}
-
-#ifdef HAVE_XFIXES
-static void
-composite_pixel (GstXContext * xcontext, guchar * dest, guchar * src)
-{
- guint8 r = src[2];
- guint8 g = src[1];
- guint8 b = src[0];
- guint8 a = src[3];
- guint8 dr, dg, db;
- guint32 color;
- gint r_shift, r_max, r_shift_out;
- gint g_shift, g_max, g_shift_out;
- gint b_shift, b_max, b_shift_out;
-
- switch (xcontext->bpp) {
- case 8:
- color = *dest;
- break;
- case 16:
- color = GUINT16_FROM_LE (*(guint16 *) (dest));
- break;
- case 32:
- color = GUINT32_FROM_LE (*(guint32 *) (dest));
- break;
- default:
- /* Should not reach here */
- g_return_if_reached ();
- }
-
- /* possible optimisation:
- * move the code that finds shift and max in the _link function */
- for (r_shift = 0; !(xcontext->visual->red_mask & (1 << r_shift)); r_shift++);
- for (g_shift = 0; !(xcontext->visual->green_mask & (1 << g_shift));
- g_shift++);
- for (b_shift = 0; !(xcontext->visual->blue_mask & (1 << b_shift)); b_shift++);
-
- for (r_shift_out = 0; !(xcontext->visual->red_mask & (1 << r_shift_out));
- r_shift_out++);
- for (g_shift_out = 0; !(xcontext->visual->green_mask & (1 << g_shift_out));
- g_shift_out++);
- for (b_shift_out = 0; !(xcontext->visual->blue_mask & (1 << b_shift_out));
- b_shift_out++);
-
-
- r_max = (xcontext->visual->red_mask >> r_shift);
- b_max = (xcontext->visual->blue_mask >> b_shift);
- g_max = (xcontext->visual->green_mask >> g_shift);
-
-#define RGBXXX_R(x) (((x)>>r_shift) & (r_max))
-#define RGBXXX_G(x) (((x)>>g_shift) & (g_max))
-#define RGBXXX_B(x) (((x)>>b_shift) & (b_max))
-
- dr = (RGBXXX_R (color) * 255) / r_max;
- dg = (RGBXXX_G (color) * 255) / g_max;
- db = (RGBXXX_B (color) * 255) / b_max;
-
- dr = (r * a + (0xff - a) * dr) / 0xff;
- dg = (g * a + (0xff - a) * dg) / 0xff;
- db = (b * a + (0xff - a) * db) / 0xff;
-
- color = (((dr * r_max) / 255) << r_shift_out) +
- (((dg * g_max) / 255) << g_shift_out) +
- (((db * b_max) / 255) << b_shift_out);
-
- switch (xcontext->bpp) {
- case 8:
- *dest = color;
- break;
- case 16:
- *(guint16 *) (dest) = color;
- break;
- case 32:
- *(guint32 *) (dest) = color;
- break;
- default:
- g_warning ("bpp %d not supported\n", xcontext->bpp);
- }
-}
-#endif
-
-/* Retrieve an XImageSrcBuffer, preferably from our
- * pool of existing images and populate it from the window */
-static GstXImageSrcBuffer *
-gst_ximage_src_ximage_get (GstXImageSrc * ximagesrc)
-{
- GstXImageSrcBuffer *ximage = NULL;
-
- g_mutex_lock (ximagesrc->pool_lock);
- while (ximagesrc->buffer_pool != NULL) {
- ximage = ximagesrc->buffer_pool->data;
-
- if ((ximage->width != ximagesrc->width) ||
- (ximage->height != ximagesrc->height)) {
- gst_ximage_buffer_free (ximage);
- }
-
- ximagesrc->buffer_pool = g_slist_delete_link (ximagesrc->buffer_pool,
- ximagesrc->buffer_pool);
- }
- g_mutex_unlock (ximagesrc->pool_lock);
-
- if (ximage == NULL) {
- GstXContext *xcontext;
- GstCaps *caps = NULL;
-
- GST_DEBUG_OBJECT (ximagesrc, "creating image (%dx%d)",
- ximagesrc->width, ximagesrc->height);
-
- g_mutex_lock (ximagesrc->x_lock);
- ximage = gst_ximageutil_ximage_new (ximagesrc->xcontext,
- GST_ELEMENT (ximagesrc), ximagesrc->width, ximagesrc->height,
- (BufferReturnFunc) (gst_ximage_src_return_buf));
- if (ximage == NULL) {
- GST_ELEMENT_ERROR (ximagesrc, RESOURCE, WRITE, (NULL),
- ("could not create a %dx%d ximage", ximagesrc->width,
- ximagesrc->height));
- g_mutex_unlock (ximagesrc->x_lock);
- return NULL;
- }
-
- xcontext = ximagesrc->xcontext;
-
-
- caps = gst_caps_new_simple ("video/x-raw-rgb",
- "bpp", G_TYPE_INT, xcontext->bpp,
- "depth", G_TYPE_INT, xcontext->depth,
- "endianness", G_TYPE_INT, xcontext->endianness,
- "red_mask", G_TYPE_INT, xcontext->r_mask_output,
- "green_mask", G_TYPE_INT, xcontext->g_mask_output,
- "blue_mask", G_TYPE_INT, xcontext->b_mask_output,
- "width", G_TYPE_INT, ximagesrc->width,
- "height", G_TYPE_INT, ximagesrc->height,
- "framerate", GST_TYPE_FRACTION, ximagesrc->fps_n, ximagesrc->fps_d,
- "pixel-aspect-ratio", GST_TYPE_FRACTION,
- gst_value_get_fraction_numerator (xcontext->par),
- gst_value_get_fraction_denominator (xcontext->par), NULL);
-
- gst_buffer_set_caps (GST_BUFFER (ximage), caps);
- g_mutex_unlock (ximagesrc->x_lock);
-
- gst_caps_unref (caps);
- }
-
- g_return_val_if_fail (GST_IS_XIMAGE_SRC (ximagesrc), NULL);
-#ifdef HAVE_XDAMAGE
- if (ximagesrc->have_xdamage && ximagesrc->use_damage &&
- ximagesrc->last_ximage != NULL) {
- XEvent ev;
-
- /* have_frame is TRUE when either the entire screen has been
- * grabbed or when the last image has been copied */
- gboolean have_frame = FALSE;
-
- GST_DEBUG_OBJECT (ximagesrc, "Retrieving screen using XDamage");
-
- do {
- XNextEvent (ximagesrc->xcontext->disp, &ev);
-
- if (ev.type == ximagesrc->damage_event_base + XDamageNotify) {
- XserverRegion parts;
- XRectangle *rects;
- int nrects;
-
- parts = XFixesCreateRegion (ximagesrc->xcontext->disp, 0, 0);
- XDamageSubtract (ximagesrc->xcontext->disp, ximagesrc->damage, None,
- parts);
- /* Now copy out all of the damaged rectangles. */
- rects = XFixesFetchRegion (ximagesrc->xcontext->disp, parts, &nrects);
- if (rects != NULL) {
- int i;
-
- if (!have_frame) {
- GST_LOG_OBJECT (ximagesrc,
- "Copying from last frame ximage->size: %d",
- GST_BUFFER_SIZE (GST_BUFFER (ximage)));
- memcpy (GST_BUFFER_DATA (GST_BUFFER (ximage)),
- GST_BUFFER_DATA (GST_BUFFER (ximagesrc->last_ximage)),
- GST_BUFFER_SIZE (GST_BUFFER (ximage)));
- have_frame = TRUE;
- }
- for (i = 0; i < nrects; i++) {
- GST_LOG_OBJECT (ximagesrc,
- "Damaged sub-region @ %d,%d size %dx%d reported",
- rects[i].x, rects[i].y, rects[i].width, rects[i].height);
-
- /* if we only want a small area, clip this damage region to
- * area we want */
- if (ximagesrc->endx > ximagesrc->startx &&
- ximagesrc->endy > ximagesrc->starty) {
- /* see if damage area intersects */
- if (rects[i].x + rects[i].width - 1 < ximagesrc->startx ||
- rects[i].x > ximagesrc->endx) {
- /* trivial reject */
- } else if (rects[i].y + rects[i].height - 1 < ximagesrc->starty ||
- rects[i].y > ximagesrc->endy) {
- /* trivial reject */
- } else {
- /* find intersect region */
- int startx, starty, width, height;
-
- startx = (rects[i].x < ximagesrc->startx) ? ximagesrc->startx :
- rects[i].x;
- starty = (rects[i].y < ximagesrc->starty) ? ximagesrc->starty :
- rects[i].y;
- width = (rects[i].x + rects[i].width - 1 < ximagesrc->endx) ?
- rects[i].x + rects[i].width - startx :
- ximagesrc->endx - startx + 1;
- height = (rects[i].y + rects[i].height - 1 < ximagesrc->endy) ?
- rects[i].y + rects[i].height - starty : ximagesrc->endy -
- starty + 1;
-
- GST_LOG_OBJECT (ximagesrc,
- "Retrieving damaged sub-region @ %d,%d size %dx%d as intersect region",
- startx, starty, width, height);
- XGetSubImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- startx, starty, width, height, AllPlanes, ZPixmap,
- ximage->ximage, startx - ximagesrc->startx,
- starty - ximagesrc->starty);
- }
- } else {
-
- GST_LOG_OBJECT (ximagesrc,
- "Retrieving damaged sub-region @ %d,%d size %dx%d",
- rects[i].x, rects[i].y, rects[i].width, rects[i].height);
-
- XGetSubImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- rects[i].x, rects[i].y,
- rects[i].width, rects[i].height,
- AllPlanes, ZPixmap, ximage->ximage, rects[i].x, rects[i].y);
- }
- }
- free (rects);
- }
- }
- } while (XPending (ximagesrc->xcontext->disp));
- if (!have_frame) {
- GST_LOG_OBJECT (ximagesrc,
- "Copying from last frame ximage->size: %d",
- GST_BUFFER_SIZE (GST_BUFFER (ximage)));
- memcpy (GST_BUFFER_DATA (GST_BUFFER (ximage)),
- GST_BUFFER_DATA (GST_BUFFER (ximagesrc->last_ximage)),
- GST_BUFFER_SIZE (GST_BUFFER (ximage)));
- }
-#ifdef HAVE_XFIXES
- /* re-get area where last mouse pointer was but only if in our clipping
- * bounds */
- if (ximagesrc->cursor_image) {
- gint x, y, width, height;
-
- x = ximagesrc->cursor_image->x - ximagesrc->cursor_image->xhot;
- y = ximagesrc->cursor_image->y - ximagesrc->cursor_image->yhot;
- width = ximagesrc->cursor_image->width;
- height = ximagesrc->cursor_image->height;
-
- /* bounds checking */
- if (x < 0)
- x = 0;
- if (y < 0)
- y = 0;
- if (x + width > ximagesrc->xcontext->width)
- width = ximagesrc->xcontext->width - x;
- if (y + height > ximagesrc->xcontext->height)
- height = ximagesrc->xcontext->height - y;
- g_assert (x >= 0);
- g_assert (y >= 0);
- GST_DEBUG_OBJECT (ximagesrc,
- "Cursor was at (%d,%d) width: %d, height: %d and our range is: (%d,%d) - (%d,%d)",
- x, y, width, height, ximagesrc->startx, ximagesrc->starty,
- ximagesrc->endx, ximagesrc->endy);
- /* only get where cursor last was, if it is in our range */
- if (ximagesrc->endx > ximagesrc->startx &&
- ximagesrc->endy > ximagesrc->starty) {
- /* check bounds */
- if (x + width < ximagesrc->startx || x > ximagesrc->endx) {
- /* trivial reject */
- } else if (y + height < ximagesrc->starty || y > ximagesrc->endy) {
- /* trivial reject */
- } else {
- /* find intersect region */
- int startx, starty, iwidth, iheight;
-
- startx = (x < ximagesrc->startx) ? ximagesrc->startx : x;
- starty = (y < ximagesrc->starty) ? ximagesrc->starty : y;
- iwidth = (x + width < ximagesrc->endx) ?
- x + width - startx : ximagesrc->endx - startx;
- iheight = (y + height < ximagesrc->endy) ?
- y + height - starty : ximagesrc->endy - starty;
- GST_DEBUG_OBJECT (ximagesrc, "Removing cursor from %d,%d", x, y);
- XGetSubImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- startx, starty, iwidth, iheight, AllPlanes, ZPixmap,
- ximage->ximage, startx - ximagesrc->startx,
- starty - ximagesrc->starty);
- }
- } else {
-
- GST_DEBUG_OBJECT (ximagesrc, "Removing cursor from %d,%d", x, y);
- XGetSubImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- x, y, width, height, AllPlanes, ZPixmap, ximage->ximage, x, y);
- }
- }
-#endif
-
-
- } else {
-#endif
-
-#ifdef HAVE_XSHM
- if (ximagesrc->xcontext->use_xshm) {
- GST_DEBUG_OBJECT (ximagesrc, "Retrieving screen using XShm");
- XShmGetImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- ximage->ximage, ximagesrc->startx, ximagesrc->starty, AllPlanes);
-
- } else
-#endif /* HAVE_XSHM */
- {
- GST_DEBUG_OBJECT (ximagesrc, "Retrieving screen using XGetImage");
- if (ximagesrc->remote) {
- XGetSubImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- ximagesrc->startx, ximagesrc->starty, ximagesrc->width,
- ximagesrc->height, AllPlanes, ZPixmap, ximage->ximage, 0, 0);
- } else {
- ximage->ximage =
- XGetImage (ximagesrc->xcontext->disp, ximagesrc->xwindow,
- ximagesrc->startx, ximagesrc->starty, ximagesrc->width,
- ximagesrc->height, AllPlanes, ZPixmap);
- }
- }
-#ifdef HAVE_XDAMAGE
- }
-#endif
-
-#ifdef HAVE_XFIXES
- if (ximagesrc->show_pointer && ximagesrc->have_xfixes) {
-
- GST_DEBUG_OBJECT (ximagesrc, "Using XFixes to draw cursor");
- /* get cursor */
- if (ximagesrc->cursor_image)
- XFree (ximagesrc->cursor_image);
- ximagesrc->cursor_image = XFixesGetCursorImage (ximagesrc->xcontext->disp);
- if (ximagesrc->cursor_image != NULL) {
- int cx, cy, i, j, count;
- int startx, starty, iwidth, iheight;
- gboolean cursor_in_image = TRUE;
-
- cx = ximagesrc->cursor_image->x - ximagesrc->cursor_image->xhot;
- if (cx < 0)
- cx = 0;
- cy = ximagesrc->cursor_image->y - ximagesrc->cursor_image->yhot;
- if (cy < 0)
- cy = 0;
- count = ximagesrc->cursor_image->width * ximagesrc->cursor_image->height;
-
- /* only get where cursor last was, if it is in our range */
- if (ximagesrc->endx > ximagesrc->startx &&
- ximagesrc->endy > ximagesrc->starty) {
- /* check bounds */
- if (cx + ximagesrc->cursor_image->width < ximagesrc->startx ||
- cx > ximagesrc->endx) {
- /* trivial reject */
- cursor_in_image = FALSE;
- } else if (cy + ximagesrc->cursor_image->height < ximagesrc->starty ||
- cy > ximagesrc->endy) {
- /* trivial reject */
- cursor_in_image = FALSE;
- } else {
- /* find intersect region */
-
- startx = (cx < ximagesrc->startx) ? ximagesrc->startx : cx;
- starty = (cy < ximagesrc->starty) ? ximagesrc->starty : cy;
- iwidth = (cx + ximagesrc->cursor_image->width < ximagesrc->endx) ?
- cx + ximagesrc->cursor_image->width - startx :
- ximagesrc->endx - startx;
- iheight = (cy + ximagesrc->cursor_image->height < ximagesrc->endy) ?
- cy + ximagesrc->cursor_image->height - starty :
- ximagesrc->endy - starty;
- }
- } else {
- startx = cx;
- starty = cy;
- iwidth = ximagesrc->cursor_image->width;
- iheight = ximagesrc->cursor_image->height;
- }
-
- if (cursor_in_image) {
- GST_DEBUG_OBJECT (ximagesrc, "Cursor is in image so trying to draw it");
- for (i = 0; i < count; i++)
- ximagesrc->cursor_image->pixels[i] =
- GUINT_TO_LE (ximagesrc->cursor_image->pixels[i]);
- /* copy those pixels across */
- for (j = starty;
- j < starty + iheight && j < ximagesrc->starty + ximagesrc->height;
- j++) {
- for (i = startx;
- i < startx + iwidth && i < ximagesrc->startx + ximagesrc->width;
- i++) {
- guint8 *src, *dest;
-
- src =
- (guint8 *) & (ximagesrc->cursor_image->pixels[((j -
- cy) * ximagesrc->cursor_image->width + (i - cx))]);
- dest =
- (guint8 *) & (ximage->ximage->data[((j -
- ximagesrc->starty) * ximagesrc->width + (i -
- ximagesrc->startx)) * (ximagesrc->xcontext->bpp /
- 8)]);
-
- composite_pixel (ximagesrc->xcontext, (guint8 *) dest,
- (guint8 *) src);
- }
- }
- }
- }
- }
-#endif
-#ifdef HAVE_XDAMAGE
- if (ximagesrc->have_xdamage && ximagesrc->use_damage) {
- /* need to ref ximage to put in last_ximage */
- gst_buffer_ref (GST_BUFFER (ximage));
- if (ximagesrc->last_ximage) {
- gst_buffer_unref (GST_BUFFER (ximagesrc->last_ximage));
- }
- ximagesrc->last_ximage = ximage;
- GST_LOG_OBJECT (ximagesrc, "reffing current buffer for last_ximage");
- }
-#endif
- return ximage;
-}
-
-static GstFlowReturn
-gst_ximage_src_create (GstPushSrc * bs, GstBuffer ** buf)
-{
- GstXImageSrc *s = GST_XIMAGE_SRC (bs);
- GstXImageSrcBuffer *image;
- GstClockTime base_time;
- GstClockTime next_capture_ts;
- GstClockTime dur;
- gint64 next_frame_no;
-
- if (!gst_ximage_src_recalc (s)) {
- GST_ELEMENT_ERROR (s, RESOURCE, FAILED,
- (_("Changing resolution at runtime is not yet supported.")), (NULL));
- return GST_FLOW_ERROR;
- }
-
- if (s->fps_n <= 0 || s->fps_d <= 0)
- return GST_FLOW_NOT_NEGOTIATED; /* FPS must be > 0 */
-
- /* Now, we might need to wait for the next multiple of the fps
- * before capturing */
-
- GST_OBJECT_LOCK (s);
- if (GST_ELEMENT_CLOCK (s) == NULL) {
- GST_OBJECT_UNLOCK (s);
- GST_ELEMENT_ERROR (s, RESOURCE, FAILED,
- (_("Cannot operate without a clock")), (NULL));
- return GST_FLOW_ERROR;
- }
-
- base_time = GST_ELEMENT_CAST (s)->base_time;
- next_capture_ts = gst_clock_get_time (GST_ELEMENT_CLOCK (s));
- next_capture_ts -= base_time;
-
- /* Figure out which 'frame number' position we're at, based on the cur time
- * and frame rate */
- next_frame_no = gst_util_uint64_scale (next_capture_ts,
- s->fps_n, GST_SECOND * s->fps_d);
- if (next_frame_no == s->last_frame_no) {
- GstClockID id;
- GstClockReturn ret;
-
- /* Need to wait for the next frame */
- next_frame_no += 1;
-
- /* Figure out what the next frame time is */
- next_capture_ts = gst_util_uint64_scale (next_frame_no,
- s->fps_d * GST_SECOND, s->fps_n);
-
- id = gst_clock_new_single_shot_id (GST_ELEMENT_CLOCK (s),
- next_capture_ts + base_time);
- s->clock_id = id;
-
- /* release the object lock while waiting */
- GST_OBJECT_UNLOCK (s);
-
- GST_DEBUG_OBJECT (s, "Waiting for next frame time %" G_GUINT64_FORMAT,
- next_capture_ts);
- ret = gst_clock_id_wait (id, NULL);
- GST_OBJECT_LOCK (s);
-
- gst_clock_id_unref (id);
- s->clock_id = NULL;
- if (ret == GST_CLOCK_UNSCHEDULED) {
- /* Got woken up by the unlock function */
- GST_OBJECT_UNLOCK (s);
- return GST_FLOW_WRONG_STATE;
- }
- /* Duration is a complete 1/fps frame duration */
- dur = gst_util_uint64_scale_int (GST_SECOND, s->fps_d, s->fps_n);
- } else {
- GstClockTime next_frame_ts;
-
- GST_DEBUG_OBJECT (s, "No need to wait for next frame time %"
- G_GUINT64_FORMAT " next frame = %" G_GINT64_FORMAT " prev = %"
- G_GINT64_FORMAT, next_capture_ts, next_frame_no, s->last_frame_no);
- next_frame_ts = gst_util_uint64_scale (next_frame_no + 1,
- s->fps_d * GST_SECOND, s->fps_n);
- /* Frame duration is from now until the next expected capture time */
- dur = next_frame_ts - next_capture_ts;
- }
- s->last_frame_no = next_frame_no;
- GST_OBJECT_UNLOCK (s);
-
- image = gst_ximage_src_ximage_get (s);
- if (!image)
- return GST_FLOW_ERROR;
-
- *buf = GST_BUFFER (image);
- GST_BUFFER_TIMESTAMP (*buf) = next_capture_ts;
- GST_BUFFER_DURATION (*buf) = dur;
-
- return GST_FLOW_OK;
-}
-
-static void
-gst_ximage_src_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstXImageSrc *src = GST_XIMAGE_SRC (object);
-
- switch (prop_id) {
- case PROP_DISPLAY_NAME:
-
- g_free (src->display_name);
- src->display_name = g_strdup (g_value_get_string (value));
- break;
- case PROP_SCREEN_NUM:
- src->screen_num = g_value_get_uint (value);
- break;
- case PROP_SHOW_POINTER:
- src->show_pointer = g_value_get_boolean (value);
- break;
- case PROP_USE_DAMAGE:
- src->use_damage = g_value_get_boolean (value);
- break;
- case PROP_STARTX:
- src->startx = g_value_get_uint (value);
- break;
- case PROP_STARTY:
- src->starty = g_value_get_uint (value);
- break;
- case PROP_ENDX:
- src->endx = g_value_get_uint (value);
- break;
- case PROP_ENDY:
- src->endy = g_value_get_uint (value);
- break;
- case PROP_REMOTE:
- src->remote = g_value_get_boolean (value);
- break;
- case PROP_XID:
- if (src->xcontext != NULL) {
- g_warning ("ximagesrc window ID must be set before opening display");
- break;
- }
- src->xid = g_value_get_uint64 (value);
- break;
- case PROP_XNAME:
- if (src->xcontext != NULL) {
- g_warning ("ximagesrc window name must be set before opening display");
- break;
- }
- g_free (src->xname);
- src->xname = g_strdup (g_value_get_string (value));
- break;
- default:
- break;
- }
-}
-
-static void
-gst_ximage_src_get_property (GObject * object, guint prop_id, GValue * value,
- GParamSpec * pspec)
-{
- GstXImageSrc *src = GST_XIMAGE_SRC (object);
-
- switch (prop_id) {
- case PROP_DISPLAY_NAME:
- if (src->xcontext)
- g_value_set_string (value, DisplayString (src->xcontext->disp));
- else
- g_value_set_string (value, src->display_name);
-
- break;
- case PROP_SCREEN_NUM:
- g_value_set_uint (value, src->screen_num);
- break;
- case PROP_SHOW_POINTER:
- g_value_set_boolean (value, src->show_pointer);
- break;
- case PROP_USE_DAMAGE:
- g_value_set_boolean (value, src->use_damage);
- break;
- case PROP_STARTX:
- g_value_set_uint (value, src->startx);
- break;
- case PROP_STARTY:
- g_value_set_uint (value, src->starty);
- break;
- case PROP_ENDX:
- g_value_set_uint (value, src->endx);
- break;
- case PROP_ENDY:
- g_value_set_uint (value, src->endy);
- break;
- case PROP_REMOTE:
- g_value_set_boolean (value, src->remote);
- break;
- case PROP_XID:
- g_value_set_uint64 (value, src->xid);
- break;
- case PROP_XNAME:
- g_value_set_string (value, src->xname);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_ximage_src_clear_bufpool (GstXImageSrc * ximagesrc)
-{
- g_mutex_lock (ximagesrc->pool_lock);
- while (ximagesrc->buffer_pool != NULL) {
- GstXImageSrcBuffer *ximage = ximagesrc->buffer_pool->data;
-
- gst_ximage_buffer_free (ximage);
-
- ximagesrc->buffer_pool = g_slist_delete_link (ximagesrc->buffer_pool,
- ximagesrc->buffer_pool);
- }
- g_mutex_unlock (ximagesrc->pool_lock);
-}
-
-static void
-gst_ximage_src_base_init (gpointer g_class)
-{
- GstElementClass *ec = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_details_simple (ec, "Ximage video source",
- "Source/Video",
- "Creates a screenshot video stream",
- "Lutz Mueller <lutz@users.sourceforge.net>, "
- "Jan Schmidt <thaytan@mad.scientist.com>, "
- "Zaheer Merali <zaheerabbas at merali dot org>");
- gst_element_class_add_static_pad_template (ec, &t);
-}
-
-static void
-gst_ximage_src_dispose (GObject * object)
-{
- /* Drop references in the buffer_pool */
- gst_ximage_src_clear_bufpool (GST_XIMAGE_SRC (object));
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
-gst_ximage_src_finalize (GObject * object)
-{
- GstXImageSrc *src = GST_XIMAGE_SRC (object);
-
- if (src->xcontext)
- ximageutil_xcontext_clear (src->xcontext);
-
- g_free (src->xname);
- g_mutex_free (src->pool_lock);
- g_mutex_free (src->x_lock);
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static GstCaps *
-gst_ximage_src_get_caps (GstBaseSrc * bs)
-{
- GstXImageSrc *s = GST_XIMAGE_SRC (bs);
- GstXContext *xcontext;
- gint width, height;
-
- if ((!s->xcontext) && (!gst_ximage_src_open_display (s, s->display_name)))
- return
- gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC
- (s)->srcpad));
-
- if (!gst_ximage_src_recalc (s))
- return
- gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC
- (s)->srcpad));
-
- xcontext = s->xcontext;
- width = s->xcontext->width;
- height = s->xcontext->height;
- if (s->xwindow != 0) {
- XWindowAttributes attrs;
- int status = XGetWindowAttributes (s->xcontext->disp, s->xwindow, &attrs);
- if (status) {
- width = attrs.width;
- height = attrs.height;
- }
- }
-
- /* property comments say 0 means right/bottom, means we can't capture
- the top left pixel alone */
- if (s->endx == 0)
- s->endx = width - 1;
- if (s->endy == 0)
- s->endy = height - 1;
-
- if (s->endx >= s->startx && s->endy >= s->starty) {
- /* this means user has put in values */
- if (s->startx < xcontext->width && s->endx < xcontext->width &&
- s->starty < xcontext->height && s->endy < xcontext->height &&
- s->startx >= 0 && s->starty >= 0) {
- /* values are fine */
- s->width = width = s->endx - s->startx + 1;
- s->height = height = s->endy - s->starty + 1;
- } else {
- GST_WARNING
- ("User put in co-ordinates overshooting the X resolution, setting to full screen");
- s->startx = 0;
- s->starty = 0;
- s->endx = width - 1;
- s->endy = height - 1;
- }
- } else {
- GST_WARNING ("User put in bogus co-ordinates, setting to full screen");
- s->startx = 0;
- s->starty = 0;
- s->endx = width - 1;
- s->endy = height - 1;
- }
- GST_DEBUG ("width = %d, height=%d", width, height);
- return gst_caps_new_simple ("video/x-raw-rgb",
- "bpp", G_TYPE_INT, xcontext->bpp,
- "depth", G_TYPE_INT, xcontext->depth,
- "endianness", G_TYPE_INT, xcontext->endianness,
- "red_mask", G_TYPE_INT, xcontext->r_mask_output,
- "green_mask", G_TYPE_INT, xcontext->g_mask_output,
- "blue_mask", G_TYPE_INT, xcontext->b_mask_output,
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- "framerate", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1,
- "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE, 1, G_MAXINT, G_MAXINT, 1,
- NULL);
-}
-
-static gboolean
-gst_ximage_src_set_caps (GstBaseSrc * bs, GstCaps * caps)
-{
- GstXImageSrc *s = GST_XIMAGE_SRC (bs);
- GstStructure *structure;
- const GValue *new_fps;
-
- /* If not yet opened, disallow setcaps until later */
- if (!s->xcontext)
- return FALSE;
-
- /* The only thing that can change is the framerate downstream wants */
- structure = gst_caps_get_structure (caps, 0);
- new_fps = gst_structure_get_value (structure, "framerate");
- if (!new_fps)
- return FALSE;
-
- /* Store this FPS for use when generating buffers */
- s->fps_n = gst_value_get_fraction_numerator (new_fps);
- s->fps_d = gst_value_get_fraction_denominator (new_fps);
-
- GST_DEBUG_OBJECT (s, "peer wants %d/%d fps", s->fps_n, s->fps_d);
-
- return TRUE;
-}
-
-static void
-gst_ximage_src_fixate (GstPad * pad, GstCaps * caps)
-{
- gint i;
- GstStructure *structure;
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- structure = gst_caps_get_structure (caps, i);
-
- gst_structure_fixate_field_nearest_fraction (structure, "framerate", 25, 1);
- }
-}
-
-static void
-gst_ximage_src_class_init (GstXImageSrcClass * klass)
-{
- GObjectClass *gc = G_OBJECT_CLASS (klass);
- GstBaseSrcClass *bc = GST_BASE_SRC_CLASS (klass);
- GstPushSrcClass *push_class = GST_PUSH_SRC_CLASS (klass);
-
- gc->set_property = gst_ximage_src_set_property;
- gc->get_property = gst_ximage_src_get_property;
- gc->dispose = gst_ximage_src_dispose;
- gc->finalize = gst_ximage_src_finalize;
-
- g_object_class_install_property (gc, PROP_DISPLAY_NAME,
- g_param_spec_string ("display-name", "Display", "X Display Name", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gc, PROP_SCREEN_NUM,
- g_param_spec_uint ("screen-num", "Screen number", "X Screen Number",
- 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gc, PROP_SHOW_POINTER,
- g_param_spec_boolean ("show-pointer", "Show Mouse Pointer",
- "Show mouse pointer (if XFixes extension enabled)", TRUE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- /**
- * GstXImageSrc:use-damage
- *
- * Use XDamage (if the XDamage extension is enabled)
- *
- * Since: 0.10.4
- **/
- g_object_class_install_property (gc, PROP_USE_DAMAGE,
- g_param_spec_boolean ("use-damage", "Use XDamage",
- "Use XDamage (if XDamage extension enabled)", TRUE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- /**
- * GstXImageSrc:startx
- *
- * X coordinate of top left corner of area to be recorded
- * (0 for top left of screen)
- *
- * Since: 0.10.4
- **/
- g_object_class_install_property (gc, PROP_STARTX,
- g_param_spec_uint ("startx", "Start X co-ordinate",
- "X coordinate of top left corner of area to be recorded (0 for top left of screen)",
- 0, G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- /**
- * GstXImageSrc:starty
- *
- * Y coordinate of top left corner of area to be recorded
- * (0 for top left of screen)
- *
- * Since: 0.10.4
- **/
- g_object_class_install_property (gc, PROP_STARTY,
- g_param_spec_uint ("starty", "Start Y co-ordinate",
- "Y coordinate of top left corner of area to be recorded (0 for top left of screen)",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
- /**
- * GstXImageSrc:endx
- *
- * X coordinate of bottom right corner of area to be recorded
- * (0 for bottom right of screen)
- *
- * Since: 0.10.4
- **/
- g_object_class_install_property (gc, PROP_ENDX,
- g_param_spec_uint ("endx", "End X",
- "X coordinate of bottom right corner of area to be recorded (0 for bottom right of screen)",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
- /**
- * GstXImageSrc:endy
- *
- * Y coordinate of bottom right corner of area to be recorded
- * (0 for bottom right of screen)
- *
- * Since: 0.10.4
- **/
- g_object_class_install_property (gc, PROP_ENDY,
- g_param_spec_uint ("endy", "End Y",
- "Y coordinate of bottom right corner of area to be recorded (0 for bottom right of screen)",
- 0, G_MAXINT, 0, G_PARAM_READWRITE));
-
- /**
- * GstXImageSrc:remote
- *
- * Whether the X display is remote. The element will try to use alternate calls
- * known to work better with remote displays.
- *
- * Since: 0.10.26
- **/
- g_object_class_install_property (gc, PROP_REMOTE,
- g_param_spec_boolean ("remote", "Remote dispay",
- "Whether the display is remote", FALSE,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstXImageSrc:xid
- *
- * The XID of the window to capture. 0 for the root window (default).
- *
- * Since: 0.10.31
- **/
- g_object_class_install_property (gc, PROP_XID,
- g_param_spec_uint64 ("xid", "Window XID",
- "Window XID to capture from", 0, G_MAXUINT64, 0,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- /**
- * GstXImageSrc:xname
- *
- * The name of the window to capture, if any.
- *
- * Since: 0.10.31
- **/
- g_object_class_install_property (gc, PROP_XNAME,
- g_param_spec_string ("xname", "Window name",
- "Window name to capture from", NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- parent_class = g_type_class_peek_parent (klass);
-
- push_class->create = gst_ximage_src_create;
- bc->get_caps = gst_ximage_src_get_caps;
- bc->set_caps = gst_ximage_src_set_caps;
- bc->start = gst_ximage_src_start;
- bc->stop = gst_ximage_src_stop;
- bc->unlock = gst_ximage_src_unlock;
-}
-
-static void
-gst_ximage_src_init (GstXImageSrc * ximagesrc, GstXImageSrcClass * klass)
-{
- gst_base_src_set_format (GST_BASE_SRC (ximagesrc), GST_FORMAT_TIME);
- gst_base_src_set_live (GST_BASE_SRC (ximagesrc), TRUE);
- gst_pad_set_fixatecaps_function (GST_BASE_SRC_PAD (ximagesrc),
- gst_ximage_src_fixate);
-
- ximagesrc->pool_lock = g_mutex_new ();
- ximagesrc->x_lock = g_mutex_new ();
- ximagesrc->show_pointer = TRUE;
- ximagesrc->use_damage = TRUE;
- ximagesrc->startx = 0;
- ximagesrc->starty = 0;
- ximagesrc->endx = 0;
- ximagesrc->endy = 0;
- ximagesrc->remote = FALSE;
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- gboolean ret;
-
- GST_DEBUG_CATEGORY_INIT (gst_debug_ximage_src, "ximagesrc", 0,
- "ximagesrc element debug");
-
- ret = gst_element_register (plugin, "ximagesrc", GST_RANK_NONE,
- GST_TYPE_XIMAGE_SRC);
-
- return ret;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ximagesrc",
- "X11 video input plugin using standard Xlib calls",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/wearable/sys/ximage/gstximagesrc.h b/wearable/sys/ximage/gstximagesrc.h
deleted file mode 100644
index e58513c..0000000
--- a/wearable/sys/ximage/gstximagesrc.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/* screenshotsrc: Screenshot plugin for GStreamer
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_XIMAGE_SRC_H__
-#define __GST_XIMAGE_SRC_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-#include "ximageutil.h"
-
-#ifdef HAVE_XFIXES
-#include <X11/extensions/Xfixes.h>
-#endif
-#ifdef HAVE_XDAMAGE
-#include <X11/extensions/Xdamage.h>
-#endif
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_XIMAGE_SRC (gst_ximage_src_get_type())
-#define GST_XIMAGE_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_XIMAGE_SRC,GstXImageSrc))
-#define GST_XIMAGE_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_XIMAGE_SRC,GstXImageSrc))
-#define GST_IS_XIMAGE_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_XIMAGE_SRC))
-#define GST_IS_XIMAGE_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_XIMAGE_SRC))
-
-typedef struct _GstXImageSrc GstXImageSrc;
-typedef struct _GstXImageSrcClass GstXImageSrcClass;
-
-GType gst_ximage_src_get_type (void) G_GNUC_CONST;
-
-struct _GstXImageSrc
-{
- GstPushSrc parent;
-
- /* Information on display */
- GstXContext *xcontext;
- gint width;
- gint height;
-
- Window xwindow;
- gchar *display_name;
- guint screen_num;
-
- /* Window selection */
- guint64 xid;
- gchar *xname;
-
- /* Desired output framerate */
- gint fps_n;
- gint fps_d;
-
- /* for framerate sync */
- GstClockID clock_id;
- gint64 last_frame_no;
-
- /* Protect X Windows calls */
- GMutex *x_lock;
-
- /* Gathered pool of emitted buffers */
- GMutex *pool_lock;
- GSList *buffer_pool;
-
- /* XFixes and XDamage support */
- gboolean have_xfixes;
- gboolean have_xdamage;
- gboolean show_pointer;
- gboolean use_damage;
-
- /* co-ordinates for start and end */
- guint startx;
- guint starty;
- guint endx;
- guint endy;
-
- /* whether to use remote friendly calls */
- gboolean remote;
-
-#ifdef HAVE_XFIXES
- int fixes_event_base;
- XFixesCursorImage *cursor_image;
-#endif
-#ifdef HAVE_XDAMAGE
- Damage damage;
- int damage_event_base;
- XserverRegion damage_region;
- GC damage_copy_gc;
- GstXImageSrcBuffer *last_ximage;
-#endif
-};
-
-struct _GstXImageSrcClass
-{
- GstPushSrcClass parent_class;
-};
-
-G_END_DECLS
-
-#endif /* __GST_XIMAGE_SRC_H__ */
diff --git a/wearable/sys/ximage/ximageutil.c b/wearable/sys/ximage/ximageutil.c
deleted file mode 100644
index 2fac09a..0000000
--- a/wearable/sys/ximage/ximageutil.c
+++ /dev/null
@@ -1,501 +0,0 @@
-/* GStreamer
- * Copyright (C) <2005> Luca Ognibene <luogni@tin.it>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "ximageutil.h"
-
-#ifdef HAVE_XSHM
-static gboolean error_caught = FALSE;
-
-static int
-ximageutil_handle_xerror (Display * display, XErrorEvent * xevent)
-{
- char error_msg[1024];
-
- XGetErrorText (display, xevent->error_code, error_msg, 1024);
- GST_DEBUG ("ximageutil failed to use XShm calls. error: %s", error_msg);
- error_caught = TRUE;
- return 0;
-}
-
-/* This function checks that it is actually really possible to create an image
- using XShm */
-gboolean
-ximageutil_check_xshm_calls (GstXContext * xcontext)
-{
- XImage *ximage;
- XShmSegmentInfo SHMInfo;
- size_t size;
- int (*handler) (Display *, XErrorEvent *);
- gboolean result = FALSE;
- gboolean did_attach = FALSE;
-
- g_return_val_if_fail (xcontext != NULL, FALSE);
-
- /* Sync to ensure any older errors are already processed */
- XSync (xcontext->disp, FALSE);
-
- /* Set defaults so we don't free these later unnecessarily */
- SHMInfo.shmaddr = ((void *) -1);
- SHMInfo.shmid = -1;
-
- /* Setting an error handler to catch failure */
- error_caught = FALSE;
- handler = XSetErrorHandler (ximageutil_handle_xerror);
-
- /* Trying to create a 1x1 ximage */
- GST_DEBUG ("XShmCreateImage of 1x1");
-
- ximage = XShmCreateImage (xcontext->disp, xcontext->visual,
- xcontext->depth, ZPixmap, NULL, &SHMInfo, 1, 1);
-
- /* Might cause an error, sync to ensure it is noticed */
- XSync (xcontext->disp, FALSE);
- if (!ximage || error_caught) {
- GST_WARNING ("could not XShmCreateImage a 1x1 image");
- goto beach;
- }
- size = ximage->height * ximage->bytes_per_line;
-
- SHMInfo.shmid = shmget (IPC_PRIVATE, size, IPC_CREAT | 0777);
- if (SHMInfo.shmid == -1) {
- GST_WARNING ("could not get shared memory of %" G_GSIZE_FORMAT " bytes",
- size);
- goto beach;
- }
-
- SHMInfo.shmaddr = shmat (SHMInfo.shmid, 0, 0);
- if (SHMInfo.shmaddr == ((void *) -1)) {
- GST_WARNING ("Failed to shmat: %s", g_strerror (errno));
- goto beach;
- }
-
- /* Delete the SHM segment. It will actually go away automatically
- * when we detach now */
- shmctl (SHMInfo.shmid, IPC_RMID, 0);
-
- ximage->data = SHMInfo.shmaddr;
- SHMInfo.readOnly = FALSE;
-
- if (XShmAttach (xcontext->disp, &SHMInfo) == 0) {
- GST_WARNING ("Failed to XShmAttach");
- goto beach;
- }
-
- /* Sync to ensure we see any errors we caused */
- XSync (xcontext->disp, FALSE);
-
- if (!error_caught) {
- did_attach = TRUE;
- /* store whether we succeeded in result */
- result = TRUE;
- }
-beach:
- /* Sync to ensure we swallow any errors we caused and reset error_caught */
- XSync (xcontext->disp, FALSE);
- error_caught = FALSE;
- XSetErrorHandler (handler);
-
- if (did_attach) {
- XShmDetach (xcontext->disp, &SHMInfo);
- XSync (xcontext->disp, FALSE);
- }
- if (SHMInfo.shmaddr != ((void *) -1))
- shmdt (SHMInfo.shmaddr);
- if (ximage)
- XDestroyImage (ximage);
- return result;
-}
-#endif /* HAVE_XSHM */
-
-/* This function gets the X Display and global info about it. Everything is
- stored in our object and will be cleaned when the object is disposed. Note
- here that caps for supported format are generated without any window or
- image creation */
-GstXContext *
-ximageutil_xcontext_get (GstElement * parent, const gchar * display_name)
-{
- GstXContext *xcontext = NULL;
- XPixmapFormatValues *px_formats = NULL;
- gint nb_formats = 0, i;
-
- xcontext = g_new0 (GstXContext, 1);
-
- xcontext->disp = XOpenDisplay (display_name);
- GST_DEBUG_OBJECT (parent, "opened display %p", xcontext->disp);
- if (!xcontext->disp) {
- g_free (xcontext);
- return NULL;
- }
- xcontext->screen = DefaultScreenOfDisplay (xcontext->disp);
- xcontext->screen_num = DefaultScreen (xcontext->disp);
- xcontext->visual = DefaultVisual (xcontext->disp, xcontext->screen_num);
- xcontext->root = DefaultRootWindow (xcontext->disp);
- xcontext->white = XWhitePixel (xcontext->disp, xcontext->screen_num);
- xcontext->black = XBlackPixel (xcontext->disp, xcontext->screen_num);
- xcontext->depth = DefaultDepthOfScreen (xcontext->screen);
-
- xcontext->width = DisplayWidth (xcontext->disp, xcontext->screen_num);
- xcontext->height = DisplayHeight (xcontext->disp, xcontext->screen_num);
-
- xcontext->widthmm = DisplayWidthMM (xcontext->disp, xcontext->screen_num);
- xcontext->heightmm = DisplayHeightMM (xcontext->disp, xcontext->screen_num);
-
- xcontext->caps = NULL;
-
- GST_DEBUG_OBJECT (parent, "X reports %dx%d pixels and %d mm x %d mm",
- xcontext->width, xcontext->height, xcontext->widthmm, xcontext->heightmm);
- ximageutil_calculate_pixel_aspect_ratio (xcontext);
-
- /* We get supported pixmap formats at supported depth */
- px_formats = XListPixmapFormats (xcontext->disp, &nb_formats);
-
- if (!px_formats) {
- XCloseDisplay (xcontext->disp);
- g_free (xcontext);
- return NULL;
- }
-
- /* We get bpp value corresponding to our running depth */
- for (i = 0; i < nb_formats; i++) {
- if (px_formats[i].depth == xcontext->depth)
- xcontext->bpp = px_formats[i].bits_per_pixel;
- }
-
- XFree (px_formats);
-
- xcontext->endianness =
- (ImageByteOrder (xcontext->disp) ==
- LSBFirst) ? G_LITTLE_ENDIAN : G_BIG_ENDIAN;
-
-#ifdef HAVE_XSHM
- /* Search for XShm extension support */
- if (XShmQueryExtension (xcontext->disp) &&
- ximageutil_check_xshm_calls (xcontext)) {
- xcontext->use_xshm = TRUE;
- GST_DEBUG ("ximageutil is using XShm extension");
- } else {
- xcontext->use_xshm = FALSE;
- GST_DEBUG ("ximageutil is not using XShm extension");
- }
-#endif /* HAVE_XSHM */
-
- /* our caps system handles 24/32bpp RGB as big-endian. */
- if ((xcontext->bpp == 24 || xcontext->bpp == 32) &&
- xcontext->endianness == G_LITTLE_ENDIAN) {
- xcontext->endianness = G_BIG_ENDIAN;
- xcontext->r_mask_output = GUINT32_TO_BE (xcontext->visual->red_mask);
- xcontext->g_mask_output = GUINT32_TO_BE (xcontext->visual->green_mask);
- xcontext->b_mask_output = GUINT32_TO_BE (xcontext->visual->blue_mask);
- if (xcontext->bpp == 24) {
- xcontext->r_mask_output >>= 8;
- xcontext->g_mask_output >>= 8;
- xcontext->b_mask_output >>= 8;
- }
- } else {
- xcontext->r_mask_output = xcontext->visual->red_mask;
- xcontext->g_mask_output = xcontext->visual->green_mask;
- xcontext->b_mask_output = xcontext->visual->blue_mask;
- }
-
- return xcontext;
-}
-
-/* This function cleans the X context. Closing the Display and unrefing the
- caps for supported formats. */
-void
-ximageutil_xcontext_clear (GstXContext * xcontext)
-{
- g_return_if_fail (xcontext != NULL);
-
- if (xcontext->caps != NULL)
- gst_caps_unref (xcontext->caps);
-
- if (xcontext->par) {
- g_value_unset (xcontext->par);
- g_free (xcontext->par);
- }
-
- XCloseDisplay (xcontext->disp);
-
- g_free (xcontext);
-}
-
-/* This function calculates the pixel aspect ratio based on the properties
- * in the xcontext structure and stores it there. */
-void
-ximageutil_calculate_pixel_aspect_ratio (GstXContext * xcontext)
-{
- gint par[][2] = {
- {1, 1}, /* regular screen */
- {16, 15}, /* PAL TV */
- {11, 10}, /* 525 line Rec.601 video */
- {54, 59} /* 625 line Rec.601 video */
- };
- gint i;
- gint index;
- gdouble ratio;
- gdouble delta;
-
-#define DELTA(idx) (ABS (ratio - ((gdouble) par[idx][0] / par[idx][1])))
-
- /* first calculate the "real" ratio based on the X values;
- * which is the "physical" w/h divided by the w/h in pixels of the display */
- ratio = (gdouble) (xcontext->widthmm * xcontext->height)
- / (xcontext->heightmm * xcontext->width);
-
- /* DirectFB's X in 720x576 reports the physical dimensions wrong, so
- * override here */
- if (xcontext->width == 720 && xcontext->height == 576) {
- ratio = 4.0 * 576 / (3.0 * 720);
- }
- GST_DEBUG ("calculated pixel aspect ratio: %f", ratio);
-
- /* now find the one from par[][2] with the lowest delta to the real one */
- delta = DELTA (0);
- index = 0;
-
- for (i = 1; i < sizeof (par) / (sizeof (gint) * 2); ++i) {
- gdouble this_delta = DELTA (i);
-
- if (this_delta < delta) {
- index = i;
- delta = this_delta;
- }
- }
-
- GST_DEBUG ("Decided on index %d (%d/%d)", index,
- par[index][0], par[index][1]);
-
- if (xcontext->par)
- g_free (xcontext->par);
- xcontext->par = g_new0 (GValue, 1);
- g_value_init (xcontext->par, GST_TYPE_FRACTION);
- gst_value_set_fraction (xcontext->par, par[index][0], par[index][1]);
- GST_DEBUG ("set xcontext PAR to %d/%d\n",
- gst_value_get_fraction_numerator (xcontext->par),
- gst_value_get_fraction_denominator (xcontext->par));
-}
-
-static GstBufferClass *ximagesrc_buffer_parent_class = NULL;
-
-static void
-gst_ximagesrc_buffer_finalize (GstXImageSrcBuffer * ximage)
-{
- GstElement *parent;
-
- g_return_if_fail (ximage != NULL);
-
- parent = ximage->parent;
- if (parent == NULL) {
- g_warning ("XImageSrcBuffer->ximagesrc == NULL");
- goto beach;
- }
-
- if (ximage->return_func)
- ximage->return_func (parent, ximage);
-
-beach:
-
- GST_MINI_OBJECT_CLASS (ximagesrc_buffer_parent_class)->finalize
- (GST_MINI_OBJECT (ximage));
-
- return;
-}
-
-void
-gst_ximage_buffer_free (GstXImageSrcBuffer * ximage)
-{
- /* make sure it is not recycled */
- ximage->width = -1;
- ximage->height = -1;
- gst_buffer_unref (GST_BUFFER (ximage));
-}
-
-static void
-gst_ximagesrc_buffer_init (GstXImageSrcBuffer * ximage_buffer, gpointer g_class)
-{
-#ifdef HAVE_XSHM
- ximage_buffer->SHMInfo.shmaddr = ((void *) -1);
- ximage_buffer->SHMInfo.shmid = -1;
-#endif
-}
-
-static void
-gst_ximagesrc_buffer_class_init (gpointer g_class, gpointer class_data)
-{
- GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
-
- ximagesrc_buffer_parent_class = g_type_class_peek_parent (g_class);
-
- mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
- gst_ximagesrc_buffer_finalize;
-}
-
-static GType
-gst_ximagesrc_buffer_get_type (void)
-{
- static GType _gst_ximagesrc_buffer_type;
-
- if (G_UNLIKELY (_gst_ximagesrc_buffer_type == 0)) {
- static const GTypeInfo ximagesrc_buffer_info = {
- sizeof (GstBufferClass),
- NULL,
- NULL,
- gst_ximagesrc_buffer_class_init,
- NULL,
- NULL,
- sizeof (GstXImageSrcBuffer),
- 0,
- (GInstanceInitFunc) gst_ximagesrc_buffer_init,
- NULL
- };
- _gst_ximagesrc_buffer_type = g_type_register_static (GST_TYPE_BUFFER,
- "GstXImageSrcBuffer", &ximagesrc_buffer_info, 0);
- }
- return _gst_ximagesrc_buffer_type;
-}
-
-/* This function handles GstXImageSrcBuffer creation depending on XShm availability */
-GstXImageSrcBuffer *
-gst_ximageutil_ximage_new (GstXContext * xcontext,
- GstElement * parent, int width, int height, BufferReturnFunc return_func)
-{
- GstXImageSrcBuffer *ximage = NULL;
- gboolean succeeded = FALSE;
-
- ximage =
- (GstXImageSrcBuffer *) gst_mini_object_new (GST_TYPE_XIMAGESRC_BUFFER);
-
- ximage->width = width;
- ximage->height = height;
-
-#ifdef HAVE_XSHM
- if (xcontext->use_xshm) {
- ximage->ximage = XShmCreateImage (xcontext->disp,
- xcontext->visual, xcontext->depth,
- ZPixmap, NULL, &ximage->SHMInfo, ximage->width, ximage->height);
- if (!ximage->ximage) {
- GST_WARNING_OBJECT (parent,
- "could not XShmCreateImage a %dx%d image",
- ximage->width, ximage->height);
-
- /* Retry without XShm */
- xcontext->use_xshm = FALSE;
- goto no_xshm;
- }
-
- /* we have to use the returned bytes_per_line for our shm size */
- ximage->size = ximage->ximage->bytes_per_line * ximage->ximage->height;
- ximage->SHMInfo.shmid = shmget (IPC_PRIVATE, ximage->size,
- IPC_CREAT | 0777);
- if (ximage->SHMInfo.shmid == -1)
- goto beach;
-
- ximage->SHMInfo.shmaddr = shmat (ximage->SHMInfo.shmid, 0, 0);
- if (ximage->SHMInfo.shmaddr == ((void *) -1))
- goto beach;
-
- /* Delete the SHM segment. It will actually go away automatically
- * when we detach now */
- shmctl (ximage->SHMInfo.shmid, IPC_RMID, 0);
-
- ximage->ximage->data = ximage->SHMInfo.shmaddr;
- ximage->SHMInfo.readOnly = FALSE;
-
- if (XShmAttach (xcontext->disp, &ximage->SHMInfo) == 0)
- goto beach;
-
- XSync (xcontext->disp, FALSE);
- } else
- no_xshm:
-#endif /* HAVE_XSHM */
- {
- ximage->ximage = XCreateImage (xcontext->disp,
- xcontext->visual,
- xcontext->depth,
- ZPixmap, 0, NULL, ximage->width, ximage->height, xcontext->bpp, 0);
- if (!ximage->ximage)
- goto beach;
-
- /* we have to use the returned bytes_per_line for our image size */
- ximage->size = ximage->ximage->bytes_per_line * ximage->ximage->height;
- ximage->ximage->data = g_malloc (ximage->size);
-
- XSync (xcontext->disp, FALSE);
- }
- succeeded = TRUE;
-
- GST_BUFFER_DATA (ximage) = (guchar *) ximage->ximage->data;
- GST_BUFFER_SIZE (ximage) = ximage->size;
-
- /* Keep a ref to our src */
- ximage->parent = gst_object_ref (parent);
- ximage->return_func = return_func;
-beach:
- if (!succeeded) {
- gst_ximage_buffer_free (ximage);
- ximage = NULL;
- }
-
- return ximage;
-}
-
-/* This function destroys a GstXImageBuffer handling XShm availability */
-void
-gst_ximageutil_ximage_destroy (GstXContext * xcontext,
- GstXImageSrcBuffer * ximage)
-{
- /* We might have some buffers destroyed after changing state to NULL */
- if (!xcontext)
- goto beach;
-
- g_return_if_fail (ximage != NULL);
-
-#ifdef HAVE_XSHM
- if (xcontext->use_xshm) {
- if (ximage->SHMInfo.shmaddr != ((void *) -1)) {
- XShmDetach (xcontext->disp, &ximage->SHMInfo);
- XSync (xcontext->disp, 0);
- shmdt (ximage->SHMInfo.shmaddr);
- }
- if (ximage->ximage)
- XDestroyImage (ximage->ximage);
-
- } else
-#endif /* HAVE_XSHM */
- {
- if (ximage->ximage) {
- XDestroyImage (ximage->ximage);
- }
- }
-
- XSync (xcontext->disp, FALSE);
-beach:
- if (ximage->parent) {
- /* Release the ref to our parent */
- gst_object_unref (ximage->parent);
- ximage->parent = NULL;
- }
-
- return;
-}
diff --git a/wearable/sys/ximage/ximageutil.h b/wearable/sys/ximage/ximageutil.h
deleted file mode 100644
index 517fc8e..0000000
--- a/wearable/sys/ximage/ximageutil.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/* GStreamer
- * Copyright (C) <2005> Luca Ognibene <luogni@tin.it>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_XIMAGEUTIL_H__
-#define __GST_XIMAGEUTIL_H__
-
-#include <gst/gst.h>
-
-#ifdef HAVE_XSHM
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif /* HAVE_XSHM */
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#ifdef HAVE_XSHM
-#include <X11/extensions/XShm.h>
-#endif /* HAVE_XSHM */
-
-#include <string.h>
-#include <math.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstXContext GstXContext;
-typedef struct _GstXWindow GstXWindow;
-typedef struct _GstXImage GstXImage;
-typedef struct _GstXImageSrcBuffer GstXImageSrcBuffer;
-
-/* Global X Context stuff */
-/**
- * GstXContext:
- * @disp: the X11 Display of this context
- * @screen: the default Screen of Display @disp
- * @screen_num: the Screen number of @screen
- * @visual: the default Visual of Screen @screen
- * @root: the root Window of Display @disp
- * @white: the value of a white pixel on Screen @screen
- * @black: the value of a black pixel on Screen @screen
- * @depth: the color depth of Display @disp
- * @bpp: the number of bits per pixel on Display @disp
- * @endianness: the endianness of image bytes on Display @disp
- * @width: the width in pixels of Display @disp
- * @height: the height in pixels of Display @disp
- * @widthmm: the width in millimeters of Display @disp
- * @heightmm: the height in millimeters of Display @disp
- * @par: the pixel aspect ratio calculated from @width, @widthmm and @height,
- * @heightmm ratio
- * @use_xshm: used to known wether of not XShm extension is usable or not even
- * if the Extension is present
- * @caps: the #GstCaps that Display @disp can accept
- *
- * Structure used to store various informations collected/calculated for a
- * Display.
- */
-struct _GstXContext {
- Display *disp;
-
- Screen *screen;
- gint screen_num;
-
- Visual *visual;
-
- Window root;
-
- gulong white, black;
-
- gint depth;
- gint bpp;
- gint endianness;
-
- gint width, height;
- gint widthmm, heightmm;
-
- /* these are the output masks
- * for buffers from ximagesrc
- * and are in big endian */
- guint32 r_mask_output, g_mask_output, b_mask_output;
-
- GValue *par; /* calculated pixel aspect ratio */
-
- gboolean use_xshm;
-
- GstCaps *caps;
-};
-
-/**
- * GstXWindow:
- * @win: the Window ID of this X11 window
- * @width: the width in pixels of Window @win
- * @height: the height in pixels of Window @win
- * @internal: used to remember if Window @win was created internally or passed
- * through the #GstXOverlay interface
- * @gc: the Graphical Context of Window @win
- *
- * Structure used to store informations about a Window.
- */
-struct _GstXWindow {
- Window win;
- gint width, height;
- gboolean internal;
- GC gc;
-};
-
-gboolean ximageutil_check_xshm_calls (GstXContext * xcontext);
-
-GstXContext *ximageutil_xcontext_get (GstElement *parent,
- const gchar *display_name);
-void ximageutil_xcontext_clear (GstXContext *xcontext);
-void ximageutil_calculate_pixel_aspect_ratio (GstXContext * xcontext);
-
-/* custom ximagesrc buffer, copied from ximagesink */
-
-/* BufferReturnFunc is called when a buffer is finalised */
-typedef void (*BufferReturnFunc) (GstElement *parent, GstXImageSrcBuffer *buf);
-
-/**
- * GstXImageSrcBuffer:
- * @parent: a reference to the element we belong to
- * @ximage: the XImage of this buffer
- * @width: the width in pixels of XImage @ximage
- * @height: the height in pixels of XImage @ximage
- * @size: the size in bytes of XImage @ximage
- *
- * Subclass of #GstBuffer containing additional information about an XImage.
- */
-struct _GstXImageSrcBuffer {
- GstBuffer buffer;
-
- /* Reference to the ximagesrc we belong to */
- GstElement *parent;
-
- XImage *ximage;
-
-#ifdef HAVE_XSHM
- XShmSegmentInfo SHMInfo;
-#endif /* HAVE_XSHM */
-
- gint width, height;
- size_t size;
-
- BufferReturnFunc return_func;
-};
-
-
-GstXImageSrcBuffer *gst_ximageutil_ximage_new (GstXContext *xcontext,
- GstElement *parent, int width, int height, BufferReturnFunc return_func);
-
-void gst_ximageutil_ximage_destroy (GstXContext *xcontext,
- GstXImageSrcBuffer * ximage);
-
-/* Call to manually release a buffer */
-void gst_ximage_buffer_free (GstXImageSrcBuffer *ximage);
-
-#define GST_TYPE_XIMAGESRC_BUFFER (gst_ximagesrc_buffer_get_type())
-#define GST_IS_XIMAGESRC_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_XIMAGESRC_BUFFER))
-#define GST_IS_XIMAGESRC_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_XIMAGESRC_BUFFER))
-#define GST_XIMAGESRC_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_XIMAGESRC_BUFFER, GstXImageSrcBuffer))
-#define GST_XIMAGESRC_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_XIMAGESRC_BUFFER, GstXImageSrcBufferClass))
-#define GST_XIMAGESRC_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_XIMAGESRC_BUFFER, GstXImageSrcBufferClass))
-
-G_END_DECLS
-
-#endif /* __GST_XIMAGEUTIL_H__ */