SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
remote_audio_stream.hpp
1#ifndef SKYWAY_MEDIA_STREAM_REMOTE_REMOTE_AUDIO_STREAM_HPP_
2#define SKYWAY_MEDIA_STREAM_REMOTE_REMOTE_AUDIO_STREAM_HPP_
3
4#include <mutex>
5#include <unordered_map>
6
7#include <api/media_stream_interface.h>
8#include <skyway/core/stream/remote/audio_stream.hpp>
9
10#include "skyway/media/audio/interface/audio_frame.hpp"
11#include "skyway/media/stream/abstract/stream_base.hpp"
12#include "skyway/media/stream/interface/remote/remote_audio_stream.hpp"
13
14namespace skyway {
15namespace media {
16namespace stream {
17namespace remote {
18
20 : public abstract::StreamBase<interface::remote::RemoteAudioStream,
21 skyway::core::interface::RemoteStream,
22 skyway::core::stream::remote::RemoteAudioStream> {
23public:
25 RemoteAudioStream(std::shared_ptr<skyway::core::stream::remote::RemoteAudioStream> core);
27
30 std::shared_ptr<interface::remote::RemoteAudioStream::Listener> listener) override;
31
34 std::shared_ptr<interface::remote::RemoteAudioStream::Listener> listener) override;
35 rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> Track() const override;
36
37private:
38 class PcmAudioTrackSink : public webrtc::AudioTrackSinkInterface {
39 public:
40 explicit PcmAudioTrackSink(
41 std::shared_ptr<interface::remote::RemoteAudioStream::Listener> listener);
42 void OnData(const void* audio_data,
43 int bits_per_sample,
44 int sample_rate,
45 size_t number_of_channels,
46 size_t number_of_frames,
47 absl::optional<int64_t>) override;
48
49 private:
50 std::shared_ptr<interface::remote::RemoteAudioStream::Listener> listener_;
51 };
52
53 std::unordered_map<std::shared_ptr<interface::remote::RemoteAudioStream::Listener>,
54 std::shared_ptr<PcmAudioTrackSink>>
55 sinks_;
56 std::mutex sinks_mtx_;
57};
58
59} // namespace remote
60} // namespace stream
61} // namespace media
62} // namespace skyway
63
64#endif // SKYWAY_MEDIA_STREAM_REMOTE_REMOTE_AUDIO_STREAM_HPP_
Definition stream_base.hpp:15
Definition remote_audio_stream.hpp:22
void RegisterListener(std::shared_ptr< interface::remote::RemoteAudioStream::Listener > listener) override
RemoteAudioStream::Listenerを登録します。
void UnregisterListener(std::shared_ptr< interface::remote::RemoteAudioStream::Listener > listener) override
イベントリスナーの登録を解除します。