mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
cleanup in video_renderer.c
This commit is contained in:
@@ -472,7 +472,7 @@ void video_renderer_start() {
|
|||||||
gst_element_set_state (renderer_type[i]->pipeline, GST_STATE_PAUSED);
|
gst_element_set_state (renderer_type[i]->pipeline, GST_STATE_PAUSED);
|
||||||
gst_element_get_state(renderer_type[i]->pipeline, &state, NULL, 1000 * GST_MSECOND);
|
gst_element_get_state(renderer_type[i]->pipeline, &state, NULL, 1000 * GST_MSECOND);
|
||||||
state_name= gst_element_state_get_name(state);
|
state_name= gst_element_state_get_name(state);
|
||||||
logger_log(logger, LOGGER_DEBUG, "video renderer_start: renderer %d state %s", i, state_name);
|
logger_log(logger, LOGGER_DEBUG, "video renderer_start: renderer %d %p state %s", i, renderer_type[i], state_name);
|
||||||
}
|
}
|
||||||
renderer = NULL;
|
renderer = NULL;
|
||||||
first_packet = true;
|
first_packet = true;
|
||||||
@@ -537,6 +537,10 @@ uint64_t video_renderer_render_buffer(unsigned char* data, int *data_len, int *n
|
|||||||
logger_log(logger, LOGGER_INFO, "Begin streaming to GStreamer video pipeline");
|
logger_log(logger, LOGGER_INFO, "Begin streaming to GStreamer video pipeline");
|
||||||
first_packet = false;
|
first_packet = false;
|
||||||
}
|
}
|
||||||
|
if (!renderer || !(renderer->appsrc)) {
|
||||||
|
logger_log(logger, LOGGER_DEBUG, "*** no video renderer found");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
buffer = gst_buffer_new_allocate(NULL, *data_len, NULL);
|
buffer = gst_buffer_new_allocate(NULL, *data_len, NULL);
|
||||||
g_assert(buffer != NULL);
|
g_assert(buffer != NULL);
|
||||||
//g_print("video latency %8.6f\n", (double) latency / SECOND_IN_NSECS);
|
//g_print("video latency %8.6f\n", (double) latency / SECOND_IN_NSECS);
|
||||||
@@ -582,21 +586,23 @@ static void video_renderer_destroy_instance(video_renderer_t *renderer) {
|
|||||||
GstState state;
|
GstState state;
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret;
|
||||||
gst_element_get_state(renderer->pipeline, &state, NULL, 100 * GST_MSECOND);
|
gst_element_get_state(renderer->pipeline, &state, NULL, 100 * GST_MSECOND);
|
||||||
logger_log(logger, LOGGER_DEBUG,"pipeline state is %s", gst_element_state_get_name(state));
|
logger_log(logger, LOGGER_DEBUG,"pipeline state is %s", gst_element_state_get_name(state));
|
||||||
if (state != GST_STATE_NULL) {
|
if (state != GST_STATE_NULL) {
|
||||||
if (!hls_video) {
|
if (!hls_video) {
|
||||||
gst_app_src_end_of_stream (GST_APP_SRC(renderer->appsrc));
|
gst_app_src_end_of_stream (GST_APP_SRC(renderer->appsrc));
|
||||||
}
|
}
|
||||||
ret = gst_element_set_state (renderer->pipeline, GST_STATE_NULL);
|
ret = gst_element_set_state (renderer->pipeline, GST_STATE_NULL);
|
||||||
logger_log(logger, LOGGER_DEBUG,"pipeline_state_change_return: %s",
|
logger_log(logger, LOGGER_DEBUG,"pipeline_state_change_return: %s",
|
||||||
gst_element_state_change_return_get_name(ret));
|
gst_element_state_change_return_get_name(ret));
|
||||||
gst_element_get_state(renderer->pipeline, NULL, NULL, 1000 * GST_MSECOND);
|
gst_element_get_state(renderer->pipeline, &state, NULL, 1000 * GST_MSECOND);
|
||||||
|
logger_log(logger, LOGGER_DEBUG,"pipeline state is %s", gst_element_state_get_name(state));
|
||||||
|
}
|
||||||
|
if (renderer->appsrc) {
|
||||||
|
gst_object_unref (renderer->appsrc);
|
||||||
|
renderer->appsrc = NULL;
|
||||||
}
|
}
|
||||||
gst_object_unref(renderer->bus);
|
gst_object_unref(renderer->bus);
|
||||||
if (renderer->appsrc) {
|
gst_object_unref(renderer->pipeline);
|
||||||
gst_object_unref (renderer->appsrc);
|
|
||||||
}
|
|
||||||
gst_object_unref (renderer->pipeline);
|
|
||||||
#ifdef X_DISPLAY_FIX
|
#ifdef X_DISPLAY_FIX
|
||||||
if (renderer->gst_window) {
|
if (renderer->gst_window) {
|
||||||
free(renderer->gst_window);
|
free(renderer->gst_window);
|
||||||
@@ -605,6 +611,7 @@ static void video_renderer_destroy_instance(video_renderer_t *renderer) {
|
|||||||
#endif
|
#endif
|
||||||
free (renderer);
|
free (renderer);
|
||||||
renderer = NULL;
|
renderer = NULL;
|
||||||
|
logger_log(logger, LOGGER_DEBUG,"renderer destroyed\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -908,7 +915,7 @@ int video_renderer_choose_codec (bool video_is_jpeg, bool video_is_h265) {
|
|||||||
logger_log(logger, LOGGER_INFO, "*** video format is h265 high definition (HD/4K) video %dx%d", width, height);
|
logger_log(logger, LOGGER_INFO, "*** video format is h265 high definition (HD/4K) video %dx%d", width, height);
|
||||||
}
|
}
|
||||||
/* destroy unused renderers */
|
/* destroy unused renderers */
|
||||||
for (int i = 1; i < n_renderers; i++) {
|
for (int i = 0; i < n_renderers; i++) {
|
||||||
if (renderer_type[i] == renderer) {
|
if (renderer_type[i] == renderer) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2632,7 +2632,7 @@ int main (int argc, char *argv[]) {
|
|||||||
url.erase();
|
url.erase();
|
||||||
raop_remove_known_connections(raop);
|
raop_remove_known_connections(raop);
|
||||||
}
|
}
|
||||||
const char *uri = (url.empty() ? NULL : url.c_str());
|
const char *uri = (url.empty() ? NULL : url.c_str());
|
||||||
video_renderer_init(render_logger, server_name.c_str(), videoflip, video_parser.c_str(),
|
video_renderer_init(render_logger, server_name.c_str(), videoflip, video_parser.c_str(),
|
||||||
video_decoder.c_str(), video_converter.c_str(), videosink.c_str(),
|
video_decoder.c_str(), video_converter.c_str(), videosink.c_str(),
|
||||||
videosink_options.c_str(), fullscreen, video_sync, h265_support, playbin_version, uri);
|
videosink_options.c_str(), fullscreen, video_sync, h265_support, playbin_version, uri);
|
||||||
|
|||||||
Reference in New Issue
Block a user