blob: 5c5c47b68e173a2175e8cec531ea3b7806bd689a [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Timestamps are derived directly from the encoded media file and are commonly
// known as the presentation timestamp (PTS). Durations are a best-guess and
// are usually derived from the sample/frame rate of the media file.
//
// Due to encoding and transmission errors, it is not guaranteed that timestamps
// arrive in a monotonically increasing order nor that the next timestamp will
// be equal to the previous timestamp plus the duration.
//
// In the ideal scenario for a 25fps movie, buffers are timestamped as followed:
//
// Buffer0 Buffer1 Buffer2 ... BufferN
// Timestamp: 0us 40000us 80000us ... (N*40000)us
// Duration*: 40000us 40000us 40000us ... 40000us
//
// *25fps = 0.04s per frame = 40000us per frame
#ifndef MEDIA_BASE_BUFFERS_H_
#define MEDIA_BASE_BUFFERS_H_
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/time/time.h"
#include "media/base/media_export.h"
namespace media {
// TODO(scherkus): Move the contents of this file elsewhere.
// Indicates an invalid or missing timestamp.
MEDIA_EXPORT extern inline base::TimeDelta kNoTimestamp() {
return base::TimeDelta::FromMicroseconds(kint64min);
}
// Represents an infinite stream duration.
MEDIA_EXPORT extern inline base::TimeDelta kInfiniteDuration() {
return base::TimeDelta::Max();
}
} // namespace media
#endif // MEDIA_BASE_BUFFERS_H_