blob: c68d2647f20beb2142877558686764783f4b6571 [file] [log] [blame]
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +02001/*
2 * Copyright (c) 2015 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
11#ifndef WEBRTC_AUDIO_RECEIVE_STREAM_H_
12#define WEBRTC_AUDIO_RECEIVE_STREAM_H_
13
Fredrik Solenberg04f49312015-06-08 13:04:56 +020014#include <map>
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020015#include <string>
16#include <vector>
17
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020018#include "webrtc/config.h"
Fredrik Solenberg04f49312015-06-08 13:04:56 +020019#include "webrtc/typedefs.h"
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020020
21namespace webrtc {
22
Fredrik Solenberg04f49312015-06-08 13:04:56 +020023class AudioDecoder;
24
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020025class AudioReceiveStream {
26 public:
Fredrik Solenberg04f49312015-06-08 13:04:56 +020027 struct Stats {};
28
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020029 struct Config {
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020030 std::string ToString() const;
31
32 // Receive-stream specific RTP settings.
33 struct Rtp {
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020034 std::string ToString() const;
35
36 // Synchronization source (stream identifier) to be received.
Fredrik Solenberg04f49312015-06-08 13:04:56 +020037 uint32_t remote_ssrc = 0;
38
39 // Sender SSRC used for sending RTCP (such as receiver reports).
40 uint32_t local_ssrc = 0;
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020041
42 // RTP header extensions used for the received stream.
43 std::vector<RtpExtension> extensions;
44 } rtp;
Fredrik Solenberg04f49312015-06-08 13:04:56 +020045
46 // Decoders for every payload that we can receive. Call owns the
47 // AudioDecoder instances once the Config is submitted to
48 // Call::CreateReceiveStream().
49 // TODO(solenberg): Use unique_ptr<> once our std lib fully supports C++11.
50 std::map<uint8_t, AudioDecoder*> decoder_map;
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020051 };
52
Fredrik Solenberg04f49312015-06-08 13:04:56 +020053 virtual Stats GetStats() const = 0;
54
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020055 protected:
56 virtual ~AudioReceiveStream() {}
57};
Fredrik Solenberg23fba1f2015-04-29 15:24:01 +020058} // namespace webrtc
59
60#endif // WEBRTC_AUDIO_RECEIVE_STREAM_H_