snapcast/client/oggDecoder.h
(no author) 00fac3eccb controller
git-svn-id: svn://elaine/murooma/trunk@242 d8a302eb-03bc-478d-80e4-98257eca68ef
2014-09-09 20:31:03 +00:00

40 lines
1.1 KiB
C++

#ifndef OGG_DECODER_H
#define OGG_DECODER_H
#include "decoder.h"
#include <vorbis/codec.h>
class OggDecoder : public Decoder
{
public:
OggDecoder();
virtual ~OggDecoder();
virtual bool decode(PcmChunk* chunk);
virtual bool setHeader(HeaderMessage* chunk);
private:
bool decodePayload(PcmChunk* chunk);
ogg_sync_state oy; /* sync and verify incoming physical bitstream */
ogg_stream_state os; /* take physical pages, weld into a logical
stream of packets */
ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */
ogg_packet op; /* one raw packet of data for decode */
vorbis_info vi; /* struct that stores all the static vorbis bitstream
settings */
vorbis_comment vc; /* struct that stores all the bitstream user comments */
vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
vorbis_block vb; /* local working space for packet->PCM decode */
ogg_int16_t* convbuffer; /* take 8k out of the data segment, not the stack */
int convsize;
char *buffer;
int bytes;
};
#endif