@@ -82,22 +82,22 @@ void FileProperties::extractStreamProperties( IProgress& progress, const EAnalys
82
82
83
83
// once the streams vectors are filled, add their references the base streams vector
84
84
for ( size_t streamIndex = 0 ; streamIndex < _videoStreams.size (); ++streamIndex )
85
- _streams. push_back ( &_videoStreams.at ( streamIndex ) );
85
+ _streams[ _videoStreams. at ( streamIndex ). getStreamIndex () ] = &_videoStreams.at ( streamIndex );
86
86
87
87
for ( size_t streamIndex = 0 ; streamIndex < _audioStreams.size (); ++ streamIndex )
88
- _streams. push_back ( &_audioStreams.at (streamIndex) );
88
+ _streams[ _audioStreams. at (streamIndex). getStreamIndex () ] = &_audioStreams.at (streamIndex);
89
89
90
90
for ( size_t streamIndex = 0 ; streamIndex < _dataStreams.size (); ++ streamIndex )
91
- _streams. push_back ( &_dataStreams.at (streamIndex) );
91
+ _streams[ _dataStreams. at (streamIndex). getStreamIndex () ] = &_dataStreams.at (streamIndex);
92
92
93
93
for ( size_t streamIndex = 0 ; streamIndex < _subtitleStreams.size (); ++ streamIndex )
94
- _streams. push_back ( &_subtitleStreams.at (streamIndex) );
94
+ _streams[ _subtitleStreams. at (streamIndex). getStreamIndex () ] = &_subtitleStreams.at (streamIndex);
95
95
96
96
for ( size_t streamIndex = 0 ; streamIndex < _attachementStreams.size (); ++ streamIndex )
97
- _streams. push_back ( &_attachementStreams.at (streamIndex) );
97
+ _streams[ _attachementStreams. at (streamIndex). getStreamIndex () ] = &_attachementStreams.at (streamIndex);
98
98
99
99
for ( size_t streamIndex = 0 ; streamIndex < _unknownStreams.size (); ++ streamIndex )
100
- _streams. push_back ( &_unknownStreams.at (streamIndex) );
100
+ _streams[ _unknownStreams. at (streamIndex). getStreamIndex () ] = &_unknownStreams.at (streamIndex);
101
101
102
102
// if the analysis level has decoded some streams parts, return at the beginning
103
103
if ( level > eAnalyseLevelHeader )
@@ -162,11 +162,9 @@ size_t FileProperties::getPacketSize() const
162
162
163
163
const avtranscoder::StreamProperties& FileProperties::getStreamPropertiesWithIndex ( const size_t streamIndex ) const
164
164
{
165
- for ( std::vector< StreamProperties* >::const_iterator it = _streams.begin (); it != _streams.end (); ++it )
166
- {
167
- if ( (*it)->getStreamIndex () == streamIndex )
168
- return *(*it);
169
- }
165
+ avtranscoder::StreamProperties* properties = _streams.find ( streamIndex )->second ;
166
+ if ( properties )
167
+ return *properties;
170
168
std::stringstream os;
171
169
os << " No stream properties correspond to stream at index " ;
172
170
os << streamIndex;
0 commit comments