blob: 54552bd0f5f8434ae60041a019ce7bc07306c0f7 [file] [log] [blame]
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +00001/*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
pbos@webrtc.org20a5c462013-05-27 08:02:22 +000011#include "webrtc/test/testsupport/packet_reader.h"
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000012
pbos@webrtc.org3f45c2e2013-08-05 16:22:53 +000013#include <assert.h>
14#include <stdio.h>
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000015
16namespace webrtc {
17namespace test {
18
19PacketReader::PacketReader()
20 : initialized_(false) {}
21
22PacketReader::~PacketReader() {}
23
pbos@webrtc.org91cab712013-04-09 11:10:21 +000024void PacketReader::InitializeReading(uint8_t* data,
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000025 int data_length_in_bytes,
26 int packet_size_in_bytes) {
27 assert(data);
28 assert(data_length_in_bytes >= 0);
29 assert(packet_size_in_bytes > 0);
30 data_ = data;
31 data_length_ = data_length_in_bytes;
32 packet_size_ = packet_size_in_bytes;
33 currentIndex_ = 0;
34 initialized_ = true;
35}
36
pbos@webrtc.org91cab712013-04-09 11:10:21 +000037int PacketReader::NextPacket(uint8_t** packet_pointer) {
andrew@webrtc.orgb015cbe2012-10-22 18:19:23 +000038 if (!initialized_) {
39 fprintf(stderr, "Attempting to use uninitialized PacketReader!\n");
40 return -1;
41 }
42 *packet_pointer = data_ + currentIndex_;
43 // Check if we're about to read the last packet:
44 if (data_length_ - currentIndex_ <= packet_size_) {
45 int size = data_length_ - currentIndex_;
46 currentIndex_ = data_length_;
47 assert(size >= 0);
48 return size;
49 }
50 currentIndex_ += packet_size_;
51 assert(packet_size_ >= 0);
52 return packet_size_;
53}
54
55} // namespace test
56} // namespace webrtc