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;