Mercurial > mplayer.hg
comparison loader/dshow/DS_AudioDecoder.c @ 3466:b6caac381405
avifile merge
author | arpi |
---|---|
date | Tue, 11 Dec 2001 23:29:11 +0000 |
parents | 0c0042de1f95 |
children | 8f71d01a22d7 |
comparison
equal
deleted
inserted
replaced
3465:4dad31e655b6 | 3466:b6caac381405 |
---|---|
70 this->m_sDestType.subtype.f1=pWF->wFormatTag; | 70 this->m_sDestType.subtype.f1=pWF->wFormatTag; |
71 this->m_sDestType.formattype=FORMAT_WaveFormatEx; | 71 this->m_sDestType.formattype=FORMAT_WaveFormatEx; |
72 this->m_sDestType.bFixedSizeSamples=1; | 72 this->m_sDestType.bFixedSizeSamples=1; |
73 this->m_sDestType.bTemporalCompression=0; | 73 this->m_sDestType.bTemporalCompression=0; |
74 this->m_sDestType.lSampleSize=2*wf->nChannels; | 74 this->m_sDestType.lSampleSize=2*wf->nChannels; |
75 if (wf->wFormatTag == 0x130) | |
76 // ACEL hack to prevent memory corruption | |
77 // obviosly we are missing something here | |
78 this->m_sDestType.lSampleSize *= 288; | |
75 this->m_sDestType.pUnk=0; | 79 this->m_sDestType.pUnk=0; |
76 this->m_sDestType.cbFormat=pWF->cbSize; | 80 this->m_sDestType.cbFormat=pWF->cbSize; |
77 this->m_sDestType.pbFormat=this->m_sVhdr2; | 81 this->m_sDestType.pbFormat=this->m_sVhdr2; |
78 | 82 |
79 /*try*/ | 83 /*try*/ |
142 if (!sample) | 146 if (!sample) |
143 { | 147 { |
144 Debug printf("DS_AudioDecoder::Convert() Error: null sample\n"); | 148 Debug printf("DS_AudioDecoder::Convert() Error: null sample\n"); |
145 break; | 149 break; |
146 } | 150 } |
151 sample->vt->SetActualDataLength(sample, this->in_fmt.nBlockAlign); | |
147 sample->vt->GetPointer(sample, (BYTE **)&ptr); | 152 sample->vt->GetPointer(sample, (BYTE **)&ptr); |
148 memcpy(ptr, (const uint8_t*)in_data + read, this->in_fmt.nBlockAlign); | 153 memcpy(ptr, (const uint8_t*)in_data + read, this->in_fmt.nBlockAlign); |
149 sample->vt->SetActualDataLength(sample, this->in_fmt.nBlockAlign); | |
150 sample->vt->SetSyncPoint(sample, 1); | 154 sample->vt->SetSyncPoint(sample, 1); |
151 sample->vt->SetPreroll(sample, 0); | 155 sample->vt->SetPreroll(sample, 0); |
152 result = this->m_pDS_Filter->m_pImp->vt->Receive(this->m_pDS_Filter->m_pImp, sample); | 156 result = this->m_pDS_Filter->m_pImp->vt->Receive(this->m_pDS_Filter->m_pImp, sample); |
153 if (result) | 157 if (result) |
154 Debug printf("DS_AudioDecoder::Convert() Error: putting data into input pin %x\n", result); | 158 Debug printf("DS_AudioDecoder::Convert() Error: putting data into input pin %x\n", result); |
159 } | 163 } |
160 memcpy((uint8_t*)out_data + written, frame_pointer, frame_size); | 164 memcpy((uint8_t*)out_data + written, frame_pointer, frame_size); |
161 sample->vt->Release((IUnknown*)sample); | 165 sample->vt->Release((IUnknown*)sample); |
162 read+=this->in_fmt.nBlockAlign; | 166 read+=this->in_fmt.nBlockAlign; |
163 written+=frame_size; | 167 written+=frame_size; |
168 break; | |
164 } | 169 } |
165 if (size_read) | 170 if (size_read) |
166 *size_read = read; | 171 *size_read = read; |
167 if (size_written) | 172 if (size_written) |
168 *size_written = written; | 173 *size_written = written; |