From 215da13314ef57e188c0c694ed9a9d1c7b0f2dc9 Mon Sep 17 00:00:00 2001 From: "peng.yin" Date: Fri, 15 Mar 2024 09:21:47 +0800 Subject: [PATCH] [M120 Migration][MM][WebRTC] Add encoded video capture type support strip the encoded video capture type code from this patch: https://review.tizen.org/gerrit/#/c/291285/ Change-Id: I188926e392a4eaa6e09eb1d01ee019f6eb464fc1 Signed-off-by: peng.yin --- content/browser/renderer_host/media/video_capture_controller.cc | 6 ++++++ media/base/video_codecs.cc | 4 ++++ media/capture/mojom/video_capture_buffer.mojom | 1 + media/capture/mojom/video_capture_types.mojom | 1 + media/capture/mojom/video_capture_types_mojom_traits.cc | 9 +++++++++ media/capture/video/video_capture_device.h | 3 ++- media/capture/video/video_capture_device_client.cc | 7 ++++++- media/capture/video/video_capture_device_client.h | 3 ++- media/capture/video/video_capture_system_impl.cc | 6 ++++++ 9 files changed, 37 insertions(+), 3 deletions(-) diff --git a/content/browser/renderer_host/media/video_capture_controller.cc b/content/browser/renderer_host/media/video_capture_controller.cc index 736b036a..3334307 100644 --- a/content/browser/renderer_host/media/video_capture_controller.cc +++ b/content/browser/renderer_host/media/video_capture_controller.cc @@ -238,6 +238,12 @@ void VideoCaptureController::AddClient( params.requested_format.pixel_format == media::PIXEL_FORMAT_Y16 || params.requested_format.pixel_format == media::PIXEL_FORMAT_ARGB || params.requested_format.pixel_format == media::PIXEL_FORMAT_NV12 || +#if BUILDFLAG(IS_TIZEN) + params.requested_format.pixel_format == media::PIXEL_FORMAT_ENCODED || +#endif +#if defined(TIZEN_MULTIMEDIA_MJPEG_SUPPORT) + params.requested_format.pixel_format == media::PIXEL_FORMAT_MJPEG || +#endif params.requested_format.pixel_format == media::PIXEL_FORMAT_UNKNOWN)) { // Crash in debug builds since the renderer should not have asked for // unsupported parameters. diff --git a/media/base/video_codecs.cc b/media/base/video_codecs.cc index 3bd01bf..0a9ac30 100644 --- a/media/base/video_codecs.cc +++ b/media/base/video_codecs.cc @@ -43,6 +43,10 @@ std::string GetCodecName(VideoCodec codec) { return "vp9"; case VideoCodec::kAV1: return "av1"; +#if defined(TIZEN_MULTIMEDIA_MJPEG_SUPPORT) + case VideoCodec::kMJPEG: + return "mjpeg"; +#endif } NOTREACHED_NORETURN(); } diff --git a/media/capture/mojom/video_capture_buffer.mojom b/media/capture/mojom/video_capture_buffer.mojom index 9a99567..f5ff06f 100644 --- a/media/capture/mojom/video_capture_buffer.mojom +++ b/media/capture/mojom/video_capture_buffer.mojom @@ -29,6 +29,7 @@ struct VideoFrameInfo { // Optionally, stride information can be provided. // If not provided, it is assumed that frame data is tightly packed. PlaneStrides? strides; + uint32 encoded_data_size; }; // Represents a buffer that is ready for consumption. |buffer_id| has video diff --git a/media/capture/mojom/video_capture_types.mojom b/media/capture/mojom/video_capture_types.mojom index 830c7a1..65aa9e1 100644 --- a/media/capture/mojom/video_capture_types.mojom +++ b/media/capture/mojom/video_capture_types.mojom @@ -45,6 +45,7 @@ enum VideoCapturePixelFormat { [MinVersion=1] YUV422AP10, [MinVersion=1] YUV444AP10, [MinVersion=2] NV12A, + ENCODED, [EnableIf=tizen_tbm_support] TBM_SURFACE, diff --git a/media/capture/mojom/video_capture_types_mojom_traits.cc b/media/capture/mojom/video_capture_types_mojom_traits.cc index 7724d5b..e0871eb 100644 --- a/media/capture/mojom/video_capture_types_mojom_traits.cc +++ b/media/capture/mojom/video_capture_types_mojom_traits.cc @@ -157,6 +157,10 @@ EnumTraitsvisible_rect = visible_rect; info->metadata = metadata; info->is_premapped = buffer.is_premapped; + info->encoded_data_size = encoded_data_size; buffer_pool_->HoldForConsumers(buffer.id, 1); receiver_->OnFrameReadyInBuffer(ReadyFrameInBuffer( diff --git a/media/capture/video/video_capture_device_client.h b/media/capture/video/video_capture_device_client.h index 66efc9c..c9fe5ea 100644 --- a/media/capture/video/video_capture_device_client.h +++ b/media/capture/video/video_capture_device_client.h @@ -113,7 +113,8 @@ class CAPTURE_EXPORT VideoCaptureDeviceClient base::TimeTicks reference_time, base::TimeDelta timestamp, gfx::Rect visible_rect, - const VideoFrameMetadata& additional_metadata) override; + const VideoFrameMetadata& additional_metadata, + unsigned int encoded_data_size = 0) override; void OnError(VideoCaptureError error, const base::Location& from_here, const std::string& reason) override; diff --git a/media/capture/video/video_capture_system_impl.cc b/media/capture/video/video_capture_system_impl.cc index f7e1880..eceba71 100644 --- a/media/capture/video/video_capture_system_impl.cc +++ b/media/capture/video/video_capture_system_impl.cc @@ -56,6 +56,12 @@ void ConsolidateCaptureFormats(media::VideoCaptureFormats* formats) { // Don't do this for the Y16 or NV12 formats as they are handled separately. for (auto& format : *formats) { if (format.pixel_format != media::PIXEL_FORMAT_Y16 && +#if BUILDFLAG(IS_TIZEN) + format.pixel_format != media::PIXEL_FORMAT_ENCODED && +#endif +#if defined(TIZEN_MULTIMEDIA_MJPEG_SUPPORT) + format.pixel_format != media::PIXEL_FORMAT_MJPEG && +#endif format.pixel_format != media::PIXEL_FORMAT_NV12) format.pixel_format = media::PIXEL_FORMAT_I420; } -- 2.7.4