Shaka Packager SDK
Loading...
Searching...
No Matches
hls_notifier.h
1// Copyright 2016 Google LLC. All rights reserved.
2//
3// Use of this source code is governed by a BSD-style
4// license that can be found in the LICENSE file or at
5// https://developers.google.com/open-source/licenses/bsd
6
7#ifndef PACKAGER_HLS_BASE_HLS_NOTIFIER_H_
8#define PACKAGER_HLS_BASE_HLS_NOTIFIER_H_
9
10#include <string>
11#include <vector>
12
13#include <packager/hls_params.h>
14#include <packager/mpd/base/media_info.pb.h>
15
16namespace shaka {
17namespace hls {
18
19// TODO(rkuroiwa): Consider merging this with MpdNotifier.
21 public:
22 explicit HlsNotifier(const HlsParams& hls_params) : hls_params_(hls_params) {}
23 virtual ~HlsNotifier() {}
24
27 virtual bool Init() = 0;
28
38 virtual bool NotifyNewStream(const MediaInfo& media_info,
39 const std::string& playlist_name,
40 const std::string& stream_name,
41 const std::string& group_id,
42 uint32_t* stream_id) = 0;
43
50 virtual bool NotifySampleDuration(uint32_t stream_id,
51 int32_t sample_duration) = 0;
52
61 virtual bool NotifyNewSegment(uint32_t stream_id,
62 const std::string& segment_name,
63 int64_t start_time,
64 int64_t duration,
65 uint64_t start_byte_offset,
66 uint64_t size) = 0;
67
74 virtual bool NotifyKeyFrame(uint32_t stream_id,
75 int64_t timestamp,
76 uint64_t start_byte_offset,
77 uint64_t size) = 0;
78
82 virtual bool NotifyCueEvent(uint32_t stream_id, int64_t timestamp) = 0;
83
93 uint32_t stream_id,
94 const std::vector<uint8_t>& key_id,
95 const std::vector<uint8_t>& system_id,
96 const std::vector<uint8_t>& iv,
97 const std::vector<uint8_t>& protection_system_specific_data) = 0;
98
101 virtual bool Flush() = 0;
102
104 const HlsParams& hls_params() const { return hls_params_; }
105
106 private:
107 const HlsParams hls_params_;
108};
109
110} // namespace hls
111} // namespace shaka
112
113#endif // PACKAGER_HLS_BASE_HLS_NOTIFIER_H_
virtual bool NotifyCueEvent(uint32_t stream_id, int64_t timestamp)=0
virtual bool NotifyNewSegment(uint32_t stream_id, const std::string &segment_name, int64_t start_time, int64_t duration, uint64_t start_byte_offset, uint64_t size)=0
virtual bool NotifyNewStream(const MediaInfo &media_info, const std::string &playlist_name, const std::string &stream_name, const std::string &group_id, uint32_t *stream_id)=0
virtual bool NotifyEncryptionUpdate(uint32_t stream_id, const std::vector< uint8_t > &key_id, const std::vector< uint8_t > &system_id, const std::vector< uint8_t > &iv, const std::vector< uint8_t > &protection_system_specific_data)=0
virtual bool NotifySampleDuration(uint32_t stream_id, int32_t sample_duration)=0
virtual bool NotifyKeyFrame(uint32_t stream_id, int64_t timestamp, uint64_t start_byte_offset, uint64_t size)=0
virtual bool Flush()=0
virtual bool Init()=0
const HlsParams & hls_params() const
All the methods that are virtual are virtual for mocking.