diff options
Diffstat (limited to 'test/testsupport/packet_reader.cc')
-rw-r--r-- | test/testsupport/packet_reader.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/testsupport/packet_reader.cc b/test/testsupport/packet_reader.cc new file mode 100644 index 0000000000..e8859d1065 --- /dev/null +++ b/test/testsupport/packet_reader.cc @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "testsupport/packet_reader.h" + +#include <cassert> +#include <cstdio> + +namespace webrtc { +namespace test { + +PacketReader::PacketReader() + : initialized_(false) {} + +PacketReader::~PacketReader() {} + +void PacketReader::InitializeReading(WebRtc_UWord8* data, + int data_length_in_bytes, + int packet_size_in_bytes) { + assert(data); + assert(data_length_in_bytes >= 0); + assert(packet_size_in_bytes > 0); + data_ = data; + data_length_ = data_length_in_bytes; + packet_size_ = packet_size_in_bytes; + currentIndex_ = 0; + initialized_ = true; +} + +int PacketReader::NextPacket(WebRtc_UWord8** packet_pointer) { + if (!initialized_) { + fprintf(stderr, "Attempting to use uninitialized PacketReader!\n"); + return -1; + } + *packet_pointer = data_ + currentIndex_; + // Check if we're about to read the last packet: + if (data_length_ - currentIndex_ <= packet_size_) { + int size = data_length_ - currentIndex_; + currentIndex_ = data_length_; + assert(size >= 0); + return size; + } + currentIndex_ += packet_size_; + assert(packet_size_ >= 0); + return packet_size_; +} + +} // namespace test +} // namespace webrtc |