OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 const VideoReceiveStream::Config* config, | 75 const VideoReceiveStream::Config* config, |
76 ReceiveStatisticsProxy* receive_stats_proxy, | 76 ReceiveStatisticsProxy* receive_stats_proxy, |
77 ProcessThread* process_thread, | 77 ProcessThread* process_thread, |
78 RateLimiter* retransmission_rate_limiter, | 78 RateLimiter* retransmission_rate_limiter, |
79 NackSender* nack_sender, | 79 NackSender* nack_sender, |
80 KeyFrameRequestSender* keyframe_request_sender, | 80 KeyFrameRequestSender* keyframe_request_sender, |
81 video_coding::OnCompleteFrameCallback* complete_frame_callback, | 81 video_coding::OnCompleteFrameCallback* complete_frame_callback, |
82 VCMTiming* timing); | 82 VCMTiming* timing); |
83 ~RtpStreamReceiver(); | 83 ~RtpStreamReceiver(); |
84 | 84 |
| 85 bool AddReceiveCodec(const VideoCodec& video_codec, |
| 86 const std::map<std::string, std::string>& codec_params); |
| 87 |
85 bool AddReceiveCodec(const VideoCodec& video_codec); | 88 bool AddReceiveCodec(const VideoCodec& video_codec); |
86 | 89 |
87 uint32_t GetRemoteSsrc() const; | 90 uint32_t GetRemoteSsrc() const; |
88 int GetCsrcs(uint32_t* csrcs) const; | 91 int GetCsrcs(uint32_t* csrcs) const; |
89 | 92 |
90 RtpReceiver* GetRtpReceiver() const; | 93 RtpReceiver* GetRtpReceiver() const; |
91 RtpRtcp* rtp_rtcp() const { return rtp_rtcp_.get(); } | 94 RtpRtcp* rtp_rtcp() const { return rtp_rtcp_.get(); } |
92 | 95 |
93 void StartReceive(); | 96 void StartReceive(); |
94 void StopReceive(); | 97 void StopReceive(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 // This function assumes that it's being called from only one thread. | 154 // This function assumes that it's being called from only one thread. |
152 bool ParseAndHandleEncapsulatingHeader(const uint8_t* packet, | 155 bool ParseAndHandleEncapsulatingHeader(const uint8_t* packet, |
153 size_t packet_length, | 156 size_t packet_length, |
154 const RTPHeader& header); | 157 const RTPHeader& header); |
155 void NotifyReceiverOfFecPacket(const RTPHeader& header); | 158 void NotifyReceiverOfFecPacket(const RTPHeader& header); |
156 bool IsPacketInOrder(const RTPHeader& header) const; | 159 bool IsPacketInOrder(const RTPHeader& header) const; |
157 bool IsPacketRetransmitted(const RTPHeader& header, bool in_order) const; | 160 bool IsPacketRetransmitted(const RTPHeader& header, bool in_order) const; |
158 void UpdateHistograms(); | 161 void UpdateHistograms(); |
159 void EnableReceiveRtpHeaderExtension(const std::string& extension, int id); | 162 void EnableReceiveRtpHeaderExtension(const std::string& extension, int id); |
160 bool IsRedEnabled() const; | 163 bool IsRedEnabled() const; |
| 164 void InsertSpsPpsIntoTracker(uint8_t payload_type); |
161 | 165 |
162 Clock* const clock_; | 166 Clock* const clock_; |
163 // Ownership of this object lies with VideoReceiveStream, which owns |this|. | 167 // Ownership of this object lies with VideoReceiveStream, which owns |this|. |
164 const VideoReceiveStream::Config& config_; | 168 const VideoReceiveStream::Config& config_; |
165 vcm::VideoReceiver* const video_receiver_; | 169 vcm::VideoReceiver* const video_receiver_; |
166 RemoteBitrateEstimator* const remote_bitrate_estimator_; | 170 RemoteBitrateEstimator* const remote_bitrate_estimator_; |
167 PacketRouter* const packet_router_; | 171 PacketRouter* const packet_router_; |
168 VieRemb* const remb_; | 172 VieRemb* const remb_; |
169 ProcessThread* const process_thread_; | 173 ProcessThread* const process_thread_; |
170 | 174 |
(...skipping 18 matching lines...) Expand all Loading... |
189 video_coding::OnCompleteFrameCallback* complete_frame_callback_; | 193 video_coding::OnCompleteFrameCallback* complete_frame_callback_; |
190 KeyFrameRequestSender* keyframe_request_sender_; | 194 KeyFrameRequestSender* keyframe_request_sender_; |
191 VCMTiming* timing_; | 195 VCMTiming* timing_; |
192 std::unique_ptr<NackModule> nack_module_; | 196 std::unique_ptr<NackModule> nack_module_; |
193 rtc::scoped_refptr<video_coding::PacketBuffer> packet_buffer_; | 197 rtc::scoped_refptr<video_coding::PacketBuffer> packet_buffer_; |
194 std::unique_ptr<video_coding::RtpFrameReferenceFinder> reference_finder_; | 198 std::unique_ptr<video_coding::RtpFrameReferenceFinder> reference_finder_; |
195 rtc::CriticalSection last_seq_num_cs_; | 199 rtc::CriticalSection last_seq_num_cs_; |
196 std::map<uint16_t, uint16_t, DescendingSeqNumComp<uint16_t>> | 200 std::map<uint16_t, uint16_t, DescendingSeqNumComp<uint16_t>> |
197 last_seq_num_for_pic_id_ GUARDED_BY(last_seq_num_cs_); | 201 last_seq_num_for_pic_id_ GUARDED_BY(last_seq_num_cs_); |
198 video_coding::H264SpsPpsTracker tracker_; | 202 video_coding::H264SpsPpsTracker tracker_; |
| 203 // TODO(johan): Remove pt_codec_params_ once |
| 204 // https://bugs.chromium.org/p/webrtc/issues/detail?id=6883 is resolved. |
| 205 // Maps a payload type to a map of out-of-band supplied codec parameters. |
| 206 std::map<uint8_t, std::map<std::string, std::string>> pt_codec_params_; |
| 207 int16_t last_payload_type_ = -1; |
199 }; | 208 }; |
200 | 209 |
201 } // namespace webrtc | 210 } // namespace webrtc |
202 | 211 |
203 #endif // WEBRTC_VIDEO_RTP_STREAM_RECEIVER_H_ | 212 #endif // WEBRTC_VIDEO_RTP_STREAM_RECEIVER_H_ |
OLD | NEW |