Track对象新增clone方法

This commit is contained in:
xiongziliang 2018-10-25 23:17:30 +08:00
parent 6a7c76be06
commit 0045d405a5
2 changed files with 15 additions and 2 deletions

View File

@ -48,6 +48,12 @@ public:
* @return
*/
virtual bool ready() = 0;
/**
*
* @return
*/
virtual Track::Ptr clone() = 0;
};
class VideoTrack : public Track {
@ -245,6 +251,9 @@ private:
void parseSps(const string &sps){
getAVCInfo(sps,_width,_height,_fps);
}
Track::Ptr clone() override {
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
}
private:
string _sps;
string _pps;
@ -369,6 +378,9 @@ private:
makeAdtsHeader(aac_cfg,aacFrame);
getAACInfo(aacFrame,_sampleRate,_channel);
}
Track::Ptr clone() override {
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
}
private:
string _cfg;
int _sampleRate = 0;

View File

@ -29,8 +29,9 @@
namespace mediakit {
void RtspMuxer::addTrack(const Track::Ptr &track, uint32_t ssrc, int mtu) {
//记录该Track
void RtspMuxer::addTrack(const Track::Ptr &track_in, uint32_t ssrc, int mtu) {
//克隆对象防止在setDelegate时错误覆盖
auto track = track_in->clone();
auto codec_id = track->getCodecId();
_track_map[codec_id] = track;