Agora C++ API Reference for All Platforms
Loading...
Searching...
No Matches
audio_node_stat_i.h
1//
2// Agora Engine SDK
3//
4// Created by ChenZhipeng in 2022-08.
5// Copyright (c) 2022 Agora.io. All rights reserved.
6//
7#pragma once
8
9
10#include <stddef.h>
11
12#include <algorithm>
13#include <cstring>
14#include <map>
15#include <string>
16
17namespace agora {
18namespace rtc {
19
20const static int kNoSourceValidForDownlink = -1379;
21
31
46
47 bool source_mute = false;
50
52
56 std::copy(info.time_us, info.time_us + TIMING_COUNT, time_us);
57 }
58
62 std::copy(rhs.time_us, rhs.time_us + TIMING_COUNT, time_us);
63 return *this;
64 }
65
66 bool valid() const {
67 return (source_type >= 0 && time_us[FORMAT_FRAME] > 0 &&
69 }
70
71 static std::string getAudioFrameSourceName(int type) {
72 std::map<int, const char*> source_name = {
73 {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::UNKNOWN), "unknown"},
74 {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::RECORD), "record"},
75 {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::PUSH_DIRECT), "push-direct"},
77 "push-external"},
79 "simple_media_player"},
81 "ffmpeg_media_player"},
82 };
83
84 std::string name;
85 int cnt = static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::KNOWN_TYPE_COUNT);
86 for (int i = 0; i < cnt; ++i) {
87 if (type & (1 << i)) {
88 auto iter = source_name.find(1 << i);
89 if (iter != source_name.end()) {
90 if (!name.empty()) {
91 name.push_back('|');
92 }
93 name.append(iter->second);
94 }
95 }
96 }
97 if (name.empty()) {
98 return "unknown";
99 }
100 return name;
101 }
102};
103
104} // namespace rtc
105} // namespace agora
Definition AgoraExtensions.h:5
static const int kNoSourceValidForDownlink
Definition audio_node_stat_i.h:20
AUDIO_FRAME_SOURCE_TYPE
Definition audio_node_stat_i.h:22
@ PUSH_EXTERNAL
Definition audio_node_stat_i.h:26
@ KNOWN_TYPE_COUNT
Definition audio_node_stat_i.h:29
@ UNKNOWN
Definition audio_node_stat_i.h:23
@ FFMPEG_MEDIA_PLAYER
Definition audio_node_stat_i.h:28
@ RECORD
Definition audio_node_stat_i.h:24
@ SIMPLE_MEDIA_PLAYER
Definition audio_node_stat_i.h:27
@ PUSH_DIRECT
Definition audio_node_stat_i.h:25
Definition AgoraAtomicOps.h:21
AudioFrameHandleInfo()
Definition audio_node_stat_i.h:51
int source_type
Definition audio_node_stat_i.h:49
bool valid() const
Definition audio_node_stat_i.h:66
bool source_mute
Definition audio_node_stat_i.h:47
static std::string getAudioFrameSourceName(int type)
Definition audio_node_stat_i.h:71
AudioFrameHandleInfo & operator=(const AudioFrameHandleInfo &rhs)
Definition audio_node_stat_i.h:59
AUDIO_UPLINK_HANDLE_TIMING
Definition audio_node_stat_i.h:33
@ DATA_READY
Definition audio_node_stat_i.h:35
@ FORMAT_FRAME
Definition audio_node_stat_i.h:36
@ FRAME_PTS
Definition audio_node_stat_i.h:34
@ POST_TO_ENCODER_QUEUE
Definition audio_node_stat_i.h:37
@ POST_TO_SEND_QUEUE
Definition audio_node_stat_i.h:41
@ READY_SEND
Definition audio_node_stat_i.h:42
@ PRE_ENCODE
Definition audio_node_stat_i.h:38
@ TIMING_COUNT
Definition audio_node_stat_i.h:44
@ ENCODED
Definition audio_node_stat_i.h:40
@ VOS_SEND
Definition audio_node_stat_i.h:43
@ START_ENCODE
Definition audio_node_stat_i.h:39
AudioFrameHandleInfo(const AudioFrameHandleInfo &info)
Definition audio_node_stat_i.h:53
int64_t time_us[TIMING_COUNT]
Definition audio_node_stat_i.h:48