@@ -32,9 +32,10 @@ const uint8_t naluTypeSTAPA = 24;
32
32
const uint8_t naluTypeFUA = 28 ;
33
33
34
34
message_vector H264RtpDepacketizer::buildFrames (message_vector::iterator begin,
35
- message_vector::iterator end) {
35
+ message_vector::iterator end, uint32_t timestamp ) {
36
36
message_vector out = {};
37
37
auto fua_buffer = std::vector<std::byte>{};
38
+ auto media_sample = std::make_shared<MediaSample>(timestamp);
38
39
39
40
for (auto it = begin; it != end; it++) {
40
41
auto pkt = it->get ();
@@ -58,11 +59,13 @@ message_vector H264RtpDepacketizer::buildFrames(message_vector::iterator begin,
58
59
fua_buffer.at (0 ) =
59
60
std::byte (nalUnitHeader.idc () | nalUnitFragmentHeader.unitType ());
60
61
61
- out.push_back (make_message (std::move (fua_buffer)));
62
+ out.push_back (
63
+ make_message (std::move (fua_buffer), Message::Binary, 0 , nullptr , media_sample));
62
64
fua_buffer.clear ();
63
65
}
64
66
} else if (nalUnitHeader.unitType () > 0 && nalUnitHeader.unitType () < 24 ) {
65
- out.push_back (make_message (pkt->begin () + headerSize, pkt->end ()));
67
+ out.push_back (make_message (pkt->begin () + headerSize, pkt->end (), Message::Binary, 0 ,
68
+ nullptr , media_sample));
66
69
} else if (nalUnitHeader.unitType () == naluTypeSTAPA) {
67
70
auto currOffset = stapaHeaderSize + headerSize;
68
71
@@ -76,11 +79,11 @@ message_vector H264RtpDepacketizer::buildFrames(message_vector::iterator begin,
76
79
throw std::runtime_error (" STAP-A declared size is larger then buffer" );
77
80
}
78
81
79
- out.push_back (
80
- make_message (pkt->begin () + currOffset, pkt->begin () + currOffset + naluSize));
82
+ out.push_back (make_message (pkt->begin () + currOffset,
83
+ pkt->begin () + currOffset + naluSize, Message::Binary, 0 ,
84
+ nullptr , media_sample));
81
85
currOffset += naluSize;
82
86
}
83
-
84
87
} else {
85
88
throw std::runtime_error (" Unknown H264 RTP Packetization" );
86
89
}
@@ -128,7 +131,7 @@ void H264RtpDepacketizer::incoming(message_vector &messages, const message_callb
128
131
auto begin = mRtpBuffer .begin ();
129
132
auto end = mRtpBuffer .begin () + (packets_in_timestamp - 1 );
130
133
131
- auto frames = buildFrames (begin, end + 1 );
134
+ auto frames = buildFrames (begin, end + 1 , current_timestamp );
132
135
messages.insert (messages.end (), frames.begin (), frames.end ());
133
136
mRtpBuffer .erase (mRtpBuffer .begin (), mRtpBuffer .begin () + packets_in_timestamp);
134
137
}
0 commit comments