[vlc-commits] [Git][videolan/vlc][master] 2 commits: bdagraph: use ComPtr with commong COM objects
Steve Lhomme (@robUx4)
gitlab at videolan.org
Wed Jun 1 14:24:43 UTC 2022
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
e133a41a by Steve Lhomme at 2022-06-01T14:12:58+00:00
bdagraph: use ComPtr with commong COM objects
The other COM objects don't have their IID in mingw-w64 so we can't handle them
well with WRL.
- - - - -
0b0eebfe by Steve Lhomme at 2022-06-01T14:12:58+00:00
win32: use IID_PPV_ARGS instead of custom calls
This will avoid a mismatch of the UUID type.
- - - - -
6 changed files:
- modules/access/dshow/crossbar.cpp
- modules/access/dshow/dshow.cpp
- modules/access/dtv/bdagraph.cpp
- modules/access/dtv/bdagraph.hpp
- modules/gui/qt/maininterface/compositor_dcomp.cpp
- modules/gui/qt/maininterface/compositor_dcomp_acrylicsurface.cpp
Changes:
=====================================
modules/access/dshow/crossbar.cpp
=====================================
@@ -179,7 +179,7 @@ HRESULT FindCrossbarRoutes( vlc_object_t *p_this, access_sys_t *p_sys,
}
ComPtr<IAMCrossbar> pXbar;
- if( FAILED(pinInfo.pFilter->QueryInterface(__uuidof(pXbar.Get()), &pXbar)) )
+ if( FAILED(pinInfo.pFilter->QueryInterface(IID_PPV_ARGS(&pXbar))) )
{
pinInfo.pFilter->Release();
return S_FALSE;
=====================================
modules/access/dshow/dshow.cpp
=====================================
@@ -1259,7 +1259,7 @@ FindCaptureDevice( vlc_object_t *p_this, std::string *p_devicename,
{
/* Getting the property page to get the device name */
ComPtr<IPropertyBag> p_bag;
- hr = p_moniker->BindToStorage( 0, 0, __uuidof(p_bag.Get()), &p_bag );
+ hr = p_moniker->BindToStorage( 0, 0, IID_PPV_ARGS( &p_bag ) );
if( SUCCEEDED(hr) )
{
VARIANT var;
@@ -1295,7 +1295,7 @@ FindCaptureDevice( vlc_object_t *p_this, std::string *p_devicename,
{
msg_Dbg( p_this, "asked for %s, binding to %s", p_devicename->c_str() , devname.c_str() ) ;
/* NULL possibly means we don't need BindMoniker BindCtx ?? */
- hr = p_moniker->BindToObject( NULL, 0, __uuidof(p_base_filter.Get()), &p_base_filter );
+ hr = p_moniker->BindToObject( NULL, 0, IID_PPV_ARGS( &p_base_filter ) );
if( FAILED(hr) )
{
msg_Err( p_this, "couldn't bind moniker to filter "
@@ -1631,6 +1631,7 @@ static size_t EnumDeviceCaps( vlc_object_t *p_this, ComPtr<IBaseFilter> &p_filte
mt[mt_count++] = *p_mt;
/* Setup a few properties like the audio latency */
+ // IID_IAMBufferNegotiation in not defined in the mingw header, so can't use __uuidof()
ComPtr<IAMBufferNegotiation> p_ambuf;
if( SUCCEEDED( p_output_pin->QueryInterface( IID_IAMBufferNegotiation, &p_ambuf ) ) )
{
@@ -2119,7 +2120,7 @@ static void ShowDeviceProperties( vlc_object_t *p_this,
hr = p_graph->FindInterface( &PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Audio, p_device_filter.Get(),
- __uuidof(p_SC.Get()), &p_SC );
+ IID_PPV_ARGS( &p_SC ) );
if( SUCCEEDED(hr) )
{
ShowPropertyPage(p_SC);
@@ -2129,6 +2130,7 @@ static void ShowDeviceProperties( vlc_object_t *p_this,
* TV Audio filter
*/
ComPtr<IAMTVAudio> p_TVA;
+ // IID_IAMTVAudio in not defined in the mingw header, so can't use __uuidof()
hr = p_graph->FindInterface( &PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Audio, p_device_filter.Get(),
IID_IAMTVAudio, &p_TVA );
@@ -2149,19 +2151,19 @@ static void ShowDeviceProperties( vlc_object_t *p_this,
hr = p_graph->FindInterface( &PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Interleaved, p_device_filter.Get(),
- __uuidof(p_SC.Get()), &p_SC );
+ IID_PPV_ARGS( &p_SC ) );
if( FAILED(hr) )
{
hr = p_graph->FindInterface( &PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Video, p_device_filter.Get(),
- __uuidof(p_SC.Get()), &p_SC );
+ IID_PPV_ARGS( &p_SC ) );
}
if( FAILED(hr) )
{
hr = p_graph->FindInterface( &PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Stream, p_device_filter.Get(),
- __uuidof(p_SC.Get()), &p_SC );
+ IID_PPV_ARGS( &p_SC ) );
}
if( SUCCEEDED(hr) )
=====================================
modules/access/dtv/bdagraph.cpp
=====================================
@@ -40,6 +40,8 @@
#include "dtv.h"
#undef DEBUG_MONIKER_NAME
+using Microsoft::WRL::ComPtr;
+
static ModulationType dvb_parse_modulation (const char *mod)
{
if (!strcmp (mod, "16QAM")) return BDA_MOD_16QAM;
@@ -396,8 +398,6 @@ BDAGraph::BDAGraph( vlc_object_t *p_this ):
systems(0),
d_graph_register( 0 )
{
- p_media_control = NULL;
-
p_tuning_space = NULL;
p_filter_graph = NULL;
@@ -1117,11 +1117,11 @@ int BDAGraph::SetDVBT2(long l_frequency, uint32_t fec,
if( pinInput0)
{
msg_Dbg( p_access, "SetDVBT: pin Input0 found on tuner filter, trying to get IKsPropertySet interface for TBS tuner..." );
- IKsPropertySet* p_ksPropertySet;
- hr = pinInput0->QueryInterface(IID_IKsPropertySet, reinterpret_cast<void**>(&p_ksPropertySet));
+ ComPtr<IKsPropertySet> p_ksPropertySet;
+ hr = pinInput0->QueryInterface(IID_PPV_ARGS(&p_ksPropertySet));
if( FAILED( hr ))
{
- msg_Dbg( p_access, "SetDVBT: Cannot query for IKsPropertySet (this can be normal if not TBS tuner) : hr=0x%8lx", hr );
+ msg_Dbg( p_access, "SetDVBT: Cannot query for IKsPropertySet (this can be normal if not TBS tuner) : hr=0x%8lx", hr );
}
else
{
@@ -1136,7 +1136,6 @@ int BDAGraph::SetDVBT2(long l_frequency, uint32_t fec,
&plp_info,
sizeof( TBS_PLP_INFO ));
msg_Dbg( p_access, "SetDVBT: TBS tuner set PLP: %d", plp);
- p_ksPropertySet->Release();
}
pinInput0->Release();
}
@@ -2353,11 +2352,7 @@ HRESULT BDAGraph::Build()
}
/* The Media Control is used to Run and Stop the Graph */
- if( p_media_control )
- p_media_control->Release();
- p_media_control = NULL;
- hr = p_filter_graph->QueryInterface( IID_IMediaControl,
- reinterpret_cast<void**>( &p_media_control ) );
+ hr = p_filter_graph->QueryInterface(IID_PPV_ARGS(&p_media_control));
if( FAILED( hr ) )
{
msg_Warn( p_access, "Build: "\
@@ -2490,8 +2485,8 @@ HRESULT BDAGraph::ListFilters( REFCLSID this_clsid )
}
/* l.p_filter is Released at the top of the loop */
- hr = l.p_moniker->BindToObject( l.p_bind_context, NULL, IID_IBaseFilter,
- reinterpret_cast<void**>( &l.p_filter ) );
+ hr = l.p_moniker->BindToObject( l.p_bind_context, NULL,
+ IID_PPV_ARGS( &l.p_filter ) );
if( FAILED( hr ) )
{
msg_Dbg( p_access, "ListFilters: "\
@@ -2529,8 +2524,8 @@ HRESULT BDAGraph::ListFilters( REFCLSID this_clsid )
l.psz_downstream = strdup( "Downstream" );
#endif
/* l.p_property_bag is released at the top of the loop */
- hr = l.p_moniker->BindToStorage( NULL, NULL, IID_IPropertyBag,
- reinterpret_cast<void**>( &l.p_property_bag ) );
+ hr = l.p_moniker->BindToStorage( NULL, NULL,
+ IID_PPV_ARGS( &l.p_property_bag ) );
if( FAILED( hr ) )
{
msg_Dbg( p_access, "ListFilters: "\
@@ -2682,8 +2677,8 @@ HRESULT BDAGraph::FindFilter( REFCLSID this_clsid, long* i_moniker_used,
msg_Dbg( p_access, "FindFilter: try to create downstream filter");
*p_p_downstream = NULL;
- hr = l.p_moniker->BindToObject( l.p_bind_context, NULL, IID_IBaseFilter,
- reinterpret_cast<void**>( p_p_downstream ) );
+ hr = l.p_moniker->BindToObject( l.p_bind_context, NULL,
+ IID_PPV_ARGS( p_p_downstream ) );
if( FAILED( hr ) )
{
msg_Dbg( p_access, "FindFilter: "\
@@ -2725,7 +2720,7 @@ HRESULT BDAGraph::FindFilter( REFCLSID this_clsid, long* i_moniker_used,
msg_Dbg( p_access, "FindFilter: "\
"Moniker name is %s, binding to storage", l.psz_downstream );
hr = l.p_moniker->BindToStorage( l.p_bind_context, NULL,
- IID_IPropertyBag, reinterpret_cast<void**>( &l.p_property_bag ) );
+ IID_PPV_ARGS( &l.p_property_bag ) );
if( FAILED( hr ) )
{
msg_Dbg( p_access, "FindFilter: "\
@@ -3226,17 +3221,16 @@ HRESULT BDAGraph::Destroy()
}
// msg_Dbg( p_access, "Destroy: media control 2" );
- if( p_media_control )
+ if( p_media_control.Get() )
{
msg_Dbg( p_access, "Destroy: release media control" );
- mem_ref = p_media_control->Release();
+ mem_ref = p_media_control.Reset();
if( mem_ref != 0 )
{
msg_Dbg( p_access, "Destroy: "\
"Media control mem_ref: mem_ref=%ld", mem_ref );
}
msg_Dbg( p_access, "Destroy: force media control to NULL" );
- p_media_control = NULL;
}
d_graph_register = 0;
=====================================
modules/access/dtv/bdagraph.hpp
=====================================
@@ -38,6 +38,8 @@
#include "bdadefs.h"
#include <stdexcept>
+#include <wrl/client.h>
+
// TBS tuner extension headers
@@ -137,7 +139,7 @@ private:
BDAOutput output;
- IMediaControl* p_media_control;
+ Microsoft::WRL::ComPtr<IMediaControl> p_media_control;
IGraphBuilder* p_filter_graph;
ITuningSpace* p_tuning_space;
ITuneRequest* p_tune_request;
=====================================
modules/gui/qt/maininterface/compositor_dcomp.cpp
=====================================
@@ -238,7 +238,7 @@ bool CompositorDirectComposition::init()
m_d3d11Device.As(&dxgiDevice);
// Create the DirectComposition device object.
- hr = myDCompositionCreateDevice(dxgiDevice.Get(), __uuidof(IDCompositionDevice), &m_dcompDevice);
+ hr = myDCompositionCreateDevice(dxgiDevice.Get(), IID_PPV_ARGS(&m_dcompDevice));
if (FAILED(hr))
return false;
=====================================
modules/gui/qt/maininterface/compositor_dcomp_acrylicsurface.cpp
=====================================
@@ -224,8 +224,7 @@ try
ComPtr<IDCompositionDevice> dcompDevice1;
HR(myDCompositionCreateDevice3(
dxgiDevice.Get(),
- __uuidof(IDCompositionDevice),
- &dcompDevice1), "create composition device");
+ IID_PPV_ARGS(&dcompDevice1)), "create composition device");
HR(dcompDevice1.As(&m_dcompDevice), "dcompdevice not an IDCompositionDevice3");
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/9845fe4a2f543457dc183eb9af838da874974981...0b0eebfefdc99ed1597217532ababdd5c7dbf8d2
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/9845fe4a2f543457dc183eb9af838da874974981...0b0eebfefdc99ed1597217532ababdd5c7dbf8d2
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list