OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 uint32_t flexfec_ssrc; | 32 uint32_t flexfec_ssrc; |
33 memcpy(&flexfec_ssrc, data + 0, 4); | 33 memcpy(&flexfec_ssrc, data + 0, 4); |
34 uint16_t flexfec_seq_num; | 34 uint16_t flexfec_seq_num; |
35 memcpy(&flexfec_seq_num, data + 4, 2); | 35 memcpy(&flexfec_seq_num, data + 4, 2); |
36 uint32_t media_ssrc; | 36 uint32_t media_ssrc; |
37 memcpy(&media_ssrc, data + 6, 4); | 37 memcpy(&media_ssrc, data + 6, 4); |
38 uint16_t media_seq_num; | 38 uint16_t media_seq_num; |
39 memcpy(&media_seq_num, data + 10, 2); | 39 memcpy(&media_seq_num, data + 10, 2); |
40 | 40 |
41 DummyCallback callback; | 41 DummyCallback callback; |
42 std::unique_ptr<FlexfecReceiver> receiver = | 42 FlexfecReceiver receiver(flexfec_ssrc, media_ssrc, &callback); |
43 FlexfecReceiver::Create(flexfec_ssrc, media_ssrc, &callback); | |
44 | 43 |
45 std::unique_ptr<uint8_t[]> packet; | 44 std::unique_ptr<uint8_t[]> packet; |
46 size_t packet_length; | 45 size_t packet_length; |
47 size_t i = kMinDataNeeded; | 46 size_t i = kMinDataNeeded; |
48 while (i < size) { | 47 while (i < size) { |
49 packet_length = kRtpHeaderSize + data[i++]; | 48 packet_length = kRtpHeaderSize + data[i++]; |
50 packet = std::unique_ptr<uint8_t[]>(new uint8_t[packet_length]); | 49 packet = std::unique_ptr<uint8_t[]>(new uint8_t[packet_length]); |
51 if (i + packet_length >= size) { | 50 if (i + packet_length >= size) { |
52 break; | 51 break; |
53 } | 52 } |
54 memcpy(packet.get(), data + i, packet_length); | 53 memcpy(packet.get(), data + i, packet_length); |
55 i += packet_length; | 54 i += packet_length; |
56 if (i < size && data[i++] % 2 == 0) { | 55 if (i < size && data[i++] % 2 == 0) { |
57 // Simulate FlexFEC packet. | 56 // Simulate FlexFEC packet. |
58 ByteWriter<uint16_t>::WriteBigEndian(packet.get() + 2, flexfec_seq_num++); | 57 ByteWriter<uint16_t>::WriteBigEndian(packet.get() + 2, flexfec_seq_num++); |
59 ByteWriter<uint32_t>::WriteBigEndian(packet.get() + 8, flexfec_ssrc); | 58 ByteWriter<uint32_t>::WriteBigEndian(packet.get() + 8, flexfec_ssrc); |
60 } else { | 59 } else { |
61 // Simulate media packet. | 60 // Simulate media packet. |
62 ByteWriter<uint16_t>::WriteBigEndian(packet.get() + 2, media_seq_num++); | 61 ByteWriter<uint16_t>::WriteBigEndian(packet.get() + 2, media_seq_num++); |
63 ByteWriter<uint32_t>::WriteBigEndian(packet.get() + 8, media_ssrc); | 62 ByteWriter<uint32_t>::WriteBigEndian(packet.get() + 8, media_ssrc); |
64 } | 63 } |
65 receiver->AddAndProcessReceivedPacket(packet.get(), packet_length); | 64 receiver.AddAndProcessReceivedPacket(packet.get(), packet_length); |
66 } | 65 } |
67 } | 66 } |
68 | 67 |
69 } // namespace webrtc | 68 } // namespace webrtc |
OLD | NEW |