/*
* Copyright 2011 The WebRTC project authors . All Rights Reserved .
*
* Use of this source code is governed by a BSD - style license
* that can be found in the LICENSE file in the root of the source
* tree . An additional intellectual property rights grant can be found
* in the file PATENTS . All contributing project authors may
* be found in the AUTHORS file in the root of the source tree .
* /
# ifndef PC_STREAM_COLLECTION_H_
# define PC_STREAM_COLLECTION_H_
# include < cstddef >
# include < string >
# include < utility >
# include < vector >
# include " api / make_ref_counted . h "
# include " api / media_stream_interface . h "
# include " api / peer_connection_interface . h "
# include " api / scoped_refptr . h "
namespace webrtc {
// Implementation of StreamCollection.
class StreamCollection : public StreamCollectionInterface {
public :
static scoped_refptr < StreamCollection > Create ( ) {
return make_ref_counted < StreamCollection > ( ) ;
}
static scoped_refptr < StreamCollection > Create ( StreamCollection * streams ) {
return make_ref_counted < StreamCollection > ( streams ) ;
}
size_t count ( ) override { return media_streams_ . size ( ) ; }
MediaStreamInterface * at ( size_t index ) override {
return media_streams_ . at ( index ) . get ( ) ;
}
MediaStreamInterface * find ( const std : : string & id ) override {
for ( StreamVector : : iterator it = media_streams_ . begin ( ) ;
it ! = media_streams_ . end ( ) ; + + it ) {
if ( ( * it ) - > id ( ) . compare ( id ) = = 0 ) {
return ( * it ) . get ( ) ;
}
}
return NULL ;
}
MediaStreamTrackInterface * FindAudioTrack ( const std : : string & id ) override {
for ( size_t i = 0 ; i < media_streams_ . size ( ) ; + + i ) {
MediaStreamTrackInterface * track =
media_streams_ [ i ] - > FindAudioTrack ( id ) . get ( ) ;
if ( track ) {
return track ;
}
}
return NULL ;
}
MediaStreamTrackInterface * FindVideoTrack ( const std : : string & id ) override {
for ( size_t i = 0 ; i < media_streams_ . size ( ) ; + + i ) {
MediaStreamTrackInterface * track =
media_streams_ [ i ] - > FindVideoTrack ( id ) . get ( ) ;
if ( track ) {
return track ;
}
}
return NULL ;
}
void AddStream ( scoped_refptr < MediaStreamInterface > stream ) {
for ( StreamVector : : iterator it = media_streams_ . begin ( ) ;
it ! = media_streams_ . end ( ) ; + + it ) {
if ( ( * it ) - > id ( ) . compare ( stream - > id ( ) ) = = 0 )
return ;
}
media_streams_ . push_back ( std : : move ( stream ) ) ;
}
void RemoveStream ( MediaStreamInterface * remove_stream ) {
for ( StreamVector : : iterator it = media_streams_ . begin ( ) ;
it ! = media_streams_ . end ( ) ; + + it ) {
if ( ( * it ) - > id ( ) . compare ( remove_stream - > id ( ) ) = = 0 ) {
media_streams_ . erase ( it ) ;
break ;
}
}
}
protected :
StreamCollection ( ) { }
explicit StreamCollection ( StreamCollection * original )
: media_streams_ ( original - > media_streams_ ) { }
typedef std : : vector < scoped_refptr < MediaStreamInterface > > StreamVector ;
StreamVector media_streams_ ;
} ;
} // namespace webrtc
# endif // PC_STREAM_COLLECTION_H_
Messung V0.5 in Prozent C=94 H=96 G=94
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.6Bemerkung:
¤
*Bot Zugriff