@@ -1762,6 +1762,62 @@ IGNORE_TEST(receiver_source, timestamp_mapping_remixing) {
1762
1762
CHECK (first_ts);
1763
1763
}
1764
1764
1765
+ TEST (receiver_source, packet_buffer) {
1766
+ enum { Rate = SampleRate, Chans = Chans_Stereo, MaxPackets = 10 };
1767
+
1768
+ init (Rate, Chans, Rate, Chans);
1769
+
1770
+ ReceiverConfig config = make_config ();
1771
+ config.default_session .prebuf_len = 0 ;
1772
+ ReceiverSource receiver (config, format_map, packet_factory, byte_buffer_factory,
1773
+ sample_buffer_factory, arena);
1774
+ CHECK (receiver.is_valid ());
1775
+
1776
+ ReceiverSlot* slot = create_slot (receiver);
1777
+ CHECK (slot);
1778
+
1779
+ packet::Queue queue;
1780
+ packet::Queue source_queue;
1781
+ packet::Queue repair_queue;
1782
+
1783
+ packet::IWriter* source_endpoint_writer =
1784
+ create_endpoint (slot, address::Iface_AudioSource, address::Proto_RTP_RS8M_Source);
1785
+ CHECK (source_endpoint_writer);
1786
+
1787
+ packet::IWriter* repair_endpoint_writer =
1788
+ create_endpoint (slot, address::Iface_AudioRepair, address::Proto_RS8M_Repair);
1789
+ CHECK (repair_endpoint_writer);
1790
+
1791
+ fec::WriterConfig fec_config;
1792
+
1793
+ test::PacketWriter packet_writer (
1794
+ arena, queue, queue, format_map, packet_factory, byte_buffer_factory, src1, dst1,
1795
+ dst2, PayloadType_Ch2, packet::FEC_ReedSolomon_M8, fec_config);
1796
+
1797
+ // setup reader
1798
+ test::FrameReader frame_reader (receiver, sample_buffer_factory);
1799
+
1800
+ packet_writer.write_packets (fec_config.n_source_packets , SamplesPerPacket,
1801
+ output_sample_spec);
1802
+
1803
+ for (int i = 0 ; i < ManyPackets; ++i) {
1804
+ packet::PacketPtr pp;
1805
+ UNSIGNED_LONGS_EQUAL (status::StatusOK, queue.read (pp));
1806
+ CHECK (pp);
1807
+
1808
+ if (pp->flags () & packet::Packet::FlagAudio) {
1809
+ UNSIGNED_LONGS_EQUAL (status::StatusOK, source_queue.write (pp));
1810
+ }
1811
+ if (pp->flags () & packet::Packet::FlagRepair) {
1812
+ UNSIGNED_LONGS_EQUAL (status::StatusOK, repair_queue.write (pp));
1813
+ }
1814
+ }
1815
+
1816
+ receiver.refresh (frame_reader.refresh_ts ());
1817
+ frame_reader.read_nonzero_samples (SamplesPerFrame, output_sample_spec);
1818
+ UNSIGNED_LONGS_EQUAL (1 , receiver.num_sessions ());
1819
+ }
1820
+
1765
1821
TEST (receiver_source, metrics_sessions) {
1766
1822
enum { Rate = SampleRate, Chans = Chans_Stereo, MaxSess = 10 };
1767
1823
0 commit comments