kwave  18.07.70
Kwave::OggEncoder Class Reference

#include <OggEncoder.h>

Inheritance diagram for Kwave::OggEncoder:
Inheritance graph
Collaboration diagram for Kwave::OggEncoder:
Collaboration graph

Public Member Functions

 OggEncoder ()
 
virtual ~OggEncoder () Q_DECL_OVERRIDE
 
virtual Kwave::Encoderinstance () Q_DECL_OVERRIDE
 
virtual bool encode (QWidget *widget, Kwave::MultiTrackReader &src, QIODevice &dst, const Kwave::MetaDataList &meta_data) Q_DECL_OVERRIDE
 
virtual QList< Kwave::FilePropertysupportedProperties () Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::Encoder
 Encoder ()
 
virtual ~Encoder ()
 
virtual QList< Kwave::FilePropertyunsupportedProperties (const QList< Kwave::FileProperty > &properties_to_check)
 
- Public Member Functions inherited from Kwave::CodecBase
 CodecBase ()
 
virtual ~CodecBase ()
 
virtual bool supports (const QMimeType &mimetype)
 
virtual bool supports (const QString &mimetype_name)
 
virtual QStringList extensions (const QString &mimetype_name) const
 
virtual const QList< CodecBase::MimeTypemimeTypes ()
 
virtual const QList< Kwave::Compression::TypecompressionTypes ()
 
virtual void addMimeType (const char *name, const QString &description, const char *patterns)
 
virtual void addCompression (Kwave::Compression::Type compression)
 
virtual QString mimeTypeOf (const QUrl &url)
 

Private Attributes

Kwave::VorbisCommentMap m_comments_map
 

Detailed Description

Definition at line 34 of file OggEncoder.h.

Constructor & Destructor Documentation

◆ OggEncoder()

Kwave::OggEncoder::OggEncoder ( )

Constructor

Definition at line 42 of file OggEncoder.cpp.

References REGISTER_COMPRESSION_TYPE_OGG_OPUS, REGISTER_COMPRESSION_TYPE_OGG_VORBIS, REGISTER_OGG_OPUS_MIME_TYPES, and REGISTER_OGG_VORBIS_MIME_TYPES.

44 {
45 #ifdef HAVE_OGG_OPUS
48 #endif /* HAVE_OGG_OPUS */
49 
50 #ifdef HAVE_OGG_VORBIS
53 #endif /* HAVE_OGG_VORBIS */
54 }
Kwave::VorbisCommentMap m_comments_map
Definition: OggEncoder.h:68
#define REGISTER_OGG_VORBIS_MIME_TYPES
#define REGISTER_COMPRESSION_TYPE_OGG_OPUS
#define REGISTER_OGG_OPUS_MIME_TYPES
#define REGISTER_COMPRESSION_TYPE_OGG_VORBIS

◆ ~OggEncoder()

Kwave::OggEncoder::~OggEncoder ( )
virtual

Destructor

Definition at line 57 of file OggEncoder.cpp.

58 {
59 }

Member Function Documentation

◆ encode()

bool Kwave::OggEncoder::encode ( QWidget *  widget,
Kwave::MultiTrackReader src,
QIODevice &  dst,
const Kwave::MetaDataList meta_data 
)
virtual

Encodes a signal into a stream of bytes.

Parameters
widgeta widget that can be used for displaying message boxes or dialogs
srcMultiTrackReader used as source of the audio data
dstfile or other source to receive a stream of bytes
meta_datameta data of the file to save
Returns
true if succeeded, false on errors

Implements Kwave::Encoder.

Definition at line 74 of file OggEncoder.cpp.

References Kwave::FileInfo::contains(), Kwave::MessageBox::error(), Kwave::Compression::fromInt(), Kwave::FileInfo::get(), Kwave::INF_COMPRESSION, name, Kwave::Compression::NONE, Kwave::Compression::OGG_OPUS, and Kwave::Compression::OGG_VORBIS.

77 {
78  const Kwave::FileInfo info(meta_data);
79  QSharedPointer<Kwave::OggSubEncoder> sub_encoder;
80 
81  // determine which codec (sub encoder) to use,
82  // by examining the compression type
83  const Kwave::Compression::Type compression =
86 
87 #ifdef HAVE_OGG_OPUS
88  if (compression == Compression::OGG_OPUS) {
89  qDebug(" OggEncoder: using Opus codec");
90  sub_encoder =
91  QSharedPointer<Kwave::OpusEncoder>(new Kwave::OpusEncoder());
92  }
93 #endif /* HAVE_OGG_OPUS */
94 #ifdef HAVE_OGG_VORBIS
95  if (compression == Compression::OGG_VORBIS) {
96  qDebug(" OggEncoder: using Vorbis codec");
97  sub_encoder =
98  QSharedPointer<Kwave::VorbisEncoder>(new Kwave::VorbisEncoder());
99  }
100 #endif /* HAVE_OGG_VORBIS */
101 
102  if (!sub_encoder) {
103  qDebug(" OggEncoder: compression='%d'", compression);
104  Kwave::MessageBox::error(widget, i18nc(
105  "error in Ogg encoder, no support for a compression type "
106  "(e.g. opus, vorbis etc)",
107  "Error: No Codec for '%1' available",
108  Kwave::Compression(compression).name()
109  ));
110  return false;
111  }
112 
113  if (!sub_encoder->open(widget, info, src))
114  return false;
115 
116  // open the output device
117  if (!dst.open(QIODevice::ReadWrite | QIODevice::Truncate)) {
119  i18n("Unable to open the file for saving."));
120  return false;
121  }
122 
123  if (!sub_encoder->writeHeader(dst))
124  return false;
125 
126  if (!sub_encoder->encode(src, dst))
127  return false;
128 
129  // clean up and exit.
130  sub_encoder->close();
131 
132  // the sub encoder will be deleted automatically (QSharedPointer)
133 
134  return true;
135 }
static Kwave::Compression::Type fromInt(int i)
Definition: Compression.cpp:78
const char name[16]
Definition: memcpy.c:510
static int error(QWidget *widget, QString message, QString caption=QString())
Definition: MessageBox.cpp:126
Here is the call graph for this function:

◆ instance()

Kwave::Encoder * Kwave::OggEncoder::instance ( )
virtual

Returns a new instance of the encoder

Implements Kwave::Encoder.

Definition at line 62 of file OggEncoder.cpp.

63 {
64  return new Kwave::OggEncoder();
65 }

◆ supportedProperties()

QList< Kwave::FileProperty > Kwave::OggEncoder::supportedProperties ( )
virtual

Returns a list of supported file properties

Reimplemented from Kwave::Encoder.

Definition at line 68 of file OggEncoder.cpp.

References m_comments_map.

69 {
70  return m_comments_map.values();
71 }
Kwave::VorbisCommentMap m_comments_map
Definition: OggEncoder.h:68

Member Data Documentation

◆ m_comments_map

Kwave::VorbisCommentMap Kwave::OggEncoder::m_comments_map
private

map for translating Opus comments to Kwave FileInfo

Definition at line 68 of file OggEncoder.h.

Referenced by supportedProperties().


The documentation for this class was generated from the following files: