9 #ifndef PACKAGER_MPD_BASE_REPRESENTATION_H_ 10 #define PACKAGER_MPD_BASE_REPRESENTATION_H_ 12 #include "packager/mpd/base/bandwidth_estimator.h" 13 #include "packager/mpd/base/media_info.pb.h" 14 #include "packager/mpd/base/segment_info.h" 15 #include "packager/mpd/base/xml/scoped_xml_ptr.h" 24 struct ContentProtectionElement;
29 class RepresentationXmlNode;
41 virtual void OnNewSegmentForRepresentation(int64_t start_time,
42 int64_t duration) = 0;
48 virtual void OnSetFrameRateForRepresentation(uint32_t frame_duration,
49 uint32_t timescale) = 0;
59 kSuppressFrameRate = 4,
79 virtual void AddContentProtectionElement(
93 virtual void UpdateContentProtectionPssh(
const std::string& drm_uuid,
94 const std::string& pssh);
104 virtual void AddNewSegment(int64_t start_time,
113 virtual void SetSampleDuration(uint32_t sample_duration);
116 virtual const MediaInfo& GetMediaInfo()
const;
119 xml::scoped_xml_ptr<xmlNode> GetXml();
129 void SuppressOnce(SuppressFlag flag);
132 void SetPresentationTimeOffset(
double presentation_time_offset);
142 bool GetStartAndEndTimestamps(
double* start_timestamp_seconds,
143 double* end_timestamp_seconds)
const;
146 uint32_t
id()
const {
return id_; }
148 void set_media_info(
const MediaInfo& media_info) { media_info_ = media_info; }
160 const MediaInfo& media_info,
162 uint32_t representation_id,
163 std::unique_ptr<RepresentationStateChangeListener> state_change_listener);
170 std::unique_ptr<RepresentationStateChangeListener> state_change_listener);
177 friend class RepresentationTest;
181 bool HasRequiredMediaInfoFields()
const;
185 void AddSegmentInfo(int64_t start_time, int64_t duration);
190 bool ApproximiatelyEqual(int64_t time1, int64_t time2)
const;
194 int64_t AdjustDuration(int64_t duration)
const;
205 std::string GetVideoMimeType()
const;
206 std::string GetAudioMimeType()
const;
207 std::string GetTextMimeType()
const;
210 std::string RepresentationAsString()
const;
214 MediaInfo media_info_;
215 std::list<ContentProtectionElement> content_protection_elements_;
217 int64_t current_buffer_depth_ = 0;
219 std::list<SegmentInfo> segment_infos_;
222 std::list<std::string> segments_to_be_removed_;
225 std::string mime_type_;
232 uint32_t start_number_ = 1;
236 std::unique_ptr<RepresentationStateChangeListener> state_change_listener_;
239 int output_suppression_flags_ = 0;
243 const bool allow_approximate_segment_timeline_ =
false;
246 uint32_t frame_duration_ = 0;
251 #endif // PACKAGER_MPD_BASE_REPRESENTATION_H_
All the methods that are virtual are virtual for mocking.