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 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 const Config& config() const { return config_; } | 77 const Config& config() const { return config_; } |
78 | 78 |
79 void SetSyncChannel(VoiceEngine* voice_engine, int audio_channel_id); | 79 void SetSyncChannel(VoiceEngine* voice_engine, int audio_channel_id); |
80 | 80 |
81 // Implements NackSender. | 81 // Implements NackSender. |
82 void SendNack(const std::vector<uint16_t>& sequence_numbers) override; | 82 void SendNack(const std::vector<uint16_t>& sequence_numbers) override; |
83 | 83 |
84 // Implements KeyFrameRequestSender. | 84 // Implements KeyFrameRequestSender. |
85 void RequestKeyFrame() override; | 85 void RequestKeyFrame() override; |
86 | 86 |
| 87 // Takes ownership of the file, is responsible for closing it later. |
| 88 // Calling this method will close and finalize any current log. |
| 89 // Giving rtc::kInvalidPlatformFileValue disables logging. |
| 90 // If a frame to be written would make the log too large the write fails and |
| 91 // the log is closed and finalized. A |byte_limit| of 0 means no limit. |
| 92 void EnableEncodedFrameRecording(rtc::PlatformFile file, |
| 93 size_t byte_limit) override; |
| 94 |
87 private: | 95 private: |
88 static bool DecodeThreadFunction(void* ptr); | 96 static bool DecodeThreadFunction(void* ptr); |
89 void Decode(); | 97 void Decode(); |
90 | 98 |
91 TransportAdapter transport_adapter_; | 99 TransportAdapter transport_adapter_; |
92 const VideoReceiveStream::Config config_; | 100 const VideoReceiveStream::Config config_; |
93 ProcessThread* const process_thread_; | 101 ProcessThread* const process_thread_; |
94 Clock* const clock_; | 102 Clock* const clock_; |
95 | 103 |
96 rtc::PlatformThread decode_thread_; | 104 rtc::PlatformThread decode_thread_; |
97 | 105 |
98 CongestionController* const congestion_controller_; | 106 CongestionController* const congestion_controller_; |
99 CallStats* const call_stats_; | 107 CallStats* const call_stats_; |
100 | 108 |
101 vcm::VideoReceiver video_receiver_; | 109 vcm::VideoReceiver video_receiver_; |
102 std::unique_ptr<rtc::VideoSinkInterface<VideoFrame>> incoming_video_stream_; | 110 std::unique_ptr<rtc::VideoSinkInterface<VideoFrame>> incoming_video_stream_; |
103 ReceiveStatisticsProxy stats_proxy_; | 111 ReceiveStatisticsProxy stats_proxy_; |
104 RtpStreamReceiver rtp_stream_receiver_; | 112 RtpStreamReceiver rtp_stream_receiver_; |
105 std::unique_ptr<VideoStreamDecoder> video_stream_decoder_; | 113 std::unique_ptr<VideoStreamDecoder> video_stream_decoder_; |
106 RtpStreamsSynchronizer rtp_stream_sync_; | 114 RtpStreamsSynchronizer rtp_stream_sync_; |
107 | 115 |
108 std::unique_ptr<IvfFileWriter> ivf_writer_; | 116 rtc::CriticalSection ivf_writer_lock_; |
| 117 std::unique_ptr<IvfFileWriter> ivf_writer_ GUARDED_BY(ivf_writer_lock_); |
109 }; | 118 }; |
110 } // namespace internal | 119 } // namespace internal |
111 } // namespace webrtc | 120 } // namespace webrtc |
112 | 121 |
113 #endif // WEBRTC_VIDEO_VIDEO_RECEIVE_STREAM_H_ | 122 #endif // WEBRTC_VIDEO_VIDEO_RECEIVE_STREAM_H_ |
OLD | NEW |