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#ifndef AVCODEC_SYSEVENT_H
17da853ecaSopenharmony_ci#define AVCODEC_SYSEVENT_H
18da853ecaSopenharmony_ci
19da853ecaSopenharmony_ci#include <string>
20da853ecaSopenharmony_ci#include <sys/types.h>
21da853ecaSopenharmony_ci#include "nocopyable.h"
22da853ecaSopenharmony_ci#include "hisysevent.h"
23da853ecaSopenharmony_ci
24da853ecaSopenharmony_cinamespace OHOS {
25da853ecaSopenharmony_cinamespace MediaAVCodec {
26da853ecaSopenharmony_cienum class FaultType : int32_t {
27da853ecaSopenharmony_ci    FAULT_TYPE_INVALID = -1,
28da853ecaSopenharmony_ci    FAULT_TYPE_FREEZE = 0,
29da853ecaSopenharmony_ci    FAULT_TYPE_CRASH,
30da853ecaSopenharmony_ci    FAULT_TYPE_INNER_ERROR,
31da853ecaSopenharmony_ci    FAULT_TYPE_END,
32da853ecaSopenharmony_ci};
33da853ecaSopenharmony_ci
34da853ecaSopenharmony_cistruct CodecDfxInfo {
35da853ecaSopenharmony_ci    pid_t clientPid;
36da853ecaSopenharmony_ci    uid_t clientUid;
37da853ecaSopenharmony_ci    int32_t codecInstanceId;
38da853ecaSopenharmony_ci    std::string codecName;
39da853ecaSopenharmony_ci    std::string codecIsVendor;
40da853ecaSopenharmony_ci    std::string codecMode;
41da853ecaSopenharmony_ci    int64_t encoderBitRate;
42da853ecaSopenharmony_ci    int32_t videoWidth;
43da853ecaSopenharmony_ci    int32_t videoHeight;
44da853ecaSopenharmony_ci    double videoFrameRate;
45da853ecaSopenharmony_ci    std::string videoPixelFormat;
46da853ecaSopenharmony_ci    int32_t audioChannelCount;
47da853ecaSopenharmony_ci    int32_t audioSampleRate;
48da853ecaSopenharmony_ci};
49da853ecaSopenharmony_ci
50da853ecaSopenharmony_cistruct DemuxerFaultInfo {
51da853ecaSopenharmony_ci    std::string appName;
52da853ecaSopenharmony_ci    std::string instanceId;
53da853ecaSopenharmony_ci    std::string callerType;
54da853ecaSopenharmony_ci    int8_t sourceType;
55da853ecaSopenharmony_ci    std::string containerFormat;
56da853ecaSopenharmony_ci    std::string streamType;
57da853ecaSopenharmony_ci    std::string errMsg;
58da853ecaSopenharmony_ci};
59da853ecaSopenharmony_ci
60da853ecaSopenharmony_cistruct MuxerFaultInfo {
61da853ecaSopenharmony_ci    std::string appName;
62da853ecaSopenharmony_ci    std::string instanceId;
63da853ecaSopenharmony_ci    std::string callerType;
64da853ecaSopenharmony_ci    std::string videoCodec;
65da853ecaSopenharmony_ci    std::string audioCodec;
66da853ecaSopenharmony_ci    std::string metaCodec;
67da853ecaSopenharmony_ci    std::string containerFormat;
68da853ecaSopenharmony_ci    std::string errMsg;
69da853ecaSopenharmony_ci};
70da853ecaSopenharmony_ci
71da853ecaSopenharmony_cistruct AudioCodecFaultInfo {
72da853ecaSopenharmony_ci    std::string appName;
73da853ecaSopenharmony_ci    std::string instanceId;
74da853ecaSopenharmony_ci    std::string callerType;
75da853ecaSopenharmony_ci    std::string audioCodec;
76da853ecaSopenharmony_ci    std::string errMsg;
77da853ecaSopenharmony_ci};
78da853ecaSopenharmony_ci
79da853ecaSopenharmony_cistruct VideoCodecFaultInfo {
80da853ecaSopenharmony_ci    std::string appName;
81da853ecaSopenharmony_ci    std::string instanceId;
82da853ecaSopenharmony_ci    std::string callerType;
83da853ecaSopenharmony_ci    std::string videoCodec;
84da853ecaSopenharmony_ci    std::string errMsg;
85da853ecaSopenharmony_ci};
86da853ecaSopenharmony_ci
87da853ecaSopenharmony_cistruct AudioSourceFaultInfo {
88da853ecaSopenharmony_ci    std::string appName;
89da853ecaSopenharmony_ci    std::string instanceId;
90da853ecaSopenharmony_ci    int32_t audioSourceType;
91da853ecaSopenharmony_ci    std::string errMsg;
92da853ecaSopenharmony_ci};
93da853ecaSopenharmony_ci
94da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultEventWrite(FaultType faultType, const std::string& msg,
95da853ecaSopenharmony_ci                                                            const std::string& module);
96da853ecaSopenharmony_ci__attribute__((visibility("default"))) void ServiceStartEventWrite(uint32_t useTime, const std::string& module);
97da853ecaSopenharmony_ci__attribute__((visibility("default"))) void CodecStartEventWrite(CodecDfxInfo& codecDfxInfo);
98da853ecaSopenharmony_ci__attribute__((visibility("default"))) void CodecStopEventWrite(pid_t clientPid, uid_t clientUid,
99da853ecaSopenharmony_ci                                                                int32_t codecInstanceId);
100da853ecaSopenharmony_ci__attribute__((visibility("default"))) void DemuxerInitEventWrite(uint32_t downloadSize, std::string sourceType);
101da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultDemuxerEventWrite(DemuxerFaultInfo& demuxerFaultInfo);
102da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultAudioCodecEventWrite(AudioCodecFaultInfo& audioCodecFaultInfo);
103da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultVideoCodecEventWrite(VideoCodecFaultInfo& videoCodecFaultInfo);
104da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultMuxerEventWrite(MuxerFaultInfo& muxerFaultInfo);
105da853ecaSopenharmony_ci__attribute__((visibility("default"))) void FaultRecordAudioEventWrite(AudioSourceFaultInfo& audioSourceFaultInfo);
106da853ecaSopenharmony_ci} // namespace MediaAVCodec
107da853ecaSopenharmony_ci} // namespace OHOS
108da853ecaSopenharmony_ci#endif // AVCODEC_SYSEVENT_H