mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
41 lines
816 B
C++
41 lines
816 B
C++
|
#include "FLVHeader.h"
|
||
|
#include "FLVUtil.h"
|
||
|
/*
|
||
|
(c) 2006 Nullsoft, Inc.
|
||
|
Author: Ben Allison benski@nullsoft.com
|
||
|
*/
|
||
|
|
||
|
#define FLV_BITMASK_AUDIO 0x4
|
||
|
#define FLV_BITMASK_VIDEO 0x1
|
||
|
|
||
|
/*
|
||
|
FLV Header spec
|
||
|
|
||
|
Signature - uint8[3] - must equal "FLV"
|
||
|
Version - uint8 - only known version is 1
|
||
|
Flags - uint8 - bitmask, 4 is audio, 1 is video
|
||
|
Offset - uint32 - total size of header (9), big endian
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
bool FLVHeader::Read(uint8_t *data, size_t size)
|
||
|
{
|
||
|
if (size < 9)
|
||
|
return false; // too small to be an FLV header
|
||
|
|
||
|
if (data[0] != 'F' || data[1] != 'L' || data[2] != 'V')
|
||
|
return false; // invalid signature
|
||
|
|
||
|
version = data[3];
|
||
|
|
||
|
hasAudio = !!(data[4] & FLV_BITMASK_AUDIO);
|
||
|
hasVideo = data[4] & FLV_BITMASK_VIDEO;
|
||
|
|
||
|
headerSize = FLV::Read32(&data[5]);
|
||
|
if (headerSize != 9)
|
||
|
return false;
|
||
|
|
||
|
return true;
|
||
|
}
|