Skip to content

Commit

Permalink
Formatting cleanup
Browse files Browse the repository at this point in the history
Tried to match the rest of the project's code style.
  • Loading branch information
dougg3 authored and FD- committed Sep 4, 2020
1 parent dae613a commit 7102272
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 76 deletions.
92 changes: 45 additions & 47 deletions renderers/audio_renderer_gstreamer.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,26 +31,26 @@ typedef struct audio_renderer_gstreamer_s {

static const audio_renderer_funcs_t audio_renderer_gstreamer_funcs;

static gboolean check_plugins (void)
static gboolean check_plugins(void)
{
int i;
gboolean ret;
GstRegistry *registry;
const gchar *needed[] = {"app", "libav", "playback", "autodetect", NULL};

registry = gst_registry_get ();
ret = TRUE;
for (i = 0; i < g_strv_length ((gchar **) needed); i++) {
GstPlugin *plugin;
plugin = gst_registry_find_plugin (registry, needed[i]);
if (!plugin) {
g_print ("Required gstreamer plugin '%s' not found\n", needed[i]);
ret = FALSE;
continue;
int i;
gboolean ret;
GstRegistry *registry;
const gchar *needed[] = {"app", "libav", "playback", "autodetect", NULL};

registry = gst_registry_get();
ret = TRUE;
for (i = 0; i < g_strv_length((gchar **)needed); i++) {
GstPlugin *plugin;
plugin = gst_registry_find_plugin(registry, needed[i]);
if (!plugin) {
g_print("Required gstreamer plugin '%s' not found\n", needed[i]);
ret = FALSE;
continue;
}
gst_object_unref(plugin);
}
gst_object_unref (plugin);
}
return ret;
return ret;
}

audio_renderer_t *audio_renderer_gstreamer_init(logger_t *logger, video_renderer_t *video_renderer, audio_device_t device, bool low_latency) {
Expand All @@ -70,49 +70,47 @@ audio_renderer_t *audio_renderer_gstreamer_init(logger_t *logger, video_renderer
gst_init(NULL, NULL);
}

assert(check_plugins ());
assert(check_plugins());

renderer->pipeline = gst_parse_launch("appsrc name=audio_source stream-type=0 format=GST_FORMAT_TIME is-live=true ! queue ! decodebin !"
"audioconvert ! volume name=volume ! level ! autoaudiosink sync=false", &error);
g_assert (renderer->pipeline);
g_assert(renderer->pipeline);

renderer->appsrc = gst_bin_get_by_name (GST_BIN (renderer->pipeline), "audio_source");
renderer->volume = gst_bin_get_by_name (GST_BIN (renderer->pipeline), "volume");
renderer->appsrc = gst_bin_get_by_name(GST_BIN(renderer->pipeline), "audio_source");
renderer->volume = gst_bin_get_by_name(GST_BIN(renderer->pipeline), "volume");

gchar eld_conf[] = { 0xF8, 0xE8, 0x50, 0x00 };
gchar eld_conf[] = {0xF8, 0xE8, 0x50, 0x00};
GstBuffer *codec_data = gst_buffer_new_and_alloc(sizeof(eld_conf));
GstMapInfo map;

gst_buffer_map (codec_data, &map, GST_MAP_WRITE);
memset (map.data, eld_conf[0], map.size);
memset (map.data+1, eld_conf[1], map.size);
memset (map.data+2, eld_conf[2], map.size);
memset (map.data+3, eld_conf[3], map.size);

GstCaps *caps = gst_caps_new_simple ("audio/mpeg",
"rate", G_TYPE_INT, 44100,
"channels", G_TYPE_INT, 2,
"mpegversion", G_TYPE_INT, 4,
"stream-format", G_TYPE_STRING, "raw",
"codec_data", GST_TYPE_BUFFER, codec_data,
NULL);
gst_buffer_map(codec_data, &map, GST_MAP_WRITE);
memset(map.data, eld_conf[0], map.size);
memset(map.data+1, eld_conf[1], map.size);
memset(map.data+2, eld_conf[2], map.size);
memset(map.data+3, eld_conf[3], map.size);

GstCaps *caps = gst_caps_new_simple("audio/mpeg",
"rate", G_TYPE_INT, 44100,
"channels", G_TYPE_INT, 2,
"mpegversion", G_TYPE_INT, 4,
"stream-format", G_TYPE_STRING, "raw",
"codec_data", GST_TYPE_BUFFER, codec_data,
NULL);
g_object_set(renderer->appsrc, "caps", caps, NULL);

gst_caps_unref(caps);
gst_buffer_unmap (codec_data, &map);
gst_buffer_unref (codec_data);
gst_buffer_unmap(codec_data, &map);
gst_buffer_unref(codec_data);

return &renderer->base;
}

void audio_renderer_gstreamer_start(audio_renderer_t *renderer) {
audio_renderer_gstreamer_t *r = (audio_renderer_gstreamer_t *)renderer;
//g_signal_connect( r->pipeline, "deep-notify", G_CALLBACK(gst_object_default_deep_notify ), NULL );
gst_element_set_state (r->pipeline, GST_STATE_PLAYING);
gst_element_set_state(r->pipeline, GST_STATE_PLAYING);
}

void audio_renderer_gstreamer_render_buffer(audio_renderer_t *renderer, raop_ntp_t *ntp, unsigned char *data, int data_len, uint64_t pts) {

GstBuffer *buffer;

if (data_len == 0) return;
Expand All @@ -131,7 +129,7 @@ void audio_renderer_gstreamer_set_volume(audio_renderer_t *renderer, float volum
audio_renderer_gstreamer_t *r = (audio_renderer_gstreamer_t *)renderer;
float avol;
if (fabs(volume) < 28) {
avol=floorf(((28-fabs(volume))/28)*10)/10;
avol = floorf(((28-fabs(volume))/28)*10)/10;
g_object_set(r->volume, "volume", avol, NULL);
}
}
Expand All @@ -141,11 +139,11 @@ void audio_renderer_gstreamer_flush(audio_renderer_t *renderer) {

void audio_renderer_gstreamer_destroy(audio_renderer_t *renderer) {
audio_renderer_gstreamer_t *r = (audio_renderer_gstreamer_t *)renderer;
gst_app_src_end_of_stream (GST_APP_SRC(r->appsrc));
gst_element_set_state (r->pipeline, GST_STATE_NULL);
gst_object_unref (r->pipeline);
gst_object_unref (r->appsrc);
gst_object_unref (r->volume);
gst_app_src_end_of_stream(GST_APP_SRC(r->appsrc));
gst_element_set_state(r->pipeline, GST_STATE_NULL);
gst_object_unref(r->pipeline);
gst_object_unref(r->appsrc);
gst_object_unref(r->volume);
if (renderer) {
free(renderer);
}
Expand Down
56 changes: 27 additions & 29 deletions renderers/video_renderer_gstreamer.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,26 @@ typedef struct video_renderer_gstreamer_s {

static const video_renderer_funcs_t video_renderer_gstreamer_funcs;

static gboolean check_plugins (void)
static gboolean check_plugins(void)
{
int i;
gboolean ret;
GstRegistry *registry;
const gchar *needed[] = { "app", "libav", "playback", "autodetect", "videoparsersbad", NULL};

registry = gst_registry_get ();
ret = TRUE;
for (i = 0; i < g_strv_length ((gchar **) needed); i++) {
GstPlugin *plugin;
plugin = gst_registry_find_plugin (registry, needed[i]);
if (!plugin) {
g_print ("Required gstreamer plugin '%s' not found\n", needed[i]);
ret = FALSE;
continue;
int i;
gboolean ret;
GstRegistry *registry;
const gchar *needed[] = {"app", "libav", "playback", "autodetect", "videoparsersbad", NULL};

registry = gst_registry_get();
ret = TRUE;
for (i = 0; i < g_strv_length((gchar **)needed); i++) {
GstPlugin *plugin;
plugin = gst_registry_find_plugin(registry, needed[i]);
if (!plugin) {
g_print("Required gstreamer plugin '%s' not found\n", needed[i]);
ret = FALSE;
continue;
}
gst_object_unref(plugin);
}
gst_object_unref (plugin);
}
return ret;
return ret;
}

video_renderer_t *video_renderer_gstreamer_init(logger_t *logger, background_mode_t background_mode, bool low_latency, int rotation) {
Expand All @@ -64,23 +64,21 @@ video_renderer_t *video_renderer_gstreamer_init(logger_t *logger, background_mod
renderer->base.funcs = &video_renderer_gstreamer_funcs;
renderer->base.type = VIDEO_RENDERER_GSTREAMER;

assert(check_plugins ());
assert(check_plugins());

renderer->pipeline = gst_parse_launch("appsrc name=video_source stream-type=0 format=GST_FORMAT_TIME is-live=true !"
"queue ! decodebin ! videoconvert ! autovideosink name=video_sink sync=false", &error);
g_assert (renderer->pipeline);
g_assert(renderer->pipeline);


renderer->appsrc = gst_bin_get_by_name (GST_BIN (renderer->pipeline), "video_source");
renderer->sink = gst_bin_get_by_name (GST_BIN (renderer->pipeline), "video_sink");
renderer->appsrc = gst_bin_get_by_name(GST_BIN(renderer->pipeline), "video_source");
renderer->sink = gst_bin_get_by_name(GST_BIN(renderer->pipeline), "video_sink");

return &renderer->base;
}

static void video_renderer_gstreamer_start(video_renderer_t *renderer) {
video_renderer_gstreamer_t *r = (video_renderer_gstreamer_t *)renderer;
//g_signal_connect( r->pipeline, "deep-notify", G_CALLBACK(gst_object_default_deep_notify ), NULL );
gst_element_set_state (r->pipeline, GST_STATE_PLAYING);
gst_element_set_state(r->pipeline, GST_STATE_PLAYING);
}

static void video_renderer_gstreamer_render_buffer(video_renderer_t *renderer, raop_ntp_t *ntp, unsigned char *data, int data_len, uint64_t pts, int type) {
Expand All @@ -93,7 +91,7 @@ static void video_renderer_gstreamer_render_buffer(video_renderer_t *renderer, r
assert(buffer != NULL);
GST_BUFFER_DTS(buffer) = (GstClockTime)pts;
gst_buffer_fill(buffer, 0, data, data_len);
gst_app_src_push_buffer (GST_APP_SRC(r->appsrc), buffer);
gst_app_src_push_buffer(GST_APP_SRC(r->appsrc), buffer);
}

void video_renderer_gstreamer_flush(video_renderer_t *renderer) {
Expand All @@ -102,9 +100,9 @@ void video_renderer_gstreamer_flush(video_renderer_t *renderer) {

void video_renderer_gstreamer_destroy(video_renderer_t *renderer) {
video_renderer_gstreamer_t *r = (video_renderer_gstreamer_t *)renderer;
gst_app_src_end_of_stream (GST_APP_SRC(r->appsrc));
gst_element_set_state (r->pipeline, GST_STATE_NULL);
gst_object_unref (r->pipeline);
gst_app_src_end_of_stream(GST_APP_SRC(r->appsrc));
gst_element_set_state(r->pipeline, GST_STATE_NULL);
gst_object_unref(r->pipeline);
if (renderer) {
free(renderer);
}
Expand Down

0 comments on commit 7102272

Please sign in to comment.