diff --git a/packages/video_player_avplay/CHANGELOG.md b/packages/video_player_avplay/CHANGELOG.md index 79ca7abb8..21f54d54d 100644 --- a/packages/video_player_avplay/CHANGELOG.md +++ b/packages/video_player_avplay/CHANGELOG.md @@ -1,7 +1,22 @@ ## NEXT +* Add notes for creating dash player. +* [Dash] Fix no EOS event of dashplayer. +* Remove set looping failed message. + +## 0.4.1 + * Fix new lint warnings. * Update minimum Flutter and Dart version to 3.13 and 3.1. +* Update plusplayer + 1. [HLS] Sending dummy audio pkts to minimize pts gap between audio pkts across discontinuity. + 2. [HLS] Low Latency implementation for external track (audio/subtitle). + 3. [HLS] Segment list improvement using index offset. + 4. [SS] Fix for memory leak. + 5. [DASH] For dash case, adding samplerate change limitation for seamless audio track changes. + 6. [DASH] Adding dash DRM case for HbbTV fault key test case. + 7. [DASH] Fixing app_id dummy exception case. + 8. [DASH] Support ATSC3 L1 time. ## 0.4.0 diff --git a/packages/video_player_avplay/README.md b/packages/video_player_avplay/README.md index ccad79227..9a80d3936 100644 --- a/packages/video_player_avplay/README.md +++ b/packages/video_player_avplay/README.md @@ -12,7 +12,7 @@ To use this package, add `video_player_avplay` as a dependency in your `pubspec. ```yaml dependencies: - video_player_avplay: ^0.4.0 + video_player_avplay: ^0.4.1 ``` Then you can import `video_player_avplay` in your Dart code: @@ -29,6 +29,13 @@ Note that `video_player_avplay` uses a compiled dynamic library, the api-version ``` +Note that if you play dash streams, please add dash format when creating the player: +```dart + VideoPlayerController.network( + 'https://xxx.mpd', + formatHint: VideoFormat.dash); +``` + ### Example ```dart @@ -127,4 +134,4 @@ This plugin has the following limitations. - The `setPlaybackSpeed` method will fail if triggered within the last 3 seconds of the video. - The playback speed will reset to 1.0 when the video is replayed in loop mode. - The `seekTo` method works only when the playback speed is 1.0, and it sets the video position to the nearest keyframe, not the exact value passed. -- +- The `setLooping` method only works when the player's DataSourceType is DataSourceType.asset. diff --git a/packages/video_player_avplay/pubspec.yaml b/packages/video_player_avplay/pubspec.yaml index 9ce4f45ef..a3278cdfd 100644 --- a/packages/video_player_avplay/pubspec.yaml +++ b/packages/video_player_avplay/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_avplay description: Flutter plugin for displaying inline video on Tizen TV devices. homepage: https://github.com/flutter-tizen/plugins repository: https://github.com/flutter-tizen/plugins/tree/master/packages/video_player_avplay -version: 0.4.0 +version: 0.4.1 environment: sdk: ">=3.1.0 <4.0.0" diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libdash.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libdash.so index 7971d755b..0b8b7b77e 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libdash.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libdashplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libdashplusplayer_tvplus.so index 7885165d2..150d699fa 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libdashplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libdashplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libgstdash.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libgstdash.so index 1f538b402..29ff6784d 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libgstdash.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libgstdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libgsthls.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libgsthls.so index b6eeee50b..5f71d98c1 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libgsthls.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libgsthls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libhls.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libhls.so index cca05eaa8..e5be96c8b 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libhls.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libhls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer-wrapper.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer-wrapper.so index 4554155f8..49605547e 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer-wrapper.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer-wrapper.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer_tvplus.so index 2baaf190e..0d325f97b 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayercore_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayercore_tvplus.so index 6595f1806..21e8777a5 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayercore_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libplusplayercore_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.0/libtracksource_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.0/libtracksource_tvplus.so index f655d1b99..cfcba3e8c 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.0/libtracksource_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.0/libtracksource_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libdash.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libdash.so index 4033fe59b..43b02ab5d 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libdash.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libdashplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libdashplusplayer_tvplus.so index 5a55ce9d3..9125b8bea 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libdashplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libdashplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libgstdash.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libgstdash.so index fc6439371..58908b158 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libgstdash.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libgstdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libgsthls.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libgsthls.so index bc33965ef..001d39c8b 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libgsthls.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libgsthls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libhls.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libhls.so index 8dbc40cdf..90d60c12e 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libhls.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libhls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer-wrapper.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer-wrapper.so index 3a0838406..d10a63261 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer-wrapper.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer-wrapper.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer_tvplus.so index 1a49f3dee..de41097c1 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayercore_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayercore_tvplus.so index 92d675fc1..078c1ffc5 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayercore_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libplusplayercore_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/6.5/libtracksource_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/6.5/libtracksource_tvplus.so index bfc247e39..af1b4ac7f 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/6.5/libtracksource_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/6.5/libtracksource_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libdash.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libdash.so index 685b5de9a..190c4ffef 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libdash.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libdashplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libdashplusplayer_tvplus.so index 1cc522354..9b5f15bc1 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libdashplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libdashplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libgstdash.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libgstdash.so index 7d1705de7..4422d4ed0 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libgstdash.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libgstdash.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libgsthls.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libgsthls.so index 6e46aee65..aa2c58efd 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libgsthls.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libgsthls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libhls.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libhls.so index 6273d85b0..911e8c157 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libhls.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libhls.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer-wrapper.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer-wrapper.so index 2934fdf58..4ab2adb47 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer-wrapper.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer-wrapper.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer_tvplus.so index 3e82166fb..e8b986128 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayer_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayercore_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayercore_tvplus.so index a761eefa8..01587f8da 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayercore_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libplusplayercore_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/lib/armel/7.0/libtracksource_tvplus.so b/packages/video_player_avplay/tizen/lib/armel/7.0/libtracksource_tvplus.so index 9135e02df..2188c7f4d 100755 Binary files a/packages/video_player_avplay/tizen/lib/armel/7.0/libtracksource_tvplus.so and b/packages/video_player_avplay/tizen/lib/armel/7.0/libtracksource_tvplus.so differ diff --git a/packages/video_player_avplay/tizen/src/plus_player.cc b/packages/video_player_avplay/tizen/src/plus_player.cc index ebc6cced6..41d761ced 100644 --- a/packages/video_player_avplay/tizen/src/plus_player.cc +++ b/packages/video_player_avplay/tizen/src/plus_player.cc @@ -247,7 +247,7 @@ bool PlusPlayer::Pause() { bool PlusPlayer::SetLooping(bool is_looping) { LOG_ERROR("[PlusPlayer] Not support to set looping."); - return false; + return true; } bool PlusPlayer::SetVolume(double volume) { diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 9042c43b4..63502241e 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,8 +1,9 @@ -## NEXT +## 0.9.1 * Add ewk_set_version_policy() call. * Fix new lint warnings. * Update minimum Flutter and Dart version to 3.13 and 3.1. +* Add WebViewController.tizenEnginePolicy extension API temporary. ## 0.9.0 diff --git a/packages/webview_flutter/README.md b/packages/webview_flutter/README.md index a75600ea1..13fb06605 100644 --- a/packages/webview_flutter/README.md +++ b/packages/webview_flutter/README.md @@ -23,7 +23,7 @@ This package is not an _endorsed_ implementation of `webview_flutter`. Therefore ```yaml dependencies: webview_flutter: ^4.4.2 - webview_flutter_tizen: ^0.9.0 + webview_flutter_tizen: ^0.9.1 ``` ## Example @@ -63,7 +63,7 @@ This plugin is only supported on Tizen TV devices running Tizen 5.5 or later. ## Note -To play Youtube, make app's background color to transparent. +- To play Youtube, make app's background color to transparent. ```diff --- a/packages/webview_flutter/example/lib/main.dart @@ -76,3 +76,12 @@ To play Youtube, make app's background color to transparent. appBar: AppBar( title: const Text('Flutter WebView example'), ``` + +- In Tizen 6.0, there were some devices that failed to create the web view. In this case, the creation failure is resolved by using the Upgrade Web Engine (UWE) internally. If you set the `WebViewController.tizenEnginePolicy` extension API to `true` before creating the `WebviewWidget`, the webview will internally search for another version of the engine. However, this API can be changed(or removed) at any time and is not officially guaranteed to work. + +```dart +import 'package:webview_flutter_tizen/webview_flutter_tizen.dart'; + +WebViewController _controller; +_controller.tizenEnginePolicy = true; +``` diff --git a/packages/webview_flutter/lib/src/tizen_webview.dart b/packages/webview_flutter/lib/src/tizen_webview.dart index 1ed3051de..67560c01a 100644 --- a/packages/webview_flutter/lib/src/tizen_webview.dart +++ b/packages/webview_flutter/lib/src/tizen_webview.dart @@ -60,12 +60,13 @@ class TizenWebView { } /// Called when [TizenView] is created. Invokes the requested method call before [TizenWebView] is created. - void onCreate(int viewId) { + void onCreate(int viewId, bool enginePolicy) { _isCreated = true; _viewId = viewId; _tizenWebViewChannel = MethodChannel(kTizenWebViewChannelName + viewId.toString()); _tizenWebViewChannel.setMethodCallHandler(_onMethodCall); + _invokeChannelMethod('setEnginePolicy', enginePolicy); _callPendingMethodCalls(); } diff --git a/packages/webview_flutter/lib/src/tizen_webview_controller.dart b/packages/webview_flutter/lib/src/tizen_webview_controller.dart index 355f35c89..2d35249ae 100644 --- a/packages/webview_flutter/lib/src/tizen_webview_controller.dart +++ b/packages/webview_flutter/lib/src/tizen_webview_controller.dart @@ -8,6 +8,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_tizen/widgets.dart'; +import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'tizen_webview.dart'; @@ -20,6 +21,16 @@ const String kTizenNavigationDelegateChannelName = const String kTizenWebViewControllerChannelName = 'plugins.flutter.io/tizen_webview_controller_'; +/// The extension of WebViewController class for the Tizen. +extension TizenWebViewControllerExtension on WebViewController { + /// Set to engine policy. + set tizenEnginePolicy(bool enginePolicy) { + final TizenWebViewController controller = + platform as TizenWebViewController; + controller._enginePolicy = enginePolicy; + } +} + /// An implementation of [PlatformWebViewController] using the Tizen WebView API. class TizenWebViewController extends PlatformWebViewController { /// Constructs a [TizenWebViewController]. @@ -34,6 +45,8 @@ class TizenWebViewController extends PlatformWebViewController { late final MethodChannel _webviewControllerChannel; + bool _enginePolicy = false; + /// Called when [TizenView] is created. void createWebviewControllerChannel(int viewId) { _webviewControllerChannel = @@ -74,7 +87,7 @@ class TizenWebViewController extends PlatformWebViewController { /// Called when [TizenView] is created. void onCreate(int viewId) { - _webview.onCreate(viewId); + _webview.onCreate(viewId, _enginePolicy); if (_webview.hasNavigationDelegate) { _tizenNavigationDelegate.createNavigationDelegateChannel(viewId); } diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index 15c1cdd09..a0991158d 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_tizen description: Tizen implementation of the webview_flutter plugin. homepage: https://github.com/flutter-tizen/plugins repository: https://github.com/flutter-tizen/plugins/tree/master/packages/webview_flutter -version: 0.9.0 +version: 0.9.1 environment: sdk: ">=3.1.0 <4.0.0" diff --git a/packages/webview_flutter/tizen/src/webview.cc b/packages/webview_flutter/tizen/src/webview.cc index 0de9a36c6..38897b587 100644 --- a/packages/webview_flutter/tizen/src/webview.cc +++ b/packages/webview_flutter/tizen/src/webview.cc @@ -115,8 +115,6 @@ WebView::WebView(flutter::PluginRegistrar* registrar, int view_id, })); SetTextureId(texture_registrar_->RegisterTexture(texture_variant_.get())); - InitWebView(); - webview_channel_ = std::make_unique( GetPluginRegistrar()->messenger(), GetWebViewChannelName(), &flutter::StandardMethodCodec::GetInstance()); @@ -287,8 +285,11 @@ void WebView::SetDirection(int direction) { // TODO: Implement if necessary. } -void WebView::InitWebView() { - EwkInternalApiBinding::GetInstance().main.SetVersionPolicy(1); +bool WebView::InitWebView() { + if (engine_policy_) { + LOG_INFO("Upgrade web engine used."); + EwkInternalApiBinding::GetInstance().main.SetVersionPolicy(1); + } char* chromium_argv[] = { const_cast("--disable-pinch"), @@ -304,6 +305,9 @@ void WebView::InitWebView() { Ecore_Evas* evas = ecore_evas_new("wayland_egl", 0, 0, 1, 1, 0); webview_instance_ = ewk_view_add(ecore_evas_get(evas)); + if (!webview_instance_) { + return false; + } ecore_evas_focus_set(evas, true); ewk_view_focus_set(webview_instance_, true); EwkInternalApiBinding::GetInstance().view.OffscreenRenderingEnabledSet( @@ -350,19 +354,31 @@ void WebView::InitWebView() { evas_object_show(webview_instance_); evas_object_data_set(webview_instance_, kEwkInstance, this); + + return true; } void WebView::HandleWebViewMethodCall(const FlMethodCall& method_call, std::unique_ptr result) { - if (!webview_instance_) { - result->Error("Invalid operation", - "The webview instance has not been initialized."); - return; - } - const std::string& method_name = method_call.method_name(); const flutter::EncodableValue* arguments = method_call.arguments(); + if (method_name == "setEnginePolicy") { + const auto* engine_policy = std::get_if(arguments); + if (engine_policy) { + engine_policy_ = *engine_policy; + } + result->Success(); + } + + if (!webview_instance_) { + if (!InitWebView()) { + result->Error("Invalid operation", + "The webview instance initialize failed."); + return; + } + } + if (method_name == "javaScriptMode") { const auto* mode = std::get_if(arguments); if (mode) { diff --git a/packages/webview_flutter/tizen/src/webview.h b/packages/webview_flutter/tizen/src/webview.h index 76eaa25bc..db81a028f 100644 --- a/packages/webview_flutter/tizen/src/webview.h +++ b/packages/webview_flutter/tizen/src/webview.h @@ -67,7 +67,7 @@ class WebView : public PlatformView { std::string GetWebViewControllerChannelName(); std::string GetNavigationDelegateChannelName(); - void InitWebView(); + bool InitWebView(); static void OnFrameRendered(void* data, Evas_Object* obj, void* event_info); static void OnLoadStarted(void* data, Evas_Object* obj, void* event_info); @@ -84,6 +84,7 @@ class WebView : public PlatformView { Evas_Object* webview_instance_ = nullptr; flutter::TextureRegistrar* texture_registrar_; + bool engine_policy_ = false; double width_ = 0.0; double height_ = 0.0; double left_ = 0.0;