亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inputpin.c

?? linux下實現視頻播放的播放器
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Modified for use with MPlayer, detailed changelog at * http://svn.mplayerhq.hu/mplayer/trunk/ * $Id$ */#include "config.h"#if (C_HAS_DIRECTSHOW)#include "inputpin.h"#include "mediatype.h"#include "wine/winerror.h"/*********** * EnumPins ***********/typedef struct{    IEnumPins_vt* vt;    DECLARE_IUNKNOWN();    IPin* pin1;    IPin* pin2;    int counter;    GUID interfaces[2];} CEnumPins;/** * \brief IEnumPins:Next (retrives a specified number of pins ) * * \param[in]  This pointer to CEnumPins object * \param[in]  cMediaTypes number of pins to retrive * \param[out] ppMediaTypes array of IPin interface pointers of size cMediaTypes * \param[out] pcFetched address of variables that receives number of returned pins * * \return S_OK - success * \return S_FALSE - did not return as meny pins as requested * \return E_INVALIDARG Invalid argument * \return E_POINTER Null pointer * \return VFW_E_ENUM_OUT_OF_SYNC - filter's state has changed and is now inconsistent with enumerator * */static long STDCALL CEnumPins_Next(IEnumPins* This,				   /* [in] */ unsigned long cMediaTypes,				   /* [size_is][out] */ IPin** ppMediaTypes,				   /* [out] */ unsigned long* pcFetched){    CEnumPins* pin = (CEnumPins*)This;    LOG_MSG("CEnumPins_Next(%p) called", This);    if (!ppMediaTypes)	return E_INVALIDARG;    if (!pcFetched && (cMediaTypes!=1))	return E_INVALIDARG;    if (cMediaTypes<=0)	return 0;    //lcounter = ((CEnumPins*)This)->counter;    //lpin1 = ((CEnumPins*)This)->pin1;    //lpin2 = ((CEnumPins*)This)->pin2;    if (((pin->counter == 2) && pin->pin2)	|| ((pin->counter == 1) && !pin->pin2))    {	if (pcFetched)	    *pcFetched=0;	return 1;    }    if (pcFetched)	*pcFetched=1;    if (pin->counter==0)    {	*ppMediaTypes = pin->pin1;	pin->pin1->vt->AddRef((IUnknown*)pin->pin1);    }    else    {	*ppMediaTypes = pin->pin2;	pin->pin2->vt->AddRef((IUnknown*)pin->pin2);    }    pin->counter++;    if (cMediaTypes == 1)	return 0;    return 1;}/** * \brief IEnumPins::Skip (skips over a specified number of pins) * * \param[in]  This pointer to CEnumPinss object * \param[in]  cMediaTypes number of pins to skip * * \return S_OK - success * \return S_FALSE - skipped past the end of the sequence * \return VFW_E_ENUM_OUT_OF_SYNC - filter's state has changed and is now inconsistent with enumerator * */static long STDCALL CEnumPins_Skip(IEnumPins* This,				   /* [in] */ unsigned long cMediaTypes){    LOG_MSG("CEnumPins_Skip(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IEnumPins::Reset (resets enumeration sequence to beginning) * * \param[in]  This pointer to CEnumPins object * * \return S_OK - success * */static long STDCALL CEnumPins_Reset(IEnumPins* This){    LOG_MSG("CEnumPins_Reset(%p) called", This);    ((CEnumPins*)This)->counter = 0;    return 0;}/** * \brief IEnumPins::Clone (makes a copy of enumerator, returned object *        starts at the same position as original) * * \param[in]  This pointer to CEnumPins object * \param[out] ppEnum address of variable that receives pointer to IEnumPins interface * * \return S_OK - success * \return E_OUTOFMEMRY - Insufficient memory * \return E_POINTER - Null pointer * \return VFW_E_ENUM_OUT_OF_SYNC - filter's state has changed and is now inconsistent with enumerator * */static long STDCALL CEnumPins_Clone(IEnumPins* This,				    /* [out] */ IEnumPins** ppEnum){    LOG_MSG("CEnumPins_Clone(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief CEnumPins destructor * * \param[in]  This pointer to CEnumPins object * */static void CEnumPins_Destroy(CEnumPins* This){    free(This->vt);    free(This);}IMPLEMENT_IUNKNOWN(CEnumPins)/** * \brief CEnumPins constructor * * \param[in]  p first pin for enumerator * \param[in]  pp second pin for enumerator * * \return pointer to CEnumPins object or NULL if error occured * */static CEnumPins* CEnumPinsCreate(IPin* p, IPin* pp){    CEnumPins* This = (CEnumPins*) malloc(sizeof(CEnumPins));    if (!This)        return NULL;    This->refcount = 1;    This->pin1 = p;    This->pin2 = pp;    This->counter = 0;    This->vt = (IEnumPins_vt*) malloc(sizeof(IEnumPins_vt));    if (!This->vt)    {	free(This);        return NULL;    }    This->vt->QueryInterface = CEnumPins_QueryInterface;    This->vt->AddRef = CEnumPins_AddRef;    This->vt->Release = CEnumPins_Release;    This->vt->Next = CEnumPins_Next;    This->vt->Skip = CEnumPins_Skip;    This->vt->Reset = CEnumPins_Reset;    This->vt->Clone = CEnumPins_Clone;    This->interfaces[0] = IID_IUnknown;    This->interfaces[1] = IID_IEnumPins;    return This;}/*********** * InputPin * * WARNING: * This is implementation of OUTPUT pin in DirectShow's terms * ***********//** * \brief IPin::Connect (connects pin to another pin) * * \param[in] This          pointer to IPin interface * \param[in] pReceivePin   pointer to IPin interface of remote pin * \param[in] pmt           suggested media type for link. Can be NULL (any media type) * * \return S_OK - success. * \return VFW_E_ALREADY_CONNECTED - pin already connected * \return VFW_E_NOT_STOPPED - filter is active * \return VFW_E_TYPE_NOT_ACCEPT - type is not acceptable * \return Apropriate error code otherwise. * */static long STDCALL CInputPin_Connect(IPin* This,				      /* [in] */ IPin* pReceivePin,				      /* [in] */ AM_MEDIA_TYPE* pmt){    LOG_MSG("CInputPin_Connect(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::ReceiveConnection (accepts a connection from another pin) * * \param[in] This       pointer to IPin interface * \param[in] pConnector connecting pin's IPin interface * \param[in] pmt        suggested media type for connection * * \return S_OK - success * \return E_POINTER - Null pointer * \return VFW_E_ALREADY_CONNECTED - pin already connected * \return VFW_E_NOT_STOPPED - filter is active * \return VFW_E_TYPE_NOT_ACCEPT - type is not acceptable * * \note * When returning S_OK method should also do the following: *  - store media type and return the same type in IPin::ConnectionMediaType *  - store pConnector and return it in IPin::ConnectedTo * */static long STDCALL CInputPin_ReceiveConnection(IPin* This,						/* [in] */ IPin* pConnector,						/* [in] */ const AM_MEDIA_TYPE *pmt){    LOG_MSG("CInputPin_ReceiveConnection(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::Disconnect (accepts a connection from another pin) * * \param[in] This pointer to IPin interface * * \return S_OK - success * \return S_FALSE - pin was not connected * \return VFW_E_NOT_STOPPED - filter is active * * \note *   To break connection you have to also call Disconnect on other pin */static long STDCALL CInputPin_Disconnect(IPin* This){    LOG_MSG("CInputPin_Disconnect(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::ConnectedTo (retrieves pointer to the connected pin, if such exist) * * \param[in]  This pointer to IPin interface * \param[out] pPin pointer to remote pin's IPin interface * * \return S_OK - success * \return E_POINTER - Null pointer * \return VFW_E_NOT_CONNECTED - pin is not connected * * \note * Caller must call Release on received IPin, when done */static long STDCALL CInputPin_ConnectedTo(IPin* This,					  /* [out] */ IPin** pPin){    LOG_MSG("CInputPin_ConnectedTo(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::ConnectionMediaType (retrieves media type for connection, if such exist) * * \param[in]  This pointer to IPin interface * \param[out] pmt pointer to AM_MEDIA_TYPE,  that receives connection media type * * \return S_OK - success * \return E_POINTER - Null pointer * \return VFW_E_NOT_CONNECTED - pin is not connected * */static long STDCALL CInputPin_ConnectionMediaType(IPin* This,						  /* [out] */ AM_MEDIA_TYPE *pmt){    LOG_MSG("CInputPin_ConnectionMediaType(%p) called", This);    if (!pmt)	return E_INVALIDARG;    CopyMediaType(pmt,&(((CInputPin*)This)->type));    return 0;}/** * \brief IPin::QueryPinInfo (retrieves information about the pin) * * \param[in]  This  pointer to IPin interface * \param[out] pInfo pointer to PIN_INFO structure, that receives pin info * * \return S_OK - success * \return E_POINTER - Null pointer * * \note * If pInfo->pFilter is not NULL, then caller must call Release on pInfo->pFilter when done * */static long STDCALL CInputPin_QueryPinInfo(IPin* This,					   /* [out] */ PIN_INFO *pInfo){    CBaseFilter* lparent=((CInputPin*)This)->parent;    LOG_MSG("CInputPin_QueryPinInfo(%p) called", This);    pInfo->dir = PINDIR_OUTPUT;    pInfo->pFilter = (IBaseFilter*) lparent;    lparent->vt->AddRef((IUnknown*)lparent);    pInfo->achName[0] = 0;    return 0;}/** * \brief IPin::QueryDirection (retrieves pin direction) * * \param[in]  This    pointer to IPin interface * \param[out] pPinDir pointer to variable, that receives pin direction (PINDIR_INPUT,PINDIR_OUTPUT) * * \return S_OK - success * \return E_POINTER - Null pointer * */static long STDCALL CInputPin_QueryDirection(IPin* This,					      /* [out] */ PIN_DIRECTION *pPinDir){    *pPinDir = PINDIR_OUTPUT;    LOG_MSG("CInputPin_QueryDirection(%p) called", This);    return 0;}/** * \brief IPin::QueryId (retrieves pin identificator) * * \param[in]  This pointer to IPin interface * \param[out] Id   adress of variable, that receives string with pin's Id. * * \return S_OK - success * \return E_OUTOFMEMORY - Insufficient memory * \return E_POINTER     - Null pointer * * \note * Pin's Id is not the same as pin's name * */static long STDCALL CInputPin_QueryId(IPin* This,				       /* [out] */ unsigned short* *Id){    LOG_MSG("CInputPin_QueryId(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::QueryAccept (determines can media type be accepted or not) * * \param[in] This  pointer to IPin interface * \param[in] pmt   Media type to check * * \return S_OK - success * \return S_FALSE - pin rejects media type * */static long STDCALL CInputPin_QueryAccept(IPin* This,					  /* [in] */ const AM_MEDIA_TYPE* pmt){    LOG_MSG("CInputPin_QueryAccept(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::EnumMediaTypes (enumerates the pin's preferred media types) * * \param[in] This  pointer to IPin interface * \param[out] ppEnum adress of variable that receives pointer to IEnumMEdiaTypes interface * * \return S_OK - success * \return E_OUTOFMEMORY - Insufficient memory * \return E_POINTER     - Null pointer * * \note * Caller must call Release on received interface when done * */static long STDCALL CInputPin_EnumMediaTypes(IPin* This,					     /* [out] */ IEnumMediaTypes** ppEnum){    LOG_MSG("CInputPin_EnumMediaTypes(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::QueryInternalConnections (retries pin's internal connections) * * \param[in]     This  pointer to IPin interface * \param[out]    apPin Array that receives pins, internally connected to this * \param[in,out] nPint Size of an array * * \return S_OK - success * \return S_FALSE - pin rejects media type * \return E_NOTIMPL - not implemented * */static long STDCALL CInputPin_QueryInternalConnections(IPin* This,						       /* [out] */ IPin** apPin,						       /* [out][in] */ unsigned long *nPin){    LOG_MSG("CInputPin_QueryInternalConnections(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::EndOfStream (notifies pin, that no data is expected, until new run command) * * \param[in] This  pointer to IPin interface * * \return S_OK - success * \return E_UNEXPECTED - The pin is output pin * * \note * IMemoryInputPin::Receive,IMemoryInputPin::ReceiveMultiple, IMemoryInputPin::EndOfStream, * IMemAllocator::GetBuffer runs in different (streaming) thread then other * methods (application thread). * IMemoryInputPin::NewSegment runs either in streaming or application thread. * Developer must use critical sections for thread-safing work. * */static long STDCALL CInputPin_EndOfStream(IPin * This){    LOG_MSG("CInputPin_EndOfStream(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::BeginFlush (begins a flush operation) * * \param[in] This  pointer to IPin interface * * \return S_OK - success * \return E_UNEXPECTED - The pin is output pin * */static long STDCALL CInputPin_BeginFlush(IPin * This){    LOG_MSG("CInputPin_BeginFlush(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::EndFlush (ends a flush operation) * * \param[in] This  pointer to IPin interface * * \return S_OK - success * \return E_UNEXPECTED - The pin is output pin * */static long STDCALL CInputPin_EndFlush(IPin* This){    LOG_MSG("CInputPin_EndFlush(%p) (UNIMPLEMENTED)", This);    return E_NOTIMPL;}/** * \brief IPin::NewSegment (media sample received after this call grouped as segment with common *        start,stop time and rate) * * \param[in] This   pointer to IPin interface * \param[in] tStart start time of new segment * \param[in] tStop  end time of new segment * \param[in] dRate  rate at wich segment should be processed * * \return S_OK - success

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人app网站| 欧美日韩欧美一区二区| 国产无一区二区| 日韩av二区在线播放| 678五月天丁香亚洲综合网| 五月天久久比比资源色| 欧美一区日韩一区| 国产美女主播视频一区| 亚洲综合免费观看高清在线观看| 色狠狠桃花综合| 国产精品亚洲一区二区三区在线| 国产欧美日韩视频在线观看| 欧美体内she精视频| 国产呦萝稀缺另类资源| 一个色综合网站| 欧美高清在线一区二区| 欧美日韩国产免费| 99精品视频在线观看免费| 丝袜亚洲另类丝袜在线| 亚洲私人黄色宅男| 国产欧美日韩综合精品一区二区| 欧美中文字幕一区| 成人av影视在线观看| 久久9热精品视频| 无码av免费一区二区三区试看| 国产调教视频一区| 国产午夜精品一区二区三区四区| 不卡的电影网站| 国产资源在线一区| 久久激情五月婷婷| 国内久久精品视频| 久久精品国产精品亚洲红杏| 日日摸夜夜添夜夜添国产精品 | 精品国产一区二区精华| 欧美日韩国产bt| 色婷婷一区二区三区四区| 国产一二精品视频| 国产成人精品1024| 成人国产精品免费观看视频| 国产精品99久久久久久久女警| 丰满少妇久久久久久久| 成人激情小说乱人伦| 色网综合在线观看| 欧美丰满美乳xxx高潮www| 日韩一区二区免费在线观看| 日韩欧美一级二级| 国产人成亚洲第一网站在线播放| 中文在线一区二区| 亚洲黄色片在线观看| 日韩电影一区二区三区| 国产一区二区三区最好精华液| 国产麻豆午夜三级精品| 91精品办公室少妇高潮对白| 精品美女一区二区三区| 国产精品久久久久桃色tv| 一区二区在线电影| 免费观看一级欧美片| 国产电影精品久久禁18| 久久99久久99精品免视看婷婷| 成人激情小说乱人伦| 欧美性生活大片视频| 久久精品亚洲一区二区三区浴池| 国产视频一区在线播放| 亚洲国产视频在线| yourporn久久国产精品| 日韩一区二区中文字幕| 亚洲三级理论片| 亚洲国产日产av| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区四区在线观看| 69堂精品视频| 最新国产の精品合集bt伙计| 捆绑调教美女网站视频一区| 91香蕉视频黄| 中文字幕亚洲电影| 大桥未久av一区二区三区中文| 欧美三级电影精品| 亚洲精品高清在线| 国产精品77777竹菊影视小说| 日韩欧美在线1卡| 一区二区不卡在线播放 | 色综合天天综合网天天狠天天| 日韩免费性生活视频播放| 亚洲日本在线看| 91小视频在线观看| 亚洲美腿欧美偷拍| 91成人在线观看喷潮| 亚洲免费av观看| 欧美专区在线观看一区| 亚洲一区电影777| 欧美精品电影在线播放| 久久 天天综合| 国产精品视频一二三区| 一本久道久久综合中文字幕| 亚洲一区二区黄色| 精品日产卡一卡二卡麻豆| 国产精品综合二区| 一区二区三区精品在线| 日本久久精品电影| 蜜桃精品在线观看| 国产精品污污网站在线观看| 精品制服美女丁香| 中文字幕制服丝袜成人av | 日韩一区二区在线观看| 粉嫩aⅴ一区二区三区四区 | 欧美人与禽zozo性伦| 国产一区视频网站| 一区二区三区蜜桃| 欧美激情中文不卡| 日韩女优电影在线观看| 欧美在线观看视频一区二区三区| 久久精品国产99国产精品| 亚洲欧美成aⅴ人在线观看| 欧美一区二区三区啪啪| 在线看不卡av| 99精品欧美一区二区蜜桃免费 | 88在线观看91蜜桃国自产| 不卡av电影在线播放| 精品无人码麻豆乱码1区2区 | 欧美日韩www| 欧美在线看片a免费观看| 成人va在线观看| 成人免费av网站| 国产福利一区二区| 蜜臀av一级做a爰片久久| 麻豆91在线播放免费| 日韩av中文字幕一区二区| 亚洲成人精品在线观看| 亚洲图片有声小说| 亚洲6080在线| 午夜精品影院在线观看| 成人免费在线观看入口| 国产视频一区二区在线| 亚洲欧美电影院| 久久精品噜噜噜成人88aⅴ| 蜜臀av性久久久久av蜜臀妖精| 精品中文字幕一区二区小辣椒| 国产剧情一区在线| 国产精品1区2区3区| 欧美久久久久久久久中文字幕| 在线综合亚洲欧美在线视频| 精品国产精品网麻豆系列 | 91美女福利视频| 色视频一区二区| 国产欧美精品一区| 日韩激情一二三区| 韩国一区二区三区| 欧美色偷偷大香| 精品久久久久久久久久久院品网| 国产精品免费免费| 亚洲成人免费av| 99re成人精品视频| 久久蜜桃香蕉精品一区二区三区| 亚洲精品高清在线观看| 国内精品免费**视频| 日本久久电影网| 亚洲精品乱码久久久久久| 国产成人aaaa| 国产欧美一二三区| 韩日欧美一区二区三区| 欧美精品日韩精品| 亚洲人成人一区二区在线观看| 国产成人久久精品77777最新版本| 欧美一区二区三区免费视频| 日韩美女视频一区| 97久久精品人人做人人爽| 国产精品国产a| 国产成人鲁色资源国产91色综 | 国产日产欧美一区二区视频| 日本不卡一区二区| 日韩一级片网站| 国产一区二区三区在线观看精品| 日韩一区二区三区免费看 | 91成人看片片| 久久精品久久综合| 久久精品欧美一区二区三区不卡| 午夜欧美一区二区三区在线播放| 在线观看一区二区精品视频| 亚洲福利一区二区| 日韩欧美亚洲国产精品字幕久久久| 麻豆中文一区二区| 久久中文字幕电影| 99久久精品国产导航| 日韩精品国产精品| 欧美激情在线一区二区| 色女孩综合影院| 精品一区二区三区日韩| 国产精品人成在线观看免费 | 日本vs亚洲vs韩国一区三区| 日韩午夜在线观看视频| 波多野结衣欧美| 五月综合激情婷婷六月色窝| 91麻豆精品国产自产在线| 国产成人一级电影| 性做久久久久久免费观看| 欧美日韩国产成人在线免费| 成人av在线观| 国产精品一区二区91| 蜜乳av一区二区三区| 亚洲影院理伦片|