Mark WebGL conformance test 'texture-upload-size' as flaky.
[chromium-blink-merge.git] / media / base / android / audio_decoder_job.h
blob9bc293dd2f8f614eee99d1032482b490dffa9144
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>
9 #include <vector>
11 #include "base/callback.h"
12 #include "media/base/android/media_decoder_job.h"
14 namespace media {
16 class AudioCodecBridge;
17 class AudioTimestampHelper;
19 // Class for managing audio decoding jobs.
20 class AudioDecoderJob : public MediaDecoderJob {
21 public:
22 // Creates a new AudioDecoderJob instance for decoding audio.
23 // |request_data_cb| - Callback used to request more data for the decoder.
24 // |on_demuxer_config_changed_cb| - Callback used to inform the caller that
25 // demuxer config has changed.
26 AudioDecoderJob(const base::Closure& request_data_cb,
27 const base::Closure& on_demuxer_config_changed_cb);
28 virtual ~AudioDecoderJob();
30 // MediaDecoderJob implementation.
31 virtual bool HasStream() const override;
32 virtual void SetDemuxerConfigs(const DemuxerConfigs& configs) override;
34 // Sets the volume of the audio output.
35 void SetVolume(double volume);
37 // Sets the base timestamp for |audio_timestamp_helper_|.
38 void SetBaseTimestamp(base::TimeDelta base_timestamp);
40 private:
41 // MediaDecoderJob implementation.
42 virtual void ReleaseOutputBuffer(
43 int output_buffer_index,
44 size_t size,
45 bool render_output,
46 base::TimeDelta current_presentation_timestamp,
47 const ReleaseOutputCompletionCallback& callback) override;
48 virtual bool ComputeTimeToRender() const override;
49 virtual bool AreDemuxerConfigsChanged(
50 const DemuxerConfigs& configs) const override;
51 virtual bool CreateMediaCodecBridgeInternal() override;
53 // Helper method to set the audio output volume.
54 void SetVolumeInternal();
56 // Audio configs from the demuxer.
57 AudioCodec audio_codec_;
58 int num_channels_;
59 int sampling_rate_;
60 std::vector<uint8> audio_extra_data_;
61 double volume_;
62 int bytes_per_frame_;
64 // Base timestamp for the |audio_timestamp_helper_|.
65 base::TimeDelta base_timestamp_;
67 // Object to calculate the current audio timestamp for A/V sync.
68 scoped_ptr<AudioTimestampHelper> audio_timestamp_helper_;
70 DISALLOW_COPY_AND_ASSIGN(AudioDecoderJob);
73 } // namespace media
75 #endif // MEDIA_BASE_ANDROID_AUDIO_DECODER_JOB_H_