mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
initialze gstreamer once only, check for videoparsersbad plugin
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -688,6 +688,8 @@ int main (int argc, char *argv[]) {
|
||||
logger_set_callback(render_logger, log_callback, NULL);
|
||||
logger_set_level(render_logger, debug_log ? LOGGER_DEBUG : LOGGER_INFO);
|
||||
|
||||
gstreamer_init();
|
||||
|
||||
if (use_audio) {
|
||||
audio_renderer_init(render_logger, audiosink.c_str());
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user