diff options
Diffstat (limited to 'chromium/media/base/audio_decoder_config.h')
-rw-r--r-- | chromium/media/base/audio_decoder_config.h | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/chromium/media/base/audio_decoder_config.h b/chromium/media/base/audio_decoder_config.h index 53705ccda7b..c8c7b47d23d 100644 --- a/chromium/media/base/audio_decoder_config.h +++ b/chromium/media/base/audio_decoder_config.h @@ -5,6 +5,7 @@ #ifndef MEDIA_BASE_AUDIO_DECODER_CONFIG_H_ #define MEDIA_BASE_AUDIO_DECODER_CONFIG_H_ +#include <string> #include <vector> #include "base/basictypes.h" @@ -18,29 +19,30 @@ namespace media { enum AudioCodec { // These values are histogrammed over time; do not change their ordinal // values. When deleting a codec replace it with a dummy value; when adding a - // codec, do so at the bottom before kAudioCodecMax. + // codec, do so at the bottom before kAudioCodecMax, and update the value of + // kAudioCodecMax to equal the new codec. kUnknownAudioCodec = 0, - kCodecAAC, - kCodecMP3, - kCodecPCM, - kCodecVorbis, - kCodecFLAC, - kCodecAMR_NB, - kCodecAMR_WB, - kCodecPCM_MULAW, - kCodecGSM_MS, - kCodecPCM_S16BE, - kCodecPCM_S24BE, - kCodecOpus, - kCodecEAC3, - kCodecPCM_ALAW, + kCodecAAC = 1, + kCodecMP3 = 2, + kCodecPCM = 3, + kCodecVorbis = 4, + kCodecFLAC = 5, + kCodecAMR_NB = 6, + kCodecAMR_WB = 7, + kCodecPCM_MULAW = 8, + kCodecGSM_MS = 9, + kCodecPCM_S16BE = 10, + kCodecPCM_S24BE = 11, + kCodecOpus = 12, + // kCodecEAC3 = 13, + kCodecPCM_ALAW = 14, // DO NOT ADD RANDOM AUDIO CODECS! // // The only acceptable time to add a new codec is if there is production code // that uses said codec in the same CL. - // Must always be last! - kAudioCodecMax + // Must always be equal to the largest entry ever logged. + kAudioCodecMax = kCodecPCM_ALAW, }; // TODO(dalecurtis): FFmpeg API uses |bytes_per_channel| instead of @@ -61,13 +63,13 @@ class MEDIA_EXPORT AudioDecoderConfig { ~AudioDecoderConfig(); - // Resets the internal state of this object. + // Resets the internal state of this object. |codec_delay| is in frames. void Initialize(AudioCodec codec, SampleFormat sample_format, ChannelLayout channel_layout, int samples_per_second, const uint8* extra_data, size_t extra_data_size, bool is_encrypted, bool record_stats, base::TimeDelta seek_preroll, - base::TimeDelta codec_delay); + int codec_delay); // Returns true if this object has appropriate configuration values, false // otherwise. @@ -77,6 +79,10 @@ class MEDIA_EXPORT AudioDecoderConfig { // Note: The contents of |extra_data_| are compared not the raw pointers. bool Matches(const AudioDecoderConfig& config) const; + // Returns a human-readable string describing |*this|. For debugging & test + // output only. + std::string AsHumanReadableString() const; + AudioCodec codec() const { return codec_; } int bits_per_channel() const { return bytes_per_channel_ * 8; } int bytes_per_channel() const { return bytes_per_channel_; } @@ -85,7 +91,7 @@ class MEDIA_EXPORT AudioDecoderConfig { SampleFormat sample_format() const { return sample_format_; } int bytes_per_frame() const { return bytes_per_frame_; } base::TimeDelta seek_preroll() const { return seek_preroll_; } - base::TimeDelta codec_delay() const { return codec_delay_; } + int codec_delay() const { return codec_delay_; } // Optional byte data required to initialize audio decoders such as Vorbis // codebooks. @@ -113,10 +119,10 @@ class MEDIA_EXPORT AudioDecoderConfig { // before the decoded data is valid. base::TimeDelta seek_preroll_; - // |codec_delay_| is the overall delay overhead added by the codec while - // encoding. This value should be subtracted from each block's timestamp to - // get the actual timestamp. - base::TimeDelta codec_delay_; + // |codec_delay_| is the number of frames the decoder should discard before + // returning decoded data. This value can include both decoder delay as well + // as padding added during encoding. + int codec_delay_; // Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler // generated copy constructor and assignment operator. Since the extra data is |