27 static std::shared_ptr<PcmAudioSource>
Create(
32 rtc::scoped_refptr<webrtc::AudioSourceInterface> GetSource()
override;
38 class PcmInternalAudioSource :
public webrtc::AudioSourceInterface {
41 ~PcmInternalAudioSource()
override =
default;
44 webrtc::MediaSourceInterface::SourceState state()
const override;
45 bool remote()
const override {
return false; };
46 void RegisterObserver(webrtc::ObserverInterface* observer)
override;
47 void UnregisterObserver(webrtc::ObserverInterface* observer)
override;
50 void AddSink(webrtc::AudioTrackSinkInterface* sink)
override;
51 void RemoveSink(webrtc::AudioTrackSinkInterface* sink)
override;
53 const cricket::AudioOptions options()
const override {
return cricket::AudioOptions{}; }
55 bool PushPcmData(
const int16_t* buffer);
58 mutable std::mutex observer_mtx_;
59 mutable std::mutex sinks_mtx_;
60 std::vector<webrtc::ObserverInterface*> ms_observers_;
61 std::vector<webrtc::AudioTrackSinkInterface*> sinks_;
66 rtc::scoped_refptr<PcmInternalAudioSource> internal_source_;