1// Copyright (c) 2012 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// Timestamps are derived directly from the encoded media file and are commonly
6// known as the presentation timestamp (PTS).  Durations are a best-guess and
7// are usually derived from the sample/frame rate of the media file.
8//
9// Due to encoding and transmission errors, it is not guaranteed that timestamps
10// arrive in a monotonically increasing order nor that the next timestamp will
11// be equal to the previous timestamp plus the duration.
12//
13// In the ideal scenario for a 25fps movie, buffers are timestamped as followed:
14//
15//               Buffer0      Buffer1      Buffer2      ...      BufferN
16// Timestamp:        0us      40000us      80000us      ...   (N*40000)us
17// Duration*:    40000us      40000us      40000us      ...       40000us
18//
19//  *25fps = 0.04s per frame = 40000us per frame
20
21#ifndef MEDIA_BASE_BUFFERS_H_
22#define MEDIA_BASE_BUFFERS_H_
23
24#include "base/basictypes.h"
25#include "base/memory/ref_counted.h"
26#include "base/time/time.h"
27#include "media/base/media_export.h"
28
29namespace media {
30
31// TODO(scherkus): Move the contents of this file elsewhere.
32
33// Indicates an invalid or missing timestamp.
34MEDIA_EXPORT extern inline base::TimeDelta kNoTimestamp() {
35  return base::TimeDelta::FromMicroseconds(kint64min);
36}
37
38// Represents an infinite stream duration.
39MEDIA_EXPORT extern inline base::TimeDelta kInfiniteDuration() {
40  return base::TimeDelta::Max();
41}
42
43}  // namespace media
44
45#endif  // MEDIA_BASE_BUFFERS_H_
46