[feat] refactor h264 frame assember

This commit is contained in:
dijunkun
2025-03-26 17:39:47 +08:00
parent 28dc9bf62d
commit 0f07058fb9
7 changed files with 194 additions and 4 deletions

View File

@@ -195,6 +195,27 @@ void RtpVideoReceiver::InsertRtpPacket(RtpPacket& rtp_packet) {
ProcessAv1RtpPacket(rtp_packet_av1);
} else if (rtp_packet.PayloadType() == rtp::PAYLOAD_TYPE::H264 ||
rtp_packet.PayloadType() == rtp::PAYLOAD_TYPE::H264 - 1) {
// std::unique_ptr<RtpPacketH264> rtp_packet_h264 =
// std::make_unique<RtpPacketH264>();
// if (rtp_packet_h264->Build(rtp_packet.Buffer().data(),
// rtp_packet.Size())) {
// std::vector<std::unique_ptr<RtpPacketH264>> complete_frame = std::move(
// h264_frame_assembler_.InsertPacket(std::move(rtp_packet_h264)));
// if (!complete_frame.empty()) {
// for (auto& frame : complete_frame) {
// ReceivedFrame received_frame(frame->Payload(),
// frame->PayloadSize());
// received_frame.SetReceivedTimestamp(clock_->CurrentTime().us());
// received_frame.SetCapturedTimestamp(
// (static_cast<int64_t>(frame->Timestamp()) /
// rtp::kMsToRtpTimestamp -
// delta_ntp_internal_ms_) *
// 1000);
// compelete_video_frame_queue_.push(received_frame);
// }
// }
// }
RtpPacketH264 rtp_packet_h264;
if (rtp_packet_h264.Build(rtp_packet.Buffer().data(), rtp_packet.Size())) {
rtp_packet_h264.GetFrameHeaderInfo();

View File

@@ -11,6 +11,7 @@
#include "api/clock/clock.h"
#include "clock/system_clock.h"
#include "fec_decoder.h"
#include "h264_frame_assember.h"
#include "io_statistics.h"
#include "nack_requester.h"
#include "receive_side_congestion_controller.h"
@@ -125,6 +126,7 @@ class RtpVideoReceiver : public ThreadBase,
missing_sequence_numbers_;
std::unordered_map<uint64_t, uint16_t> fua_end_sequence_numbers_;
std::unordered_map<uint64_t, int64_t> missing_sequence_numbers_wait_time_;
H264FrameAssembler h264_frame_assembler_;
private:
std::thread rtcp_thread_;