[WebAI] Add background replace feature 69/317569/5
authorpeng.yin <peng8.yin@samsung.com>
Thu, 12 Sep 2024 01:18:16 +0000 (09:18 +0800)
committerBot Blink <blinkbot@samsung.com>
Thu, 12 Sep 2024 08:08:04 +0000 (08:08 +0000)
add new js configuration to support background replace feature.

Change-Id: Ie295c48db017fdeb34c02d3cc5c6f31cb4610adc
Signed-off-by: peng.yin <peng8.yin@samsung.com>
tizen_src/chromium_impl/webai/blink/ai_process_type.idl
tizen_src/chromium_impl/webai/blink/ai_processor_video.cc
tizen_src/chromium_impl/webai/blink/mojom/ai_processor.mojom
tizen_src/chromium_impl/webai/blink/mojom/ai_processor_mojom_traits.h
tizen_src/chromium_impl/webai/common/common_types.h
tizen_src/chromium_impl/webai/content/ai_processor_video_impl.cc

index 04ece03f51bfd74b8fe6e29ce285e2593cb92193..b50eac098bda7c1e479bdbbdce5c82417affd48f 100644 (file)
@@ -15,4 +15,5 @@ enum XrFilter
     "XrFilterCartoonFull",
     "XrFilterCartoonFace",
     "XrFilterBlur",
+    "XrFilterBackground",
 };
index d0fe938e49f86d746168f58dc9b98f4547483b6f..c490b8a2ca13a0ea141890a3d065a3089c143c1a 100644 (file)
@@ -38,6 +38,8 @@ blink::AiVideoModel ToAiVideoModel(blink::V8AiVideoModel::Enum model) {
 
 blink::XrFilter ToXrFilter(blink::V8XrFilter::Enum filter) {
   switch (filter) {
+    case blink::V8XrFilter::Enum::kXrFilterBackground:
+      return blink::XrFilter::kXrFilterBackground;
     case blink::V8XrFilter::Enum::kXrFilterBlur:
       return blink::XrFilter::kXrFilterBlur;
     case blink::V8XrFilter::Enum::kXrFilterCartoonFace:
index 58be98c4648bf856a4b0ddde9fd7c791a4313326..c7a2a1edaffa80f7cb8ce354c862bd52314a3ec2 100644 (file)
@@ -25,6 +25,7 @@ enum XrFilter {
   kXrFilterCartoonFull = 1,
   kXrFilterCartoonFace = 2,
   kXrFilterBlur = 3,
+  kXrFilterBackground = 4,
 };
 
 struct AiConfiguration {
index f8ad5fabeacdd86f1597e1d11543460cef6a51f7..653f9451cd14c47b83ed7fd7853e72f0c0d005c5 100644 (file)
@@ -86,6 +86,8 @@ struct EnumTraits<blink::mojom::XrFilter, ::blink::XrFilter> {
         return blink::mojom::XrFilter::kXrFilterCartoonFace;
       case ::blink::XrFilter::kXrFilterBlur:
         return blink::mojom::XrFilter::kXrFilterBlur;
+      case ::blink::XrFilter::kXrFilterBackground:
+        return blink::mojom::XrFilter::kXrFilterBackground;
       case ::blink::XrFilter::kXrFilterNone:
       default:
         return blink::mojom::XrFilter::kXrFilterNone;
@@ -105,6 +107,9 @@ struct EnumTraits<blink::mojom::XrFilter, ::blink::XrFilter> {
       case blink::mojom::XrFilter::kXrFilterBlur:
         *output = ::blink::XrFilter::kXrFilterBlur;
         return true;
+      case blink::mojom::XrFilter::kXrFilterBackground:
+        *output = ::blink::XrFilter::kXrFilterBackground;
+        return true;
       case blink::mojom::XrFilter::kXrFilterNone:
       default:
         *output = ::blink::XrFilter::kXrFilterNone;
index 54e5e314f8b7c9f107db69f4dbf2745a526f46d7..e0513878165e4ef57ca88f3132d83359ababa05a 100644 (file)
@@ -23,6 +23,7 @@ enum class XrFilter {
   kXrFilterCartoonFull,
   kXrFilterCartoonFace,
   kXrFilterBlur,
+  kXrFilterBackground,
 };
 
 struct AiConfiguration {
index 6af1579673a57acf1e0e808388774e93380b4948..021efec8096bf355e3d741ea3bb5d73bfa4e90cc 100644 (file)
@@ -23,7 +23,8 @@ std::string AiVideoModelToJsonString(const blink::AiVideoModel& model,
                                      const blink::XrFilter& filter) {
   // TODO: fill jason string for other cases.
   if (model == blink::AiVideoModel::kAiVideoModelXr &&
-      filter == blink::XrFilter::kXrFilterBlur) {
+      (filter == blink::XrFilter::kXrFilterBlur ||
+       filter == blink::XrFilter::kXrFilterBackground)) {
     return "background filter camera";
   }
 
@@ -202,7 +203,11 @@ bool AiProcessorVideoImpl::CreateJsonConfiguration(
   base::Value::Dict params;
   if (configure.filter == blink::XrFilter::kXrFilterBlur) {
     params.Set("blur_radius", configure.radius);
+    params.Set("mode", "Blur");
+  } else if (configure.filter == blink::XrFilter::kXrFilterBackground) {
+    params.Set("mode", "Replace");
   }
+
   root.Set("params", std::move(params));
 
   config_json_ =