Agora C++ API Reference for All Platforms
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 
17 namespace agora {
18 namespace rtc {
19 
21  UNKNOWN = 0,
22  RECORD = 1 << 0,
23  PUSH_DIRECT = 1 << 1,
24  PUSH_EXTERNAL = 1 << 2,
25  SIMPLE_MEDIA_PLAYER = 1 << 3,
26  FFMPEG_MEDIA_PLAYER = 1 << 4,
27  KNOWN_TYPE_COUNT = 5,
28 };
29 
42  };
43  int64_t time_us[TIMING_COUNT]{};
45 
46  bool valid() const {
47  return (source_type >= 0 && time_us[FORMAT_FRAME] > 0 &&
49  }
50 
51  static std::string getAudioFrameSourceName(int type) {
52  std::map<int, const char*> source_name = {
53  {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::UNKNOWN), "unknown"},
54  {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::RECORD), "record"},
55  {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::PUSH_DIRECT), "push-direct"},
56  {static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::PUSH_EXTERNAL),
57  "push-external"},
59  "simple_media_player"},
61  "ffmpeg_media_player"},
62  };
63 
64  std::string name;
65  int cnt = static_cast<int>(AUDIO_FRAME_SOURCE_TYPE::KNOWN_TYPE_COUNT);
66  for (int i = 0; i < cnt; ++i) {
67  if (type & (1 << i)) {
68  auto iter = source_name.find(1 << i);
69  if (iter != source_name.end()) {
70  if (!name.empty()) {
71  name.push_back('|');
72  }
73  name.append(iter->second);
74  }
75  }
76  }
77  if (name.empty()) {
78  return "unknown";
79  }
80  return name;
81  }
82 };
83 
84 } // namespace rtc
85 } // namespace agora
agora::rtc::AudioFrameHandleInfo::getAudioFrameSourceName
static std::string getAudioFrameSourceName(int type)
Definition: audio_node_stat_i.h:51
agora::rtc::AudioFrameHandleInfo::AUDIO_UPLINK_HANDLE_TIMING
AUDIO_UPLINK_HANDLE_TIMING
Definition: audio_node_stat_i.h:31
agora::rtc::AudioFrameHandleInfo::POST_TO_ENCODER_QUEUE
@ POST_TO_ENCODER_QUEUE
Definition: audio_node_stat_i.h:35
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::SIMPLE_MEDIA_PLAYER
@ SIMPLE_MEDIA_PLAYER
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::RECORD
@ RECORD
agora::rtc::AudioFrameHandleInfo::ENCODED
@ ENCODED
Definition: audio_node_stat_i.h:37
agora::rtc::AudioFrameHandleInfo::DATA_READY
@ DATA_READY
Definition: audio_node_stat_i.h:33
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::FFMPEG_MEDIA_PLAYER
@ FFMPEG_MEDIA_PLAYER
agora::rtc::AudioFrameHandleInfo::TIMING_COUNT
@ TIMING_COUNT
Definition: audio_node_stat_i.h:41
agora::rtc::AudioFrameHandleInfo::FORMAT_FRAME
@ FORMAT_FRAME
Definition: audio_node_stat_i.h:34
agora::rtc::AudioFrameHandleInfo::source_type
int source_type
Definition: audio_node_stat_i.h:44
agora
Definition: AgoraAtomicOps.h:21
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::KNOWN_TYPE_COUNT
@ KNOWN_TYPE_COUNT
agora::rtc::AudioFrameHandleInfo
Definition: audio_node_stat_i.h:30
agora::rtc::AudioFrameHandleInfo::READY_SEND
@ READY_SEND
Definition: audio_node_stat_i.h:39
agora::rtc::AudioFrameHandleInfo::POST_TO_SEND_QUEUE
@ POST_TO_SEND_QUEUE
Definition: audio_node_stat_i.h:38
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::PUSH_EXTERNAL
@ PUSH_EXTERNAL
agora::rtc::AudioFrameHandleInfo::valid
bool valid() const
Definition: audio_node_stat_i.h:46
agora::rtc::AudioFrameHandleInfo::time_us
int64_t time_us[TIMING_COUNT]
Definition: audio_node_stat_i.h:43
agora::rtc::AudioFrameHandleInfo::FRAME_PTS
@ FRAME_PTS
Definition: audio_node_stat_i.h:32
agora::rtc::AudioFrameHandleInfo::VOS_SEND
@ VOS_SEND
Definition: audio_node_stat_i.h:40
agora::rtc::AUDIO_FRAME_SOURCE_TYPE
AUDIO_FRAME_SOURCE_TYPE
Definition: audio_node_stat_i.h:20
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::PUSH_DIRECT
@ PUSH_DIRECT
agora::rtc::AudioFrameHandleInfo::PRE_ENCODE
@ PRE_ENCODE
Definition: audio_node_stat_i.h:36
rtc
Definition: video_node_i.h:26
agora::rtc::AUDIO_FRAME_SOURCE_TYPE::UNKNOWN
@ UNKNOWN