Skip to content

Commit

Permalink
Add broken code for review
Browse files Browse the repository at this point in the history
  • Loading branch information
ForeverASilver committed Oct 18, 2023
1 parent 0f40ec4 commit 468a3a0
Showing 1 changed file with 97 additions and 0 deletions.
97 changes: 97 additions & 0 deletions src/tests/roc_pipeline/test_receiver_source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#include "test_helpers/control_writer.h"
#include "test_helpers/frame_reader.h"
#include "test_helpers/packet_sender.h"
#include "test_helpers/packet_writer.h"

#include "roc_address/interface.h"
Expand All @@ -23,6 +24,10 @@
#include "roc_rtp/composer.h"
#include "roc_rtp/format_map.h"

#include "roc_fec/composer.h"
#include "roc_fec/headers.h"
#include "roc_fec/writer.h"

namespace roc {
namespace pipeline {

Expand Down Expand Up @@ -60,6 +65,11 @@ packet::PacketFactory packet_factory(arena);
rtp::FormatMap format_map(arena);
rtp::Composer rtp_composer(NULL);

fec::Composer<fec::LDPC_Source_PayloadID, fec::Source, fec::Footer>
ldpc_source_composer(&rtp_composer);
fec::Composer<fec::LDPC_Repair_PayloadID, fec::Repair, fec::Header>
ldpc_repair_composer(NULL);

ReceiverSlot* create_slot(ReceiverSource& source) {
ReceiverSlot* slot = source.create_slot();
CHECK(slot);
Expand Down Expand Up @@ -1780,6 +1790,93 @@ IGNORE_TEST(receiver_source, timestamp_mapping_remixing) {
CHECK(first_ts);
}

packet::PacketPtr fill_one_packet(size_t sn,
size_t fec_payload_size = 193,
packet::IComposer* composer = NULL) {
CHECK(fec_payload_size > sizeof(rtp::Header));
const size_t rtp_payload_size = fec_payload_size - sizeof(rtp::Header);

packet::PacketPtr pp = packet_factory.new_packet();
CHECK(pp);

core::Slice<uint8_t> bp = byte_buffer_factory.new_buffer();
CHECK(bp);

if (!composer) {
composer = &ldpc_source_composer;
}
CHECK(composer->prepare(*pp, bp, rtp_payload_size));

pp->set_data(bp);

UNSIGNED_LONGS_EQUAL(rtp_payload_size, pp->rtp()->payload.size());
UNSIGNED_LONGS_EQUAL(fec_payload_size, pp->fec()->payload.size());

pp->add_flags(packet::Packet::FlagAudio);

pp->rtp()->source = 555;
pp->rtp()->payload_type = rtp::PayloadType_L16_Stereo;
pp->rtp()->seqnum = packet::seqnum_t(sn);
pp->rtp()->stream_timestamp = packet::stream_timestamp_t(sn * 10);

for (size_t i = 0; i < rtp_payload_size; i++) {
pp->rtp()->payload.data()[i] = uint8_t(sn + i);
}

return pp;
}

TEST(receiver_source, packet_buffer) {
packet::PacketPtr source_packets[20];

enum { Rate = SampleRate, Chans = Chans_Stereo, MaxPackets = 10 };

init(Rate, Chans, Rate, Chans);

ReceiverConfig config = make_config();
config.default_session.prebuf_len = 0;
ReceiverSource receiver(config, format_map, packet_factory, byte_buffer_factory,
sample_buffer_factory, arena);
CHECK(receiver.is_valid());

ReceiverSlot* slot = create_slot(receiver);
CHECK(slot);

packet::IWriter* endpoint1_writer =
create_endpoint(slot, address::Iface_AudioSource, proto1);
CHECK(endpoint1_writer);

fec::WriterConfig writerConfig;
fec::CodecConfig codecConfig;
codecConfig.scheme = packet::FEC_LDPC_Staircase;

// setup encoder
core::ScopedPtr<fec::IBlockEncoder> encoder(
fec::CodecMap::instance().new_encoder(codecConfig, byte_buffer_factory, arena),
arena);
CHECK(encoder);

// setup fec writer
fec::Writer fec_writer(writerConfig, packet::FEC_LDPC_Staircase, *encoder,
*endpoint1_writer, ldpc_source_composer, ldpc_repair_composer,
packet_factory, byte_buffer_factory, arena);
CHECK(fec_writer.is_valid());

test::PacketWriter packet_writer(arena, fec_writer, ldpc_source_composer, format_map,
packet_factory, byte_buffer_factory, PayloadType_Ch2,
src1, dst1);

// setup reader
test::FrameReader frame_reader(receiver, sample_buffer_factory);

packet_writer.write_packets(writerConfig.n_source_packets, SamplesPerPacket,
output_sample_spec);

receiver.refresh(frame_reader.refresh_ts());
frame_reader.read_zero_samples(SamplesPerFrame, output_sample_spec);
UNSIGNED_LONGS_EQUAL(0, receiver.num_sessions());
}

TEST(receiver_source, metrics_sessions) {
enum { Rate = SampleRate, Chans = Chans_Stereo, MaxSess = 10 };

Expand Down

0 comments on commit 468a3a0

Please sign in to comment.