Revert "Remove VCMEncoderDataBase and put remaining code into VideoStreamEncoder"
This reverts commit 715c4765b1ac20017e6e3b8b925d02536c6610c3. Reason for revert: Breaks WebRTC roll to Chromium. https://chromium-review.googlesource.com/c/chromium/src/+/1484629 # Fatal error in: ../../third_party/webrtc/modules/rtp_rtcp/source/rtp_sender.cc, line 796 # last system error: 0 # Check failed: diff_ms >= static_cast<int64_t>(0) (-307 vs. 0) # Original change's description: > Remove VCMEncoderDataBase and put remaining code into VideoStreamEncoder > > Since this "data base" only holds a single encoder instance it just > serves to confuse object ownership. Removing it and giving ownership > of generic encoder instance to VideoStreamEncoder. > > This CL also removes VideoSender interface from video_coding_impl.h, > which is mostly a leftover from > https://webrtc-review.googlesource.com/c/src/+/123540 > > Bug: webrtc:10164 > Change-Id: I9b7fec940dbcbccf3aa1278c2555da3bd5169ae1 > Reviewed-on: https://webrtc-review.googlesource.com/c/123920 > Commit-Queue: Erik Språng <sprang@webrtc.org> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> > Reviewed-by: Niels Moller <nisse@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#26835} TBR=brandtr@webrtc.org,nisse@webrtc.org,sprang@webrtc.org Change-Id: I5432878c4c2e497cd848c4ce1b190e0307df03ca Bug: webrtc:10164 Reviewed-on: https://webrtc-review.googlesource.com/c/124402 Commit-Queue: Sami Kalliomäki <sakal@webrtc.org> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26841}
This commit is contained in:

committed by
Commit Bot

parent
7d6a4c045c
commit
5cbc528c03
@ -19,6 +19,7 @@
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "modules/video_coding/decoder_database.h"
|
||||
#include "modules/video_coding/encoder_database.h"
|
||||
#include "modules/video_coding/frame_buffer.h"
|
||||
#include "modules/video_coding/generic_decoder.h"
|
||||
#include "modules/video_coding/generic_encoder.h"
|
||||
@ -56,6 +57,47 @@ class VCMProcessTimer {
|
||||
int64_t _latestMs;
|
||||
};
|
||||
|
||||
class VideoSender {
|
||||
public:
|
||||
typedef VideoCodingModule::SenderNackMode SenderNackMode;
|
||||
|
||||
VideoSender(Clock* clock, EncodedImageCallback* post_encode_callback);
|
||||
~VideoSender();
|
||||
|
||||
// Register the send codec to be used.
|
||||
// This method must be called on the construction thread.
|
||||
int32_t RegisterSendCodec(const VideoCodec* sendCodec,
|
||||
uint32_t numberOfCores,
|
||||
uint32_t maxPayloadSize);
|
||||
|
||||
void RegisterExternalEncoder(VideoEncoder* externalEncoder,
|
||||
bool internalSource);
|
||||
|
||||
// Update the the encoder with new bitrate allocation and framerate.
|
||||
int32_t SetChannelParameters(const VideoBitrateAllocation& bitrate_allocation,
|
||||
uint32_t framerate_fps);
|
||||
|
||||
int32_t AddVideoFrame(const VideoFrame& videoFrame,
|
||||
const CodecSpecificInfo* codecSpecificInfo,
|
||||
absl::optional<VideoEncoder::EncoderInfo> encoder_info);
|
||||
|
||||
int32_t IntraFrameRequest(size_t stream_index);
|
||||
|
||||
private:
|
||||
rtc::CriticalSection encoder_crit_;
|
||||
VCMGenericEncoder* _encoder;
|
||||
VCMEncodedFrameCallback _encodedFrameCallback RTC_GUARDED_BY(encoder_crit_);
|
||||
VCMEncoderDataBase _codecDataBase RTC_GUARDED_BY(encoder_crit_);
|
||||
|
||||
// Must be accessed on the construction thread of VideoSender.
|
||||
VideoCodec current_codec_;
|
||||
rtc::SequencedTaskChecker sequenced_checker_;
|
||||
|
||||
rtc::CriticalSection params_crit_;
|
||||
bool encoder_has_internal_source_ RTC_GUARDED_BY(params_crit_);
|
||||
std::vector<FrameType> next_frame_types_ RTC_GUARDED_BY(params_crit_);
|
||||
};
|
||||
|
||||
class VideoReceiver : public Module {
|
||||
public:
|
||||
VideoReceiver(Clock* clock,
|
||||
|
Reference in New Issue
Block a user