Commit 9bfbe02f by xiongziliang

添加最大帧长度参数

parent 90622a30
...@@ -10,10 +10,9 @@ ...@@ -10,10 +10,9 @@
#include "CommonRtp.h" #include "CommonRtp.h"
#define MAX_FRAME_SIZE 2 * 1024 CommonRtpDecoder::CommonRtpDecoder(CodecId codec, int max_frame_size ){
CommonRtpDecoder::CommonRtpDecoder(CodecId codec){
_codec = codec; _codec = codec;
_max_frame_size = max_frame_size;
obtainFrame(); obtainFrame();
} }
...@@ -37,7 +36,7 @@ bool CommonRtpDecoder::inputRtp(const RtpPacket::Ptr &rtp, bool){ ...@@ -37,7 +36,7 @@ bool CommonRtpDecoder::inputRtp(const RtpPacket::Ptr &rtp, bool){
return false; return false;
} }
if (_frame->_dts != rtp->timeStamp || _frame->_buffer.size() > MAX_FRAME_SIZE) { if (_frame->_dts != rtp->timeStamp || _frame->_buffer.size() > _max_frame_size) {
//时间戳发生变化或者缓存超过MAX_FRAME_SIZE,则清空上帧数据 //时间戳发生变化或者缓存超过MAX_FRAME_SIZE,则清空上帧数据
if (!_frame->_buffer.empty()) { if (!_frame->_buffer.empty()) {
//有有效帧,则输出 //有有效帧,则输出
...@@ -48,7 +47,7 @@ bool CommonRtpDecoder::inputRtp(const RtpPacket::Ptr &rtp, bool){ ...@@ -48,7 +47,7 @@ bool CommonRtpDecoder::inputRtp(const RtpPacket::Ptr &rtp, bool){
obtainFrame(); obtainFrame();
_frame->_dts = rtp->timeStamp; _frame->_dts = rtp->timeStamp;
_drop_flag = false; _drop_flag = false;
} else if (_last_seq != 0 && _last_seq + (uint16_t) 1 != rtp->sequence) { } else if (_last_seq != 0 && (uint16_t)(_last_seq + 1) != rtp->sequence) {
//时间戳未发生变化,但是seq却不连续,说明中间rtp丢包了,那么整帧应该废弃 //时间戳未发生变化,但是seq却不连续,说明中间rtp丢包了,那么整帧应该废弃
WarnL << "rtp丢包:" << _last_seq << " -> " << rtp->sequence; WarnL << "rtp丢包:" << _last_seq << " -> " << rtp->sequence;
_drop_flag = true; _drop_flag = true;
......
...@@ -28,8 +28,9 @@ public: ...@@ -28,8 +28,9 @@ public:
/** /**
* 构造函数 * 构造函数
* @param codec 编码id * @param codec 编码id
* @param max_frame_size 允许的最大帧大小
*/ */
CommonRtpDecoder(CodecId codec); CommonRtpDecoder(CodecId codec, int max_frame_size = 2 * 1024);
/** /**
* 返回编码类型ID * 返回编码类型ID
...@@ -47,10 +48,11 @@ private: ...@@ -47,10 +48,11 @@ private:
void obtainFrame(); void obtainFrame();
private: private:
bool _drop_flag = false;
uint16_t _last_seq = 0;
int _max_frame_size;
CodecId _codec; CodecId _codec;
FrameImp::Ptr _frame; FrameImp::Ptr _frame;
uint16_t _last_seq = 0;
bool _drop_flag = false;
}; };
/** /**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论