diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/Document.h b/Userland/Libraries/LibVideo/Containers/Matroska/Document.h index eb7d8e24d5..96b2962c74 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/Document.h +++ b/Userland/Libraries/LibVideo/Containers/Matroska/Document.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -152,8 +153,8 @@ public: u64 track_number() const { return m_track_number; } void set_track_number(u64 track_number) { m_track_number = track_number; } - i16 timestamp() const { return m_timestamp; } - void set_timestamp(i16 timestamp) { m_timestamp = timestamp; } + Time timestamp() const { return m_timestamp; } + void set_timestamp(Time timestamp) { m_timestamp = timestamp; } bool only_keyframes() const { return m_only_keyframes; } void set_only_keyframes(bool only_keyframes) { m_only_keyframes = only_keyframes; } bool invisible() const { return m_invisible; } @@ -170,7 +171,7 @@ public: private: u64 m_track_number { 0 }; - i16 m_timestamp { 0 }; + Time m_timestamp { Time::zero() }; bool m_only_keyframes { false }; bool m_invisible { false }; Lacing m_lacing { None }; @@ -180,11 +181,11 @@ private: class Cluster { public: - u64 timestamp() const { return m_timestamp; } - void set_timestamp(u64 timestamp) { m_timestamp = timestamp; } + Time timestamp() const { return m_timestamp; } + void set_timestamp(Time timestamp) { m_timestamp = timestamp; } private: - u64 m_timestamp; + Time m_timestamp { Time::zero() }; }; } diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp b/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp index 04920926f5..10984bd6de 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp +++ b/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp @@ -72,10 +72,8 @@ DecoderErrorOr> MatroskaDemuxer::get_next_sample_for_track status.block = TRY(status.iterator.next_block()); status.frame_index = 0; } - auto const& cluster = status.iterator.current_cluster(); - Time timestamp = Time::from_nanoseconds((cluster.timestamp() + status.block->timestamp()) * TRY(m_reader.segment_information()).timestamp_scale()); auto cicp = TRY(m_reader.track_for_track_number(track.identifier())).video_track()->color_format.to_cicp(); - return make(status.block->frame(status.frame_index++), cicp, timestamp); + return make(status.block->frame(status.frame_index++), cicp, status.block->timestamp()); } DecoderErrorOr