1/*
2 * Copyright (c) 2023-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 HISTREAMER_PLUGIN_EVENT_H
17#define HISTREAMER_PLUGIN_EVENT_H
18
19#include <cstdint> // NOLINT: using int32_t in this file
20#include <string>
21#include "meta/any.h"
22
23namespace OHOS {
24namespace Media {
25namespace Plugins {
26enum struct PluginEventType : int32_t {
27    CLIENT_ERROR,
28    SERVER_ERROR,
29    OTHER_ERROR,
30    BELOW_LOW_WATERLINE,
31    ABOVE_LOW_WATERLINE,
32    AUDIO_INTERRUPT,
33    AUDIO_STATE_CHANGE,
34    EVENT_CHANNEL_OPENED,
35    EVENT_CHANNEL_OPEN_FAIL,
36    EVENT_CHANNEL_CLOSED,
37    SOURCE_DRM_INFO_UPDATE,
38    BUFFERING_START,
39    BUFFERING_PERCENT,
40    BUFFERING_END,
41    CACHED_DURATION,
42    VIDEO_SIZE_CHANGE,
43    SOURCE_BITRATE_START,
44    EVENT_BUFFER_PROGRESS,
45};
46
47enum class NetworkClientErrorCode : int32_t {
48    ERROR_OK,
49    ERROR_TIME_OUT,
50    ERROR_NOT_RETRY,
51    ERROR_UNKNOWN,
52};
53
54using NetworkServerErrorCode = int;
55
56struct PluginEvent {
57    PluginEventType type;
58    Any param;
59    std::string description;
60};
61
62} // namespace Plugins
63} // namespace Media
64} // namespace OHOS
65#endif // HISTREAMER_PLUGIN_TYPES_H
66