11 #include "AgoraRefPtr.h"
12 #include "AgoraBase.h"
14 #include "NGIAgoraAudioTrack.h"
16 #include "track_stat_i.h"
17 #include "video_config_i.h"
27 using LocalAudioEvents = StateEvents<LOCAL_AUDIO_STREAM_STATE, LOCAL_AUDIO_STREAM_ERROR>;
29 enum DetachReason { MANUAL, TRACK_DESTROY, MIXER_DESTROY };
36 std::shared_ptr<AudioNodeBase> audioNetworkSink, uint32_t sourceId) = 0;
37 virtual void detach(DetachReason reason) = 0;
39 virtual void setMaxBufferedAudioFrameNumber(
int number) = 0;
41 virtual int setExtraDelay(
int delay_ms) {
42 return -ERR_NOT_SUPPORTED;
45 virtual bool getStatistics(PacketStats& stats) {
return true; }
47 virtual bool isMediaPacketTrack() = 0;
49 void NotifyTrackStateChange(uint64_t ts, LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_ERROR errorCode) {
50 notifier_.Notify(ts, state, errorCode);
53 LocalAudioEvents GetEvents(
bool readOnly =
false) {
54 return notifier_.GetEvents(readOnly);
62 using RemoteAudioEvents = StateEvents<REMOTE_AUDIO_STATE, REMOTE_AUDIO_STATE_REASON>;
68 void NotifyTrackStateChange(uint64_t ts, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason) {
69 notifier_.Notify(ts, state, reason);
72 RemoteAudioEvents GetEvents() {
73 return notifier_.GetEvents();