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
542d62dd
Commit
542d62dd
authored
Jan 08, 2007
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- added 'vlc.video.crop' property for ActiveX/Mozilla
parent
a2d6f90b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
231 additions
and
8 deletions
+231
-8
activex/axvlc.idl
activex/axvlc.idl
+8
-0
activex/axvlc.tlb
activex/axvlc.tlb
+0
-0
activex/axvlc_idl.c
activex/axvlc_idl.c
+1
-1
activex/axvlc_idl.h
activex/axvlc_idl.h
+49
-1
activex/vlccontrol2.cpp
activex/vlccontrol2.cpp
+119
-2
activex/vlccontrol2.h
activex/vlccontrol2.h
+3
-0
mozilla/control/npolibvlc.cpp
mozilla/control/npolibvlc.cpp
+51
-4
No files found.
activex/axvlc.idl
View file @
542d62dd
...
...
@@ -422,8 +422,16 @@ library AXVLC
[
propput
,
helpstring
(
"Sets video aspect ratio."
)
]
HRESULT
aspectRatio
(
[
in
]
BSTR
aspect
)
;
[
propget
,
helpstring
(
"Returns crop filter geometry."
)
]
HRESULT
crop
(
[
out
,
retval
]
BSTR
*
geometry
)
;
[
propput
,
helpstring
(
"Sets crop filter geometry."
)
]
HRESULT
crop
(
[
in
]
BSTR
geometry
)
;
[
helpstring
(
"toggle fullscreen/windowed state."
)
]
HRESULT
toggleFullscreen
()
;
[
helpstring
(
"take video snapshot and save into into filePath."
)
]
HRESULT
takeSnapshot
(
BSTR
filePath
)
;
}
;
[
...
...
activex/axvlc.tlb
View file @
542d62dd
No preview for this file type
activex/axvlc_idl.c
View file @
542d62dd
/*** Autogenerated by WIDL 0.9.2
8
from axvlc.idl - Do not edit ***/
/*** Autogenerated by WIDL 0.9.2
7
from axvlc.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
...
...
activex/axvlc_idl.h
View file @
542d62dd
/*** Autogenerated by WIDL 0.9.2
8
from axvlc.idl - Do not edit ***/
/*** Autogenerated by WIDL 0.9.2
7
from axvlc.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
...
...
@@ -2253,9 +2253,18 @@ interface IVLCVideo : public IDispatch
virtual
HRESULT
STDMETHODCALLTYPE
put_aspectRatio
(
BSTR
aspect
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
get_crop
(
BSTR
*
geometry
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
put_crop
(
BSTR
geometry
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
toggleFullscreen
(
)
=
0
;
virtual
HRESULT
STDMETHODCALLTYPE
takeSnapshot
(
BSTR
filePath
)
=
0
;
};
#else
typedef
struct
IVLCVideoVtbl
{
...
...
@@ -2328,9 +2337,21 @@ typedef struct IVLCVideoVtbl {
IVLCVideo
*
This
,
BSTR
aspect
);
HRESULT
(
STDMETHODCALLTYPE
*
get_crop
)(
IVLCVideo
*
This
,
BSTR
*
geometry
);
HRESULT
(
STDMETHODCALLTYPE
*
put_crop
)(
IVLCVideo
*
This
,
BSTR
geometry
);
HRESULT
(
STDMETHODCALLTYPE
*
toggleFullscreen
)(
IVLCVideo
*
This
);
HRESULT
(
STDMETHODCALLTYPE
*
takeSnapshot
)(
IVLCVideo
*
This
,
BSTR
filePath
);
END_INTERFACE
}
IVLCVideoVtbl
;
interface
IVLCVideo
{
...
...
@@ -2354,7 +2375,10 @@ interface IVLCVideo {
#define IVLCVideo_get_height(p,a) (p)->lpVtbl->get_height(p,a)
#define IVLCVideo_get_aspectRatio(p,a) (p)->lpVtbl->get_aspectRatio(p,a)
#define IVLCVideo_put_aspectRatio(p,a) (p)->lpVtbl->put_aspectRatio(p,a)
#define IVLCVideo_get_crop(p,a) (p)->lpVtbl->get_crop(p,a)
#define IVLCVideo_put_crop(p,a) (p)->lpVtbl->put_crop(p,a)
#define IVLCVideo_toggleFullscreen(p) (p)->lpVtbl->toggleFullscreen(p)
#define IVLCVideo_takeSnapshot(p,a) (p)->lpVtbl->takeSnapshot(p,a)
#endif
#endif
...
...
@@ -2407,6 +2431,22 @@ void __RPC_STUB IVLCVideo_put_aspectRatio_Stub(
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCVideo_get_crop_Proxy
(
IVLCVideo
*
This
,
BSTR
*
geometry
);
void
__RPC_STUB
IVLCVideo_get_crop_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCVideo_put_crop_Proxy
(
IVLCVideo
*
This
,
BSTR
geometry
);
void
__RPC_STUB
IVLCVideo_put_crop_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCVideo_toggleFullscreen_Proxy
(
IVLCVideo
*
This
);
void
__RPC_STUB
IVLCVideo_toggleFullscreen_Stub
(
...
...
@@ -2414,6 +2454,14 @@ void __RPC_STUB IVLCVideo_toggleFullscreen_Stub(
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
HRESULT
CALLBACK
IVLCVideo_takeSnapshot_Proxy
(
IVLCVideo
*
This
,
BSTR
filePath
);
void
__RPC_STUB
IVLCVideo_takeSnapshot_Stub
(
IRpcStubBuffer
*
This
,
IRpcChannelBuffer
*
pRpcChannelBuffer
,
PRPC_MESSAGE
pRpcMessage
,
DWORD
*
pdwStubPhase
);
#endif
/* __IVLCVideo_INTERFACE_DEFINED__ */
...
...
activex/vlccontrol2.cpp
View file @
542d62dd
...
...
@@ -2098,14 +2098,13 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
char
*
psz_aspect
=
NULL
;
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_input_t
*
p_input
=
libvlc_playlist_get_input
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
psz_aspect
=
CStrFromBSTR
(
CP_UTF8
,
aspect
);
char
*
psz_aspect
=
CStrFromBSTR
(
CP_UTF8
,
aspect
);
if
(
NULL
==
psz_aspect
)
{
return
E_OUTOFMEMORY
;
...
...
@@ -2128,6 +2127,124 @@ STDMETHODIMP VLCVideo::put_aspectRatio(BSTR aspect)
return
hr
;
};
STDMETHODIMP
VLCVideo
::
get_crop
(
BSTR
*
geometry
)
{
if
(
NULL
==
geometry
)
return
E_POINTER
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_input_t
*
p_input
=
libvlc_playlist_get_input
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_geometry
=
libvlc_video_get_crop_geometry
(
p_input
,
&
ex
);
libvlc_input_free
(
p_input
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
if
(
NULL
==
psz_geometry
)
return
E_OUTOFMEMORY
;
*
geometry
=
BSTRFromCStr
(
CP_UTF8
,
psz_geometry
);
free
(
psz_geometry
);
psz_geometry
=
NULL
;
return
(
NULL
==
geometry
)
?
E_OUTOFMEMORY
:
NOERROR
;
}
if
(
psz_geometry
)
free
(
psz_geometry
);
psz_geometry
=
NULL
;
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
hr
;
};
STDMETHODIMP
VLCVideo
::
put_crop
(
BSTR
geometry
)
{
if
(
NULL
==
geometry
)
return
E_POINTER
;
if
(
0
==
SysStringLen
(
geometry
)
)
return
E_INVALIDARG
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_input_t
*
p_input
=
libvlc_playlist_get_input
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_geometry
=
CStrFromBSTR
(
CP_UTF8
,
geometry
);
if
(
NULL
==
psz_geometry
)
{
return
E_OUTOFMEMORY
;
}
libvlc_video_set_crop_geometry
(
p_input
,
psz_geometry
,
&
ex
);
CoTaskMemFree
(
psz_geometry
);
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
}
return
NOERROR
;
}
return
hr
;
};
STDMETHODIMP
VLCVideo
::
takeSnapshot
(
BSTR
filePath
)
{
if
(
NULL
==
filePath
)
return
E_POINTER
;
if
(
0
==
SysStringLen
(
filePath
)
)
return
E_INVALIDARG
;
libvlc_instance_t
*
p_libvlc
;
HRESULT
hr
=
_p_instance
->
getVLC
(
&
p_libvlc
);
if
(
SUCCEEDED
(
hr
)
)
{
libvlc_exception_t
ex
;
libvlc_exception_init
(
&
ex
);
libvlc_input_t
*
p_input
=
libvlc_playlist_get_input
(
p_libvlc
,
&
ex
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
char
*
psz_filepath
=
CStrFromBSTR
(
CP_UTF8
,
filePath
);
if
(
NULL
==
psz_filepath
)
{
return
E_OUTOFMEMORY
;
}
/* TODO: check file security */
libvlc_video_take_snapshot
(
p_input
,
psz_filepath
,
&
ex
);
libvlc_input_free
(
p_input
);
if
(
!
libvlc_exception_raised
(
&
ex
)
)
{
return
NOERROR
;
}
}
_p_instance
->
setErrorInfo
(
IID_IVLCVideo
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
E_FAIL
;
}
return
hr
;
};
STDMETHODIMP
VLCVideo
::
toggleFullscreen
()
{
libvlc_instance_t
*
p_libvlc
;
...
...
activex/vlccontrol2.h
View file @
542d62dd
...
...
@@ -522,6 +522,9 @@ public:
STDMETHODIMP
get_height
(
long
*
);
STDMETHODIMP
get_aspectRatio
(
BSTR
*
);
STDMETHODIMP
put_aspectRatio
(
BSTR
);
STDMETHODIMP
get_crop
(
BSTR
*
);
STDMETHODIMP
put_crop
(
BSTR
);
STDMETHODIMP
takeSnapshot
(
BSTR
);
STDMETHODIMP
toggleFullscreen
();
protected:
...
...
mozilla/control/npolibvlc.cpp
View file @
542d62dd
...
...
@@ -1761,7 +1761,8 @@ const NPUTF8 * const LibvlcVideoNPObject::propertyNames[] =
"fullscreen"
,
"height"
,
"width"
,
"aspectRatio"
"aspectRatio"
,
"crop"
};
enum
LibvlcVideoNPObjectPropertyIds
...
...
@@ -1769,7 +1770,8 @@ enum LibvlcVideoNPObjectPropertyIds
ID_video_fullscreen
,
ID_video_height
,
ID_video_width
,
ID_video_aspectratio
ID_video_aspectratio
,
ID_video_crop
};
const
int
LibvlcVideoNPObject
::
propertyCount
=
sizeof
(
LibvlcVideoNPObject
::
propertyNames
)
/
sizeof
(
NPUTF8
*
);
...
...
@@ -1847,6 +1849,22 @@ RuntimeNPObject::InvokeResult LibvlcVideoNPObject::getProperty(int index, NPVari
STRINGZ_TO_NPVARIANT
(
psz_aspect
,
result
);
return
INVOKERESULT_NO_ERROR
;
}
case
ID_video_crop
:
{
NPUTF8
*
psz_geometry
=
libvlc_video_get_crop_geometry
(
p_input
,
&
ex
);
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
NPN_SetException
(
this
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
INVOKERESULT_GENERIC_ERROR
;
}
if
(
!
psz_geometry
)
return
INVOKERESULT_GENERIC_ERROR
;
STRINGZ_TO_NPVARIANT
(
psz_geometry
,
result
);
return
INVOKERESULT_NO_ERROR
;
}
}
libvlc_input_free
(
p_input
);
}
...
...
@@ -1882,6 +1900,7 @@ RuntimeNPObject::InvokeResult LibvlcVideoNPObject::setProperty(int index, const
int
val
=
NPVARIANT_TO_BOOLEAN
(
value
);
libvlc_set_fullscreen
(
p_input
,
val
,
&
ex
);
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
NPN_SetException
(
this
,
libvlc_exception_get_message
(
&
ex
));
...
...
@@ -1908,10 +1927,38 @@ RuntimeNPObject::InvokeResult LibvlcVideoNPObject::setProperty(int index, const
}
libvlc_video_set_aspect_ratio
(
p_input
,
psz_aspect
,
&
ex
);
if
(
psz_aspect
)
free
(
psz_aspect
);
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
NPN_SetException
(
this
,
libvlc_exception_get_message
(
&
ex
));
libvlc_exception_clear
(
&
ex
);
return
INVOKERESULT_GENERIC_ERROR
;
}
return
INVOKERESULT_NO_ERROR
;
}
case
ID_video_crop
:
{
char
*
psz_geometry
=
NULL
;
if
(
!
NPVARIANT_IS_STRING
(
value
)
)
{
libvlc_input_free
(
p_input
);
return
INVOKERESULT_INVALID_VALUE
;
}
psz_geometry
=
stringValue
(
NPVARIANT_TO_STRING
(
value
));
if
(
!
psz_geometry
)
{
libvlc_input_free
(
p_input
);
return
INVOKERESULT_GENERIC_ERROR
;
}
libvlc_video_set_crop_geometry
(
p_input
,
psz_geometry
,
&
ex
);
free
(
psz_geometry
);
libvlc_input_free
(
p_input
);
if
(
libvlc_exception_raised
(
&
ex
)
)
{
NPN_SetException
(
this
,
libvlc_exception_get_message
(
&
ex
));
...
...
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