kwave  18.07.70
FlacDecoder.h
Go to the documentation of this file.
1 /*************************************************************************
2  FlacDecoder.h - decoder for FLAC data
3  -------------------
4  begin : Tue Feb 28 2004
5  copyright : (C) 2004 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef FLAC_DECODER_H
19 #define FLAC_DECODER_H
20 
21 #include "config.h"
22 
23 #include <QList>
24 #include <QMap>
25 #include <QObject>
26 #include <QString>
27 #include <QStringList>
28 
29 #include <FLAC++/decoder.h>
30 #include <FLAC++/metadata.h>
31 #include <FLAC/format.h>
32 
33 #include "libkwave/Decoder.h"
34 #include "libkwave/FileInfo.h"
36 
37 class QWidget;
38 class QIODevice;
39 
40 namespace Kwave
41 {
42  class FlacDecoder: public Kwave::Decoder,
43  protected FLAC::Decoder::Stream
44  {
45  public:
47  FlacDecoder();
48 
50  virtual ~FlacDecoder() Q_DECL_OVERRIDE;
51 
53  virtual Kwave::Decoder *instance() Q_DECL_OVERRIDE;
54 
62  virtual bool open(QWidget *widget, QIODevice &source) Q_DECL_OVERRIDE;
63 
71  virtual bool decode(QWidget *widget, Kwave::MultiWriter &dst)
72  Q_DECL_OVERRIDE;
73 
77  virtual void close() Q_DECL_OVERRIDE;
78 
79  protected:
80 
87  void parseStreamInfo(const FLAC::Metadata::StreamInfo &stream_info);
88 
95  const FLAC::Metadata::VorbisComment &vorbis_comments);
96 
105  virtual ::FLAC__StreamDecoderReadStatus read_callback(
106  FLAC__byte buffer[], size_t *bytes) Q_DECL_OVERRIDE;
107 
115  virtual ::FLAC__StreamDecoderWriteStatus write_callback(
116  const ::FLAC__Frame *frame,
117  const FLAC__int32 *const buffer[]) Q_DECL_OVERRIDE;
118 
124  virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata)
125  Q_DECL_OVERRIDE;
126 
132  virtual void error_callback(::FLAC__StreamDecoderErrorStatus status)
133  Q_DECL_OVERRIDE;
134 
135  private:
136 
138  QIODevice *m_source;
139 
142 
145 
146  };
147 }
148 
149 #endif /* FLAC_DECODER_H */
150 
151 //***************************************************************************
152 //***************************************************************************
virtual void metadata_callback(const ::FLAC__StreamMetadata *metadata) Q_DECL_OVERRIDE
Definition: App.h:33
virtual void error_callback(::FLAC__StreamDecoderErrorStatus status) Q_DECL_OVERRIDE
QIODevice * m_source
Definition: FlacDecoder.h:138
Kwave::MultiWriter * m_dest
Definition: FlacDecoder.h:141
Kwave::VorbisCommentMap m_vorbis_comment_map
Definition: FlacDecoder.h:144
virtual Kwave::Decoder * instance() Q_DECL_OVERRIDE
Definition: FlacDecoder.cpp:53
virtual ::FLAC__StreamDecoderWriteStatus write_callback(const ::FLAC__Frame *frame, const FLAC__int32 *const buffer[]) Q_DECL_OVERRIDE
Definition: FlacDecoder.cpp:84
virtual ::FLAC__StreamDecoderReadStatus read_callback(FLAC__byte buffer[], size_t *bytes) Q_DECL_OVERRIDE
Definition: FlacDecoder.cpp:59
virtual bool open(QWidget *widget, QIODevice &source) Q_DECL_OVERRIDE
virtual ~FlacDecoder() Q_DECL_OVERRIDE
Definition: FlacDecoder.cpp:47
virtual bool decode(QWidget *widget, Kwave::MultiWriter &dst) Q_DECL_OVERRIDE
void parseStreamInfo(const FLAC::Metadata::StreamInfo &stream_info)
virtual void close() Q_DECL_OVERRIDE
void parseVorbisComments(const FLAC::Metadata::VorbisComment &vorbis_comments)