/* * Copyright (c) 2022-2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OHOS_AVSESSION_TRACE_H #define OHOS_AVSESSION_TRACE_H #include #ifdef ENBABLE_AVSESSION_TRACE_CONTROL #include "hitrace_meter.h" #endif #ifdef ENBABLE_AVSESSION_TRACE_CONTROL #define AVSESSION_TRACE_SYNC_START(traceName) AVSessionTrace trace(traceName) #define AVSESSION_TRACE_ASYNC_START(traceName, taskId) AVSessionTrace::TraceBegin(traceName, taskId) #define AVSESSION_TRACE_ASYNC_END(traceName, taskId) AVSessionTrace::TraceEnd(traceName, taskId) #else #define AVSESSION_TRACE_SYNC_START(...) #define AVSESSION_TRACE_ASYNC_START(...) #define AVSESSION_TRACE_ASYNC_END(...) #endif namespace OHOS::AVSession { enum AVSessionTraceTaskId : int32_t { INVALID_TASK_ID = -1, NAPI_SET_AV_META_DATA_TASK_ID = 0, NAPI_SET_AV_PLAYBACK_STATE_TASK_ID = 1, NAPI_SEND_AV_KEY_EVENT_TASK_ID = 2, NAPI_SEND_CONTROL_COMMAND_TASK_ID = 3, NAPI_CREATE_AVSESSION_TASK_ID = 4, NAPI_CREATE_CONTROLLER_TASK_ID = 5, NAPI_SEND_SYSTEM_AV_KEY_EVENT_TASK_ID = 6, NAPI_SEND_SYSTEM_CONTROL_COMMAND_TASK_ID = 7, NAPI_CAST_AUDIO_TASK_ID = 8, NAPI_SET_SESSION_EVENT_TASK_ID = 9, NAPI_SEND_COMMON_COMMAND_TASK_ID = 10, NAPI_SKIP_TO_QUEUE_ITEM_TASK_ID = 11, NAPI_SET_AV_QUEUE_TITLE_TASK_ID = 12, NAPI_SET_AV_QUEUE_ITEMS_TASK_ID = 13, NAPI_SET_EXTRAS_TASK_ID = 14, NAPI_START_CAST_DISCOVERY_TASK_ID = 15, NAPI_STOP_CAST_DISCOVERY_TASK_ID = 16, NAPI_SET_DISCOVERABLE_TASK_ID = 17, NAPI_START_CAST_TASK_ID = 18, NAPI_STOP_CAST_TASK_ID = 19, NAPI_CREATE_CAST_CONTROLLER_TASK_ID = 20, NAPI_CAST_CONTROLLER_SEND_CONTROL_COMMAND_TASK_ID = 21, NAPI_CAST_CONTROLLER_START_TASK_ID = 22, NAPI_CAST_CONTROLLER_PREPARE_TASK_ID = 23, NAPI_CAST_CONTROLLER_UPDATE_MEDIA_INFO_TASK_ID = 24, NAPI_CAST_CONTROLLER_GET_DURATION_TASK_ID = 25, NAPI_CAST_CONTROLLER_GET_POSITION_TASK_ID = 26, NAPI_CAST_CONTROLLER_GET_VOLUME_TASK_ID = 27, NAPI_CAST_CONTROLLER_GET_LOOPMODE_TASK_ID = 28, NAPI_CAST_CONTROLLER_GET_PLAY_SPEED_TASK_ID = 29, NAPI_CAST_CONTROLLER_GET_PLAY_STATE_TASK_ID = 30, NAPI_CAST_CONTROLLER_GET_CURRENT_ITEM_TASK_ID = 31, NAPI_CAST_CONTROLLER_SET_DISPLAY_SURFACE_TASK_ID = 32, NAPI_SET_AVCALL_META_DATA_TASK_ID = 33, NAPI_SET_AV_CALL_STATE_TASK_ID = 34, NAPI_PROVIDE_KEY_RESPONSE_TASK_ID = 35, NAPI_START_DEVICE_LOGGING_TASK_ID = 36, NAPI_STOP_DEVICE_LOGGING_TASK_ID = 37, NAPI_CAST_PICKER_HELPER_TASK_ID = 38, }; #ifdef ENBABLE_AVSESSION_TRACE_CONTROL class __attribute__((visibility("default"))) AVSessionTrace { public: explicit AVSessionTrace(const std::string& traceName) { std::string avSessionTrace("AVSession:"); avSessionTrace += traceName; StartTrace(HITRACE_TAG_ZMEDIA, avSessionTrace); isSync_ = true; } static void TraceBegin(const std::string& traceName, int32_t taskId) { if (taskId <= INVALID_TASK_ID) { return; } std::string traceBegin("AVSession:"); traceBegin += traceName; StartAsyncTrace(HITRACE_TAG_ZMEDIA, traceBegin, taskId); } static void TraceEnd(const std::string& traceName, int32_t taskId) { if (taskId <= INVALID_TASK_ID) { return; } std::string traceEnd("AVSession:"); traceEnd += traceName; FinishAsyncTrace(HITRACE_TAG_ZMEDIA, traceEnd, taskId); } ~AVSessionTrace() { if (isSync_) { FinishTrace(HITRACE_TAG_ZMEDIA); } } AVSessionTrace(const AVSessionTrace&) = delete; AVSessionTrace& operator = (const AVSessionTrace&) = delete; AVSessionTrace(AVSessionTrace&&) = delete; AVSessionTrace& operator = (AVSessionTrace&&) = delete; private: bool isSync_ = false; }; #endif } // namespace OHOS::AVSession #endif // OHOS_AVSESSION_TRACE_H