• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_AVSESSION_TRACE_H
17 #define OHOS_AVSESSION_TRACE_H
18 
19 #include <string>
20 
21 #ifdef ENBABLE_AVSESSION_TRACE_CONTROL
22 #include "hitrace_meter.h"
23 #endif
24 
25 #ifdef ENBABLE_AVSESSION_TRACE_CONTROL
26 #define AVSESSION_TRACE_SYNC_START(traceName) AVSessionTrace trace(traceName)
27 #define AVSESSION_TRACE_ASYNC_START(traceName, taskId) AVSessionTrace::TraceBegin(traceName, taskId)
28 #define AVSESSION_TRACE_ASYNC_END(traceName, taskId) AVSessionTrace::TraceEnd(traceName, taskId)
29 #else
30 #define AVSESSION_TRACE_SYNC_START(...)
31 #define AVSESSION_TRACE_ASYNC_START(...)
32 #define AVSESSION_TRACE_ASYNC_END(...)
33 
34 #endif
35 namespace OHOS::AVSession {
36 enum AVSessionTraceTaskId : int32_t {
37     INVALID_TASK_ID = -1,
38     NAPI_SET_AV_META_DATA_TASK_ID = 0,
39     NAPI_SET_AV_PLAYBACK_STATE_TASK_ID = 1,
40     NAPI_SEND_AV_KEY_EVENT_TASK_ID = 2,
41     NAPI_SEND_CONTROL_COMMAND_TASK_ID = 3,
42     NAPI_CREATE_AVSESSION_TASK_ID = 4,
43     NAPI_CREATE_CONTROLLER_TASK_ID = 5,
44     NAPI_SEND_SYSTEM_AV_KEY_EVENT_TASK_ID = 6,
45     NAPI_SEND_SYSTEM_CONTROL_COMMAND_TASK_ID = 7,
46     NAPI_CAST_AUDIO_TASK_ID = 8,
47     NAPI_SET_SESSION_EVENT_TASK_ID = 9,
48     NAPI_SEND_COMMON_COMMAND_TASK_ID = 10,
49     NAPI_SKIP_TO_QUEUE_ITEM_TASK_ID = 11,
50     NAPI_SET_AV_QUEUE_TITLE_TASK_ID = 12,
51     NAPI_SET_AV_QUEUE_ITEMS_TASK_ID = 13,
52     NAPI_SET_EXTRAS_TASK_ID = 14,
53     NAPI_START_CAST_DISCOVERY_TASK_ID = 15,
54     NAPI_STOP_CAST_DISCOVERY_TASK_ID = 16,
55     NAPI_SET_DISCOVERABLE_TASK_ID = 17,
56     NAPI_START_CAST_TASK_ID = 18,
57     NAPI_STOP_CAST_TASK_ID = 19,
58     NAPI_CREATE_CAST_CONTROLLER_TASK_ID = 20,
59     NAPI_CAST_CONTROLLER_SEND_CONTROL_COMMAND_TASK_ID = 21,
60     NAPI_CAST_CONTROLLER_START_TASK_ID = 22,
61     NAPI_CAST_CONTROLLER_PREPARE_TASK_ID = 23,
62     NAPI_CAST_CONTROLLER_UPDATE_MEDIA_INFO_TASK_ID = 24,
63     NAPI_CAST_CONTROLLER_GET_DURATION_TASK_ID = 25,
64     NAPI_CAST_CONTROLLER_GET_POSITION_TASK_ID = 26,
65     NAPI_CAST_CONTROLLER_GET_VOLUME_TASK_ID = 27,
66     NAPI_CAST_CONTROLLER_GET_LOOPMODE_TASK_ID = 28,
67     NAPI_CAST_CONTROLLER_GET_PLAY_SPEED_TASK_ID = 29,
68     NAPI_CAST_CONTROLLER_GET_PLAY_STATE_TASK_ID = 30,
69     NAPI_CAST_CONTROLLER_GET_CURRENT_ITEM_TASK_ID = 31,
70     NAPI_CAST_CONTROLLER_SET_DISPLAY_SURFACE_TASK_ID = 32,
71     NAPI_SET_AVCALL_META_DATA_TASK_ID = 33,
72     NAPI_SET_AV_CALL_STATE_TASK_ID = 34,
73     NAPI_PROVIDE_KEY_RESPONSE_TASK_ID = 35,
74     NAPI_START_DEVICE_LOGGING_TASK_ID = 36,
75     NAPI_STOP_DEVICE_LOGGING_TASK_ID = 37,
76     NAPI_CAST_PICKER_HELPER_TASK_ID = 38,
77     NAPI_CAST_CONTROL_GET_SUPPORT_DECODER_ID = 39,
78     NAPI_CAST_CONTROL_GET_RECOMMEND_RESOLUTION_LEVEL_ID = 40,
79     NAPI_CAST_CONTROL_GET_SUPPORT_HDR_CAPABILITIES_ID = 41,
80     NAPI_CAST_CONTROL_GET_SUPPORT_PLAY_SPEED_ID = 42,
81 };
82 #ifdef ENBABLE_AVSESSION_TRACE_CONTROL
83 class __attribute__((visibility("default"))) AVSessionTrace {
84 public:
AVSessionTrace(const std::string & traceName)85     explicit AVSessionTrace(const std::string& traceName)
86     {
87         std::string avSessionTrace("AVSession:");
88         avSessionTrace += traceName;
89         StartTrace(HITRACE_TAG_ZMEDIA, avSessionTrace);
90         isSync_ = true;
91     }
92 
TraceBegin(const std::string & traceName,int32_t taskId)93     static void TraceBegin(const std::string& traceName, int32_t taskId)
94     {
95         if (taskId <= INVALID_TASK_ID) {
96             return;
97         }
98         std::string traceBegin("AVSession:");
99         traceBegin += traceName;
100         StartAsyncTrace(HITRACE_TAG_ZMEDIA, traceBegin, taskId);
101     }
102 
TraceEnd(const std::string & traceName,int32_t taskId)103     static void TraceEnd(const std::string& traceName, int32_t taskId)
104     {
105         if (taskId <= INVALID_TASK_ID) {
106             return;
107         }
108         std::string traceEnd("AVSession:");
109         traceEnd += traceName;
110         FinishAsyncTrace(HITRACE_TAG_ZMEDIA, traceEnd, taskId);
111     }
112 
~AVSessionTrace()113     ~AVSessionTrace()
114     {
115         if (isSync_) {
116             FinishTrace(HITRACE_TAG_ZMEDIA);
117         }
118     }
119 
120     AVSessionTrace(const AVSessionTrace&) = delete;
121     AVSessionTrace& operator = (const AVSessionTrace&) = delete;
122 
123     AVSessionTrace(AVSessionTrace&&) = delete;
124     AVSessionTrace& operator = (AVSessionTrace&&) = delete;
125 private:
126     bool isSync_ = false;
127 };
128 #endif
129 } // namespace OHOS::AVSession
130 #endif // OHOS_AVSESSION_TRACE_H