Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
47808d9b
Commit
47808d9b
authored
Mar 10, 2009
by
JP Dinger
Committed by
Rémi Denis-Courmont
Mar 10, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
De-deprecate activex plugin.
Signed-off-by:
Rémi Denis-Courmont
<
remi@remlab.net
>
parent
6395b3e5
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
618 additions
and
739 deletions
+618
-739
projects/activex/plugin.cpp
projects/activex/plugin.cpp
+184
-115
projects/activex/plugin.h
projects/activex/plugin.h
+89
-2
projects/activex/vlccontrol.cpp
projects/activex/vlccontrol.cpp
+72
-159
projects/activex/vlccontrol2.cpp
projects/activex/vlccontrol2.cpp
+273
-463
No files found.
projects/activex/plugin.cpp
View file @
47808d9b
...
...
@@ -206,6 +206,9 @@ VLCPlugin::VLCPlugin(VLCPluginClass *p_class, LPUNKNOWN pUnkOuter) :
_p_class
(
p_class
),
_i_ref
(
1UL
),
_p_libvlc
(
NULL
),
_p_mlist
(
NULL
),
_p_mplayer
(
NULL
),
_i_midx
(
-
1
),
_i_codepage
(
CP_ACP
),
_b_usermode
(
TRUE
)
{
...
...
@@ -267,6 +270,10 @@ VLCPlugin::~VLCPlugin()
SysFreeString
(
_bstr_mrl
);
SysFreeString
(
_bstr_baseurl
);
if
(
_p_mplayer
)
{
libvlc_media_player_release
(
_p_mplayer
);
_p_mplayer
=
NULL
;
}
if
(
_p_mlist
)
{
libvlc_media_list_release
(
_p_mlist
);
_p_mlist
=
NULL
;
}
if
(
_p_libvlc
)
{
libvlc_release
(
_p_libvlc
);
_p_libvlc
=
NULL
;
}
_p_class
->
Release
();
};
...
...
@@ -411,12 +418,11 @@ HRESULT VLCPlugin::onLoad(void)
return
S_OK
;
};
HRESULT
VLCPlugin
::
getVLC
(
libvlc_instance_t
**
pp_libvlc
)
void
VLCPlugin
::
initVLC
()
{
extern
HMODULE
DllGetModule
();
if
(
!
isRunning
()
)
{
/*
** default initialization options
*/
...
...
@@ -482,11 +488,14 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc)
libvlc_exception_init
(
&
ex
);
_p_libvlc
=
libvlc_new
(
ppsz_argc
,
ppsz_argv
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
return
;
_p_mlist
=
libvlc_media_list_new
(
_p_libvlc
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
*
pp_libvlc
=
NULL
;
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
libvlc_release
(
_p_libvlc
);
return
;
}
// initial volume setting
...
...
@@ -536,13 +545,10 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc)
options
[
i_options
++
]
=
timeBuffer
;
}
// add default target to playlist
libvlc_playlist_add_extended_untrusted
(
_p_libvlc
,
psz_mrl
,
NULL
,
i_options
,
options
,
NULL
);
playlist_add_extended_untrusted
(
psz_mrl
,
i_options
,
options
,
NULL
);
CoTaskMemFree
(
psz_mrl
);
}
}
}
*
pp_libvlc
=
_p_libvlc
;
return
S_OK
;
};
void
VLCPlugin
::
setErrorInfo
(
REFIID
riid
,
const
char
*
description
)
...
...
@@ -729,17 +735,11 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
libvlc_video_set_parent
(
p_libvlc
,
reinterpret_cast
<
libvlc_drawable_t
>
(
_inplacewnd
),
NULL
);
if
(
_b_autoplay
)
{
libvlc_playlist_lock
(
p_libvlc
);
unsigned
count
=
libvlc_playlist_items_count
(
p_libvlc
,
&
ex
);
if
(
count
>
0
)
if
(
_b_autoplay
&&
playlist_select
(
0
,
NULL
)
)
{
libvlc_playlist_play
(
p_libvlc
,
0
,
0
,
NULL
,
NULL
);
libvlc_media_player_play
(
_p_mplayer
,
NULL
);
fireOnPlayEvent
();
}
libvlc_playlist_unlock
(
p_libvlc
);
}
}
if
(
isVisible
()
)
...
...
@@ -750,9 +750,9 @@ HRESULT VLCPlugin::onActivateInPlace(LPMSG lpMesg, HWND hwndParent, LPCRECT lprc
HRESULT
VLCPlugin
::
onInPlaceDeactivate
(
void
)
{
if
(
is
Running
(
)
)
if
(
is
Playing
(
NULL
)
)
{
libvlc_playlist_stop
(
_p_libvlc
,
NULL
);
playlist_stop
(
NULL
);
fireOnStopEvent
();
}
...
...
@@ -817,14 +817,9 @@ void VLCPlugin::setTime(int seconds)
if
(
seconds
!=
_i_time
)
{
setStartTime
(
_i_time
);
if
(
isRunning
()
)
{
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
_p_libvlc
,
NULL
);
if
(
NULL
!=
p_md
)
if
(
NULL
!=
_p_mplayer
)
{
libvlc_media_player_set_time
(
p_md
,
_i_time
,
NULL
);
libvlc_media_player_release
(
p_md
);
}
libvlc_media_player_set_time
(
_p_mplayer
,
_i_time
,
NULL
);
}
}
};
...
...
@@ -1036,3 +1031,77 @@ void VLCPlugin::fireOnStopEvent(void)
DISPPARAMS
dispparamsNoArgs
=
{
NULL
,
NULL
,
0
,
0
};
vlcConnectionPointContainer
->
fireEvent
(
DISPID_StopEvent
,
&
dispparamsNoArgs
);
};
bool
VLCPlugin
::
playlist_select
(
int
idx
,
libvlc_exception_t
*
ex
)
{
libvlc_media_t
*
p_m
=
NULL
;
libvlc_media_list_lock
(
_p_mlist
);
int
count
=
libvlc_media_list_count
(
_p_mlist
,
ex
);
if
(
libvlc_exception_raised
(
ex
)
)
goto
bad_unlock
;
if
(
idx
<
0
||
idx
>=
count
)
goto
bad_unlock
;
_i_midx
=
idx
;
p_m
=
libvlc_media_list_item_at_index
(
_p_mlist
,
_i_midx
,
ex
);
libvlc_media_list_unlock
(
_p_mlist
);
if
(
libvlc_exception_raised
(
ex
)
)
return
false
;
if
(
_p_mplayer
)
{
libvlc_media_player_release
(
_p_mplayer
);
_p_mplayer
=
NULL
;
}
_p_mplayer
=
libvlc_media_player_new_from_media
(
p_m
,
ex
);
if
(
_p_mplayer
)
set_player_window
(
ex
);
libvlc_media_release
(
p_m
);
return
!
libvlc_exception_raised
(
ex
);
bad_unlock:
libvlc_media_list_unlock
(
_p_mlist
);
return
false
;
}
void
VLCPlugin
::
set_player_window
(
libvlc_exception_t
*
ex
)
{
// XXX FIXME no idea if this is correct or not
libvlc_media_player_set_hwnd
(
_p_mplayer
,
getInPlaceWindow
(),
ex
);
}
int
VLCPlugin
::
playlist_add_extended_untrusted
(
const
char
*
mrl
,
int
optc
,
const
char
**
optv
,
libvlc_exception_t
*
ex
)
{
int
item
=
-
1
;
libvlc_media_t
*
p_m
=
libvlc_media_new
(
_p_libvlc
,
mrl
,
ex
);
if
(
libvlc_exception_raised
(
ex
)
)
return
-
1
;
for
(
int
i
=
0
;
i
<
optc
;
++
i
)
{
libvlc_media_add_option_untrusted
(
p_m
,
optv
[
i
],
ex
);
if
(
libvlc_exception_raised
(
ex
)
)
{
libvlc_media_release
(
p_m
);
return
-
1
;
}
}
libvlc_media_list_lock
(
_p_mlist
);
libvlc_media_list_add_media
(
_p_mlist
,
p_m
,
ex
);
if
(
!
libvlc_exception_raised
(
ex
)
)
item
=
libvlc_media_list_count
(
_p_mlist
,
ex
)
-
1
;
libvlc_media_list_unlock
(
_p_mlist
);
libvlc_media_release
(
p_m
);
return
item
;
}
projects/activex/plugin.h
View file @
47808d9b
...
...
@@ -193,7 +193,20 @@ public:
inline
void
setDirty
(
BOOL
dirty
)
{
_b_dirty
=
dirty
;
};
inline
BOOL
isRunning
(
void
)
{
return
NULL
!=
_p_libvlc
;
};
HRESULT
getVLC
(
libvlc_instance_t
**
p_vlc
);
HRESULT
getVLC
(
libvlc_instance_t
**
pp_libvlc
)
{
if
(
!
isRunning
()
)
initVLC
();
*
pp_libvlc
=
_p_libvlc
;
return
_p_libvlc
?
S_OK
:
E_FAIL
;
}
HRESULT
getMD
(
libvlc_media_player_t
**
pp_md
)
{
*
pp_md
=
_p_mplayer
;
return
_p_mplayer
?
S_OK
:
E_FAIL
;
}
void
setErrorInfo
(
REFIID
riid
,
const
char
*
description
);
// control geometry within container
...
...
@@ -227,11 +240,81 @@ public:
// controlling IUnknown interface
LPUNKNOWN
pUnkOuter
;
/*
** libvlc interface
*/
bool
isPlaying
(
libvlc_exception_t
*
ex
)
{
return
_p_mplayer
&&
libvlc_media_player_is_playing
(
_p_mplayer
,
ex
);
}
int
playlist_get_current_index
(
libvlc_exception_t
*
)
{
return
_i_midx
;
}
int
playlist_add_extended_untrusted
(
const
char
*
,
int
,
const
char
**
,
libvlc_exception_t
*
);
void
playlist_delete_item
(
int
idx
,
libvlc_exception_t
*
ex
)
{
if
(
_p_mlist
)
libvlc_media_list_remove_index
(
_p_mlist
,
idx
,
ex
);
}
void
playlist_clear
(
libvlc_exception_t
*
ex
)
{
if
(
!
_p_libvlc
)
return
;
if
(
_p_mlist
)
libvlc_media_list_release
(
_p_mlist
);
_p_mlist
=
libvlc_media_list_new
(
_p_libvlc
,
ex
);
}
int
playlist_count
(
libvlc_exception_t
*
ex
)
{
int
r
=
0
;
if
(
!
_p_mlist
)
return
0
;
libvlc_media_list_lock
(
_p_mlist
);
r
=
libvlc_media_list_count
(
_p_mlist
,
ex
);
libvlc_media_list_unlock
(
_p_mlist
);
return
r
;
}
void
playlist_pause
(
libvlc_exception_t
*
ex
)
{
if
(
isPlaying
(
ex
)
)
libvlc_media_player_pause
(
_p_mplayer
,
ex
);
}
void
playlist_play
(
libvlc_exception_t
*
ex
)
{
if
(
!
_p_libvlc
)
initVLC
();
if
(
_p_mplayer
||
playlist_select
(
0
,
ex
)
)
libvlc_media_player_play
(
_p_mplayer
,
ex
);
}
void
playlist_play_item
(
int
idx
,
libvlc_exception_t
*
ex
)
{
if
(
!
_p_libvlc
)
initVLC
();
if
(
playlist_select
(
idx
,
ex
)
)
libvlc_media_player_play
(
_p_mplayer
,
ex
);
}
void
playlist_stop
(
libvlc_exception_t
*
ex
)
{
if
(
_p_mplayer
)
libvlc_media_player_stop
(
_p_mplayer
,
ex
);
}
void
playlist_next
(
libvlc_exception_t
*
ex
)
{
if
(
playlist_select
(
_i_midx
+
1
,
ex
)
)
libvlc_media_player_play
(
_p_mplayer
,
ex
);
}
void
playlist_prev
(
libvlc_exception_t
*
ex
)
{
if
(
playlist_select
(
_i_midx
-
1
,
ex
)
)
libvlc_media_player_play
(
_p_mplayer
,
ex
);
}
protected:
virtual
~
VLCPlugin
();
private:
void
initVLC
();
bool
playlist_select
(
int
i
,
libvlc_exception_t
*
);
void
set_player_window
(
libvlc_exception_t
*
);
//implemented interfaces
class
VLCOleObject
*
vlcOleObject
;
...
...
@@ -256,7 +339,11 @@ private:
VLCPluginClass
*
_p_class
;
ULONG
_i_ref
;
libvlc_instance_t
*
_p_libvlc
;
libvlc_instance_t
*
_p_libvlc
;
libvlc_media_list_t
*
_p_mlist
;
libvlc_media_player_t
*
_p_mplayer
;
int
_i_midx
;
UINT
_i_codepage
;
BOOL
_b_usermode
;
RECT
_posRect
;
...
...
projects/activex/vlccontrol.cpp
View file @
47808d9b
...
...
@@ -124,14 +124,10 @@ STDMETHODIMP VLCControl::put_Visible(VARIANT_BOOL isVisible)
STDMETHODIMP
VLCControl
::
play
(
void
)
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_play
(
p_libvlc
,
-
1
,
0
,
NULL
,
&
ex
);
_p_instance
->
playlist_play
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -141,20 +137,18 @@ STDMETHODIMP VLCControl::play(void)
}
_p_instance
->
fireOnPlayEvent
();
return
NOERROR
;
}
return
result
;
};
STDMETHODIMP
VLCControl
::
pause
(
void
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_
playlist_pause
(
p_libvlc
,
&
ex
);
libvlc_
media_player_pause
(
p_md
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -170,14 +164,14 @@ STDMETHODIMP VLCControl::pause(void)
STDMETHODIMP
VLCControl
::
stop
(
void
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_
playlist_stop
(
p_libvlc
,
&
ex
);
libvlc_
media_player_stop
(
p_md
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -196,22 +190,14 @@ STDMETHODIMP VLCControl::get_Playing(VARIANT_BOOL *isPlaying)
if
(
NULL
==
isPlaying
)
return
E_POINTER
;
HRESULT
result
=
NOERROR
;
if
(
_p_instance
->
isRunning
()
)
{
libvlc_instance_t
*
p_libvlc
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_playlist_lock
(
p_libvlc
);
if
(
libvlc_playlist_isplaying
(
p_libvlc
,
NULL
)
)
*
isPlaying
=
VARIANT_TRUE
;
else
*
isPlaying
=
VARIANT_FALSE
;
libvlc_playlist_unlock
(
p_libvlc
);
*
isPlaying
=
libvlc_media_player_is_playing
(
p_md
,
NULL
)
?
VARIANT_TRUE
:
VARIANT_FALSE
;
return
NOERROR
;
}
}
*
isPlaying
=
VARIANT_FALSE
;
return
result
;
};
...
...
@@ -222,25 +208,18 @@ STDMETHODIMP VLCControl::get_Position(float *position)
return
E_POINTER
;
*
position
=
0.0
f
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
result
=
E_UNEXPECTED
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
position
=
libvlc_media_player_get_position
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -251,25 +230,18 @@ STDMETHODIMP VLCControl::get_Position(float *position)
STDMETHODIMP
VLCControl
::
put_Position
(
float
position
)
{
HRESULT
result
=
E_UNEXPECTED
;
libvlc_instance_t
*
p_libvlc
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_position
(
p_md
,
position
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -284,24 +256,18 @@ STDMETHODIMP VLCControl::get_Time(int *seconds)
return
E_POINTER
;
*
seconds
=
0
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
seconds
=
libvlc_media_player_get_time
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -319,25 +285,19 @@ STDMETHODIMP VLCControl::put_Time(int seconds)
STDMETHODIMP
VLCControl
::
shuttle
(
int
seconds
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
if
(
seconds
<
0
)
seconds
=
0
;
libvlc_media_player_set_time
(
p_md
,
(
int64_t
)
seconds
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -349,27 +309,13 @@ STDMETHODIMP VLCControl::shuttle(int seconds)
STDMETHODIMP
VLCControl
::
fullscreen
(
void
)
{
HRESULT
result
=
E_UNEXPECTED
;
if
(
_p_instance
->
isRunning
()
)
{
libvlc_instance_t
*
p_libvlc
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
bool
b_playing
;
libvlc_playlist_lock
(
p_libvlc
);
b_playing
=
libvlc_playlist_isplaying
(
p_libvlc
,
NULL
);
libvlc_playlist_unlock
(
p_libvlc
);
if
(
b_playing
)
{
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
NULL
);
if
(
p_md
)
if
(
libvlc_media_player_is_playing
(
p_md
,
NULL
)
)
{
libvlc_toggle_fullscreen
(
p_md
,
NULL
);
libvlc_media_player_release
(
p_md
);
}
}
}
}
return
result
;
...
...
@@ -381,24 +327,18 @@ STDMETHODIMP VLCControl::get_Length(int *seconds)
return
E_POINTER
;
*
seconds
=
0
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
seconds
=
(
double
)
libvlc_media_player_get_length
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -412,23 +352,17 @@ STDMETHODIMP VLCControl::playFaster(void)
{
int32_t
rate
=
2
;
HRESULT
result
=
E_UNEXPECTED
;
if
(
!
_p_instance
->
isRunning
()
)
return
result
;
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
libvlc_instance_t
*
p_libvlc
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_rate
(
p_md
,
rate
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
...
...
@@ -446,28 +380,18 @@ STDMETHODIMP VLCControl::playSlower(void)
{
float
rate
=
0.5
;
HRESULT
result
=
E_UNEXPECTED
;
if
(
!
_p_instance
->
isRunning
()
)
return
result
;
libvlc_instance_t
*
p_libvlc
;
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
libvlc_media_player_t
*
p_md
;
HRESULT
result
=
_p_instance
->
getMD
(
&
p_md
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_rate
(
p_md
,
rate
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -880,10 +804,8 @@ STDMETHODIMP VLCControl::addTarget(BSTR uri, VARIANT options, enum VLCPlaylistMo
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
position
=
libvlc_playlist_add_extended
(
p_libvlc
,
cUri
,
cUri
,
cOptionsCount
,
const_cast
<
const
char
**>
(
cOptions
),
&
ex
);
position
=
_p_instance
->
playlist_add_extended_untrusted
(
cUri
,
cOptionsCount
,
const_cast
<
const
char
**>
(
cOptions
),
&
ex
);
FreeTargetOptions
(
cOptions
,
cOptionsCount
);
CoTaskMemFree
(
cUri
);
...
...
@@ -919,7 +841,7 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
*
index
=
libvlc_playlist_get_current_index
(
p_libvlc
,
&
ex
);
*
index
=
_p_instance
->
playlist_get_current_index
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -937,17 +859,10 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count)
if
(
NULL
==
count
)
return
E_POINTER
;
*
count
=
0
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
result
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
result
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_lock
(
p_libvlc
);
*
count
=
libvlc_playlist_items_count
(
p_libvlc
,
&
ex
);
libvlc_playlist_unlock
(
p_libvlc
);
*
count
=
_p_instance
->
playlist_count
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -956,8 +871,6 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count)
return
E_FAIL
;
}
return
NOERROR
;
}
return
result
;
};
STDMETHODIMP
VLCControl
::
playlistNext
(
void
)
...
...
@@ -969,7 +882,7 @@ STDMETHODIMP VLCControl::playlistNext(void)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_next
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_next
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -991,7 +904,7 @@ STDMETHODIMP VLCControl::playlistPrev(void)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_prev
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_prev
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
@@ -1013,7 +926,7 @@ STDMETHODIMP VLCControl::playlistClear(void)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_clear
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_clear
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCControl
,
...
...
projects/activex/vlccontrol2.cpp
View file @
47808d9b
...
...
@@ -211,17 +211,14 @@ STDMETHODIMP VLCAudio::get_track(long* track)
if
(
NULL
==
track
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
*
track
=
libvlc_audio_get_track
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCAudio
,
...
...
@@ -236,17 +233,14 @@ STDMETHODIMP VLCAudio::get_track(long* track)
STDMETHODIMP
VLCAudio
::
put_track
(
long
track
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
libvlc_audio_set_track
(
p_md
,
track
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCAudio
,
...
...
@@ -413,24 +407,18 @@ STDMETHODIMP VLCInput::get_length(double* length)
return
E_POINTER
;
*
length
=
0
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
length
=
(
double
)
libvlc_media_player_get_length
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -445,24 +433,18 @@ STDMETHODIMP VLCInput::get_position(double* position)
return
E_POINTER
;
*
position
=
0.0
f
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
position
=
libvlc_media_player_get_position
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -473,24 +455,18 @@ STDMETHODIMP VLCInput::get_position(double* position)
STDMETHODIMP
VLCInput
::
put_position
(
double
position
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_position
(
p_md
,
position
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -504,24 +480,18 @@ STDMETHODIMP VLCInput::get_time(double* time)
if
(
NULL
==
time
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
time
=
(
double
)
libvlc_media_player_get_time
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -532,24 +502,18 @@ STDMETHODIMP VLCInput::get_time(double* time)
STDMETHODIMP
VLCInput
::
put_time
(
double
time
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_time
(
p_md
,
(
int64_t
)
time
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -563,24 +527,18 @@ STDMETHODIMP VLCInput::get_state(long* state)
if
(
NULL
==
state
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
state
=
libvlc_media_player_get_state
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
libvlc_exception_clear
(
&
ex
);
// don't fail, just return the idle state
*
state
=
0
;
...
...
@@ -594,24 +552,18 @@ STDMETHODIMP VLCInput::get_rate(double* rate)
if
(
NULL
==
rate
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
rate
=
libvlc_media_player_get_rate
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -622,24 +574,18 @@ STDMETHODIMP VLCInput::get_rate(double* rate)
STDMETHODIMP
VLCInput
::
put_rate
(
double
rate
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_media_player_set_rate
(
p_md
,
rate
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -654,24 +600,18 @@ STDMETHODIMP VLCInput::get_fps(double* fps)
return
E_POINTER
;
*
fps
=
0.0
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
fps
=
libvlc_media_player_get_fps
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -685,25 +625,19 @@ STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout)
if
(
NULL
==
hasVout
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
;
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
hasVout
=
libvlc_media_player_has_vout
(
p_md
,
&
ex
)
?
VARIANT_TRUE
:
VARIANT_FALSE
;
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCInput
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -1520,16 +1454,10 @@ STDMETHODIMP VLCPlaylistItems::get_count(long* count)
if
(
NULL
==
count
)
return
E_POINTER
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_lock
(
p_libvlc
);
*
count
=
libvlc_playlist_items_count
(
p_libvlc
,
&
ex
);
libvlc_playlist_unlock
(
p_libvlc
);
*
count
=
_p_instance
->
playlist_count
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
...
...
@@ -1538,8 +1466,6 @@ STDMETHODIMP VLCPlaylistItems::get_count(long* count)
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylistItems
::
clear
()
...
...
@@ -1551,7 +1477,7 @@ STDMETHODIMP VLCPlaylistItems::clear()
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_clear
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_clear
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
...
...
@@ -1573,7 +1499,7 @@ STDMETHODIMP VLCPlaylistItems::remove(long item)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_delete_item
(
p_libvlc
,
item
,
&
ex
);
_p_instance
->
playlist_delete_item
(
item
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
...
...
@@ -1672,16 +1598,10 @@ STDMETHODIMP VLCPlaylist::get_itemCount(long* count)
return
E_POINTER
;
*
count
=
0
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_lock
(
p_libvlc
);
*
count
=
libvlc_playlist_items_count
(
p_libvlc
,
&
ex
);
libvlc_playlist_unlock
(
p_libvlc
);
*
count
=
_p_instance
->
playlist_count
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1690,8 +1610,6 @@ STDMETHODIMP VLCPlaylist::get_itemCount(long* count)
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
get_isPlaying
(
VARIANT_BOOL
*
isPlaying
)
...
...
@@ -1699,25 +1617,22 @@ STDMETHODIMP VLCPlaylist::get_isPlaying(VARIANT_BOOL* isPlaying)
if
(
NULL
==
isPlaying
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_lock
(
p_libvlc
);
*
isPlaying
=
libvlc_playlist_isplaying
(
p_libvlc
,
&
ex
)
?
*
isPlaying
=
libvlc_media_player_is_playing
(
p_md
,
&
ex
)
?
VARIANT_TRUE:
VARIANT_FALSE
;
if
(
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_playlist_unlock
(
p_libvlc
);
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
libvlc_playlist_unlock
(
p_libvlc
);
return
NOERROR
;
}
return
hr
;
...
...
@@ -1789,12 +1704,8 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
VariantClear
(
&
v_name
);
}
*
item
=
libvlc_playlist_add_extended
(
p_libvlc
,
psz_uri
,
psz_name
,
i_options
,
const_cast
<
const
char
**>
(
ppsz_options
),
&
ex
);
*
item
=
_p_instance
->
playlist_add_extended_untrusted
(
psz_uri
,
i_options
,
const_cast
<
const
char
**>
(
ppsz_options
),
&
ex
);
VLCControl
::
FreeTargetOptions
(
ppsz_options
,
i_options
);
CoTaskMemFree
(
psz_uri
);
...
...
@@ -1814,34 +1725,24 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
STDMETHODIMP
VLCPlaylist
::
play
()
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_play
(
p_libvlc
,
-
1
,
0
,
NULL
,
&
ex
);
_p_instance
->
playlist_play
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
playItem
(
long
item
)
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_play
(
p_libvlc
,
item
,
0
,
NULL
,
&
ex
);
_p_instance
->
playlist_play_item
(
item
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1850,20 +1751,18 @@ STDMETHODIMP VLCPlaylist::playItem(long item)
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
togglePause
()
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_
playlist_pause
(
p_libvlc
,
&
ex
);
libvlc_
media_player_pause
(
p_md
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1878,14 +1777,14 @@ STDMETHODIMP VLCPlaylist::togglePause()
STDMETHODIMP
VLCPlaylist
::
stop
()
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_
playlist_stop
(
p_libvlc
,
&
ex
);
libvlc_
media_player_stop
(
p_md
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1900,14 +1799,10 @@ STDMETHODIMP VLCPlaylist::stop()
STDMETHODIMP
VLCPlaylist
::
next
()
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_next
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_next
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1916,20 +1811,14 @@ STDMETHODIMP VLCPlaylist::next()
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
prev
()
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_prev
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_prev
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1938,20 +1827,14 @@ STDMETHODIMP VLCPlaylist::prev()
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
clear
()
{
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_clear
(
p_libvlc
,
&
ex
);
_p_instance
->
playlist_clear
(
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -1960,8 +1843,6 @@ STDMETHODIMP VLCPlaylist::clear()
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
removeItem
(
long
item
)
...
...
@@ -1973,7 +1854,7 @@ STDMETHODIMP VLCPlaylist::removeItem(long item)
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_playlist_delete_item
(
p_libvlc
,
item
,
&
ex
);
_p_instance
->
playlist_delete_item
(
item
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylist
,
...
...
@@ -2084,23 +1965,18 @@ STDMETHODIMP VLCVideo::get_fullscreen(VARIANT_BOOL* fullscreen)
if
(
NULL
==
fullscreen
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
fullscreen
=
libvlc_get_fullscreen
(
p_md
,
&
ex
)
?
VARIANT_TRUE
:
VARIANT_FALSE
;
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2110,23 +1986,18 @@ STDMETHODIMP VLCVideo::get_fullscreen(VARIANT_BOOL* fullscreen)
STDMETHODIMP
VLCVideo
::
put_fullscreen
(
VARIANT_BOOL
fullscreen
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_set_fullscreen
(
p_md
,
VARIANT_FALSE
!=
fullscreen
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2139,23 +2010,18 @@ STDMETHODIMP VLCVideo::get_width(long* width)
if
(
NULL
==
width
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
width
=
libvlc_video_get_width
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2168,23 +2034,18 @@ STDMETHODIMP VLCVideo::get_height(long* height)
if
(
NULL
==
height
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
height
=
libvlc_video_get_height
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2197,19 +2058,15 @@ STDMETHODIMP VLCVideo::get_aspectRatio(BSTR* aspect)
if
(
NULL
==
aspect
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_aspect
=
libvlc_video_get_aspect_ratio
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
if
(
NULL
==
psz_aspect
)
...
...
@@ -2222,7 +2079,7 @@ STDMETHODIMP VLCVideo::get_aspectRatio(BSTR* aspect)
}
free
(
psz_aspect
);
psz_aspect
=
NULL
;
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2238,16 +2095,13 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
if
(
0
==
SysStringLen
(
aspect
)
)
return
E_INVALIDARG
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_aspect
=
CStrFromBSTR
(
CP_UTF8
,
aspect
);
if
(
NULL
==
psz_aspect
)
{
...
...
@@ -2257,7 +2111,6 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
libvlc_video_set_aspect_ratio
(
p_md
,
psz_aspect
,
&
ex
);
CoTaskMemFree
(
psz_aspect
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
...
...
@@ -2265,7 +2118,6 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
}
return
NOERROR
;
}
return
hr
;
...
...
@@ -2276,23 +2128,18 @@ STDMETHODIMP VLCVideo::get_subtitle(long* spu)
if
(
NULL
==
spu
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
spu
=
libvlc_video_get_spu
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2302,16 +2149,14 @@ STDMETHODIMP VLCVideo::get_subtitle(long* spu)
STDMETHODIMP
VLCVideo
::
put_subtitle
(
long
spu
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
libvlc_video_set_spu
(
p_md
,
spu
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
...
...
@@ -2328,19 +2173,15 @@ STDMETHODIMP VLCVideo::get_crop(BSTR* geometry)
if
(
NULL
==
geometry
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_geometry
=
libvlc_video_get_crop_geometry
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
if
(
NULL
==
psz_geometry
)
...
...
@@ -2353,7 +2194,6 @@ STDMETHODIMP VLCVideo::get_crop(BSTR* geometry)
}
free
(
psz_geometry
);
psz_geometry
=
NULL
;
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2369,16 +2209,13 @@ STDMETHODIMP VLCVideo::put_crop(BSTR geometry)
if
(
0
==
SysStringLen
(
geometry
)
)
return
E_INVALIDARG
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_geometry
=
CStrFromBSTR
(
CP_UTF8
,
geometry
);
if
(
NULL
==
psz_geometry
)
{
...
...
@@ -2388,7 +2225,6 @@ STDMETHODIMP VLCVideo::put_crop(BSTR geometry)
libvlc_video_set_crop_geometry
(
p_md
,
psz_geometry
,
&
ex
);
CoTaskMemFree
(
psz_geometry
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
...
...
@@ -2396,7 +2232,6 @@ STDMETHODIMP VLCVideo::put_crop(BSTR geometry)
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
}
return
NOERROR
;
}
return
hr
;
...
...
@@ -2407,23 +2242,18 @@ STDMETHODIMP VLCVideo::get_teletext(long* page)
if
(
NULL
==
page
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
*
page
=
libvlc_video_get_teletext
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2433,16 +2263,14 @@ STDMETHODIMP VLCVideo::get_teletext(long* page)
STDMETHODIMP
VLCVideo
::
put_teletext
(
long
page
)
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
libvlc_video_set_teletext
(
p_md
,
page
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
...
...
@@ -2459,16 +2287,13 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
if
(
NULL
==
picture
)
return
E_POINTER
;
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
static
int
uniqueId
=
0
;
TCHAR
path
[
MAX_PATH
+
1
];
...
...
@@ -2478,12 +2303,9 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
/* check temp directory path by openning it */
{
HANDLE
dirHandle
=
CreateFile
(
path
,
GENERIC_READ
,
HANDLE
dirHandle
=
CreateFile
(
path
,
GENERIC_READ
,
FILE_SHARE_READ
|
FILE_SHARE_WRITE
|
FILE_SHARE_DELETE
,
NULL
,
OPEN_EXISTING
,
FILE_FLAG_BACKUP_SEMANTICS
,
NULL
);
NULL
,
OPEN_EXISTING
,
FILE_FLAG_BACKUP_SEMANTICS
,
NULL
);
if
(
INVALID_HANDLE_VALUE
==
dirHandle
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
...
...
@@ -2528,7 +2350,6 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
/* take snapshot into file */
libvlc_video_take_snapshot
(
p_md
,
psz_filepath
,
0
,
0
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
hr
=
E_FAIL
;
...
...
@@ -2553,7 +2374,6 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
DeleteFile
(
filepath
);
return
hr
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2563,23 +2383,18 @@ STDMETHODIMP VLCVideo::takeSnapshot(LPPICTUREDISP* picture)
STDMETHODIMP
VLCVideo
::
toggleFullscreen
()
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_toggle_fullscreen
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
@@ -2589,23 +2404,18 @@ STDMETHODIMP VLCVideo::toggleFullscreen()
STDMETHODIMP
VLCVideo
::
toggleTeletext
()
{
libvlc_
instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
get
VLC
(
&
p_libvlc
);
libvlc_
media_player_t
*
p_md
;
HRESULT
hr
=
_p_instance
->
get
MD
(
&
p_md
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_media_player_t
*
p_md
=
libvlc_playlist_get_media_player
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
libvlc_toggle_teletext
(
p_md
,
&
ex
);
libvlc_media_player_release
(
p_md
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment