kwave  18.07.70
VirtualAudioFile.cpp File Reference
#include "config.h"
#include <QIODevice>
#include <stdlib.h>
#include <unistd.h>
#include "libkwave/Utils.h"
#include "libkwave/VirtualAudioFile.h"
Include dependency graph for VirtualAudioFile.cpp:

Go to the source code of this file.

Functions

static void _handle_audiofile_error (long int error, const char *str)
 
static long _lastAudiofileError ()
 
static ssize_t af_file_read (AFvirtualfile *vfile, void *data, size_t nbytes)
 
static AFfileoffset af_file_length (AFvirtualfile *vfile)
 
static ssize_t af_file_write (AFvirtualfile *vfile, const void *data, size_t nbytes)
 
static void af_file_destroy (AFvirtualfile *)
 
static AFfileoffset af_file_seek (AFvirtualfile *vfile, AFfileoffset offset, int is_relative)
 
static AFfileoffset af_file_tell (AFvirtualfile *vfile)
 
static AFvirtualfile * __af_virtual_file_new (void)
 

Variables

static QMap< AFvirtualfile *, Kwave::VirtualAudioFile * > * _adapter_map = Q_NULLPTR
 
static long _last_audiofile_error = -1
 
static QString _last_audiofile_error_text
 

Function Documentation

◆ __af_virtual_file_new()

static AFvirtualfile* __af_virtual_file_new ( void  )
static

Replacement of af_virtual_file_new from original libaudiofile code. Unfortunately the original is not usable because it is not available through the shared library API of some libaudiofile versions.

original version: see libaudiofile/af_vfs.c (GPL 2+) original author: Copyright (C) 1999, Elliot Lee sopwi.nosp@m.th@r.nosp@m.edhat.nosp@m..com

Definition at line 129 of file VirtualAudioFile.cpp.

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

130 {
131  return static_cast<AFvirtualfile *>(calloc(sizeof(AFvirtualfile), 1));
132 }
Here is the caller graph for this function:

◆ _handle_audiofile_error()

static void _handle_audiofile_error ( long int  error,
const char *  str 
)
static

Error handler for libaudiofile

