1 /*****************************************************************************
2 * vlccontrol2.cpp: ActiveX control for VLC
3 *****************************************************************************
4 * Copyright (C) 2006 the VideoLAN team
6 * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 *****************************************************************************/
24 #include "vlccontrol2.h"
25 #include "vlccontrol.h"
34 _p_typeinfo->Release();
37 HRESULT VLCAudio::loadTypeInfo(void)
40 if( NULL == _p_typeinfo )
44 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
47 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCAudio, &_p_typeinfo);
58 STDMETHODIMP VLCAudio::GetTypeInfoCount(UINT* pctInfo)
63 if( SUCCEEDED(loadTypeInfo()) )
71 STDMETHODIMP VLCAudio::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
76 if( SUCCEEDED(loadTypeInfo()) )
78 _p_typeinfo->AddRef();
79 *ppTInfo = _p_typeinfo;
86 STDMETHODIMP VLCAudio::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
87 UINT cNames, LCID lcid, DISPID* rgDispID)
89 if( SUCCEEDED(loadTypeInfo()) )
91 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
96 STDMETHODIMP VLCAudio::Invoke(DISPID dispIdMember, REFIID riid,
97 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
98 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
100 if( SUCCEEDED(loadTypeInfo()) )
102 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
103 pVarResult, pExcepInfo, puArgErr);
108 STDMETHODIMP VLCAudio::get_mute(VARIANT_BOOL* mute)
113 libvlc_instance_t* p_libvlc;
114 HRESULT hr = _p_instance->getVLC(&p_libvlc);
117 libvlc_exception_t ex;
118 libvlc_exception_init(&ex);
120 *mute = libvlc_audio_get_mute(p_libvlc, &ex) ? VARIANT_TRUE : VARIANT_FALSE;
121 if( libvlc_exception_raised(&ex) )
123 _p_instance->setErrorInfo(IID_IVLCAudio, libvlc_exception_get_message(&ex));
124 libvlc_exception_clear(&ex);
132 STDMETHODIMP VLCAudio::put_mute(VARIANT_BOOL mute)
134 libvlc_instance_t* p_libvlc;
135 HRESULT hr = _p_instance->getVLC(&p_libvlc);
138 libvlc_exception_t ex;
139 libvlc_exception_init(&ex);
141 libvlc_audio_set_mute(p_libvlc, VARIANT_FALSE != mute, &ex);
142 if( libvlc_exception_raised(&ex) )
144 _p_instance->setErrorInfo(IID_IVLCAudio, libvlc_exception_get_message(&ex));
145 libvlc_exception_clear(&ex);
153 STDMETHODIMP VLCAudio::get_volume(long* volume)
158 libvlc_instance_t* p_libvlc;
159 HRESULT hr = _p_instance->getVLC(&p_libvlc);
162 libvlc_exception_t ex;
163 libvlc_exception_init(&ex);
165 *volume = libvlc_audio_get_volume(p_libvlc, &ex);
166 if( libvlc_exception_raised(&ex) )
168 _p_instance->setErrorInfo(IID_IVLCAudio, libvlc_exception_get_message(&ex));
169 libvlc_exception_clear(&ex);
177 STDMETHODIMP VLCAudio::put_volume(long volume)
179 libvlc_instance_t* p_libvlc;
180 HRESULT hr = _p_instance->getVLC(&p_libvlc);
183 libvlc_exception_t ex;
184 libvlc_exception_init(&ex);
186 libvlc_audio_set_volume(p_libvlc, volume, &ex);
187 if( libvlc_exception_raised(&ex) )
189 _p_instance->setErrorInfo(IID_IVLCAudio, libvlc_exception_get_message(&ex));
190 libvlc_exception_clear(&ex);
198 STDMETHODIMP VLCAudio::toggleMute()
200 libvlc_instance_t* p_libvlc;
201 HRESULT hr = _p_instance->getVLC(&p_libvlc);
204 libvlc_exception_t ex;
205 libvlc_exception_init(&ex);
207 libvlc_audio_toggle_mute(p_libvlc, &ex);
208 if( libvlc_exception_raised(&ex) )
210 _p_instance->setErrorInfo(IID_IVLCAudio, libvlc_exception_get_message(&ex));
211 libvlc_exception_clear(&ex);
219 /*******************************************************************************/
221 VLCInput::~VLCInput()
224 _p_typeinfo->Release();
227 HRESULT VLCInput::loadTypeInfo(void)
229 HRESULT hr = NOERROR;
230 if( NULL == _p_typeinfo )
234 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
237 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCInput, &_p_typeinfo);
242 p_typelib->Release();
248 STDMETHODIMP VLCInput::GetTypeInfoCount(UINT* pctInfo)
250 if( NULL == pctInfo )
253 if( SUCCEEDED(loadTypeInfo()) )
261 STDMETHODIMP VLCInput::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
263 if( NULL == ppTInfo )
266 if( SUCCEEDED(loadTypeInfo()) )
268 _p_typeinfo->AddRef();
269 *ppTInfo = _p_typeinfo;
276 STDMETHODIMP VLCInput::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
277 UINT cNames, LCID lcid, DISPID* rgDispID)
279 if( SUCCEEDED(loadTypeInfo()) )
281 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
286 STDMETHODIMP VLCInput::Invoke(DISPID dispIdMember, REFIID riid,
287 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
288 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
290 if( SUCCEEDED(loadTypeInfo()) )
292 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
293 pVarResult, pExcepInfo, puArgErr);
298 STDMETHODIMP VLCInput::get_length(double* length)
303 libvlc_instance_t* p_libvlc;
304 HRESULT hr = _p_instance->getVLC(&p_libvlc);
307 libvlc_exception_t ex;
308 libvlc_exception_init(&ex);
310 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
311 if( ! libvlc_exception_raised(&ex) )
313 *length = (double)libvlc_input_get_length(p_input, &ex);
314 libvlc_input_free(p_input);
315 if( ! libvlc_exception_raised(&ex) )
320 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
321 libvlc_exception_clear(&ex);
327 STDMETHODIMP VLCInput::get_position(double* position)
329 if( NULL == position )
332 libvlc_instance_t* p_libvlc;
333 HRESULT hr = _p_instance->getVLC(&p_libvlc);
336 libvlc_exception_t ex;
337 libvlc_exception_init(&ex);
339 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
340 if( ! libvlc_exception_raised(&ex) )
342 *position = libvlc_input_get_position(p_input, &ex);
343 libvlc_input_free(p_input);
344 if( ! libvlc_exception_raised(&ex) )
349 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
350 libvlc_exception_clear(&ex);
356 STDMETHODIMP VLCInput::put_position(double position)
358 libvlc_instance_t* p_libvlc;
359 HRESULT hr = _p_instance->getVLC(&p_libvlc);
362 libvlc_exception_t ex;
363 libvlc_exception_init(&ex);
365 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
366 if( ! libvlc_exception_raised(&ex) )
368 libvlc_input_set_position(p_input, position, &ex);
369 libvlc_input_free(p_input);
370 if( ! libvlc_exception_raised(&ex) )
375 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
376 libvlc_exception_clear(&ex);
382 STDMETHODIMP VLCInput::get_time(double* time)
387 libvlc_instance_t* p_libvlc;
388 HRESULT hr = _p_instance->getVLC(&p_libvlc);
391 libvlc_exception_t ex;
392 libvlc_exception_init(&ex);
394 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
395 if( ! libvlc_exception_raised(&ex) )
397 *time = (double)libvlc_input_get_time(p_input, &ex);
398 libvlc_input_free(p_input);
399 if( ! libvlc_exception_raised(&ex) )
404 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
405 libvlc_exception_clear(&ex);
411 STDMETHODIMP VLCInput::put_time(double time)
413 libvlc_instance_t* p_libvlc;
414 HRESULT hr = _p_instance->getVLC(&p_libvlc);
417 libvlc_exception_t ex;
418 libvlc_exception_init(&ex);
420 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
421 if( ! libvlc_exception_raised(&ex) )
423 libvlc_input_set_time(p_input, (vlc_int64_t)time, &ex);
424 libvlc_input_free(p_input);
425 if( ! libvlc_exception_raised(&ex) )
430 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
431 libvlc_exception_clear(&ex);
437 STDMETHODIMP VLCInput::get_state(long* state)
442 libvlc_instance_t* p_libvlc;
443 HRESULT hr = _p_instance->getVLC(&p_libvlc);
446 libvlc_exception_t ex;
447 libvlc_exception_init(&ex);
449 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
450 if( ! libvlc_exception_raised(&ex) )
452 *state = libvlc_input_get_state(p_input, &ex);
453 libvlc_input_free(p_input);
454 if( ! libvlc_exception_raised(&ex) )
459 libvlc_exception_clear(&ex);
460 // don't fail, just return the idle state
467 STDMETHODIMP VLCInput::get_rate(double* rate)
472 libvlc_instance_t* p_libvlc;
473 HRESULT hr = _p_instance->getVLC(&p_libvlc);
476 libvlc_exception_t ex;
477 libvlc_exception_init(&ex);
479 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
480 if( ! libvlc_exception_raised(&ex) )
482 *rate = libvlc_input_get_rate(p_input, &ex);
483 libvlc_input_free(p_input);
484 if( ! libvlc_exception_raised(&ex) )
489 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
490 libvlc_exception_clear(&ex);
496 STDMETHODIMP VLCInput::put_rate(double rate)
498 libvlc_instance_t* p_libvlc;
499 HRESULT hr = _p_instance->getVLC(&p_libvlc);
502 libvlc_exception_t ex;
503 libvlc_exception_init(&ex);
505 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
506 if( ! libvlc_exception_raised(&ex) )
508 libvlc_input_set_rate(p_input, rate, &ex);
509 libvlc_input_free(p_input);
510 if( ! libvlc_exception_raised(&ex) )
515 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
516 libvlc_exception_clear(&ex);
522 STDMETHODIMP VLCInput::get_fps(double* fps)
527 libvlc_instance_t* p_libvlc;
528 HRESULT hr = _p_instance->getVLC(&p_libvlc);
531 libvlc_exception_t ex;
532 libvlc_exception_init(&ex);
534 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
535 if( ! libvlc_exception_raised(&ex) )
537 *fps = libvlc_input_get_fps(p_input, &ex);
538 libvlc_input_free(p_input);
539 if( ! libvlc_exception_raised(&ex) )
544 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
545 libvlc_exception_clear(&ex);
551 STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout)
553 if( NULL == hasVout )
556 libvlc_instance_t* p_libvlc;
557 HRESULT hr = _p_instance->getVLC(&p_libvlc);
560 libvlc_exception_t ex;
561 libvlc_exception_init(&ex);
563 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
564 if( ! libvlc_exception_raised(&ex) )
566 *hasVout = libvlc_input_has_vout(p_input, &ex) ? VARIANT_TRUE : VARIANT_FALSE;
567 libvlc_input_free(p_input);
568 if( ! libvlc_exception_raised(&ex) )
573 _p_instance->setErrorInfo(IID_IVLCInput, libvlc_exception_get_message(&ex));
574 libvlc_exception_clear(&ex);
580 /*******************************************************************************/
585 libvlc_log_close(_p_log, NULL);
588 _p_typeinfo->Release();
591 HRESULT VLCLog::loadTypeInfo(void)
593 HRESULT hr = NOERROR;
594 if( NULL == _p_typeinfo )
598 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
601 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCLog, &_p_typeinfo);
606 p_typelib->Release();
612 STDMETHODIMP VLCLog::GetTypeInfoCount(UINT* pctInfo)
614 if( NULL == pctInfo )
617 if( SUCCEEDED(loadTypeInfo()) )
625 STDMETHODIMP VLCLog::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
627 if( NULL == ppTInfo )
630 if( SUCCEEDED(loadTypeInfo()) )
632 _p_typeinfo->AddRef();
633 *ppTInfo = _p_typeinfo;
640 STDMETHODIMP VLCLog::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
641 UINT cNames, LCID lcid, DISPID* rgDispID)
643 if( SUCCEEDED(loadTypeInfo()) )
645 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
650 STDMETHODIMP VLCLog::Invoke(DISPID dispIdMember, REFIID riid,
651 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
652 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
654 if( SUCCEEDED(loadTypeInfo()) )
656 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
657 pVarResult, pExcepInfo, puArgErr);
662 STDMETHODIMP VLCLog::get_messages(IVLCMessages** obj)
667 *obj = _p_vlcmessages;
668 if( NULL != _p_vlcmessages )
670 _p_vlcmessages->AddRef();
673 return E_OUTOFMEMORY;
676 STDMETHODIMP VLCLog::get_verbosity(long* level)
683 libvlc_instance_t* p_libvlc;
684 HRESULT hr = _p_instance->getVLC(&p_libvlc);
687 libvlc_exception_t ex;
688 libvlc_exception_init(&ex);
690 *level = libvlc_get_log_verbosity(p_libvlc, &ex);
691 if( libvlc_exception_raised(&ex) )
693 _p_instance->setErrorInfo(IID_IVLCLog, libvlc_exception_get_message(&ex));
694 libvlc_exception_clear(&ex);
702 /* log is not enabled, return -1 */
708 STDMETHODIMP VLCLog::put_verbosity(long verbosity)
710 libvlc_exception_t ex;
711 libvlc_exception_init(&ex);
713 libvlc_instance_t* p_libvlc;
714 HRESULT hr = _p_instance->getVLC(&p_libvlc);
721 _p_log = libvlc_log_open(p_libvlc, &ex);
722 if( libvlc_exception_raised(&ex) )
724 _p_instance->setErrorInfo(IID_IVLCLog, libvlc_exception_get_message(&ex));
725 libvlc_exception_clear(&ex);
729 libvlc_set_log_verbosity(p_libvlc, (unsigned)verbosity, &ex);
730 if( libvlc_exception_raised(&ex) )
732 _p_instance->setErrorInfo(IID_IVLCLog, libvlc_exception_get_message(&ex));
733 libvlc_exception_clear(&ex);
739 /* close log when verbosity is set to -1 */
740 libvlc_log_close(_p_log, &ex);
742 if( libvlc_exception_raised(&ex) )
744 _p_instance->setErrorInfo(IID_IVLCLog, libvlc_exception_get_message(&ex));
745 libvlc_exception_clear(&ex);
753 /*******************************************************************************/
755 VLCMessages::~VLCMessages()
758 _p_typeinfo->Release();
761 HRESULT VLCMessages::loadTypeInfo(void)
763 HRESULT hr = NOERROR;
764 if( NULL == _p_typeinfo )
768 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
771 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCMessages, &_p_typeinfo);
776 p_typelib->Release();
782 STDMETHODIMP VLCMessages::GetTypeInfoCount(UINT* pctInfo)
784 if( NULL == pctInfo )
787 if( SUCCEEDED(loadTypeInfo()) )
795 STDMETHODIMP VLCMessages::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
797 if( NULL == ppTInfo )
800 if( SUCCEEDED(loadTypeInfo()) )
802 _p_typeinfo->AddRef();
803 *ppTInfo = _p_typeinfo;
810 STDMETHODIMP VLCMessages::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
811 UINT cNames, LCID lcid, DISPID* rgDispID)
813 if( SUCCEEDED(loadTypeInfo()) )
815 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
820 STDMETHODIMP VLCMessages::Invoke(DISPID dispIdMember, REFIID riid,
821 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
822 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
824 if( SUCCEEDED(loadTypeInfo()) )
826 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
827 pVarResult, pExcepInfo, puArgErr);
832 STDMETHODIMP VLCMessages::get__NewEnum(LPUNKNOWN* _NewEnum)
834 if( NULL == _NewEnum )
842 STDMETHODIMP VLCMessages::clear()
844 libvlc_log_t *p_log = _p_vlclog->_p_log;
847 libvlc_exception_t ex;
848 libvlc_exception_init(&ex);
850 libvlc_log_clear(p_log, &ex);
851 if( libvlc_exception_raised(&ex) )
853 _p_instance->setErrorInfo(IID_IVLCMessages, libvlc_exception_get_message(&ex));
854 libvlc_exception_clear(&ex);
861 STDMETHODIMP VLCMessages::get_count(long* count)
866 libvlc_log_t *p_log = _p_vlclog->_p_log;
869 libvlc_exception_t ex;
870 libvlc_exception_init(&ex);
872 *count = libvlc_log_count(p_log, &ex);
873 if( libvlc_exception_raised(&ex) )
875 _p_instance->setErrorInfo(IID_IVLCMessages, libvlc_exception_get_message(&ex));
876 libvlc_exception_clear(&ex);
885 STDMETHODIMP VLCMessages::iterator(IVLCMessageIterator** iter)
890 *iter = new VLCMessageIterator(_p_instance, _p_vlclog);
892 return *iter ? S_OK : E_OUTOFMEMORY;
895 /*******************************************************************************/
897 VLCMessageIterator::VLCMessageIterator(VLCPlugin *p_instance, VLCLog* p_vlclog ) :
898 _p_instance(p_instance),
903 if( p_vlclog->_p_log )
905 _p_iter = libvlc_log_get_iterator(p_vlclog->_p_log, NULL);
911 VLCMessageIterator::~VLCMessageIterator()
914 libvlc_log_iterator_free(_p_iter, NULL);
917 _p_typeinfo->Release();
920 HRESULT VLCMessageIterator::loadTypeInfo(void)
922 HRESULT hr = NOERROR;
923 if( NULL == _p_typeinfo )
927 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
930 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCMessageIterator, &_p_typeinfo);
935 p_typelib->Release();
941 STDMETHODIMP VLCMessageIterator::GetTypeInfoCount(UINT* pctInfo)
943 if( NULL == pctInfo )
946 if( SUCCEEDED(loadTypeInfo()) )
954 STDMETHODIMP VLCMessageIterator::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
956 if( NULL == ppTInfo )
959 if( SUCCEEDED(loadTypeInfo()) )
961 _p_typeinfo->AddRef();
962 *ppTInfo = _p_typeinfo;
969 STDMETHODIMP VLCMessageIterator::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
970 UINT cNames, LCID lcid, DISPID* rgDispID)
972 if( SUCCEEDED(loadTypeInfo()) )
974 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
979 STDMETHODIMP VLCMessageIterator::Invoke(DISPID dispIdMember, REFIID riid,
980 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
981 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
983 if( SUCCEEDED(loadTypeInfo()) )
985 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
986 pVarResult, pExcepInfo, puArgErr);
991 STDMETHODIMP VLCMessageIterator::get_hasNext(VARIANT_BOOL* hasNext)
993 if( NULL == hasNext )
996 if( _p_iter && _p_vlclog->_p_log )
998 libvlc_exception_t ex;
999 libvlc_exception_init(&ex);
1001 *hasNext = libvlc_log_iterator_has_next(_p_iter, &ex) ? VARIANT_TRUE : VARIANT_FALSE;
1002 if( libvlc_exception_raised(&ex) )
1004 _p_instance->setErrorInfo(IID_IVLCMessageIterator, libvlc_exception_get_message(&ex));
1005 libvlc_exception_clear(&ex);
1011 *hasNext = VARIANT_FALSE;
1016 STDMETHODIMP VLCMessageIterator::next(IVLCMessage** message)
1018 if( NULL == message )
1021 if( _p_iter && _p_vlclog->_p_log )
1023 struct libvlc_log_message_t buffer;
1025 buffer.sizeof_msg = sizeof(buffer);
1027 libvlc_exception_t ex;
1028 libvlc_exception_init(&ex);
1030 libvlc_log_iterator_next(_p_iter, &buffer, &ex);
1031 if( libvlc_exception_raised(&ex) )
1033 _p_instance->setErrorInfo(IID_IVLCMessageIterator, libvlc_exception_get_message(&ex));
1034 libvlc_exception_clear(&ex);
1037 *message = new VLCMessage(_p_instance, buffer);
1038 return *message ? NOERROR : E_OUTOFMEMORY;
1043 /*******************************************************************************/
1045 VLCMessage::~VLCMessage()
1048 _p_typeinfo->Release();
1051 HRESULT VLCMessage::loadTypeInfo(void)
1053 HRESULT hr = NOERROR;
1054 if( NULL == _p_typeinfo )
1056 ITypeLib *p_typelib;
1058 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
1061 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCMessage, &_p_typeinfo);
1066 p_typelib->Release();
1072 STDMETHODIMP VLCMessage::GetTypeInfoCount(UINT* pctInfo)
1074 if( NULL == pctInfo )
1075 return E_INVALIDARG;
1077 if( SUCCEEDED(loadTypeInfo()) )
1085 STDMETHODIMP VLCMessage::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
1087 if( NULL == ppTInfo )
1088 return E_INVALIDARG;
1090 if( SUCCEEDED(loadTypeInfo()) )
1092 _p_typeinfo->AddRef();
1093 *ppTInfo = _p_typeinfo;
1100 STDMETHODIMP VLCMessage::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
1101 UINT cNames, LCID lcid, DISPID* rgDispID)
1103 if( SUCCEEDED(loadTypeInfo()) )
1105 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
1110 STDMETHODIMP VLCMessage::Invoke(DISPID dispIdMember, REFIID riid,
1111 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
1112 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
1114 if( SUCCEEDED(loadTypeInfo()) )
1116 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
1117 pVarResult, pExcepInfo, puArgErr);
1122 inline const char *msgSeverity(int sev)
1137 STDMETHODIMP VLCMessage::get__Value(VARIANT* _Value)
1139 if( NULL == _Value )
1144 snprintf(buffer, sizeof(buffer), "%s %s %s: %s",
1145 _msg.psz_type, _msg.psz_name, msgSeverity(_msg.i_severity), _msg.psz_message);
1147 V_VT(_Value) = VT_BSTR;
1148 V_BSTR(_Value) = BSTRFromCStr(CP_UTF8, buffer);
1153 STDMETHODIMP VLCMessage::get_severity(long* level)
1158 *level = _msg.i_severity;
1163 STDMETHODIMP VLCMessage::get_type(BSTR* type)
1168 *type = BSTRFromCStr(CP_UTF8, _msg.psz_type);
1173 STDMETHODIMP VLCMessage::get_name(BSTR* name)
1178 *name = BSTRFromCStr(CP_UTF8, _msg.psz_name);
1183 STDMETHODIMP VLCMessage::get_header(BSTR* header)
1185 if( NULL == header )
1188 *header = BSTRFromCStr(CP_UTF8, _msg.psz_header);
1193 STDMETHODIMP VLCMessage::get_message(BSTR* message)
1195 if( NULL == message )
1198 *message = BSTRFromCStr(CP_UTF8, _msg.psz_message);
1203 /*******************************************************************************/
1205 VLCPlaylist::~VLCPlaylist()
1208 _p_typeinfo->Release();
1211 HRESULT VLCPlaylist::loadTypeInfo(void)
1213 HRESULT hr = NOERROR;
1214 if( NULL == _p_typeinfo )
1216 ITypeLib *p_typelib;
1218 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
1221 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCPlaylist, &_p_typeinfo);
1226 p_typelib->Release();
1232 STDMETHODIMP VLCPlaylist::GetTypeInfoCount(UINT* pctInfo)
1234 if( NULL == pctInfo )
1235 return E_INVALIDARG;
1237 if( SUCCEEDED(loadTypeInfo()) )
1245 STDMETHODIMP VLCPlaylist::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
1247 if( NULL == ppTInfo )
1248 return E_INVALIDARG;
1250 if( SUCCEEDED(loadTypeInfo()) )
1252 _p_typeinfo->AddRef();
1253 *ppTInfo = _p_typeinfo;
1260 STDMETHODIMP VLCPlaylist::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
1261 UINT cNames, LCID lcid, DISPID* rgDispID)
1263 if( SUCCEEDED(loadTypeInfo()) )
1265 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
1270 STDMETHODIMP VLCPlaylist::Invoke(DISPID dispIdMember, REFIID riid,
1271 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
1272 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
1274 if( SUCCEEDED(loadTypeInfo()) )
1276 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
1277 pVarResult, pExcepInfo, puArgErr);
1282 STDMETHODIMP VLCPlaylist::get_itemCount(long* count)
1287 libvlc_instance_t* p_libvlc;
1288 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1291 libvlc_exception_t ex;
1292 libvlc_exception_init(&ex);
1294 *count = libvlc_playlist_items_count(p_libvlc, &ex);
1295 if( libvlc_exception_raised(&ex) )
1297 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1298 libvlc_exception_get_message(&ex));
1299 libvlc_exception_clear(&ex);
1307 STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
1309 if( NULL == isPlaying )
1312 libvlc_instance_t* p_libvlc;
1313 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1316 libvlc_exception_t ex;
1317 libvlc_exception_init(&ex);
1319 *isPlaying = libvlc_playlist_isplaying(p_libvlc, &ex) ? VARIANT_TRUE: VARIANT_FALSE;
1320 if( libvlc_exception_raised(&ex) )
1322 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1323 libvlc_exception_get_message(&ex));
1324 libvlc_exception_clear(&ex);
1332 STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* item)
1337 if( 0 == SysStringLen(uri) )
1338 return E_INVALIDARG;
1340 libvlc_instance_t* p_libvlc;
1341 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1344 libvlc_exception_t ex;
1345 libvlc_exception_init(&ex);
1348 char **ppsz_options;
1350 hr = VLCControl::CreateTargetOptions(CP_UTF8, &options, &ppsz_options, &i_options);
1354 char *psz_uri = CStrFromBSTR(CP_UTF8, uri);
1355 if( NULL == psz_uri )
1357 VLCControl::FreeTargetOptions(ppsz_options, i_options);
1358 return E_OUTOFMEMORY;
1361 char *psz_name = NULL;
1363 VariantInit(&v_name);
1364 if( SUCCEEDED(VariantChangeType(&v_name, &name, 0, VT_BSTR)) )
1366 if( SysStringLen(V_BSTR(&v_name)) > 0 )
1367 psz_name = CStrFromBSTR(CP_UTF8, V_BSTR(&v_name));
1369 VariantClear(&v_name);
1372 *item = libvlc_playlist_add_extended(p_libvlc,
1376 const_cast<const char **>(ppsz_options),
1379 VLCControl::FreeTargetOptions(ppsz_options, i_options);
1380 CoTaskMemFree(psz_uri);
1382 CoTaskMemFree(psz_name);
1383 if( libvlc_exception_raised(&ex) )
1385 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1386 libvlc_exception_get_message(&ex));
1387 libvlc_exception_clear(&ex);
1395 STDMETHODIMP VLCPlaylist::play()
1397 libvlc_instance_t* p_libvlc;
1398 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1401 libvlc_exception_t ex;
1402 libvlc_exception_init(&ex);
1404 libvlc_playlist_play(p_libvlc, -1, 0, NULL, &ex);
1405 if( libvlc_exception_raised(&ex) )
1407 libvlc_exception_clear(&ex);
1415 STDMETHODIMP VLCPlaylist::playItem(long item)
1417 libvlc_instance_t* p_libvlc;
1418 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1421 libvlc_exception_t ex;
1422 libvlc_exception_init(&ex);
1424 libvlc_playlist_play(p_libvlc, item, 0, NULL, &ex);
1425 if( libvlc_exception_raised(&ex) )
1427 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1428 libvlc_exception_get_message(&ex));
1429 libvlc_exception_clear(&ex);
1437 STDMETHODIMP VLCPlaylist::togglePause()
1439 libvlc_instance_t* p_libvlc;
1440 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1443 libvlc_exception_t ex;
1444 libvlc_exception_init(&ex);
1446 libvlc_playlist_pause(p_libvlc, &ex);
1447 if( libvlc_exception_raised(&ex) )
1449 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1450 libvlc_exception_get_message(&ex));
1451 libvlc_exception_clear(&ex);
1459 STDMETHODIMP VLCPlaylist::stop()
1461 libvlc_instance_t* p_libvlc;
1462 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1465 libvlc_exception_t ex;
1466 libvlc_exception_init(&ex);
1468 libvlc_playlist_stop(p_libvlc, &ex);
1469 if( libvlc_exception_raised(&ex) )
1471 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1472 libvlc_exception_get_message(&ex));
1473 libvlc_exception_clear(&ex);
1481 STDMETHODIMP VLCPlaylist::next()
1483 libvlc_instance_t* p_libvlc;
1484 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1487 libvlc_exception_t ex;
1488 libvlc_exception_init(&ex);
1490 libvlc_playlist_next(p_libvlc, &ex);
1491 if( libvlc_exception_raised(&ex) )
1493 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1494 libvlc_exception_get_message(&ex));
1495 libvlc_exception_clear(&ex);
1503 STDMETHODIMP VLCPlaylist::prev()
1505 libvlc_instance_t* p_libvlc;
1506 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1509 libvlc_exception_t ex;
1510 libvlc_exception_init(&ex);
1512 libvlc_playlist_prev(p_libvlc, &ex);
1513 if( libvlc_exception_raised(&ex) )
1515 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1516 libvlc_exception_get_message(&ex));
1517 libvlc_exception_clear(&ex);
1525 STDMETHODIMP VLCPlaylist::clear()
1527 libvlc_instance_t* p_libvlc;
1528 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1531 libvlc_exception_t ex;
1532 libvlc_exception_init(&ex);
1534 libvlc_playlist_clear(p_libvlc, &ex);
1535 if( libvlc_exception_raised(&ex) )
1537 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1538 libvlc_exception_get_message(&ex));
1539 libvlc_exception_clear(&ex);
1547 STDMETHODIMP VLCPlaylist::removeItem(long item)
1549 libvlc_instance_t* p_libvlc;
1550 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1553 libvlc_exception_t ex;
1554 libvlc_exception_init(&ex);
1556 libvlc_playlist_delete_item(p_libvlc, item, &ex);
1557 if( libvlc_exception_raised(&ex) )
1559 _p_instance->setErrorInfo(IID_IVLCPlaylist,
1560 libvlc_exception_get_message(&ex));
1561 libvlc_exception_clear(&ex);
1569 /*******************************************************************************/
1571 VLCVideo::~VLCVideo()
1574 _p_typeinfo->Release();
1577 HRESULT VLCVideo::loadTypeInfo(void)
1579 HRESULT hr = NOERROR;
1580 if( NULL == _p_typeinfo )
1582 ITypeLib *p_typelib;
1584 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
1587 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCVideo, &_p_typeinfo);
1592 p_typelib->Release();
1598 STDMETHODIMP VLCVideo::GetTypeInfoCount(UINT* pctInfo)
1600 if( NULL == pctInfo )
1601 return E_INVALIDARG;
1603 if( SUCCEEDED(loadTypeInfo()) )
1611 STDMETHODIMP VLCVideo::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
1613 if( NULL == ppTInfo )
1614 return E_INVALIDARG;
1616 if( SUCCEEDED(loadTypeInfo()) )
1618 _p_typeinfo->AddRef();
1619 *ppTInfo = _p_typeinfo;
1626 STDMETHODIMP VLCVideo::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
1627 UINT cNames, LCID lcid, DISPID* rgDispID)
1629 if( SUCCEEDED(loadTypeInfo()) )
1631 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
1636 STDMETHODIMP VLCVideo::Invoke(DISPID dispIdMember, REFIID riid,
1637 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
1638 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
1640 if( SUCCEEDED(loadTypeInfo()) )
1642 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
1643 pVarResult, pExcepInfo, puArgErr);
1648 STDMETHODIMP VLCVideo::get_fullscreen(VARIANT_BOOL* fullscreen)
1650 if( NULL == fullscreen )
1653 libvlc_instance_t* p_libvlc;
1654 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1657 libvlc_exception_t ex;
1658 libvlc_exception_init(&ex);
1660 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
1661 if( ! libvlc_exception_raised(&ex) )
1663 *fullscreen = libvlc_get_fullscreen(p_input, &ex) ? VARIANT_TRUE : VARIANT_FALSE;
1664 libvlc_input_free(p_input);
1665 if( ! libvlc_exception_raised(&ex) )
1670 _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
1671 libvlc_exception_clear(&ex);
1677 STDMETHODIMP VLCVideo::put_fullscreen(VARIANT_BOOL fullscreen)
1679 libvlc_instance_t* p_libvlc;
1680 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1683 libvlc_exception_t ex;
1684 libvlc_exception_init(&ex);
1686 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
1687 if( ! libvlc_exception_raised(&ex) )
1689 libvlc_set_fullscreen(p_input, VARIANT_FALSE != fullscreen, &ex);
1690 libvlc_input_free(p_input);
1691 if( ! libvlc_exception_raised(&ex) )
1696 _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
1697 libvlc_exception_clear(&ex);
1703 STDMETHODIMP VLCVideo::get_width(long* width)
1708 libvlc_instance_t* p_libvlc;
1709 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1712 libvlc_exception_t ex;
1713 libvlc_exception_init(&ex);
1715 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
1716 if( ! libvlc_exception_raised(&ex) )
1718 *width = libvlc_video_get_width(p_input, &ex);
1719 libvlc_input_free(p_input);
1720 if( ! libvlc_exception_raised(&ex) )
1725 _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
1726 libvlc_exception_clear(&ex);
1732 STDMETHODIMP VLCVideo::get_height(long* height)
1734 if( NULL == height )
1737 libvlc_instance_t* p_libvlc;
1738 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1741 libvlc_exception_t ex;
1742 libvlc_exception_init(&ex);
1744 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
1745 if( ! libvlc_exception_raised(&ex) )
1747 *height = libvlc_video_get_height(p_input, &ex);
1748 libvlc_input_free(p_input);
1749 if( ! libvlc_exception_raised(&ex) )
1754 _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
1755 libvlc_exception_clear(&ex);
1761 STDMETHODIMP VLCVideo::toggleFullscreen()
1763 libvlc_instance_t* p_libvlc;
1764 HRESULT hr = _p_instance->getVLC(&p_libvlc);
1767 libvlc_exception_t ex;
1768 libvlc_exception_init(&ex);
1770 libvlc_input_t *p_input = libvlc_playlist_get_input(p_libvlc, &ex);
1771 if( ! libvlc_exception_raised(&ex) )
1773 libvlc_toggle_fullscreen(p_input, &ex);
1774 libvlc_input_free(p_input);
1775 if( ! libvlc_exception_raised(&ex) )
1780 _p_instance->setErrorInfo(IID_IVLCVideo, libvlc_exception_get_message(&ex));
1781 libvlc_exception_clear(&ex);
1787 /*******************************************************************************/
1789 VLCControl2::VLCControl2(VLCPlugin *p_instance) :
1790 _p_instance(p_instance),
1794 _p_vlcplaylist(NULL),
1797 _p_vlcaudio = new VLCAudio(p_instance);
1798 _p_vlcinput = new VLCInput(p_instance);
1799 _p_vlclog = new VLCLog(p_instance);
1800 _p_vlcplaylist = new VLCPlaylist(p_instance);
1801 _p_vlcvideo = new VLCVideo(p_instance);
1804 VLCControl2::~VLCControl2()
1807 delete _p_vlcplaylist;
1812 _p_typeinfo->Release();
1815 HRESULT VLCControl2::loadTypeInfo(void)
1817 HRESULT hr = NOERROR;
1818 if( NULL == _p_typeinfo )
1820 ITypeLib *p_typelib;
1822 hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib);
1825 hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCControl2, &_p_typeinfo);
1830 p_typelib->Release();
1836 STDMETHODIMP VLCControl2::GetTypeInfoCount(UINT* pctInfo)
1838 if( NULL == pctInfo )
1839 return E_INVALIDARG;
1841 if( SUCCEEDED(loadTypeInfo()) )
1849 STDMETHODIMP VLCControl2::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo)
1851 if( NULL == ppTInfo )
1852 return E_INVALIDARG;
1854 if( SUCCEEDED(loadTypeInfo()) )
1856 _p_typeinfo->AddRef();
1857 *ppTInfo = _p_typeinfo;
1864 STDMETHODIMP VLCControl2::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames,
1865 UINT cNames, LCID lcid, DISPID* rgDispID)
1867 if( SUCCEEDED(loadTypeInfo()) )
1869 return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID);
1874 STDMETHODIMP VLCControl2::Invoke(DISPID dispIdMember, REFIID riid,
1875 LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
1876 VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
1878 if( SUCCEEDED(loadTypeInfo()) )
1880 return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, pDispParams,
1881 pVarResult, pExcepInfo, puArgErr);
1886 STDMETHODIMP VLCControl2::get_AutoLoop(VARIANT_BOOL *autoloop)
1888 if( NULL == autoloop )
1891 *autoloop = _p_instance->getAutoLoop() ? VARIANT_TRUE: VARIANT_FALSE;
1895 STDMETHODIMP VLCControl2::put_AutoLoop(VARIANT_BOOL autoloop)
1897 _p_instance->setAutoLoop((VARIANT_FALSE != autoloop) ? TRUE: FALSE);
1901 STDMETHODIMP VLCControl2::get_AutoPlay(VARIANT_BOOL *autoplay)
1903 if( NULL == autoplay )
1906 *autoplay = _p_instance->getAutoPlay() ? VARIANT_TRUE: VARIANT_FALSE;
1910 STDMETHODIMP VLCControl2::put_AutoPlay(VARIANT_BOOL autoplay)
1912 _p_instance->setAutoPlay((VARIANT_FALSE != autoplay) ? TRUE: FALSE);
1916 STDMETHODIMP VLCControl2::get_BaseURL(BSTR *url)
1921 *url = SysAllocStringLen(_p_instance->getBaseURL(),
1922 SysStringLen(_p_instance->getBaseURL()));
1926 STDMETHODIMP VLCControl2::put_BaseURL(BSTR mrl)
1928 _p_instance->setBaseURL(mrl);
1933 STDMETHODIMP VLCControl2::get_MRL(BSTR *mrl)
1938 *mrl = SysAllocStringLen(_p_instance->getMRL(),
1939 SysStringLen(_p_instance->getMRL()));
1943 STDMETHODIMP VLCControl2::put_MRL(BSTR mrl)
1945 _p_instance->setMRL(mrl);
1950 STDMETHODIMP VLCControl2::get_StartTime(long *seconds)
1952 if( NULL == seconds )
1955 *seconds = _p_instance->getStartTime();
1960 STDMETHODIMP VLCControl2::put_StartTime(long seconds)
1962 _p_instance->setStartTime(seconds);
1967 STDMETHODIMP VLCControl2::get_VersionInfo(BSTR *version)
1969 if( NULL == version )
1972 const char *versionStr = VLC_Version();
1973 if( NULL != versionStr )
1975 *version = BSTRFromCStr(_p_instance->getCodePage(), versionStr);
1977 return NULL == *version ? E_OUTOFMEMORY : NOERROR;
1983 STDMETHODIMP VLCControl2::get_Visible(VARIANT_BOOL *isVisible)
1985 if( NULL == isVisible )
1988 *isVisible = _p_instance->getVisible() ? VARIANT_TRUE : VARIANT_FALSE;
1993 STDMETHODIMP VLCControl2::put_Visible(VARIANT_BOOL isVisible)
1995 _p_instance->setVisible(isVisible != VARIANT_FALSE);
2000 STDMETHODIMP VLCControl2::get_Volume(long *volume)
2002 if( NULL == volume )
2005 *volume = _p_instance->getVolume();
2009 STDMETHODIMP VLCControl2::put_Volume(long volume)
2011 _p_instance->setVolume(volume);
2015 STDMETHODIMP VLCControl2::get_audio(IVLCAudio** obj)
2021 if( NULL != _p_vlcaudio )
2023 _p_vlcaudio->AddRef();
2026 return E_OUTOFMEMORY;
2029 STDMETHODIMP VLCControl2::get_input(IVLCInput** obj)
2035 if( NULL != _p_vlcinput )
2037 _p_vlcinput->AddRef();
2040 return E_OUTOFMEMORY;
2043 STDMETHODIMP VLCControl2::get_log(IVLCLog** obj)
2049 if( NULL != _p_vlclog )
2051 _p_vlclog->AddRef();
2054 return E_OUTOFMEMORY;
2057 STDMETHODIMP VLCControl2::get_playlist(IVLCPlaylist** obj)
2062 *obj = _p_vlcplaylist;
2063 if( NULL != _p_vlcplaylist )
2065 _p_vlcplaylist->AddRef();
2068 return E_OUTOFMEMORY;
2071 STDMETHODIMP VLCControl2::get_video(IVLCVideo** obj)
2077 if( NULL != _p_vlcvideo )
2079 _p_vlcvideo->AddRef();
2082 return E_OUTOFMEMORY;