mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
whitespace cleanup
This commit is contained in:
@@ -103,15 +103,15 @@ static gboolean check_plugin_feature (const gchar *needed_feature)
|
|||||||
|
|
||||||
plugin_feature = gst_registry_find_feature (registry, needed_feature, GST_TYPE_ELEMENT_FACTORY);
|
plugin_feature = gst_registry_find_feature (registry, needed_feature, GST_TYPE_ELEMENT_FACTORY);
|
||||||
if (!plugin_feature) {
|
if (!plugin_feature) {
|
||||||
g_print ("Required gstreamer libav plugin feature '%s' not found:\n\n"
|
g_print ("Required gstreamer libav plugin feature '%s' not found:\n\n"
|
||||||
"This may be missing because the FFmpeg package used by GStreamer-1.x-libav is incomplete.\n"
|
"This may be missing because the FFmpeg package used by GStreamer-1.x-libav is incomplete.\n"
|
||||||
"(Some distributions provide an incomplete FFmpeg due to License or Patent issues:\n"
|
"(Some distributions provide an incomplete FFmpeg due to License or Patent issues:\n"
|
||||||
"in such cases a complete version for that distribution is usually made available elsewhere)\n",
|
"in such cases a complete version for that distribution is usually made available elsewhere)\n",
|
||||||
needed_feature);
|
needed_feature);
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
} else {
|
} else {
|
||||||
gst_object_unref (plugin_feature);
|
gst_object_unref (plugin_feature);
|
||||||
plugin_feature = NULL;
|
plugin_feature = NULL;
|
||||||
}
|
}
|
||||||
if (ret == FALSE) {
|
if (ret == FALSE) {
|
||||||
g_print ("\nif the plugin feature is installed, but not found, your gstreamer registry may have been corrupted.\n"
|
g_print ("\nif the plugin feature is installed, but not found, your gstreamer registry may have been corrupted.\n"
|
||||||
@@ -187,7 +187,7 @@ void audio_renderer_init(logger_t *render_logger, const char* audiosink, const b
|
|||||||
|
|
||||||
g_assert (renderer_type[i]->pipeline);
|
g_assert (renderer_type[i]->pipeline);
|
||||||
gst_pipeline_use_clock(GST_PIPELINE_CAST(renderer_type[i]->pipeline), clock);
|
gst_pipeline_use_clock(GST_PIPELINE_CAST(renderer_type[i]->pipeline), clock);
|
||||||
renderer_type[i]->bus = gst_element_get_bus(renderer_type[i]->pipeline);
|
renderer_type[i]->bus = gst_element_get_bus(renderer_type[i]->pipeline);
|
||||||
renderer_type[i]->appsrc = gst_bin_get_by_name (GST_BIN (renderer_type[i]->pipeline), "audio_source");
|
renderer_type[i]->appsrc = gst_bin_get_by_name (GST_BIN (renderer_type[i]->pipeline), "audio_source");
|
||||||
renderer_type[i]->volume = gst_bin_get_by_name (GST_BIN (renderer_type[i]->pipeline), "volume");
|
renderer_type[i]->volume = gst_bin_get_by_name (GST_BIN (renderer_type[i]->pipeline), "volume");
|
||||||
switch (i) {
|
switch (i) {
|
||||||
@@ -369,12 +369,12 @@ void audio_renderer_destroy() {
|
|||||||
audio_renderer_stop();
|
audio_renderer_stop();
|
||||||
for (int i = 0; i < NFORMATS ; i++ ) {
|
for (int i = 0; i < NFORMATS ; i++ ) {
|
||||||
gst_object_unref (renderer_type[i]->bus);
|
gst_object_unref (renderer_type[i]->bus);
|
||||||
renderer_type[i]->bus = NULL;
|
renderer_type[i]->bus = NULL;
|
||||||
gst_object_unref (renderer_type[i]->volume);
|
gst_object_unref (renderer_type[i]->volume);
|
||||||
renderer_type[i]->volume = NULL;
|
renderer_type[i]->volume = NULL;
|
||||||
gst_object_unref (renderer_type[i]->appsrc);
|
gst_object_unref (renderer_type[i]->appsrc);
|
||||||
renderer_type[i]->appsrc = NULL;
|
renderer_type[i]->appsrc = NULL;
|
||||||
gst_object_unref (renderer_type[i]->pipeline);
|
gst_object_unref (renderer_type[i]->pipeline);
|
||||||
renderer_type[i]->pipeline = NULL;
|
renderer_type[i]->pipeline = NULL;
|
||||||
free(renderer_type[i]);
|
free(renderer_type[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,8 +211,8 @@ GstElement *make_video_sink(const char *videosink, const char *videosink_options
|
|||||||
pval++;
|
pval++;
|
||||||
const gchar *property_name = (const gchar *) token;
|
const gchar *property_name = (const gchar *) token;
|
||||||
const gchar *value = (const gchar *) pval;
|
const gchar *value = (const gchar *) pval;
|
||||||
g_print("playbin_videosink property: \"%s\" \"%s\"\n", property_name, value);
|
g_print("playbin_videosink property: \"%s\" \"%s\"\n", property_name, value);
|
||||||
gst_util_set_object_arg(G_OBJECT (video_sink), property_name, value);
|
gst_util_set_object_arg(G_OBJECT (video_sink), property_name, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(options);
|
free(options);
|
||||||
@@ -283,7 +283,7 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
|||||||
}
|
}
|
||||||
logger_log(logger, LOGGER_INFO, "Will use GStreamer playbin version %u to play HLS streamed video", playbin_version);
|
logger_log(logger, LOGGER_INFO, "Will use GStreamer playbin version %u to play HLS streamed video", playbin_version);
|
||||||
g_assert(renderer_type[i]->pipeline);
|
g_assert(renderer_type[i]->pipeline);
|
||||||
renderer_type[i]->codec = hls;
|
renderer_type[i]->codec = hls;
|
||||||
/* if we are not using an autovideosink, build a videosink based on the string "videosink" */
|
/* if we are not using an autovideosink, build a videosink based on the string "videosink" */
|
||||||
if (!auto_videosink) {
|
if (!auto_videosink) {
|
||||||
GstElement *playbin_videosink = make_video_sink(videosink, videosink_options);
|
GstElement *playbin_videosink = make_video_sink(videosink, videosink_options);
|
||||||
@@ -297,9 +297,9 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
|||||||
gint flags;
|
gint flags;
|
||||||
g_object_get(renderer_type[i]->pipeline, "flags", &flags, NULL);
|
g_object_get(renderer_type[i]->pipeline, "flags", &flags, NULL);
|
||||||
flags |= GST_PLAY_FLAG_DOWNLOAD;
|
flags |= GST_PLAY_FLAG_DOWNLOAD;
|
||||||
flags |= GST_PLAY_FLAG_BUFFERING; // set by default in playbin3, but not in playbin2; is it needed?
|
flags |= GST_PLAY_FLAG_BUFFERING; // set by default in playbin3, but not in playbin2; is it needed?
|
||||||
g_object_set(renderer_type[i]->pipeline, "flags", flags, NULL);
|
g_object_set(renderer_type[i]->pipeline, "flags", flags, NULL);
|
||||||
g_object_set (G_OBJECT (renderer_type[i]->pipeline), "uri", uri, NULL);
|
g_object_set (G_OBJECT (renderer_type[i]->pipeline), "uri", uri, NULL);
|
||||||
} else {
|
} else {
|
||||||
bool jpeg_pipeline = false;
|
bool jpeg_pipeline = false;
|
||||||
switch (i) {
|
switch (i) {
|
||||||
@@ -320,9 +320,9 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
|||||||
g_assert(0);
|
g_assert(0);
|
||||||
}
|
}
|
||||||
GString *launch = g_string_new("appsrc name=video_source ! ");
|
GString *launch = g_string_new("appsrc name=video_source ! ");
|
||||||
if (jpeg_pipeline) {
|
if (jpeg_pipeline) {
|
||||||
g_string_append(launch, "jpegdec ");
|
g_string_append(launch, "jpegdec ");
|
||||||
} else {
|
} else {
|
||||||
g_string_append(launch, "queue ! ");
|
g_string_append(launch, "queue ! ");
|
||||||
g_string_append(launch, parser);
|
g_string_append(launch, parser);
|
||||||
g_string_append(launch, " ! ");
|
g_string_append(launch, " ! ");
|
||||||
@@ -370,7 +370,7 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
|||||||
logger_log(logger, LOGGER_ERR, "GStreamer gst_parse_launch failed to create video pipeline %d\n"
|
logger_log(logger, LOGGER_ERR, "GStreamer gst_parse_launch failed to create video pipeline %d\n"
|
||||||
"*** error message from gst_parse_launch was:\n%s\n"
|
"*** error message from gst_parse_launch was:\n%s\n"
|
||||||
"launch string parsed was \n[%s]", i + 1, error->message, launch->str);
|
"launch string parsed was \n[%s]", i + 1, error->message, launch->str);
|
||||||
if (strstr(error->message, "no element")) {
|
if (strstr(error->message, "no element")) {
|
||||||
logger_log(logger, LOGGER_ERR, "This error usually means that a uxplay option was mistyped\n"
|
logger_log(logger, LOGGER_ERR, "This error usually means that a uxplay option was mistyped\n"
|
||||||
" or some requested part of GStreamer is not installed\n");
|
" or some requested part of GStreamer is not installed\n");
|
||||||
}
|
}
|
||||||
@@ -385,7 +385,7 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
|
|||||||
g_object_set(renderer_type[i]->appsrc, "caps", caps, "stream-type", 0, "is-live", TRUE, "format", GST_FORMAT_TIME, NULL);
|
g_object_set(renderer_type[i]->appsrc, "caps", caps, "stream-type", 0, "is-live", TRUE, "format", GST_FORMAT_TIME, NULL);
|
||||||
g_string_free(launch, TRUE);
|
g_string_free(launch, TRUE);
|
||||||
gst_caps_unref(caps);
|
gst_caps_unref(caps);
|
||||||
gst_object_unref(clock);
|
gst_object_unref(clock);
|
||||||
}
|
}
|
||||||
#ifdef X_DISPLAY_FIX
|
#ifdef X_DISPLAY_FIX
|
||||||
use_x11 = (strstr(videosink, "xvimagesink") || strstr(videosink, "ximagesink") || auto_videosink);
|
use_x11 = (strstr(videosink, "xvimagesink") || strstr(videosink, "ximagesink") || auto_videosink);
|
||||||
@@ -704,9 +704,9 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
g_print("GStreamer %s bus message %s %s %s %s\n", renderer_type[type]->codec,
|
g_print("GStreamer %s bus message %s %s %s %s\n", renderer_type[type]->codec,
|
||||||
GST_MESSAGE_SRC_NAME(message), GST_MESSAGE_TYPE_NAME(message), old_state_name, new_state_name);
|
GST_MESSAGE_SRC_NAME(message), GST_MESSAGE_TYPE_NAME(message), old_state_name, new_state_name);
|
||||||
}
|
}
|
||||||
if (name) {
|
if (name) {
|
||||||
g_free(name);
|
g_free(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* monitor hls video position until seek to hls_start_position is achieved */
|
/* monitor hls video position until seek to hls_start_position is achieved */
|
||||||
@@ -716,21 +716,21 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
if (!GST_CLOCK_TIME_IS_VALID(hls_duration)) {
|
if (!GST_CLOCK_TIME_IS_VALID(hls_duration)) {
|
||||||
gst_element_query_duration (renderer->pipeline, GST_FORMAT_TIME, &hls_duration);
|
gst_element_query_duration (renderer->pipeline, GST_FORMAT_TIME, &hls_duration);
|
||||||
}
|
}
|
||||||
gst_element_query_position (renderer_type[type]->pipeline, GST_FORMAT_TIME, &pos);
|
gst_element_query_position (renderer_type[type]->pipeline, GST_FORMAT_TIME, &pos);
|
||||||
//g_print("HLS position %" GST_TIME_FORMAT " requested_start_position %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " %s\n",
|
//g_print("HLS position %" GST_TIME_FORMAT " requested_start_position %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT " %s\n",
|
||||||
// GST_TIME_ARGS(pos), GST_TIME_ARGS(hls_requested_start_position), GST_TIME_ARGS(hls_duration),
|
// GST_TIME_ARGS(pos), GST_TIME_ARGS(hls_requested_start_position), GST_TIME_ARGS(hls_duration),
|
||||||
// (hls_seek_enabled ? "seek enabled" : "seek not enabled"));
|
// (hls_seek_enabled ? "seek enabled" : "seek not enabled"));
|
||||||
if (pos > hls_requested_start_position) {
|
if (pos > hls_requested_start_position) {
|
||||||
hls_requested_start_position = 0;
|
hls_requested_start_position = 0;
|
||||||
}
|
}
|
||||||
if ( hls_requested_start_position && pos < hls_requested_start_position && hls_seek_enabled) {
|
if ( hls_requested_start_position && pos < hls_requested_start_position && hls_seek_enabled) {
|
||||||
g_print("***************** seek to hls_requested_start_position %" GST_TIME_FORMAT "\n", GST_TIME_ARGS(hls_requested_start_position));
|
g_print("***************** seek to hls_requested_start_position %" GST_TIME_FORMAT "\n", GST_TIME_ARGS(hls_requested_start_position));
|
||||||
if (gst_element_seek_simple (renderer_type[type]->pipeline, GST_FORMAT_TIME,
|
if (gst_element_seek_simple (renderer_type[type]->pipeline, GST_FORMAT_TIME,
|
||||||
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, hls_requested_start_position)) {
|
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, hls_requested_start_position)) {
|
||||||
hls_requested_start_position = 0;
|
hls_requested_start_position = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (GST_MESSAGE_TYPE (message)) {
|
switch (GST_MESSAGE_TYPE (message)) {
|
||||||
@@ -742,8 +742,8 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
gint percent = -1;
|
gint percent = -1;
|
||||||
gst_message_parse_buffering(message, &percent);
|
gst_message_parse_buffering(message, &percent);
|
||||||
hls_buffer_empty = TRUE;
|
hls_buffer_empty = TRUE;
|
||||||
hls_buffer_full = FALSE;
|
hls_buffer_full = FALSE;
|
||||||
if (percent > 0) {
|
if (percent > 0) {
|
||||||
hls_buffer_empty = FALSE;
|
hls_buffer_empty = FALSE;
|
||||||
renderer_type[type]->buffering_level = percent;
|
renderer_type[type]->buffering_level = percent;
|
||||||
logger_log(logger, LOGGER_DEBUG, "Buffering :%d percent done", percent);
|
logger_log(logger, LOGGER_DEBUG, "Buffering :%d percent done", percent);
|
||||||
@@ -772,11 +772,11 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
"*** to select a videosink of your choice (see \"man uxplay\").\n\n"
|
"*** to select a videosink of your choice (see \"man uxplay\").\n\n"
|
||||||
"*** Raspberry Pi models 4B and earlier using Video4Linux2 may need \"-bt709\" uxplay option");
|
"*** Raspberry Pi models 4B and earlier using Video4Linux2 may need \"-bt709\" uxplay option");
|
||||||
}
|
}
|
||||||
g_error_free (err);
|
g_error_free (err);
|
||||||
g_free (debug);
|
g_free (debug);
|
||||||
if (renderer_type[type]->appsrc) {
|
if (renderer_type[type]->appsrc) {
|
||||||
gst_app_src_end_of_stream (GST_APP_SRC(renderer_type[type]->appsrc));
|
gst_app_src_end_of_stream (GST_APP_SRC(renderer_type[type]->appsrc));
|
||||||
}
|
}
|
||||||
gst_bus_set_flushing(bus, TRUE);
|
gst_bus_set_flushing(bus, TRUE);
|
||||||
gst_element_set_state (renderer_type[type]->pipeline, GST_STATE_READY);
|
gst_element_set_state (renderer_type[type]->pipeline, GST_STATE_READY);
|
||||||
renderer_type[type]->terminate = TRUE;
|
renderer_type[type]->terminate = TRUE;
|
||||||
@@ -789,7 +789,7 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
if (hls_video) {
|
if (hls_video) {
|
||||||
gst_bus_set_flushing(bus, TRUE);
|
gst_bus_set_flushing(bus, TRUE);
|
||||||
gst_element_set_state (renderer_type[type]->pipeline, GST_STATE_READY);
|
gst_element_set_state (renderer_type[type]->pipeline, GST_STATE_READY);
|
||||||
renderer_type[type]->terminate = TRUE;
|
renderer_type[type]->terminate = TRUE;
|
||||||
g_main_loop_quit( (GMainLoop *) loop);
|
g_main_loop_quit( (GMainLoop *) loop);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -824,14 +824,14 @@ static gboolean gstreamer_video_pipeline_bus_callback(GstBus *bus, GstMessage *m
|
|||||||
char *sink = strstr(GST_MESSAGE_SRC_NAME(message), "-actual-sink-");
|
char *sink = strstr(GST_MESSAGE_SRC_NAME(message), "-actual-sink-");
|
||||||
if (sink) {
|
if (sink) {
|
||||||
sink += strlen("-actual-sink-");
|
sink += strlen("-actual-sink-");
|
||||||
if (strstr(GST_MESSAGE_SRC_NAME(message), renderer_type[type]->codec)) {
|
if (strstr(GST_MESSAGE_SRC_NAME(message), renderer_type[type]->codec)) {
|
||||||
logger_log(logger, LOGGER_DEBUG, "GStreamer: automatically-selected videosink"
|
logger_log(logger, LOGGER_DEBUG, "GStreamer: automatically-selected videosink"
|
||||||
" (renderer %d: %s) is \"%ssink\"", renderer_type[type]->id + 1,
|
" (renderer %d: %s) is \"%ssink\"", renderer_type[type]->id + 1,
|
||||||
renderer_type[type]->codec, sink);
|
renderer_type[type]->codec, sink);
|
||||||
#ifdef X_DISPLAY_FIX
|
#ifdef X_DISPLAY_FIX
|
||||||
renderer_type[type]->use_x11 = (strstr(sink, "ximage") || strstr(sink, "xvimage"));
|
renderer_type[type]->use_x11 = (strstr(sink, "ximage") || strstr(sink, "xvimage"));
|
||||||
#endif
|
#endif
|
||||||
renderer_type[type]->autovideo = false;
|
renderer_type[type]->autovideo = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -889,7 +889,7 @@ int video_renderer_choose_codec (bool video_is_jpeg, bool video_is_h265) {
|
|||||||
if (video_is_h265) {
|
if (video_is_h265) {
|
||||||
logger_log(logger, LOGGER_ERR, "video is h265 but the -h265 option was not used");
|
logger_log(logger, LOGGER_ERR, "video is h265 but the -h265 option was not used");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
renderer_used = renderer_type[1];
|
renderer_used = renderer_type[1];
|
||||||
} else {
|
} else {
|
||||||
renderer_used = video_is_h265 ? renderer_type[2] : renderer_type[1];
|
renderer_used = video_is_h265 ? renderer_type[2] : renderer_type[1];
|
||||||
@@ -906,7 +906,7 @@ int video_renderer_choose_codec (bool video_is_jpeg, bool video_is_h265) {
|
|||||||
GstState old_state, new_state;
|
GstState old_state, new_state;
|
||||||
if (gst_element_get_state(renderer->pipeline, &old_state, &new_state, 100 * GST_MSECOND) == GST_STATE_CHANGE_FAILURE) {
|
if (gst_element_get_state(renderer->pipeline, &old_state, &new_state, 100 * GST_MSECOND) == GST_STATE_CHANGE_FAILURE) {
|
||||||
g_error("video pipeline failed to go into playing state");
|
g_error("video pipeline failed to go into playing state");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
logger_log(logger, LOGGER_DEBUG, "video_pipeline state change from %s to %s\n",
|
logger_log(logger, LOGGER_DEBUG, "video_pipeline state change from %s to %s\n",
|
||||||
gst_element_state_get_name (old_state),gst_element_state_get_name (new_state));
|
gst_element_state_get_name (old_state),gst_element_state_get_name (new_state));
|
||||||
@@ -932,12 +932,12 @@ unsigned int video_reset_callback(void * loop) {
|
|||||||
if (video_terminate) {
|
if (video_terminate) {
|
||||||
video_terminate = false;
|
video_terminate = false;
|
||||||
if (renderer->appsrc) {
|
if (renderer->appsrc) {
|
||||||
gst_app_src_end_of_stream (GST_APP_SRC(renderer->appsrc));
|
gst_app_src_end_of_stream (GST_APP_SRC(renderer->appsrc));
|
||||||
}
|
}
|
||||||
gboolean flushing = TRUE;
|
gboolean flushing = TRUE;
|
||||||
gst_bus_set_flushing(renderer->bus, flushing);
|
gst_bus_set_flushing(renderer->bus, flushing);
|
||||||
gst_element_set_state (renderer->pipeline, GST_STATE_NULL);
|
gst_element_set_state (renderer->pipeline, GST_STATE_NULL);
|
||||||
g_main_loop_quit( (GMainLoop *) loop);
|
g_main_loop_quit( (GMainLoop *) loop);
|
||||||
}
|
}
|
||||||
return (unsigned int) TRUE;
|
return (unsigned int) TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user