Allow overlapping sync and async startup requests
[chromium-blink-merge.git] / media / base / android / audio_decoder_job.h
blob171dc4e2aa99d3eb171ce45db7cc8487f442c1e9
1 // Copyright 2013 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.
5 #ifndef MEDIA_BASE_ANDROID_AUDIO_DECODER_JOB_H_
6 #define MEDIA_BASE_ANDROID_AUDIO_DECODER_JOB_H_
8 #include <jni.h>
10 #include "media/base/android/media_decoder_job.h"
12 namespace media {
14 class AudioCodecBridge;
16 // Class for managing audio decoding jobs.
17 class AudioDecoderJob : public MediaDecoderJob {
18 public:
19 virtual ~AudioDecoderJob();
21 // Creates a new AudioDecoderJob instance for decoding audio.
22 // |audio_codec| - The audio format the object needs to decode.
23 // |sample_rate| - The sample rate of the decoded output.
24 // |channel_count| - The number of channels in the decoded output.
25 // |extra_data|, |extra_data_size| - Extra data buffer needed for initializing
26 // the decoder.
27 // |media_crypto| - Handle to a Java object that handles the encryption for
28 // the audio data.
29 static AudioDecoderJob* Create(
30 const AudioCodec audio_codec, int sample_rate, int channel_count,
31 const uint8* extra_data, size_t extra_data_size, jobject media_crypto);
33 void SetVolume(double volume);
35 private:
36 AudioDecoderJob(scoped_ptr<AudioCodecBridge> audio_decoder_bridge);
38 // MediaDecoderJob implementation.
39 virtual void ReleaseOutputBuffer(
40 int outputBufferIndex, size_t size,
41 const base::TimeDelta& presentation_timestamp,
42 const MediaDecoderJob::DecoderCallback& callback,
43 DecodeStatus status) OVERRIDE;
45 virtual bool ComputeTimeToRender() const OVERRIDE;
47 scoped_ptr<AudioCodecBridge> audio_codec_bridge_;
50 } // namespace media
52 #endif // MEDIA_BASE_ANDROID_AUDIO_DECODER_JOB_H_