diff --git a/examples/binding.cc b/examples/binding.cc index 97dd02a..c34896f 100644 --- a/examples/binding.cc +++ b/examples/binding.cc @@ -70,8 +70,13 @@ int main(void) { std::cout << "Sending frame " << i + 1 << '/' << AMOUNT_OF_PACKETS << std::endl; + // uvgRTP mandates the existance of NAL units so we fake some std::unique_ptr dummy_frame = std::unique_ptr(new uint8_t[PAYLOAD_LEN]); + memset(dummy_frame.get(), 'a', PAYLOAD_LEN); // payload + memset(dummy_frame.get(), 0, 3); + memset(dummy_frame.get() + 3, 1, 1); + memset(dummy_frame.get() + 4, 1, (19 << 1)); // Intra frame NAL type if (send->push_frame(std::move(dummy_frame), PAYLOAD_LEN, RTP_NO_FLAGS) != RTP_OK) { diff --git a/examples/configuration.cc b/examples/configuration.cc index 0aaf6d4..7aa9a4c 100644 --- a/examples/configuration.cc +++ b/examples/configuration.cc @@ -92,6 +92,10 @@ int main(void) for (int i = 0; i < SEND_TEST_PACKETS; ++i) { auto buffer = std::unique_ptr(new uint8_t[PAYLOAD_LEN]); + memset(buffer.get(), 'a', PAYLOAD_LEN); + memset(buffer.get(), 0, 3); + memset(buffer.get() + 3, 1, 1); + memset(buffer.get() + 4, 1, (19 << 1)); // Intra frame if ((i+1)%10 == 0 || i == 0) // print every 10 frames and first std::cout << "Sending frame " << i + 1 << '/' << SEND_TEST_PACKETS << std::endl; diff --git a/examples/custom_timestamps.cc b/examples/custom_timestamps.cc index 31d825e..2e29f89 100644 --- a/examples/custom_timestamps.cc +++ b/examples/custom_timestamps.cc @@ -75,6 +75,11 @@ int main(void) for (int i = 0; i < SEND_TEST_PACKETS; ++i) { auto buffer = std::unique_ptr(new uint8_t[PAYLOAD_LEN]); + memset(buffer.get(), 'a', PAYLOAD_LEN); + + memset(buffer.get(), 0, 3); // start code prefix + memset(buffer.get() + 3, 1, 1); + memset(buffer.get() + 4, 1, (19 << 1)); // Intra frame // fake timestamp. This way the receiver can play the frames at a lower pace, even if // we generate them really fast. diff --git a/examples/rtcp_hook.cc b/examples/rtcp_hook.cc index d26cb8e..9430e06 100644 --- a/examples/rtcp_hook.cc +++ b/examples/rtcp_hook.cc @@ -82,6 +82,10 @@ int main(void) uint8_t buffer[PAYLOAD_LEN] = { 0 }; memset(buffer, 'a', PAYLOAD_LEN); + memset(buffer, 0, 3); + memset(buffer + 3, 1, 1); + memset(buffer + 4, 1, (19 << 1)); // Intra frame + std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now(); for (unsigned int i = 0; i < SEND_TEST_PACKETS; ++i) diff --git a/examples/sending.cc b/examples/sending.cc index 546ddd2..df36902 100644 --- a/examples/sending.cc +++ b/examples/sending.cc @@ -53,6 +53,10 @@ int main(void) for (int i = 0; i < AMOUNT_OF_TEST_PACKETS; ++i) { std::unique_ptr dummy_frame = std::unique_ptr(new uint8_t[PAYLOAD_LEN]); + memset(dummy_frame.get(), 'a', PAYLOAD_LEN); // NAL payload + memset(dummy_frame.get(), 0, 3); + memset(dummy_frame.get() + 3, 1, 1); + memset(dummy_frame.get() + 4, 1, (19 << 1)); // Intra frame NAL type if ((i+1)%10 == 0 || i == 0) // print every 10 frames and first std::cout << "Sending frame " << i + 1 << '/' << AMOUNT_OF_TEST_PACKETS << std::endl; diff --git a/examples/zrtp_multistream.cc b/examples/zrtp_multistream.cc index 19525c7..d2bb81d 100644 --- a/examples/zrtp_multistream.cc +++ b/examples/zrtp_multistream.cc @@ -183,9 +183,17 @@ void sender_function(uvgrtp::session* sender_session, int flags, std::shared_ptr print_mutex->unlock(); */ - std::unique_ptr dummy_audio_frame = std::unique_ptr(new uint8_t[payload_size]); + std::unique_ptr dummy_frame = std::unique_ptr(new uint8_t[payload_size]); - if (sender_audio_strm->push_frame(std::move(dummy_audio_frame), payload_size, RTP_NO_FLAGS) != RTP_OK) + if (format == RTP_FORMAT_H265 && payload_size >= 5) + { + memset(dummy_frame.get(), 'a', payload_size); // data + memset(dummy_frame.get(), 0, 3); + memset(dummy_frame.get() + 3, 1, 1); + memset(dummy_frame.get() + 4, 1, (19 << 1)); // Intra frame NAL type + } + + if (sender_audio_strm->push_frame(std::move(dummy_frame), payload_size, RTP_NO_FLAGS) != RTP_OK) { std::cerr << "Failed to send frame" << std::endl; }