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
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