interface IVLCAudio;\r
interface IVLCInput;\r
interface IVLCLogo;\r
+ interface IVLCDeinterlace;\r
interface IVLCMarquee;\r
interface IVLCPlaylist;\r
interface IVLCSubtitle;\r
[propput, helpstring("Picture y offset.")]\r
HRESULT y([in] long val);\r
\r
+ };\r
+ [\r
+ odl,\r
+ uuid(bc97469f-cb11-4037-8dce-5fc9f5f85307),\r
+ helpstring("VLC Deinterlace Filter"),\r
+ dual,\r
+ oleautomation\r
+ ]\r
+ interface IVLCDeinterlace : IDispatch\r
+ {\r
+ [helpstring("Enable deinterlace filter and set method.")]\r
+ HRESULT enable([in] BSTR mode);\r
+ [helpstring("Disable deinterlace filter.")]\r
+ HRESULT disable();\r
+\r
};\r
\r
[\r
[propput, helpstring("Sets teletext page to use.")]\r
HRESULT teletext([in] long page);\r
\r
- [helpstring("Enable deinterlace filter.")]\r
- HRESULT deinterlaceEnable([in] BSTR mode);\r
- [helpstring("Disable deinterlace filter.")]\r
- HRESULT deinterlaceDisable();\r
-\r
[helpstring("toggle fullscreen/windowed state.")]\r
HRESULT toggleFullscreen();\r
\r
\r
[propget, helpstring("Returns the logo object.")]\r
HRESULT logo([out, retval] IVLCLogo** obj);\r
+\r
+ [propget, helpstring("Returns the logo object.")]\r
+ HRESULT deinterlace([out, retval] IVLCDeinterlace** obj);\r
};\r
\r
[\r
-/*** Autogenerated by WIDL 1.1.32 from axvlc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.1.23 from axvlc.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
DEFINE_GUID(IID_IVLCSubtitle, 0x465e787a, 0x0556, 0x452f, 0x94,0x77, 0x95,0x4e,0x4a,0x94,0x00,0x03);
DEFINE_GUID(IID_IVLCMarquee, 0x8d076ad6, 0x9b6f, 0x4150, 0xa0,0xfd, 0x5d,0x7e,0x8c,0x8c,0xb0,0x2c);
DEFINE_GUID(IID_IVLCLogo, 0x8a4a20c2, 0x93f3, 0x44e8, 0x86,0x44, 0xbe,0xb2,0xe3,0x48,0x7e,0x84);
+DEFINE_GUID(IID_IVLCDeinterlace, 0xbc97469f, 0xcb11, 0x4037, 0x8d,0xce, 0x5f,0xc9,0xf5,0xf8,0x53,0x07);
DEFINE_GUID(IID_IVLCVideo, 0x0aaedf0b, 0xd333, 0x4b27, 0xa0,0xc6, 0xbb,0xf3,0x14,0x13,0xa4,0x2e);
DEFINE_GUID(IID_IVLCControl2, 0x2d719729, 0x5333, 0x406c, 0xbf,0x12, 0x8d,0xe7,0x87,0xfd,0x65,0xe3);
DEFINE_GUID(CLSID_VLCPlugin, 0xe23fe9c6, 0x778e, 0x49d4, 0xb5,0x37, 0x38,0xfc,0xde,0x48,0x87,0xd8);
-/*** Autogenerated by WIDL 1.1.32 from axvlc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.1.23 from axvlc.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
typedef interface IVLCLogo IVLCLogo;
#endif
+#ifndef __IVLCDeinterlace_FWD_DEFINED__
+#define __IVLCDeinterlace_FWD_DEFINED__
+typedef interface IVLCDeinterlace IVLCDeinterlace;
+#endif
+
#ifndef __IVLCVideo_FWD_DEFINED__
#define __IVLCVideo_FWD_DEFINED__
typedef interface IVLCVideo IVLCVideo;
typedef interface IVLCLogo IVLCLogo;
#endif
+#ifndef __IVLCDeinterlace_FWD_DEFINED__
+#define __IVLCDeinterlace_FWD_DEFINED__
+typedef interface IVLCDeinterlace IVLCDeinterlace;
+#endif
+
#ifndef __IVLCMarquee_FWD_DEFINED__
#define __IVLCMarquee_FWD_DEFINED__
typedef interface IVLCMarquee IVLCMarquee;
#endif /* __IVLCLogo_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * IVLCDeinterlace interface
+ */
+#ifndef __IVLCDeinterlace_INTERFACE_DEFINED__
+#define __IVLCDeinterlace_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVLCDeinterlace, 0xbc97469f, 0xcb11, 0x4037, 0x8d,0xce, 0x5f,0xc9,0xf5,0xf8,0x53,0x07);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IVLCDeinterlace : public IDispatch
+{
+ virtual HRESULT STDMETHODCALLTYPE enable(
+ BSTR mode) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE disable(
+ ) = 0;
+
+};
+#else
+typedef struct IVLCDeinterlaceVtbl {
+ BEGIN_INTERFACE
+
+ /*** IUnknown methods ***/
+ HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+ IVLCDeinterlace* This,
+ REFIID riid,
+ void **ppvObject);
+
+ ULONG (STDMETHODCALLTYPE *AddRef)(
+ IVLCDeinterlace* This);
+
+ ULONG (STDMETHODCALLTYPE *Release)(
+ IVLCDeinterlace* This);
+
+ /*** IDispatch methods ***/
+ HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
+ IVLCDeinterlace* This,
+ UINT *pctinfo);
+
+ HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
+ IVLCDeinterlace* This,
+ UINT iTInfo,
+ LCID lcid,
+ ITypeInfo **ppTInfo);
+
+ HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
+ IVLCDeinterlace* This,
+ REFIID riid,
+ LPOLESTR *rgszNames,
+ UINT cNames,
+ LCID lcid,
+ DISPID *rgDispId);
+
+ HRESULT (STDMETHODCALLTYPE *Invoke)(
+ IVLCDeinterlace* This,
+ DISPID dispIdMember,
+ REFIID riid,
+ LCID lcid,
+ WORD wFlags,
+ DISPPARAMS *pDispParams,
+ VARIANT *pVarResult,
+ EXCEPINFO *pExcepInfo,
+ UINT *puArgErr);
+
+ /*** IVLCDeinterlace methods ***/
+ HRESULT (STDMETHODCALLTYPE *enable)(
+ IVLCDeinterlace* This,
+ BSTR mode);
+
+ HRESULT (STDMETHODCALLTYPE *disable)(
+ IVLCDeinterlace* This);
+
+ END_INTERFACE
+} IVLCDeinterlaceVtbl;
+interface IVLCDeinterlace {
+ CONST_VTBL IVLCDeinterlaceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IVLCDeinterlace_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVLCDeinterlace_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVLCDeinterlace_Release(This) (This)->lpVtbl->Release(This)
+/*** IDispatch methods ***/
+#define IVLCDeinterlace_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
+#define IVLCDeinterlace_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
+#define IVLCDeinterlace_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
+#define IVLCDeinterlace_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
+/*** IVLCDeinterlace methods ***/
+#define IVLCDeinterlace_enable(This,mode) (This)->lpVtbl->enable(This,mode)
+#define IVLCDeinterlace_disable(This) (This)->lpVtbl->disable(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IVLCDeinterlace_enable_Proxy(
+ IVLCDeinterlace* This,
+ BSTR mode);
+void __RPC_STUB IVLCDeinterlace_enable_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IVLCDeinterlace_disable_Proxy(
+ IVLCDeinterlace* This);
+void __RPC_STUB IVLCDeinterlace_disable_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
+
+#endif /* __IVLCDeinterlace_INTERFACE_DEFINED__ */
+
/*****************************************************************************
* IVLCVideo interface
*/
virtual HRESULT STDMETHODCALLTYPE put_teletext(
LONG page) = 0;
- virtual HRESULT STDMETHODCALLTYPE deinterlaceEnable(
- BSTR mode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE deinterlaceDisable(
- ) = 0;
-
virtual HRESULT STDMETHODCALLTYPE toggleFullscreen(
) = 0;
virtual HRESULT STDMETHODCALLTYPE get_logo(
IVLCLogo **obj) = 0;
+ virtual HRESULT STDMETHODCALLTYPE get_deinterlace(
+ IVLCDeinterlace **obj) = 0;
+
};
#else
typedef struct IVLCVideoVtbl {
IVLCVideo* This,
LONG page);
- HRESULT (STDMETHODCALLTYPE *deinterlaceEnable)(
- IVLCVideo* This,
- BSTR mode);
-
- HRESULT (STDMETHODCALLTYPE *deinterlaceDisable)(
- IVLCVideo* This);
-
HRESULT (STDMETHODCALLTYPE *toggleFullscreen)(
IVLCVideo* This);
IVLCVideo* This,
IVLCLogo **obj);
+ HRESULT (STDMETHODCALLTYPE *get_deinterlace)(
+ IVLCVideo* This,
+ IVLCDeinterlace **obj);
+
END_INTERFACE
} IVLCVideoVtbl;
interface IVLCVideo {
#define IVLCVideo_put_crop(This,geometry) (This)->lpVtbl->put_crop(This,geometry)
#define IVLCVideo_get_teletext(This,page) (This)->lpVtbl->get_teletext(This,page)
#define IVLCVideo_put_teletext(This,page) (This)->lpVtbl->put_teletext(This,page)
-#define IVLCVideo_deinterlaceEnable(This,mode) (This)->lpVtbl->deinterlaceEnable(This,mode)
-#define IVLCVideo_deinterlaceDisable(This) (This)->lpVtbl->deinterlaceDisable(This)
#define IVLCVideo_toggleFullscreen(This) (This)->lpVtbl->toggleFullscreen(This)
#define IVLCVideo_takeSnapshot(This,picture) (This)->lpVtbl->takeSnapshot(This,picture)
#define IVLCVideo_toggleTeletext(This) (This)->lpVtbl->toggleTeletext(This)
#define IVLCVideo_get_marquee(This,obj) (This)->lpVtbl->get_marquee(This,obj)
#define IVLCVideo_get_logo(This,obj) (This)->lpVtbl->get_logo(This,obj)
+#define IVLCVideo_get_deinterlace(This,obj) (This)->lpVtbl->get_deinterlace(This,obj)
#endif
#endif
IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVLCVideo_deinterlaceEnable_Proxy(
- IVLCVideo* This,
- BSTR mode);
-void __RPC_STUB IVLCVideo_deinterlaceEnable_Stub(
- IRpcStubBuffer* This,
- IRpcChannelBuffer* pRpcChannelBuffer,
- PRPC_MESSAGE pRpcMessage,
- DWORD* pdwStubPhase);
-HRESULT STDMETHODCALLTYPE IVLCVideo_deinterlaceDisable_Proxy(
- IVLCVideo* This);
-void __RPC_STUB IVLCVideo_deinterlaceDisable_Stub(
- IRpcStubBuffer* This,
- IRpcChannelBuffer* pRpcChannelBuffer,
- PRPC_MESSAGE pRpcMessage,
- DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IVLCVideo_toggleFullscreen_Proxy(
IVLCVideo* This);
void __RPC_STUB IVLCVideo_toggleFullscreen_Stub(
IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IVLCVideo_get_deinterlace_Proxy(
+ IVLCVideo* This,
+ IVLCDeinterlace **obj);
+void __RPC_STUB IVLCVideo_get_deinterlace_Stub(
+ IRpcStubBuffer* This,
+ IRpcChannelBuffer* pRpcChannelBuffer,
+ PRPC_MESSAGE pRpcMessage,
+ DWORD* pdwStubPhase);
#endif /* __IVLCVideo_INTERFACE_DEFINED__ */
</TR>\r
<TR>\r
<TD>Deinterlacing:\r
- <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlaceEnable("blend");'>\r
- <INPUT type=button value=" X " onClick='getVLC("vlc").video.deinterlaceEnable("x");'>\r
- <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlaceDisable();'>\r
+ <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlace.enable("blend");'>\r
+ <INPUT type=button value=" X " onClick='getVLC("vlc").video.deinterlace.enable("x");'>\r
+ <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlace.disable();'>\r
</TD>\r
</TR>\r
<TR>\r
BIND_INTERFACE( VLCInput )
BIND_INTERFACE( VLCMarquee )
BIND_INTERFACE( VLCLogo )
+BIND_INTERFACE( VLCDeinterlace )
BIND_INTERFACE( VLCPlaylistItems )
BIND_INTERFACE( VLCPlaylist )
BIND_INTERFACE( VLCVideo )
/****************************************************************************/
+STDMETHODIMP VLCDeinterlace::disable()
+{
+ libvlc_media_player_t *p_md;
+ HRESULT hr = getMD(&p_md);
+ if( SUCCEEDED(hr) )
+ {
+ libvlc_exception_t ex;
+ libvlc_exception_init(&ex);
+
+ libvlc_video_set_deinterlace(p_md, 0, "", &ex);
+ hr = exception_bridge(&ex);
+ }
+ return hr;
+}
+
+STDMETHODIMP VLCDeinterlace::enable(BSTR mode)
+{
+ libvlc_media_player_t *p_md;
+ HRESULT hr = getMD(&p_md);
+ if( SUCCEEDED(hr) )
+ {
+ libvlc_exception_t ex;
+ libvlc_exception_init(&ex);
+ char *psz_mode = CStrFromBSTR(CP_UTF8, mode);
+ libvlc_video_set_deinterlace(p_md, 1, psz_mode, &ex);
+ CoTaskMemFree(psz_mode);
+ hr = exception_bridge(&ex);
+ }
+ return hr;
+}
+
+/****************************************************************************/
+
STDMETHODIMP VLCInput::get_length(double* length)
{
if( NULL == length )
return hr;
};
-STDMETHODIMP VLCVideo::deinterlaceDisable()
-{
- libvlc_media_player_t *p_md;
- HRESULT hr = getMD(&p_md);
- if( SUCCEEDED(hr) )
- {
- libvlc_exception_t ex;
- libvlc_exception_init(&ex);
-
- libvlc_video_set_deinterlace(p_md, 0, "", &ex);
- hr = exception_bridge(&ex);
- }
- return hr;
-};
-
-STDMETHODIMP VLCVideo::deinterlaceEnable(BSTR mode)
-{
- libvlc_media_player_t *p_md;
- HRESULT hr = getMD(&p_md);
- if( SUCCEEDED(hr) )
- {
- libvlc_exception_t ex;
- libvlc_exception_init(&ex);
- /* get deinterlace mode from the user */
- char *psz_mode = CStrFromBSTR(CP_UTF8, mode);
- /* enable deinterlace filter if possible */
- libvlc_video_set_deinterlace(p_md, 1, psz_mode, &ex);
- hr = exception_bridge(&ex);
- CoTaskMemFree(psz_mode);
- }
- return hr;
-};
-
STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
{
if( NULL == picture )
return object_get(obj,_p_vlclogo);
}
+STDMETHODIMP VLCVideo::get_deinterlace(IVLCDeinterlace** obj)
+{
+ return object_get(obj,_p_vlcdeint);
+}
+
/****************************************************************************/
HRESULT do_get_int(unsigned idx, LONG *val);
};
+
+class VLCDeinterlace: public VLCInterface<VLCDeinterlace,IVLCDeinterlace>
+{
+public:
+ VLCDeinterlace(VLCPlugin *p):
+ VLCInterface<VLCDeinterlace,IVLCDeinterlace>(p) { }
+
+ STDMETHODIMP enable(BSTR val);
+ STDMETHODIMP disable();
+};
+
+
class VLCPlaylistItems: public VLCInterface<VLCPlaylistItems,IVLCPlaylistItems>
{
public:
{
public:
VLCVideo(VLCPlugin *p): VLCInterface<VLCVideo,IVLCVideo>(p),
- _p_vlcmarquee(new VLCMarquee(p)), _p_vlclogo(new VLCLogo(p)) { }
- virtual ~VLCVideo() { delete _p_vlcmarquee; delete _p_vlclogo; }
+ _p_vlcmarquee(new VLCMarquee(p)), _p_vlclogo(new VLCLogo(p)),
+ _p_vlcdeint(new VLCDeinterlace(p)) { }
+ virtual ~VLCVideo() {
+ delete _p_vlcmarquee;
+ delete _p_vlclogo;
+ delete _p_vlcdeint;
+ }
// IVLCVideo methods
STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
STDMETHODIMP put_teletext(long);
STDMETHODIMP get_marquee(IVLCMarquee**);
STDMETHODIMP get_logo(IVLCLogo**);
- STDMETHODIMP deinterlaceDisable();
- STDMETHODIMP deinterlaceEnable(BSTR);
+ STDMETHODIMP get_deinterlace(IVLCDeinterlace**);
STDMETHODIMP takeSnapshot(LPPICTUREDISP*);
STDMETHODIMP toggleFullscreen();
STDMETHODIMP toggleTeletext();
private:
- IVLCMarquee *_p_vlcmarquee;
- IVLCLogo *_p_vlclogo;
+ IVLCMarquee *_p_vlcmarquee;
+ IVLCLogo *_p_vlclogo;
+ IVLCDeinterlace *_p_vlcdeint;
};
class VLCControl2 : public IVLCControl2