From 5dce8eccde6ce39da01d5c87ffd395d79c66291c Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Wed, 3 Jul 2019 16:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E7=AE=80=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Extension/H264.h | 34 ++++++++++++----------------- src/Extension/H265.h | 51 ++++++++++++++++++-------------------------- 2 files changed, 35 insertions(+), 50 deletions(-) diff --git a/src/Extension/H264.h b/src/Extension/H264.h index 5f07f189..e8e0f801 100644 --- a/src/Extension/H264.h +++ b/src/Extension/H264.h @@ -308,27 +308,23 @@ private: } if(!_sps.empty()){ - if(!_spsFrame){ - _spsFrame = std::make_shared(); - _spsFrame->type = H264Frame::NAL_SPS; - _spsFrame->iPrefixSize = 4; - } - _spsFrame->buffer.assign("\x0\x0\x0\x1",4); - _spsFrame->buffer.append(_sps); - _spsFrame->timeStamp = frame->stamp(); - VideoTrack::inputFrame(_spsFrame); + auto spsFrame = std::make_shared(); + spsFrame->type = H264Frame::NAL_SPS; + spsFrame->iPrefixSize = 4; + spsFrame->buffer.assign("\x0\x0\x0\x1",4); + spsFrame->buffer.append(_sps); + spsFrame->timeStamp = frame->stamp(); + VideoTrack::inputFrame(spsFrame); } if(!_pps.empty()){ - if(!_ppsFrame) { - _ppsFrame = std::make_shared(); - _ppsFrame->type = H264Frame::NAL_PPS; - _ppsFrame->iPrefixSize = 4; - } - _ppsFrame->buffer.assign("\x0\x0\x0\x1",4); - _ppsFrame->buffer.append(_pps); - _ppsFrame->timeStamp = frame->stamp(); - VideoTrack::inputFrame(_ppsFrame); + auto ppsFrame = std::make_shared(); + ppsFrame->type = H264Frame::NAL_PPS; + ppsFrame->iPrefixSize = 4; + ppsFrame->buffer.assign("\x0\x0\x0\x1",4); + ppsFrame->buffer.append(_pps); + ppsFrame->timeStamp = frame->stamp(); + VideoTrack::inputFrame(ppsFrame); } } private: @@ -338,8 +334,6 @@ private: int _height = 0; float _fps = 0; bool _last_frame_is_idr = false; - H264Frame::Ptr _spsFrame; - H264Frame::Ptr _ppsFrame; }; diff --git a/src/Extension/H265.h b/src/Extension/H265.h index d0c2469a..5fd3a6af 100644 --- a/src/Extension/H265.h +++ b/src/Extension/H265.h @@ -264,47 +264,38 @@ private: return; } if(!_vps.empty()){ - if (!_vpsFrame) { - _vpsFrame = std::make_shared(); - _vpsFrame->type = H265Frame::NAL_VPS; - _vpsFrame->iPrefixSize = 4; - } - _vpsFrame->buffer.assign("\x0\x0\x0\x1", 4); - _vpsFrame->buffer.append(_vps); - _vpsFrame->timeStamp = frame->stamp(); - VideoTrack::inputFrame(_vpsFrame); + auto vpsFrame = std::make_shared(); + vpsFrame->type = H265Frame::NAL_VPS; + vpsFrame->iPrefixSize = 4; + vpsFrame->buffer.assign("\x0\x0\x0\x1", 4); + vpsFrame->buffer.append(_vps); + vpsFrame->timeStamp = frame->stamp(); + VideoTrack::inputFrame(vpsFrame); } if (!_sps.empty()) { - if (!_spsFrame) { - _spsFrame = std::make_shared(); - _spsFrame->type = H265Frame::NAL_SPS; - _spsFrame->iPrefixSize = 4; - } - _spsFrame->buffer.assign("\x0\x0\x0\x1", 4); - _spsFrame->buffer.append(_sps); - _spsFrame->timeStamp = frame->stamp(); - VideoTrack::inputFrame(_spsFrame); + auto spsFrame = std::make_shared(); + spsFrame->type = H265Frame::NAL_SPS; + spsFrame->iPrefixSize = 4; + spsFrame->buffer.assign("\x0\x0\x0\x1", 4); + spsFrame->buffer.append(_sps); + spsFrame->timeStamp = frame->stamp(); + VideoTrack::inputFrame(spsFrame); } if (!_pps.empty()) { - if (!_ppsFrame) { - _ppsFrame = std::make_shared(); - _ppsFrame->type = H265Frame::NAL_PPS; - _ppsFrame->iPrefixSize = 4; - } - _ppsFrame->buffer.assign("\x0\x0\x0\x1", 4); - _ppsFrame->buffer.append(_pps); - _ppsFrame->timeStamp = frame->stamp(); - VideoTrack::inputFrame(_ppsFrame); + auto ppsFrame = std::make_shared(); + ppsFrame->type = H265Frame::NAL_PPS; + ppsFrame->iPrefixSize = 4; + ppsFrame->buffer.assign("\x0\x0\x0\x1", 4); + ppsFrame->buffer.append(_pps); + ppsFrame->timeStamp = frame->stamp(); + VideoTrack::inputFrame(ppsFrame); } } private: string _vps; string _sps; string _pps; - H265Frame::Ptr _vpsFrame; - H265Frame::Ptr _spsFrame; - H265Frame::Ptr _ppsFrame; bool _last_frame_is_idr = false; };