Home | History | Annotate | Download | only in mp2t
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MEDIA_FORMATS_MP2T_TIMESTAMP_UNROLLER_H_
      6 #define MEDIA_FORMATS_MP2T_TIMESTAMP_UNROLLER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/macros.h"
     10 #include "media/base/media_export.h"
     11 
     12 namespace media {
     13 namespace mp2t {
     14 
     15 class MEDIA_EXPORT TimestampUnroller {
     16  public:
     17   TimestampUnroller();
     18   ~TimestampUnroller();
     19 
     20   // Given that |timestamp| is coded using 33 bits (accuracy of MPEG-2 TS
     21   // timestamps), GetUnrolledTimestamp returns the corresponding unrolled
     22   // timestamp.
     23   // The unrolled timestamp is defined by:
     24   // |timestamp| + k * (2 ^ 33)
     25   // where k is estimated so that the unrolled timestamp is as close as
     26   // possible to the previous unrolled timestamp returned by this function
     27   // (if this function has not been called before, it will return the timestamp
     28   // unmodified).
     29   int64 GetUnrolledTimestamp(int64 timestamp);
     30 
     31   // Reset the TimestampUnroller to its initial state.
     32   void Reset();
     33 
     34  private:
     35   // Indicate whether the value of |previous_unrolled_timestamp_| is valid.
     36   bool is_previous_timestamp_valid_;
     37 
     38   // This is the last output of GetUnrolledTimestamp.
     39   int64 previous_unrolled_timestamp_;
     40 
     41   DISALLOW_COPY_AND_ASSIGN(TimestampUnroller);
     42 };
     43 
     44 }  // namespace mp2t
     45 }  // namespace media
     46 
     47 #endif  // MEDIA_FORMATS_MP2T_TIMESTAMP_UNROLLER_H_
     48