mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
Allow switching the timecode index at runtime in the source element
This commit is contained in:
parent
5fa487a449
commit
0df1d6dad9
2 changed files with 24 additions and 22 deletions
|
@ -1339,26 +1339,8 @@ static gboolean gst_aja_src_configure(GstAjaSrc *self) {
|
|||
(int)reference_source);
|
||||
|
||||
self->device->device->SetReference(reference_source);
|
||||
|
||||
switch (self->timecode_index) {
|
||||
case GST_AJA_TIMECODE_INDEX_VITC:
|
||||
self->tc_index = ::NTV2InputSourceToTimecodeIndex(input_source, true);
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_ATC_LTC:
|
||||
self->tc_index = ::NTV2InputSourceToTimecodeIndex(input_source, false);
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_LTC1:
|
||||
self->tc_index = ::NTV2_TCINDEX_LTC1;
|
||||
self->device->device->SetLTCInputEnable(true);
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_LTC2:
|
||||
self->tc_index = ::NTV2_TCINDEX_LTC2;
|
||||
self->device->device->SetLTCInputEnable(true);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
self->device->device->SetLTCInputEnable(true);
|
||||
self->device->device->SetRP188SourceFilter(self->channel, 0xff);
|
||||
|
||||
guint video_buffer_size = ::GetVideoActiveSize(
|
||||
self->video_format, ::NTV2_FBF_10BIT_YCBCR, self->vanc_mode);
|
||||
|
@ -2366,9 +2348,30 @@ restart:
|
|||
gst_buffer_set_size(anc_buffer2,
|
||||
transfer.GetCapturedAncByteCount(true));
|
||||
|
||||
NTV2TCIndex tc_index;
|
||||
switch (self->timecode_index) {
|
||||
case GST_AJA_TIMECODE_INDEX_VITC:
|
||||
tc_index = ::NTV2InputSourceToTimecodeIndex(
|
||||
self->configured_input_source, true);
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_ATC_LTC:
|
||||
tc_index = ::NTV2InputSourceToTimecodeIndex(
|
||||
self->configured_input_source, false);
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_LTC1:
|
||||
tc_index = ::NTV2_TCINDEX_LTC1;
|
||||
break;
|
||||
case GST_AJA_TIMECODE_INDEX_LTC2:
|
||||
tc_index = ::NTV2_TCINDEX_LTC2;
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
NTV2_RP188 time_code;
|
||||
transfer.acTransferStatus.acFrameStamp.GetInputTimeCode(time_code,
|
||||
self->tc_index);
|
||||
tc_index);
|
||||
|
||||
gint64 frame_time = transfer.acTransferStatus.acFrameStamp.acFrameTime;
|
||||
gint64 now_sys = g_get_real_time();
|
||||
|
|
|
@ -81,7 +81,6 @@ struct _GstAjaSrc {
|
|||
bool quad_mode;
|
||||
NTV2VANCMode vanc_mode;
|
||||
NTV2InputSource configured_input_source;
|
||||
NTV2TCIndex tc_index;
|
||||
|
||||
GstVideoInfo configured_info; // Based on properties
|
||||
GstVideoInfo current_info; // Based on properties + stream metadata
|
||||
|
|
Loading…
Reference in a new issue