规范代码
This commit is contained in:
parent
b4f8d35ef1
commit
9511a9fe03
|
|
@ -152,7 +152,7 @@ public:
|
||||||
throw std::invalid_argument("adts配置必须为2个字节");
|
throw std::invalid_argument("adts配置必须为2个字节");
|
||||||
}
|
}
|
||||||
_cfg = aac_cfg;
|
_cfg = aac_cfg;
|
||||||
parseAacCfg(_cfg);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -165,7 +165,7 @@ public:
|
||||||
throw std::invalid_argument("adts头必须不少于7个字节");
|
throw std::invalid_argument("adts头必须不少于7个字节");
|
||||||
}
|
}
|
||||||
_cfg = makeAdtsConfig((uint8_t*)adts_header);
|
_cfg = makeAdtsConfig((uint8_t*)adts_header);
|
||||||
parseAacCfg(_cfg);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -177,7 +177,7 @@ public:
|
||||||
throw std::invalid_argument("必须输入带adts头的aac帧");
|
throw std::invalid_argument("必须输入带adts头的aac帧");
|
||||||
}
|
}
|
||||||
_cfg = makeAdtsConfig((uint8_t*)aac_frame_with_adts->data());
|
_cfg = makeAdtsConfig((uint8_t*)aac_frame_with_adts->data());
|
||||||
parseAacCfg(_cfg);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -235,18 +235,17 @@ public:
|
||||||
if(_cfg.empty() && frame->prefixSize() >= 7){
|
if(_cfg.empty() && frame->prefixSize() >= 7){
|
||||||
//7个字节的adts头
|
//7个字节的adts头
|
||||||
_cfg = makeAdtsConfig(reinterpret_cast<const uint8_t *>(frame->data()));
|
_cfg = makeAdtsConfig(reinterpret_cast<const uint8_t *>(frame->data()));
|
||||||
parseAacCfg(_cfg);
|
onReady();
|
||||||
}
|
}
|
||||||
AudioTrack::inputFrame(frame);
|
AudioTrack::inputFrame(frame);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* 解析2个字节的aac配置
|
* 解析2个字节的aac配置
|
||||||
* @param aac_cfg
|
|
||||||
*/
|
*/
|
||||||
void parseAacCfg(const string &aac_cfg){
|
void onReady(){
|
||||||
AACFrame aacFrame;
|
AACFrame aacFrame;
|
||||||
makeAdtsHeader(aac_cfg,aacFrame);
|
makeAdtsHeader(_cfg,aacFrame);
|
||||||
getAACInfo(aacFrame,_sampleRate,_channel);
|
getAACInfo(aacFrame,_sampleRate,_channel);
|
||||||
}
|
}
|
||||||
Track::Ptr clone() override {
|
Track::Ptr clone() override {
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ public:
|
||||||
H264Track(const string &sps,const string &pps,int sps_prefix_len = 4,int pps_prefix_len = 4){
|
H264Track(const string &sps,const string &pps,int sps_prefix_len = 4,int pps_prefix_len = 4){
|
||||||
_sps = sps.substr(sps_prefix_len);
|
_sps = sps.substr(sps_prefix_len);
|
||||||
_pps = pps.substr(pps_prefix_len);
|
_pps = pps.substr(pps_prefix_len);
|
||||||
parseSps(_sps);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -145,7 +145,7 @@ public:
|
||||||
}
|
}
|
||||||
_sps = string(sps->data() + sps->prefixSize(),sps->size() - sps->prefixSize());
|
_sps = string(sps->data() + sps->prefixSize(),sps->size() - sps->prefixSize());
|
||||||
_pps = string(pps->data() + pps->prefixSize(),pps->size() - pps->prefixSize());
|
_pps = string(pps->data() + pps->prefixSize(),pps->size() - pps->prefixSize());
|
||||||
parseSps(_sps);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -207,11 +207,7 @@ public:
|
||||||
switch (type){
|
switch (type){
|
||||||
case H264Frame::NAL_SPS:{
|
case H264Frame::NAL_SPS:{
|
||||||
//sps
|
//sps
|
||||||
bool flag = _sps.empty();
|
|
||||||
_sps = string(frame->data() + frame->prefixSize(),frame->size() - frame->prefixSize());
|
_sps = string(frame->data() + frame->prefixSize(),frame->size() - frame->prefixSize());
|
||||||
if(flag && _width == 0){
|
|
||||||
parseSps(_sps);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case H264Frame::NAL_PPS:{
|
case H264Frame::NAL_PPS:{
|
||||||
|
|
@ -261,14 +257,17 @@ public:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_width == 0 && ready()){
|
||||||
|
onReady();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* 解析sps获取宽高fps
|
* 解析sps获取宽高fps
|
||||||
* @param sps sps不含头数据
|
|
||||||
*/
|
*/
|
||||||
void parseSps(const string &sps){
|
void onReady(){
|
||||||
getAVCInfo(sps,_width,_height,_fps);
|
getAVCInfo(_sps,_width,_height,_fps);
|
||||||
}
|
}
|
||||||
Track::Ptr clone() override {
|
Track::Ptr clone() override {
|
||||||
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
|
return std::make_shared<std::remove_reference<decltype(*this)>::type >(*this);
|
||||||
|
|
|
||||||
|
|
@ -161,29 +161,26 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造h265类型的媒体
|
* 构造h265类型的媒体
|
||||||
|
* @param vps vps帧数据
|
||||||
* @param sps sps帧数据
|
* @param sps sps帧数据
|
||||||
* @param pps pps帧数据
|
* @param pps pps帧数据
|
||||||
|
* @param vps_prefix_len 265头长度,可以为3个或4个字节,一般为0x00 00 00 01
|
||||||
* @param sps_prefix_len 265头长度,可以为3个或4个字节,一般为0x00 00 00 01
|
* @param sps_prefix_len 265头长度,可以为3个或4个字节,一般为0x00 00 00 01
|
||||||
* @param pps_prefix_len 265头长度,可以为3个或4个字节,一般为0x00 00 00 01
|
* @param pps_prefix_len 265头长度,可以为3个或4个字节,一般为0x00 00 00 01
|
||||||
*/
|
*/
|
||||||
H265Track(const string &sps, const string &pps, int sps_prefix_len = 4, int pps_prefix_len = 4) {
|
H265Track(const string &vps,const string &sps, const string &pps,int vps_prefix_len = 4, int sps_prefix_len = 4, int pps_prefix_len = 4) {
|
||||||
|
_vps = vps.substr(vps_prefix_len);
|
||||||
_sps = sps.substr(sps_prefix_len);
|
_sps = sps.substr(sps_prefix_len);
|
||||||
_pps = pps.substr(pps_prefix_len);
|
_pps = pps.substr(pps_prefix_len);
|
||||||
parseSps(_sps);
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造h265类型的媒体
|
* 返回不带0x00 00 00 01头的vps
|
||||||
* @param sps sps帧
|
* @return
|
||||||
* @param pps pps帧
|
|
||||||
*/
|
*/
|
||||||
H265Track(const Frame::Ptr &sps, const Frame::Ptr &pps) {
|
const string &getVps() const {
|
||||||
if (sps->getCodecId() != CodecH265 || pps->getCodecId() != CodecH265) {
|
return _vps;
|
||||||
throw std::invalid_argument("必须输入H265类型的帧");
|
|
||||||
}
|
|
||||||
_sps = string(sps->data() + sps->prefixSize(), sps->size() - sps->prefixSize());
|
|
||||||
_pps = string(pps->data() + pps->prefixSize(), pps->size() - pps->prefixSize());
|
|
||||||
parseSps(_sps);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -231,7 +228,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ready() override {
|
bool ready() override {
|
||||||
return !_sps.empty() && !_pps.empty();
|
return !_sps.empty() && !_pps.empty() && !_vps.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -312,13 +309,17 @@ public:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_width == 0 && ready() ){
|
||||||
|
onReady();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* 解析sps获取宽高fps
|
* 解析sps获取宽高fps
|
||||||
* @param sps sps不含头数据
|
* @param sps sps不含头数据
|
||||||
*/
|
*/
|
||||||
void parseSps(const string &sps) {
|
void onReady() {
|
||||||
// getAVCInfo(sps,_width,_height,_fps);
|
// getAVCInfo(sps,_width,_height,_fps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue