提升单track情况下秒开体验

This commit is contained in:
xia-chu
2021-04-20 17:53:43 +08:00
parent 9b951ab69a
commit 0bb87858a3
7 changed files with 95 additions and 39 deletions

View File

@@ -106,13 +106,25 @@ float Demuxer::getDuration() const {
return _fDuration;
}
void Demuxer::onAddTrack(const Track::Ptr &track){
void Demuxer::addTrack(const Track::Ptr &track){
if(_listener){
_listener->onAddTrack(track);
_listener->addTrack(track);
}
}
void Demuxer::setTrackListener(Demuxer::Listener *listener) {
void Demuxer::addTrackCompleted(){
if(_listener){
_listener->addTrackCompleted();
}
}
void Demuxer::resetTracks() {
if (_listener) {
_listener->resetTracks();
}
}
void Demuxer::setTrackListener(TrackListener *listener) {
_listener = listener;
}

View File

@@ -19,6 +19,7 @@
#include "Util/mini.h"
#include "Util/RingBuffer.h"
#include "Common/MediaSource.h"
#include "Common/MediaSink.h"
#include "Extension/Frame.h"
#include "Extension/Track.h"
using namespace toolkit;
@@ -227,18 +228,10 @@ protected:
MediaSource::Ptr _pMediaSrc;
};
class Demuxer : public PlayerBase{
class Demuxer : public PlayerBase, public TrackListener{
public:
class Listener{
public:
Listener() = default;
virtual ~Listener() = default;
virtual void onAddTrack(const Track::Ptr &track) = 0;
};
Demuxer(){};
virtual ~Demuxer(){};
Demuxer() = default;
~Demuxer() override = default;
/**
* 返回是否完成初始化完毕
@@ -267,15 +260,19 @@ public:
/**
* 设置track监听器
*/
void setTrackListener(Listener *listener);
void setTrackListener(TrackListener *listener);
protected:
void onAddTrack(const Track::Ptr &track);
void addTrack(const Track::Ptr &track) override;
void addTrackCompleted() override;
void resetTracks() override;
protected:
Listener *_listener = nullptr;
float _fDuration = 0;
Ticker _ticker;
AudioTrack::Ptr _audioTrack;
VideoTrack::Ptr _videoTrack;
Ticker _ticker;
float _fDuration = 0;
TrackListener *_listener = nullptr;
};
} /* namespace mediakit */