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);
for (size_t i = 0; i < frames.size(); ++i) {
SrsRtpPacket2* pkt = frames[i];
SrsRtpPacket2* frame = frames[i];
// TODO: FIXME: Check error.
collect_audio_frame(pkt);
on_audio_frame(frame);
srs_freep(pkt);
srs_freep(frame);
}
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;
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(pkt->payload);
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(frame->payload);
if (!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;
header.message_type = RTMP_MSG_AudioMessage;
// 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;
// TODO: FIXME: Check error.
@ -2000,31 +2000,31 @@ srs_error_t SrsRtcPublisher::on_video(SrsRtpPacket2* pkt)
video_queue_->collect_frames(video_nack_, frames);
for (size_t i = 0; i < frames.size(); ++i) {
SrsRtpPacket2* pkt = frames[i];
SrsRtpPacket2* frame = frames[i];
// TODO: FIXME: Check error.
collect_video_frame(pkt);
on_video_frame(frame);
srs_freep(pkt);
srs_freep(frame);
}
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;
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.
if (pkt->nalu_type == (SrsAvcNaluType)kFuA) {
if (frame->nalu_type == (SrsAvcNaluType)kFuA) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "invalid FU-A");
}
// For STAP-A, it must be SPS/PPS, and only one packet.
if (pkt->nalu_type == (SrsAvcNaluType)kStapA) {
SrsRtpSTAPPayload* payload = dynamic_cast<SrsRtpSTAPPayload*>(pkt->payload);
if (frame->nalu_type == (SrsAvcNaluType)kStapA) {
SrsRtpSTAPPayload* payload = dynamic_cast<SrsRtpSTAPPayload*>(frame->payload);
if (!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.
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(pkt->payload);
SrsRtpRawPayload* payload = dynamic_cast<SrsRtpRawPayload*>(frame->payload);
if (!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];
SrsBuffer buf(data, nn_payload);
if (pkt->nalu_type == SrsAvcNaluTypeIDR) {
if (frame->nalu_type == SrsAvcNaluTypeIDR) {
buf.write_1bytes(0x17); // Keyframe.
srs_trace("RTC got IDR %d bytes", nn_payload);
} else {

@ -288,9 +288,9 @@ public:
virtual void on_before_decode_payload(SrsRtpPacket2* pkt, SrsBuffer* buf, ISrsCodec** ppayload);
private:
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 collect_video_frame(SrsRtpPacket2* pkt);
srs_error_t on_video_frame(SrsRtpPacket2* frame);
public:
void request_keyframe();
// interface ISrsHourGlass

Loading…
Cancel
Save