[M120 Migration][MM][WebRTC] Add encoded video capture type support 96/307996/2
authorpeng.yin <peng8.yin@samsung.com>
Fri, 15 Mar 2024 01:21:47 +0000 (09:21 +0800)
committerYanqing Lu <yanqing.lu@samsung.com>
Tue, 19 Mar 2024 02:43:50 +0000 (02:43 +0000)
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 <peng8.yin@samsung.com>
content/browser/renderer_host/media/video_capture_controller.cc
media/base/video_codecs.cc
media/capture/mojom/video_capture_buffer.mojom
media/capture/mojom/video_capture_types.mojom
media/capture/mojom/video_capture_types_mojom_traits.cc
media/capture/video/video_capture_device.h
media/capture/video/video_capture_device_client.cc
media/capture/video/video_capture_device_client.h
media/capture/video/video_capture_system_impl.cc

index 736b036..3334307 100644 (file)
@@ -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.
index 3bd01bf..0a9ac30 100644 (file)
@@ -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();
 }
index 9a99567..f5ff06f 100644 (file)
@@ -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
index 830c7a1..65aa9e1 100644 (file)
@@ -45,6 +45,7 @@ enum VideoCapturePixelFormat {
   [MinVersion=1] YUV422AP10,
   [MinVersion=1] YUV444AP10,
   [MinVersion=2] NV12A,
+  ENCODED,
 
   [EnableIf=tizen_tbm_support]
   TBM_SURFACE,
index 7724d5b..e0871eb 100644 (file)
@@ -157,6 +157,10 @@ EnumTraits<media::mojom::VideoCapturePixelFormat,
       return media::mojom::VideoCapturePixelFormat::YUV444AP10;
     case media::VideoPixelFormat::PIXEL_FORMAT_NV12A:
       return media::mojom::VideoCapturePixelFormat::NV12A;
+#if BUILDFLAG(IS_TIZEN)
+    case media::VideoPixelFormat::PIXEL_FORMAT_ENCODED:
+      return media::mojom::VideoCapturePixelFormat::ENCODED;
+#endif
 #if defined(TIZEN_TBM_SUPPORT)
     case media::VideoPixelFormat::PIXEL_FORMAT_TBM_SURFACE:
       return media::mojom::VideoCapturePixelFormat::TBM_SURFACE;
@@ -282,6 +286,11 @@ bool EnumTraits<media::mojom::VideoCapturePixelFormat,
     case media::mojom::VideoCapturePixelFormat::NV12A:
       *output = media::PIXEL_FORMAT_NV12A;
       return true;
+#if BUILDFLAG(IS_TIZEN)
+    case media::mojom::VideoCapturePixelFormat::ENCODED:
+      *output = media::PIXEL_FORMAT_ENCODED;
+      return true;
+#endif
 #if defined(TIZEN_TBM_SUPPORT)
     case media::mojom::VideoCapturePixelFormat::TBM_SURFACE:
       *output = media::PIXEL_FORMAT_TBM_SURFACE;
index 6f9b9a3..ef3effb 100644 (file)
@@ -276,7 +276,8 @@ class CAPTURE_EXPORT VideoCaptureDevice
         base::TimeTicks reference_time,
         base::TimeDelta timestamp,
         gfx::Rect visible_rect,
-        const VideoFrameMetadata& additional_metadata) = 0;
+        const VideoFrameMetadata& additional_metadata,
+        unsigned int encoded_data_size = 0) = 0;
 
     // An error has occurred that cannot be handled and VideoCaptureDevice must
     // be StopAndDeAllocate()-ed. |reason| is a text description of the error.
index b636295..3ef9b60 100644 (file)
@@ -37,6 +37,9 @@ bool IsFormatSupported(media::VideoPixelFormat pixel_format) {
           // NV12 and MJPEG are used by GpuMemoryBuffer on Chrome OS.
           pixel_format == media::PIXEL_FORMAT_NV12 ||
           pixel_format == media::PIXEL_FORMAT_MJPEG ||
+#if BUILDFLAG(IS_TIZEN)
+          pixel_format == media::PIXEL_FORMAT_ENCODED ||
+#endif
           pixel_format == media::PIXEL_FORMAT_Y16);
 }
 
@@ -682,7 +685,8 @@ void VideoCaptureDeviceClient::OnIncomingCapturedBufferExt(
     base::TimeTicks reference_time,
     base::TimeDelta timestamp,
     gfx::Rect visible_rect,
-    const VideoFrameMetadata& additional_metadata) {
+    const VideoFrameMetadata& additional_metadata,
+    unsigned int encoded_data_size) {
   TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("video_and_image_capture"),
                "VideoCaptureDeviceClient::OnIncomingCapturedBufferExt");
   DFAKE_SCOPED_RECURSIVE_LOCK(call_from_producer_);
@@ -699,6 +703,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedBufferExt(
   info->visible_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(
index 66efc9c..c9fe5ea 100644 (file)
@@ -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;
index f7e1880..eceba71 100644 (file)
@@ -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;
   }