1
0
Fork 0

Update MSF conversion functions

All usecases, that required these functions to pass 3 values separately
are now gone, we can simply pass/return a struct now.
This commit is contained in:
Patryk Obara 2019-12-13 02:33:59 +01:00 committed by Patryk Obara
parent f66a4f5416
commit 94b987b5b5
3 changed files with 28 additions and 31 deletions

View file

@ -46,11 +46,12 @@
#define REDBOOK_PCM_BYTES_PER_MS 176.4f // 44.1 frames/ms * 4 bytes/frame
#define BYTES_PER_REDBOOK_PCM_FRAME 4 // 2 bytes/sample * 2 samples/frame
typedef struct SMSF {
struct TMSF
{
unsigned char min;
unsigned char sec;
unsigned char fr;
} TMSF;
};
typedef struct SCtrl {
Bit8u out[4]; // output channel mapping
@ -59,19 +60,22 @@ typedef struct SCtrl {
// Conversion function from frames to Minutes/Second/Frames
//
template<typename T>
inline void frames_to_msf(int frames, T *m, T *s, T *f) {
*f = frames % REDBOOK_FRAMES_PER_SECOND;
inline TMSF frames_to_msf(int frames)
{
TMSF msf = {0, 0, 0};
msf.fr = frames % REDBOOK_FRAMES_PER_SECOND;
frames /= REDBOOK_FRAMES_PER_SECOND;
*s = frames % 60;
msf.sec = frames % 60;
frames /= 60;
*m = frames;
msf.min = frames;
return msf;
}
// Conversion function from Minutes/Second/Frames to frames
//
inline int msf_to_frames(int m, int s, int f) {
return m * 60 * REDBOOK_FRAMES_PER_SECOND + s * REDBOOK_FRAMES_PER_SECOND + f;
inline int msf_to_frames(const TMSF &msf)
{
return msf.min * 60 * REDBOOK_FRAMES_PER_SECOND + msf.sec * REDBOOK_FRAMES_PER_SECOND + msf.fr;
}
class CDROM_Interface