Index: /trunk/libffado/src/bebob/bebob_avdevice.cpp =================================================================== --- /trunk/libffado/src/bebob/bebob_avdevice.cpp (revision 530) +++ /trunk/libffado/src/bebob/bebob_avdevice.cpp (revision 537) @@ -62,4 +62,5 @@ {0x000f1b, 0x00010064, "ESI", "Quatafire 610"}, + {0x00130e, 0x00000000, "Focusrite", "Saffire (LE)"}, {0x00130e, 0x00000003, "Focusrite", "Saffire Pro26IO"}, {0x00130e, 0x00000006, "Focusrite", "Saffire Pro10IO"}, @@ -440,7 +441,19 @@ } - AvPlugVector digitalPCRInputPlugs = getPlugsByType( m_externalPlugs, + AvPlugVector digitalExternalInputPlugs = getPlugsByType( m_externalPlugs, AvPlug::eAPD_Input, AvPlug::eAPT_Digital ); + if ( !digitalExternalInputPlugs.size() ) { + debugOutput( DEBUG_LEVEL_VERBOSE, "No external digital input plugs found\n" ); + + } + + AvPlugVector syncExternalInputPlugs = getPlugsByType( m_externalPlugs, + AvPlug::eAPD_Input, + AvPlug::eAPT_Sync ); + if ( !syncExternalInputPlugs.size() ) { + debugOutput( DEBUG_LEVEL_VERBOSE, "No external sync input plugs found\n" ); + + } AvPlugVector syncMSUInputPlugs = m_pPlugManager->getPlugsByType( @@ -476,6 +489,8 @@ debugOutput( DEBUG_LEVEL_VERBOSE, "PCR Iso Output Plugs:\n" ); showAvPlugs( isoPCROutputPlugs ); - debugOutput( DEBUG_LEVEL_VERBOSE, "PCR digital Input Plugs:\n" ); - showAvPlugs( digitalPCRInputPlugs ); + debugOutput( DEBUG_LEVEL_VERBOSE, "External digital Input Plugs:\n" ); + showAvPlugs( digitalExternalInputPlugs ); + debugOutput( DEBUG_LEVEL_VERBOSE, "External sync Input Plugs:\n" ); + showAvPlugs( syncExternalInputPlugs ); debugOutput( DEBUG_LEVEL_VERBOSE, "MSU Sync Input Plugs:\n" ); showAvPlugs( syncMSUInputPlugs ); @@ -507,7 +522,13 @@ "Internal (CSP)" ); - // Check all external PCR digital input to MSU input connections + // Check all external digital input to MSU input connections // -> SPDIF/ADAT sync - checkSyncConnectionsAndAddToList( digitalPCRInputPlugs, + checkSyncConnectionsAndAddToList( digitalExternalInputPlugs, + syncMSUInputPlugs, + "Digital Input Sync" ); + + // Check all external sync input to MSU input connections + // -> SPDIF/ADAT sync + checkSyncConnectionsAndAddToList( syncExternalInputPlugs, syncMSUInputPlugs, "Digital Input Sync" ); @@ -1161,5 +1182,5 @@ return false; } - + if (!addPlugToProcessor(*outputPlug,p, Streaming::Port::E_Capture)) { @@ -1282,4 +1303,15 @@ case ExtendedPlugInfoClusterInfoSpecificData::ePT_MADI: case ExtendedPlugInfoClusterInfoSpecificData::ePT_Digital: + p=new Streaming::AmdtpAudioPort( + portname.str(), + direction, + // \todo: streaming backend expects indexing starting from 0 + // but bebob reports it starting from 1. Decide where + // and how to handle this (pp: here) + channelInfo->m_streamPosition - 1, + channelInfo->m_location - 1, + Streaming::AmdtpPortInfo::E_MBLA + ); + break; case ExtendedPlugInfoClusterInfoSpecificData::ePT_NoType: default: