Enabled Audio Sync
This commit is contained in:
@@ -24,11 +24,11 @@
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <unistd.h>
|
||||
#include <math.h>
|
||||
#include <gst/app/gstappsrc.h>
|
||||
|
||||
struct audio_renderer_s {
|
||||
logger_t *logger;
|
||||
video_renderer_t *video_renderer;
|
||||
GstElement *appsrc;
|
||||
GstElement *pipeline;
|
||||
GstElement *volume;
|
||||
@@ -44,7 +44,8 @@ audio_renderer_t *audio_renderer_init(logger_t *logger, video_renderer_t *video_
|
||||
}
|
||||
renderer->logger = logger;
|
||||
|
||||
renderer->pipeline = gst_parse_launch("appsrc name=audio_source is-live=true ! queue ! decodebin ! audioconvert ! audiorate ! volume name=volume volume=6 ! queue ! autoaudiosink sync=false", &error);
|
||||
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);
|
||||
|
||||
renderer->appsrc = gst_bin_get_by_name (GST_BIN (renderer->pipeline), "audio_source");
|
||||
@@ -89,14 +90,18 @@ void audio_renderer_render_buffer(audio_renderer_t *renderer, raop_ntp_t *ntp, u
|
||||
|
||||
buffer = gst_buffer_new_and_alloc(data_len);
|
||||
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(renderer->appsrc), buffer);
|
||||
|
||||
}
|
||||
|
||||
void audio_renderer_set_volume(audio_renderer_t *renderer, float volume) {
|
||||
//g_object_set(renderer->volume, "volume", volume, NULL);
|
||||
float avol;
|
||||
if (fabs(volume) < 28) {
|
||||
avol=floorf(((28-fabs(volume))/28)*10)/10;
|
||||
g_object_set(renderer->volume, "volume", avol, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void audio_renderer_flush(audio_renderer_t *renderer) {
|
||||
|
||||
@@ -47,7 +47,7 @@ video_renderer_t *video_renderer_init(logger_t *logger, background_mode_t backgr
|
||||
|
||||
renderer->logger = logger;
|
||||
|
||||
renderer->pipeline = gst_parse_launch("appsrc name=video_source is-live=true ! queue ! decodebin ! videoconvert ! videoscale ! xvimagesink name=video_sink sync=false", &error);
|
||||
renderer->pipeline = gst_parse_launch("appsrc name=video_source stream-type=0 format=GST_FORMAT_TIME is-live=true ! queue ! decodebin ! videoconvert ! videoscale ! xvimagesink name=video_sink sync=false", &error);
|
||||
/*
|
||||
renderer->pipeline = gst_pipeline_new("test-pipeline");
|
||||
renderer->appsrc = gst_element_factory_make("appsrc","video_source");
|
||||
@@ -91,7 +91,7 @@ void video_renderer_render_buffer(video_renderer_t *renderer, raop_ntp_t *ntp, u
|
||||
|
||||
buffer = gst_buffer_new_and_alloc(data_len);
|
||||
assert(buffer != NULL);
|
||||
|
||||
GST_BUFFER_DTS(buffer) = (GstClockTime)pts;
|
||||
gst_buffer_fill(buffer, 0, data, data_len);
|
||||
GST_BUFFER_FLAG_SET(buffer, GST_BUFFER_FLAG_CORRUPTED);
|
||||
gst_app_src_push_buffer (GST_APP_SRC(renderer->appsrc), buffer);
|
||||
|
||||
Reference in New Issue
Block a user