Skip to content

Commit cec1f3a

Browse files
Move enqueue call and fixup buffer test
1 parent 1122d74 commit cec1f3a

File tree

4 files changed

+21
-45
lines changed

4 files changed

+21
-45
lines changed

src/internal_modules/roc_pipeline/config.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ bool ReceiverSessionConfig::deduce_defaults(audio::ProcessorMap& processor_map)
9696
return false;
9797
}
9898

99-
if(!prebuf_len) {
99+
if (!prebuf_len) {
100100
prebuf_len = latency.target_latency;
101101
}
102102

src/internal_modules/roc_pipeline/receiver_session_group.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,14 +331,16 @@ ReceiverSessionGroup::route_transport_packet_(const packet::PacketPtr& packet) {
331331
}
332332

333333
if (sess) {
334-
enqueue_prebuf_packet_(packet);
335334
// Session found, route packet to it.
336335
return sess->route_packet(packet);
337336
}
338337

339338
// Session not found, auto-create session if possible.
340339
if (can_create_session_(packet)) {
341340
return create_session_(packet);
341+
} else {
342+
// else, put packet in pre session buffer
343+
enqueue_prebuf_packet_(packet);
342344
}
343345

344346
return status::StatusNoRoute;
@@ -508,7 +510,7 @@ void ReceiverSessionGroup::dequeue_prebuf_packet_(ReceiverSession& sess) {
508510
for (curr = prebuf_packets_.front(); curr; curr = next) {
509511
next = prebuf_packets_.nextof(*curr);
510512

511-
// if packet is too old, remote it from the queue
513+
// if packet is too old, remove it from the queue
512514
core::nanoseconds_t received = curr->udp()->receive_timestamp;
513515
if (now - received > source_config_.session_defaults.prebuf_len) {
514516
prebuf_packets_.remove(*curr);

src/tests/roc_pipeline/test_receiver_source.cpp

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
77
*/
88

9+
#include "roc_core/log.h"
10+
#include "roc_fec/block_writer.h"
911
#include "test_harness.h"
1012
#include "test_helpers/control_reader.h"
1113
#include "test_helpers/control_writer.h"
@@ -20,6 +22,7 @@
2022
#include "roc_pipeline/receiver_source.h"
2123
#include "roc_rtp/encoding_map.h"
2224
#include "roc_stat/mov_aggregate.h"
25+
#include <CppUTest/UtestMacros.h>
2326

2427
// This file contains tests for ReceiverSource. ReceiverSource can be seen as a big
2528
// composite processor (consisting of chained smaller processors) that transforms
@@ -3400,64 +3403,37 @@ TEST(receiver_source, timestamp_mapping_remixing) {
34003403
}
34013404

34023405
TEST(receiver_source, packet_buffer) {
3403-
enum {
3404-
OutputRate = 48000,
3405-
PacketRate = 44100,
3406-
OutputChans = Chans_Stereo,
3407-
PacketChans = Chans_Mono
3408-
};
3409-
3410-
const audio::PcmSubformat OutputFormat = Format_S16_Ne;
3411-
const audio::PcmSubformat PacketFormat = Format_S16_Be;
3412-
3413-
init_with_specs(OutputRate, OutputChans, OutputFormat, PacketRate, PacketChans,
3414-
PacketFormat);
3406+
init_with_defaults();
34153407

34163408
ReceiverSource receiver(make_default_config(), processor_map, encoding_map,
34173409
packet_pool, packet_buffer_pool, frame_pool,
34183410
frame_buffer_pool, arena);
34193411
LONGS_EQUAL(status::StatusOK, receiver.init_status());
34203412

34213413
ReceiverSlot* slot = create_slot(receiver);
3422-
CHECK(slot);
34233414

3424-
packet::FifoQueue queue;
34253415
packet::FifoQueue source_queue;
34263416
packet::FifoQueue repair_queue;
34273417

34283418
packet::IWriter* source_endpoint_writer = create_transport_endpoint(
34293419
slot, address::Iface_AudioSource, address::Proto_RTP_RS8M_Source, dst_addr1);
34303420

3431-
packet::IWriter* repair_endpoint_writer = create_transport_endpoint(
3432-
slot, address::Iface_AudioRepair, address::Proto_RS8M_Repair, dst_addr2);
3433-
3434-
fec::BlockWriterConfig fec_config;
3421+
packet::IWriter* repair_endpoint_writer =
3422+
create_control_endpoint(slot, address::Iface_AudioRepair,
3423+
address::Proto_RS8M_Repair, dst_addr2, repair_queue);
34353424

3436-
test::PacketWriter packet_writer(
3437-
arena, *source_endpoint_writer, *repair_endpoint_writer, encoding_map,
3438-
packet_factory, src_id1, src_addr1, dst_addr1, dst_addr2, PayloadType_Ch2,
3439-
packet::FEC_ReedSolomon_M8, fec_config);
3425+
test::PacketWriter packet_writer(arena, *source_endpoint_writer,
3426+
*repair_endpoint_writer, encoding_map,
3427+
packet_factory, src_id1, src_addr1, dst_addr1,
3428+
dst_addr2, PayloadType_Ch2, fec_scheme, fec_config);
34403429

34413430
// setup reader
34423431
test::FrameReader frame_reader(receiver, frame_factory);
34433432

3444-
packet_writer.write_packets(fec_config.n_source_packets, SamplesPerPacket,
3445-
output_sample_spec);
3446-
3447-
for (int i = 0; i < ManyPackets; ++i) {
3448-
packet::PacketPtr pp;
3449-
LONGS_EQUAL(status::StatusOK, queue.read(pp, packet::ModeFetch));
3450-
CHECK(pp);
3451-
3452-
if (pp->flags() & packet::Packet::FlagAudio) {
3453-
UNSIGNED_LONGS_EQUAL(status::StatusOK, source_queue.write(pp));
3454-
}
3455-
if (pp->flags() & packet::Packet::FlagRepair) {
3456-
UNSIGNED_LONGS_EQUAL(status::StatusOK, repair_queue.write(pp));
3457-
}
3458-
}
3433+
packet_writer.write_packets(Latency / SamplesPerPacket, SamplesPerPacket,
3434+
packet_sample_spec);
34593435

3460-
LONGS_EQUAL(status::StatusOK, receiver.refresh(frame_reader.refresh_ts(), NULL));
3436+
refresh_source(receiver, frame_reader.refresh_ts());
34613437
frame_reader.read_nonzero_samples(SamplesPerFrame, output_sample_spec);
34623438
UNSIGNED_LONGS_EQUAL(1, receiver.num_sessions());
34633439
}

src/tools/roc_recv/main.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
#include "roc_address/io_uri.h"
1010
#include "roc_address/network_uri.h"
11-
#include "roc_address/protocol_map.h"
1211
#include "roc_core/crash_handler.h"
1312
#include "roc_core/heap_arena.h"
1413
#include "roc_core/log.h"
@@ -314,9 +313,8 @@ bool build_receiver_config(const gengetopt_args_info& args,
314313
}
315314

316315
if (args.prebuf_len_given) {
317-
if (!core::parse_duration(
318-
args.prebuf_len_arg,
319-
receiver_config.session_defaults.prebuf_len)) {
316+
if (!core::parse_duration(args.prebuf_len_arg,
317+
receiver_config.session_defaults.prebuf_len)) {
320318
roc_log(LogError, "invalid --prebuf-len: bad format");
321319
return false;
322320
}

0 commit comments

Comments
 (0)