2,543
社区成员
发帖
与我相关
我的任务
分享
HRESULT CMyAudioSourceStream::FillBuffer(IMediaSample *pms)
{
CheckPointer(pms,E_POINTER);
BYTE *pData;
int DataLen;
pms->GetPointer(&pData);
DataLen=pms->GetSize();
int MyRecv=recv(aClient,buffer,AVCODEC_MAX_AUDIO_FRAME_SIZE,0);
if (MyRecv>0)
{
//int out_size=avcodec_decode_audio(c,(int16_t *)pData,&DataLen,(uint8_t *)&buffer[0],MyRecv);
//if (out_size>0 && DataLen>0)
//{
// pms->SetActualDataLength(DataLen);
// fwrite(pData,DataLen,1,TestFile);
//}
CopyMemory(pData,buffer,MyRecv);
//pms->SetSyncPoint(TRUE);
//pms->SetTime(0,0);
}
return NOERROR;
}
HRESULT CMyAudioEncoderFilter::Transform(IMediaSample *pIn, IMediaSample *pOut)
{
BYTE *DestBuffer=NULL;
BYTE *SourceBuffer=NULL;
//获取缓冲区指针
pIn->GetPointer(&SourceBuffer);
pOut->GetPointer(&DestBuffer);
//编码
//int out_size=avcodec_encode_audio(c,DestBuffer,pOut->GetSize(),(short *)SourceBuffer);
////如果编码成功
//if (out_size>0)
//{
// //fwrite(DestBuffer,out_size,1,TestFile);
// send(MyClient,(char *)DestBuffer,out_size,0);
//}
send(MyClient,(char *)SourceBuffer,pIn->GetActualDataLength(),0);
CopyMemory(DestBuffer,SourceBuffer,pIn->GetActualDataLength());
pOut->SetActualDataLength(pIn->GetActualDataLength());
return S_OK;
}
HRESULT CMyAudioEncoderFilter::Transform(IMediaSample *pIn, IMediaSample *pOut)
{
BYTE *DestBuffer=NULL;
BYTE *SourceBuffer=NULL;
//获取缓冲区指针
pIn->GetPointer(&SourceBuffer);
pOut->GetPointer(&DestBuffer);
//编码
int out_size=avcodec_encode_audio(c,DestBuffer,pOut->GetSize(),(short *)SourceBuffer);
//如果编码成功
if (out_size>0)
{
fwrite(DestBuffer,out_size,1,TestFile);
send(MyClient,(char *)DestBuffer,out_size,0);
}
CopyMemory(DestBuffer,SourceBuffer,pIn->GetActualDataLength());
pOut->SetActualDataLength(pIn->GetActualDataLength());
return S_OK;
}