[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 736b036a039cd695fe074356d2124592e1cc9d1e..333430714c3dcfc0f656bc401b1cfbf6bb8ec950 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 3bd01bfce881d0968978c16ea0b14785738a10c0..0a9ac30c73b50149d6ecd76ee28b13b82977c39d 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 9a99567069fbc596afedbbf4d97a17f7d8c5660e..f5ff06f68e65afdc653736cc5f2d1e7adbcf5ba5 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 830c7a10095ac2784a27d51fa68459397a552f50..65aa9e135c338bbd50d08512b92752c34d76377d 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 7724d5b3857ca367b1fb5ad912852fb7e042d3fa..e0871eba941344c1a60354b868d42480c9b95f20 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 6f9b9a36c0c6ca48d3c42724ccb2a2013d7d75a2..ef3effb1f7646848a2ae2a718ce55c97196acfa3 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 b636295ed35804d64d2b925b4b36c8def7b41f72..3ef9b609c091759f37a89d62ed521bb8cec632fe 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 66efc9cf1bff58899d3bf279881274b28ca3455b..c9fe5ea1c0e08e1cf916a0a7428c9af5a0682472 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 f7e1880cefe9e1b6bae1e781ee0afe229469a410..eceba7164a13b2484f93c2c224d88dfb2a17f3fd 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;
   }