mikhal@webrtc.org 381da4be9c VCM: Adding API for the size(duration) of the jitter buffer.
Refers to the duration in time of the frames which are ready to be sent to the decoder.

Review URL: https://webrtc-codereview.appspot.com/1319004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3903 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-25 21:45:29 +00:00

73 lines
2.2 KiB
C++

/*
* 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 WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_STREAM_GENERATOR_H_
#define WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_STREAM_GENERATOR_H_
#include <string.h>
#include <list>
#include "webrtc/modules/video_coding/main/source/packet.h"
#include "webrtc/modules/video_coding/main/test/test_util.h"
namespace webrtc {
const unsigned int kDefaultBitrateKbps = 1000;
enum { kDefaultFrameRate = 25u };
const unsigned int kMaxPacketSize = 1500;
const unsigned int kFrameSize = (kDefaultBitrateKbps + kDefaultFrameRate * 4) /
(kDefaultFrameRate * 8);
enum { kDefaultFramePeriodMs = 1000u / kDefaultFrameRate };
class StreamGenerator {
public:
StreamGenerator(uint16_t start_seq_num, uint32_t start_timestamp,
int64_t current_time);
void Init(uint16_t start_seq_num, uint32_t start_timestamp,
int64_t current_time);
void GenerateFrame(FrameType type, int num_media_packets,
int num_empty_packets, int64_t current_time);
VCMPacket GeneratePacket(uint16_t sequence_number,
uint32_t timestamp,
unsigned int size,
bool first_packet,
bool marker_bit,
FrameType type);
bool PopPacket(VCMPacket* packet, int index);
bool GetPacket(VCMPacket* packet, int index);
bool NextPacket(VCMPacket* packet);
uint16_t NextSequenceNumber() const;
int PacketsRemaining() const;
private:
std::list<VCMPacket>::iterator GetPacketIterator(int index);
std::list<VCMPacket> packets_;
uint16_t sequence_number_;
uint32_t timestamp_;
int64_t start_time_;
uint8_t packet_buffer[kMaxPacketSize];
DISALLOW_COPY_AND_ASSIGN(StreamGenerator);
};
} // namespace webrtc
#endif // WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_STREAM_GENERATOR_H_