blob: 7d83631e195a6416c72ab010696519bd59efd228 [file] [log] [blame]
// Copyright (c) 2010 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#pragma once
#include "mkvparserstream.hpp"
namespace mkvparser
{
class AudioTrack;
class AudioStream : public Stream
{
explicit AudioStream(const AudioTrack*);
AudioStream(const AudioStream&);
AudioStream& operator=(const AudioStream&);
public:
static AudioStream* CreateInstance(const AudioTrack*);
void GetMediaTypes(CMediaTypes&) const;
HRESULT QueryAccept(const AM_MEDIA_TYPE*) const;
#if 0 //if we decide to support Xiph Ogg Vorbis decoder filter:
HRESULT SetConnectionMediaType(const AM_MEDIA_TYPE&);
#endif
//HRESULT UpdateAllocatorProperties(ALLOCATOR_PROPERTIES&) const;
protected:
std::wostream& GetKind(std::wostream&) const;
long GetBufferSize() const;
long GetBufferCount() const;
void OnPopulateSample(const BlockEntry*, const samples_t&) const;
void GetVorbisMediaTypes(CMediaTypes&) const;
#if 0 //if we decide to support Xiph Ogg Vorbis decoder filter:
bool SendPreroll(IMediaSample*);
bool (AudioStream::*m_preroll)(IMediaSample*);
bool DoNothing(IMediaSample*);
bool SendOggIdentPacket(IMediaSample*);
bool SendOggCommentPacket(IMediaSample*);
bool SendOggSetupPacket(IMediaSample*);
#endif
BYTE GetChannels() const;
ULONG GetSamplesPerSec() const;
BYTE GetBitsPerSample() const;
};
} //end namespace mkvparser