// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_BASE_AUDIO_TIMESTAMP_HELPER_H_ #define MEDIA_BASE_AUDIO_TIMESTAMP_HELPER_H_ #include <stdint.h> #include <optional> #include "base/time/time.h" #include "media/base/media_export.h" namespace media { // Generates timestamps for a sequence of audio sample frames. This class should // be used any place timestamps need to be calculated for a sequence of audio // samples. It helps avoid timestamps inaccuracies caused by rounding/truncation // in repeated sample count to timestamp conversions. // // The class is constructed with samples_per_second information so that it can // convert audio sample frame counts into timestamps. After the object is // constructed, SetBaseTimestamp() must be called to specify the starting // timestamp of the audio sequence. As audio samples are received, their frame // counts are added using AddFrames(). These frame counts are accumulated by // this class so GetTimestamp() can be used to determine the timestamp for the // samples that have been added. GetDuration() calculates the proper duration // values for samples added to the current timestamp. GetFramesToTarget() // determines the number of frames that need to be added/removed from the // accumulated frames to reach a target timestamp. class MEDIA_EXPORT AudioTimestampHelper { … }; } // namespace media #endif // MEDIA_BASE_AUDIO_TIMESTAMP_HELPER_H_