Track对象新增clone方法
This commit is contained in:
parent
6a7c76be06
commit
0045d405a5
|
|
@ -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:
|
||||||
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:
|
||||||
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 @@
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue