mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-14 18:05:45 -04:00
CDROM: Implement GetlocP/GetlocL commands
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
#pragma once
|
||||
#include "bitfield.h"
|
||||
#include "types.h"
|
||||
|
||||
class ByteStream;
|
||||
@ -14,6 +15,8 @@ public:
|
||||
RAW_SECTOR_SIZE = 2352,
|
||||
DATA_SECTOR_SIZE = 2048,
|
||||
SECTOR_SYNC_SIZE = 12,
|
||||
SECTOR_HEADER_SIZE = 4,
|
||||
SECTOR_XA_SUBHEADER_SIZE = 4,
|
||||
FRAMES_PER_SECOND = 75, // "sectors"
|
||||
SECONDS_PER_MINUTE = 60,
|
||||
FRAMES_PER_MINUTE = FRAMES_PER_SECOND * SECONDS_PER_MINUTE,
|
||||
@ -21,9 +24,44 @@ public:
|
||||
|
||||
enum class ReadMode : u32
|
||||
{
|
||||
DataOnly, // 2048 bytes per sector.
|
||||
RawSector, // 2352 bytes per sector.
|
||||
RawNoSync, // 2340 bytes per sector.
|
||||
DataOnly, // 2048 bytes per sector.
|
||||
RawSector, // 2352 bytes per sector.
|
||||
RawNoSync, // 2340 bytes per sector.
|
||||
};
|
||||
|
||||
struct SectorHeader
|
||||
{
|
||||
u8 minute;
|
||||
u8 second;
|
||||
u8 frame;
|
||||
u8 sector_mode;
|
||||
};
|
||||
|
||||
struct XASubHeader
|
||||
{
|
||||
u8 file_number;
|
||||
u8 channel_number;
|
||||
union Submode
|
||||
{
|
||||
u8 bits;
|
||||
BitField<u8, bool, 0, 1> eor;
|
||||
BitField<u8, bool, 1, 1> video;
|
||||
BitField<u8, bool, 2, 1> audio;
|
||||
BitField<u8, bool, 3, 1> data;
|
||||
BitField<u8, bool, 4, 1> trigger;
|
||||
BitField<u8, bool, 5, 1> form2;
|
||||
BitField<u8, bool, 6, 1> realtime;
|
||||
BitField<u8, bool, 7, 1> eof;
|
||||
} submode;
|
||||
union Codinginfo
|
||||
{
|
||||
u8 bits;
|
||||
|
||||
BitField<u8, u8, 0, 2> mono_stereo;
|
||||
BitField<u8, u8, 2, 2> sample_rate;
|
||||
BitField<u8, u8, 4, 2> bits_per_sample;
|
||||
BitField<u8, bool, 6, 1> emphasis;
|
||||
} codinginfo;
|
||||
};
|
||||
|
||||
// Conversion helpers.
|
||||
|
Reference in New Issue
Block a user