Shaka Packager SDK
Loading...
Searching...
No Matches
simple_mpd_notifier.h
1// Copyright 2014 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 MPD_BASE_SIMPLE_MPD_NOTIFIER_H_
8#define MPD_BASE_SIMPLE_MPD_NOTIFIER_H_
9
10#include <cstdint>
11#include <map>
12#include <memory>
13#include <string>
14#include <vector>
15
16#include <absl/synchronization/mutex.h>
17
18#include <packager/mpd/base/mpd_notifier.h>
19#include <packager/mpd/base/mpd_notifier_util.h>
20
21namespace shaka {
22
23class AdaptationSet;
24class MpdBuilder;
25class Representation;
26
27struct MpdOptions;
28
32 public:
33 explicit SimpleMpdNotifier(const MpdOptions& mpd_options);
34 ~SimpleMpdNotifier() override;
35
39 bool Init() override;
40 bool NotifyNewContainer(const MediaInfo& media_info, uint32_t* id) override;
41 bool NotifyAvailabilityTimeOffset(uint32_t container_id) override;
42 bool NotifySampleDuration(uint32_t container_id,
43 int32_t sample_duration) override;
44 bool NotifySegmentDuration(uint32_t container_id) override;
45 bool NotifyNewSegment(uint32_t container_id,
46 int64_t start_time,
47 int64_t duration,
48 uint64_t size,
49 int64_t segment_number) override;
50 bool NotifyCompletedSegment(uint32_t container_id,
51 int64_t duration,
52 uint64_t size) override;
53 bool NotifyCueEvent(uint32_t container_id, int64_t timestamp) override;
54 bool NotifyEncryptionUpdate(uint32_t container_id,
55 const std::string& drm_uuid,
56 const std::vector<uint8_t>& new_key_id,
57 const std::vector<uint8_t>& new_pssh) override;
58 bool NotifyMediaInfoUpdate(uint32_t container_id,
59 const MediaInfo& media_info) override;
60 bool Flush() override;
62
63 private:
64 SimpleMpdNotifier(const SimpleMpdNotifier&) = delete;
65 SimpleMpdNotifier& operator=(const SimpleMpdNotifier&) = delete;
66
67 friend class SimpleMpdNotifierTest;
68
69 // Testing only method. Returns a pointer to MpdBuilder.
70 MpdBuilder* MpdBuilderForTesting() const { return mpd_builder_.get(); }
71
72 // Testing only method. Sets mpd_builder_.
73 void SetMpdBuilderForTesting(std::unique_ptr<MpdBuilder> mpd_builder) {
74 mpd_builder_ = std::move(mpd_builder);
75 }
76
77 // MPD output path.
78 std::string output_path_;
79 std::unique_ptr<MpdBuilder> mpd_builder_;
80 bool content_protection_in_adaptation_set_ = true;
81 absl::Mutex lock_;
82
83 uint32_t next_adaptation_set_id_ = 0;
84 // Maps Representation ID to Representation.
85 std::map<uint32_t, Representation*> representation_map_;
86 // Maps Representation ID to AdaptationSet. This is for updating the PSSH.
87 std::map<uint32_t, AdaptationSet*> representation_id_to_adaptation_set_;
88};
89
90} // namespace shaka
91
92#endif // MPD_BASE_SIMPLE_MPD_NOTIFIER_H_
This class generates DASH MPDs (Media Presentation Descriptions).
Definition mpd_builder.h:38
bool NotifyNewSegment(uint32_t container_id, int64_t start_time, int64_t duration, uint64_t size, int64_t segment_number) override
bool NotifyCompletedSegment(uint32_t container_id, int64_t duration, uint64_t size) override
bool NotifySampleDuration(uint32_t container_id, int32_t sample_duration) override
bool NotifyNewContainer(const MediaInfo &media_info, uint32_t *id) override
bool NotifyCueEvent(uint32_t container_id, int64_t timestamp) override
bool NotifyMediaInfoUpdate(uint32_t container_id, const MediaInfo &media_info) override
bool NotifyEncryptionUpdate(uint32_t container_id, const std::string &drm_uuid, const std::vector< uint8_t > &new_key_id, const std::vector< uint8_t > &new_pssh) override
bool NotifySegmentDuration(uint32_t container_id) override
bool NotifyAvailabilityTimeOffset(uint32_t container_id) override
All the methods that are virtual are virtual for mocking.
Defines Mpd Options.
Definition mpd_options.h:25