initialze gstreamer once only, check for videoparsersbad plugin

This commit is contained in:
fduncanh
2022-05-07 13:10:37 -04:00
parent 442db8562f
commit 0083108071
4 changed files with 9 additions and 4 deletions

View File

@@ -29,6 +29,7 @@ extern "C" {
#include <stdbool.h>
#include "../lib/raop_ntp.h"
void gstreamer_init();
void audio_renderer_init(logger_t *logger, const char* audiosink);
void audio_renderer_start(unsigned char* compression_type);
void audio_renderer_stop();

View File

@@ -51,7 +51,7 @@ static gboolean check_plugins (void)
int i;
gboolean ret;
GstRegistry *registry;
const gchar *needed[] = { "app", "libav", "playback", "autodetect", NULL};
const gchar *needed[] = { "app", "libav", "playback", "autodetect", "videoparsersbad", NULL};
registry = gst_registry_get ();
ret = TRUE;
@@ -69,6 +69,11 @@ static gboolean check_plugins (void)
return ret;
}
void gstreamer_init(){
gst_init(NULL,NULL);
assert(check_plugins ());
}
#define NFORMATS 2 /* set to 4 to enable AAC_LD and PCM: allowed, but never seen in real-world use */
static audio_renderer_t *renderer_type[NFORMATS];
static audio_renderer_t *renderer = NULL;
@@ -79,8 +84,6 @@ void audio_renderer_init(logger_t *render_logger, const char* audiosink) {
GError *error = NULL;
GstCaps *caps = NULL;
logger = render_logger;
gst_init(NULL,NULL);
assert(check_plugins ());
for (int i = 0; i < NFORMATS ; i++) {
renderer_type[i] = (audio_renderer_t *) calloc(1,sizeof(audio_renderer_t));

View File

@@ -132,7 +132,6 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
renderer = calloc(1, sizeof(video_renderer_t));
assert(renderer);
gst_init(NULL,NULL);
GString *launch = g_string_new("appsrc name=video_source ! ");
g_string_append(launch, "queue ! ");
g_string_append(launch, parser);