Commit 0045d405 by xiongziliang

Track对象新增clone方法

parent 6a7c76be
...@@ -48,6 +48,12 @@ public: ...@@ -48,6 +48,12 @@ public:
* @return * @return
*/ */
virtual bool ready() = 0; virtual bool ready() = 0;
/**
* 克隆接口,用于复制本对象用
* @return
*/
virtual Track::Ptr clone() = 0;
}; };
class VideoTrack : public Track { class VideoTrack : public Track {
...@@ -245,6 +251,9 @@ private: ...@@ -245,6 +251,9 @@ private:
void parseSps(const string &sps){ void parseSps(const string &sps){
getAVCInfo(sps,_width,_height,_fps); getAVCInfo(sps,_width,_height,_fps);
} }
Track::Ptr clone() override {
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
}
private: private:
string _sps; string _sps;
string _pps; string _pps;
...@@ -369,6 +378,9 @@ private: ...@@ -369,6 +378,9 @@ private:
makeAdtsHeader(aac_cfg,aacFrame); makeAdtsHeader(aac_cfg,aacFrame);
getAACInfo(aacFrame,_sampleRate,_channel); getAACInfo(aacFrame,_sampleRate,_channel);
} }
Track::Ptr clone() override {
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
}
private: private:
string _cfg; string _cfg;
int _sampleRate = 0; int _sampleRate = 0;
......
...@@ -29,8 +29,9 @@ ...@@ -29,8 +29,9 @@
namespace mediakit { namespace mediakit {
void RtspMuxer::addTrack(const Track::Ptr &track, uint32_t ssrc, int mtu) { void RtspMuxer::addTrack(const Track::Ptr &track_in, uint32_t ssrc, int mtu) {
//记录该Track //克隆对象,防止在setDelegate时错误覆盖
auto track = track_in->clone();
auto codec_id = track->getCodecId(); auto codec_id = track->getCodecId();
_track_map[codec_id] = track; _track_map[codec_id] = track;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论