michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim:set ts=2 sw=2 sts=2 et cindent: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: #if !defined(WaveDecoder_h_) michael@0: #define WaveDecoder_h_ michael@0: michael@0: #include "MediaDecoder.h" michael@0: michael@0: /** michael@0: * The decoder implementation is currently limited to Linear PCM encoded michael@0: * audio data with one or two channels of 8- or 16-bit samples at sample michael@0: * rates from 100 Hz to 96 kHz. The number of channels is limited by what michael@0: * the audio backend (via AudioStream) currently supports. The supported michael@0: * sample rate is artificially limited to arbitrarily selected sane values. michael@0: * Support for additional channels (and other new features) would michael@0: * require extending WaveDecoder to support parsing the newer michael@0: * WAVE_FORMAT_EXTENSIBLE chunk format. michael@0: **/ michael@0: michael@0: namespace mozilla { michael@0: michael@0: class WaveDecoder : public MediaDecoder michael@0: { michael@0: public: michael@0: virtual MediaDecoder* Clone() { michael@0: if (!IsWaveEnabled()) { michael@0: return nullptr; michael@0: } michael@0: return new WaveDecoder(); michael@0: } michael@0: virtual MediaDecoderStateMachine* CreateStateMachine(); michael@0: }; michael@0: michael@0: } // namespace mozilla michael@0: michael@0: #endif