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
fc9b8e56
Commit
fc9b8e56
authored
Dec 07, 2006
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- activex: backporting from 0.8.6
parent
344289ce
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
706 additions
and
149 deletions
+706
-149
activex/Makefile.am
activex/Makefile.am
+2
-1
activex/axvlc.idl
activex/axvlc.idl
+29
-27
activex/axvlc.tlb
activex/axvlc.tlb
+0
-0
activex/axvlc_idl.c
activex/axvlc_idl.c
+1
-0
activex/axvlc_idl.h
activex/axvlc_idl.h
+158
-9
activex/connectioncontainer.cpp
activex/connectioncontainer.cpp
+1
-1
activex/objectsafety.h
activex/objectsafety.h
+5
-5
activex/oleinplaceobject.h
activex/oleinplaceobject.h
+2
-3
activex/oleobject.cpp
activex/oleobject.cpp
+3
-3
activex/oleobject.h
activex/oleobject.h
+1
-1
activex/persistpropbag.cpp
activex/persistpropbag.cpp
+0
-1
activex/persiststreaminit.cpp
activex/persiststreaminit.cpp
+5
-6
activex/persiststreaminit.h
activex/persiststreaminit.h
+0
-1
activex/plugin.cpp
activex/plugin.cpp
+32
-29
activex/plugin.h
activex/plugin.h
+1
-2
activex/provideclassinfo.cpp
activex/provideclassinfo.cpp
+0
-1
activex/provideclassinfo.h
activex/provideclassinfo.h
+0
-1
activex/supporterrorinfo.cpp
activex/supporterrorinfo.cpp
+1
-0
activex/utils.cpp
activex/utils.cpp
+169
-10
activex/utils.h
activex/utils.h
+4
-0
activex/vlccontrol.cpp
activex/vlccontrol.cpp
+23
-24
activex/vlccontrol.h
activex/vlccontrol.h
+2
-5
activex/vlccontrol2.cpp
activex/vlccontrol2.cpp
+207
-14
activex/vlccontrol2.h
activex/vlccontrol2.h
+60
-5
No files found.
activex/Makefile.am
View file @
fc9b8e56
...
...
@@ -46,6 +46,7 @@ SOURCES_activex = \
plugin.h
\
axvlc_idl.c
\
axvlc_idl.h
\
guiddef.h
\
$(NULL)
DIST_rsrc
=
\
...
...
@@ -137,7 +138,7 @@ endif
###############################################################################
clean-stamp
:
rm
-f
stamp-
pic
rm
-f
stamp-
builtin
if
BUILD_SHARED
stamp-builtin
:
...
...
activex/axvlc.idl
View file @
fc9b8e56
...
...
@@ -79,7 +79,6 @@ library AXVLC
uuid
(
C2FA41D0
-
B113
-
476
e
-
AC8C
-
9B
D14999C1C1
),
helpstring
(
"VLC Control (deprecated)"
),
dual
,
hidden
,
oleautomation
]
interface
IVLCControl
:
IDispatch
...
...
@@ -165,7 +164,6 @@ library AXVLC
[
uuid
(
DF48072F
-
5
EF8
-434e-9
B40
-
E2F3AE759B5F
),
helpstring
(
"Event interface for VLC control"
),
hidden
]
dispinterface
DVLCEvents
{
...
...
@@ -183,9 +181,7 @@ library AXVLC
odl
,
uuid
(
9
E0BD17B
-
2
D3C
-
4656
-
B94D
-
03084
F3FD9D4
),
helpstring
(
"VLC Audio APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCAudio
:
IDispatch
...
...
@@ -208,9 +204,7 @@ library AXVLC
odl
,
uuid
(
49
E0DBD1
-
9440
-
466
C
-
9
C97
-
95
C67190C603
),
helpstring
(
"VLC Input APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCInput
:
IDispatch
...
...
@@ -247,9 +241,7 @@ library AXVLC
odl
,
uuid
(
9
ED00AFA
-
7B
CD
-
4
FFF
-
8
D48
-
7
DD4DB2C800D
),
helpstring
(
"VLC Log Message"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessage
:
IDispatch
...
...
@@ -277,9 +269,7 @@ library AXVLC
odl
,
uuid
(
15179
CD8
-
CC12
-
4242
-
A58E
-
E412217FF343
),
helpstring
(
"VLC Log iterator"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessageIterator
:
IDispatch
...
...
@@ -294,10 +284,8 @@ library AXVLC
[
odl
,
uuid
(
6
C5CE55D
-
2
D6C
-
4
AAD
-
8299
-
C62D2371F106
),
helpstring
(
"VLC Log APIs"
),
hidden
,
helpstring
(
"VLC Log Messages Collection."
),
dual
,
nonextensible
,
oleautomation
]
interface
IVLCMessages
:
IDispatch
...
...
@@ -319,9 +307,7 @@ library AXVLC
odl
,
uuid
(
8
E3BC3D9
-
62
E9
-
48
FB
-
8
A6D
-
993
F9ABC4A0A
),
helpstring
(
"VLC Log APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCLog
:
IDispatch
...
...
@@ -335,31 +321,48 @@ library AXVLC
HRESULT
verbosity
(
[
in
]
long
level
)
;
}
;
[
odl
,
uuid
(
FD37FE32
-
82B
C
-
4
A25
-
B056
-
315
F4DBB194D
),
helpstring
(
"VLC Playlist Items collection"
),
dual
,
oleautomation
]
interface
IVLCPlaylistItems
:
IDispatch
{
[
propget
,
helpstring
(
"Returns number of items in playlist."
)
]
HRESULT
count
(
[
out
,
retval
]
long
*
count
)
;
[
helpstring
(
"Remove all items from playlist."
)
]
HRESULT
clear
()
;
[
helpstring
(
"remove item from playlist."
)
]
HRESULT
remove
(
[
in
]
long
itemId
)
;
}
;
[
odl
,
uuid
(
54613049
-
40B
F
-
4035
-
9
E70
-
0
A9312C0188D
),
helpstring
(
"VLC Playlist APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCPlaylist
:
IDispatch
{
[
propget
,
helpstring
(
"Returns number of items in playlist.
"
)
]
[
hidden
,
propget
,
helpstring
(
"Returns number of items in playlist. (deprecated)
"
)
]
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
]
long
*
item
)
;
HRESULT
add
(
[
in
]
BSTR
uri
,
[
in
,
optional
]
VARIANT
name
,
[
in
,
optional
]
VARIANT
options
,
[
out
,
retval
]
long
*
item
Id
)
;
[
helpstring
(
"Play/Resume the playlist."
)
]
HRESULT
play
()
;
[
helpstring
(
"Play item in playlist."
)
]
HRESULT
playItem
(
[
in
]
long
item
)
;
HRESULT
playItem
(
[
in
]
long
item
Id
)
;
[
helpstring
(
"Play/Pause current clip."
)
]
HRESULT
togglePause
()
;
...
...
@@ -373,20 +376,21 @@ library AXVLC
[
helpstring
(
"Advance to previous item in playlist."
)
]
HRESULT
prev
()
;
[
h
elpstring
(
"Remove all items from playlist.
"
)
]
[
h
idden
,
helpstring
(
"Remove all items from playlist. (deprecated)
"
)
]
HRESULT
clear
()
;
[
h
elpstring
(
"remove item from playlist.
"
)
]
[
h
idden
,
helpstring
(
"Remove item from playlist. (deprecated)
"
)
]
HRESULT
removeItem
(
[
in
]
long
item
)
;
[
propget
,
helpstring
(
"Returns the playlist items collection object."
)
]
HRESULT
items
(
[
out
,
retval
]
IVLCPlaylistItems
**
obj
)
;
}
;
[
odl
,
uuid
(
0
AAEDF0B
-
D333
-
4B27
-
A0C6
-
BBF31413A42E
),
helpstring
(
"VLC Video APIs"
),
hidden
,
dual
,
nonextensible
,
oleautomation
]
interface
IVLCVideo
:
IDispatch
...
...
@@ -403,7 +407,7 @@ library AXVLC
HRESULT
height
(
[
out
,
retval
]
long
*
height
)
;
[
propget
,
helpstring
(
"Returns video aspect ratio."
)
]
HRESULT
aspectRatio
(
[
out
,
retval
]
BSTR
aspect
)
;
HRESULT
aspectRatio
(
[
out
,
retval
]
BSTR
*
aspect
)
;
[
propput
,
helpstring
(
"Sets video aspect ratio."
)
]
HRESULT
aspectRatio
(
[
in
]
BSTR
aspect
)
;
...
...
@@ -415,7 +419,6 @@ library AXVLC
odl
,
uuid
(
2
D719729
-
5333
-
406
C
-
BF12
-
8
DE787FD65E3
),
helpstring
(
"VLC Control"
),
hidden
,
dual
,
oleautomation
]
...
...
@@ -496,6 +499,5 @@ library AXVLC
{
[
default
]
interface
IVLCControl2
;
interface
IVLCControl
;
[
default
,
source
]
dispinterface
DVLCEvents
;
}
;
}
;
activex/axvlc.tlb
View file @
fc9b8e56
No preview for this file type
activex/axvlc_idl.c
View file @
fc9b8e56
...
...
@@ -19,6 +19,7 @@ DEFINE_GUID(IID_IVLCMessage, 0x9ed00afa, 0x7bcd, 0x4fff, 0x8d,0x48, 0x7d,0xd4,0x
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_IVLCPlaylistItems
,
0xfd37fe32
,
0x82bc
,
0x4a25
,
0xb0
,
0x56
,
0x31
,
0x5f
,
0x4d
,
0xbb
,
0x19
,
0x4d
);
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 @
fc9b8e56
...
...
@@ -1757,6 +1757,139 @@ void __RPC_STUB IVLCLog_put_verbosity_Stub(
#endif
/* __IVLCLog_INTERFACE_DEFINED__ */
#ifndef __IVLCPlaylistItems_FWD_DEFINED__
#define __IVLCPlaylistItems_FWD_DEFINED__
typedef
interface
IVLCPlaylistItems
IVLCPlaylistItems
;
#endif
/*****************************************************************************
* IVLCPlaylistItems interface
*/
#ifndef __IVLCPlaylistItems_INTERFACE_DEFINED__
#define __IVLCPlaylistItems_INTERFACE_DEFINED__
DEFINE_GUID
(
IID_IVLCPlaylistItems
,
0xfd37fe32
,
0x82bc
,
0x4a25
,
0xb0
,
0x56
,
0x31
,
0x5f
,
0x4d
,
0xbb
,
0x19
,
0x4d
);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface
IVLCPlaylistItems
:
public
IDispatch
{
virtual
HRESULT
STDMETHODCALLTYPE
get_count
(
long
*
count
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
clear
(
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
remove
(
long
itemId
)
=
0
;
};
#else
typedef
struct
IVLCPlaylistItemsVtbl
{
BEGIN_INTERFACE
/*** IUnknown methods ***/
HRESULT
(
STDMETHODCALLTYPE
*
QueryInterface
)(
IVLCPlaylistItems
*
This
,
REFIID
riid
,
void
**
ppvObject
);
ULONG
(
STDMETHODCALLTYPE
*
AddRef
)(
IVLCPlaylistItems
*
This
);
ULONG
(
STDMETHODCALLTYPE
*
Release
)(
IVLCPlaylistItems
*
This
);
/*** IDispatch methods ***/
HRESULT
(
STDMETHODCALLTYPE
*
GetTypeInfoCount
)(
IVLCPlaylistItems
*
This
,
UINT
*
pctinfo
);
HRESULT
(
STDMETHODCALLTYPE
*
GetTypeInfo
)(
IVLCPlaylistItems
*
This
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
);
HRESULT
(
STDMETHODCALLTYPE
*
GetIDsOfNames
)(
IVLCPlaylistItems
*
This
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
);
HRESULT
(
STDMETHODCALLTYPE
*
Invoke
)(
IVLCPlaylistItems
*
This
,
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
);
/*** IVLCPlaylistItems methods ***/
HRESULT
(
STDMETHODCALLTYPE
*
get_count
)(
IVLCPlaylistItems
*
This
,
long
*
count
);
HRESULT
(
STDMETHODCALLTYPE
*
clear
)(
IVLCPlaylistItems
*
This
);
HRESULT
(
STDMETHODCALLTYPE
*
remove
)(
IVLCPlaylistItems
*
This
,
long
itemId
);
END_INTERFACE
}
IVLCPlaylistItemsVtbl
;
interface
IVLCPlaylistItems
{
const
IVLCPlaylistItemsVtbl
*
lpVtbl
;
};
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IVLCPlaylistItems_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IVLCPlaylistItems_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IVLCPlaylistItems_Release(p) (p)->lpVtbl->Release(p)
/*** IDispatch methods ***/
#define IVLCPlaylistItems_GetTypeInfoCount(p,a) (p)->lpVtbl->GetTypeInfoCount(p,a)
#define IVLCPlaylistItems_GetTypeInfo(p,a,b,c) (p)->lpVtbl->GetTypeInfo(p,a,b,c)
#define IVLCPlaylistItems_GetIDsOfNames(p,a,b,c,d,e) (p)->lpVtbl->GetIDsOfNames(p,a,b,c,d,e)
#define IVLCPlaylistItems_Invoke(p,a,b,c,d,e,f,g,h) (p)->lpVtbl->Invoke(p,a,b,c,d,e,f,g,h)
/*** IVLCPlaylistItems methods ***/
#define IVLCPlaylistItems_get_count(p,a) (p)->lpVtbl->get_count(p,a)
#define IVLCPlaylistItems_clear(p) (p)->lpVtbl->clear(p)
#define IVLCPlaylistItems_remove(p,a) (p)->lpVtbl->remove(p,a)
#endif
#endif
HRESULT
CALLBACK
IVLCPlaylistItems_get_count_Proxy
(
IVLCPlaylistItems
*
This
,
long
*
count
);
void
__RPC_STUB
IVLCPlaylistItems_get_count_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCPlaylistItems_clear_Proxy
(
IVLCPlaylistItems
*
This
);
void
__RPC_STUB
IVLCPlaylistItems_clear_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCPlaylistItems_remove_Proxy
(
IVLCPlaylistItems
*
This
,
long
itemId
);
void
__RPC_STUB
IVLCPlaylistItems_remove_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
#endif
/* __IVLCPlaylistItems_INTERFACE_DEFINED__ */
/*****************************************************************************
* IVLCPlaylist interface
*/
...
...
@@ -1777,13 +1910,13 @@ interface IVLCPlaylist : public IDispatch
BSTR
uri
,
VARIANT
name
,
VARIANT
options
,
long
*
item
)
=
0
;
long
*
item
Id
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
play
(
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
playItem
(
long
item
)
=
0
;
long
item
Id
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
togglePause
(
)
=
0
;
...
...
@@ -1803,6 +1936,9 @@ interface IVLCPlaylist : public IDispatch
virtual
HRESULT
STDMETHODCALLTYPE
removeItem
(
long
item
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
get_items
(
IVLCPlaylistItems
**
obj
)
=
0
;
};
#else
typedef
struct
IVLCPlaylistVtbl
{
...
...
@@ -1864,14 +2000,14 @@ typedef struct IVLCPlaylistVtbl {
BSTR
uri
,
VARIANT
name
,
VARIANT
options
,
long
*
item
);
long
*
item
Id
);
HRESULT
(
STDMETHODCALLTYPE
*
play
)(
IVLCPlaylist
*
This
);
HRESULT
(
STDMETHODCALLTYPE
*
playItem
)(
IVLCPlaylist
*
This
,
long
item
);
long
item
Id
);
HRESULT
(
STDMETHODCALLTYPE
*
togglePause
)(
IVLCPlaylist
*
This
);
...
...
@@ -1892,6 +2028,10 @@ typedef struct IVLCPlaylistVtbl {
IVLCPlaylist
*
This
,
long
item
);
HRESULT
(
STDMETHODCALLTYPE
*
get_items
)(
IVLCPlaylist
*
This
,
IVLCPlaylistItems
**
obj
);
END_INTERFACE
}
IVLCPlaylistVtbl
;
interface
IVLCPlaylist
{
...
...
@@ -1920,6 +2060,7 @@ interface IVLCPlaylist {
#define IVLCPlaylist_prev(p) (p)->lpVtbl->prev(p)
#define IVLCPlaylist_clear(p) (p)->lpVtbl->clear(p)
#define IVLCPlaylist_removeItem(p,a) (p)->lpVtbl->removeItem(p,a)
#define IVLCPlaylist_get_items(p,a) (p)->lpVtbl->get_items(p,a)
#endif
#endif
...
...
@@ -1945,7 +2086,7 @@ HRESULT CALLBACK IVLCPlaylist_add_Proxy(
BSTR
uri
,
VARIANT
name
,
VARIANT
options
,
long
*
item
);
long
*
item
Id
);
void
__RPC_STUB
IVLCPlaylist_add_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
...
...
@@ -1960,7 +2101,7 @@ void __RPC_STUB IVLCPlaylist_play_Stub(
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCPlaylist_playItem_Proxy
(
IVLCPlaylist
*
This
,
long
item
);
long
item
Id
);
void
__RPC_STUB
IVLCPlaylist_playItem_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
...
...
@@ -2009,6 +2150,14 @@ void __RPC_STUB IVLCPlaylist_removeItem_Stub(
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCPlaylist_get_items_Proxy
(
IVLCPlaylist
*
This
,
IVLCPlaylistItems
**
obj
);
void
__RPC_STUB
IVLCPlaylist_get_items_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
#endif
/* __IVLCPlaylist_INTERFACE_DEFINED__ */
...
...
@@ -2035,7 +2184,7 @@ interface IVLCVideo : public IDispatch
long
*
height
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
get_aspectRatio
(
BSTR
aspect
)
=
0
;
BSTR
*
aspect
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
put_aspectRatio
(
BSTR
aspect
)
=
0
;
...
...
@@ -2109,7 +2258,7 @@ typedef struct IVLCVideoVtbl {
HRESULT
(
STDMETHODCALLTYPE
*
get_aspectRatio
)(
IVLCVideo
*
This
,
BSTR
aspect
);
BSTR
*
aspect
);
HRESULT
(
STDMETHODCALLTYPE
*
put_aspectRatio
)(
IVLCVideo
*
This
,
...
...
@@ -2180,7 +2329,7 @@ void __RPC_STUB IVLCVideo_get_height_Stub(
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCVideo_get_aspectRatio_Proxy
(
IVLCVideo
*
This
,
BSTR
aspect
);
BSTR
*
aspect
);
void
__RPC_STUB
IVLCVideo_get_aspectRatio_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
...
...
activex/connectioncontainer.cpp
View file @
fc9b8e56
...
...
@@ -35,7 +35,7 @@ struct VLCEnumConnectionsDereference
CONNECTDATA
operator
()(
const
map
<
DWORD
,
LPUNKNOWN
>::
iterator
&
i
)
{
CONNECTDATA
cd
;
cd
.
dwCookie
=
i
->
first
;
cd
.
pUnk
=
i
->
second
;
return
cd
;
...
...
activex/objectsafety.h
View file @
fc9b8e56
...
...
@@ -42,13 +42,13 @@ extern "C" const IID IID_IObjectSafety;
struct
IObjectSafety
:
public
IUnknown
{
virtual
STDMETHODIMP
GetInterfaceSafetyOptions
(
virtual
STDMETHODIMP
GetInterfaceSafetyOptions
(
REFIID
riid
,
DWORD
__RPC_FAR
*
pdwSupportedOptions
,
DWORD
__RPC_FAR
*
pdwEnabledOptions
)
=
0
;
virtual
STDMETHODIMP
SetInterfaceSafetyOptions
(
virtual
STDMETHODIMP
SetInterfaceSafetyOptions
(
REFIID
riid
,
DWORD
dwSupportedOptions
,
DWORD
dwOptionSetMask
...
...
@@ -83,19 +83,19 @@ public:
STDMETHODIMP_
(
ULONG
)
Release
(
void
)
{
return
_p_instance
->
pUnkOuter
->
Release
();
};
// IUnknown methods
STDMETHODIMP
GetInterfaceSafetyOptions
(
STDMETHODIMP
GetInterfaceSafetyOptions
(
REFIID
riid
,
DWORD
*
pdwSupportedOptions
,
DWORD
*
pdwEnabledOptions
);
STDMETHODIMP
SetInterfaceSafetyOptions
(
STDMETHODIMP
SetInterfaceSafetyOptions
(
REFIID
riid
,
DWORD
dwOptionSetMask
,
DWORD
dwEnabledOptions
);
private:
private:
VLCPlugin
*
_p_instance
;
};
...
...
activex/oleinplaceobject.h
View file @
fc9b8e56
...
...
@@ -35,10 +35,10 @@ public:
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IOleWindow
==
riid
)
||
(
IID_IOleInPlaceObject
==
riid
)
)
||
(
IID_IOleInPlaceObject
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
...
...
@@ -66,4 +66,3 @@ private:
};
#endif
activex/oleobject.cpp
View file @
fc9b8e56
...
...
@@ -30,7 +30,7 @@
using
namespace
std
;
VLCOleObject
::
VLCOleObject
(
VLCPlugin
*
p_instance
)
:
_p_clientsite
(
NULL
),
_p_instance
(
p_instance
)
_p_clientsite
(
NULL
),
_p_instance
(
p_instance
)
{
CreateOleAdviseHolder
(
&
_p_advise_holder
);
};
...
...
@@ -242,7 +242,7 @@ STDMETHODIMP VLCOleObject::GetClientSite(LPOLECLIENTSITE *ppClientSite)
{
if
(
NULL
==
ppClientSite
)
return
E_POINTER
;
if
(
NULL
!=
_p_clientsite
)
_p_clientsite
->
AddRef
();
...
...
@@ -295,7 +295,7 @@ STDMETHODIMP VLCOleObject::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, LPMO
{
if
(
NULL
!=
_p_clientsite
)
return
_p_clientsite
->
GetMoniker
(
dwAssign
,
dwWhichMoniker
,
ppMoniker
);
return
E_UNEXPECTED
;
};
...
...
activex/oleobject.h
View file @
fc9b8e56
...
...
@@ -37,7 +37,7 @@ public:
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IOleObject
==
riid
)
)
||
(
IID_IOleObject
==
riid
)
)
{
AddRef
();
*
ppv
=
reinterpret_cast
<
LPVOID
>
(
this
);
...
...
activex/persistpropbag.cpp
View file @
fc9b8e56
...
...
@@ -243,4 +243,3 @@ STDMETHODIMP VLCPersistPropertyBag::Save(LPPROPERTYBAG pPropBag, BOOL fClearDirt
return
S_OK
;
};
activex/persiststreaminit.cpp
View file @
fc9b8e56
...
...
@@ -48,9 +48,8 @@ public:
AxVLCVariant
(
VARIANTARG
&
v
)
{
//VariantInit(&_v);
//VariantCopy(&_v, &v);
_v
=
v
;
VariantInit
(
&
_v
);
VariantCopy
(
&
_v
,
&
v
);
};
AxVLCVariant
(
VARIANTARG
*
v
)
...
...
@@ -276,7 +275,7 @@ public:
(
*
p
.
first
).
second
=
val
.
second
;
return
S_OK
;
};
// custom methods
HRESULT
Load
(
LPSTREAM
pStm
)
...
...
@@ -292,7 +291,7 @@ public:
{
if
(
(
val
->
first
==
L"(Count)"
)
&&
(
VT_I4
==
V_VT
(
val
->
second
.
variantArg
()))
)
{
size_t
count
=
V_I4
(
val
->
second
.
variantArg
());
size_t
count
=
V_I4
(
val
->
second
.
variantArg
());
delete
val
;
while
(
count
--
)
{
...
...
@@ -551,7 +550,7 @@ STDMETHODIMP VLCPersistStreamInit::IsDirty(void)
STDMETHODIMP
VLCPersistStreamInit
::
GetSizeMax
(
ULARGE_INTEGER
*
pcbSize
)
{
pcbSize
->
HighPart
=
0UL
;
pcbSize
->
LowPart
=
4096
UL
;
// just a guess
pcbSize
->
LowPart
=
16384
UL
;
// just a guess
return
S_OK
;
};
...
...
activex/persiststreaminit.h
View file @
fc9b8e56
...
...
@@ -69,4 +69,3 @@ private:
};
#endif
activex/plugin.cpp
View file @
fc9b8e56
...
...
@@ -98,7 +98,7 @@ VLCPluginClass::VLCPluginClass(LONG *p_class_ref, HINSTANCE hInstance, REFCLSID
wClass
.
hbrBackground
=
NULL
;
wClass
.
lpszMenuName
=
NULL
;
wClass
.
lpszClassName
=
getInPlaceWndClassName
();
_inplace_wndclass_atom
=
RegisterClass
(
&
wClass
);
}
else
...
...
@@ -258,6 +258,7 @@ VLCPlugin::~VLCPlugin()
_p_pict
->
Release
();
SysFreeString
(
_bstr_mrl
);
SysFreeString
(
_bstr_baseurl
);
_p_class
->
Release
();
};
...
...
@@ -434,17 +435,17 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc)
if
(
RegOpenKeyEx
(
HKEY_LOCAL_MACHINE
,
"Software
\\
VideoLAN
\\
VLC"
,
0
,
KEY_READ
,
&
h_key
)
==
ERROR_SUCCESS
)
{
if
(
RegQueryValueEx
(
h_key
,
"InstallDir"
,
0
,
&
i_type
,
(
LPBYTE
)
p_data
,
&
i_data
)
==
ERROR_SUCCESS
)
{
if
(
i_type
==
REG_SZ
)
{
strcat
(
p_data
,
"
\\
plugins"
);
//
ppsz_argv[ppsz_argc++] = "--plugin-path";
//
ppsz_argv[ppsz_argc++] = p_data;
}
}
RegCloseKey
(
h_key
);
if
(
RegQueryValueEx
(
h_key
,
"InstallDir"
,
0
,
&
i_type
,
(
LPBYTE
)
p_data
,
&
i_data
)
==
ERROR_SUCCESS
)
{
if
(
i_type
==
REG_SZ
)
{
strcat
(
p_data
,
"
\\
plugins"
);
ppsz_argv
[
ppsz_argc
++
]
=
"--plugin-path"
;
ppsz_argv
[
ppsz_argc
++
]
=
p_data
;
}
}
RegCloseKey
(
h_key
);
}
char
p_path
[
MAX_PATH
+
1
];
...
...
@@ -496,7 +497,7 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc)
{
libvlc_audio_set_mute
(
_p_libvlc
,
TRUE
,
NULL
);
}
// initial playlist item
if
(
SysStringLen
(
_bstr_mrl
)
>
0
)
{
...
...
@@ -504,24 +505,19 @@ HRESULT VLCPlugin::getVLC(libvlc_instance_t** pp_libvlc)
if
(
SysStringLen
(
_bstr_baseurl
)
>
0
)
{
DWORD
len
=
INTERNET_MAX_URL_LENGTH
;
LPOLESTR
abs_url
=
(
LPOLESTR
)
CoTaskMemAlloc
(
sizeof
(
OLECHAR
)
*
len
);
/*
** if the MRL a relative URL, we should end up with an absolute URL
*/
LPWSTR
abs_url
=
CombineURL
(
_bstr_baseurl
,
_bstr_mrl
);
if
(
NULL
!=
abs_url
)
{
/*
** if the MRL a relative URL, we should end up with an absolute URL
*/
if
(
SUCCEEDED
(
UrlCombineW
(
_bstr_baseurl
,
_bstr_mrl
,
abs_url
,
&
len
,
URL_ESCAPE_UNSAFE
|
URL_PLUGGABLE_PROTOCOL
))
)
{
psz_mrl
=
CStrFromBSTR
(
CP_UTF8
,
abs_url
);
}
else
{
psz_mrl
=
CStrFromBSTR
(
CP_UTF8
,
_bstr_mrl
);
}
psz_mrl
=
CStrFromWSTR
(
CP_UTF8
,
abs_url
,
wcslen
(
abs_url
));
CoTaskMemFree
(
abs_url
);
}
else
{
psz_mrl
=
CStrFromBSTR
(
CP_UTF8
,
_bstr_mrl
);
}
}
else
{
...
...
@@ -648,6 +644,14 @@ HRESULT VLCPlugin::onClose(DWORD dwSaveOption)
{
libvlc_instance_t
*
p_libvlc
=
_p_libvlc
;
IVLCLog
*
p_log
;
if
(
SUCCEEDED
(
vlcControl2
->
get_log
(
&
p_log
))
)
{
// make sure the log is disabled
p_log
->
put_verbosity
(
-
1
);
p_log
->
Release
();
}
_p_libvlc
=
NULL
;
vlcDataObject
->
onClose
();
...
...
@@ -741,7 +745,7 @@ HRESULT VLCPlugin::onInPlaceDeactivate(void)
DestroyWindow
(
_inplacewnd
);
_inplacewnd
=
NULL
;
return
S_OK
;
};
...
...
@@ -984,4 +988,3 @@ void VLCPlugin::fireOnStopEvent(void)
DISPPARAMS
dispparamsNoArgs
=
{
NULL
,
NULL
,
0
,
0
};
vlcConnectionPointContainer
->
fireEvent
(
DISPID_StopEvent
,
&
dispparamsNoArgs
);
};
activex/plugin.h
View file @
fc9b8e56
...
...
@@ -162,7 +162,7 @@ public:
_p_pict
->
AddRef
();
return
_p_pict
;
};
BOOL
hasFocus
(
void
);
void
setFocus
(
BOOL
fFocus
);
...
...
@@ -268,4 +268,3 @@ private:
};
#endif
activex/provideclassinfo.cpp
View file @
fc9b8e56
...
...
@@ -57,4 +57,3 @@ STDMETHODIMP VLCProvideClassInfo::GetGUID(DWORD dwGuidKind, GUID *pGUID)
return
S_OK
;
};
activex/provideclassinfo.h
View file @
fc9b8e56
...
...
@@ -64,4 +64,3 @@ private:
};
#endif
activex/supporterrorinfo.cpp
View file @
fc9b8e56
...
...
@@ -37,6 +37,7 @@ STDMETHODIMP VLCSupportErrorInfo::InterfaceSupportsErrorInfo(REFIID riid)
||
(
riid
==
IID_IVLCMessageIterator
)
||
(
riid
==
IID_IVLCMessages
)
||
(
riid
==
IID_IVLCPlaylist
)
||
(
riid
==
IID_IVLCPlaylistItems
)
||
(
riid
==
IID_IVLCVideo
)
||
(
riid
==
IID_IVLCControl2
)
)
{
...
...
activex/utils.cpp
View file @
fc9b8e56
...
...
@@ -22,24 +22,26 @@
#include "utils.h"
#include <wchar.h>
#include <wctype.h>
/*
** conversion facilities
*/
using
namespace
std
;
char
*
CStrFrom
BSTR
(
UINT
codePage
,
BSTR
bstr
)
char
*
CStrFrom
WSTR
(
UINT
codePage
,
LPCWSTR
wstr
,
UINT
len
)
{
UINT
len
=
SysStringLen
(
bstr
);
if
(
len
>
0
)
{
size_t
mblen
=
WideCharToMultiByte
(
codePage
,
0
,
b
str
,
len
,
NULL
,
0
,
NULL
,
NULL
);
0
,
w
str
,
len
,
NULL
,
0
,
NULL
,
NULL
);
if
(
mblen
>
0
)
{
char
*
buffer
=
(
char
*
)
CoTaskMemAlloc
(
mblen
+
1
);
ZeroMemory
(
buffer
,
mblen
+
1
);
if
(
WideCharToMultiByte
(
codePage
,
0
,
b
str
,
len
,
buffer
,
mblen
,
NULL
,
NULL
)
)
if
(
WideCharToMultiByte
(
codePage
,
0
,
w
str
,
len
,
buffer
,
mblen
,
NULL
,
NULL
)
)
{
buffer
[
mblen
]
=
'\0'
;
return
buffer
;
...
...
@@ -49,6 +51,11 @@ char *CStrFromBSTR(UINT codePage, BSTR bstr)
return
NULL
;
};
char
*
CStrFromBSTR
(
UINT
codePage
,
BSTR
bstr
)
{
return
CStrFromWSTR
(
codePage
,
bstr
,
SysStringLen
(
bstr
));
};
BSTR
BSTRFromCStr
(
UINT
codePage
,
LPCSTR
s
)
{
int
wideLen
=
MultiByteToWideChar
(
codePage
,
0
,
s
,
-
1
,
NULL
,
0
);
...
...
@@ -61,7 +68,7 @@ BSTR BSTRFromCStr(UINT codePage, LPCSTR s)
ZeroMemory
(
wideStr
,
wideLen
*
sizeof
(
WCHAR
));
MultiByteToWideChar
(
codePage
,
0
,
s
,
-
1
,
wideStr
,
wideLen
);
bstr
=
SysAllocStringLen
(
wideStr
,
wideLen
);
bstr
=
SysAllocStringLen
(
wideStr
,
wideLen
-
1
);
CoTaskMemFree
(
wideStr
);
return
bstr
;
...
...
@@ -126,11 +133,11 @@ HRESULT GetObjectProperty(LPUNKNOWN object, DISPID dispID, VARIANT& v)
HDC
CreateDevDC
(
DVTARGETDEVICE
*
ptd
)
{
HDC
hdc
=
NULL
;
if
(
NULL
==
ptd
)
HDC
hdc
=
NULL
;
if
(
NULL
==
ptd
)
{
hdc
=
CreateDC
(
TEXT
(
"DISPLAY"
),
NULL
,
NULL
,
NULL
);
}
hdc
=
CreateDC
(
TEXT
(
"DISPLAY"
),
NULL
,
NULL
,
NULL
);
}
else
{
LPDEVNAMES
lpDevNames
;
...
...
@@ -156,7 +163,7 @@ HDC CreateDevDC(DVTARGETDEVICE *ptd)
hdc
=
CreateDC
(
lpszDriverName
,
lpszDeviceName
,
lpszPortName
,
lpDevMode
);
}
return
hdc
;
return
hdc
;
};
#define HIMETRIC_PER_INCH 2540
...
...
@@ -185,3 +192,155 @@ void HimetricFromDP(HDC hdc, LPPOINT pt, int count)
}
};
LPWSTR
CombineURL
(
LPCWSTR
baseUrl
,
LPCWSTR
url
)
{
if
(
NULL
!=
url
)
{
// check whether URL is already absolute
const
wchar_t
*
end
=
wcschr
(
url
,
L':'
);
if
(
(
NULL
!=
end
)
&&
(
end
!=
url
)
)
{
// validate protocol header
const
wchar_t
*
start
=
url
;
while
(
start
!=
end
)
{
wchar_t
c
=
towlower
(
*
start
);
if
(
(
c
<
L'a'
)
||
(
c
>
L'z'
)
)
// not a valid protocol header, assume relative URL
goto
relativeurl
;
++
start
;
}
/* we have a protocol header, therefore URL is absolute */
UINT
len
=
wcslen
(
url
);
wchar_t
*
href
=
(
LPWSTR
)
CoTaskMemAlloc
((
len
+
1
)
*
sizeof
(
wchar_t
));
if
(
href
)
{
memcpy
(
href
,
url
,
len
*
sizeof
(
wchar_t
));
href
[
len
]
=
L'\0'
;
}
return
href
;
}
relativeurl:
if
(
baseUrl
)
{
size_t
baseLen
=
wcslen
(
baseUrl
);
wchar_t
*
href
=
(
LPWSTR
)
CoTaskMemAlloc
((
baseLen
+
wcslen
(
url
)
+
1
)
*
sizeof
(
wchar_t
));
if
(
href
)
{
/* prepend base URL */
wcscpy
(
href
,
baseUrl
);
/*
** relative url could be empty,
** in which case return base URL
*/
if
(
L'\0'
==
*
url
)
return
href
;
/*
** locate pathname part of base URL
*/
/* skip over protocol part */
wchar_t
*
pathstart
=
wcschr
(
href
,
L':'
);
wchar_t
*
pathend
;
if
(
pathstart
)
{
if
(
L'/'
==
*
(
++
pathstart
)
)
{
if
(
L'/'
==
*
(
++
pathstart
)
)
{
++
pathstart
;
}
}
/* skip over host part */
pathstart
=
wcschr
(
pathstart
,
L'/'
);
pathend
=
href
+
baseLen
;
if
(
!
pathstart
)
{
// no path, add a / past end of url (over '\0')
pathstart
=
pathend
;
*
pathstart
=
L'/'
;
}
}
else
{
/* baseURL is just a UNIX file path */
if
(
L'/'
!=
*
href
)
{
/* baseURL is not an absolute path */
return
NULL
;
}
pathstart
=
href
;
pathend
=
href
+
baseLen
;
}
/* relative URL made of an absolute path ? */
if
(
L'/'
==
*
url
)
{
/* replace path completely */
wcscpy
(
pathstart
,
url
);
return
href
;
}
/* find last path component and replace it */
while
(
L'/'
!=
*
pathend
)
--
pathend
;
/*
** if relative url path starts with one or more './' or '../',
** factor them out of href so that we return a
** normalized URL
*/
while
(
pathend
>
pathstart
)
{
const
wchar_t
*
p
=
url
;
if
(
L'.'
!=
*
p
)
break
;
++
p
;
if
(
L'\0'
==
*
p
)
{
/* relative url is just '.' */
url
=
p
;
break
;
}
if
(
L'/'
==
*
p
)
{
/* relative url starts with './' */
url
=
++
p
;
continue
;
}
if
(
L'.'
!=
*
p
)
break
;
++
p
;
if
(
L'\0'
==
*
p
)
{
/* relative url is '..' */
}
else
{
if
(
L'/'
!=
*
p
)
break
;
/* relative url starts with '../' */
++
p
;
}
url
=
p
;
do
{
--
pathend
;
}
while
(
L'/'
!=
*
pathend
);
}
/* skip over '/' separator */
++
pathend
;
/* concatenate remaining base URL and relative URL */
wcscpy
(
pathend
,
url
);
}
return
href
;
}
}
return
NULL
;
}
activex/utils.h
View file @
fc9b8e56
...
...
@@ -28,6 +28,7 @@
#include <vector>
// utilities
extern
char
*
CStrFromWSTR
(
UINT
codePage
,
LPCWSTR
wstr
,
UINT
len
);
extern
char
*
CStrFromBSTR
(
UINT
codePage
,
BSTR
bstr
);
extern
BSTR
BSTRFromCStr
(
UINT
codePage
,
LPCSTR
s
);
...
...
@@ -41,6 +42,9 @@ extern HDC CreateDevDC(DVTARGETDEVICE *ptd);
extern
void
DPFromHimetric
(
HDC
hdc
,
LPPOINT
pt
,
int
count
);
extern
void
HimetricFromDP
(
HDC
hdc
,
LPPOINT
pt
,
int
count
);
// URL
extern
LPWSTR
CombineURL
(
LPCWSTR
baseUrl
,
LPCWSTR
url
);
/**************************************************************************************************/
/* this function object is used to dereference the iterator into a value */
...
...
activex/vlccontrol.cpp
View file @
fc9b8e56
...
...
@@ -132,7 +132,7 @@ STDMETHODIMP VLCControl::play(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
pause
(
void
)
{
int
i_vlc
;
...
...
@@ -144,7 +144,7 @@ STDMETHODIMP VLCControl::pause(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
stop
(
void
)
{
int
i_vlc
;
...
...
@@ -156,7 +156,7 @@ STDMETHODIMP VLCControl::stop(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
get_Playing
(
VARIANT_BOOL
*
isPlaying
)
{
if
(
NULL
==
isPlaying
)
...
...
@@ -176,7 +176,7 @@ STDMETHODIMP VLCControl::get_Playing(VARIANT_BOOL *isPlaying)
*
isPlaying
=
VARIANT_FALSE
;
return
result
;
};
STDMETHODIMP
VLCControl
::
get_Position
(
float
*
position
)
{
if
(
NULL
==
position
)
...
...
@@ -196,7 +196,7 @@ STDMETHODIMP VLCControl::get_Position(float *position)
*
position
=
0.0
f
;
return
result
;
};
STDMETHODIMP
VLCControl
::
put_Position
(
float
position
)
{
HRESULT
result
=
E_UNEXPECTED
;
...
...
@@ -211,7 +211,7 @@ STDMETHODIMP VLCControl::put_Position(float position)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
get_Time
(
int
*
seconds
)
{
if
(
NULL
==
seconds
)
...
...
@@ -232,14 +232,14 @@ STDMETHODIMP VLCControl::get_Time(int *seconds)
return
result
;
};
STDMETHODIMP
VLCControl
::
put_Time
(
int
seconds
)
{
_p_instance
->
setTime
(
seconds
);
return
NOERROR
;
};
STDMETHODIMP
VLCControl
::
shuttle
(
int
seconds
)
{
HRESULT
result
=
E_UNEXPECTED
;
...
...
@@ -254,7 +254,7 @@ STDMETHODIMP VLCControl::shuttle(int seconds)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
fullscreen
(
void
)
{
HRESULT
result
=
E_UNEXPECTED
;
...
...
@@ -269,7 +269,7 @@ STDMETHODIMP VLCControl::fullscreen(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
get_Length
(
int
*
seconds
)
{
if
(
NULL
==
seconds
)
...
...
@@ -289,7 +289,7 @@ STDMETHODIMP VLCControl::get_Length(int *seconds)
*
seconds
=
0
;
return
result
;
};
STDMETHODIMP
VLCControl
::
playFaster
(
void
)
{
HRESULT
result
=
E_UNEXPECTED
;
...
...
@@ -304,7 +304,7 @@ STDMETHODIMP VLCControl::playFaster(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
playSlower
(
void
)
{
HRESULT
result
=
E_UNEXPECTED
;
...
...
@@ -319,7 +319,7 @@ STDMETHODIMP VLCControl::playSlower(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
get_Volume
(
int
*
volume
)
{
if
(
NULL
==
volume
)
...
...
@@ -328,13 +328,13 @@ STDMETHODIMP VLCControl::get_Volume(int *volume)
*
volume
=
_p_instance
->
getVolume
();
return
NOERROR
;
};
STDMETHODIMP
VLCControl
::
put_Volume
(
int
volume
)
{
_p_instance
->
setVolume
(
volume
);
return
NOERROR
;
};
STDMETHODIMP
VLCControl
::
toggleMute
(
void
)
{
int
i_vlc
;
...
...
@@ -362,7 +362,7 @@ STDMETHODIMP VLCControl::setVariable(BSTR name, VARIANT value)
int
i_type
;
vlc_value_t
val
;
if
(
VLC_SUCCESS
==
VLC_VariableType
(
i_vlc
,
psz_varname
,
&
i_type
)
)
{
VARIANT
arg
;
...
...
@@ -771,7 +771,7 @@ STDMETHODIMP VLCControl::addTarget( BSTR uri, VARIANT options, enum VLCPlaylistM
}
return
hr
;
};
STDMETHODIMP
VLCControl
::
get_PlaylistIndex
(
int
*
index
)
{
if
(
NULL
==
index
)
...
...
@@ -787,7 +787,7 @@ STDMETHODIMP VLCControl::get_PlaylistIndex(int *index)
*
index
=
0
;
return
result
;
};
STDMETHODIMP
VLCControl
::
get_PlaylistCount
(
int
*
count
)
{
int
i_vlc
;
...
...
@@ -800,7 +800,7 @@ STDMETHODIMP VLCControl::get_PlaylistCount(int *count)
*
count
=
0
;
return
result
;
};
STDMETHODIMP
VLCControl
::
playlistNext
(
void
)
{
int
i_vlc
;
...
...
@@ -812,7 +812,7 @@ STDMETHODIMP VLCControl::playlistNext(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
playlistPrev
(
void
)
{
int
i_vlc
;
...
...
@@ -824,7 +824,7 @@ STDMETHODIMP VLCControl::playlistPrev(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
playlistClear
(
void
)
{
int
i_vlc
;
...
...
@@ -836,7 +836,7 @@ STDMETHODIMP VLCControl::playlistClear(void)
}
return
result
;
};
STDMETHODIMP
VLCControl
::
get_VersionInfo
(
BSTR
*
version
)
{
if
(
NULL
==
version
)
...
...
@@ -852,7 +852,7 @@ STDMETHODIMP VLCControl::get_VersionInfo(BSTR *version)
*
version
=
NULL
;
return
E_FAIL
;
};
STDMETHODIMP
VLCControl
::
get_MRL
(
BSTR
*
mrl
)
{
if
(
NULL
==
mrl
)
...
...
@@ -899,4 +899,3 @@ STDMETHODIMP VLCControl::put_AutoLoop(VARIANT_BOOL autoloop)
_p_instance
->
setAutoLoop
((
VARIANT_FALSE
!=
autoloop
)
?
TRUE
:
FALSE
);
return
S_OK
;
};
activex/vlccontrol.h
View file @
fc9b8e56
...
...
@@ -27,7 +27,6 @@
class
VLCControl
:
public
IVLCControl
{
public:
VLCControl
(
VLCPlugin
*
p_instance
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
)
{};
...
...
@@ -92,7 +91,7 @@ public:
STDMETHODIMP
put_AutoLoop
(
VARIANT_BOOL
autoloop
);
STDMETHODIMP
get_AutoPlay
(
VARIANT_BOOL
*
autoplay
);
STDMETHODIMP
put_AutoPlay
(
VARIANT_BOOL
autoplay
);
static
HRESULT
CreateTargetOptions
(
int
codePage
,
VARIANT
*
options
,
char
***
cOptions
,
int
*
cOptionCount
);
static
void
FreeTargetOptions
(
char
**
cOptions
,
int
cOptionCount
);
...
...
@@ -102,8 +101,6 @@ private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
};
#endif
#endif
activex/vlccontrol2.cpp
View file @
fc9b8e56
...
...
@@ -26,6 +26,9 @@
#include "utils.h"
#include <shlwapi.h>
#include <wininet.h>
using
namespace
std
;
VLCAudio
::~
VLCAudio
()
...
...
@@ -581,6 +584,7 @@ STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout)
VLCLog
::~
VLCLog
()
{
delete
_p_vlcmessages
;
if
(
_p_log
)
libvlc_log_close
(
_p_log
,
NULL
);
...
...
@@ -1202,8 +1206,157 @@ STDMETHODIMP VLCMessage::get_message(BSTR* message)
/*******************************************************************************/
VLCPlaylistItems
::~
VLCPlaylistItems
()
{
if
(
_p_typeinfo
)
_p_typeinfo
->
Release
();
};
HRESULT
VLCPlaylistItems
::
loadTypeInfo
(
void
)
{
HRESULT
hr
=
NOERROR
;
if
(
NULL
==
_p_typeinfo
)
{
ITypeLib
*
p_typelib
;
hr
=
_p_instance
->
getTypeLib
(
LOCALE_USER_DEFAULT
,
&
p_typelib
);
if
(
SUCCEEDED
(
hr
)
)
{
hr
=
p_typelib
->
GetTypeInfoOfGuid
(
IID_IVLCPlaylistItems
,
&
_p_typeinfo
);
if
(
FAILED
(
hr
)
)
{
_p_typeinfo
=
NULL
;
}
p_typelib
->
Release
();
}
}
return
hr
;
};
STDMETHODIMP
VLCPlaylistItems
::
GetTypeInfoCount
(
UINT
*
pctInfo
)
{
if
(
NULL
==
pctInfo
)
return
E_INVALIDARG
;
if
(
SUCCEEDED
(
loadTypeInfo
())
)
*
pctInfo
=
1
;
else
*
pctInfo
=
0
;
return
NOERROR
;
};
STDMETHODIMP
VLCPlaylistItems
::
GetTypeInfo
(
UINT
iTInfo
,
LCID
lcid
,
LPTYPEINFO
*
ppTInfo
)
{
if
(
NULL
==
ppTInfo
)
return
E_INVALIDARG
;
if
(
SUCCEEDED
(
loadTypeInfo
())
)
{
_p_typeinfo
->
AddRef
();
*
ppTInfo
=
_p_typeinfo
;
return
NOERROR
;
}
*
ppTInfo
=
NULL
;
return
E_NOTIMPL
;
};
STDMETHODIMP
VLCPlaylistItems
::
GetIDsOfNames
(
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispID
)
{
if
(
SUCCEEDED
(
loadTypeInfo
())
)
{
return
DispGetIDsOfNames
(
_p_typeinfo
,
rgszNames
,
cNames
,
rgDispID
);
}
return
E_NOTIMPL
;
};
STDMETHODIMP
VLCPlaylistItems
::
Invoke
(
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
{
if
(
SUCCEEDED
(
loadTypeInfo
())
)
{
return
DispInvoke
(
this
,
_p_typeinfo
,
dispIdMember
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
}
return
E_NOTIMPL
;
};
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
);
*
count
=
libvlc_playlist_items_count
(
p_libvlc
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylistItems
::
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
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCPlaylistItems
::
remove
(
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_delete_item
(
p_libvlc
,
item
,
&
ex
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCPlaylistItems
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
NOERROR
;
}
return
hr
;
};
/*******************************************************************************/
VLCPlaylist
::~
VLCPlaylist
()
{
delete
_p_vlcplaylistitems
;
if
(
_p_typeinfo
)
_p_typeinfo
->
Release
();
};
...
...
@@ -1344,18 +1497,44 @@ STDMETHODIMP VLCPlaylist::add(BSTR uri, VARIANT name, VARIANT options, long* ite
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
char
*
psz_uri
=
NULL
;
if
(
SysStringLen
(
_p_instance
->
getBaseURL
())
>
0
)
{
/*
** if the MRL a relative URL, we should end up with an absolute URL
*/
LPWSTR
abs_url
=
CombineURL
(
_p_instance
->
getBaseURL
(),
uri
);
if
(
NULL
!=
abs_url
)
{
psz_uri
=
CStrFromWSTR
(
CP_UTF8
,
abs_url
,
wcslen
(
abs_url
));
CoTaskMemFree
(
abs_url
);
}
else
{
psz_uri
=
CStrFromBSTR
(
CP_UTF8
,
uri
);
}
}
else
{
/*
** baseURL is empty, assume MRL is absolute
*/
psz_uri
=
CStrFromBSTR
(
CP_UTF8
,
uri
);
}
if
(
NULL
==
psz_uri
)
{
return
E_OUTOFMEMORY
;
}
int
i_options
;
char
**
ppsz_options
;
hr
=
VLCControl
::
CreateTargetOptions
(
CP_UTF8
,
&
options
,
&
ppsz_options
,
&
i_options
);
if
(
FAILED
(
hr
)
)
return
hr
;
char
*
psz_uri
=
CStrFromBSTR
(
CP_UTF8
,
uri
);
if
(
NULL
==
psz_uri
)
{
VLCControl
::
FreeTargetOptions
(
ppsz_options
,
i_options
);
return
E_OUTOFMEMORY
;
CoTaskMemFree
(
psz_uri
);
return
hr
;
}
char
*
psz_name
=
NULL
;
...
...
@@ -1566,6 +1745,20 @@ STDMETHODIMP VLCPlaylist::removeItem(long item)
return
hr
;
};
STDMETHODIMP
VLCPlaylist
::
get_items
(
IVLCPlaylistItems
**
obj
)
{
if
(
NULL
==
obj
)
return
E_POINTER
;
*
obj
=
_p_vlcplaylistitems
;
if
(
NULL
!=
_p_vlcplaylistitems
)
{
_p_vlcplaylistitems
->
AddRef
();
return
NOERROR
;
}
return
E_OUTOFMEMORY
;
};
/*******************************************************************************/
VLCVideo
::~
VLCVideo
()
...
...
@@ -1758,7 +1951,7 @@ STDMETHODIMP VLCVideo::get_height(long* height)
return
hr
;
};
STDMETHODIMP
VLCVideo
::
get_aspectRatio
(
BSTR
aspect
)
STDMETHODIMP
VLCVideo
::
get_aspectRatio
(
BSTR
*
aspect
)
{
if
(
NULL
==
aspect
)
return
E_POINTER
;
...
...
@@ -1776,17 +1969,17 @@ STDMETHODIMP VLCVideo::get_aspectRatio(BSTR aspect)
char
*
psz_aspect
=
libvlc_video_get_aspect_ratio
(
p_input
,
&
ex
);
libvlc_input_free
(
p_input
);
if
(
NULL
==
psz_aspect
)
return
E_OUTOFMEMORY
;
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
aspect
=
SysAllocStringByteLen
(
psz_aspect
,
strlen
(
psz_aspect
));
if
(
NULL
==
psz_aspect
)
return
E_OUTOFMEMORY
;
*
aspect
=
SysAllocStringByteLen
(
psz_aspect
,
strlen
(
psz_aspect
));
free
(
psz_aspect
);
psz_aspect
=
NULL
;
return
NOERROR
;
}
if
(
psz_aspect
)
free
(
psz_aspect
);
}
if
(
psz_aspect
)
free
(
psz_aspect
);
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
...
...
@@ -1826,7 +2019,7 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLC
Playlist
,
_p_instance
->
setErrorInfo
(
IID_IVLC
Video
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
...
...
activex/vlccontrol2.h
View file @
fc9b8e56
...
...
@@ -261,9 +261,9 @@ class VLCMessages : public IVLCMessages
public:
VLCMessages
(
VLCPlugin
*
p_instance
,
VLCLog
*
p_vlclog
)
:
_p_vlclog
(
p_vlclog
),
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_p_vlclog
(
p_vlclog
)
{};
_p_typeinfo
(
NULL
)
{}
virtual
~
VLCMessages
();
// IUnknown methods
...
...
@@ -316,9 +316,10 @@ public:
friend
class
VLCMessageIterator
;
VLCLog
(
VLCPlugin
*
p_instance
)
:
_p_log
(
NULL
),
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_p_
log
(
NULL
)
_p_
vlcmessages
(
NULL
)
{
_p_vlcmessages
=
new
VLCMessages
(
p_instance
,
this
);
};
...
...
@@ -367,11 +368,63 @@ private:
VLCMessages
*
_p_vlcmessages
;
};
class
VLCPlaylistItems
:
public
IVLCPlaylistItems
{
public:
VLCPlaylistItems
(
VLCPlugin
*
p_instance
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
)
{};
virtual
~
VLCPlaylistItems
();
// IUnknown methods
STDMETHODIMP
QueryInterface
(
REFIID
riid
,
void
**
ppv
)
{
if
(
NULL
==
ppv
)
return
E_POINTER
;
if
(
(
IID_IUnknown
==
riid
)
||
(
IID_IDispatch
==
riid
)
||
(
IID_IVLCPlaylistItems
==
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
*
);
// IVLCPlaylistItems methods
STDMETHODIMP
get_count
(
long
*
);
STDMETHODIMP
clear
();
STDMETHODIMP
remove
(
long
);
protected:
HRESULT
loadTypeInfo
();
private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
};
class
VLCPlaylist
:
public
IVLCPlaylist
{
public:
VLCPlaylist
(
VLCPlugin
*
p_instance
)
:
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
)
{};
_p_instance
(
p_instance
),
_p_typeinfo
(
NULL
),
_p_vlcplaylistitems
(
NULL
)
{
_p_vlcplaylistitems
=
new
VLCPlaylistItems
(
p_instance
);
};
virtual
~
VLCPlaylist
();
// IUnknown methods
...
...
@@ -412,6 +465,7 @@ public:
STDMETHODIMP
prev
();
STDMETHODIMP
clear
();
STDMETHODIMP
removeItem
(
long
);
STDMETHODIMP
get_items
(
IVLCPlaylistItems
**
);
protected:
HRESULT
loadTypeInfo
();
...
...
@@ -420,6 +474,7 @@ private:
VLCPlugin
*
_p_instance
;
ITypeInfo
*
_p_typeinfo
;
VLCPlaylistItems
*
_p_vlcplaylistitems
;
};
class
VLCVideo
:
public
IVLCVideo
...
...
@@ -460,7 +515,7 @@ public:
STDMETHODIMP
put_fullscreen
(
VARIANT_BOOL
);
STDMETHODIMP
get_width
(
long
*
);
STDMETHODIMP
get_height
(
long
*
);
STDMETHODIMP
get_aspectRatio
(
BSTR
);
STDMETHODIMP
get_aspectRatio
(
BSTR
*
);
STDMETHODIMP
put_aspectRatio
(
BSTR
);
STDMETHODIMP
toggleFullscreen
();
...
...
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