📄 writersink.cpp
字号:
#include "stdafx.h"
#include "writerSink.h"
#include "nssBuffer.h"
TmyWriterSink::TmyWriterSink(LPUNKNOWN punk,HRESULT *phr):CUnknown(_l("TmyWriterSink"),punk)
{
AddRef();
f=NULL;
*phr=S_OK;
}
STDMETHODIMP TmyWriterSink::OnHeader(INSSBuffer *pHeader)
{
if (!f) f=fopen("c:\\2.wmv","wb");
BYTE *buf;DWORD len;
pHeader->GetBufferAndLength(&buf,&len);
fwrite(buf,1,len,f);
return S_OK;
}
STDMETHODIMP TmyWriterSink::IsRealTime(BOOL *pfRealTime)
{
*pfRealTime=FALSE;
return S_OK;
}
STDMETHODIMP TmyWriterSink::AllocateDataUnit(DWORD cbDataUnit,INSSBuffer* *ppDataUnit)
{
if (!ppDataUnit) return E_POINTER;
HRESULT hr;
TmyNssBuffer *buf=new TmyNssBuffer(NULL,&hr);
buf->alloc(cbDataUnit);
*ppDataUnit=(INSSBuffer*)buf;
return S_OK;
}
STDMETHODIMP TmyWriterSink::OnDataUnit(INSSBuffer *pDataUnit)
{
BYTE *buf;DWORD len;
pDataUnit->GetBufferAndLength(&buf,&len);
char_t pomS[256];
OutputDebugString(_itoa(len,pomS,10));
fwrite(buf,1,len,f);
return S_OK;
}
STDMETHODIMP TmyWriterSink::OnEndWriting(void)
{
if (f) fclose(f);
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -