[vlmc-devel] VLCMedia: Rely on libvlc to store the mrl

Hugo Beauzée-Luyssen git at videolan.org
Mon Feb 24 20:09:42 CET 2014


vlmc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Mon Feb 24 15:30:26 2014 +0200| [305d6662d204c648f9edfdf427994a6b3c97a7c7] | committer: Hugo Beauzée-Luyssen

VLCMedia: Rely on libvlc to store the mrl

> http://git.videolan.org/gitweb.cgi/vlmc.git/?a=commit;h=305d6662d204c648f9edfdf427994a6b3c97a7c7
---

 src/Backend/VLC/LibVLCpp/VLCMedia.cpp |   14 +++++++++-----
 src/Backend/VLC/LibVLCpp/VLCMedia.h   |    4 ++--
 src/Backend/VLC/VLCSource.cpp         |    2 +-
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/Backend/VLC/LibVLCpp/VLCMedia.cpp b/src/Backend/VLC/LibVLCpp/VLCMedia.cpp
index da575a0..d2aade6 100644
--- a/src/Backend/VLC/LibVLCpp/VLCMedia.cpp
+++ b/src/Backend/VLC/LibVLCpp/VLCMedia.cpp
@@ -31,9 +31,9 @@
 using namespace LibVLCpp;
 
 Media::Media( LibVLCpp::Instance* instance, const QString& filename )
-    : m_fileName( filename )
-    , m_tracks( NULL )
+    : m_tracks( NULL )
     , m_nbTracks( 0 )
+    , m_mrl( NULL )
 
 {
     m_internalPtr = libvlc_media_new_location( *instance, filename.toLocal8Bit() );
@@ -42,6 +42,7 @@ Media::Media( LibVLCpp::Instance* instance, const QString& filename )
 Media::Media( LibVLCpp::Media &media )
     : m_tracks( NULL )
     , m_nbTracks( 0 )
+    , m_mrl( NULL )
 {
     m_internalPtr = libvlc_media_duplicate( media );
 }
@@ -51,6 +52,7 @@ Media::~Media()
     if ( m_tracks != NULL )
         libvlc_media_tracks_release( m_tracks, m_nbTracks );
     libvlc_media_release( m_internalPtr );
+    free( m_mrl );
 }
 
 void
@@ -115,10 +117,12 @@ Media::setAudioDataCtx( void* dataCtx )
     addOption( param );
 }
 
-const QString&
-Media::getFileName() const
+const char*
+Media::mrl()
 {
-    return m_fileName;
+    if ( m_mrl == NULL )
+        m_mrl = libvlc_media_get_mrl( m_internalPtr );
+    return m_mrl;
 }
 
 void
diff --git a/src/Backend/VLC/LibVLCpp/VLCMedia.h b/src/Backend/VLC/LibVLCpp/VLCMedia.h
index 18faca3..6c80d41 100644
--- a/src/Backend/VLC/LibVLCpp/VLCMedia.h
+++ b/src/Backend/VLC/LibVLCpp/VLCMedia.h
@@ -48,18 +48,18 @@ namespace LibVLCpp
         void                setAudioUnlockCallback( void* );
         void                setVideoDataCtx( void* dataCtx );
         void                setAudioDataCtx( void* dataCtx );
-        const QString&      getFileName() const;
+        const char*         mrl();
         void                parse();
         void                fetchTrackInfo();
         unsigned int videoCodec() const;
         unsigned int audioCodec() const;
 
     private:
-        QString                     m_fileName;
         libvlc_media_track_t        **m_tracks;
         // this has not to be equal to nb video tracks + nb audio tracks.
         // it is only meant to use when iterating over m_tracksInfo
         int                         m_nbTracks;
+        char*                       m_mrl;
     };
 }
 
diff --git a/src/Backend/VLC/VLCSource.cpp b/src/Backend/VLC/VLCSource.cpp
index f3d9a48..4437fd2 100644
--- a/src/Backend/VLC/VLCSource.cpp
+++ b/src/Backend/VLC/VLCSource.cpp
@@ -82,7 +82,7 @@ VLCSource::preparse()
         mediaPlayer->getSize( &m_width, &m_height );
         m_fps = mediaPlayer->getFps();
         if ( m_fps < 0.1f )
-            vlmcWarning() << "Invalid FPS for source" << m_media->getFileName();
+            vlmcWarning() << "Invalid FPS for source" << m_media->mrl();
         return computeSnapshot( renderer );
     }
     delete renderer;



More information about the Vlmc-devel mailing list