diff --git a/libavdevice/dshow_pin.c b/libavdevice/dshow_pin.c
index f31ecc6c99f643d3e983a25727ce5bd52f2fd9c8..5e14108092de72b4f500abee4cb8fdce188a9382 100644
--- a/libavdevice/dshow_pin.c
+++ b/libavdevice/dshow_pin.c
@@ -73,6 +73,7 @@ libAVPin_Disconnect(libAVPin *this)
         return VFW_E_NOT_STOPPED;
     if (!this->connectedto)
         return S_FALSE;
+    IPin_Release(this->connectedto);
     this->connectedto = NULL;
 
     return S_OK;