mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
minor updates in preparation for coding playlist removal/insertion
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#include <gst/gst.h>
|
||||
#include <gst/app/gstappsrc.h>
|
||||
#include "video_renderer.h"
|
||||
#include "../lib/raop.h"
|
||||
|
||||
#define SECOND_IN_NSECS 1000000000UL
|
||||
#define SECOND_IN_MICROSECS 1000000
|
||||
@@ -76,6 +77,7 @@ typedef enum {
|
||||
} GstPlayFlags;
|
||||
|
||||
#define NCODECS 3 /* renderers for h264,h265, and jpeg images */
|
||||
static raop_t * raop = NULL;
|
||||
|
||||
struct video_renderer_s {
|
||||
GstElement *appsrc, *pipeline;
|
||||
@@ -229,6 +231,7 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, video
|
||||
GstCaps *caps = NULL;
|
||||
bool rtp = (bool) strlen(rtp_pipeline);
|
||||
hls_video = (uri != NULL);
|
||||
raop = NULL;
|
||||
/* videosink choices that are auto */
|
||||
auto_videosink = (strstr(videosink, "autovideosink") || strstr(videosink, "fpsdisplaysink"));
|
||||
|
||||
@@ -310,7 +313,7 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, video
|
||||
flags |= GST_PLAY_FLAG_DOWNLOAD;
|
||||
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 (G_OBJECT (renderer_type[i]->pipeline), "uri", uri, NULL);
|
||||
//g_object_set (G_OBJECT (renderer_type[i]->pipeline), "uri", uri, NULL);
|
||||
} else {
|
||||
bool jpeg_pipeline = false;
|
||||
if (i == type_264) {
|
||||
@@ -472,10 +475,12 @@ void video_renderer_resume() {
|
||||
}
|
||||
}
|
||||
|
||||
void video_renderer_start() {
|
||||
void video_renderer_start( void * opaque, const char * uri) {
|
||||
GstState state;
|
||||
const gchar *state_name;
|
||||
if (hls_video) {
|
||||
raop = (raop_t *) opaque;
|
||||
g_object_set (G_OBJECT (renderer->pipeline), "uri", uri, NULL);
|
||||
gst_element_set_state (renderer->pipeline, GST_STATE_PAUSED);
|
||||
gst_element_get_state(renderer->pipeline, &state, NULL, 1000 * GST_MSECOND);
|
||||
state_name = gst_element_state_get_name(state);
|
||||
@@ -483,6 +488,7 @@ void video_renderer_start() {
|
||||
return;
|
||||
}
|
||||
/* when not hls, start both h264 and h265 pipelines; will shut down the "wrong" one when we know the codec */
|
||||
raop = NULL;
|
||||
for (int i = 0; i < n_renderers; i++) {
|
||||
gst_element_set_state (renderer_type[i]->pipeline, GST_STATE_PAUSED);
|
||||
gst_element_get_state(renderer_type[i]->pipeline, &state, NULL, 1000 * GST_MSECOND);
|
||||
|
||||
@@ -51,7 +51,7 @@ typedef struct video_renderer_s video_renderer_t;
|
||||
const char *decoder, const char *converter, const char *videosink, const char *videosink_options,
|
||||
bool initial_fullscreen, bool video_sync, bool h265_support, bool coverart_support,
|
||||
guint playbin_version, const char *uri);
|
||||
void video_renderer_start ();
|
||||
void video_renderer_start (void *raop, const char *uri);
|
||||
void video_renderer_stop ();
|
||||
void video_renderer_pause ();
|
||||
void video_renderer_seek(float position);
|
||||
|
||||
Reference in New Issue
Block a user