31 static std::shared_ptr<PcmAudioSource>
Create(
36 rtc::scoped_refptr<webrtc::AudioSourceInterface> GetSource()
override;
42 class PcmInternalAudioSource :
public webrtc::AudioSourceInterface {
45 ~PcmInternalAudioSource()
override =
default;
48 webrtc::MediaSourceInterface::SourceState state()
const override;
49 bool remote()
const override {
return false; };
50 void RegisterObserver(webrtc::ObserverInterface* observer)
override;
51 void UnregisterObserver(webrtc::ObserverInterface* observer)
override;
54 void AddSink(webrtc::AudioTrackSinkInterface* sink)
override;
55 void RemoveSink(webrtc::AudioTrackSinkInterface* sink)
override;
57 const cricket::AudioOptions options()
const override {
return cricket::AudioOptions{}; }
59 bool PushPcmData(
const int16_t* buffer);
62 mutable std::mutex observer_mtx_;
63 mutable std::mutex sinks_mtx_;
64 std::vector<webrtc::ObserverInterface*> ms_observers_;
65 std::vector<webrtc::AudioTrackSinkInterface*> sinks_;
70 rtc::scoped_refptr<PcmInternalAudioSource> internal_source_;