12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * Copyright (c) 2013 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.
- */
- #ifndef MODULES_VIDEO_CODING_TEST_STREAM_GENERATOR_H_
- #define MODULES_VIDEO_CODING_TEST_STREAM_GENERATOR_H_
- #include <stdint.h>
- #include <list>
- #include "modules/video_coding/packet.h"
- #include "rtc_base/constructor_magic.h"
- namespace webrtc {
- const unsigned int kDefaultBitrateKbps = 1000;
- const unsigned int kDefaultFrameRate = 25;
- const unsigned int kMaxPacketSize = 1500;
- const unsigned int kFrameSize =
- (kDefaultBitrateKbps + kDefaultFrameRate * 4) / (kDefaultFrameRate * 8);
- const int kDefaultFramePeriodMs = 1000 / kDefaultFrameRate;
- class StreamGenerator {
- public:
- StreamGenerator(uint16_t start_seq_num, int64_t current_time);
- void Init(uint16_t start_seq_num, int64_t current_time);
- // |time_ms| denotes the timestamp you want to put on the frame, and the unit
- // is millisecond. GenerateFrame will translate |time_ms| into a 90kHz
- // timestamp and put it on the frame.
- void GenerateFrame(VideoFrameType type,
- int num_media_packets,
- int num_empty_packets,
- int64_t time_ms);
- bool PopPacket(VCMPacket* packet, int index);
- void DropLastPacket();
- bool GetPacket(VCMPacket* packet, int index);
- bool NextPacket(VCMPacket* packet);
- uint16_t NextSequenceNumber() const;
- int PacketsRemaining() const;
- private:
- VCMPacket GeneratePacket(uint16_t sequence_number,
- uint32_t timestamp,
- unsigned int size,
- bool first_packet,
- bool marker_bit,
- VideoFrameType type);
- std::list<VCMPacket>::iterator GetPacketIterator(int index);
- std::list<VCMPacket> packets_;
- uint16_t sequence_number_;
- int64_t start_time_;
- uint8_t packet_buffer_[kMaxPacketSize];
- RTC_DISALLOW_COPY_AND_ASSIGN(StreamGenerator);
- };
- } // namespace webrtc
- #endif // MODULES_VIDEO_CODING_TEST_STREAM_GENERATOR_H_
|