mirror of
https://github.com/mpv-player/mpv
synced 2024-12-17 04:15:13 +00:00
New media format negotiation code:
loop through all available formats trying to establish connection between pins. Negotiation stops either when all formats are rejected (error reported in this case) or when connection is established (which can happen only when current media format is accepted by both of the pins). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25093 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
1e663de892
commit
fa18524d05
@ -1390,19 +1390,31 @@ static HRESULT build_sub_graph(priv_t * priv, IBaseFilter * pCaptureFilter,
|
||||
set_buffer_preference(20,(WAVEFORMATEX*)(arpmt[nFormatProbed]->pbFormat),pCapturePin,pSGIn);
|
||||
}
|
||||
|
||||
for(nFormatProbed=0; arpmt[nFormatProbed]; nFormatProbed++)
|
||||
{
|
||||
DisplayMediaType("Probing format", arpmt[nFormatProbed]);
|
||||
hr = OLE_CALL_ARGS(pSG, SetMediaType, arpmt[nFormatProbed]); //set desired mediatype
|
||||
if(FAILED(hr)){
|
||||
mp_msg(MSGT_TV,MSGL_DBG2,"tvi_dshow: SetMediaType(pSG) call failed. Error:0x%x\n", (unsigned int)hr);
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
/* connecting filters together: VideoCapture --> SampleGrabber */
|
||||
hr = OLE_CALL_ARGS(priv->pGraph, Connect, pCapturePin, pSGIn);
|
||||
if(FAILED(hr)){
|
||||
mp_msg(MSGT_TV,MSGL_DBG2,"tvi_dshow: Unable to create pCapturePin<->pSGIn connection. Error:0x%x\n", (unsigned int)hr);
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
OLE_RELEASE_SAFE(pSG);
|
||||
|
||||
if(!arpmt[nFormatProbed])
|
||||
{
|
||||
mp_msg(MSGT_TV, MSGL_WARN, "tvi_dshow: Unable to negotiate media format\n");
|
||||
hr = E_FAIL;
|
||||
break;
|
||||
}
|
||||
|
||||
hr = OLE_CALL_ARGS(pCapturePin, ConnectionMediaType, pmt);
|
||||
if(FAILED(hr))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user