Commit ce00864d authored by JP Dinger's avatar JP Dinger

activex plugin: move deinterlace to own video subobject.

parent f64e68a7
...@@ -41,6 +41,7 @@ library AXVLC ...@@ -41,6 +41,7 @@ library AXVLC
interface IVLCAudio; interface IVLCAudio;
interface IVLCInput; interface IVLCInput;
interface IVLCLogo; interface IVLCLogo;
interface IVLCDeinterlace;
interface IVLCMarquee; interface IVLCMarquee;
interface IVLCPlaylist; interface IVLCPlaylist;
interface IVLCSubtitle; interface IVLCSubtitle;
...@@ -442,6 +443,21 @@ library AXVLC ...@@ -442,6 +443,21 @@ library AXVLC
[propput, helpstring("Picture y offset.")] [propput, helpstring("Picture y offset.")]
HRESULT y([in] long val); HRESULT y([in] long val);
};
[
odl,
uuid(bc97469f-cb11-4037-8dce-5fc9f5f85307),
helpstring("VLC Deinterlace Filter"),
dual,
oleautomation
]
interface IVLCDeinterlace : IDispatch
{
[helpstring("Enable deinterlace filter and set method.")]
HRESULT enable([in] BSTR mode);
[helpstring("Disable deinterlace filter.")]
HRESULT disable();
}; };
[ [
...@@ -485,11 +501,6 @@ library AXVLC ...@@ -485,11 +501,6 @@ library AXVLC
[propput, helpstring("Sets teletext page to use.")] [propput, helpstring("Sets teletext page to use.")]
HRESULT teletext([in] long page); HRESULT teletext([in] long page);
[helpstring("Enable deinterlace filter.")]
HRESULT deinterlaceEnable([in] BSTR mode);
[helpstring("Disable deinterlace filter.")]
HRESULT deinterlaceDisable();
[helpstring("toggle fullscreen/windowed state.")] [helpstring("toggle fullscreen/windowed state.")]
HRESULT toggleFullscreen(); HRESULT toggleFullscreen();
...@@ -504,6 +515,9 @@ library AXVLC ...@@ -504,6 +515,9 @@ library AXVLC
[propget, helpstring("Returns the logo object.")] [propget, helpstring("Returns the logo object.")]
HRESULT logo([out, retval] IVLCLogo** obj); HRESULT logo([out, retval] IVLCLogo** obj);
[propget, helpstring("Returns the logo object.")]
HRESULT deinterlace([out, retval] IVLCDeinterlace** obj);
}; };
[ [
......
/*** 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 <rpc.h>
#include <rpcndr.h> #include <rpcndr.h>
...@@ -19,6 +19,7 @@ DEFINE_GUID(IID_IVLCPlaylist, 0x54613049, 0x40bf, 0x4035, 0x9e,0x70, 0x0a,0x93,0 ...@@ -19,6 +19,7 @@ DEFINE_GUID(IID_IVLCPlaylist, 0x54613049, 0x40bf, 0x4035, 0x9e,0x70, 0x0a,0x93,0
DEFINE_GUID(IID_IVLCSubtitle, 0x465e787a, 0x0556, 0x452f, 0x94,0x77, 0x95,0x4e,0x4a,0x94,0x00,0x03); 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_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_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_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(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); 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 <rpc.h>
#include <rpcndr.h> #include <rpcndr.h>
...@@ -61,6 +61,11 @@ typedef interface IVLCMarquee IVLCMarquee; ...@@ -61,6 +61,11 @@ typedef interface IVLCMarquee IVLCMarquee;
typedef interface IVLCLogo IVLCLogo; typedef interface IVLCLogo IVLCLogo;
#endif #endif
#ifndef __IVLCDeinterlace_FWD_DEFINED__
#define __IVLCDeinterlace_FWD_DEFINED__
typedef interface IVLCDeinterlace IVLCDeinterlace;
#endif
#ifndef __IVLCVideo_FWD_DEFINED__ #ifndef __IVLCVideo_FWD_DEFINED__
#define __IVLCVideo_FWD_DEFINED__ #define __IVLCVideo_FWD_DEFINED__
typedef interface IVLCVideo IVLCVideo; typedef interface IVLCVideo IVLCVideo;
...@@ -105,6 +110,11 @@ typedef interface IVLCInput IVLCInput; ...@@ -105,6 +110,11 @@ typedef interface IVLCInput IVLCInput;
typedef interface IVLCLogo IVLCLogo; typedef interface IVLCLogo IVLCLogo;
#endif #endif
#ifndef __IVLCDeinterlace_FWD_DEFINED__
#define __IVLCDeinterlace_FWD_DEFINED__
typedef interface IVLCDeinterlace IVLCDeinterlace;
#endif
#ifndef __IVLCMarquee_FWD_DEFINED__ #ifndef __IVLCMarquee_FWD_DEFINED__
#define __IVLCMarquee_FWD_DEFINED__ #define __IVLCMarquee_FWD_DEFINED__
typedef interface IVLCMarquee IVLCMarquee; typedef interface IVLCMarquee IVLCMarquee;
...@@ -2627,6 +2637,118 @@ void __RPC_STUB IVLCLogo_put_y_Stub( ...@@ -2627,6 +2637,118 @@ void __RPC_STUB IVLCLogo_put_y_Stub(
#endif /* __IVLCLogo_INTERFACE_DEFINED__ */ #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 * IVLCVideo interface
*/ */
...@@ -2673,12 +2795,6 @@ interface IVLCVideo : public IDispatch ...@@ -2673,12 +2795,6 @@ interface IVLCVideo : public IDispatch
virtual HRESULT STDMETHODCALLTYPE put_teletext( virtual HRESULT STDMETHODCALLTYPE put_teletext(
LONG page) = 0; LONG page) = 0;
virtual HRESULT STDMETHODCALLTYPE deinterlaceEnable(
BSTR mode) = 0;
virtual HRESULT STDMETHODCALLTYPE deinterlaceDisable(
) = 0;
virtual HRESULT STDMETHODCALLTYPE toggleFullscreen( virtual HRESULT STDMETHODCALLTYPE toggleFullscreen(
) = 0; ) = 0;
...@@ -2694,6 +2810,9 @@ interface IVLCVideo : public IDispatch ...@@ -2694,6 +2810,9 @@ interface IVLCVideo : public IDispatch
virtual HRESULT STDMETHODCALLTYPE get_logo( virtual HRESULT STDMETHODCALLTYPE get_logo(
IVLCLogo **obj) = 0; IVLCLogo **obj) = 0;
virtual HRESULT STDMETHODCALLTYPE get_deinterlace(
IVLCDeinterlace **obj) = 0;
}; };
#else #else
typedef struct IVLCVideoVtbl { typedef struct IVLCVideoVtbl {
...@@ -2790,13 +2909,6 @@ typedef struct IVLCVideoVtbl { ...@@ -2790,13 +2909,6 @@ typedef struct IVLCVideoVtbl {
IVLCVideo* This, IVLCVideo* This,
LONG page); LONG page);
HRESULT (STDMETHODCALLTYPE *deinterlaceEnable)(
IVLCVideo* This,
BSTR mode);
HRESULT (STDMETHODCALLTYPE *deinterlaceDisable)(
IVLCVideo* This);
HRESULT (STDMETHODCALLTYPE *toggleFullscreen)( HRESULT (STDMETHODCALLTYPE *toggleFullscreen)(
IVLCVideo* This); IVLCVideo* This);
...@@ -2815,6 +2927,10 @@ typedef struct IVLCVideoVtbl { ...@@ -2815,6 +2927,10 @@ typedef struct IVLCVideoVtbl {
IVLCVideo* This, IVLCVideo* This,
IVLCLogo **obj); IVLCLogo **obj);
HRESULT (STDMETHODCALLTYPE *get_deinterlace)(
IVLCVideo* This,
IVLCDeinterlace **obj);
END_INTERFACE END_INTERFACE
} IVLCVideoVtbl; } IVLCVideoVtbl;
interface IVLCVideo { interface IVLCVideo {
...@@ -2844,13 +2960,12 @@ interface IVLCVideo { ...@@ -2844,13 +2960,12 @@ interface IVLCVideo {
#define IVLCVideo_put_crop(This,geometry) (This)->lpVtbl->put_crop(This,geometry) #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_get_teletext(This,page) (This)->lpVtbl->get_teletext(This,page)
#define IVLCVideo_put_teletext(This,page) (This)->lpVtbl->put_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_toggleFullscreen(This) (This)->lpVtbl->toggleFullscreen(This)
#define IVLCVideo_takeSnapshot(This,picture) (This)->lpVtbl->takeSnapshot(This,picture) #define IVLCVideo_takeSnapshot(This,picture) (This)->lpVtbl->takeSnapshot(This,picture)
#define IVLCVideo_toggleTeletext(This) (This)->lpVtbl->toggleTeletext(This) #define IVLCVideo_toggleTeletext(This) (This)->lpVtbl->toggleTeletext(This)
#define IVLCVideo_get_marquee(This,obj) (This)->lpVtbl->get_marquee(This,obj) #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_logo(This,obj) (This)->lpVtbl->get_logo(This,obj)
#define IVLCVideo_get_deinterlace(This,obj) (This)->lpVtbl->get_deinterlace(This,obj)
#endif #endif
#endif #endif
...@@ -2951,21 +3066,6 @@ void __RPC_STUB IVLCVideo_put_teletext_Stub( ...@@ -2951,21 +3066,6 @@ void __RPC_STUB IVLCVideo_put_teletext_Stub(
IRpcChannelBuffer* pRpcChannelBuffer, IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage, PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase); 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( HRESULT STDMETHODCALLTYPE IVLCVideo_toggleFullscreen_Proxy(
IVLCVideo* This); IVLCVideo* This);
void __RPC_STUB IVLCVideo_toggleFullscreen_Stub( void __RPC_STUB IVLCVideo_toggleFullscreen_Stub(
...@@ -3004,6 +3104,14 @@ void __RPC_STUB IVLCVideo_get_logo_Stub( ...@@ -3004,6 +3104,14 @@ void __RPC_STUB IVLCVideo_get_logo_Stub(
IRpcChannelBuffer* pRpcChannelBuffer, IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage, PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase); 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__ */ #endif /* __IVLCVideo_INTERFACE_DEFINED__ */
......
...@@ -205,9 +205,9 @@ Insert Slider widget ...@@ -205,9 +205,9 @@ Insert Slider widget
</TR> </TR>
<TR> <TR>
<TD>Deinterlacing: <TD>Deinterlacing:
<INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlaceEnable("blend");'> <INPUT type=button value="BLEND" onClick='getVLC("vlc").video.deinterlace.enable("blend");'>
<INPUT type=button value=" X " onClick='getVLC("vlc").video.deinterlaceEnable("x");'> <INPUT type=button value=" X " onClick='getVLC("vlc").video.deinterlace.enable("x");'>
<INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlaceDisable();'> <INPUT type=button value="Disable" onClick='getVLC("vlc").video.deinterlace.disable();'>
</TD> </TD>
</TR> </TR>
<TR> <TR>
......
...@@ -65,6 +65,7 @@ BIND_INTERFACE( VLCAudio ) ...@@ -65,6 +65,7 @@ BIND_INTERFACE( VLCAudio )
BIND_INTERFACE( VLCInput ) BIND_INTERFACE( VLCInput )
BIND_INTERFACE( VLCMarquee ) BIND_INTERFACE( VLCMarquee )
BIND_INTERFACE( VLCLogo ) BIND_INTERFACE( VLCLogo )
BIND_INTERFACE( VLCDeinterlace )
BIND_INTERFACE( VLCPlaylistItems ) BIND_INTERFACE( VLCPlaylistItems )
BIND_INTERFACE( VLCPlaylist ) BIND_INTERFACE( VLCPlaylist )
BIND_INTERFACE( VLCVideo ) BIND_INTERFACE( VLCVideo )
...@@ -288,6 +289,39 @@ STDMETHODIMP VLCAudio::toggleMute() ...@@ -288,6 +289,39 @@ STDMETHODIMP VLCAudio::toggleMute()
/****************************************************************************/ /****************************************************************************/
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) STDMETHODIMP VLCInput::get_length(double* length)
{ {
if( NULL == length ) if( NULL == length )
...@@ -1177,39 +1211,6 @@ STDMETHODIMP VLCVideo::put_teletext(long page) ...@@ -1177,39 +1211,6 @@ STDMETHODIMP VLCVideo::put_teletext(long page)
return hr; 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) STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
{ {
if( NULL == picture ) if( NULL == picture )
...@@ -1351,6 +1352,11 @@ STDMETHODIMP VLCVideo::get_logo(IVLCLogo** obj) ...@@ -1351,6 +1352,11 @@ STDMETHODIMP VLCVideo::get_logo(IVLCLogo** obj)
return object_get(obj,_p_vlclogo); return object_get(obj,_p_vlclogo);
} }
STDMETHODIMP VLCVideo::get_deinterlace(IVLCDeinterlace** obj)
{
return object_get(obj,_p_vlcdeint);
}
/****************************************************************************/ /****************************************************************************/
......
...@@ -239,6 +239,18 @@ private: ...@@ -239,6 +239,18 @@ private:
HRESULT do_get_int(unsigned idx, LONG *val); 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> class VLCPlaylistItems: public VLCInterface<VLCPlaylistItems,IVLCPlaylistItems>
{ {
public: public:
...@@ -293,8 +305,13 @@ class VLCVideo: public VLCInterface<VLCVideo,IVLCVideo> ...@@ -293,8 +305,13 @@ class VLCVideo: public VLCInterface<VLCVideo,IVLCVideo>
{ {
public: public:
VLCVideo(VLCPlugin *p): VLCInterface<VLCVideo,IVLCVideo>(p), VLCVideo(VLCPlugin *p): VLCInterface<VLCVideo,IVLCVideo>(p),
_p_vlcmarquee(new VLCMarquee(p)), _p_vlclogo(new VLCLogo(p)) { } _p_vlcmarquee(new VLCMarquee(p)), _p_vlclogo(new VLCLogo(p)),
virtual ~VLCVideo() { delete _p_vlcmarquee; delete _p_vlclogo; } _p_vlcdeint(new VLCDeinterlace(p)) { }
virtual ~VLCVideo() {
delete _p_vlcmarquee;
delete _p_vlclogo;
delete _p_vlcdeint;
}
// IVLCVideo methods // IVLCVideo methods
STDMETHODIMP get_fullscreen(VARIANT_BOOL*); STDMETHODIMP get_fullscreen(VARIANT_BOOL*);
...@@ -311,8 +328,7 @@ public: ...@@ -311,8 +328,7 @@ public:
STDMETHODIMP put_teletext(long); STDMETHODIMP put_teletext(long);
STDMETHODIMP get_marquee(IVLCMarquee**); STDMETHODIMP get_marquee(IVLCMarquee**);
STDMETHODIMP get_logo(IVLCLogo**); STDMETHODIMP get_logo(IVLCLogo**);
STDMETHODIMP deinterlaceDisable(); STDMETHODIMP get_deinterlace(IVLCDeinterlace**);
STDMETHODIMP deinterlaceEnable(BSTR);
STDMETHODIMP takeSnapshot(LPPICTUREDISP*); STDMETHODIMP takeSnapshot(LPPICTUREDISP*);
STDMETHODIMP toggleFullscreen(); STDMETHODIMP toggleFullscreen();
STDMETHODIMP toggleTeletext(); STDMETHODIMP toggleTeletext();
...@@ -320,6 +336,7 @@ public: ...@@ -320,6 +336,7 @@ public:
private: private:
IVLCMarquee *_p_vlcmarquee; IVLCMarquee *_p_vlcmarquee;
IVLCLogo *_p_vlclogo; IVLCLogo *_p_vlclogo;
IVLCDeinterlace *_p_vlcdeint;
}; };
class VLCControl2 : public IVLCControl2 class VLCControl2 : public IVLCControl2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment