]> git.sesse.net Git - kdenlive/blobdiff - src/blackmagic/capture.cpp
no ";" after Q_UNUSED
[kdenlive] / src / blackmagic / capture.cpp
index 505c0858e3a161e322fbf2b4332f70267c0b532e..e491215ef2c20a2731867eb60efdda3247168937 100644 (file)
@@ -244,7 +244,7 @@ void    CDeckLinkGLWidget::resizeGL(int width, int height)
 
 HRESULT     CDeckLinkGLWidget::QueryInterface(REFIID iid, LPVOID *ppv)
 {
-    Q_UNUSED(iid);
+    Q_UNUSED(iid)
     *ppv = NULL;
     return E_NOINTERFACE;
 }
@@ -331,13 +331,18 @@ void DeckLinkCaptureDelegate::slotProcessFrame()
     } else {
         QImage image(videoFrame->GetWidth(), videoFrame->GetHeight(), QImage::Format_ARGB32_Premultiplied);
         //convert from uyvy422 to rgba
-        CaptureHandler::yuv2rgb((uchar *)frameBytes, (uchar *)image.bits(), videoFrame->GetWidth(), videoFrame->GetHeight());
+        CaptureHandler::uyvy2rgb((uchar *)frameBytes, (uchar *)image.bits(), videoFrame->GetWidth(), videoFrame->GetHeight());
         image.save(capturePath);
         emit frameSaved(capturePath);
     }
     videoFrame->Release();
 }
 
+void DeckLinkCaptureDelegate::setAnalyse(bool isOn)
+{
+    m_analyseFrame = isOn;
+}
+
 HRESULT DeckLinkCaptureDelegate::VideoInputFrameArrived(IDeckLinkVideoInputFrame* videoFrame, IDeckLinkAudioInputPacket* audioFrame)
 {
     IDeckLinkVideoFrame*                    rightEyeFrame = NULL;
@@ -383,9 +388,16 @@ HRESULT DeckLinkCaptureDelegate::VideoInputFrameArrived(IDeckLinkVideoInputFrame
                 doCaptureFrame.clear();
                 QtConcurrent::run(this, &DeckLinkCaptureDelegate::slotProcessFrame);
             }
+            if (m_analyseFrame) {
+               QImage image(videoFrame->GetWidth(), videoFrame->GetHeight(), QImage::Format_ARGB32_Premultiplied);
+               //convert from uyvy422 to rgba
+                videoFrame->GetBytes(&frameBytes);
+               CaptureHandler::uyvy2rgb((uchar *)frameBytes, (uchar *)image.bits(), videoFrame->GetWidth(), videoFrame->GetHeight());
+               emit gotFrame(image);
+           }
 
             if (videoOutputFile != -1) {
-                videoFrame->GetBytes(&frameBytes);
+                if (!m_analyseFrame) videoFrame->GetBytes(&frameBytes);
                 write(videoOutputFile, frameBytes, videoFrame->GetRowBytes() * videoFrame->GetHeight());
 
                 if (rightEyeFrame) {
@@ -413,8 +425,8 @@ HRESULT DeckLinkCaptureDelegate::VideoInputFrameArrived(IDeckLinkVideoInputFrame
 
 HRESULT DeckLinkCaptureDelegate::VideoInputFormatChanged(BMDVideoInputFormatChangedEvents events, IDeckLinkDisplayMode *mode, BMDDetectedVideoInputFormatFlags)
 {
-    Q_UNUSED(events);
-    Q_UNUSED(mode);
+    Q_UNUSED(events)
+    Q_UNUSED(mode)
     return S_OK;
 }
 
@@ -536,7 +548,9 @@ void BmdCaptureHandler::startPreview(int deviceId, int captureMode, bool audio)
     }
 
     delegate = new DeckLinkCaptureDelegate();
+    delegate->setAnalyse(m_analyseFrame);
     connect(delegate, SIGNAL(gotTimeCode(ulong)), this, SIGNAL(gotTimeCode(ulong)));
+    connect(delegate, SIGNAL(gotFrame(QImage)), this, SIGNAL(gotFrame(QImage)));
     connect(delegate, SIGNAL(gotMessage(const QString &)), this, SIGNAL(gotMessage(const QString &)));
     connect(delegate, SIGNAL(frameSaved(const QString)), this, SIGNAL(frameSaved(const QString)));
     deckLinkInput->SetCallback(delegate);
@@ -814,6 +828,10 @@ void BmdCaptureHandler::hideOverlay()
     if (previewView) previewView->hideOverlay();
 }
 
+void BmdCaptureHandler::setDevice(const QString , QString)
+{
+}
+
 void BmdCaptureHandler::hidePreview(bool hide)
 {
     if (previewView) previewView->setHidden(hide);