mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-12 09:15:29 +00:00
decklink: Fix-up last commit that was not meant to be pushed yet
This commit is contained in:
parent
8be08ee7fd
commit
fcea134ec4
2 changed files with 31 additions and 29 deletions
|
@ -749,19 +749,19 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element)
|
||||||
GstClockTime start_time;
|
GstClockTime start_time;
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
bool active;
|
bool active;
|
||||||
GstClock *clock;
|
|
||||||
|
|
||||||
clock = gst_element_get_clock (element);
|
|
||||||
if (!clock) {
|
|
||||||
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
|
|
||||||
("Scheduled playback supposed to start but we have no clock"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self->output->video_enabled && (!self->output->audiosink
|
if (self->output->video_enabled && (!self->output->audiosink
|
||||||
|| self->output->audio_enabled)
|
|| self->output->audio_enabled)
|
||||||
&& (GST_STATE (self) == GST_STATE_PLAYING
|
&& (GST_STATE (self) == GST_STATE_PLAYING
|
||||||
|| GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
|
|| GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
|
||||||
|
GstClock *clock = NULL;
|
||||||
|
|
||||||
|
clock = gst_element_get_clock (element);
|
||||||
|
if (!clock) {
|
||||||
|
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
|
||||||
|
("Scheduled playback supposed to start but we have no clock"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Need to unlock to get the clock time
|
// Need to unlock to get the clock time
|
||||||
g_mutex_unlock (&self->output->lock);
|
g_mutex_unlock (&self->output->lock);
|
||||||
|
|
||||||
|
@ -789,8 +789,10 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element)
|
||||||
|
|
||||||
g_mutex_lock (&self->output->lock);
|
g_mutex_lock (&self->output->lock);
|
||||||
// Check if someone else started in the meantime
|
// Check if someone else started in the meantime
|
||||||
if (self->output->started)
|
if (self->output->started) {
|
||||||
goto done;
|
gst_object_unref (clock);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
active = false;
|
active = false;
|
||||||
self->output->output->IsScheduledPlaybackRunning (&active);
|
self->output->output->IsScheduledPlaybackRunning (&active);
|
||||||
|
@ -803,7 +805,8 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element)
|
||||||
if (res != S_OK) {
|
if (res != S_OK) {
|
||||||
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
||||||
(NULL), ("Failed to stop scheduled playback: 0x%08x", res));
|
(NULL), ("Failed to stop scheduled playback: 0x%08x", res));
|
||||||
goto done;
|
gst_object_unref (clock);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -817,7 +820,8 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element)
|
||||||
if (res != S_OK) {
|
if (res != S_OK) {
|
||||||
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
||||||
(NULL), ("Failed to start scheduled playback: 0x%08x", res));
|
(NULL), ("Failed to start scheduled playback: 0x%08x", res));
|
||||||
goto done;
|
gst_object_unref (clock);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self->output->started = TRUE;
|
self->output->started = TRUE;
|
||||||
|
@ -832,12 +836,10 @@ gst_decklink_video_sink_start_scheduled_playback (GstElement * element)
|
||||||
gst_clock_get_internal_time (self->output->clock);
|
gst_clock_get_internal_time (self->output->clock);
|
||||||
self->external_base_time = gst_clock_get_internal_time (clock);
|
self->external_base_time = gst_clock_get_internal_time (clock);
|
||||||
g_mutex_lock (&self->output->lock);
|
g_mutex_lock (&self->output->lock);
|
||||||
|
gst_object_unref (clock);
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG_OBJECT (self, "Not starting scheduled playback yet");
|
GST_DEBUG_OBJECT (self, "Not starting scheduled playback yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
|
||||||
gst_object_unref (clock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstStateChangeReturn
|
static GstStateChangeReturn
|
||||||
|
@ -845,7 +847,7 @@ gst_decklink_video_sink_change_state (GstElement * element,
|
||||||
GstStateChange transition)
|
GstStateChange transition)
|
||||||
{
|
{
|
||||||
GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (element);
|
GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (element);
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
||||||
|
|
|
@ -812,26 +812,28 @@ gst_decklink_video_src_start_streams (GstElement * element)
|
||||||
{
|
{
|
||||||
GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
|
GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
|
||||||
HRESULT res;
|
HRESULT res;
|
||||||
GstClock *clock;
|
|
||||||
|
|
||||||
clock = gst_element_get_clock (element);
|
|
||||||
if (!clock) {
|
|
||||||
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
|
|
||||||
("Streams supposed to start but we have no clock"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self->input->video_enabled && (!self->input->audiosrc
|
if (self->input->video_enabled && (!self->input->audiosrc
|
||||||
|| self->input->audio_enabled)
|
|| self->input->audio_enabled)
|
||||||
&& (GST_STATE (self) == GST_STATE_PLAYING
|
&& (GST_STATE (self) == GST_STATE_PLAYING
|
||||||
|| GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
|
|| GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
|
||||||
|
GstClock *clock;
|
||||||
|
|
||||||
|
clock = gst_element_get_clock (element);
|
||||||
|
if (!clock) {
|
||||||
|
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
|
||||||
|
("Streams supposed to start but we have no clock"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (self, "Starting streams");
|
GST_DEBUG_OBJECT (self, "Starting streams");
|
||||||
|
|
||||||
res = self->input->input->StartStreams ();
|
res = self->input->input->StartStreams ();
|
||||||
if (res != S_OK) {
|
if (res != S_OK) {
|
||||||
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
GST_ELEMENT_ERROR (self, STREAM, FAILED,
|
||||||
(NULL), ("Failed to start streams: 0x%08x", res));
|
(NULL), ("Failed to start streams: 0x%08x", res));
|
||||||
goto done;
|
gst_object_unref (clock);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
self->input->started = TRUE;
|
self->input->started = TRUE;
|
||||||
|
@ -849,13 +851,11 @@ gst_decklink_video_src_start_streams (GstElement * element)
|
||||||
self->internal_base_time = gst_clock_get_internal_time (self->input->clock);
|
self->internal_base_time = gst_clock_get_internal_time (self->input->clock);
|
||||||
self->external_base_time = gst_clock_get_internal_time (clock);
|
self->external_base_time = gst_clock_get_internal_time (clock);
|
||||||
|
|
||||||
|
gst_object_unref (clock);
|
||||||
g_mutex_lock (&self->input->lock);
|
g_mutex_lock (&self->input->lock);
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG_OBJECT (self, "Not starting streams yet");
|
GST_DEBUG_OBJECT (self, "Not starting streams yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
|
||||||
gst_object_unref (clock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstStateChangeReturn
|
static GstStateChangeReturn
|
||||||
|
@ -863,7 +863,7 @@ gst_decklink_video_src_change_state (GstElement * element,
|
||||||
GstStateChange transition)
|
GstStateChange transition)
|
||||||
{
|
{
|
||||||
GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
|
GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
case GST_STATE_CHANGE_NULL_TO_READY:
|
case GST_STATE_CHANGE_NULL_TO_READY:
|
||||||
|
|
Loading…
Reference in a new issue