53 lines
878 B
C++
53 lines
878 B
C++
#pragma once
|
|
#include "header.h"
|
|
|
|
namespace ID3v2_21
|
|
{
|
|
#pragma pack(push, 1)
|
|
struct ExtendedHeaderData
|
|
{
|
|
uint32_t size;
|
|
};
|
|
#pragma pack(pop)
|
|
|
|
class ExtendedHeaderBase
|
|
{
|
|
public:
|
|
ExtendedHeaderBase(const ID3v2::Header &_tagHeader);
|
|
int Parse(const void *_data, size_t len, size_t *bytes_read);
|
|
enum
|
|
{
|
|
SIZE=4,
|
|
};
|
|
protected:
|
|
uint32_t Size() const;
|
|
void *data;
|
|
size_t data_size;
|
|
ExtendedHeaderData headerData;
|
|
const ID3v2::Header &tagHeader;
|
|
};
|
|
}
|
|
|
|
namespace ID3v2_3
|
|
{
|
|
class ExtendedHeader : public ID3v2_21::ExtendedHeaderBase
|
|
{
|
|
public:
|
|
ExtendedHeader(const ID3v2::Header &_tagHeader);
|
|
};
|
|
}
|
|
|
|
namespace ID3v2_4
|
|
{
|
|
class ExtendedHeader : public ID3v2_21::ExtendedHeaderBase
|
|
{
|
|
public:
|
|
ExtendedHeader(const ID3v2::Header &_tagHeader);
|
|
int Parse(const void *_data, size_t len, size_t *bytes_read);
|
|
|
|
protected:
|
|
uint32_t Size() const;
|
|
|
|
};
|
|
}
|