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_PIPELINE_CORE_EVENT_H
17#define HISTREAMER_PIPELINE_CORE_EVENT_H
18
19#include <string>
20#include <map>
21#include "meta/any.h"
22
23namespace OHOS {
24namespace Media {
25// 各个组件向Pipeline报告的事件类型
26enum struct EventType : uint32_t {
27    EVENT_READY = 0,
28    EVENT_AUDIO_PROGRESS, // unit is HST_TIME_BASE
29    EVENT_VIDEO_PROGRESS, // unit is HST_TIME_BASE
30    EVENT_COMPLETE,
31    EVENT_ERROR,
32    EVENT_PLUGIN_ERROR,
33    EVENT_PLUGIN_EVENT,
34    EVENT_BUFFERING,
35    EVENT_BUFFER_PROGRESS,
36    EVENT_DECODER_ERROR,
37    EVENT_RESOLUTION_CHANGE,
38    EVENT_VIDEO_RENDERING_START,
39    EVENT_IS_LIVE_STREAM,
40    EVENT_DRM_INFO_UPDATED,
41    EVENT_AUDIO_INTERRUPT,
42    EVENT_AUDIO_STATE_CHANGE,
43    EVENT_AUDIO_FIRST_FRAME,
44    EVENT_AUDIO_DEVICE_CHANGE,
45    EVENT_AUDIO_SERVICE_DIED,
46    BUFFERING_START,
47    BUFFERING_END,
48    EVENT_CACHED_DURATION,
49    EVENT_SOURCE_BITRATE_START,
50    EVENT_SUBTITLE_TEXT_UPDATE,
51    EVENT_AUDIO_TRACK_CHANGE,
52    EVENT_VIDEO_TRACK_CHANGE,
53    EVENT_SUBTITLE_TRACK_CHANGE,
54    EVENT_VIDEO_LAG, // player lag event detected by video sink
55    EVENT_AUDIO_LAG, // player lag event detected by audio sink
56    EVENT_STREAM_LAG, // player lag event detected by sync manager
57};
58
59struct Event {
60    std::string srcFilter;
61    EventType type;
62    Any param;
63};
64
65const char* GetEventName(EventType type);
66} // namespace Media
67} // namespace OHOS
68#endif
69