Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
79bed99d
Kaydet (Commit)
79bed99d
authored
Eyl 07, 2013
tarafından
Minh Ngo
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Refactoring vlc module
Change-Id: If5454d2ce70eee40cf42205a5dcbcfef93f0abe8
üst
6b1b5b7c
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
86 additions
and
67 deletions
+86
-67
vlcframegrabber.cxx
avmedia/source/vlc/vlcframegrabber.cxx
+5
-3
vlcframegrabber.hxx
avmedia/source/vlc/vlcframegrabber.hxx
+2
-2
vlcmanager.cxx
avmedia/source/vlc/vlcmanager.cxx
+25
-15
vlcmanager.hxx
avmedia/source/vlc/vlcmanager.hxx
+5
-5
vlcplayer.cxx
avmedia/source/vlc/vlcplayer.cxx
+10
-19
vlcplayer.hxx
avmedia/source/vlc/vlcplayer.hxx
+14
-9
EventManager.cxx
avmedia/source/vlc/wrapper/EventManager.cxx
+4
-7
EventManager.hxx
avmedia/source/vlc/wrapper/EventManager.hxx
+2
-3
Player.cxx
avmedia/source/vlc/wrapper/Player.cxx
+3
-3
Player.hxx
avmedia/source/vlc/wrapper/Player.hxx
+1
-1
Wrapper.hxx
avmedia/source/vlc/wrapper/Wrapper.hxx
+15
-0
No files found.
avmedia/source/vlc/vlcframegrabber.cxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -24,7 +24,7 @@ const ::rtl::OUString AVMEDIA_VLC_GRABBER_IMPLEMENTATIONNAME = "com.sun.star.com
const
::
rtl
::
OUString
AVMEDIA_VLC_GRABBER_SERVICENAME
=
"com.sun.star.media.VLCFrameGrabber_VLC"
;
const
int
MSEC_IN_SEC
=
1000
;
VLCFrameGrabber
::
VLCFrameGrabber
(
VLC
::
Player
&
player
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
,
const
rtl
::
OUString
&
url
)
VLCFrameGrabber
::
VLCFrameGrabber
(
VLC
::
Player
&
player
,
VLC
::
EventHandler
&
eh
,
const
rtl
::
OUString
&
url
)
:
FrameGrabber_BASE
()
,
mPlayer
(
player
)
,
mUrl
(
url
)
...
...
@@ -45,7 +45,8 @@ VLCFrameGrabber::VLCFrameGrabber( VLC::Player& player, boost::shared_ptr<VLC::Ev
if
(
!
mPlayer
.
play
()
)
{
std
::
cerr
<<
"Couldn't play"
<<
std
::
endl
;
std
::
cerr
<<
"Couldn't play when trying to grab frame"
<<
std
::
endl
;
return
::
uno
::
Reference
<
css
::
graphic
::
XGraphic
>
();
}
mPlayer
.
setTime
(
(
fMediaTime
>
0
?
fMediaTime
:
0
)
*
MSEC_IN_SEC
);
...
...
@@ -63,7 +64,8 @@ VLCFrameGrabber::VLCFrameGrabber( VLC::Player& player, boost::shared_ptr<VLC::Ev
return
::
uno
::
Reference
<
css
::
graphic
::
XGraphic
>
();
}
mPlayer
.
takeSnapshot
(
fileName
);
std
::
cout
<<
"Take snapshot "
<<
fileName
<<
std
::
endl
;
std
::
cout
<<
mPlayer
.
takeSnapshot
(
fileName
)
<<
std
::
endl
;
mPlayer
.
setMute
(
false
);
mPlayer
.
stop
();
...
...
avmedia/source/vlc/vlcframegrabber.hxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -41,9 +41,9 @@ class VLCFrameGrabber : public FrameGrabber_BASE
{
VLC
::
Player
&
mPlayer
;
const
rtl
::
OUString
&
mUrl
;
boost
::
shared_ptr
<
VLC
::
EventHandler
>
mEventHandler
;
VLC
::
EventHandler
&
mEventHandler
;
public
:
VLCFrameGrabber
(
VLC
::
Player
&
player
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
,
const
rtl
::
OUString
&
url
);
VLCFrameGrabber
(
VLC
::
Player
&
player
,
VLC
::
EventHandler
&
eh
,
const
rtl
::
OUString
&
url
);
::
com
::
sun
::
star
::
uno
::
Reference
<
css
::
graphic
::
XGraphic
>
SAL_CALL
grabFrame
(
double
fMediaTime
)
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
...
...
avmedia/source/vlc/vlcmanager.cxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -13,20 +13,32 @@ using namespace ::com::sun::star;
namespace
avmedia
{
namespace
vlc
{
const
rtl
::
OUString
VLC_IMPLEMENTATION_NAME
=
"com.sun.star.comp.avmedia.Manager_VLC"
;
const
::
rtl
::
OUString
VLC_SERVICENAME
=
"com.sun.star.media.Manager_VLC"
;
namespace
{
const
rtl
::
OUString
VLC_IMPLEMENTATION_NAME
=
"com.sun.star.comp.avmedia.Manager_VLC"
;
const
::
rtl
::
OUString
VLC_SERVICENAME
=
"com.sun.star.media.Manager_VLC"
;
const
char
*
const
VLC_ARGS
[]
=
{
"-Vdummy"
,
"--snapshot-format=png"
,
"--ffmpeg-threads"
,
"--verbose=-1"
};
}
Manager
::
Manager
(
const
uno
::
Reference
<
lang
::
XMultiServiceFactory
>&
rxMgr
)
:
mEventHandler
(
new
VLC
::
EventHandler
(
"EventHandler"
)
)
:
mEventHandler
()
,
mxMgr
(
rxMgr
)
{
using
namespace
VLC
;
static
bool
success
=
Instance
::
LoadSymbols
()
&&
EventManager
::
LoadSymbols
()
&&
Media
::
LoadSymbols
()
&&
Player
::
LoadSymbols
()
&&
Common
::
LoadSymbols
();
&&
Media
::
LoadSymbols
()
&&
Player
::
LoadSymbols
()
&&
Common
::
LoadSymbols
();
m_is_vlc_found
=
success
;
if
(
m_is_vlc_found
)
{
mInstance
.
reset
(
new
Instance
(
sizeof
(
VLC_ARGS
)
/
sizeof
(
VLC_ARGS
[
0
]
),
VLC_ARGS
));
//Check VLC version
std
::
vector
<
std
::
string
>
verComponents
;
const
std
::
string
str
(
Common
::
Version
());
...
...
@@ -37,20 +49,20 @@ Manager::Manager( const uno::Reference< lang::XMultiServiceFactory >& rxMgr )
boost
::
is_any_of
(
". "
));
if
(
verComponents
.
size
()
<
3
||
boost
::
lexical_cast
<
int
>
(
verComponents
[
0
])
<
2
||
(
boost
::
lexical_cast
<
int
>
(
verComponents
[
1
])
==
0
&&
boost
::
lexical_cast
<
int
>
(
verComponents
[
2
])
<
8
))
||
(
boost
::
lexical_cast
<
int
>
(
verComponents
[
1
])
==
0
&&
boost
::
lexical_cast
<
int
>
(
verComponents
[
2
])
<
8
))
{
m_is_vlc_found
=
false
;
}
}
std
::
cout
<<
"T"
<<
std
::
endl
;
//if (m_is_vlc_found)
// mEventHandler->launch();
std
::
cout
<<
"T"
<<
std
::
endl
;
if
(
m_is_vlc_found
)
mEventHandler
.
create
();
}
Manager
::~
Manager
()
{
mEventHandler
.
stop
();
}
uno
::
Reference
<
media
::
XPlayer
>
SAL_CALL
Manager
::
createPlayer
(
const
rtl
::
OUString
&
rURL
)
...
...
@@ -59,12 +71,10 @@ uno::Reference< media::XPlayer > SAL_CALL Manager::createPlayer( const rtl::OUSt
if
(
!
m_is_vlc_found
)
return
uno
::
Reference
<
media
::
XPlayer
>
();
if
(
!
rURL
.
isEmpty
()
||
(
mPlayer
.
is
()
&&
dynamic_cast
<
VLCPlayer
*>
(
mPlayer
.
get
()
)
->
url
()
!=
rURL
))
{
VLCPlayer
*
pPlayer
(
new
VLCPlayer
(
rURL
,
mEventHandler
/*, mxMgr */
)
);
mPlayer
=
uno
::
Reference
<
media
::
XPlayer
>
(
pPlayer
);
}
std
::
cout
<<
"A"
<<
std
::
endl
;
VLCPlayer
*
pPlayer
(
new
VLCPlayer
(
rURL
,
*
mInstance
,
mEventHandler
/*, mxMgr */
)
);
mPlayer
=
uno
::
Reference
<
media
::
XPlayer
>
(
pPlayer
);
return
mPlayer
;
}
...
...
avmedia/source/vlc/vlcmanager.hxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -19,11 +19,10 @@
#ifndef _VLCMANAGER_HXX
#define _VLCMANAGER_HXX
#include <boost/shared_ptr.hpp>
#include <boost/scoped_ptr.hpp>
#include <com/sun/star/media/XManager.hpp>
#include "vlccommon.hxx"
#include "com/sun/star/media/XManager.hpp"
#include "wrapper/EventHandler.hxx"
#include "wrapper/Wrapper.hxx"
namespace
avmedia
{
namespace
vlc
{
...
...
@@ -31,7 +30,8 @@ namespace vlc {
class
Manager
:
public
::
cppu
::
WeakImplHelper2
<
::
com
::
sun
::
star
::
media
::
XManager
,
::
com
::
sun
::
star
::
lang
::
XServiceInfo
>
{
boost
::
shared_ptr
<
VLC
::
EventHandler
>
mEventHandler
;
boost
::
scoped_ptr
<
VLC
::
Instance
>
mInstance
;
VLC
::
EventHandler
mEventHandler
;
public
:
Manager
(
const
::
com
::
sun
::
star
::
uno
::
Reference
<
::
com
::
sun
::
star
::
lang
::
XMultiServiceFactory
>&
rxMgr
);
~
Manager
();
...
...
avmedia/source/vlc/vlcplayer.cxx
Dosyayı görüntüle @
79bed99d
#include <iostream>
#include <boost/bind.hpp>
#include <vcl/syschild.hxx>
#include <vcl/sysdata.hxx>
...
...
@@ -18,34 +19,24 @@ namespace
const
::
rtl
::
OUString
AVMEDIA_VLC_PLAYER_SERVICENAME
=
"com.sun.star.media.Player_VLC"
;
const
int
MS_IN_SEC
=
1000
;
// Millisec in sec
const
char
*
const
VLC_ARGS
[]
=
{
"-Vdummy"
,
"--snapshot-format=png"
,
"--ffmpeg-threads"
,
"--verbose=2"
};
}
VLCPlayer
::
VLCPlayer
(
const
rtl
::
OUString
&
iurl
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
)
:
VLC_Base
(
m_aMutex
)
VLCPlayer
::
VLCPlayer
(
const
rtl
::
OUString
&
url
,
VLC
::
Instance
&
instance
,
VLC
::
EventHandler
&
eh
)
:
VLC_Base
(
m_aMutex
)
,
mInstance
(
instance
)
,
mEventHandler
(
eh
)
,
mInstance
(
sizeof
(
VLC_ARGS
)
/
sizeof
(
VLC_ARGS
[
0
]
),
VLC_ARGS
)
,
mMedia
(
iurl
,
mInstance
)
,
mMedia
(
url
,
mInstance
)
,
mPlayer
(
mMedia
)
,
mEventManager
(
mPlayer
,
mEventHandler
)
,
mUrl
(
i
url
)
,
mUrl
(
url
)
,
mPlaybackLoop
(
false
)
{
mPlayer
.
setMouseHandling
(
false
);
}
const
rtl
::
OUString
&
VLCPlayer
::
url
()
const
{
return
mUrl
;
mPlayer
.
setMouseHandling
(
false
);
}
void
SAL_CALL
VLCPlayer
::
start
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
)
void
SAL_CALL
VLCPlayer
::
start
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
)
{
::
osl
::
MutexGuard
aGuard
(
m_aMutex
);
mPlayer
.
play
();
...
...
avmedia/source/vlc/vlcplayer.hxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -42,17 +42,18 @@ typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::media::XPlayer,
class
VLCPlayer
:
public
::
cppu
::
BaseMutex
,
public
VLC_Base
{
boost
::
shared_ptr
<
VLC
::
EventHandler
>
mEventHandler
;
VLC
::
Instance
mInstance
;
VLC
::
Instance
&
mInstance
;
VLC
::
EventHandler
&
mEventHandler
;
VLC
::
Media
mMedia
;
VLC
::
Player
mPlayer
;
VLC
::
EventManager
mEventManager
;
const
rtl
::
OUString
mUrl
;
bool
mPlaybackLoop
;
public
:
VLCPlayer
(
const
rtl
::
OUString
&
iurl
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
);
const
rtl
::
OUString
&
url
()
const
;
VLCPlayer
(
const
rtl
::
OUString
&
url
,
VLC
::
Instance
&
instance
,
VLC
::
EventHandler
&
eh
)
;
void
SAL_CALL
start
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
void
SAL_CALL
stop
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
...
...
@@ -70,11 +71,15 @@ public:
css
::
awt
::
Size
SAL_CALL
getPreferredPlayerWindowSize
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
::
com
::
sun
::
star
::
uno
::
Reference
<
css
::
media
::
XPlayerWindow
>
SAL_CALL
createPlayerWindow
(
const
::
com
::
sun
::
star
::
uno
::
Sequence
<
::
com
::
sun
::
star
::
uno
::
Any
>&
aArguments
)
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
::
com
::
sun
::
star
::
uno
::
Reference
<
css
::
media
::
XFrameGrabber
>
SAL_CALL
createFrameGrabber
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
::
com
::
sun
::
star
::
uno
::
Reference
<
css
::
media
::
XFrameGrabber
>
SAL_CALL
createFrameGrabber
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
::
rtl
::
OUString
SAL_CALL
getImplementationName
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);;
::
sal_Bool
SAL_CALL
supportsService
(
const
::
rtl
::
OUString
&
serviceName
)
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);;
::
com
::
sun
::
star
::
uno
::
Sequence
<
::
rtl
::
OUString
>
SAL_CALL
getSupportedServiceNames
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);;
::
rtl
::
OUString
SAL_CALL
getImplementationName
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
::
sal_Bool
SAL_CALL
supportsService
(
const
::
rtl
::
OUString
&
serviceName
)
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);;
::
com
::
sun
::
star
::
uno
::
Sequence
<
::
rtl
::
OUString
>
SAL_CALL
getSupportedServiceNames
()
throw
(
::
com
::
sun
::
star
::
uno
::
RuntimeException
);;
private
:
void
replay
();
...
...
avmedia/source/vlc/wrapper/EventManager.cxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -30,13 +30,14 @@ namespace VLC
void
EventManager
::
Handler
(
const
libvlc_event_t
*
event
,
void
*
pData
)
{
EventManager
*
instance
=
static_cast
<
EventManager
*>
(
pData
);
std
::
cout
<<
"HANDLER"
<<
std
::
endl
;
switch
(
event
->
type
)
{
case
libvlc_MediaPlayerPaused
:
instance
->
mEventHandler
->
mCallbackQueue
.
push
(
instance
->
mOnPaused
);
instance
->
mEventHandler
.
mCallbackQueue
.
push
(
instance
->
mOnPaused
);
break
;
case
libvlc_MediaPlayerEndReached
:
instance
->
mEventHandler
->
mCallbackQueue
.
push
(
instance
->
mOnEndReached
);
instance
->
mEventHandler
.
mCallbackQueue
.
push
(
instance
->
mOnEndReached
);
break
;
}
}
...
...
@@ -53,17 +54,13 @@ bool EventManager::LoadSymbols()
return
InitApiMap
(
VLC_EVENT_MANAGER_API
);
}
EventManager
::
EventManager
(
VLC
::
Player
&
player
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
)
EventManager
::
EventManager
(
VLC
::
Player
&
player
,
VLC
::
EventHandler
&
eh
)
:
mEventHandler
(
eh
)
,
mManager
(
libvlc_media_player_event_manager
(
player
)
)
{
}
EventManager
::~
EventManager
()
{
}
void
EventManager
::
registerSignal
(
int
signal
,
const
Callback
&
callback
)
{
if
(
callback
.
empty
()
)
...
...
avmedia/source/vlc/wrapper/EventManager.hxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -28,14 +28,13 @@ namespace VLC
static
bool
LoadSymbols
();
typedef
boost
::
function
<
void
()
>
Callback
;
EventManager
(
VLC
::
Player
&
player
,
boost
::
shared_ptr
<
VLC
::
EventHandler
>
eh
);
virtual
~
EventManager
();
EventManager
(
VLC
::
Player
&
player
,
VLC
::
EventHandler
&
eh
);
void
onPaused
(
const
Callback
&
callback
=
Callback
()
);
void
onEndReached
(
const
Callback
&
callback
=
Callback
()
);
private
:
boost
::
shared_ptr
<
VLC
::
EventHandler
>
mEventHandler
;
VLC
::
EventHandler
&
mEventHandler
;
typedef
boost
::
function
<
void
()
>
TCallback
;
libvlc_event_manager_t
*
mManager
;
TCallback
mOnPaused
;
...
...
avmedia/source/vlc/wrapper/Player.cxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -115,7 +115,7 @@ namespace VLC
bool
Player
::
play
()
{
return
libvlc_media_player_play
(
mPlayer
);
return
libvlc_media_player_play
(
mPlayer
)
==
0
;
}
void
Player
::
pause
()
...
...
@@ -190,11 +190,11 @@ namespace VLC
#endif
}
void
Player
::
takeSnapshot
(
const
rtl
::
OUString
&
file
)
bool
Player
::
takeSnapshot
(
const
rtl
::
OUString
&
file
)
{
rtl
::
OString
dest
;
file
.
convertToString
(
&
dest
,
RTL_TEXTENCODING_UTF8
,
0
);
libvlc_video_take_snapshot
(
mPlayer
,
0
,
dest
.
getStr
(),
0
,
0
)
;
return
libvlc_video_take_snapshot
(
mPlayer
,
0
,
dest
.
getStr
(),
480
,
360
)
==
0
;
}
bool
Player
::
hasVout
()
const
...
...
avmedia/source/vlc/wrapper/Player.hxx
Dosyayı görüntüle @
79bed99d
...
...
@@ -51,7 +51,7 @@ namespace VLC
void
setWindow
(
intptr_t
id
);
void
takeSnapshot
(
const
rtl
::
OUString
&
file
);
bool
takeSnapshot
(
const
rtl
::
OUString
&
file
);
bool
hasVout
()
const
;
...
...
avmedia/source/vlc/wrapper/Wrapper.hxx
0 → 100644
Dosyayı görüntüle @
79bed99d
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include "Common.hxx"
#include "EventHandler.hxx"
#include "EventManager.hxx"
#include "Instance.hxx"
#include "Media.hxx"
#include "Player.hxx"
\ No newline at end of file
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