Refactor RTC publisher, rename pkt to frame

pull/1753/head
winlin 5 years ago
parent 47ed16eda1
commit 45f35e3ec8

@ -1936,22 +1936,22 @@ srs_error_t SrsRtcPublisher::on_audio(SrsRtpPacket2* pkt)
audio_queue_->collect_frames(audio_nack_, frames); audio_queue_->collect_frames(audio_nack_, frames);
for (size_t i = 0; i < frames.size(); ++i) { for (size_t i = 0; i < frames.size(); ++i) {
SrsRtpPacket2* pkt = frames[i]; SrsRtpPacket2* frame = frames[i];
// TODO: FIXME: Check error. // TODO: FIXME: Check error.
collect_audio_frame(pkt); on_audio_frame(frame);
srs_freep(pkt); srs_freep(frame);
} }
return err; return err;
} }
srs_error_t SrsRtcPublisher::collect_audio_frame(SrsRtpPacket2* pkt) srs_error_t SrsRtcPublisher::on_audio_frame(SrsRtpPacket2* frame)
{ {
srs_error_t err = srs_success; srs_error_t err = srs_success;
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(pkt->payload); SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(frame->payload);
if (!payload) { if (!payload) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "OPUS payload"); return srs_error_new(ERROR_RTC_RTP_MUXER, "OPUS payload");
@ -1965,7 +1965,7 @@ srs_error_t SrsRtcPublisher::collect_audio_frame(SrsRtpPacket2* pkt)
SrsMessageHeader header; SrsMessageHeader header;
header.message_type = RTMP_MSG_AudioMessage; header.message_type = RTMP_MSG_AudioMessage;
// TODO: FIXME: Maybe the tbn is not 90k. // TODO: FIXME: Maybe the tbn is not 90k.
header.timestamp = pkt->rtp_header.get_timestamp() / 90; header.timestamp = frame->rtp_header.get_timestamp() / 90;
SrsSharedPtrMessage msg; SrsSharedPtrMessage msg;
// TODO: FIXME: Check error. // TODO: FIXME: Check error.
@ -2000,31 +2000,31 @@ srs_error_t SrsRtcPublisher::on_video(SrsRtpPacket2* pkt)
video_queue_->collect_frames(video_nack_, frames); video_queue_->collect_frames(video_nack_, frames);
for (size_t i = 0; i < frames.size(); ++i) { for (size_t i = 0; i < frames.size(); ++i) {
SrsRtpPacket2* pkt = frames[i]; SrsRtpPacket2* frame = frames[i];
// TODO: FIXME: Check error. // TODO: FIXME: Check error.
collect_video_frame(pkt); on_video_frame(frame);
srs_freep(pkt); srs_freep(frame);
} }
return srs_success; return srs_success;
} }
srs_error_t SrsRtcPublisher::collect_video_frame(SrsRtpPacket2* pkt) srs_error_t SrsRtcPublisher::on_video_frame(SrsRtpPacket2* frame)
{ {
srs_error_t err = srs_success; srs_error_t err = srs_success;
int64_t timestamp = pkt->rtp_header.get_timestamp(); int64_t timestamp = frame->rtp_header.get_timestamp();
// No FU-A, because we convert it to RAW RTP packet. // No FU-A, because we convert it to RAW RTP packet.
if (pkt->nalu_type == (SrsAvcNaluType)kFuA) { if (frame->nalu_type == (SrsAvcNaluType)kFuA) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "invalid FU-A"); return srs_error_new(ERROR_RTC_RTP_MUXER, "invalid FU-A");
} }
// For STAP-A, it must be SPS/PPS, and only one packet. // For STAP-A, it must be SPS/PPS, and only one packet.
if (pkt->nalu_type == (SrsAvcNaluType)kStapA) { if (frame->nalu_type == (SrsAvcNaluType)kStapA) {
SrsRtpSTAPPayload* payload = dynamic_cast<SrsRtpSTAPPayload*>(pkt->payload); SrsRtpSTAPPayload* payload = dynamic_cast<SrsRtpSTAPPayload*>(frame->payload);
if (!payload) { if (!payload) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "STAP-A payload"); return srs_error_new(ERROR_RTC_RTP_MUXER, "STAP-A payload");
} }
@ -2077,7 +2077,7 @@ srs_error_t SrsRtcPublisher::collect_video_frame(SrsRtpPacket2* pkt)
} }
// For RAW NALU, should be one RAW packet. // For RAW NALU, should be one RAW packet.
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(pkt->payload); SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(frame->payload);
if (!payload) { if (!payload) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "RAW-NALU payload"); return srs_error_new(ERROR_RTC_RTP_MUXER, "RAW-NALU payload");
} }
@ -2092,7 +2092,7 @@ srs_error_t SrsRtcPublisher::collect_video_frame(SrsRtpPacket2* pkt)
char* data = new char[nn_payload]; char* data = new char[nn_payload];
SrsBuffer buf(data, nn_payload); SrsBuffer buf(data, nn_payload);
if (pkt->nalu_type == SrsAvcNaluTypeIDR) { if (frame->nalu_type == SrsAvcNaluTypeIDR) {
buf.write_1bytes(0x17); // Keyframe. buf.write_1bytes(0x17); // Keyframe.
srs_trace("RTC got IDR %d bytes", nn_payload); srs_trace("RTC got IDR %d bytes", nn_payload);
} else { } else {

@ -288,9 +288,9 @@ public:
virtual void on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* buf, ISrsCodec** ppayload); virtual void on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* buf, ISrsCodec** ppayload);
private: private:
srs_error_t on_audio(SrsRtpPacket2* pkt); srs_error_t on_audio(SrsRtpPacket2* pkt);
srs_error_t collect_audio_frame(SrsRtpPacket2* pkt); srs_error_t on_audio_frame(SrsRtpPacket2* frame);
srs_error_t on_video(SrsRtpPacket2* pkt); srs_error_t on_video(SrsRtpPacket2* pkt);
srs_error_t collect_video_frame(SrsRtpPacket2* pkt); srs_error_t on_video_frame(SrsRtpPacket2* frame);
public: public:
void request_keyframe(); void request_keyframe();
// interface ISrsHourGlass // interface ISrsHourGlass

Loading…
Cancel
Save