[M108 Aura Migration] Add media playback ewk api 51/288951/6
authorxiaofang <fang.xiao@samsung.com>
Mon, 27 Feb 2023 02:19:08 +0000 (10:19 +0800)
committerBot Blink <blinkbot@samsung.com>
Tue, 28 Feb 2023 02:20:02 +0000 (02:20 +0000)
ewk api:
ewk_view_stop_video
ewk_view_broadcast_decoder_set
ewk_view_media_device_list_get
ewk_settings_default_audio_input_device_set
ewk_view_is_video_playing

Refer:
https://review.tizen.org/gerrit/#/c/270947/
https://review.tizen.org/gerrit/#/c/271619/
https://review.tizen.org/gerrit/#/c/284880/
https://review.tizen.org/gerrit/#/c/284853/
https://review.tizen.org/gerrit/#/c/276711/
https://review.tizen.org/gerrit/#/c/270211/

Change-Id: I406d049dca2b07ae4f4757c6412f0ceff9509e81
Signed-off-by: xiaofang <fang.xiao@samsung.com>
tizen_src/ewk/efl_integration/eweb_view_callbacks.h
tizen_src/ewk/efl_integration/public/ewk_media_playback_info.cc
tizen_src/ewk/efl_integration/public/ewk_media_playback_info.h [new file with mode: 0644]
tizen_src/ewk/efl_integration/public/ewk_media_playback_info_product.h
tizen_src/ewk/efl_integration/public/ewk_media_subtitle_info.h [new file with mode: 0644]
tizen_src/ewk/efl_integration/public/ewk_settings.cc
tizen_src/ewk/efl_integration/public/ewk_settings_product.h
tizen_src/ewk/efl_integration/public/ewk_user_media_internal.h
tizen_src/ewk/efl_integration/public/ewk_view.cc
tizen_src/ewk/efl_integration/public/ewk_view_internal.h
tizen_src/ewk/efl_integration/public/ewk_view_product.h

