[vlc-commits] Map the new chapters description calls
Jean-Baptiste Kempf
git at videolan.org
Tue Jun 16 02:41:47 CEST 2015
libvlcpp | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Mon Jun 15 14:09:50 2015 +0200| [d3bbaa20ab335326e595eb2a20fc34057386394e] | committer: Hugo Beauzée-Luyssen
Map the new chapters description calls
Signed-off-by: Hugo Beauzée-Luyssen <hugo at beauzee.fr>
> http://git.videolan.org/gitweb.cgi/libvlcpp.git/?a=commit;h=d3bbaa20ab335326e595eb2a20fc34057386394e
---
vlcpp/MediaPlayer.hpp | 22 +++++++++++++++++++++-
vlcpp/structures.hpp | 42 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/vlcpp/MediaPlayer.hpp b/vlcpp/MediaPlayer.hpp
index b6d670d..9315bf9 100644
--- a/vlcpp/MediaPlayer.hpp
+++ b/vlcpp/MediaPlayer.hpp
@@ -1369,14 +1369,34 @@ public:
*
* \param i_title selected title
*
- * \return list containing description of available chapter for title
+ * \return list containing description of available chapters for title
* i_title
*/
+#if LIBVLC_VERSION_INT < LIBVLC_VERSION(3, 0, 0, 0)
std::vector<TrackDescription> chapterDescription(int i_title)
{
libvlc_track_description_t* result = libvlc_video_get_chapter_description( *this, i_title );
return getTracksDescription( result );
}
+#else
+ std::vector<ChapterDescription> chapterDescription(int i_title)
+ {
+ libvlc_chapter_description_t **chapters;
+ int nbChapters = libvlc_media_player_get_full_chapter_descriptions( *this, i_title, &chapters );
+ auto cleanupCb = [nbChapters](libvlc_chapter_description_t** cs) {
+ libvlc_chapter_descriptions_release( cs, nbChapters );
+ };
+ std::unique_ptr<libvlc_chapter_description_t*[], decltype(cleanupCb)> ptr( chapters, cleanupCb );
+
+ std::vector<ChapterDescription> res;
+
+ if ( nbChapters < 1 )
+ return res;
+
+ for ( int i = 0; i < nbChapters; ++i )
+ res.emplace_back( ptr[i] );
+ }
+#endif
/**
* Get current crop filter geometry.
diff --git a/vlcpp/structures.hpp b/vlcpp/structures.hpp
index 1060074..317e0e9 100644
--- a/vlcpp/structures.hpp
+++ b/vlcpp/structures.hpp
@@ -512,6 +512,48 @@ private:
bool m_menu;
};
+///
+/// \brief The ChapterDescription class describes a chapter
+///
+class ChapterDescription
+{
+public:
+ ///
+ /// \brief timeoffset The chapter start time in (ms)
+ ///
+ int64_t starttime() const
+ {
+ return m_starttime;
+ }
+
+ ///
+ /// \brief duration The chapter duration in (ms)
+ ///
+ int64_t duration() const
+ {
+ return m_duration;
+ }
+
+ ///
+ /// \brief name The chapter name
+ ///
+ const std::string& name() const
+ {
+ return m_name;
+ }
+
+ explicit ChapterDescription( libvlc_chapter_description_t* c )
+ : m_duration( c->i_duration ), m_starttime( c->i_time_offset )
+ {
+ if ( c->psz_name != nullptr )
+ m_name = c->psz_name;
+ }
+
+private:
+ int64_t m_duration, m_starttime;
+ std::string m_name;
+};
+
} // namespace VLC
#endif
More information about the vlc-commits
mailing list