Demuxer: 解复用减少一次MediaSink的数据过滤

This commit is contained in:
ziyue
2021-11-10 13:44:29 +08:00
parent 2a8a6cac27
commit e38f2253ff
4 changed files with 89 additions and 23 deletions

View File

@@ -238,27 +238,21 @@ protected:
std::shared_ptr<Delegate> _delegate;
};
class Demuxer : protected MediaSink {
class Demuxer : protected TrackListener, public TrackSource {
public:
Demuxer() = default;
~Demuxer() override = default;
/**
* 设置track监听器
*/
void setTrackListener(TrackListener *listener);
vector<Track::Ptr> getTracks(bool ready = true) const override;
protected:
bool addTrack(const Track::Ptr & track) override;
void setTrackListener(TrackListener *listener, bool wait_track_ready = false);
bool addTrack(const Track::Ptr &track) override;
void addTrackCompleted() override;
void resetTracks() override;
bool onTrackReady(const Track::Ptr & track) override;
void onAllTrackReady() override;
bool onTrackFrame(const Frame::Ptr &frame) override;
vector<Track::Ptr> getTracks(bool trackReady = true) const override;
private:
Track::Ptr _tracks[TrackMax];
MediaSink::Ptr _sink;
TrackListener *_listener = nullptr;
vector<Track::Ptr> _origin_track;
};
} /* namespace mediakit */