@@ -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