[Libreoffice-commits] core.git: 2 commits - avmedia/source
Minh Ngo
nlminhtl at gmail.com
Sat Oct 19 05:37:11 PDT 2013
avmedia/source/vlc/vlcframegrabber.cxx | 10 +--------
avmedia/source/vlc/vlcmanager.cxx | 8 +------
avmedia/source/vlc/vlcplayer.cxx | 1
avmedia/source/vlc/wrapper/Player.cxx | 36 ++++++++++++++++++++++++++++++---
avmedia/source/vlc/wrapper/Types.hxx | 11 ++++++++--
5 files changed, 46 insertions(+), 20 deletions(-)
New commits:
commit 301b5a408d7b0e53f86b1aad0afb8b454fc71991
Author: Minh Ngo <nlminhtl at gmail.com>
Date: Sat Oct 19 15:34:03 2013 +0300
avmedia/vlc: fixing a hang when trying to get a frame
Change-Id: I1fb35d0c62e77448d23eeb11f9de0ab72892336a
diff --git a/avmedia/source/vlc/vlcframegrabber.cxx b/avmedia/source/vlc/vlcframegrabber.cxx
index 7a742e9..a28cf8a 100644
--- a/avmedia/source/vlc/vlcframegrabber.cxx
+++ b/avmedia/source/vlc/vlcframegrabber.cxx
@@ -28,15 +28,12 @@ namespace
const char * const VLC_ARGS[] = {
"-Vdummy",
- // "--ignore-config"
"--demux",
"ffmpeg",
"--snapshot-format=png",
"--ffmpeg-threads", /* Is deprecated in 2.1.0 */
- "--verbose=2",
- "--no-audio"//,
- //"--file-logging",
- //"--logfile=C:/home/dev/log/vlc_log"
+ "--verbose=-1",
+ "--no-audio"
};
}
@@ -70,10 +67,7 @@ VLCFrameGrabber::VLCFrameGrabber( wrapper::EventHandler& eh, const rtl::OUString
const TimeValue timeout = {2, 0};
- //TODO: Fix this hang on Windows
-#ifndef WNT
condition.wait(&timeout);
-#endif
if ( !mPlayer.hasVout() )
{
diff --git a/avmedia/source/vlc/vlcmanager.cxx b/avmedia/source/vlc/vlcmanager.cxx
index 370505d..9894b73 100644
--- a/avmedia/source/vlc/vlcmanager.cxx
+++ b/avmedia/source/vlc/vlcmanager.cxx
@@ -29,14 +29,10 @@ namespace
const ::rtl::OUString VLC_SERVICENAME = "com.sun.star.media.Manager_VLC";
const char * const VLC_ARGS[] = {
- "-Vdummy",
-#ifdef WNT
"--demux",
"ffmpeg",
-#endif
- "--verbose=2"//,
- //"--file-logging",
- //"--logfile=C:/home/dev/log/vlc_log"
+ "--no-mouse-events",
+ "--verbose=-1"
};
}
diff --git a/avmedia/source/vlc/vlcplayer.cxx b/avmedia/source/vlc/vlcplayer.cxx
index 8d54672..64ad897 100644
--- a/avmedia/source/vlc/vlcplayer.cxx
+++ b/avmedia/source/vlc/vlcplayer.cxx
@@ -1,4 +1,3 @@
-#include <iostream>
#include <boost/bind.hpp>
#include <vcl/syschild.hxx>
#include <vcl/sysdata.hxx>
commit 5b24f86c1c2d64e99da1535c05139a1266dcbcc1
Author: Minh Ngo <nlminhtl at gmail.com>
Date: Sat Oct 19 15:33:02 2013 +0300
avmedia/vlc: setting a correct video/audio track
Change-Id: I935e64f9df74193aba17d00cfe7f37ad3f4f9077
diff --git a/avmedia/source/vlc/wrapper/Player.cxx b/avmedia/source/vlc/wrapper/Player.cxx
index d8608d8..cd57267 100644
--- a/avmedia/source/vlc/wrapper/Player.cxx
+++ b/avmedia/source/vlc/wrapper/Player.cxx
@@ -12,7 +12,7 @@
#include "Player.hxx"
#include "Media.hxx"
#include "SymbolLoader.hxx"
- #include "Common.hxx"
+#include "Common.hxx"
struct libvlc_media_t;
@@ -52,6 +52,12 @@ namespace
int ( *libvlc_video_get_size ) ( libvlc_media_player_t *p_mi, unsigned num,
unsigned *px, unsigned *py );
int ( *libvlc_video_get_track_count ) ( libvlc_media_player_t *p_mi );
+ int ( *libvlc_video_set_track ) ( libvlc_media_player_t *p_mi, int i_track );
+ libvlc_track_description_t* ( *libvlc_video_get_track_description ) ( libvlc_media_player_t *p_mi );
+
+ int ( *libvlc_audio_get_track ) ( libvlc_media_player_t *p_mi );
+ libvlc_track_description_t * ( *libvlc_audio_get_track_description ) (libvlc_media_player_t *p_mi );
+ int ( *libvlc_audio_set_track ) (libvlc_media_player_t *p_mi, int i_track);
}
namespace avmedia
@@ -90,7 +96,12 @@ namespace wrapper
SYM_MAP( libvlc_media_player_retain ),
SYM_MAP( libvlc_video_set_scale ),
SYM_MAP( libvlc_video_get_size ),
- SYM_MAP( libvlc_video_get_track_count )
+ SYM_MAP( libvlc_video_get_track_count ),
+ SYM_MAP( libvlc_video_set_track ),
+ SYM_MAP( libvlc_video_get_track_description ),
+ SYM_MAP( libvlc_audio_get_track ),
+ SYM_MAP( libvlc_audio_get_track_description ),
+ SYM_MAP( libvlc_audio_set_track )
};
return InitApiMap( VLC_PLAYER_API );
@@ -121,7 +132,26 @@ namespace wrapper
bool Player::play()
{
- return libvlc_media_player_play( mPlayer ) == 0;
+ const bool status = ( libvlc_media_player_play( mPlayer ) == 0 );
+ if ( libvlc_video_get_track_count( mPlayer ) > 0 )
+ {
+ const libvlc_track_description_t *description = libvlc_video_get_track_description( mPlayer );
+
+ for ( ; description->p_next != NULL; description = description->p_next );
+
+ libvlc_video_set_track( mPlayer, description->i_id );
+ }
+
+ if ( libvlc_audio_get_track( mPlayer ) > 0 )
+ {
+ const libvlc_track_description_t *description = libvlc_audio_get_track_description( mPlayer );
+
+ for ( ; description->p_next != NULL; description = description->p_next );
+
+ libvlc_audio_set_track( mPlayer, description->i_id );
+ }
+
+ return status;
}
void Player::pause()
diff --git a/avmedia/source/vlc/wrapper/Types.hxx b/avmedia/source/vlc/wrapper/Types.hxx
index 624ef13..06a0674 100644
--- a/avmedia/source/vlc/wrapper/Types.hxx
+++ b/avmedia/source/vlc/wrapper/Types.hxx
@@ -23,7 +23,7 @@ typedef void ( *libvlc_callback_t ) ( const struct libvlc_event_t *, void * );
#define libvlc_MediaPlayerEndReached 0x109
// event structure pieces we use
-typedef struct libvlc_event_t
+struct libvlc_event_t
{
int type; // event type
void *p_obj; // object emitting that event
@@ -35,7 +35,14 @@ typedef struct libvlc_event_t
const char *dummy2;
} padding;
} u;
-} libvlc_event_t;
+};
+
+struct libvlc_track_description_t
+{
+ int i_id;
+ char *psz_name;
+ libvlc_track_description_t *p_next;
+};
}
More information about the Libreoffice-commits
mailing list