SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
pcm_audio_source.hpp
1//
2// © NTT DOCOMO BUSINESS, Inc. All Rights Reserved.
3//
4
5#ifndef SKYWAY_MEDIA_AUDIO_PCM_AUDIO_SOURCE_HPP_
6#define SKYWAY_MEDIA_AUDIO_PCM_AUDIO_SOURCE_HPP_
7
8#include <mutex>
9#include <vector>
10#include "absl/types/optional.h"
11
12#include "api/audio_options.h"
13#include "api/media_stream_interface.h"
14#include "rtc_base/ref_counted_object.h"
15
16#include "skyway/media/audio/interface/pcm_audio_source.hpp"
17
18namespace skyway {
19namespace media {
20namespace audio {
21
23public:
31 static std::shared_ptr<PcmAudioSource> Create(
33
36 rtc::scoped_refptr<webrtc::AudioSourceInterface> GetSource() override;
38
39 bool PushPcmData(const int16_t* buffer) override;
40
41private:
42 class PcmInternalAudioSource : public webrtc::AudioSourceInterface {
43 public:
44 PcmInternalAudioSource(const interface::PcmAudioSource::Options& options);
45 ~PcmInternalAudioSource() override = default;
46
47 // webrtc::MediaSourceInterface
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;
52
53 // webrtc::AudioSourceInterface
54 void AddSink(webrtc::AudioTrackSinkInterface* sink) override;
55 void RemoveSink(webrtc::AudioTrackSinkInterface* sink) override;
56
57 const cricket::AudioOptions options() const override { return cricket::AudioOptions{}; }
58
59 bool PushPcmData(const int16_t* buffer);
60
61 private:
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_;
66 int sample_rate_;
67 int channels_;
68 };
69
70 rtc::scoped_refptr<PcmInternalAudioSource> internal_source_;
71};
72
73} // namespace audio
74} // namespace media
75} // namespace skyway
76
77#endif // SKYWAY_MEDIA_AUDIO_PCM_AUDIO_SOURCE_HPP_
Definition pcm_audio_source.hpp:22
static std::shared_ptr< PcmAudioSource > Create(const interface::PcmAudioSource::Options &options)
PCM音声ソースのインスタンスを作成します。
bool PushPcmData(const int16_t *buffer) override
PCM音声データを送信します。
PCM音声ソース
Definition pcm_audio_source.hpp:18
PCM音声ソースのオプション
Definition pcm_audio_source.hpp:28