mirror of
https://github.com/ossrs/srs.git
synced 2025-02-15 04:42:04 +00:00
Refactor RTC publisher, rename pkt to frame
This commit is contained in:
parent
47ed16eda1
commit
45f35e3ec8
2 changed files with 18 additions and 18 deletions
|
@ -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…
Reference in a new issue