mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-03 17:27:33 +08:00
完善seek相关的逻辑
This commit is contained in:
@@ -93,7 +93,7 @@ public:
|
||||
void onWrite(const RtmpPacket::Ptr &pkt,bool isKey = true) override {
|
||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||
if (pkt->isCfgFrame()) {
|
||||
_mapCfgFrame.emplace(pkt->typeId, pkt);
|
||||
_mapCfgFrame[pkt->typeId] = pkt;
|
||||
|
||||
if(_bAsyncRegist && !_bRegisted && _mapCfgFrame.size() == _iCfgFrameSize){
|
||||
_bAsyncRegist = false;
|
||||
@@ -101,9 +101,21 @@ public:
|
||||
_bRegisted = true;
|
||||
}
|
||||
}
|
||||
|
||||
_mapStamp[pkt->typeId] = pkt->timeStamp;
|
||||
_pRing->write(pkt,pkt->isVideoKeyFrame());
|
||||
}
|
||||
|
||||
uint32_t getTimeStamp(TrackType trackType) override {
|
||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||
switch (trackType){
|
||||
case TrackVideo:
|
||||
return _mapStamp[MSG_VIDEO];
|
||||
case TrackAudio:
|
||||
return _mapStamp[MSG_AUDIO];
|
||||
default:
|
||||
return MAX(_mapStamp[MSG_VIDEO],_mapStamp[MSG_AUDIO]);
|
||||
}
|
||||
}
|
||||
private:
|
||||
bool ready(){
|
||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||
@@ -111,7 +123,8 @@ private:
|
||||
}
|
||||
protected:
|
||||
AMFValue _metadata;
|
||||
unordered_map<int, RtmpPacket::Ptr> _mapCfgFrame;
|
||||
map<int, RtmpPacket::Ptr> _mapCfgFrame;
|
||||
map<int,uint32_t> _mapStamp;
|
||||
mutable recursive_mutex _mtxMap;
|
||||
RingBuffer<RtmpPacket::Ptr>::Ptr _pRing; //rtp环形缓冲
|
||||
int _iCfgFrameSize = -1;
|
||||
|
||||
Reference in New Issue
Block a user