Commit e3d3b096 authored by Sergey Radionov's avatar Sergey Radionov Committed by Jean-Baptiste Kempf

ActiveX: added MediaDescription

Signed-off-by: Jean-Baptiste Kempf's avatarJean-Baptiste Kempf <jb@videolan.org>
parent 5d41df61
......@@ -569,6 +569,51 @@ library AXVLC
HRESULT deinterlace([out, retval] IVLCDeinterlace** obj);
};
[
odl,
uuid(796A2C2D-5B11-4fb5-9077-56D5E674972B),
helpstring("VLC Media Description"),
dual,
oleautomation
]
interface IVLCMediaDescription : IDispatch
{
[propget]
HRESULT title([out, retval] BSTR* val);
[propget]
HRESULT artist([out, retval] BSTR* val);
[propget]
HRESULT genre([out, retval] BSTR* val);
[propget]
HRESULT copyright([out, retval] BSTR* val);
[propget]
HRESULT album([out, retval] BSTR* val);
[propget]
HRESULT trackNumber([out, retval] BSTR* val);
[propget]
HRESULT description([out, retval] BSTR* val);
[propget]
HRESULT rating([out, retval] BSTR* val);
[propget]
HRESULT date([out, retval] BSTR* val);
[propget]
HRESULT setting([out, retval] BSTR* val);
[propget]
HRESULT URL([out, retval] BSTR* val);
[propget]
HRESULT language([out, retval] BSTR* val);
[propget]
HRESULT nowPlaying([out, retval] BSTR* val);
[propget]
HRESULT publisher([out, retval] BSTR* val);
[propget]
HRESULT encodedBy([out, retval] BSTR* val);
[propget]
HRESULT artworkURL([out, retval] BSTR* val);
[propget]
HRESULT trackID([out, retval] BSTR* val);
}
[
odl,
uuid(2D719729-5333-406C-BF12-8DE787FD65E3),
......@@ -650,6 +695,9 @@ library AXVLC
HRESULT FullscreenEnabled([out, retval] VARIANT_BOOL* enabled);
[id(DISPID_FSEnabled), propput, helpstring("Returns/sets availability of fullscreen mode.")]
HRESULT FullscreenEnabled([in] VARIANT_BOOL enabled);
[propget, helpstring("Returns the media description object.")]
HRESULT mediaDescription([out, retval] IVLCMediaDescription** obj);
};
[
......
......@@ -64,6 +64,7 @@ BIND_INTERFACE( VLCPlaylistItems )
BIND_INTERFACE( VLCPlaylist )
BIND_INTERFACE( VLCVideo )
BIND_INTERFACE( VLCSubtitle )
BIND_INTERFACE( VLCMediaDescription )
#undef BIND_INTERFACE
......@@ -1203,7 +1204,96 @@ STDMETHODIMP VLCLogo::put_position(BSTR val)
CoTaskMemFree(n);
return hr;
}
/****************************************************************************/
STDMETHODIMP VLCMediaDescription::get_meta(BSTR* val, libvlc_meta_t e_meta)
{
if( NULL == val )
return E_POINTER;
*val = 0;
libvlc_media_player_t *p_md;
HRESULT hr = getMD(&p_md);
if( SUCCEEDED(hr) )
{
libvlc_media_t * p_media = libvlc_media_player_get_media(p_md);
const char* info = p_media ? libvlc_media_get_meta(p_media, e_meta) : 0;
*val = info ? BSTRFromCStr(CP_UTF8, info) : 0;
hr = *val ? S_OK : E_FAIL;
}
return hr;
}
STDMETHODIMP VLCMediaDescription::get_title(BSTR *val)
{
return get_meta(val, libvlc_meta_Title);
}
STDMETHODIMP VLCMediaDescription::get_artist(BSTR *val)
{
return get_meta(val, libvlc_meta_Artist);
}
STDMETHODIMP VLCMediaDescription::get_genre(BSTR *val)
{
return get_meta(val, libvlc_meta_Genre);
}
STDMETHODIMP VLCMediaDescription::get_copyright(BSTR *val)
{
return get_meta(val, libvlc_meta_Copyright);
}
STDMETHODIMP VLCMediaDescription::get_album(BSTR *val)
{
return get_meta(val, libvlc_meta_Album);
}
STDMETHODIMP VLCMediaDescription::get_trackNumber(BSTR *val)
{
return get_meta(val, libvlc_meta_TrackNumber);
}
STDMETHODIMP VLCMediaDescription::get_description(BSTR *val)
{
return get_meta(val, libvlc_meta_Description);
}
STDMETHODIMP VLCMediaDescription::get_rating(BSTR *val)
{
return get_meta(val, libvlc_meta_Rating);
}
STDMETHODIMP VLCMediaDescription::get_date(BSTR *val)
{
return get_meta(val, libvlc_meta_Date);
}
STDMETHODIMP VLCMediaDescription::get_setting(BSTR *val)
{
return get_meta(val, libvlc_meta_Setting);
}
STDMETHODIMP VLCMediaDescription::get_URL(BSTR *val)
{
return get_meta(val, libvlc_meta_URL);
}
STDMETHODIMP VLCMediaDescription::get_language(BSTR *val)
{
return get_meta(val, libvlc_meta_Language);
}
STDMETHODIMP VLCMediaDescription::get_nowPlaying(BSTR *val)
{
return get_meta(val, libvlc_meta_NowPlaying);
}
STDMETHODIMP VLCMediaDescription::get_publisher(BSTR *val)
{
return get_meta(val, libvlc_meta_Publisher);
}
STDMETHODIMP VLCMediaDescription::get_encodedBy(BSTR *val)
{
return get_meta(val, libvlc_meta_EncodedBy);
}
STDMETHODIMP VLCMediaDescription::get_artworkURL(BSTR *val)
{
return get_meta(val, libvlc_meta_ArtworkURL);
}
STDMETHODIMP VLCMediaDescription::get_trackID(BSTR *val)
{
return get_meta(val, libvlc_meta_TrackID);
}
/****************************************************************************/
VLCControl2::VLCControl2(VLCPlugin *p_instance) :
......@@ -1213,7 +1303,8 @@ VLCControl2::VLCControl2(VLCPlugin *p_instance) :
_p_vlcinput(new VLCInput(p_instance)),
_p_vlcplaylist(new VLCPlaylist(p_instance)),
_p_vlcsubtitle(new VLCSubtitle(p_instance)),
_p_vlcvideo(new VLCVideo(p_instance))
_p_vlcvideo(new VLCVideo(p_instance)),
_p_vlcmedia_desc(p_instance)
{
}
......@@ -1497,3 +1588,8 @@ STDMETHODIMP VLCControl2::get_video(IVLCVideo** obj)
{
return object_get(obj,_p_vlcvideo);
}
STDMETHODIMP VLCControl2::get_mediaDescription(IVLCMediaDescription** obj)
{
return object_get<IVLCMediaDescription>(obj, &_p_vlcmedia_desc);
}
......@@ -329,6 +329,36 @@ private:
IVLCDeinterlace *_p_vlcdeint;
};
class VLCMediaDescription:
public VLCInterface<VLCMediaDescription, IVLCMediaDescription>
{
public:
VLCMediaDescription(VLCPlugin *p)
: VLCInterface<VLCMediaDescription, IVLCMediaDescription>(p) { }
// IVLCMediaDescription methods
STDMETHODIMP get_title(BSTR*);
STDMETHODIMP get_artist(BSTR*);
STDMETHODIMP get_genre(BSTR*);
STDMETHODIMP get_copyright(BSTR*);
STDMETHODIMP get_album(BSTR*);
STDMETHODIMP get_trackNumber(BSTR*);
STDMETHODIMP get_description(BSTR*);
STDMETHODIMP get_rating(BSTR*);
STDMETHODIMP get_date(BSTR*);
STDMETHODIMP get_setting(BSTR*);
STDMETHODIMP get_URL(BSTR*);
STDMETHODIMP get_language(BSTR*);
STDMETHODIMP get_nowPlaying(BSTR*);
STDMETHODIMP get_publisher(BSTR*);
STDMETHODIMP get_encodedBy(BSTR*);
STDMETHODIMP get_artworkURL(BSTR*);
STDMETHODIMP get_trackID(BSTR*);
private:
STDMETHODIMP get_meta(BSTR*, libvlc_meta_t);
};
class VLCControl2 : public IVLCControl2
{
public:
......@@ -389,6 +419,7 @@ public:
STDMETHODIMP get_playlist(IVLCPlaylist**);
STDMETHODIMP get_subtitle(IVLCSubtitle**);
STDMETHODIMP get_video(IVLCVideo**);
STDMETHODIMP get_mediaDescription(IVLCMediaDescription**);
protected:
HRESULT loadTypeInfo();
......@@ -402,6 +433,8 @@ private:
IVLCPlaylist *_p_vlcplaylist;
IVLCSubtitle *_p_vlcsubtitle;
IVLCVideo *_p_vlcvideo;
VLCMediaDescription _p_vlcmedia_desc;
};
#endif
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