Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/3rdparty/phonon/ds9/qaudiocdreader.cpp

    r2 r561  
    104104        private:
    105105            HANDLE m_cddrive;
    106             CDROM_TOC *m_toc;
    107             WaveStructure *m_waveHeader;
     106            CDROM_TOC m_toc;
     107            WaveStructure m_waveHeader;
    108108            qint64 m_trackAddress;
    109109        };
     
    113113#define NB_SECTORS_READ 20
    114114
    115         static AM_MEDIA_TYPE getAudioCDMediaType()
    116         {
    117             AM_MEDIA_TYPE mt;
    118             qMemSet(&mt, 0, sizeof(AM_MEDIA_TYPE));
    119             mt.majortype = MEDIATYPE_Stream;
    120             mt.subtype = MEDIASUBTYPE_WAVE;
    121             mt.bFixedSizeSamples = TRUE;
    122             mt.bTemporalCompression = FALSE;
    123             mt.lSampleSize = 1;
    124             mt.formattype = GUID_NULL;
    125             return mt;
    126         }
    127 
     115        static const AM_MEDIA_TYPE audioCDMediaType = { MEDIATYPE_Stream, MEDIASUBTYPE_WAVE, TRUE, FALSE, 1, GUID_NULL, 0, 0, 0};
     116 
    128117        int addressToSectors(UCHAR address[4])
    129118        {
     
    142131
    143132
    144         QAudioCDReader::QAudioCDReader(QBaseFilter *parent, QChar drive) : QAsyncReader(parent, QVector<AM_MEDIA_TYPE>() << getAudioCDMediaType())
    145         {
    146             m_toc = new CDROM_TOC;
    147             m_waveHeader = new WaveStructure;
    148 
     133        QAudioCDReader::QAudioCDReader(QBaseFilter *parent, QChar drive) : QAsyncReader(parent, QVector<AM_MEDIA_TYPE>() << audioCDMediaType)
     134        {
    149135            //now open the cd-drive
    150136            QString path;
     
    155141            }
    156142
    157             m_cddrive = QT_WA_INLINE (
    158                         ::CreateFile( (TCHAR*)path.utf16(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL ),
    159                         ::CreateFileA( path.toLocal8Bit().constData(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL )
    160                         );
    161 
    162             qMemSet(m_toc, 0, sizeof(CDROM_TOC));
     143            m_cddrive = ::CreateFile((const wchar_t *)path.utf16(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
     144
     145            qMemSet(&m_toc, 0, sizeof(CDROM_TOC));
    163146            //read the TOC
    164147            DWORD bytesRead = 0;
    165             bool tocRead = ::DeviceIoControl(m_cddrive, IOCTL_CDROM_READ_TOC, 0, 0, m_toc, sizeof(CDROM_TOC), &bytesRead, 0);
     148            bool tocRead = ::DeviceIoControl(m_cddrive, IOCTL_CDROM_READ_TOC, 0, 0, &m_toc, sizeof(CDROM_TOC), &bytesRead, 0);
    166149
    167150            if (!tocRead) {
     
    170153            }
    171154
    172             m_trackAddress = addressToSectors(m_toc->TrackData[0].Address);
    173             const qint32 nbSectorsToRead = (addressToSectors(m_toc->TrackData[m_toc->LastTrack + 1 - m_toc->FirstTrack].Address)
     155            m_trackAddress = addressToSectors(m_toc.TrackData[0].Address);
     156            const qint32 nbSectorsToRead = (addressToSectors(m_toc.TrackData[m_toc.LastTrack + 1 - m_toc.FirstTrack].Address)
    174157                - m_trackAddress);
    175158            const qint32 dataLength = nbSectorsToRead * SECTOR_SIZE;
    176159
    177             m_waveHeader->chunksize = 4 + (8 + m_waveHeader->chunksize2) + (8 + dataLength);
    178             m_waveHeader->dataLength = dataLength;
     160            m_waveHeader.chunksize = 4 + (8 + m_waveHeader.chunksize2) + (8 + dataLength);
     161            m_waveHeader.dataLength = dataLength;
    179162        }
    180163
     
    182165        {
    183166            ::CloseHandle(m_cddrive);
    184             delete m_toc;
    185             delete m_waveHeader;
    186 
    187167        }
    188168
     
    200180        STDMETHODIMP QAudioCDReader::Length(LONGLONG *total,LONGLONG *available)
    201181        {
    202             const LONGLONG length = sizeof(WaveStructure) + m_waveHeader->dataLength;
     182            const LONGLONG length = sizeof(WaveStructure) + m_waveHeader.dataLength;
    203183            if (total) {
    204184                *total = length;
     
    239219                //we first copy the content of the structure
    240220                nbRead = qMin(LONG(sizeof(WaveStructure) - pos), length);
    241                 qMemCopy(buffer, reinterpret_cast<char*>(m_waveHeader) + pos, nbRead);
     221                qMemCopy(buffer, reinterpret_cast<char*>(&m_waveHeader) + pos, nbRead);
    242222            }
    243223
    244224            const LONGLONG posInTrack = pos - sizeof(WaveStructure) + nbRead;
    245             const int bytesLeft = qMin(m_waveHeader->dataLength - posInTrack, LONGLONG(length - nbRead));
     225            const int bytesLeft = qMin(m_waveHeader.dataLength - posInTrack, LONGLONG(length - nbRead));
    246226
    247227            if (bytesLeft > 0) {
     
    298278            QList<qint64> ret;
    299279            ret << 0;
    300             for(int i = m_toc->FirstTrack; i <= m_toc->LastTrack ; ++i) {
    301                 const uchar *address = m_toc->TrackData[i].Address;
     280            for(int i = m_toc.FirstTrack; i <= m_toc.LastTrack ; ++i) {
     281                const uchar *address = m_toc.TrackData[i].Address;
    302282                ret << ((address[0] * 60 + address[1]) * 60 + address[2]) * 1000 + address[3]*1000/75 - 2000;
    303283
Note: See TracChangeset for help on using the changeset viewer.