v3c: Automatically disable Start Code related functionality when format is V3C
This commit is contained in:
parent
15eb553236
commit
b5905bcae2
|
@ -328,7 +328,9 @@ rtp_error_t uvgrtp::formats::h26x::push_media_frame(sockaddr_in& addr, sockaddr_
|
||||||
std::vector<nal_info> nals;
|
std::vector<nal_info> nals;
|
||||||
bool should_aggregate = false;
|
bool should_aggregate = false;
|
||||||
|
|
||||||
if (rtp_flags & RTP_NO_H26X_SCL) {
|
rtp_format_t fmt = rtp_ctx_->get_payload();
|
||||||
|
|
||||||
|
if ((rtp_flags & RTP_NO_H26X_SCL) || (fmt == RTP_FORMAT_V3C)) {
|
||||||
nal_info nal;
|
nal_info nal;
|
||||||
nal.offset = 0;
|
nal.offset = 0;
|
||||||
nal.prefix_len = 0;
|
nal.prefix_len = 0;
|
||||||
|
@ -514,6 +516,10 @@ uvgrtp::frame::rtp_frame* uvgrtp::formats::h26x::allocate_rtp_frame_with_startco
|
||||||
|
|
||||||
void uvgrtp::formats::h26x::prepend_start_code(int rce_flags, uvgrtp::frame::rtp_frame** out)
|
void uvgrtp::formats::h26x::prepend_start_code(int rce_flags, uvgrtp::frame::rtp_frame** out)
|
||||||
{
|
{
|
||||||
|
rtp_format_t fmt = rtp_ctx_->get_payload();
|
||||||
|
if (fmt == RTP_FORMAT_V3C) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!(rce_flags & RCE_NO_H26X_PREPEND_SC)) {
|
if (!(rce_flags & RCE_NO_H26X_PREPEND_SC)) {
|
||||||
uint8_t* pl = new uint8_t[(*out)->payload_len + 4];
|
uint8_t* pl = new uint8_t[(*out)->payload_len + 4];
|
||||||
|
|
||||||
|
@ -960,7 +966,11 @@ rtp_error_t uvgrtp::formats::h26x::reconstruction(uvgrtp::frame::rtp_frame** out
|
||||||
size_t fptr = 0;
|
size_t fptr = 0;
|
||||||
|
|
||||||
// allocating the frame with start code ready saves a copy operation for the frame
|
// allocating the frame with start code ready saves a copy operation for the frame
|
||||||
uvgrtp::frame::rtp_frame* complete = allocate_rtp_frame_with_startcode(!(rce_flags & RCE_NO_H26X_PREPEND_SC),
|
bool start_code = !(rce_flags & RCE_NO_H26X_PREPEND_SC);
|
||||||
|
if (rtp_ctx_->get_payload() == RTP_FORMAT_V3C) {
|
||||||
|
start_code = false;
|
||||||
|
}
|
||||||
|
uvgrtp::frame::rtp_frame* complete = allocate_rtp_frame_with_startcode(start_code,
|
||||||
frame->header, get_nal_header_size() + frames_[frame_timestamp].total_size, fptr);
|
frame->header, get_nal_header_size() + frames_[frame_timestamp].total_size, fptr);
|
||||||
|
|
||||||
// construct the NAL header from fragment header of current fragment
|
// construct the NAL header from fragment header of current fragment
|
||||||
|
|
|
@ -519,10 +519,10 @@ TEST(FormatTests, v3c_single_nal_unit)
|
||||||
if (sess)
|
if (sess)
|
||||||
{
|
{
|
||||||
sender = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
sender = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
||||||
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_V3C, RCE_NO_H26X_PREPEND_SC);
|
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtp_flags = RTP_NO_H26X_SCL;
|
int rtp_flags = RTP_NO_FLAGS;
|
||||||
rtp_format_t format = RTP_FORMAT_V3C;
|
rtp_format_t format = RTP_FORMAT_V3C;
|
||||||
int test_runs = 5;
|
int test_runs = 5;
|
||||||
int size = 8;
|
int size = 8;
|
||||||
|
@ -574,7 +574,7 @@ TEST(FormatTests, v3c_fragmentation)
|
||||||
if (sess)
|
if (sess)
|
||||||
{
|
{
|
||||||
sender = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
sender = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
||||||
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_V3C, RCE_NO_H26X_PREPEND_SC);
|
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_V3C, RCE_NO_FLAGS);
|
||||||
receiver->install_receive_hook(nullptr, v3c_rtp_hook);
|
receiver->install_receive_hook(nullptr, v3c_rtp_hook);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -587,7 +587,7 @@ TEST(FormatTests, v3c_fragmentation)
|
||||||
5000, 7500, 10000, 25000, 50000 });
|
5000, 7500, 10000, 25000, 50000 });
|
||||||
|
|
||||||
// the default packet limit for RTP is 1458 where 12 bytes are dedicated to RTP header
|
// the default packet limit for RTP is 1458 where 12 bytes are dedicated to RTP header
|
||||||
int rtp_flags = RTP_NO_H26X_SCL;
|
int rtp_flags = RTP_NO_FLAGS;
|
||||||
int nal_type = 5;
|
int nal_type = 5;
|
||||||
rtp_format_t format = RTP_FORMAT_V3C;
|
rtp_format_t format = RTP_FORMAT_V3C;
|
||||||
int test_runs = 10;
|
int test_runs = 10;
|
||||||
|
|
Loading…
Reference in New Issue