Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Copy jack plugin from 903198671349db944198dc3b65ac67806a53b3b2
- Loading branch information
0 parents
commit 15e315e
Showing
18 changed files
with
3,955 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
*.loT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
|
||
plugin_LTLIBRARIES = libgstjack.la | ||
|
||
libgstjack_la_SOURCES = gstjackutil.c gstjack.c gstjackaudiosrc.c gstjackaudiosink.c gstjackaudioclient.c | ||
libgstjack_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(JACK_CFLAGS) | ||
libgstjack_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(JACK_LIBS) | ||
libgstjack_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) | ||
|
||
noinst_HEADERS = gstjackutil.h gstjackaudiosrc.h gstjackaudiosink.h gstjackaudioclient.h gstjack.h gstjackringbuffer.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
/* GStreamer Jack plugins | ||
* Copyright (C) 2006 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., 51 Franklin St, Fifth Floor, | ||
* Boston, MA 02110-1301, USA. | ||
*/ | ||
|
||
#ifdef HAVE_CONFIG_H | ||
#include "config.h" | ||
#endif | ||
|
||
#include "gstjack.h" | ||
#include "gstjackaudiosrc.h" | ||
#include "gstjackaudiosink.h" | ||
|
||
GType | ||
gst_jack_connect_get_type (void) | ||
{ | ||
static volatile gsize jack_connect_type = 0; | ||
|
||
if (g_once_init_enter (&jack_connect_type)) { | ||
static const GEnumValue jack_connect_enums[] = { | ||
{GST_JACK_CONNECT_NONE, | ||
"Don't automatically connect ports to physical ports", "none"}, | ||
{GST_JACK_CONNECT_AUTO, | ||
"Automatically connect ports to physical ports", "auto"}, | ||
{GST_JACK_CONNECT_AUTO_FORCED, | ||
"Automatically connect ports to as many physical ports as possible", | ||
"auto-forced"}, | ||
{0, NULL, NULL}, | ||
}; | ||
GType tmp = g_enum_register_static ("GstJackConnect", jack_connect_enums); | ||
g_once_init_leave (&jack_connect_type, tmp); | ||
} | ||
return (GType) jack_connect_type; | ||
} | ||
|
||
GType | ||
gst_jack_transport_get_type (void) | ||
{ | ||
static volatile gsize type = 0; | ||
|
||
if (g_once_init_enter (&type)) { | ||
static const GFlagsValue flag_values[] = { | ||
{GST_JACK_TRANSPORT_MASTER, | ||
"Start and stop transport with state changes", "master"}, | ||
{GST_JACK_TRANSPORT_SLAVE, | ||
"Follow transport state changes", "slave"}, | ||
{0, NULL, NULL}, | ||
}; | ||
GType tmp = g_flags_register_static ("GstJackTransport", flag_values); | ||
g_once_init_leave (&type, tmp); | ||
} | ||
return (GType) type; | ||
} | ||
|
||
|
||
static gpointer | ||
gst_jack_client_copy (gpointer jclient) | ||
{ | ||
return jclient; | ||
} | ||
|
||
|
||
static void | ||
gst_jack_client_free (gpointer jclient) | ||
{ | ||
return; | ||
} | ||
|
||
|
||
GType | ||
gst_jack_client_get_type (void) | ||
{ | ||
static volatile gsize jack_client_type = 0; | ||
|
||
if (g_once_init_enter (&jack_client_type)) { | ||
/* hackish, but makes it show up nicely in gst-inspect */ | ||
GType tmp = g_boxed_type_register_static ("JackClient", | ||
(GBoxedCopyFunc) gst_jack_client_copy, | ||
(GBoxedFreeFunc) gst_jack_client_free); | ||
g_once_init_leave (&jack_client_type, tmp); | ||
} | ||
|
||
return (GType) jack_client_type; | ||
} | ||
|
||
static gboolean | ||
plugin_init (GstPlugin * plugin) | ||
{ | ||
if (!gst_element_register (plugin, "jackaudiosrc", GST_RANK_PRIMARY, | ||
GST_TYPE_JACK_AUDIO_SRC)) | ||
return FALSE; | ||
if (!gst_element_register (plugin, "jackaudiosink", GST_RANK_PRIMARY, | ||
GST_TYPE_JACK_AUDIO_SINK)) | ||
return FALSE; | ||
|
||
return TRUE; | ||
} | ||
|
||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, | ||
GST_VERSION_MINOR, | ||
jack, | ||
"JACK audio elements", | ||
plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/* GStreamer | ||
* Copyright (C) 2006 Wim Taymans <wim@fluendo.com> | ||
* | ||
* gstjack.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., 51 Franklin St, Fifth Floor, | ||
* Boston, MA 02110-1301, USA. | ||
*/ | ||
|
||
#ifndef _GST_JACK_H_ | ||
#define _GST_JACK_H_ | ||
|
||
#include <jack/jack.h> | ||
#include <gst/audio/audio.h> | ||
|
||
/** | ||
* GstJackConnect: | ||
* @GST_JACK_CONNECT_NONE: Don't automatically connect to physical ports. | ||
* In this mode, the element will accept any number of input channels and will | ||
* create (but not connect) an output port for each channel. | ||
* @GST_JACK_CONNECT_AUTO: In this mode, the element will try to connect each | ||
* output port to a random physical jack input pin. The sink will | ||
* expose the number of physical channels on its pad caps. | ||
* @GST_JACK_CONNECT_AUTO_FORCED: In this mode, the element will try to connect each | ||
* output port to a random physical jack input pin. The element will accept any number | ||
* of input channels. | ||
* | ||
* Specify how the output ports will be connected. | ||
*/ | ||
typedef enum { | ||
GST_JACK_CONNECT_NONE, | ||
GST_JACK_CONNECT_AUTO, | ||
GST_JACK_CONNECT_AUTO_FORCED | ||
} GstJackConnect; | ||
|
||
/** | ||
* GstJackTransport: | ||
* @GST_JACK_TRANSPORT_AUTONOMOUS: no transport support | ||
* @GST_JACK_TRANSPORT_MASTER: start and stop transport with state-changes | ||
* @GST_JACK_TRANSPORT_SLAVE: follow transport state changes | ||
* | ||
* The jack transport state allow to sync multiple clients. This enum defines a | ||
* client behaviour regarding to the transport mechanism. | ||
*/ | ||
typedef enum { | ||
GST_JACK_TRANSPORT_AUTONOMOUS = 0, | ||
GST_JACK_TRANSPORT_MASTER = (1 << 0), | ||
GST_JACK_TRANSPORT_SLAVE = (1 << 1), | ||
} GstJackTransport; | ||
|
||
typedef jack_default_audio_sample_t sample_t; | ||
|
||
#define GST_TYPE_JACK_CONNECT (gst_jack_connect_get_type ()) | ||
#define GST_TYPE_JACK_TRANSPORT (gst_jack_transport_get_type ()) | ||
#define GST_TYPE_JACK_CLIENT (gst_jack_client_get_type ()) | ||
|
||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN | ||
#define GST_JACK_FORMAT_STR "F32LE" | ||
#else | ||
#define GST_JACK_FORMAT_STR "F32BE" | ||
#endif | ||
|
||
GType gst_jack_client_get_type(void); | ||
GType gst_jack_connect_get_type(void); | ||
GType gst_jack_transport_get_type(void); | ||
|
||
#endif // _GST_JACK_H_ |
Oops, something went wrong.