1da853ecaSopenharmony_ci/* 2da853ecaSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3da853ecaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4da853ecaSopenharmony_ci * you may not use this file except in compliance with the License. 5da853ecaSopenharmony_ci * You may obtain a copy of the License at 6da853ecaSopenharmony_ci * 7da853ecaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8da853ecaSopenharmony_ci * 9da853ecaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10da853ecaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11da853ecaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12da853ecaSopenharmony_ci * See the License for the specific language governing permissions and 13da853ecaSopenharmony_ci * limitations under the License. 14da853ecaSopenharmony_ci */ 15da853ecaSopenharmony_ci 16da853ecaSopenharmony_ci#include <avcodec_sysevent.h> 17da853ecaSopenharmony_ci#include <unistd.h> 18da853ecaSopenharmony_ci#include <unordered_map> 19da853ecaSopenharmony_ci#include "securec.h" 20da853ecaSopenharmony_ci#include "avcodec_log.h" 21da853ecaSopenharmony_ci#include "avcodec_errors.h" 22da853ecaSopenharmony_ci 23da853ecaSopenharmony_cinamespace { 24da853ecaSopenharmony_ciconstexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, LOG_DOMAIN_FRAMEWORK, "AVCodecDFX"}; 25da853ecaSopenharmony_ciconstexpr char HISYSEVENT_DOMAIN_AVCODEC[] = "AV_CODEC"; 26da853ecaSopenharmony_ci 27da853ecaSopenharmony_ciconst std::unordered_map<OHOS::MediaAVCodec::FaultType, std::string> FAULT_TYPE_TO_STRING = { 28da853ecaSopenharmony_ci {OHOS::MediaAVCodec::FaultType::FAULT_TYPE_FREEZE, "Freeze"}, 29da853ecaSopenharmony_ci {OHOS::MediaAVCodec::FaultType::FAULT_TYPE_CRASH, "Crash"}, 30da853ecaSopenharmony_ci {OHOS::MediaAVCodec::FaultType::FAULT_TYPE_INNER_ERROR, "Inner error"}, 31da853ecaSopenharmony_ci}; 32da853ecaSopenharmony_ci} // namespace 33da853ecaSopenharmony_ci 34da853ecaSopenharmony_cinamespace OHOS { 35da853ecaSopenharmony_cinamespace MediaAVCodec { 36da853ecaSopenharmony_civoid FaultEventWrite(FaultType faultType, const std::string& msg, const std::string& module) 37da853ecaSopenharmony_ci{ 38da853ecaSopenharmony_ci CHECK_AND_RETURN_LOG(faultType >= FaultType::FAULT_TYPE_FREEZE && faultType < FaultType::FAULT_TYPE_END, 39da853ecaSopenharmony_ci "Invalid fault type: %{public}d", faultType); 40da853ecaSopenharmony_ci HiSysEventWrite(HISYSEVENT_DOMAIN_AVCODEC, "FAULT", 41da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 42da853ecaSopenharmony_ci "MODULE", module, 43da853ecaSopenharmony_ci "FAULTTYPE", FAULT_TYPE_TO_STRING.at(faultType), 44da853ecaSopenharmony_ci "MSG", msg); 45da853ecaSopenharmony_ci} 46da853ecaSopenharmony_ci 47da853ecaSopenharmony_civoid ServiceStartEventWrite(uint32_t useTime, const std::string& module) 48da853ecaSopenharmony_ci{ 49da853ecaSopenharmony_ci uint64_t useMemory = 5000; 50da853ecaSopenharmony_ci HiSysEventWrite(HISYSEVENT_DOMAIN_AVCODEC, "SERVICE_START_INFO", 51da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, "MODULE", module.c_str(), "TIME", useTime, 52da853ecaSopenharmony_ci "MEMORY", useMemory); 53da853ecaSopenharmony_ci} 54da853ecaSopenharmony_ci 55da853ecaSopenharmony_civoid CodecStartEventWrite(CodecDfxInfo& codecDfxInfo) 56da853ecaSopenharmony_ci{ 57da853ecaSopenharmony_ci HiSysEventWrite(HISYSEVENT_DOMAIN_AVCODEC, "CODEC_START_INFO", 58da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, 59da853ecaSopenharmony_ci "CLIENT_PID", codecDfxInfo.clientPid, 60da853ecaSopenharmony_ci "CLIENT_UID", codecDfxInfo.clientUid, 61da853ecaSopenharmony_ci "CODEC_INSTANCE_ID", codecDfxInfo.codecInstanceId, 62da853ecaSopenharmony_ci "CODEC_NAME", codecDfxInfo.codecName, 63da853ecaSopenharmony_ci "CODEC_IS_VENDOR", codecDfxInfo.codecIsVendor, 64da853ecaSopenharmony_ci "CODEC_MODE", codecDfxInfo.codecMode, 65da853ecaSopenharmony_ci "ENCODER_BITRATE", codecDfxInfo.encoderBitRate, 66da853ecaSopenharmony_ci "VIDEO_WIDTH", codecDfxInfo.videoWidth, 67da853ecaSopenharmony_ci "VIDEO_HEIGHT", codecDfxInfo.videoHeight, 68da853ecaSopenharmony_ci "VIDEO_FRAMERATE", codecDfxInfo.videoFrameRate, 69da853ecaSopenharmony_ci "VIDEO_PIXEL_FORMAT", codecDfxInfo.videoPixelFormat, 70da853ecaSopenharmony_ci "AUDIO_CHANNEL_COUNT", codecDfxInfo.audioChannelCount, 71da853ecaSopenharmony_ci "AUDIO_SAMPLE_RATE", codecDfxInfo.audioSampleRate); 72da853ecaSopenharmony_ci} 73da853ecaSopenharmony_ci 74da853ecaSopenharmony_civoid CodecStopEventWrite(pid_t clientPid, uid_t clientUid, int32_t codecInstanceId) 75da853ecaSopenharmony_ci{ 76da853ecaSopenharmony_ci HiSysEventWrite(HISYSEVENT_DOMAIN_AVCODEC, "CODEC_STOP_INFO", 77da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, 78da853ecaSopenharmony_ci "CLIENT_PID", clientPid, "CLIENT_UID", clientUid, "CODEC_INSTANCE_ID", codecInstanceId); 79da853ecaSopenharmony_ci} 80da853ecaSopenharmony_ci 81da853ecaSopenharmony_civoid DemuxerInitEventWrite(uint32_t downloadSize, std::string sourceType) 82da853ecaSopenharmony_ci{ 83da853ecaSopenharmony_ci HiSysEventWrite(HISYSEVENT_DOMAIN_AVCODEC, "DEMUXER_INIT_INFO", 84da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, 85da853ecaSopenharmony_ci "DOWNLOAD_SIZE", downloadSize, "SOURCE_TYPE", sourceType); 86da853ecaSopenharmony_ci} 87da853ecaSopenharmony_ci 88da853ecaSopenharmony_civoid FaultDemuxerEventWrite(DemuxerFaultInfo& demuxerFaultInfo) 89da853ecaSopenharmony_ci{ 90da853ecaSopenharmony_ci HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MEDIA, "DEMUXER_FAILURE", 91da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 92da853ecaSopenharmony_ci "APP_NAME", demuxerFaultInfo.appName, 93da853ecaSopenharmony_ci "INSTANCE_ID", demuxerFaultInfo.instanceId, 94da853ecaSopenharmony_ci "CALLER_TYPE", demuxerFaultInfo.callerType, 95da853ecaSopenharmony_ci "SOURCE_TYPE", demuxerFaultInfo.sourceType, 96da853ecaSopenharmony_ci "CONTAINER_FORMAT", demuxerFaultInfo.containerFormat, 97da853ecaSopenharmony_ci "STREAM_TYPE", demuxerFaultInfo.streamType, 98da853ecaSopenharmony_ci "ERROR_MESG", demuxerFaultInfo.errMsg); 99da853ecaSopenharmony_ci} 100da853ecaSopenharmony_ci 101da853ecaSopenharmony_civoid FaultAudioCodecEventWrite(AudioCodecFaultInfo& audioCodecFaultInfo) 102da853ecaSopenharmony_ci{ 103da853ecaSopenharmony_ci HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MEDIA, "AUDIO_CODEC_FAILURE", 104da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 105da853ecaSopenharmony_ci "APP_NAME", audioCodecFaultInfo.appName, 106da853ecaSopenharmony_ci "INSTANCE_ID", audioCodecFaultInfo.instanceId, 107da853ecaSopenharmony_ci "CALLER_TYPE", audioCodecFaultInfo.callerType, 108da853ecaSopenharmony_ci "AUDIO_CODEC", audioCodecFaultInfo.audioCodec, 109da853ecaSopenharmony_ci "ERROR_MESG", audioCodecFaultInfo.errMsg); 110da853ecaSopenharmony_ci} 111da853ecaSopenharmony_ci 112da853ecaSopenharmony_civoid FaultVideoCodecEventWrite(VideoCodecFaultInfo& videoCodecFaultInfo) 113da853ecaSopenharmony_ci{ 114da853ecaSopenharmony_ci HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MEDIA, "VIDEO_CODEC_FAILURE", 115da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 116da853ecaSopenharmony_ci "APP_NAME", videoCodecFaultInfo.appName, 117da853ecaSopenharmony_ci "INSTANCE_ID", videoCodecFaultInfo.instanceId, 118da853ecaSopenharmony_ci "CALLER_TYPE", videoCodecFaultInfo.callerType, 119da853ecaSopenharmony_ci "VIDEO_CODEC", videoCodecFaultInfo.videoCodec, 120da853ecaSopenharmony_ci "ERROR_MESG", videoCodecFaultInfo.errMsg); 121da853ecaSopenharmony_ci} 122da853ecaSopenharmony_ci 123da853ecaSopenharmony_civoid FaultMuxerEventWrite(MuxerFaultInfo& muxerFaultInfo) 124da853ecaSopenharmony_ci{ 125da853ecaSopenharmony_ci HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MEDIA, "MUXER_FAILURE", 126da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 127da853ecaSopenharmony_ci "APP_NAME", muxerFaultInfo.appName, 128da853ecaSopenharmony_ci "INSTANCE_ID", muxerFaultInfo.instanceId, 129da853ecaSopenharmony_ci "CALLER_TYPE", muxerFaultInfo.callerType, 130da853ecaSopenharmony_ci "VIDEO_CODEC", muxerFaultInfo.videoCodec, 131da853ecaSopenharmony_ci "AUDIO_CODEC", muxerFaultInfo.audioCodec, 132da853ecaSopenharmony_ci "CONTAINER_FORMAT", muxerFaultInfo.containerFormat, 133da853ecaSopenharmony_ci "ERROR_MESG", muxerFaultInfo.errMsg); 134da853ecaSopenharmony_ci} 135da853ecaSopenharmony_ci 136da853ecaSopenharmony_civoid FaultRecordAudioEventWrite(AudioSourceFaultInfo& audioSourceFaultInfo) 137da853ecaSopenharmony_ci{ 138da853ecaSopenharmony_ci HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MEDIA, "RECORD_AUDIO_FAILURE", 139da853ecaSopenharmony_ci OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, 140da853ecaSopenharmony_ci "APP_NAME", audioSourceFaultInfo.appName, 141da853ecaSopenharmony_ci "INSTANCE_ID", audioSourceFaultInfo.instanceId, 142da853ecaSopenharmony_ci "AUDIO_SOURCE_TYPE", audioSourceFaultInfo.audioSourceType, 143da853ecaSopenharmony_ci "ERROR_MESG", audioSourceFaultInfo.errMsg); 144da853ecaSopenharmony_ci} 145da853ecaSopenharmony_ci} // namespace MediaAVCodec 146da853ecaSopenharmony_ci} // namespace OHOS 147