OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #ifndef WEBRTC_VIDEO_RECEIVE_STREAM_H_ | 11 #ifndef WEBRTC_CALL_VIDEO_RECEIVE_STREAM_H_ |
12 #define WEBRTC_VIDEO_RECEIVE_STREAM_H_ | 12 #define WEBRTC_CALL_VIDEO_RECEIVE_STREAM_H_ |
13 | 13 |
14 #include <limits> | 14 #include <limits> |
15 #include <map> | 15 #include <map> |
16 #include <string> | 16 #include <string> |
17 #include <vector> | 17 #include <vector> |
18 | 18 |
19 #include "webrtc/api/call/transport.h" | 19 #include "webrtc/api/call/transport.h" |
20 #include "webrtc/common_types.h" | 20 #include "webrtc/common_types.h" |
21 #include "webrtc/common_video/include/frame_callback.h" | 21 #include "webrtc/common_video/include/frame_callback.h" |
22 #include "webrtc/config.h" | 22 #include "webrtc/config.h" |
23 #include "webrtc/media/base/videosinkinterface.h" | 23 #include "webrtc/media/base/videosinkinterface.h" |
24 #include "webrtc/rtc_base/platform_file.h" | 24 #include "webrtc/rtc_base/platform_file.h" |
25 | 25 |
26 namespace webrtc { | 26 namespace webrtc { |
27 | 27 |
28 class RtpPacketSinkInterface; | 28 class RtpPacketSinkInterface; |
29 class VideoDecoder; | 29 class VideoDecoder; |
30 | 30 |
31 class VideoReceiveStream { | 31 class VideoReceiveStream { |
32 public: | 32 public: |
33 // TODO(mflodman) Move all these settings to VideoDecoder and move the | 33 // TODO(mflodman) Move all these settings to VideoDecoder and move the |
34 // declaration to common_types.h. | 34 // declaration to common_types.h. |
35 struct Decoder { | 35 struct Decoder { |
| 36 Decoder(); |
| 37 Decoder(const Decoder&); |
| 38 ~Decoder(); |
36 std::string ToString() const; | 39 std::string ToString() const; |
37 | 40 |
38 // The actual decoder instance. | 41 // The actual decoder instance. |
39 VideoDecoder* decoder = nullptr; | 42 VideoDecoder* decoder = nullptr; |
40 | 43 |
41 // Received RTP packets with this payload type will be sent to this decoder | 44 // Received RTP packets with this payload type will be sent to this decoder |
42 // instance. | 45 // instance. |
43 int payload_type = 0; | 46 int payload_type = 0; |
44 | 47 |
45 // Name of the decoded payload (such as VP8). Maps back to the depacketizer | 48 // Name of the decoded payload (such as VP8). Maps back to the depacketizer |
46 // used to unpack incoming packets. | 49 // used to unpack incoming packets. |
47 std::string payload_name; | 50 std::string payload_name; |
48 | 51 |
49 // This map contains the codec specific parameters from SDP, i.e. the "fmtp" | 52 // This map contains the codec specific parameters from SDP, i.e. the "fmtp" |
50 // parameters. It is the same as cricket::CodecParameterMap used in | 53 // parameters. It is the same as cricket::CodecParameterMap used in |
51 // cricket::VideoCodec. | 54 // cricket::VideoCodec. |
52 std::map<std::string, std::string> codec_params; | 55 std::map<std::string, std::string> codec_params; |
53 }; | 56 }; |
54 | 57 |
55 struct Stats { | 58 struct Stats { |
| 59 Stats(); |
| 60 ~Stats(); |
56 std::string ToString(int64_t time_ms) const; | 61 std::string ToString(int64_t time_ms) const; |
57 | 62 |
58 int network_frame_rate = 0; | 63 int network_frame_rate = 0; |
59 int decode_frame_rate = 0; | 64 int decode_frame_rate = 0; |
60 int render_frame_rate = 0; | 65 int render_frame_rate = 0; |
61 uint32_t frames_rendered = 0; | 66 uint32_t frames_rendered = 0; |
62 | 67 |
63 // Decoder stats. | 68 // Decoder stats. |
64 std::string decoder_implementation_name = "unknown"; | 69 std::string decoder_implementation_name = "unknown"; |
65 FrameCounts frame_counts; | 70 FrameCounts frame_counts; |
(...skipping 22 matching lines...) Loading... |
88 std::string c_name; | 93 std::string c_name; |
89 StreamDataCounters rtp_stats; | 94 StreamDataCounters rtp_stats; |
90 RtcpPacketTypeCounter rtcp_packet_type_counts; | 95 RtcpPacketTypeCounter rtcp_packet_type_counts; |
91 RtcpStatistics rtcp_stats; | 96 RtcpStatistics rtcp_stats; |
92 }; | 97 }; |
93 | 98 |
94 struct Config { | 99 struct Config { |
95 private: | 100 private: |
96 // Access to the copy constructor is private to force use of the Copy() | 101 // Access to the copy constructor is private to force use of the Copy() |
97 // method for those exceptional cases where we do use it. | 102 // method for those exceptional cases where we do use it. |
98 Config(const Config&) = default; | 103 Config(const Config&); |
99 | 104 |
100 public: | 105 public: |
101 Config() = delete; | 106 Config() = delete; |
102 Config(Config&&) = default; | 107 Config(Config&&); |
103 explicit Config(Transport* rtcp_send_transport) | 108 explicit Config(Transport* rtcp_send_transport); |
104 : rtcp_send_transport(rtcp_send_transport) {} | 109 Config& operator=(Config&&); |
105 | |
106 Config& operator=(Config&&) = default; | |
107 Config& operator=(const Config&) = delete; | 110 Config& operator=(const Config&) = delete; |
| 111 ~Config(); |
108 | 112 |
109 // Mostly used by tests. Avoid creating copies if you can. | 113 // Mostly used by tests. Avoid creating copies if you can. |
110 Config Copy() const { return Config(*this); } | 114 Config Copy() const { return Config(*this); } |
111 | 115 |
112 std::string ToString() const; | 116 std::string ToString() const; |
113 | 117 |
114 // Decoders for every payload that we can receive. | 118 // Decoders for every payload that we can receive. |
115 std::vector<Decoder> decoders; | 119 std::vector<Decoder> decoders; |
116 | 120 |
117 // Receive-stream specific RTP settings. | 121 // Receive-stream specific RTP settings. |
118 struct Rtp { | 122 struct Rtp { |
| 123 Rtp(); |
| 124 Rtp(const Rtp&); |
| 125 ~Rtp(); |
119 std::string ToString() const; | 126 std::string ToString() const; |
120 | 127 |
121 // Synchronization source (stream identifier) to be received. | 128 // Synchronization source (stream identifier) to be received. |
122 uint32_t remote_ssrc = 0; | 129 uint32_t remote_ssrc = 0; |
123 | 130 |
124 // Sender SSRC used for sending RTCP (such as receiver reports). | 131 // Sender SSRC used for sending RTCP (such as receiver reports). |
125 uint32_t local_ssrc = 0; | 132 uint32_t local_ssrc = 0; |
126 | 133 |
127 // See RtcpMode for description. | 134 // See RtcpMode for description. |
128 RtcpMode rtcp_mode = RtcpMode::kCompound; | 135 RtcpMode rtcp_mode = RtcpMode::kCompound; |
(...skipping 99 matching lines...) Loading... |
228 // themselves as secondary sinks. | 235 // themselves as secondary sinks. |
229 virtual void AddSecondarySink(RtpPacketSinkInterface* sink) = 0; | 236 virtual void AddSecondarySink(RtpPacketSinkInterface* sink) = 0; |
230 virtual void RemoveSecondarySink(const RtpPacketSinkInterface* sink) = 0; | 237 virtual void RemoveSecondarySink(const RtpPacketSinkInterface* sink) = 0; |
231 | 238 |
232 protected: | 239 protected: |
233 virtual ~VideoReceiveStream() {} | 240 virtual ~VideoReceiveStream() {} |
234 }; | 241 }; |
235 | 242 |
236 } // namespace webrtc | 243 } // namespace webrtc |
237 | 244 |
238 #endif // WEBRTC_VIDEO_RECEIVE_STREAM_H_ | 245 #endif // WEBRTC_CALL_VIDEO_RECEIVE_STREAM_H_ |
OLD | NEW |