npapi-vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Wed Sep 16 10:27:50 2020 +0200| [8e19a4f3024ee4fc9f718bfccfb369a4de2fb205] | committer: Hugo Beauzée-Luyssen
Use new track API > https://code.videolan.org/videolan/npapi-vlc/commit/8e19a4f3024ee4fc9f718bfccfb369a4de2fb205 --- activex/vlccontrol2.cpp | 28 ++++++++++++++-------------- common/vlc_player.cpp | 28 +++++++++------------------- common/vlc_player.h | 2 +- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/activex/vlccontrol2.cpp b/activex/vlccontrol2.cpp index 9caab94..e8d3a27 100644 --- a/activex/vlccontrol2.cpp +++ b/activex/vlccontrol2.cpp @@ -454,10 +454,10 @@ STDMETHODIMP VLCAudio::get_track(long* track) STDMETHODIMP VLCAudio::put_track(long track) { - auto tracks = _plug->get_player().get_mp().audioTrackDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Audio ); if ( track >= tracks.size() ) return E_INVALIDARG; - _plug->get_player().get_mp().setAudioTrack( tracks[track].id() ); + _plug->get_player().get_mp().selectTrack( tracks[track] ); return S_OK; } @@ -473,7 +473,7 @@ STDMETHODIMP VLCAudio::get_count(long* trackNumber) case libvlc_Playing: case libvlc_Paused: { - *trackNumber = negativeToZero( _plug->get_player().get_mp().audioTrackCount() ); + *trackNumber = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Audio ).size(); break; } default: @@ -506,7 +506,7 @@ STDMETHODIMP VLCAudio::description(long trackId, BSTR* name) case libvlc_Playing: case libvlc_Paused: { - auto tracks = _plug->get_player().get_mp().audioTrackDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Audio ); if ( trackId >= tracks.size() ) return E_INVALIDARG; *name = BSTRFromCStr( CP_UTF8, tracks[trackId].name().c_str() ); @@ -1146,10 +1146,10 @@ STDMETHODIMP VLCSubtitle::get_track(long* spu) //FIXME: this should be unsigned STDMETHODIMP VLCSubtitle::put_track(long spu) { - auto tracks = _plug->get_player().get_mp().spuDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Subtitle ); if ( spu >= tracks.size() ) return E_INVALIDARG; - _plug->get_player().get_mp().setSpu( tracks[spu].id() ); + _plug->get_player().get_mp().selectTrack( tracks[spu] ); return S_OK; } @@ -1165,7 +1165,7 @@ STDMETHODIMP VLCSubtitle::get_count(long* spuNumber) case libvlc_Playing: case libvlc_Paused: { - *spuNumber = _plug->get_player().get_mp().spuCount(); + *spuNumber = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Subtitle ).size(); break; } default: @@ -1199,7 +1199,7 @@ STDMETHODIMP VLCSubtitle::description(long nameID, BSTR* name) case libvlc_Playing: case libvlc_Paused: { - auto tracks = _plug->get_player().get_mp().spuDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Subtitle ); if ( nameID >= tracks.size() ) return E_INVALIDARG; *name = BSTRFromCStr( CP_UTF8, tracks[nameID].name().c_str() ); @@ -1362,10 +1362,10 @@ STDMETHODIMP VLCVideo::get_subtitle(long* spu) STDMETHODIMP VLCVideo::put_subtitle(long spu) { - auto tracks = _plug->get_player().get_mp().spuDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Subtitle ); if ( spu >= tracks.size() ) return E_INVALIDARG; - _plug->get_player().get_mp().setSpu( tracks[spu].id() ); + _plug->get_player().get_mp().selectTrack( tracks[spu] ); return S_OK; } @@ -1520,10 +1520,10 @@ STDMETHODIMP VLCVideo::get_track(long* track) STDMETHODIMP VLCVideo::put_track(long track) { - auto tracks = _plug->get_player().get_mp().videoTrackDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Video ); if ( track >= tracks.size() ) return E_INVALIDARG; - _plug->get_player().get_mp().setVideoTrack( tracks[track].id() ); + _plug->get_player().get_mp().selectTrack( tracks[track] ); return S_OK; } @@ -1539,7 +1539,7 @@ STDMETHODIMP VLCVideo::get_count(long* trackNumber) case libvlc_Playing: case libvlc_Paused: { - *trackNumber = negativeToZero( _plug->get_player().get_mp().videoTrackCount() ); + *trackNumber = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Video ).size(); break; } default: @@ -1574,7 +1574,7 @@ STDMETHODIMP VLCVideo::description(long trackId, BSTR* name) case libvlc_Playing: case libvlc_Paused: { - auto tracks = _plug->get_player().get_mp().videoTrackDescription(); + auto tracks = _plug->get_player().get_mp().tracks( VLC::MediaTrack::Type::Video ); if ( trackId >= tracks.size() ) return E_INVALIDARG; *name = BSTRFromCStr( CP_UTF8, tracks[trackId].name().c_str() ); diff --git a/common/vlc_player.cpp b/common/vlc_player.cpp index 6af4ca0..500f48c 100644 --- a/common/vlc_player.cpp +++ b/common/vlc_player.cpp @@ -173,38 +173,28 @@ void vlc_player::play() int vlc_player::currentAudioTrack() { - auto current = _mp.audioTrack(); - auto tracks = _mp.audioTrackDescription(); - return getTrack( current, tracks ); + auto tracks = _mp.tracks( VLC::MediaTrack::Type::Audio ); + return getCurrentTrack( tracks ); } int vlc_player::currentSubtitleTrack() { - auto current = _mp.spu(); - auto tracks = _mp.spuDescription(); - return getTrack( current, tracks ); + auto tracks = _mp.tracks( VLC::MediaTrack::Type::Subtitle ); + return getCurrentTrack( tracks ); } int vlc_player::currentVideoTrack() { - auto current = _mp.videoTrack(); - auto tracks = _mp.videoTrackDescription(); - return getTrack( current, tracks ); + auto tracks = _mp.tracks( VLC::MediaTrack::Type::Video ); + return getCurrentTrack( tracks ); } -int vlc_player::getTrack( int currentId, const std::vector<VLC::TrackDescription>& tracks ) +int vlc_player::getCurrentTrack( const std::vector<VLC::MediaTrack>& tracks ) { - if ( tracks.empty() ) - return -1; - - int trackId = 0; for ( const auto& t : tracks ) { - if ( t.id() == currentId ) - { - return trackId; - } - ++trackId; + if ( t.selected() ) + return t.id(); } return -1; } diff --git a/common/vlc_player.h b/common/vlc_player.h index 20a297a..36a5de4 100644 --- a/common/vlc_player.h +++ b/common/vlc_player.h @@ -68,7 +68,7 @@ public: private: // Returns a 0-based track index, instead of the internal libvlc one - int getTrack( int currentId, const std::vector<VLC::TrackDescription>& tracks ); + int getCurrentTrack( const std::vector<VLC::MediaTrack>& tracks ); private: _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
