changeset 25029:c9f20e41bc13

Make sure that mplayer will receive actual media type instead of requested value.
author voroshil
date Fri, 16 Nov 2007 18:59:35 +0000
parents 2cae9470f53b
children a76ba4c634a7
files stream/tvi_dshow.c
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/stream/tvi_dshow.c	Fri Nov 16 17:57:12 2007 +0000
+++ b/stream/tvi_dshow.c	Fri Nov 16 18:59:35 2007 +0000
@@ -1307,6 +1307,8 @@
 {
     HRESULT hr;
 
+    AM_MEDIA_TYPE conn_mt; //Media type of established connection
+
     IPin *pSGIn;
     IPin *pSGOut;
     IPin *pNRIn=NULL;
@@ -1396,6 +1398,12 @@
             mp_msg(MSGT_TV,MSGL_DBG2,"tvi_dshow: Unable to create pCapturePin<->pSGIn connection. Error:0x%x\n", (unsigned int)hr);
             break;
         }
+        hr = OLE_CALL_ARGS(pCapturePin, ConnectionMediaType, &conn_mt);
+        if(FAILED(hr))
+        {
+            mp_msg(MSGT_TV, MSGL_WARN, MSGTR_TVI_DS_GetActualMediatypeFailed, (unsigned int)hr);
+            CopyMediaType(&conn_mt, pmt);
+        }
 
         if(priv->tv_param->hidden_video_renderer){
             IEnumFilters* pEnum;
@@ -1449,6 +1457,11 @@
 
         hr = S_OK;
     } while(0);
+
+    FreeMediaType(pmt);
+    CopyMediaType(pmt, &conn_mt);
+    FreeMediaType(&conn_mt);
+
     OLE_RELEASE_SAFE(pSGF);
     OLE_RELEASE_SAFE(pSGIn);
     OLE_RELEASE_SAFE(pSGOut);