本文整理汇总了C++中FreeMediaType函数的典型用法代码示例。如果您正苦于以下问题:C++ FreeMediaType函数的具体用法?C++ FreeMediaType怎么用?C++ FreeMediaType使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了FreeMediaType函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: IEnumMediaTypesImpl_Reset
static HRESULT WINAPI IEnumMediaTypesImpl_Reset(IEnumMediaTypes * iface)
{
ULONG i;
AM_MEDIA_TYPE amt;
IEnumMediaTypesImpl *This = impl_from_IEnumMediaTypes(iface);
TRACE("(%p)->()\n", iface);
for (i = 0; i < This->enumMediaDetails.cMediaTypes; i++)
FreeMediaType(&This->enumMediaDetails.pMediaTypes[i]);
CoTaskMemFree(This->enumMediaDetails.pMediaTypes);
i = 0;
while (This->enumMediaFunction(This->basePin, i, &amt) == S_OK) i++;
This->enumMediaDetails.cMediaTypes = i;
This->enumMediaDetails.pMediaTypes = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE) * i);
for (i = 0; i < This->enumMediaDetails.cMediaTypes; i++)
{
This->enumMediaFunction(This->basePin, i,&amt);
if (FAILED(CopyMediaType(&This->enumMediaDetails.pMediaTypes[i], &amt)))
{
while (i--)
FreeMediaType(&This->enumMediaDetails.pMediaTypes[i]);
CoTaskMemFree(This->enumMediaDetails.pMediaTypes);
return E_OUTOFMEMORY;
}
}
This->currentVersion = This->mediaVersionFunction(This->basePin);
This->uIndex = 0;
return S_OK;
}
开发者ID:mvardan,项目名称:ros-svn-mirror,代码行数:34,代码来源:mediatype.c
示例2: ACMWrapper_SetMediaType
static HRESULT WINAPI ACMWrapper_SetMediaType(TransformFilter *tf, PIN_DIRECTION dir, const AM_MEDIA_TYPE * pmt)
{
ACMWrapperImpl* This = impl_from_TransformFilter(tf);
MMRESULT res;
TRACE("(%p)->(%i %p)\n", This, dir, pmt);
if (dir != PINDIR_INPUT)
return S_OK;
/* Check root (GUID w/o FOURCC) */
if ((IsEqualIID(&pmt->majortype, &MEDIATYPE_Audio)) &&
(!memcmp(((const char *)&pmt->subtype)+4, ((const char *)&MEDIATYPE_Audio)+4, sizeof(GUID)-4)) &&
(IsEqualIID(&pmt->formattype, &FORMAT_WaveFormatEx)))
{
HACMSTREAM drv;
WAVEFORMATEX *wfx = (WAVEFORMATEX*)pmt->pbFormat;
AM_MEDIA_TYPE* outpmt = &This->tf.pmt;
if (!wfx || wfx->wFormatTag == WAVE_FORMAT_PCM || wfx->wFormatTag == WAVE_FORMAT_EXTENSIBLE)
return VFW_E_TYPE_NOT_ACCEPTED;
FreeMediaType(outpmt);
This->pWfIn = (LPWAVEFORMATEX)pmt->pbFormat;
/* HACK */
/* TRACE("ALIGN = %d\n", pACMWrapper->pWfIn->nBlockAlign); */
/* pACMWrapper->pWfIn->nBlockAlign = 1; */
/* Set output audio data to PCM */
CopyMediaType(outpmt, pmt);
outpmt->subtype.Data1 = WAVE_FORMAT_PCM;
This->pWfOut = (WAVEFORMATEX*)outpmt->pbFormat;
This->pWfOut->wFormatTag = WAVE_FORMAT_PCM;
This->pWfOut->wBitsPerSample = 16;
This->pWfOut->nBlockAlign = This->pWfOut->wBitsPerSample * This->pWfOut->nChannels / 8;
This->pWfOut->cbSize = 0;
This->pWfOut->nAvgBytesPerSec = This->pWfOut->nChannels * This->pWfOut->nSamplesPerSec
* (This->pWfOut->wBitsPerSample/8);
if (!(res = acmStreamOpen(&drv, NULL, This->pWfIn, This->pWfOut, NULL, 0, 0, 0)))
{
This->has = drv;
TRACE("Connection accepted\n");
return S_OK;
}
else
FIXME("acmStreamOpen returned %d\n", res);
FreeMediaType(outpmt);
TRACE("Unable to find a suitable ACM decompressor\n");
}
TRACE("Connection refused\n");
return VFW_E_TYPE_NOT_ACCEPTED;
}
开发者ID:AmesianX,项目名称:wine,代码行数:56,代码来源:acmwrapper.c
示例3: msg_Dbg
CapturePin::~CapturePin()
{
#ifdef DEBUG_DSHOW
msg_Dbg( p_input, "CapturePin::~CapturePin" );
#endif
for( size_t c=0; c<media_type_count; c++ )
{
FreeMediaType(media_types[c]);
}
FreeMediaType(cx_media_type);
}
开发者ID:cmassiot,项目名称:vlc-broadcast,代码行数:11,代码来源:filter.cpp
示例4: ATLTRACE
SampleCapturePin::~SampleCapturePin()
{
#ifdef DEBUG_DSHOW
ATLTRACE( "SampleCapturePin::~SampleCapturePin" );
#endif
for( size_t c=0; c<media_type_count; c++ )
{
FreeMediaType(media_types[c]);
}
free(media_types);
media_types = NULL;
FreeMediaType(cx_media_type);
DeleteCriticalSection(&m_mylock);
}
开发者ID:mason105,项目名称:red5cpp,代码行数:14,代码来源:SampleCaptureFilter.cpp
示例5: GetFrameSize
HRESULT __fastcall GetFrameSize(IPin* pPin, LONG* plWidth, LONG* plHeight)
{
HRESULT hr;
if(!pPin || !plWidth || !plHeight)
return E_POINTER;
*plWidth = *plHeight = 0;
AM_MEDIA_TYPE mt;
hr = pPin->ConnectionMediaType(&mt);
if(SUCCEEDED(hr))
{
if(FORMAT_VideoInfo==mt.formattype)
{
VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(mt.pbFormat);
if(pVih)
{
*plWidth = pVih->bmiHeader.biWidth;
*plHeight = pVih->bmiHeader.biHeight;
}
}
else
{
hr = VFW_E_UNSUPPORTED_STREAM;
}
FreeMediaType(mt);
}
return hr;
}
开发者ID:Erls-Corporation,项目名称:webinaria-source,代码行数:28,代码来源:utils.cpp
示例6: _T
void CTextInfoForm::DoPinDetails(GraphStudio::Pin *pin, int level, int offset)
{
CString ofs, t, f;
for (int i=0; i<offset; i++) ofs += _T(" ");
AM_MEDIA_TYPE mt;
HRESULT hr = pin->pin->ConnectionMediaType(&mt);
if (SUCCEEDED(hr)) {
GraphStudio::NameGuid(mt.majortype, f);
t = _T("Major: ") + f; Echo(ofs+t);
GraphStudio::NameGuid(mt.subtype, f);
t = _T("Subtype: ") + f; Echo(ofs+t);
// parse one level deeper
if (level > 1) {
DoMediaTypeDetails(&mt, level, offset+4);
}
GraphStudio::NameGuid(mt.formattype, f);
t = _T("Format: ") + f; Echo(ofs+t);
if (level > 2) {
// parse format
if (mt.formattype == FORMAT_WaveFormatEx) DoWaveFormatEx(&mt, level, offset); else
if (mt.formattype == FORMAT_VideoInfo2) DoVideoInfo2(&mt, level, offset); else
if (mt.formattype == FORMAT_VideoInfo) DoVideoInfo(&mt, level, offset); else
if (mt.formattype == FORMAT_MPEG2_VIDEO) DoMPEG2VideoInfo(&mt, level, offset);
}
Echo(_T(""));
FreeMediaType(mt);
}
}
开发者ID:CyberShadow,项目名称:graphstudio,代码行数:33,代码来源:TextInfoForm.cpp
示例7: InitCaptureGraphBuilder
HRESULT CCaptureVideo::Open(int iDeviceID,int iPress)
{
HRESULT hr;
hr = InitCaptureGraphBuilder();
if (FAILED(hr)){
return hr;
}
// Bind Device Filter. We know the device because the id was passed in
if(!BindVideoFilter(iDeviceID, &m_pBF))
return S_FALSE;
hr = m_pGB->AddFilter(m_pBF, L"Capture Filter");
// create a sample grabber
hr = CoCreateInstance( CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, IID_ISampleGrabber, (void**)&m_pGrabber );
if(FAILED(hr)){
return hr;
}
CComQIPtr< IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber );//设置视频格式
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24; // MEDIASUBTYPE_RGB24 ;
hr = m_pGrabber->SetMediaType(&mt);
if( FAILED( hr ) ){
return hr;
}
hr = m_pGB->AddFilter( pGrabBase, L"Grabber" );
if( FAILED( hr ) ){
return hr;
}// try to render preview/capture pin
hr = m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL);
if( FAILED( hr ) )
hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,m_pBF,pGrabBase,NULL);
if( FAILED( hr ) ){
return hr;
}
hr = m_pGrabber->GetConnectedMediaType( &mt );
if ( FAILED( hr) ){
return hr;
}VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt.pbFormat;
mCB.lWidth = vih->bmiHeader.biWidth;
mCB.lHeight = vih->bmiHeader.biHeight;
mCB.bGrabVideo = FALSE ;
//mCB.frame_handler = NULL ;
FreeMediaType(mt);
hr = m_pGrabber->SetBufferSamples( FALSE );
hr = m_pGrabber->SetOneShot( FALSE );
//设置视频捕获回调函数 也就是如果有视频数据时就会调用这个类的BufferCB函数
//返回OnTimer
hr = m_pGrabber->SetCallback( &mCB, 1 );
//设置视频捕捉窗口
m_hWnd = CreateWindow("#32770", /* Dialog */ "", WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
SetupVideoWindow();
hr = m_pMC->Run();//开始视频捕捉
if(FAILED(hr)){
//AfxMessageBox("Couldn’t run the graph!");return hr;
}
return S_OK;
}
开发者ID:Fluray,项目名称:gh0st-----,代码行数:60,代码来源:CaptureVideo.cpp
示例8: FreeMediaType
HRESULT VideoCapture::GetMediaType()
{
AM_MEDIA_TYPE mt;
HRESULT hr = m_pGrabber->GetConnectedMediaType(&mt);
if (FAILED(hr)) {
FreeMediaType(mt);
return hr;
}
memcpy(&m_BmiHeader, &((VIDEOINFOHEADER *)mt.pbFormat)->bmiHeader, sizeof(BITMAPINFOHEADER));
if (m_pFrameData != 0) delete[] m_pFrameData;
m_pFrameData = new BYTE[m_BmiHeader.biSizeImage];
FreeMediaType(mt);
return hr;
}
开发者ID:dunghand,项目名称:msrds,代码行数:16,代码来源:VideoCapture.cpp
示例9: DSoundRender_PrepareReceive
static HRESULT WINAPI DSoundRender_PrepareReceive(BaseRenderer *iface, IMediaSample *pSample)
{
DSoundRenderImpl *This = impl_from_BaseRenderer(iface);
HRESULT hr;
AM_MEDIA_TYPE *amt;
if (IMediaSample_GetMediaType(pSample, &amt) == S_OK)
{
AM_MEDIA_TYPE *orig = &This->renderer.pInputPin->pin.mtCurrent;
WAVEFORMATEX *origfmt = (WAVEFORMATEX *)orig->pbFormat;
WAVEFORMATEX *newfmt = (WAVEFORMATEX *)amt->pbFormat;
if (origfmt->wFormatTag == newfmt->wFormatTag &&
origfmt->nChannels == newfmt->nChannels &&
origfmt->nBlockAlign == newfmt->nBlockAlign &&
origfmt->wBitsPerSample == newfmt->wBitsPerSample &&
origfmt->cbSize == newfmt->cbSize)
{
if (origfmt->nSamplesPerSec != newfmt->nSamplesPerSec)
{
hr = IDirectSoundBuffer_SetFrequency(This->dsbuffer,
newfmt->nSamplesPerSec);
if (FAILED(hr))
return VFW_E_TYPE_NOT_ACCEPTED;
FreeMediaType(orig);
CopyMediaType(orig, amt);
IMediaSample_SetMediaType(pSample, NULL);
}
}
else
return VFW_E_TYPE_NOT_ACCEPTED;
}
return S_OK;
}
开发者ID:reactos,项目名称:reactos,代码行数:34,代码来源:dsoundrender.c
示例10: CoTaskMemAlloc
bool Misc::SetStreamConfigData(AM_MEDIA_TYPE *pMT,
BYTE *pMediaHex, int inMediaSize,
BYTE *pVideoHeaderHex, int inVideoHeaderSize)
{
int mediaSize = inMediaSize / 2;
int videoHeaderSize = inVideoHeaderSize / 2;
if (mediaSize != sizeof AM_MEDIA_TYPE)
return false;
LPVOID pNewVideoHeader = NULL;
if (videoHeaderSize > 0)
{
pNewVideoHeader = CoTaskMemAlloc(videoHeaderSize);
if (pNewVideoHeader)
{
Make8Bit((char *) pVideoHeaderHex, (char *) pNewVideoHeader, inVideoHeaderSize);
}
else
return false;
}
// Release any previously allocated format tag
FreeMediaType(*pMT);
Make8Bit((char *) pMediaHex, (char *) pMT, inMediaSize);
pMT->pbFormat = (BYTE *) pNewVideoHeader; // may be NULL under certain circumstances
return true;
}
开发者ID:identity0815,项目名称:os45,代码行数:28,代码来源:misc.cpp
示例11: Parser_OutputPin_Release
static ULONG WINAPI Parser_OutputPin_Release(IPin * iface)
{
Parser_OutputPin *This = (Parser_OutputPin *)iface;
ULONG refCount = InterlockedDecrement(&This->pin.pin.refCount);
TRACE("(%p)->() Release from %d\n", iface, refCount + 1);
if (!refCount)
{
FreeMediaType(This->pmt);
CoTaskMemFree(This->pmt);
FreeMediaType(&This->pin.pin.mtCurrent);
CoTaskMemFree(This);
return 0;
}
return refCount;
}
开发者ID:mgriepentrog,项目名称:wine,代码行数:17,代码来源:parser.c
示例12: COutputPin_Destroy
/**
* \brief COutputPin destructor
*
* \param[in] This pointer to COutputPin class
*
*/
static void COutputPin_Destroy(COutputPin* This)
{
free(This->mempin->vt);
free(This->mempin);
free(This->vt);
FreeMediaType(&(This->type));
free(This);
}
开发者ID:Newbleeto,项目名称:mplayer2,代码行数:14,代码来源:outputpin.c
示例13: Clear
inline void Clear()
{
if (ptr) {
FreeMediaType(*ptr);
CoTaskMemFree(ptr);
ptr = nullptr;
}
}
开发者ID:devgopher,项目名称:Isotoxin,代码行数:8,代码来源:dshow-media-type.hpp
示例14: DeleteMediaType
void DeleteMediaType(AM_MEDIA_TYPE *pmt)
{
if (pmt)
{
FreeMediaType(*pmt);
CoTaskMemFree(pmt);
}
}
开发者ID:eaglezhao,项目名称:tracnghiemweb,代码行数:8,代码来源:utils.cpp
示例15: CheckPointer
HRESULT RtspSourcePin::GetMediaType(CMediaType* pMediaType)
{
// We only support one MediaType - the one that is streamed
CheckPointer(pMediaType, E_POINTER);
CAutoLock cAutoLock(m_pFilter->pStateLock());
FreeMediaType(*pMediaType);
return CopyMediaType(pMediaType, &_mediaType);
}
开发者ID:allweax,项目名称:RtspSourceFilter,代码行数:8,代码来源:RtspSourcePin.cpp
示例16: FreeMediaType
CMediaType&
CMediaType::operator=(const AM_MEDIA_TYPE& rt)
{
if (&rt != this) {
FreeMediaType(*this);
CopyMediaType(this, &rt);
}
return *this;
}
开发者ID:DragonZX,项目名称:fdm2,代码行数:9,代码来源:mtype.cpp
示例17: ACMWrapper_ConnectInput
static HRESULT ACMWrapper_ConnectInput(TransformFilterImpl* pTransformFilter, const AM_MEDIA_TYPE * pmt)
{
ACMWrapperImpl* This = (ACMWrapperImpl*)pTransformFilter;
MMRESULT res;
TRACE("(%p)->(%p)\n", This, pmt);
if ((IsEqualIID(&pmt->majortype, &MEDIATYPE_Audio)) &&
(!memcmp(((char*)&pmt->subtype)+4, ((char*)&MEDIATYPE_Audio)+4, sizeof(GUID)-4)) && /* Check root (GUID w/o FOURCC) */
(IsEqualIID(&pmt->formattype, &FORMAT_WaveFormatEx)))
{
HACMSTREAM drv;
AM_MEDIA_TYPE* outpmt = &((OutputPin*)This->tf.ppPins[1])->pin.mtCurrent;
This->pWfIn = (LPWAVEFORMATEX)pmt->pbFormat;
/* HACK */
/* TRACE("ALIGN = %d\n", pACMWrapper->pWfIn->nBlockAlign); */
/* pACMWrapper->pWfIn->nBlockAlign = 1; */
/* Set output audio data to PCM */
CopyMediaType(outpmt, pmt);
outpmt->subtype.Data1 = WAVE_FORMAT_PCM;
This->pWfOut = (WAVEFORMATEX*)outpmt->pbFormat;
This->pWfOut->wFormatTag = WAVE_FORMAT_PCM;
This->pWfOut->wBitsPerSample = 16;
This->pWfOut->nBlockAlign = 4;
This->pWfOut->cbSize = 0;
This->pWfOut->nAvgBytesPerSec = This->pWfOut->nChannels * This->pWfOut->nSamplesPerSec
* (This->pWfOut->wBitsPerSample/8);
if (!(res = acmStreamOpen(&drv, NULL, This->pWfIn, This->pWfOut, NULL, 0, 0, 0)))
{
This->has = drv;
if ((res = acmStreamSize(drv, OUTPUT_BUFFER_SIZE, &This->max_size, ACM_STREAMSIZEF_DESTINATION))) {
ERR("Cannot retrieve input buffer size error %d!\n", res);
This->max_size = INPUT_BUFFER_SIZE;
}
TRACE("input buffer size %ld\n", This->max_size);
/* Update buffer size of media samples in output */
((OutputPin*)This->tf.ppPins[1])->allocProps.cbBuffer = OUTPUT_BUFFER_SIZE;
TRACE("Connection accepted\n");
return S_OK;
}
else
FIXME("acmStreamOpen returned %d\n", res);
FreeMediaType(outpmt);
TRACE("Unable to find a suitable ACM decompressor\n");
}
TRACE("Connection refused\n");
return S_FALSE;
}
开发者ID:howard5888,项目名称:wineT,代码行数:56,代码来源:acmwrapper.c
示例18: CMediaSample_Destroy
/**
* \brief CMediaSample destructor
*
* \param[in] This pointer to CMediaSample object
*
*/
void CMediaSample_Destroy(CMediaSample* This)
{
Debug printf("CMediaSample_Destroy(%p) called (ref:%d)\n", This, This->refcount);
free(This->vt);
free(This->own_block);
if(((CMediaSample*)This)->type_valid)
FreeMediaType(&(This->media_type));
free(This);
}
开发者ID:Gamer125,项目名称:wiibrowser,代码行数:16,代码来源:cmediasample.c
示例19: SetInputMediaType
BOOL SetInputMediaType(ASF_FILE_INFO* pInfo)
{
WAVEFORMATEX* pwf;
DMO_MEDIA_TYPE mt ={0};
if (InitMediaType(&mt, pInfo->dwFormat) != S_OK)
return FALSE;
pwf = (WAVEFORMATEX*)pInfo->pbFormat;
memcpy(mt.pbFormat, pInfo->pbFormat, pInfo->dwFormat);
mt.majortype = MEDIATYPE_Audio;
mt.subtype = MEDIASUBTYPE_AudioBase;
mt.subtype.Data1 = pwf->wFormatTag;
mt.formattype = FORMAT_WaveFormatEx;
mt.bTemporalCompression = 0;
mt.bFixedSizeSamples = 1;
mt.lSampleSize = 0;
if (pInfo->pMediaObject->SetInputType(0, &mt, 0) != S_OK) {
#ifdef _WIN32_WCE
// from TCPMP
if (pwf->wFormatTag == WAVE_FORMAT_WMA8 && pwf->cbSize == 10) {
LPBYTE pb = mt.pbFormat + sizeof(WAVEFORMATEX);
memset(pb, 0, pwf->cbSize);
memcpy(pb + 2, pwf + 1, 6);
if (pInfo->pMediaObject->SetInputType(0, &mt, 0) != S_OK) {
FreeMediaType(&mt);
return FALSE;
}
}
else {
FreeMediaType(&mt);
return FALSE;
}
#else
FreeMediaType(&mt);
return FALSE;
#endif
}
FreeMediaType(&mt);
return TRUE;
}
开发者ID:dps123,项目名称:nitrogenS100,代码行数:42,代码来源:wmadmo.cpp
示例20: DeleteMediaType
void WINAPI DeleteMediaType(AM_MEDIA_TYPE *pmt)
{
// allow NULL pointers for coding simplicity
if (pmt == NULL) {
return;
}
FreeMediaType(*pmt);
CoTaskMemFree((PVOID)pmt);
}
开发者ID:9crk,项目名称:EasyClient,代码行数:11,代码来源:mtype.cpp
注:本文中的FreeMediaType函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论