Skip to content

Commit c8fb3c4

Browse files
authored
Merge pull request #24 from nabto/sc3948-repacketizer
fixed the repacetizer
2 parents 93f9823 + 5e73a1c commit c8fb3c4

File tree

1 file changed

+29
-33
lines changed

1 file changed

+29
-33
lines changed

examples/libdatachannel/src/common/rtp_repacketizer/h264_repacketizer.hpp

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,47 +19,43 @@ class H264Repacketizer : public RtpRepacketizer {
1919
H264Repacketizer(std::shared_ptr<rtc::RtpPacketizationConfig> rtpConf)
2020
: RtpRepacketizer(rtpConf->ssrc, rtpConf->payloadType),
2121
rtpConf_(rtpConf) {
22-
packet_ = std::make_shared<rtc::H264RtpPacketizer>(
23-
rtc::NalUnit::Separator::LongStartSequence, rtpConf_);
22+
depacketizerMediaHandler_ = std::make_shared<rtc::MediaHandler>();
23+
depacketizerMediaHandler_->addToChain(std::make_shared<rtc::H264RtpDepacketizer>(rtc::H264RtpDepacketizer()));
24+
25+
repacketizerMediaHandler_ = std::make_shared<rtc::MediaHandler>();
26+
27+
repacketizerMediaHandler_->addToChain(std::make_shared<rtc::H264RtpPacketizer>(rtc::H264RtpPacketizer(rtc::NalUnit::Separator::LongStartSequence, rtpConf)));
2428
}
2529

2630
std::vector<std::vector<uint8_t>> handlePacket(std::vector<uint8_t> data) {
27-
// TODO fix the packetizer in 0.23.1
2831
std::vector<std::vector<uint8_t>> ret;
29-
ret.push_back(data);
32+
if (data.size() < 2 || data.at(1) == 200) {
33+
// ignore RTCP packets for now
34+
return ret;
35+
}
36+
37+
auto src = reinterpret_cast<const std::byte*>(data.data());
38+
rtc::message_ptr msg =
39+
std::make_shared<rtc::Message>(src, src + data.size());
40+
41+
rtc::message_vector vec;
42+
vec.push_back(msg);
43+
44+
depacketizerMediaHandler_->incomingChain(vec, nullptr);
45+
46+
repacketizerMediaHandler_->outgoingChain(vec, nullptr);
47+
for (auto m : vec) {
48+
uint8_t* src = (uint8_t*)m->data();
49+
ret.push_back(std::vector<uint8_t>(src, src + m->size()));
50+
}
3051
return ret;
31-
// std::vector<std::vector<uint8_t>> ret;
32-
// if (data.size() < 2 || data.at(1) == 200) {
33-
// // ignore RTCP packets for now
34-
// return ret;
35-
// }
36-
37-
// auto src = reinterpret_cast<const std::byte*>(data.data());
38-
// rtc::message_ptr msg =
39-
// std::make_shared<rtc::Message>(src, src + data.size());
40-
41-
// rtc::message_vector vec;
42-
// vec.push_back(msg);
43-
44-
// depacket_.reassemble(vec);
45-
// depacket_.incoming(vec, [](rtc::message_ptr message) {});
46-
// depacket_.incoming(vec, nullptr);
47-
48-
// if (vec.size() > 0) {
49-
// rtpConf_->timestamp = vec[0]->frameInfo->timestamp;
50-
// packet_->outgoing(vec, nullptr);
51-
52-
// for (auto m : vec) {
53-
// uint8_t* src = (uint8_t*)m->data();
54-
// ret.push_back(std::vector<uint8_t>(src, src + m->size()));
55-
// }
56-
// }
57-
// return ret;
5852
}
5953

6054
private:
61-
rtc::H264RtpDepacketizer depacket_;
62-
std::shared_ptr<rtc::H264RtpPacketizer> packet_ = nullptr;
55+
std::shared_ptr<rtc::MediaHandler> depacketizerMediaHandler_;
56+
std::shared_ptr<rtc::MediaHandler> repacketizerMediaHandler_;
57+
// rtc::H264RtpDepacketizer depacket_;
58+
// std::shared_ptr<rtc::H264RtpPacketizer> packet_ = nullptr;
6359
std::shared_ptr<rtc::RtpPacketizationConfig> rtpConf_ = nullptr;
6460
};
6561

0 commit comments

Comments
 (0)