From 0490c371262edb34be09742f6fa6fc882dffd6e6 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Tue, 4 Aug 2020 13:05:43 +0200 Subject: [PATCH] Reland "Add EncodedImageCallback::OnEncodedImage without RTPFragmentationHeader" This is a reland of fdd41ecf6b05b02a1ee12583e537f1cdb5922919 Original change's description: > Add EncodedImageCallback::OnEncodedImage without RTPFragmentationHeader > > RTPFragmentationHeader is no longer used by any webrtc code. > > Bug: webrtc:6471 > Change-Id: I1362d58465c550f5c8e0a5b292dc0abcd6251431 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180120 > Reviewed-by: Sebastian Jansson > Reviewed-by: Rasmus Brandt > Reviewed-by: Niels Moller > Commit-Queue: Danil Chapovalov > Cr-Commit-Position: refs/heads/master@{#31833} Bug: webrtc:6471 Change-Id: I7f551110a68704bfe12897772083c3616acd173c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180881 Commit-Queue: Danil Chapovalov Reviewed-by: Sebastian Jansson Reviewed-by: Niels Moller Cr-Commit-Position: refs/heads/master@{#31848} --- api/test/mock_video_encoder.h | 4 ++++ api/video_codecs/video_encoder.cc | 13 +++++++++++++ api/video_codecs/video_encoder.h | 16 +++++++++++----- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/api/test/mock_video_encoder.h b/api/test/mock_video_encoder.h index 26d758fd6a..b4ae27106a 100644 --- a/api/test/mock_video_encoder.h +++ b/api/test/mock_video_encoder.h @@ -26,6 +26,10 @@ class MockEncodedImageCallback : public EncodedImageCallback { const CodecSpecificInfo*, const RTPFragmentationHeader*), (override)); + MOCK_METHOD(Result, + OnEncodedImage, + (const EncodedImage&, const CodecSpecificInfo*), + (override)); MOCK_METHOD(void, OnDroppedFrame, (DropReason reason), (override)); }; diff --git a/api/video_codecs/video_encoder.cc b/api/video_codecs/video_encoder.cc index 4427d6c1f1..ab946a26e0 100644 --- a/api/video_codecs/video_encoder.cc +++ b/api/video_codecs/video_encoder.cc @@ -18,6 +18,19 @@ namespace webrtc { +EncodedImageCallback::Result EncodedImageCallback::OnEncodedImage( + const EncodedImage& encoded_image, + const CodecSpecificInfo* codec_specific_info, + const RTPFragmentationHeader* /*fragmentation*/) { + return OnEncodedImage(encoded_image, codec_specific_info); +} + +EncodedImageCallback::Result EncodedImageCallback::OnEncodedImage( + const EncodedImage& encoded_image, + const CodecSpecificInfo* codec_specific_info) { + return OnEncodedImage(encoded_image, codec_specific_info, nullptr); +} + // TODO(mflodman): Add default complexity for VP9 and VP9. VideoCodecVP8 VideoEncoder::GetDefaultVp8Settings() { VideoCodecVP8 vp8_settings; diff --git a/api/video_codecs/video_encoder.h b/api/video_codecs/video_encoder.h index 064dc8ffb5..50f21d7e1c 100644 --- a/api/video_codecs/video_encoder.h +++ b/api/video_codecs/video_encoder.h @@ -36,7 +36,7 @@ struct CodecSpecificInfo; constexpr int kDefaultMinPixelsPerFrame = 320 * 180; -class EncodedImageCallback { +class RTC_EXPORT EncodedImageCallback { public: virtual ~EncodedImageCallback() {} @@ -73,10 +73,16 @@ class EncodedImageCallback { }; // Callback function which is called when an image has been encoded. - virtual Result OnEncodedImage( - const EncodedImage& encoded_image, - const CodecSpecificInfo* codec_specific_info, - const RTPFragmentationHeader* fragmentation) = 0; + // Deprecated, use OnEncodedImage below instead, see bugs.webrtc.org/6471 + virtual Result OnEncodedImage(const EncodedImage& encoded_image, + const CodecSpecificInfo* codec_specific_info, + const RTPFragmentationHeader* fragmentation); + + // Callback function which is called when an image has been encoded. + // TODO(bugs.webrtc.org/6471): Make pure virtual + // when OnEncodedImage above is deleted. + virtual Result OnEncodedImage(const EncodedImage& encoded_image, + const CodecSpecificInfo* codec_specific_info); virtual void OnDroppedFrame(DropReason reason) {} };