index 36b1345..7ab0b9d 100644 (file)
@@ -107,6 +107,16 @@ enum CallbackType {
   EdgeRight,
   EdgeTop,
   EdgeBottom,
+#if BUILDFLAG(IS_TIZEN_TV)
+  DeviceConnectionChanged,
+  PlaybackLoad,
+  PlaybackVideoReady,
+  PlaybackReady,
+  PlaybackStart,
+  PlaybackFinish,
+  PlaybackStop,
+  UserMediaState,
+#endif
   OverscrolledLeft,
   OverscrolledRight,
   OverscrolledTop,
@@ -251,6 +261,22 @@ DECLARE_EWK_VIEW_CALLBACK(EdgeLeft, "edge,left", void);
 DECLARE_EWK_VIEW_CALLBACK(EdgeTop, "edge,top", void);
 DECLARE_EWK_VIEW_CALLBACK(EdgeBottom, "edge,bottom", void);
 DECLARE_EWK_VIEW_CALLBACK(EdgeRight, "edge,right", void);
+#if BUILDFLAG(IS_TIZEN_TV)
+DECLARE_EWK_VIEW_CALLBACK(DeviceConnectionChanged,
+                          "device,connection,changed",
+                          int*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackLoad, "notification,playback,load", void*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackVideoReady,
+                          "notification,playback,videoready",
+                          void*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackReady, "notification,playback,ready", void*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackStart, "notification,playback,start", void*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackStop, "notification,playback,stop", void*);
+DECLARE_EWK_VIEW_CALLBACK(PlaybackFinish,
+                          "notification,playback,finish",
+                          void*);
+DECLARE_EWK_VIEW_CALLBACK(UserMediaState, "usermedia,state", void*);
+#endif
 DECLARE_EWK_VIEW_CALLBACK(OverscrolledLeft, "overscrolled,left", void);
 DECLARE_EWK_VIEW_CALLBACK(OverscrolledRight, "overscrolled,right", void);
 DECLARE_EWK_VIEW_CALLBACK(OverscrolledTop, "overscrolled,top", void);
index b7baf7e..1d7d318 100644 (file)
 #include "build/build_config.h"
 #include "private/ewk_private.h"
 
+struct _Ewk_Media_Playback_Info {
+  int video_id;
+  const char* media_url;
+  const char* mime_type;
+  Eina_Bool media_resource_acquired;
+  const char* translated_url;
+  const char* drm_info;
+  Ewk_Hardware_Decoders decoder;
+};
+
 const char* ewk_media_playback_info_media_url_get(
     Ewk_Media_Playback_Info* data) {
   LOG_EWK_API_MOCKUP();
@@ -68,6 +78,19 @@ void ewk_media_playback_info_drm_info_set(Ewk_Media_Playback_Info* data,
   LOG_EWK_API_MOCKUP();
 }
 
+Ewk_Hardware_Decoders ewk_media_playback_info_decoder_get(
+    Ewk_Media_Playback_Info* data) {
+  EINA_SAFETY_ON_NULL_RETURN_VAL(data, EWK_HARDWARE_DECODERS_NONE);
+  return data->decoder;
+}
+
+void ewk_media_playback_info_decoder_set(
+    Ewk_Media_Playback_Info* data,
+    Ewk_Hardware_Decoders decoder) {
+  if (data)
+    data->decoder = decoder;
+}
+
 const int ewk_media_playback_info_video_id_get(Ewk_Media_Playback_Info* data)
 {
   LOG_EWK_API_MOCKUP();
diff --git a/tizen_src/ewk/efl_integration/public/ewk_media_playback_info.h b/tizen_src/ewk/efl_integration/public/ewk_media_playback_info.h
new file mode 100644 (file)
index 0000000..b12341e
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2022 Samsung Electronics. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY SAMSUNG ELECTRONICS. AND ITS CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SAMSUNG ELECTRONICS. OR ITS
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file    ewk_media_playback_info.h
+ * @brief   This file describes the ewk media playback info API.
+ */
+
+#ifndef ewk_media_playback_info_h
+#define ewk_media_playback_info_h
+#include <Eina.h>
+#include <Evas.h>
+#include <tizen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _Ewk_Media_Playback_Info Ewk_Media_Playback_Info;
+
+/**
+ * Get url of media.
+ *
+ * @param meia playback info's structure
+ *
+ * @return @c media url
+ */
+EXPORT_API const char* ewk_media_playback_info_media_url_get(
+    Ewk_Media_Playback_Info* data);
+
+/**
+ * Get mime type of media.
+ *
+ * @param meia playback info's structure
+ *
+ * @return @c mime type
+ */
+EXPORT_API const char* ewk_media_playback_info_mime_type_get(
+    Ewk_Media_Playback_Info* data);
+
+/**
+ * Get translated url of media.
+ *
+ * @param media playback info's structure
+ *
+ * @return @c translated url
+ */
+EXPORT_API const char* ewk_media_playback_info_translated_url_get(
+    Ewk_Media_Playback_Info* data);
+
+/**
+ * Get drm info of media.
+ *
+ * @param media playback info's structure
+ *
+ * @return @c drm info
+ */
+EXPORT_API const char* ewk_media_playback_info_drm_info_get(
+    Ewk_Media_Playback_Info* data);
+
+/**
+ * Set media resource acquired of media.
+ *
+ * @param media playback info's structure
+ */
+EXPORT_API void ewk_media_playback_info_media_resource_acquired_set(
+    Ewk_Media_Playback_Info* data,
+    Eina_Bool media_resource_acquired);
+
+/**
+ * Set translated url of media.
+ *
+ * @param media playback info's structure
+ */
+EXPORT_API void ewk_media_playback_info_translated_url_set(
+    Ewk_Media_Playback_Info* data,
+    const char* translated_url);
+
+/**
+ * Set drm info of media.
+ *
+ * @param media playback info's structure
+ */
+EXPORT_API void ewk_media_playback_info_drm_info_set(
+    Ewk_Media_Playback_Info* data,
+    const char* drm_info);
+
+#ifdef __cplusplus
+}
+#endif
+#endif  // ewk_media_playback_info_h
+
index a7689d5..3fbc080 100644 (file)
 extern "C" {
 #endif
 
+/**
+ * Enum values used to inform webengine about decoder used by broadcast.
+ */
+typedef enum Ewk_Hardware_Decoders {
+    EWK_HARDWARE_DECODERS_NONE,
+    EWK_HARDWARE_DECODERS_MAIN,
+    EWK_HARDWARE_DECODERS_SUB,
+} Ewk_Hardware_Decoders;
+
 typedef struct _Ewk_Media_Playback_Info Ewk_Media_Playback_Info;
 
 /**
@@ -92,6 +101,16 @@ EXPORT_API const char* ewk_media_playback_info_drm_info_get(
     Ewk_Media_Playback_Info* data);
 
 /**
+ * Get decoder info of media.
+ *
+ * @param data playback info's structure
+ *
+ * @return @c decoder name
+ */
+EXPORT_API Ewk_Hardware_Decoders ewk_media_playback_info_decoder_get(
+    Ewk_Media_Playback_Info* data);
+
+/**
  * Set media resource acquired of media.
  *
  * @param media playback info's structure
@@ -118,6 +137,15 @@ EXPORT_API void ewk_media_playback_info_drm_info_set(
     Ewk_Media_Playback_Info* data,
     const char* drm_info);
 
+/**
+ * Set decoder info of media.
+ *
+ * @param media playback info's structure
+ */
+EXPORT_API void ewk_media_playback_info_decoder_set(
+    Ewk_Media_Playback_Info* data,
+    Ewk_Hardware_Decoders decoder);
+
 Ewk_Media_Playback_Info* ewkMediaPlaybackInfoCreate(const int player_id,
                                                     const char* url,
                                                     const char* mime_type);
diff --git a/tizen_src/ewk/efl_integration/public/ewk_media_subtitle_info.h b/tizen_src/ewk/efl_integration/public/ewk_media_subtitle_info.h
new file mode 100644 (file)
index 0000000..ed82339
--- /dev/null
@@ -0,0 +1,99 @@
+// Copyright 2022 Samsung Electronics. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+* @file    ewk_media_subtitle_info.h
+* @brief   .
+*/
+
+#ifndef ewk_media_subtitle_info_h
+#define ewk_media_subtitle_info_h
+#include <Eina.h>
+#include <Evas.h>
+#include <tizen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _Ewk_Media_Subtitle_Info Ewk_Media_Subtitle_Info;
+
+/**
+* Get id of subtitle.
+*
+* @param meia subtitle info's structure
+*
+* @return @c subtitle id
+*/
+EXPORT_API int ewk_media_subtitle_info_id_get(Ewk_Media_Subtitle_Info *data);
+
+/**
+* Get url of subtitle.
+*
+* @param meia subtitle info's structure
+*
+* @return @c subtitle url
+*/
+EXPORT_API const char *ewk_media_subtitle_info_url_get(Ewk_Media_Subtitle_Info *data);
+
+/**
+* Get srcLang of subtitle.
+*
+* @param meia subtitle info's structure
+*
+* @return @c subtitle srcLang
+*/
+EXPORT_API const char *ewk_media_subtitle_info_lang_get(Ewk_Media_Subtitle_Info *data);
+
+/**
+* Get label of subtitle.
+*
+* @param meia subtitle info's structure
+*
+* @return @c subtitle label
+*/
+EXPORT_API const char *ewk_media_subtitle_info_label_get(Ewk_Media_Subtitle_Info *data);
+
+typedef struct _Ewk_Media_Subtitle_Data Ewk_Media_Subtitle_Data;
+
+/**
+* Get id of subtitle.
+*
+* @param meia subtitle data's structure
+*
+* @return @c subtitle id
+*/
+EXPORT_API int ewk_media_subtitle_data_id_get(Ewk_Media_Subtitle_Data *data);
+
+/**
+* Get timestamp of subtitle.
+*
+* @param meia subtitle data's structure
+*
+* @return @c subtitle timestamp
+*/
+EXPORT_API double ewk_media_subtitle_data_timestamp_get(Ewk_Media_Subtitle_Data *data);
+
+/**
+* Get data size of subtitle.
+*
+* @param meia subtitle data's structure
+*
+* @return @c subtitle data size
+*/
+EXPORT_API unsigned ewk_media_subtitle_data_size_get(Ewk_Media_Subtitle_Data *data);
+
+/**
+* Get data of subtitle.
+*
+* @param meia subtitle data's structure
+*
+* @return @c subtitle data
+*/
+EXPORT_API const void* ewk_media_subtitle_data_get(Ewk_Media_Subtitle_Data *data);
+
+#ifdef __cplusplus
+}
+#endif
+#endif // ewk_media_subtitle_info_h
\ No newline at end of file
index 2891773..3fdb1e9 100644 (file)
@@ -716,6 +716,11 @@ Eina_Bool ewk_settings_uses_scrollbar_thumb_focus_notifications_set(Ewk_Settings
   return EINA_FALSE;
 }
 
+void ewk_settings_default_audio_input_device_set(Ewk_Settings* settings, const char* device_id)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
 void ewk_settings_media_playback_notification_set(Ewk_Settings* settings, Eina_Bool enabled)
 {
   LOG_EWK_API_MOCKUP();
index 7f6bdfa..ed82333 100644 (file)
@@ -869,6 +869,7 @@ EXPORT_API void ewk_settings_clipboard_enabled_set(Ewk_Settings* settings, Eina_
 */
 EXPORT_API Eina_Bool ewk_settings_clipboard_enabled_get(const Ewk_Settings* settings);
 
+EXPORT_API void ewk_settings_default_audio_input_device_set(Ewk_Settings* settings, const char* device_id);
 
 #ifdef __cplusplus
 }
index d6c0ce6..9b933e9 100644 (file)
@@ -55,6 +55,18 @@ enum _Ewk_User_Media_Device_Type {
 typedef enum _Ewk_User_Media_Device_Type Ewk_User_Media_Device_Type;
 
 /**
+ * struct   _Ewk_User_Media_State_Info
+ * @brief   Get user media device usability status.
+ *
+ */
+struct _Ewk_User_Media_State_Info {
+  Ewk_User_Media_Device_Type device_type;
+  uint32_t previous_state;
+  uint32_t current_state;
+};
+typedef struct _Ewk_User_Media_State_Info Ewk_User_Media_State_Info;
+
+/**
  * Requests for getting origin of local media permission request.
  *
  * @param request Ewk_User_Media_Permission_Request object to get origin for
index e2c3269..de1b81a 100644 (file)
@@ -1503,12 +1503,31 @@ Eina_Bool ewk_view_key_system_whitelist_set(Evas_Object* ewkView, const char** l
   return EINA_FALSE;
 }
 
+Eina_Bool ewk_view_is_video_playing(Evas_Object* o, Ewk_Is_Video_Playing_Callback callback, void* user_data)
+{
+  LOG_EWK_API_MOCKUP();
+  return EINA_FALSE;
+}
+
 Eina_Bool ewk_view_active_drm_set(Evas_Object* view, const char* drm_system_id)
 {
   LOG_EWK_API_MOCKUP();
   return EINA_FALSE;
 }
 
+void ewk_view_broadcast_decoder_set(
+  Evas_Object* view,
+  Ewk_Hardware_Decoders decoder)
+{
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  /* waiting for implement*/
+  //impl->SetBroadcastDecoder(decoder);
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+#endif
+}
+
 void ewk_media_set_subtitle_lang(Evas_Object* ewkView, const char* lang_list)
 {
   LOG_EWK_API_MOCKUP();
@@ -1629,3 +1648,7 @@ void ewk_view_request_manifest(Evas_Object* o,
   EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
   impl->RequestManifest(callback, user_data);
 }
+
+void ewk_view_media_device_list_get(Evas_Object* o, Ewk_Media_Device_List_Get_Callback callback, void* user_data) {
+  //TODO
+}
\ No newline at end of file
index 986e3ef..a7ba801 100644 (file)
@@ -33,6 +33,8 @@
 #ifndef ewk_view_internal_h
 #define ewk_view_internal_h
 
+#include <stdbool.h>
+
 #include "ewk_app_installation_request_internal.h"
 #include "ewk_auth_challenge_internal.h"
 #include "ewk_context_internal.h"
@@ -157,6 +159,20 @@ enum Ewk_Mouse_Button_Type {
 };
 typedef enum Ewk_Mouse_Button_Type Ewk_Mouse_Button_Type;
 
+typedef enum _EwkMediaDeviceType{
+  MEDIA_DEVICE_TYPE_AUDIO_INPUT,
+  MEDIA_DEVICE_TYPE_VIDEO_INPUT,
+  MEDIA_DEVICE_TYPE_AUDIO_OUTPUT,
+  NUM_MEDIA_DEVICE_TYPES,
+} EwkMediaDeviceType;
+
+typedef struct _EwkMediaDeviceInfo{
+   const char* device_id;
+   const char* label;
+   EwkMediaDeviceType type;
+   bool connected;
+} EwkMediaDeviceInfo;
+
 /// Ewk view's class, to be overridden by sub-classes.
 struct Ewk_View_Smart_Class {
     Evas_Smart_Class sc; /**< all but 'data' is free to be changed. */
@@ -285,6 +301,8 @@ typedef void (*Ewk_View_Scale_Changed_Callback)(Evas_Object *o, double scale_fac
  */
 typedef void (*Ewk_View_SmartRC_Mic_Notification_Callback)(Evas_Object *o, Eina_Bool show, void *user_data);
 
+typedef void (*Ewk_Media_Device_List_Get_Callback)(EwkMediaDeviceInfo* device_list, int size, void* user_data);
+
 /**
  * The version you have to put into the version field
  * in the @a Ewk_View_Smart_Class structure.
@@ -1487,6 +1505,8 @@ EXPORT_API void ewk_view_feed_mouse_wheel(Evas_Object* o,
                                           int x,
                                           int y);
 
+EXPORT_API void ewk_view_media_device_list_get(Evas_Object* o, Ewk_Media_Device_List_Get_Callback callback, void* user_data);
+
 #ifdef __cplusplus
 }
 #endif
index 18b8752..6afdf45 100644 (file)
@@ -34,6 +34,7 @@
 #define ewk_view_product_h
 
 #include "ewk_context_product.h"
+#include "ewk_media_playback_info_product.h"
 #include "ewk_value_product.h"
 #include "ewk_view_internal.h"
 
@@ -792,6 +793,15 @@ EXPORT_API Eina_Bool ewk_view_key_system_whitelist_set(Evas_Object* ewkView,
 EXPORT_API Eina_Bool ewk_view_active_drm_set(Evas_Object* view, const char* drm_system_id);
 
 /**
+ * Inform webengine about decoder used by broadcast for dual decoding.
+ *
+ * @param view View object
+ * @param decoder Identifier of used decoder
+ */
+EXPORT_API void ewk_view_broadcast_decoder_set(Evas_Object* view,
+  Ewk_Hardware_Decoders decoder);
+
+/**
 * Set the selected text track language to media player.
 *
 * @param ewkView view object