34 "key",
"MultiChannelAudioFileReader",
35 "category",
"Audio File I/O",
36 "description",
"MultiChannelAudioFileReader",
39 static FactoryRegistrator<ProcessingFactory, MultiChannelAudioFileReader>
reg =
metadata;
44 : mTimeOutput(
"Current Time Position", this)
45 , mNativeStream(
NULL )
51 : mTimeOutput(
"Current Time Position", this)
52 , mNativeStream(
NULL )
66 return "MultiChannelAudioFileReader";
82 typedef std::vector<Audio> OutputVec;
88 bool allOutputsSameSize =
true;
100 sizeTmp = outputs[0].GetSize();
102 for( OutputVec::iterator i = outputs.begin();
103 i!= outputs.end(); i++ )
105 allOutputsSameSize &= ( sizeTmp == i->GetSize() );
109 CLAM_ASSERT( allOutputsSameSize,
"Outputs sizes differ!" );
113 for ( OutputVec::iterator i = outputs.begin(); i != outputs.end(); i++ )
133 for ( OutputVec::iterator i = outputs.begin();
134 i != outputs.end(); i++ )
157 bool allOutputsSameSize =
true;
170 for ( OutputVector::iterator i =
_outputs.begin();
173 outRefs.push_back( &((*i)->GetAudio()) );
176 sizeTmp = outRefs[0]->GetSize();
178 for( OutRefsVector::iterator i = outRefs.begin();
179 i!= outRefs.end(); i++ )
181 allOutputsSameSize = ( sizeTmp == (*i)->GetSize() );
185 CLAM_ASSERT( allOutputsSameSize,
"Outputs sizes differ!" );
190 for ( OutRefsVector::iterator i = outRefs.begin();
191 i != outRefs.end(); i++ )
216 for ( OutRefsVector::iterator i = outRefs.begin();
217 i != outRefs.end(); i++ )
231 for ( OutputVector::iterator i =
_outputs.begin();
244 if ( !
mConfig.HasSourceFile() )
250 if (
mConfig.GetSourceFile() ==
"" )
263 if ( !
mConfig.HasSelectedChannels() )
282 selectedChannels.
GetPtr(),
283 selectedChannels.
GetPtr()+selectedChannels.
Size());
288 "The configuration asked for more channels than the audio file has.");
298 "Invalid channel index in configuration!");
305 std::stringstream sstr;
348 const std::string nameBase =
"Channel #";
349 for (
unsigned i=
_outputs.size(); i<nPorts; i++)
351 std::ostringstream nameStream;
352 nameStream << nameBase << i;
356 for (
unsigned i=nPorts; i<
_outputs.size(); i++)