1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-02-05 19:21:59 +01:00
Files
audacity/src/import/MultiFormatReader.h
2016-08-11 11:51:33 -04:00

85 lines
1.6 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
MultiFormatReader.h
Philipp Sibler
**********************************************************************/
#ifndef __AUDACITY_MULTIFORMATREADER_H__
#define __AUDACITY_MULTIFORMATREADER_H__
#include <stdio.h>
#include <stdint.h>
class MachineEndianness
{
public:
typedef enum
{
Little = 0,
Big
} EndiannessT;
MachineEndianness();
~MachineEndianness()
{}
int IsLittle()
{
return (mFlag == MachineEndianness::Little) ? 1 : 0;
}
int IsBig()
{
return (mFlag == MachineEndianness::Big) ? 1 : 0;
}
EndiannessT Which()
{
return mFlag;
}
private:
EndiannessT mFlag;
};
class MultiFormatReader
{
FILE* mpFid;
MachineEndianness mEnd;
uint8_t mSwapBuffer[8];
public:
typedef enum
{
Int8 = 0,
Int16,
Int32,
Uint8,
Uint16,
Uint32,
Float,
Double
} FormatT;
MultiFormatReader(const char* filename);
~MultiFormatReader();
void Reset();
size_t ReadSamples(void* buffer, size_t len,
MultiFormatReader::FormatT format,
MachineEndianness::EndiannessT end);
size_t ReadSamples(void* buffer, size_t len, size_t stride,
MultiFormatReader::FormatT format,
MachineEndianness::EndiannessT end);
private:
size_t Read(void* buffer, size_t size, size_t len, size_t stride);
void SwapBytes(void* buffer, size_t size, size_t len);
};
#endif