Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
817653d9
Commit
817653d9
authored
Oct 27, 2006
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- add log APIs to Activex
- cleanup
parent
54ca1c9a
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1775 additions
and
173 deletions
+1775
-173
activex/axvlc.idl
activex/axvlc.idl
+117
-18
activex/axvlc.tlb
activex/axvlc.tlb
+0
-0
activex/axvlc_idl.c
activex/axvlc_idl.c
+4
-0
activex/axvlc_idl.h
activex/axvlc_idl.h
+656
-54
activex/supporterrorinfo.cpp
activex/supporterrorinfo.cpp
+4
-0
activex/test.html
activex/test.html
+78
-64
activex/vlccontrol.cpp
activex/vlccontrol.cpp
+1
-1
activex/vlccontrol2.cpp
activex/vlccontrol2.cpp
+657
-18
activex/vlccontrol2.h
activex/vlccontrol2.h
+258
-18
No files found.
activex/axvlc.idl
View file @
817653d9
...
...
@@ -36,6 +36,10 @@ library AXVLC
interface
IVLCControl
;
interface
IVLCAudio
;
interface
IVLCInput
;
interface
IVLCLog
;
interface
IVLCMessage
;
interface
IVLCMessageIterator
;
interface
IVLCMessages
;
interface
IVLCPlaylist
;
interface
IVLCVideo
;
interface
IVLCControl2
;
...
...
@@ -192,9 +196,9 @@ library AXVLC
HRESULT
mute
(
[
in
]
VARIANT_BOOL
muted
)
;
[
propget
,
helpstring
(
"Returns/sets audio volume as a percent value."
)
]
HRESULT
volume
(
[
out
,
retval
]
int
*
volume
)
;
HRESULT
volume
(
[
out
,
retval
]
long
*
volume
)
;
[
propput
,
helpstring
(
"Returns/sets audio volume as a percent value."
)
]
HRESULT
volume
(
[
in
]
int
volume
)
;
HRESULT
volume
(
[
in
]
long
volume
)
;
[
helpstring
(
"Mute/unmute audio playback."
)
]
HRESULT
toggleMute
()
;
...
...
@@ -215,9 +219,9 @@ library AXVLC
HRESULT
length
(
[
out
,
retval
]
double
*
length
)
;
[
propget
,
helpstring
(
"Returns/sets playback position in current clip. Position is ranging from 0.0 to 1.0."
)
]
HRESULT
position
(
[
out
,
retval
]
float
*
position
)
;
HRESULT
position
(
[
out
,
retval
]
double
*
position
)
;
[
propput
,
helpstring
(
"Returns/sets playback position in the current clip. Position ranging from 0.0 to 1.0."
)
]
HRESULT
position
(
[
in
]
float
position
)
;
HRESULT
position
(
[
in
]
double
position
)
;
[
propget
,
helpstring
(
"Returns/sets playback time in current clip, in milliseconds."
)
]
HRESULT
time
(
[
out
,
retval
]
double
*
time
)
;
...
...
@@ -225,20 +229,112 @@ library AXVLC
HRESULT
time
(
[
in
]
double
time
)
;
[
propget
,
helpstring
(
"Returns current playback state."
)
]
HRESULT
state
(
[
out
,
retval
]
int
*
state
)
;
HRESULT
state
(
[
out
,
retval
]
long
*
state
)
;
[
propget
,
helpstring
(
"Returns/sets current playback rate, normal rate is 1.0 "
)
]
HRESULT
rate
(
[
out
,
retval
]
float
*
rate
)
;
HRESULT
rate
(
[
out
,
retval
]
double
*
rate
)
;
[
propput
,
helpstring
(
"Returns/sets current playback rate, normal rate is 1.0."
)
]
HRESULT
rate
(
[
in
]
float
rate
)
;
HRESULT
rate
(
[
in
]
double
rate
)
;
[
propget
,
helpstring
(
"Returns current playback frames per seconds if available."
)
]
HRESULT
fps
(
[
out
,
retval
]
float
*
fps
)
;
HRESULT
fps
(
[
out
,
retval
]
double
*
fps
)
;
[
propget
,
helpstring
(
"Returns whether current playback displays video."
)
]
HRESULT
hasVout
(
[
out
,
retval
]
VARIANT_BOOL
*
hasVout
)
;
}
;
[
odl
,
uuid
(
9
ED00AFA
-
7B
CD
-
4
FFF
-
8
D48
-
7
DD4DB2C800D
),
helpstring
(
"VLC Log Message"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessage
:
IDispatch
{
[
id
(
DISPID_VALUE
),
propget
]
HRESULT
_Value
(
[
out
,
retval
]
VARIANT
*
message
)
;
[
propget
,
helpstring
(
"Returns message severity."
)
]
HRESULT
severity
(
[
out
,
retval
]
long
*
level
)
;
[
propget
,
helpstring
(
"Returns message issuer type."
)
]
HRESULT
type
(
[
out
,
retval
]
BSTR
*
type
)
;
[
propget
,
helpstring
(
"Returns message issuer name."
)
]
HRESULT
name
(
[
out
,
retval
]
BSTR
*
name
)
;
[
propget
,
helpstring
(
"Returns message header."
)
]
HRESULT
header
(
[
out
,
retval
]
BSTR
*
header
)
;
[
propget
,
helpstring
(
"Returns message content."
)
]
HRESULT
message
(
[
out
,
retval
]
BSTR
*
message
)
;
}
;
[
odl
,
uuid
(
15179
CD8
-
CC12
-
4242
-
A58E
-
E412217FF343
),
helpstring
(
"VLC Log iterator"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessageIterator
:
IDispatch
{
[
propget
,
helpstring
(
"Returns whether a message is available."
)
]
HRESULT
hasNext
(
[
out
,
retval
]
VARIANT_BOOL
*
hasNext
)
;
[
helpstring
(
"Returns next message."
)
]
HRESULT
next
(
[
out
,
retval
]
IVLCMessage
**
msg
)
;
}
;
[
odl
,
uuid
(
6
C5CE55D
-
2
D6C
-
4
AAD
-
8299
-
C62D2371F106
),
helpstring
(
"VLC Log APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessages
:
IDispatch
{
[
id
(
DISPID_NEWENUM
),
propget
]
HRESULT
_NewEnum
(
[
out
,
retval
]
IUnknown
**
_NewEnum
)
;
[
helpstring
(
"Clear all messages from log."
)
]
HRESULT
clear
()
;
[
propget
,
helpstring
(
"Returns the number of messages."
)
]
HRESULT
count
(
[
out
,
retval
]
long
*
count
)
;
[
helpstring
(
"Returns an iterator for messages in log"
)
]
HRESULT
iterator
(
[
out
,
retval
]
IVLCMessageIterator
**
iter
)
;
}
;
[
odl
,
uuid
(
8
E3BC3D9
-
62
E9
-
48
FB
-
8
A6D
-
993
F9ABC4A0A
),
helpstring
(
"VLC Log APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCLog
:
IDispatch
{
[
propget
,
helpstring
(
"Returns messages in log"
)
]
HRESULT
messages
(
[
out
,
retval
]
IVLCMessages
**
iter
)
;
[
propget
,
helpstring
(
"Returns/Sets the log versbosity level."
)
]
HRESULT
verbosity
(
[
out
,
retval
]
long
*
level
)
;
[
propput
,
helpstring
(
"Returns/Sets the log versbosity level."
)
]
HRESULT
verbosity
(
[
in
]
long
level
)
;
}
;
[
odl
,
uuid
(
54613049
-
40B
F
-
4035
-
9
E70
-
0
A9312C0188D
),
...
...
@@ -251,19 +347,19 @@ library AXVLC
interface
IVLCPlaylist
:
IDispatch
{
[
propget
,
helpstring
(
"Returns number of items in playlist."
)
]
HRESULT
itemCount
(
[
out
,
retval
]
int
*
count
)
;
HRESULT
itemCount
(
[
out
,
retval
]
long
*
count
)
;
[
propget
,
helpstring
(
"Returns whether playback displays video."
)
]
HRESULT
isPlaying
(
[
out
,
retval
]
VARIANT_BOOL
*
playing
)
;
[
helpstring
(
"Add a playlist item."
)
]
HRESULT
add
(
[
in
]
BSTR
uri
,
[
in
,
optional
]
VARIANT
name
,
[
in
,
optional
]
VARIANT
options
,
[
out
,
retval
]
int
*
item
)
;
HRESULT
add
(
[
in
]
BSTR
uri
,
[
in
,
optional
]
VARIANT
name
,
[
in
,
optional
]
VARIANT
options
,
[
out
,
retval
]
long
*
item
)
;
[
helpstring
(
"Play/Resume the playlist."
)
]
HRESULT
play
()
;
[
helpstring
(
"Play item in playlist."
)
]
HRESULT
playItem
(
[
in
]
int
item
)
;
HRESULT
playItem
(
[
in
]
long
item
)
;
[
helpstring
(
"Play/Pause current clip."
)
]
HRESULT
togglePause
()
;
...
...
@@ -281,7 +377,7 @@ library AXVLC
HRESULT
clear
()
;
[
helpstring
(
"remove item from playlist."
)
]
HRESULT
removeItem
(
[
in
]
int
item
)
;
HRESULT
removeItem
(
[
in
]
long
item
)
;
}
;
[
...
...
@@ -301,10 +397,10 @@ library AXVLC
HRESULT
fullscreen
(
[
in
]
VARIANT_BOOL
fullscreen
)
;
[
propget
,
helpstring
(
"Returns video original width."
)
]
HRESULT
width
(
[
out
,
retval
]
int
*
width
)
;
HRESULT
width
(
[
out
,
retval
]
long
*
width
)
;
[
propget
,
helpstring
(
"Returns video original height."
)
]
HRESULT
height
(
[
out
,
retval
]
int
*
height
)
;
HRESULT
height
(
[
out
,
retval
]
long
*
height
)
;
[
helpstring
(
"toggle fullscreen/windowed state."
)
]
HRESULT
toggleFullscreen
()
;
...
...
@@ -336,9 +432,9 @@ library AXVLC
HRESULT
BaseURL
(
[
in
]
BSTR
url
)
;
[
id
(
DISPID_StartTime
),
propget
,
helpstring
(
"Returns/sets playback start time of URL."
)
]
HRESULT
StartTime
(
[
out
,
retval
]
int
*
seconds
)
;
HRESULT
StartTime
(
[
out
,
retval
]
long
*
seconds
)
;
[
id
(
DISPID_StartTime
),
propput
,
helpstring
(
"Returns/sets playback start time of URL."
)
]
HRESULT
StartTime
(
[
in
]
int
seconds
)
;
HRESULT
StartTime
(
[
in
]
long
seconds
)
;
[
id
(
DISPID_MRL
),
propget
,
helpstring
(
"Returns/sets the default MRL in playlist"
)
]
HRESULT
MRL
(
[
out
,
retval
]
BSTR
*
mrl
)
;
...
...
@@ -354,9 +450,9 @@ library AXVLC
HRESULT
Visible
(
[
in
]
VARIANT_BOOL
visible
)
;
[
id
(
DISPID_Volume
),
propget
,
helpstring
(
"Returns/sets default audio volume."
)
]
HRESULT
Volume
(
[
out
,
retval
]
int
*
volume
)
;
HRESULT
Volume
(
[
out
,
retval
]
long
*
volume
)
;
[
id
(
DISPID_Volume
),
propput
,
helpstring
(
"Returns/sets default audio volume."
)
]
HRESULT
Volume
(
[
in
]
int
volume
)
;
HRESULT
Volume
(
[
in
]
long
volume
)
;
[
propget
,
helpstring
(
"Returns the audio object."
)
]
HRESULT
audio
(
[
out
,
retval
]
IVLCAudio
**
obj
)
;
...
...
@@ -364,6 +460,9 @@ library AXVLC
[
propget
,
helpstring
(
"Returns the audio object."
)
]
HRESULT
input
(
[
out
,
retval
]
IVLCInput
**
obj
)
;
[
propget
,
helpstring
(
"Returns the log object."
)
]
HRESULT
log
(
[
out
,
retval
]
IVLCLog
**
obj
)
;
[
propget
,
helpstring
(
"Returns the playlist object."
)
]
HRESULT
playlist
(
[
out
,
retval
]
IVLCPlaylist
**
obj
)
;
...
...
activex/axvlc.tlb
View file @
817653d9
No preview for this file type
activex/axvlc_idl.c
View file @
817653d9
...
...
@@ -15,6 +15,10 @@ DEFINE_GUID(IID_IVLCControl, 0xc2fa41d0, 0xb113, 0x476e, 0xac,0x8c, 0x9b,0xd1,0x
DEFINE_GUID
(
DIID_DVLCEvents
,
0xdf48072f
,
0x5ef8
,
0x434e
,
0x9b
,
0x40
,
0xe2
,
0xf3
,
0xae
,
0x75
,
0x9b
,
0x5f
);
DEFINE_GUID
(
IID_IVLCAudio
,
0x9e0bd17b
,
0x2d3c
,
0x4656
,
0xb9
,
0x4d
,
0x03
,
0x08
,
0x4f
,
0x3f
,
0xd9
,
0xd4
);
DEFINE_GUID
(
IID_IVLCInput
,
0x49e0dbd1
,
0x9440
,
0x466c
,
0x9c
,
0x97
,
0x95
,
0xc6
,
0x71
,
0x90
,
0xc6
,
0x03
);
DEFINE_GUID
(
IID_IVLCMessage
,
0x9ed00afa
,
0x7bcd
,
0x4fff
,
0x8d
,
0x48
,
0x7d
,
0xd4
,
0xdb
,
0x2c
,
0x80
,
0x0d
);
DEFINE_GUID
(
IID_IVLCMessageIterator
,
0x15179cd8
,
0xcc12
,
0x4242
,
0xa5
,
0x8e
,
0xe4
,
0x12
,
0x21
,
0x7f
,
0xf3
,
0x43
);
DEFINE_GUID
(
IID_IVLCMessages
,
0x6c5ce55d
,
0x2d6c
,
0x4aad
,
0x82
,
0x99
,
0xc6
,
0x2d
,
0x23
,
0x71
,
0xf1
,
0x06
);
DEFINE_GUID
(
IID_IVLCLog
,
0x8e3bc3d9
,
0x62e9
,
0x48fb
,
0x8a
,
0x6d
,
0x99
,
0x3f
,
0x9a
,
0xbc
,
0x4a
,
0x0a
);
DEFINE_GUID
(
IID_IVLCPlaylist
,
0x54613049
,
0x40bf
,
0x4035
,
0x9e
,
0x70
,
0x0a
,
0x93
,
0x12
,
0xc0
,
0x18
,
0x8d
);
DEFINE_GUID
(
IID_IVLCVideo
,
0x0aaedf0b
,
0xd333
,
0x4b27
,
0xa0
,
0xc6
,
0xbb
,
0xf3
,
0x14
,
0x13
,
0xa4
,
0x2e
);
DEFINE_GUID
(
IID_IVLCControl2
,
0x2d719729
,
0x5333
,
0x406c
,
0xbf
,
0x12
,
0x8d
,
0xe7
,
0x87
,
0xfd
,
0x65
,
0xe3
);
...
...
activex/axvlc_idl.h
View file @
817653d9
This diff is collapsed.
Click to expand it.
activex/supporterrorinfo.cpp
View file @
817653d9
...
...
@@ -32,6 +32,10 @@ STDMETHODIMP VLCSupportErrorInfo::InterfaceSupportsErrorInfo(REFIID riid)
{
if
(
(
riid
==
IID_IVLCAudio
)
||
(
riid
==
IID_IVLCInput
)
||
(
riid
==
IID_IVLCLog
)
||
(
riid
==
IID_IVLCMessage
)
||
(
riid
==
IID_IVLCMessageIterator
)
||
(
riid
==
IID_IVLCMessages
)
||
(
riid
==
IID_IVLCPlaylist
)
||
(
riid
==
IID_IVLCVideo
)
||
(
riid
==
IID_IVLCControl2
)
)
...
...
activex/test.html
View file @
817653d9
...
...
@@ -81,54 +81,64 @@ function formatTime(timeVal)
var timeHour = Math.round(timeVal / 1000);
var timeSec = timeHour % 60;
if( timeSec < 10 )
timeSec = '0'+timeSec;
timeSec = '0'+timeSec;
timeHour = (timeHour - timeSec)/60;
var timeMin = timeHour % 60;
if( timeMin < 10 )
timeMin = '0'+timeMin;
timeMin = '0'+timeMin;
timeHour = (timeHour - timeMin)/60;
if( timeHour > 0 )
return timeHour+":"+timeMin+":"+timeSec;
return timeHour+":"+timeMin+":"+timeSec;
else
return timeMin+":"+timeSec;
return timeMin+":"+timeSec;
};
function monitor()
{
var vlc = document.getElementById("vlc");
var newState = vlc.input.state;
if( vlc.log.messages.count > 0 )
{
var iter = vlc.log.messages.iterator();
while( iter.hasNext )
{
var msg = iter.next();
alert( msg );
}
vlc.log.messages.clear();
}
if( prevState != newState )
{
if( newState == 0 )
{
// current media has stopped
onStop();
}
else if( newState == 1 )
{
// current media is openning/connecting
onOpen();
}
else if( newState == 2 )
{
// current media is buffering data
onBuffer();
}
else if( newState == 3 )
{
// current media is now playing
onPlay();
}
else if( vlc.input.state == 4 )
{
// current media is now paused
onPause();
}
prevState = newState;
if( newState == 0 )
{
// current media has stopped
onStop();
}
else if( newState == 1 )
{
// current media is openning/connecting
onOpen();
}
else if( newState == 2 )
{
// current media is buffering data
onBuffer();
}
else if( newState == 3 )
{
// current media is now playing
onPlay();
}
else if( vlc.input.state == 4 )
{
// current media is now paused
onPause();
}
prevState = newState;
}
else if( newState == 3 )
{
// current media is playing
onPlaying();
// current media is playing
onPlaying();
}
monitorTimerId = setTimeout("monitor()", 1000);
};
...
...
@@ -138,14 +148,16 @@ function monitor()
function doGo(targetURL)
{
var vlc = document.getElementById("vlc");
var options = new Array(":vout
-filter=deinterlace", ":deinterlace-mode=linear
");
var options = new Array(":vout
=directx
");
vlc.playlist.clear();
//vlc.playlist.add(targetURL, null, options);
vlc.playlist.add(targetURL);
vlc.playlist.play();
vlc.log.verbosity = 3;
vlc.log.messages.clear();
if( monitorTimerId == 0 )
{
monitor();
monitor();
}
};
function doPlayOrPause()
...
...
@@ -153,15 +165,16 @@ function doPlayOrPause()
var vlc = document.getElementById("vlc");
if( vlc.playlist.isPlaying )
{
vlc.playlist.togglePause();
vlc.playlist.togglePause();
}
else
{
vlc.playlist.play();
if( monitorTimerId == 0 )
{
monitor();
}
vlc.log.messages.clear();
vlc.playlist.play();
if( monitorTimerId == 0 )
{
monitor();
}
}
};
function doStop()
...
...
@@ -169,8 +182,8 @@ function doStop()
document.getElementById("vlc").playlist.stop();
if( monitorTimerId != 0 )
{
clearTimeout(monitorTimerId);
monitorTimerId = 0;
clearTimeout(monitorTimerId);
monitorTimerId = 0;
}
onStop();
};
...
...
@@ -208,28 +221,28 @@ function onPlaying()
{
if( ! sliderScrolling )
{
var slider = document.getElementById("slider");
if( vlc.input.length > 0 )
{
// seekable media
slider.Enabled = true;
slider.Max = slider.width;
ignoreSliderChange = true;
slider.Value = vlc.input.position*slider.width;
ignoreSliderChange = false;
document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);
}
else
{
// non-seekable "live" media
if( slider.Enabled )
{
slider.Value = slider.Min;
slider.Enabled = false;
}
var slider = document.getElementById("slider");
if( vlc.input.length > 0 )
{
// seekable media
slider.Enabled = true;
slider.Max = slider.width;
ignoreSliderChange = true;
slider.Value = vlc.input.position*slider.width;
ignoreSliderChange = false;
document.getElementById("info").innerHTML = formatTime(vlc.input.time)+"/"+formatTime(vlc.input.length);
}
else
{
// non-seekable "live" media
if( slider.Enabled )
{
slider.Value = slider.Min;
slider.Enabled = false;
}
liveFeedRoll = liveFeedRoll & 3;
document.getElementById("info").innerHTML = liveFeedText[liveFeedRoll++];
}
}
}
};
function onPause()
...
...
@@ -238,6 +251,7 @@ function onPause()
};
function onStop()
{
vlc.log.verbosity = -1;
if( slider.Enabled )
{
slider.Value = slider.Min;
...
...
@@ -268,8 +282,8 @@ function slider::Scroll()
if( (vlc.input.state == 3) && (oldPos != newPos) )
{
vlc.input.position = newPos;
slider.Text = formatTime(vlc.input.time);
document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);
slider.Text = formatTime(vlc.input.time);
document.getElementById("info").innerHTML = slider.Text+"/"+formatTime(vlc.input.length);
}
sliderScrolling = true;
};
...
...
activex/vlccontrol.cpp
View file @
817653d9
...
...
@@ -845,7 +845,7 @@ STDMETHODIMP VLCControl::get_VersionInfo(BSTR *version)
const
char
*
versionStr
=
VLC_Version
();
if
(
NULL
!=
versionStr
)
{
*
version
=
BSTRFromCStr
(
_p_instance
->
getCodePage
()
,
versionStr
);
*
version
=
BSTRFromCStr
(
CP_UTF8
,
versionStr
);
return
NULL
==
*
version
?
E_OUTOFMEMORY
:
NOERROR
;
}
...
...
activex/vlccontrol2.cpp
View file @
817653d9
This diff is collapsed.
Click to expand it.
activex/vlccontrol2.h
View file @
817653d9
...
...
@@ -25,6 +25,8 @@
#include "axvlc_idl.h"
#include <vlc/libvlc.h>
class
VLCAudio
:
public
IVLCAudio
{
public:
...
...
@@ -61,8 +63,8 @@ public:
// IVLCAudio methods
STDMETHODIMP
get_mute
(
VARIANT_BOOL
*
);
STDMETHODIMP
put_mute
(
VARIANT_BOOL
);
STDMETHODIMP
get_volume
(
int
*
);
STDMETHODIMP
put_volume
(
int
);
STDMETHODIMP
get_volume
(
long
*
);
STDMETHODIMP
put_volume
(
long
);
STDMETHODIMP
toggleMute
();
protected:
...
...
@@ -110,14 +112,14 @@ public:
// IVLCInput methods
STDMETHODIMP
get_length
(
double
*
);
STDMETHODIMP
get_position
(
float
*
);
STDMETHODIMP
put_position
(
float
);
STDMETHODIMP
get_position
(
double
*
);
STDMETHODIMP
put_position
(
double
);
STDMETHODIMP
get_time
(
double
*
);
STDMETHODIMP
put_time
(
double
);
STDMETHODIMP
get_state
(
int
*
);
STDMETHODIMP
get_rate
(
float
*
);
STDMETHODIMP
put_rate
(
float
);
STDMETHODIMP
get_fps
(
float
*
);
STDMETHODIMP
get_state
(
long
*
);
STDMETHODIMP
get_rate
(
double
*
);
STDMETHODIMP
put_rate
(
double
);
STDMETHODIMP
get_fps
(
double
*
);
STDMETHODIMP
get_hasVout
(
VARIANT_BOOL
*
);
protected:
...
...
@@ -129,6 +131,242 @@ private:
};
class
VLCMessage
:
public
IVLCMessage
{
public:
VLCMessage
(
VLCPlugin
*
p_instance
,
struct
libvlc_log_message_t
&
msg
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_refcount
(
1
),
_msg
(
msg
)
{};
virtual
~
VLCMessage
();
// IUnknown methods
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IDispatch
==
riid
)
||
(
IID_IVLCMessage
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
return
NOERROR
;
}
// behaves as a standalone object
return
E_NOINTERFACE
;
};
STDMETHODIMP_
(
ULONG
)
AddRef
(
void
)
{
return
InterlockedIncrement
(
&
_refcount
);
};
STDMETHODIMP_
(
ULONG
)
Release
(
void
)
{
ULONG
refcount
=
InterlockedDecrement
(
&
_refcount
);
if
(
0
==
refcount
)
{
delete
this
;
return
0
;
}
return
refcount
;
};
// IDispatch methods
STDMETHODIMP
GetTypeInfoCount
(
UINT
*
);
STDMETHODIMP
GetTypeInfo
(
UINT
,
LCID
,
LPTYPEINFO
*
);
STDMETHODIMP
GetIDsOfNames
(
REFIID
,
LPOLESTR
*
,
UINT
,
LCID
,
DISPID
*
);
STDMETHODIMP
Invoke
(
DISPID
,
REFIID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
UINT
*
);
// IVLCMessage methods
STDMETHODIMP
get__Value
(
VARIANT
*
);
STDMETHODIMP
get_severity
(
long
*
);
STDMETHODIMP
get_type
(
BSTR
*
);
STDMETHODIMP
get_name
(
BSTR
*
);
STDMETHODIMP
get_header
(
BSTR
*
);
STDMETHODIMP
get_message
(
BSTR
*
);
protected:
HRESULT
loadTypeInfo
();
private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
LONG
_refcount
;
struct
libvlc_log_message_t
_msg
;
};
class
VLCLog
;
class
VLCMessageIterator
:
public
IVLCMessageIterator
{
public:
VLCMessageIterator
(
VLCPlugin
*
p_instance
,
VLCLog
*
p_vlclog
);
virtual
~
VLCMessageIterator
();
// IUnknown methods
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IDispatch
==
riid
)
||
(
IID_IVLCMessageIterator
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
return
NOERROR
;
}
// behaves as a standalone object
return
E_NOINTERFACE
;
};
STDMETHODIMP_
(
ULONG
)
AddRef
(
void
)
{
return
InterlockedIncrement
(
&
_refcount
);
};
STDMETHODIMP_
(
ULONG
)
Release
(
void
)
{
ULONG
refcount
=
InterlockedDecrement
(
&
_refcount
);
if
(
0
==
refcount
)
{
delete
this
;
return
0
;
}
return
refcount
;
};
// IDispatch methods
STDMETHODIMP
GetTypeInfoCount
(
UINT
*
);
STDMETHODIMP
GetTypeInfo
(
UINT
,
LCID
,
LPTYPEINFO
*
);
STDMETHODIMP
GetIDsOfNames
(
REFIID
,
LPOLESTR
*
,
UINT
,
LCID
,
DISPID
*
);
STDMETHODIMP
Invoke
(
DISPID
,
REFIID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
UINT
*
);
// IVLCMessageIterator methods
STDMETHODIMP
get_hasNext
(
VARIANT_BOOL
*
);
STDMETHODIMP
next
(
IVLCMessage
**
);
protected:
HRESULT
loadTypeInfo
();
private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
LONG
_refcount
;
VLCLog
*
_p_vlclog
;
libvlc_log_iterator_t
*
_p_iter
;
};
class
VLCMessages
:
public
IVLCMessages
{
public:
VLCMessages
(
VLCPlugin
*
p_instance
,
VLCLog
*
p_vlclog
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_p_vlclog
(
p_vlclog
)
{};
virtual
~
VLCMessages
();
// IUnknown methods
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IDispatch
==
riid
)
||
(
IID_IVLCMessages
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
return
NOERROR
;
}
// behaves as a standalone object
return
E_NOINTERFACE
;
};
STDMETHODIMP_
(
ULONG
)
AddRef
(
void
)
{
return
_p_instance
->
pUnkOuter
->
AddRef
();
};
STDMETHODIMP_
(
ULONG
)
Release
(
void
)
{
return
_p_instance
->
pUnkOuter
->
Release
();
};
// IDispatch methods
STDMETHODIMP
GetTypeInfoCount
(
UINT
*
);
STDMETHODIMP
GetTypeInfo
(
UINT
,
LCID
,
LPTYPEINFO
*
);
STDMETHODIMP
GetIDsOfNames
(
REFIID
,
LPOLESTR
*
,
UINT
,
LCID
,
DISPID
*
);
STDMETHODIMP
Invoke
(
DISPID
,
REFIID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
UINT
*
);
// IVLCMessages methods
STDMETHODIMP
get__NewEnum
(
LPUNKNOWN
*
);
STDMETHODIMP
clear
();
STDMETHODIMP
get_count
(
long
*
);
STDMETHODIMP
iterator
(
IVLCMessageIterator
**
);
protected:
HRESULT
loadTypeInfo
();
VLCLog
*
_p_vlclog
;
private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
};
class
VLCLog
:
public
IVLCLog
{
public:
friend
class
VLCMessages
;
friend
class
VLCMessageIterator
;
VLCLog
(
VLCPlugin
*
p_instance
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_p_log
(
NULL
)
{
_p_vlcmessages
=
new
VLCMessages
(
p_instance
,
this
);
};
virtual
~
VLCLog
();
// IUnknown methods
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IDispatch
==
riid
)
||
(
IID_IVLCLog
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
return
NOERROR
;
}
// behaves as a standalone object
return
E_NOINTERFACE
;
};
STDMETHODIMP_
(
ULONG
)
AddRef
(
void
)
{
return
_p_instance
->
pUnkOuter
->
AddRef
();
};
STDMETHODIMP_
(
ULONG
)
Release
(
void
)
{
return
_p_instance
->
pUnkOuter
->
Release
();
};
// IDispatch methods
STDMETHODIMP
GetTypeInfoCount
(
UINT
*
);
STDMETHODIMP
GetTypeInfo
(
UINT
,
LCID
,
LPTYPEINFO
*
);
STDMETHODIMP
GetIDsOfNames
(
REFIID
,
LPOLESTR
*
,
UINT
,
LCID
,
DISPID
*
);
STDMETHODIMP
Invoke
(
DISPID
,
REFIID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
UINT
*
);
// IVLCLog methods
STDMETHODIMP
get_messages
(
IVLCMessages
**
);
STDMETHODIMP
get_verbosity
(
long
*
);
STDMETHODIMP
put_verbosity
(
long
);
protected:
HRESULT
loadTypeInfo
();
libvlc_log_t
*
_p_log
;
private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
VLCMessages
*
_p_vlcmessages
;
};
class
VLCPlaylist
:
public
IVLCPlaylist
{
public:
...
...
@@ -163,17 +401,17 @@ public:
STDMETHODIMP
Invoke
(
DISPID
,
REFIID
,
LCID
,
WORD
,
DISPPARAMS
*
,
VARIANT
*
,
EXCEPINFO
*
,
UINT
*
);
// IVLCPlaylist methods
STDMETHODIMP
get_itemCount
(
int
*
);
STDMETHODIMP
get_itemCount
(
long
*
);
STDMETHODIMP
get_isPlaying
(
VARIANT_BOOL
*
);
STDMETHODIMP
add
(
BSTR
,
VARIANT
,
VARIANT
,
int
*
);
STDMETHODIMP
add
(
BSTR
,
VARIANT
,
VARIANT
,
long
*
);
STDMETHODIMP
play
();
STDMETHODIMP
playItem
(
int
);
STDMETHODIMP
playItem
(
long
);
STDMETHODIMP
togglePause
();
STDMETHODIMP
stop
();
STDMETHODIMP
next
();
STDMETHODIMP
prev
();
STDMETHODIMP
clear
();
STDMETHODIMP
removeItem
(
int
);
STDMETHODIMP
removeItem
(
long
);
protected:
HRESULT
loadTypeInfo
();
...
...
@@ -220,8 +458,8 @@ public:
// IVLCVideo methods
STDMETHODIMP
get_fullscreen
(
VARIANT_BOOL
*
);
STDMETHODIMP
put_fullscreen
(
VARIANT_BOOL
);
STDMETHODIMP
get_width
(
int
*
);
STDMETHODIMP
get_height
(
int
*
);
STDMETHODIMP
get_width
(
long
*
);
STDMETHODIMP
get_height
(
long
*
);
STDMETHODIMP
toggleFullscreen
();
protected:
...
...
@@ -275,16 +513,17 @@ public:
STDMETHODIMP
put_BaseURL
(
BSTR
url
);
STDMETHODIMP
get_MRL
(
BSTR
*
mrl
);
STDMETHODIMP
put_MRL
(
BSTR
mrl
);
STDMETHODIMP
get_StartTime
(
int
*
seconds
);
STDMETHODIMP
put_StartTime
(
int
seconds
);
STDMETHODIMP
get_StartTime
(
long
*
seconds
);
STDMETHODIMP
put_StartTime
(
long
seconds
);
STDMETHODIMP
get_VersionInfo
(
BSTR
*
version
);
STDMETHODIMP
get_Visible
(
VARIANT_BOOL
*
visible
);
STDMETHODIMP
put_Visible
(
VARIANT_BOOL
visible
);
STDMETHODIMP
get_Volume
(
int
*
volume
);
STDMETHODIMP
put_Volume
(
int
volume
);
STDMETHODIMP
get_Volume
(
long
*
volume
);
STDMETHODIMP
put_Volume
(
long
volume
);
STDMETHODIMP
get_audio
(
IVLCAudio
**
);
STDMETHODIMP
get_input
(
IVLCInput
**
);
STDMETHODIMP
get_log
(
IVLCLog
**
);
STDMETHODIMP
get_playlist
(
IVLCPlaylist
**
);
STDMETHODIMP
get_video
(
IVLCVideo
**
);
...
...
@@ -297,6 +536,7 @@ private:
VLCAudio
*
_p_vlcaudio
;
VLCInput
*
_p_vlcinput
;
VLCLog
*
_p_vlclog
;
VLCPlaylist
*
_p_vlcplaylist
;
VLCVideo
*
_p_vlcvideo
;
};
...
...
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