| vbAccelerator - Contents of code file: CDRip_CDExtract.hThis file is part of the download CDRip DLL Source, which is described in the article CD Ripping in VB Part 1. /*
** Copyright (C) 1999 Albert L. Faber
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef CDEXTRACT_INCLUDED
#define CDEXTRACT_INCLUDED
#include "AspiCD.h"
extern "C" {
#include "./interface/cdda_interface.h"
#include "./paranoia/cdda_paranoia.h"
}
class CCDExtract:public CAspiCD
{
private:
int m_nPeakValue;
PBYTE m_pbtReadBuffer;
PBYTE m_pbtOverlapBuffer;
PBYTE m_pbtReadBufferCompare;
LONG m_lSector;
int m_nBeginSector;
int m_nEndSector;
int m_nJitterPos;
DWORD m_nJitterErrors;
BOOL m_bFirstRead;
INT m_nPercentCompleted;
DWORD m_dwBytesToDo;
cdrom_paranoia* m_pParanoia;
cdrom_drive* m_pParanoiaDrive;
INT m_nCurrentSpeed;
INT m_nLastSpeedAdjust;
volatile BOOL* m_pbAbort;
public:
// CONSRUCTOR
CCDExtract();
// DESTRUCTOR
~CCDExtract();
// The Thread Function
static UINT ThreadFunc(LPVOID pVoid);
DWORD CorrectJitter(BYTE* pbtOverlapPtr,BYTE* pbtReadPtr,DWORD
dwBytesRead,BOOL& bJitterError);
BOOL SetupTrackExtract( int nBeginSector, int nEndSector );
BOOL SetupTrackExtractParanoia( int nBeginSector, int nEndSector );
BOOL EndTrackExtract();
UINT SetupConvertThread( void* pThreadParams );
int GetPeakValue() const {return m_nPeakValue;}
DWORD GetJitterErrors() const {return m_nJitterErrors;}
WORD GetJitterPosition() const {return m_nJitterPos;}
CDEX_ERR RipChunk(BYTE* pbtStream,LONG* pNumBytes, BOOL& bAbort );
CDEX_ERR RipChunkParanoia( BYTE* pbtStream, LONG* pNumBytes, BOOL& bAbort );
INT GetPercentCompleted() const {return m_nPercentCompleted;}
void SetPercentCompleted(int nValue) {m_nPercentCompleted=nValue;}
void GetLastJitterErrorPosition(DWORD& dwStartSector,DWORD& dwEndSector);
void ReadChunk(const long nSectorsToRead, const long lOverlapSamples,
const BOOL bJitterCorr, const DWORD dwBytesRead, BOOL &bJitterError, DWORD
&dwSkipBytes, PBYTE readBuffer);
INT GetCurrentSpeed() const { return m_nCurrentSpeed; }
void SetCurrentSpeed( INT nValue ) { m_nCurrentSpeed = nValue; }
INT GetLastSectorSpeedAdjusted( ) const { return m_nLastSpeedAdjust; }
void GetLastSectorSpeedAdjusted( INT nValue ) { m_nLastSpeedAdjust =
nValue; }
LONG GetCurrentSector() const { return m_lSector;}
int GetBeginSector() const {return m_nBeginSector;}
int GetEndSector() const {return m_nEndSector;}
BOOL GetAbort() const { return ( m_pbAbort ) ? *m_pbAbort: FALSE; }
static void paranoiaCallback( long, int );
};
#endif
| |||
|
|
||||