Commit 0045d405 by xiongziliang

Track对象新增clone方法

parent 6a7c76be
......@@ -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;
......
......@@ -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;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论