decklink: Auto-detect 10-bit YUV
authorEric Knapp <emkman99@gmail.com>
Mon, 15 Aug 2022 15:23:56 +0000 (11:23 -0400)
committerEric Knapp <emkman99@gmail.com>
Wed, 17 Aug 2022 17:29:55 +0000 (13:29 -0400)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2892>

subprojects/gst-plugins-bad/sys/decklink/gstdecklink.cpp

index e3943e8..b8e89ac 100644 (file)
@@ -1090,17 +1090,20 @@ public:
       VideoInputFormatChanged (BMDVideoInputFormatChangedEvents,
       IDeckLinkDisplayMode * mode, BMDDetectedVideoInputFormatFlags formatFlags)
   {
-    BMDPixelFormat pixelFormat;
+    /* use the user-set format, defaulting to 8BitYUV */
+    BMDPixelFormat pixelFormat = m_input->format;
 
     GST_INFO ("Video input format changed");
 
-    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;
+    if (m_input->format == bmdFormat8BitYUV) {
+      /* user-set format was auto or 8BitYUV */
+      if (formatFlags & bmdDetectedVideoInputRGB444) {
+        pixelFormat = bmdFormat8BitARGB;
+      } else if (formatFlags & bmdDetectedVideoInputYCbCr422) {
+        if (formatFlags & bmdDetectedVideoInput10BitDepth) {
+          pixelFormat = bmdFormat10BitYUV;
+        }
+      }
     }
 
     g_mutex_lock (&m_input->lock);