Hi,

if input signal to decklink board is differ from specified at board initialization or changed later, decklink could inform it by VideoInputFormatChanged callback. but it still does not give a proper frame at VideoInputFrameArrived

provided patch stop/start decklink board with updated profile.

--
________________________________________
Maksym Veremeyenko
>From a2a7c254df003a7082d395626dac904a647cd326 Mon Sep 17 00:00:00 2001
From: Maksym Veremeyenko <ve...@m1.tv>
Date: Wed, 3 Sep 2014 19:11:50 +0300
Subject: [PATCH] restart decklink if input signal changed mode

---
 src/modules/decklink/producer_decklink.cpp |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/modules/decklink/producer_decklink.cpp b/src/modules/decklink/producer_decklink.cpp
index 04510f4..e194b38 100644
--- a/src/modules/decklink/producer_decklink.cpp
+++ b/src/modules/decklink/producer_decklink.cpp
@@ -79,6 +79,7 @@ private:
 	}
 
 public:
+	mlt_profile      m_new_input;
 
 	void setProducer( mlt_producer producer )
 		{ m_producer = producer; }
@@ -91,6 +92,7 @@ public:
 		m_producer = NULL;
 		m_decklink = NULL;
 		m_decklinkInput = NULL;
+		m_new_input = NULL;
 	}
 
 	virtual ~DeckLinkProducer()
@@ -606,6 +608,7 @@ public:
 				( mode->GetFlags() & bmdDisplayModeColorspaceRec709 ) ? 709 : 601;
 			mlt_log_verbose( getProducer(), "colorspace changed %d\n", profile->colorspace );
 		}
+		m_new_input = profile;
 		return S_OK;
 	}
 };
@@ -627,6 +630,13 @@ static int get_frame( mlt_producer producer, mlt_frame_ptr frame, int index )
 	mlt_position end = mlt_producer_get_playtime( producer );
 	end = ( mlt_producer_get_length( producer ) < end ? mlt_producer_get_length( producer ) : end ) - 1;
 
+	if ( decklink && decklink->m_new_input )
+	{
+		decklink->m_new_input = NULL;
+		decklink->stop();
+		decklink->start( decklink->m_new_input );
+	}
+
 	// Re-open if needed
 	if ( !decklink && pos < end )
 	{
-- 
1.7.7.6

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Mlt-devel mailing list
Mlt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlt-devel

Reply via email to