Warning
NOT THREADSAFE!
Parameters
errorthe numeric error code, >=0, defined in audiofile.h, something starting with AF_BAD_...
strtext, not localized, so not usable for us :-(

Definition at line 46 of file VirtualAudioFile.cpp.

References _last_audiofile_error, and _last_audiofile_error_text.

Referenced by Kwave::VirtualAudioFile::open().

47 {
48  qDebug("libaudiofile error %ld: '%s'", error, str);
49  _last_audiofile_error = error;
50  _last_audiofile_error_text = QString::fromLatin1(str);
51 }
static long _last_audiofile_error
static QString _last_audiofile_error_text
Here is the caller graph for this function:

◆ _lastAudiofileError()

static long _lastAudiofileError ( )
static

Returns the last libaudiofile error and resets it to -1

Definition at line 55 of file VirtualAudioFile.cpp.

References _last_audiofile_error.

Referenced by Kwave::VirtualAudioFile::open().

56 {
57  long err = _last_audiofile_error;
59 
60  // ignore "bad alloc", which might occur on a "malloc(0)"
61  if (err == AF_BAD_MALLOC) err = -1;
62  return err;
63 }
static long _last_audiofile_error
Here is the caller graph for this function:

◆ af_file_destroy()

static void af_file_destroy ( AFvirtualfile *  )
static

Definition at line 97 of file VirtualAudioFile.cpp.

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

98 {
99 }
Here is the caller graph for this function:

◆ af_file_length()

static AFfileoffset af_file_length ( AFvirtualfile *  vfile)
static

Definition at line 78 of file VirtualAudioFile.cpp.

References Kwave::VirtualAudioFile::adapter(), and Kwave::VirtualAudioFile::length().

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

79 {
81  return (adapter) ? static_cast<AFfileoffset>(adapter->length()) : -1;
82 }
static Kwave::VirtualAudioFile * adapter(AFvirtualfile *vfile)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ af_file_read()

static ssize_t af_file_read ( AFvirtualfile *  vfile,
void *  data,
size_t  nbytes 
)
static

Definition at line 66 of file VirtualAudioFile.cpp.

References Kwave::VirtualAudioFile::adapter(), Kwave::VirtualAudioFile::read(), and Kwave::toUint().

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

68 {
70  return (adapter) ?
71  static_cast<ssize_t>(adapter->read(
72  static_cast<char *>(data),
73  Kwave::toUint(nbytes)
74  )) : 0;
75 }
virtual qint64 read(char *data, unsigned int nbytes)
static Kwave::VirtualAudioFile * adapter(AFvirtualfile *vfile)
unsigned int toUint(T x)
Definition: Utils.h:109
Here is the call graph for this function:
Here is the caller graph for this function:

◆ af_file_seek()

static AFfileoffset af_file_seek ( AFvirtualfile *  vfile,
AFfileoffset  offset,
int  is_relative 
)
static

Definition at line 102 of file VirtualAudioFile.cpp.

References Kwave::VirtualAudioFile::adapter(), and Kwave::VirtualAudioFile::seek().

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

104 {
106  return (adapter) ?
107  static_cast<AFfileoffset>(adapter->seek(
108  static_cast<qint64>(offset),
109  (is_relative != 0)
110  )) : -1;
111 }
static Kwave::VirtualAudioFile * adapter(AFvirtualfile *vfile)
virtual qint64 seek(qint64 offset, bool is_relative)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ af_file_tell()

static AFfileoffset af_file_tell ( AFvirtualfile *  vfile)
static

Definition at line 114 of file VirtualAudioFile.cpp.

References Kwave::VirtualAudioFile::adapter(), and Kwave::VirtualAudioFile::tell().

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

115 {
117  return (adapter) ? static_cast<AFfileoffset>(adapter->tell()) : -1;
118 }
static Kwave::VirtualAudioFile * adapter(AFvirtualfile *vfile)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ af_file_write()

static ssize_t af_file_write ( AFvirtualfile *  vfile,
const void *  data,
size_t  nbytes 
)
static

Definition at line 85 of file VirtualAudioFile.cpp.

References Kwave::VirtualAudioFile::adapter(), Kwave::toUint(), and Kwave::VirtualAudioFile::write().

Referenced by Kwave::VirtualAudioFile::VirtualAudioFile().

87 {
89  return (adapter) ?
90  static_cast<ssize_t>(adapter->write(
91  static_cast<const char *>(data),
92  Kwave::toUint(nbytes)
93  )) : 0;
94 }
static Kwave::VirtualAudioFile * adapter(AFvirtualfile *vfile)
virtual qint64 write(const char *data, unsigned int nbytes)
unsigned int toUint(T x)
Definition: Utils.h:109
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ _adapter_map

QMap<AFvirtualfile*, Kwave::VirtualAudioFile*>* _adapter_map = Q_NULLPTR
static

map for finding the corresponding VirtualAudioFile adapter to a AFvirtualfile from libaudiofile

Definition at line 30 of file VirtualAudioFile.cpp.

Referenced by Kwave::VirtualAudioFile::adapter(), Kwave::VirtualAudioFile::close(), and Kwave::VirtualAudioFile::open().

◆ _last_audiofile_error

long _last_audiofile_error = -1
static

Last error number from libaudiofile. -1 if no error occurred

Definition at line 33 of file VirtualAudioFile.cpp.

Referenced by _handle_audiofile_error(), and _lastAudiofileError().

◆ _last_audiofile_error_text

QString _last_audiofile_error_text
static

Last error text from libaudiofile, empty if no error occurred

Definition at line 36 of file VirtualAudioFile.cpp.

Referenced by _handle_audiofile_error(), and Kwave::VirtualAudioFile::open().