winamp/Src/libvp6/include/VPStreamData.hpp
2024-09-24 14:54:57 +02:00

118 lines
2.8 KiB
C++

#if !defined(VPSTREAMDATA_HPP)
#define VPSTREAMDATA_HPP
//______________________________________________________________________________
//
// VPStreamData.hpp
//
//______________________________________________________________________________
// Include Files and Forward Declarations
#include "PlayerModel.hpp"
#include <vector>
#include <iosfwd>
namespace on2vp
{
//______________________________________________________________________________
// Macro, Enumeration, and Constant Definitions
//______________________________________________________________________________
// Type, Struct, and Class Definitions
//--------------------------------------
class StreamData
{
friend std::ostream& operator<<(std::ostream& os, const StreamData& sd);
public:
StreamData();
StreamData(const unsigned char* const pData, unsigned long ulSize);
StreamData(const StreamData& sd);
~StreamData();
StreamData& operator=(const StreamData& sd);
unsigned long versionOrig() const;
unsigned long sizeOrig() const;
unsigned long version() const;
unsigned long size() const;
const unsigned char* data() const;
int data(const unsigned char* pData, unsigned long ulSize);
// Interpreted data
const PlayerModel& playerModel() const;
PlayerModel& playerModel();
bool encrypted() const;
void encrypted(bool bEncrypted);
private:
class VersionInfo
{
public:
VersionInfo(long lVersion, long lSize, bool bExtra) :
m_lVersion(lVersion),
m_lSize(lSize),
m_bExtra(bExtra)
{
}
long version() const
{
return m_lVersion;
}
long size() const
{
return m_lSize;
}
bool extra() const
{
return m_bExtra;
}
private:
long m_lVersion;
long m_lSize;
bool m_bExtra;
};
enum
{
VersionMax = 6
};
void init_();
int extract_(const unsigned char* pData, unsigned long ulSize);
void update_();
static std::vector<VersionInfo> m_vVersionInfo;
unsigned long m_ulVersionOrig;
unsigned long m_ulSizeOrig;
unsigned char* m_pData;
long m_lDataSize;
// Interpreted data
PlayerModel m_pm;
bool m_bEncrypted;
};
//______________________________________________________________________________
// Object and Function Declarations
//______________________________________________________________________________
// Object and Function Definitions
} // namespace on2vp
#endif // VPSTREAMDATA_HPP