diff options
author | Joshua M. Doe <oss@nvl.army.mil> | 2018-08-16 11:30:08 -0400 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2019-05-02 09:18:10 +0100 |
commit | 238e9cabee3277f475a8ac3573f0f205c1a582c8 (patch) | |
tree | a5f7222b7a633bf2574444d5fe051b4135abd0ff | |
parent | e87fb02c151aaf6da0a3a97928c531240e8800a5 (diff) | |
download | gstreamer-plugins-bad-238e9cabee3277f475a8ac3573f0f205c1a582c8.tar.gz |
decklinkvideosrc: respect pixel format property even if mode is set to auto
Before this patch, if mode=auto and video-format!=auto, video-format would
always be ignored, and get set to 8bit-yuv, or if detected to be RGB444, then
it would be set to 8bit-argb. This change respects video-format if it is set
to 10bit-yuv (v210) or 8bit-bgra, even when mode=auto.
Closes #772
-rw-r--r-- | sys/decklink/gstdecklink.cpp | 10 | ||||
-rw-r--r-- | sys/decklink/gstdecklinkvideosrc.cpp | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp index fb7276a8c..168f2ab9e 100644 --- a/sys/decklink/gstdecklink.cpp +++ b/sys/decklink/gstdecklink.cpp @@ -777,12 +777,18 @@ public: VideoInputFormatChanged (BMDVideoInputFormatChangedEvents, IDeckLinkDisplayMode * mode, BMDDetectedVideoInputFormatFlags formatFlags) { - BMDPixelFormat pixelFormat = bmdFormat8BitYUV; + BMDPixelFormat pixelFormat; GST_INFO ("Video input format changed"); - if (formatFlags & bmdDetectedVideoInputRGB444) + if ((formatFlags & bmdDetectedVideoInputRGB444) + && m_input->format == bmdFormat8BitYUV) { + /* user-set format was auto or 8BitYUV, change to RGB */ pixelFormat = bmdFormat8BitARGB; + } else { + /* use the user-set format, defaulting to 8BitYUV */ + pixelFormat = m_input->format; + } g_mutex_lock (&m_input->lock); m_input->input->PauseStreams (); diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp index 5e97ac176..0b00d3f95 100644 --- a/sys/decklink/gstdecklinkvideosrc.cpp +++ b/sys/decklink/gstdecklinkvideosrc.cpp @@ -1008,6 +1008,7 @@ gst_decklink_video_src_open (GstDecklinkVideoSrc * self) g_assert (mode != NULL); g_mutex_lock (&self->input->lock); self->input->mode = mode; + self->input->format = self->caps_format; self->input->got_video_frame = gst_decklink_video_src_got_frame; self->input->start_streams = gst_decklink_video_src_start_streams; g_mutex_unlock (&self->input->lock); |