完善工程模式对象已经AACTrack

This commit is contained in:
xiongziliang
2018-10-24 18:41:37 +08:00
parent 13ca78939c
commit de50bf03a9
3 changed files with 83 additions and 0 deletions

View File

@@ -232,6 +232,12 @@ class AACTrack : public AudioTrack{
public:
typedef std::shared_ptr<AACTrack> Ptr;
/**
* 延后获取adts头信息
* 在随后的inputFrame中获取adts头信息
*/
AACTrack(){}
/**
* 构造aac类型的媒体
* @param aac_cfg aac两个字节的配置信息
@@ -285,6 +291,16 @@ public:
return CodecAAC;
}
/**
* 在获取aac_cfg前是无效的Track
* @return
*/
TrackType getTrackType() const override {
if(_cfg.empty()){
return TrackInvalid;
}
return TrackAudio;
}
/**
* 返回音频采样率
* @return
@@ -307,6 +323,18 @@ public:
return _channel;
}
/**
* 输入数据帧,并获取aac_cfg
* @param frame 数据帧
*/
void inputFrame(const Frame::Ptr &frame) override{
if(_cfg.empty() && frame->prefixSize() == 7){
//7个字节的adts头
_cfg = makeAdtsConfig(reinterpret_cast<const uint8_t *>(frame->data()));
parseAacCfg(_cfg);
}
AudioTrack::inputFrame(frame);
}
private:
/**
* 解析2个字节的aac配置