blob: 8a705cf8fb9de6c14afb4b1238b4fbd575053f2a [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:361/*
kjellanderb24317b2016-02-10 15:54:432 * Copyright 2011 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:363 *
kjellanderb24317b2016-02-10 15:54:434 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
henrike@webrtc.org28e20752013-07-10 00:45:369 */
10
Steve Anton10542f22019-01-11 17:11:0011#ifndef PC_AUDIO_TRACK_H_
12#define PC_AUDIO_TRACK_H_
henrike@webrtc.org28e20752013-07-10 00:45:3613
tommi6eca7e32015-12-15 12:27:1114#include <string>
15
Steve Anton10542f22019-01-11 17:11:0016#include "api/media_stream_interface.h"
Harald Alvestrand9cb42c82020-10-11 13:03:4717#include "api/media_stream_track.h"
Mirko Bonadeid9708072019-01-25 19:26:4818#include "api/scoped_refptr.h"
Artem Titovd15a5752021-02-10 13:31:2419#include "api/sequence_checker.h"
henrike@webrtc.org28e20752013-07-10 00:45:3620
21namespace webrtc {
22
tommi6eca7e32015-12-15 12:27:1123class AudioTrack : public MediaStreamTrack<AudioTrackInterface>,
24 public ObserverInterface {
25 protected:
26 // Protected ctor to force use of factory method.
27 AudioTrack(const std::string& label,
28 const rtc::scoped_refptr<AudioSourceInterface>& source);
Niels Möllerde953292020-09-29 07:46:2129
30 AudioTrack() = delete;
31 AudioTrack(const AudioTrack&) = delete;
32 AudioTrack& operator=(const AudioTrack&) = delete;
33
tommi6eca7e32015-12-15 12:27:1134 ~AudioTrack() override;
35
henrike@webrtc.org28e20752013-07-10 00:45:3636 public:
buildbot@webrtc.orgd4e598d2014-07-29 17:36:5237 static rtc::scoped_refptr<AudioTrack> Create(
tommi6eca7e32015-12-15 12:27:1138 const std::string& id,
39 const rtc::scoped_refptr<AudioSourceInterface>& source);
henrike@webrtc.org28e20752013-07-10 00:45:3640
henrike@webrtc.org40b3b682014-03-03 18:30:1141 // MediaStreamTrack implementation.
kjellander@webrtc.org14665ff2015-03-04 12:58:3542 std::string kind() const override;
henrike@webrtc.org28e20752013-07-10 00:45:3643
tommi6eca7e32015-12-15 12:27:1144 // AudioTrackInterface implementation.
45 AudioSourceInterface* GetSource() const override;
46
47 void AddSink(AudioTrackSinkInterface* sink) override;
48 void RemoveSink(AudioTrackSinkInterface* sink) override;
49
Tommi816134a2021-05-24 14:54:4150 private:
tommi6eca7e32015-12-15 12:27:1151 // ObserverInterface implementation.
52 void OnChanged() override;
henrike@webrtc.org28e20752013-07-10 00:45:3653
54 private:
tommi6eca7e32015-12-15 12:27:1155 const rtc::scoped_refptr<AudioSourceInterface> audio_source_;
Artem Titovc8421c42021-02-02 09:57:1956 SequenceChecker thread_checker_;
henrike@webrtc.org28e20752013-07-10 00:45:3657};
58
59} // namespace webrtc
60
Steve Anton10542f22019-01-11 17:11:0061#endif // PC_AUDIO_TRACK_H_