Adam Bujalski [Fri, 21 Feb 2025 08:13:04 +0000 (09:13 +0100)]
[GS][SVACE] Uninitialized data is read from local variable 'plane'
Added variable initialization with invalid and checking that conversion
between enumeration covers all cases.
Bug: https://sa.sec.samsung.net/dm/tizen80/sb2/main/review#PRJID=2&WGID=89464
Bug:
DF240128-00041
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-2260
Signed-off-by: Adam Bujalski <a.bujalski@samsung.com>
Change-Id: Iaf898cc9361d181913c30fa2dfa5dd96546044aa
Adam Bujalski [Fri, 31 Jan 2025 16:56:18 +0000 (17:56 +0100)]
VDWASM-2217 fixup! Enable heap profiling in memory-infra traces
Starting memory-infra not only in WRT but also in other applications
(e.g. HbbTv).
Change-Id: I5003752ba352b42f652e28cc14e3309ea4b896fd
Adam Bujalski [Fri, 31 Jan 2025 16:45:53 +0000 (17:45 +0100)]
VDWASM-2217 fixup! Enable heap profiling in memory-infra traces
Building chromium-impl.so library instead of chromium-ewk.so when
memory-infra is enabled. This is needed to use memory-infra with HbbTv.
Change-Id: I8c4a73f602928bf4d33db44a1e03bef09ce3dcf7
Maciej Pietka [Tue, 3 Dec 2024 14:03:45 +0000 (15:03 +0100)]
Bail out from waiting for drm on player release.
Backported from Chromium M120, reference:
https://archive.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/320728/
> Bail out from waiting if the player is released.
[*KONA_ID]
DF241128-01341 [PreCert][SCL][TV]
[24_Rose_SF][Italy][TivuSat][HbbTV(DRM)]
com.tivu_DASHDRM-HTML5-0026
If player is destroyed before DRM initialization
was finished or has timed out then we should
stop waiting.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1978
Signed-off-by: Maciej Pietka <m.pietka@samsung.com>
Change-Id: I7579433384b81f7a5626b81415a247d5ae2f7e86
Michal Jurkiewicz [Mon, 25 Nov 2024 08:59:05 +0000 (09:59 +0100)]
[GS] Render decoded frame in case of fill after released
Backport of patch from 'tizen' branch from tizen 9.0:
https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/319219
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-630
Change-Id: Ib4db20b145f46dad368a0dd94a7802c536bdbbea
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Michal Jurkiewicz [Mon, 25 Nov 2024 08:13:06 +0000 (09:13 +0100)]
[TTVD] Get frame buffer size for surface
Backport of patch from 'tizen' branch from tizen 9.0:
https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/318596
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-630
Change-Id: Iaa43e986c14e6b3db7acb6204f855903e0308c41
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Jakub Gajownik [Wed, 20 Nov 2024 11:08:14 +0000 (12:08 +0100)]
Reset fallback state on decoder reinit earlier
This change fixes rare issue with decoder stream reinitialization:
When decoder emits a frame, decoder stream sets flag to indicated
that no decoder fallback should be done. In case config change is
received and decoder reinitialization is finished before first
decoder buffer, flag is not reset. Then if first decode fails,
fallback is not enabled leading to persistent error on DecoderStream.
Flag reset should be done always when decoder initialization is
finished, no matter result.
Related upstream patch:
> Reset fallback state on decoder reinit
> https://chromium-review.googlesource.com/c/chromium/src/+/601210
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-627
Change-Id: Iff21f35155dce9d9502007060d696eeea4fd518c
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Maciej Pietka [Wed, 9 Oct 2024 09:47:23 +0000 (11:47 +0200)]
Don't pause after first seek from pipeline in MMPlayer bridge.
Tracking double seek behavior of the pipeline is no longer required.
Remove pause after first seek.
Revert "[HBBTV] Handle double seek - pause content until second seek"
This reverts commit
273a1a9c5d7bb0265696775f26447f8bf1a50ac1.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1821
Signed-off-by: Maciej Pietka <m.pietka@samsung.com>
Change-Id: Ia602a1787a8ae9b2a73f2662ca865822b694a4dc
Jakub Gajownik [Mon, 18 Nov 2024 11:15:04 +0000 (12:15 +0100)]
Allow batch video decoding using standard pipeline
Ported patches from upstream Chromium:
* Support video decode batching for non-MF renderer path.
https://chromium-review.googlesource.com/c/chromium/src/+/
4544387
* Allow batch decoding only when output picture buffers are pre-allocated.
https://chromium-review.googlesource.com/c/chromium/src/+/
5862888
* media: Re-enable Batch decoding in the renderer
https://chromium-review.googlesource.com/c/chromium/src/+/
5892966
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-624
Change-Id: I2da025a4b5c8dff435de17ab79eb33322e0e0179
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
zhishun.zhou [Fri, 11 Oct 2024 12:58:34 +0000 (20:58 +0800)]
Fix block issue of tct-video-html5-tests
Many test cases have following video source URL:
<script type="text/javascript">
var media = document.getElementById("m");
media.src = getVideoURI("../media/movie_5") + "?" + new Date() + Math.random();
media.play();
</script>
such as: uri:file:///opt/usr/apps/html5video/res/wgt/opt/tct-video-html5-tests/video/media/movie_5.mp4?Tue%20Oct%2008%202024%2018:27:00%20GMT+0900%20(Korean%20Standard%20Time)0.
2986363072123914
once it set to CAPI player, PLAYER_ERROR_INVALID_URI occurs.
Refer to legacy source code, we need make it clean URL, see line 168 of:
https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/266844/13/tizen_src/chromium_impl/content/renderer/media/efl/webmediaplayer_efl.cc
Change-Id: I795de3e46136444849de120460052372efc25355
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
zhishun.zhou [Fri, 11 Oct 2024 12:45:34 +0000 (20:45 +0800)]
Fix issue of tct-video-html5-tests case video_000
Case video_000 expect when a video is loaded but is not playing,
the first video frame should be rendered on screen.
To support render video frame in paused state, CAPI interface
player_display_video_at_paused_state need set to true;
and a correct geometry need set to MMPLAYER. while Now the
geometry can not be set before state PLAYING.
And the pending geometry already be implemented in
VideoPlaneController::SetDeferredVideoRect; let remove the
redundant logic in MediaPlayerBridgeCapi [delayed_rect_ and
delayed_viewport_rect_].
Change-Id: I0263b9c00df92b9aba26bc15fc3e16f1c146ed35
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
zhishun.zhou [Sat, 12 Oct 2024 03:50:34 +0000 (11:50 +0800)]
Fix mute fail issue of tct-video-html5-tests
Manual cases video_muted_present_manual and video_volume_silent_manual
are failed because the volume have not been set to platform player.
When platform player is not ready, we should pending the volume setting,
and in the ready callback function retrigger volume setting.
Change-Id: I057a70f061e826080e76294a64b75c3c3156d642
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
Michal Jurkiewicz [Thu, 26 Sep 2024 15:41:38 +0000 (17:41 +0200)]
fixup! [TTVD] Add support for AI zoom during video capture
Backporting fix from M120, which solves buildbreak on products
with disabled `tizen_auto_zoom_enable` functionality.
Check difference between 1st and 3rd patchset of
https://review.tizen.org/gerrit/c/platform/framework/web/chromium-efl/+/316237/1..3
for reference.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1800
Change-Id: I44667985823f9cbe07a68915cf8bff693d7ad852
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Jakub Gajownik [Fri, 20 Sep 2024 18:01:20 +0000 (20:01 +0200)]
[MM] Check for operation when current time is updated
[Problem]
Sometimes when data is not fetch quickly enough,
player gets underrun after last frame is pushed to
platform player. Since no new data is feeded into
player, pausing logic is not triggered and during
whole underrun period player stays in "playing"
state.
[Solution]
Since pausing logic checks for current timestamp, we should
perform it every time current playback position has changed.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1781
Change-Id: I4ac88359344ede01bd35a23a627ee96c75a615ce
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
chenshurong [Sat, 14 Sep 2024 07:22:47 +0000 (15:22 +0800)]
[VD][MultiControl] Support ReadPng for copy&paste
1. Png replaces Bitmap on upstream, support ReadPng for copy&paste.
2. EFL have supported multi type data(mainly html type and text type),
and Multi Control app also will set text and html type data is have,
so don't need convert text to html on our side, and also don't need
check text data when check whether html format is Available.
Change-Id: I86032e1ce5c5903ee6d589b54cf120609d40cce5
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Jakub Gajownik [Fri, 30 Aug 2024 09:17:10 +0000 (11:17 +0200)]
[MM] Read multiple decoder buffers from demuxer
There an issue with playback stability on low end boards.
Demuxing, dispatching and pushing packet to player
sequentially might be longer than single packet duration.
For contents with low single packet duration it might reach
buffering state repeatedly.
After this change multiple buffers are taken from demuxer
stream at once, reducing processing time and giving more
margin for buffering process.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1738
Change-Id: Ic266d73ba5db0f06e191ec32786d9101b7632425
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Kajetan Brzuszczak [Fri, 30 Aug 2024 12:46:36 +0000 (14:46 +0200)]
[HBBTV] Apply performance improvement fixes from upstream
Patch1:
1. Change dumuxer stream api.
2. ChunkDemuxer/FFmpegDemuxer support read multi buffer from stream.
Patch2:
1.Add multi buffer read in MojoDemuxerStreamImpl and
MojoDemuxerStreamAdapter
2.Support multi read in MediaFoundationStreamWrapper, the main
change aims to maintain the buffers from MojoDemuxerStreamAdapter
and feedback the buffer to MediaEngine.
Reference commits:
https://chromium-review.googlesource.com/c/chromium/src/+/
4021117
https://chromium-review.googlesource.com/c/chromium/src/+/
4042161
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1738
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: I4df65d7c43785e0eaadffeb80be5e9f091a6dddf
zhishun.zhou [Wed, 26 Jun 2024 07:40:46 +0000 (15:40 +0800)]
Reset is_seeking_ in MediaPlayerBridgeCapi::Release()
Issue:
Sometimes video resume failed
Reason:
Because TizenRendererImpl::Suspend() doesn't invoke
MediaPlayerBridgeCapi::Suspend() but invoke MediaPlayerBridgeCapi::Release();
If suspend happened when MediaPlayerBridgeCapiTV is seeking,
the seeking state will not be cleared after Release().
Once resume event comes, the is_seeking_ flag will cause play fail.
Solution:
Reset is_seeking_ in MediaPlayerBridgeCapi::Release()
Change-Id: I081c77f33b05c50e256fa7581feefe9d3670698f
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
chenshurong [Fri, 2 Aug 2024 05:34:05 +0000 (13:34 +0800)]
[MultiControl] Deliver html type data for link element
Because EFL only support deliver one type data, so deliver html type
data for link, then Multi control can get text or url src from the html.
Change-Id: I6356e66722cc0618759bd8a76abd0f32433cdc87
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Jakub Gajownik [Mon, 2 Sep 2024 10:13:02 +0000 (12:13 +0200)]
fixup! [TTVD] Disallow using MFC for H264 level 5.0 and higher
After initial patch there are problems with playback of
non-H264 streams with level specified (e.g HEVC) due to
rejection of category selection.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-566
Change-Id: I26753a066db3f40530ef35c940993d30e6690562
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 28 Aug 2024 12:54:23 +0000 (14:54 +0200)]
[TTVD] Prevent overlay promotion for released decoder collections
When video decoder is released after widget suspension,
it's not longer possible to render previously returned
video frames using overlay system (as it requires alive
decoder). However, there was no mechanism to detect such
scenarios and prevent propoting related quads.
As we already have possibility to communicate with output
surface manager, we can notify about collection liveness.
After such change, pre-suspension video frames are no longer
promoted to overlay.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-558
Change-Id: I6d0ace65b44c0ae1f0ffd26a6ce8ab54439499ee
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Mon, 26 Aug 2024 10:44:35 +0000 (12:44 +0200)]
[TTVD] Notify collection about mode change when stealing surface
It's possible that output surface is taken from decoder
that's using it during overlay preparation. Such preparation
waits until surface is fully initialized and reaches
"overlay" mode. After stealing surface by other decoder,
it'll wait infinitely.
This change fixes such scenario by notifying previous
surface client (decoder) about "texture" mode, so it might
finish preparation process.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-558
Change-Id: I951d27a5fba8e033ba40aebc98f0d28364fa0176
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Chandan Padhi [Fri, 30 Aug 2024 10:47:58 +0000 (16:17 +0530)]
Use WeakPtr for callbacks in BrowsingDataRemoverEfl
It seems BrowsingDataRemoverEfl is already destroyed by the time its
callbacks are executed. Therefore, use of base::Unretained(this) may
result in crash due to unretained dangling pointer when the tasks are
run.
This commit replaces Unretained with weak ptr to fix the crash reported
in the KONA issue
DF240830-00534.
Change-Id: I1db1bba496ec880d240d3be4776b03609ae8e42b
Signed-off-by: Chandan Padhi <c.padhi@samsung.com>
chenshurong [Fri, 30 Aug 2024 01:33:32 +0000 (09:33 +0800)]
[MultiControl] Fix copy & paste been blocked issue
ReadPng not implemented on ClipboardEfl,
should return a empty data for avoiding block the following process.
refer:
https://review.tizen.org/gerrit/#/c/275500
Change-Id: If0af9bca5b783b1b78e61026cd95354234be13a6
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Kajetan Brzuszczak [Wed, 28 Aug 2024 07:15:53 +0000 (09:15 +0200)]
fixup! [HBBTV] Redundant MMPlayer API usage when resuming video playback after pause.
The SelectAudioTrack method selected an old track instead, the one
which was requested.
Bug: https://jira-eu.sec.samsung.net/browse/VDSPD2CA-1209
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: Ib9bdddde267faba21b467f6bd477e54dd8fc52b4
zhishun.zhou [Tue, 20 Aug 2024 10:48:21 +0000 (18:48 +0800)]
Ignore OnReadyToSeek after function Release
There is a PostTask in MediaPlayerESPlusPlayer::OnReadyToSeek,
if the posted task comes after MediaPlayerESPlusPlayer::Release(),
the loop of ReadBuffer will be retriggered in suspending state.
Let's ignore OnReadyToSeek after function Release.
Change-Id: I2a0005c125b4b70e286350334309af805954faa9
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>
chenshurong [Mon, 12 Aug 2024 02:47:00 +0000 (10:47 +0800)]
[MultiControl][VD] Support Drag and Drop image file
Add dataTransfer.file property value for drag and drop image file,
as some website(such as naver mail and naver blog) need handled as
file when received the drop event.
Change-Id: I22b23012bc31d0d0012a5350b295c11e3518fd23
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Kajetan Brzuszczak [Wed, 31 Jul 2024 10:40:38 +0000 (12:40 +0200)]
[HBBTV] Handle double seek - pause content until second seek
[KONA*]
DF240624-01142 [PreCert][SCL][TV][24_OSU_TV(23_KantSU2e)][Italy][TivuSat][SelfTC]The beginning of the advertisement(mid roll) is re-played while playback live content and DRM VOD.
[Problem]
Double seek impacts a playback behavior. On low-end devices, such
KantSU2e, it is possible for user to observe gap between seeks
and eventually playing the same frames twice
[Solution]
Track double seeks, and pause player until second seeks is recepted.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1599
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: I200bacd1dff9e0835a59735bbb6888355f862617
Jakub Gajownik [Wed, 17 Jul 2024 16:07:19 +0000 (18:07 +0200)]
Allow dynamically enable/disable face detection
As AI zoom was implemented in one of previous changes,
this patch extends it with support for enabling/disabling
it when modifing MediaStream constraints.
When "target" is changed in AI zoom settings, it triggers
camera device restart and once it's launched again, it'll
have new settings applied. So now, it's possible to control
it dynamically using Tizen-specific WebAPI.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-505
Change-Id: I2171614c21b52e479c179a5ce57fe34f5f3f1a63
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 22 May 2024 16:27:35 +0000 (18:27 +0200)]
[TTVD] Add support for AI zoom during video capture
This patch implements in-device feature of face detection.
It makes detected scene cropped according to the region
of detected face.
Whole feature is within video capture component, without
any changes to other components or pipeline. Video capture
device returns cropped video frames, so it's seamless
integrated in existing upstream Chromium pipeline.
It's supported only on several boards, other might request
this feature, but it'll be ignored, as it heavily bases
on NPU features.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-505
Change-Id: I9485cb3265deb081ab3c68f94aaa2b9184386518
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 2 Aug 2024 13:50:11 +0000 (15:50 +0200)]
[TTVD] Fix order of decoder releasing and removing dependents
[Problem]
It was possible that decoder is released during switching to
partial view while still trying to render decoded frames.
All the dependents video frame should not try accesing data
given by platform decoder since it's already released. But
there was a race between decoder (notify data should not be
longer used) and GPU thread (notification about switching to
texture mode).
The result was segmentation fault when GPU thread tried to
access already unmapped data.
[Solution]
Fix ordering of operations to wait with decoder release
after GPU thread objects are notified they should not use
data from decoder.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-546
Change-Id: I40aecdceed169ec091a886c9b4f17c2b874428c5
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 31 Jul 2024 14:31:05 +0000 (16:31 +0200)]
[TTVD] Fix crash when deinitializing surface after conflict
It's possible that resource conflict and process termination
are handled in parallel. If resource conflict was handled
before surface deinitialization, it tried to once again
follow standard removing path and access surface instance.
Since it was already released during resource conflict
handling, result is segmentation fault.
This commit hardens logic inside OutputSurfaceState to
properly handle such scenarios.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-544
Change-Id: I80fa71e4776f0daf38edbc34aaf8c9fe9ae72bb7
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Tue, 30 Jul 2024 10:29:05 +0000 (12:29 +0200)]
Fix suspend&resume notification for video capture
There were 2 problems with suspend&resume functionality:
- Resume was ignored due to no devices on list, but flag
about devices being suspended remained unchanged.
This resulted that second and subsequent suspends were
not properly notified to video capture device.
- Suspend and resume notification for video capture was
redundantly triggered from 2 places always.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-535
Change-Id: I7626a2a858a40973ce7516519adbc1e6e954cabb
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Mon, 29 Jul 2024 09:58:54 +0000 (11:58 +0200)]
[TTVD] Release decoder resource during video capture suspension
When video capture device is suspended, we should also
release decoder resource and then reclaim it when
application is resumed.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-535
Change-Id: I8759589d163dd42bcc039f3bfa544357c4885db9
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
zhaosy [Mon, 29 Jul 2024 12:49:02 +0000 (20:49 +0800)]
[WRTjs] Preferred rotation app is showing abnormal
Issue:
1. When app is launched, rotation_degree is equal preferred rotation degree,
but this degree is fail to pass to engine, because RenderWidgetHostViewAura
is not created at this time.
2. Window Manager send Rotation callback, but rotation_degree is the same as
Rotation callback degree, so OnRotation is not called, then page is not updated,
and engine still has a default degree 0.
Solution:
1. Should not set rotation_degree to preferred rotation degree at first,
this value can't pass to engine, and will cause Rotation callback can't trigger.
2. Notice window manager preferred rotation is done in WillDraw, otherwise,
need to wait 10s(Window Manager time out), then app can show
Change-Id: I0a548fac85db03f16a72224b6370f7be7fd7ecfa
Signed-off-by: zhaosy <shiyusy.zhao@samsung.com>
chenshurong [Mon, 29 Jul 2024 08:42:21 +0000 (16:42 +0800)]
[Multi Control][VD] register multi type data callback for copy & paste
EFL have supported delivering multi type data for copy & paste case.
We can received html type data and text type data by registered twice
callback.
So register html and text type callback and revert "convert html type
data to textplain data" code.
revert https://review.tizen.org/gerrit/#/c/298523/
Change-Id: I53c79cafce61c1b3e2343d45d5f289a059b83f7f
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Jakub Gajownik [Mon, 29 Jul 2024 09:44:57 +0000 (11:44 +0200)]
[TTVD] Support suspend&resume in Tizen hardware encoder
Before this patch, when application using hardware video
encoder was suspended, it still actively used resource.
This is problematic, if another application would also need
access encoder. Then, old application would get internal
error by resource conflict, making future usage of encoder
impossible due to this error.
After this patch, when application is going to be suspended
encoder is released. When it's resuming, encoder is prepared
again.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-536
Change-Id: Idc9074308c8bbb8ca8db712b5ed05c8b2bd75821
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 26 Jul 2024 11:13:33 +0000 (13:13 +0200)]
[TTVD] Skip rendering pictures with different size than pixmap
When RTC stream is decoded by TTVD video decoder, overlay
rendering mode is used and there's in-stream resolution
change, we might end up with different decoded picture size
than the one in video frame. This is an issue, because
layout is calculated based on information provided in the
video frame. In the result, we'll end up with wrong
geometry calculation, because picture size is already
updated, but not yet the one from compositor.
This is first step toward fixing this issue. If such
situation happens (decoded size is different than in the
native pixmap) this specific frame won't be rendered.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-543
Change-Id: I5245b28b22a07d11636181b104a740a70b414bcd
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 24 Jul 2024 10:55:25 +0000 (12:55 +0200)]
[TTVD] Handle decoder reinit on resolution change
Adjusts the handling of the OMX decoder reinitialization scenario, which
happens during i.a. the MSE resolution change. Allows for reuse of the
same decoder, if the underlying resource manager category does not need
to change. This change does not fully implement the seamless resolution
change scenario (on the decoder side) because of 2 cases:
1) Due to the TTVD decoder currently not being able to decode multiple
frames ahead of time, there is a brief stutter during resolution
changes. This happens, because the decoder has to be flushed while
the renderer is already expecting presentable frames.
2) For similar reasons to pt.1, if the currently allocated decoder has
to be replaced by a different one, with a new category, the stutter will
be longer since now a whole new OMX instance has to be created.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-372
Change-Id: I12de4a887a17ddc84c235887f369b316145bda4a
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Thu, 25 Jul 2024 09:57:07 +0000 (11:57 +0200)]
[GS] Allow dumping rtc video decoder data
This change allows enabling data dumping into file for
WebRTC stream. It's done based on the existance of
"/etc/tizen_webrtc_dump", its content is treated as
directory where webrtc stream dumps should be saved.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-542
Change-Id: Ia68e9e6d9ba2a679cb30f2f096d7a60acad28155
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
jiangyuwei [Tue, 23 Jul 2024 06:43:33 +0000 (14:43 +0800)]
[Multi Control][VD] Support drag & drop image to Office365 powerpoint
We can not drop some images when drag them to Office365 powerpoint,
because of Office365 powerpoint's CORS check.
This patch make a host whitelist to skip CORS check when drag and
drop image to Office365 powerpoint.
Change-Id: I4caede0dac6c355166a9b2e523e99edd294a0acd
Signed-off-by: jiangyuwei <yuwei.jiang@samsung.com>
Jakub Gajownik [Thu, 25 Jul 2024 13:15:55 +0000 (15:15 +0200)]
[TTVD] Split decoder promotion file functionalities
Single decoder_promotion.cc file handled multiple
responsibilities of both tracking allocated decoders and
category selection. It resulted in rather long file that's
hard to read and introduce unit tests.
After this change, category selection is splitted into
its own file which is then used by DecoderPromotion class.
Additionally, there is not function for selecting video
decoder category and it's shortened a little bit to improve
readability.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-372
Change-Id: Ief5a19f99dae2a37e3661c32d16664ee17724f58
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 24 Jul 2024 15:09:35 +0000 (17:09 +0200)]
[TTVD] Don't emulate eos before it's posted to decoder
This commit fixes subtle issue with calling eos callback
too early. It should be done after all frames are returned,
however when we're returing lazy frames, it's not guaranteed
they'll be returned by platform decoder without feeding
more data or end of stream.
In case eos is emulated too early, it's removed from the
decoding requests and in the results, end of stream is not
feeded into platform decoder. After this change, eos might
be emulated only after it's already given do platform.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-372
Change-Id: Id6ddc7d7f4cd88789cdd3ff96760d4bf2e0a8f5d
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Tue, 23 Jul 2024 21:02:13 +0000 (23:02 +0200)]
[TTVD] Use custom structure for HDR settings
Before this change OMX header was needed for setting HDR for
overlay output surface. It's not needed now, might be
replaced with structure, as layout is known.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-540
Change-Id: I6350b98ed2e2a2263e546ebc6fbee17cdd2530fd
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jan Prusakowski [Mon, 22 Jul 2024 09:28:16 +0000 (11:28 +0200)]
[HbbTV] MSE: Fix for play() during prepare()
[Problem]
When play() is issued by an app during prepare another prepare is started leading to decoder mismatch between esplusplayer and hardware resource helper.
[Solution]
Do not prepare in play() if a prepare is already ongoing.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1627
Change-Id: Ib8088f171dd426047222bc83dc47ec72e2313ad4
Signed-off-by: Jan Prusakowski <jan.prus@samsung.com>
Jakub Gajownik [Tue, 23 Jul 2024 19:09:43 +0000 (21:09 +0200)]
[TTVD] Remove dependency to kernel headers package
Overlay rendering is the last place that depends on V4L2
structures. There are problems with accessing package for
them on licensing. This commit gets rid of this migration
to other platform packages instead.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-540
Change-Id: I6d9aba186fd4fe986bc98bdd435eb0c0418e3669
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Piotr Bałut [Tue, 18 Jun 2024 09:32:47 +0000 (11:32 +0200)]
[EMSS] Make sure `MsDecodingStream` is deleted on the worker thread
[PROBLEM]
It's possible that MsDecodingStream class used for low latency decoding
in WASM Player is deleted on the control thread (i.e. main JS thread)
while it's still used on the worker thread. This may lead to a crash.
[SOLUTION]
Destruction of MsDecodingStream worker part is posted on the worker
thread. Additionally, usage of shared_ptr was dropped for demuxer layer
objects on worker thread, as those objects are assigned to worker
sequence exclusively and moving to unique_ptr + base::WeakPtr eliminates
ownership ambiguity.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1501
Change-Id: I0c05c369079bf35d601f050cf31ccfe73da4c7fb
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Jakub Gajownik [Tue, 23 Jul 2024 18:15:34 +0000 (20:15 +0200)]
[TTVD] Remove kernel header usage from media
This commit changes, so V4L2 is no longer used from
//media/filters/tizen directory, this is not part of
start "public" API.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-540
Change-Id: I4fb21d9b0db7893faa6f93389041a051ee2339b4
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Tue, 23 Jul 2024 18:07:45 +0000 (20:07 +0200)]
[TTVD] Migrate from V4L2 color format usage
Before this change, we were using V4L2 headers for color
format values when converting decoded frame informations.
However, this package is problematic because of limited
access on licensing platforms.
This commit changes usage to platform packages with have
same values as V4L2 original package and are intended to
be used in upper layers.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-540
Change-Id: Ief0bc7ef238dcade5f67d497b35bb5d809dc3d2b
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Maciej Pietka [Wed, 17 Jul 2024 12:09:42 +0000 (14:09 +0200)]
[HBBTV] Redundant MMPlayer API usage when resuming video playback after pause.
[*KONA_ID]
DF240624-01128 [PreCert][SCL][TV][24_OSU_TV(23_KantSU2e)][Italy][TivuSat][SelfTC] MdsInf_HbbTV_,7,8,9,10 : During DRM VOD playback, when PLAY is performed in PAUSE state, it stops and then played again.
Do not execute redundant calls to player_select_track_ex for audio after resuming HBBTV playback, calling this API when playback is active causes the video to buffer and hang for a short period.
Bug: https://jira-eu.sec.samsung.net/browse/VDSPD2CA-1209
Signed-off-by: Maciej Pietka <m.pietka@samsung.com>
Change-Id: Ie2a407a8a27c5886375f72f09cf8f57f669a9a81
chenshurong [Fri, 5 Jul 2024 07:59:29 +0000 (15:59 +0800)]
[Multi Control] Support drag & drop image file
When drag and drop image file to TV, we get images from drop callback
as <img> tags with local path ("file://"scheme), but we can't set them
in http and https pages (browsers block this for security reasons).
To work around this limitation we convert local images to base64 encoded data URI.
Change-Id: I29673b0367a09ca7d4667e545cec20f4874ebc4b
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Chandan Padhi [Thu, 11 Jul 2024 11:51:04 +0000 (17:21 +0530)]
[M108][MM] Bringup Tizen MediaRecorder
This patch bringups MediaRecorder feature for TV profile.
MediaRecorder calls MediaRecorderHandlerTizen for Tizen profile.
MediaRecorderHandlerTizen and MediaRecorderHandlerServiceImpl are added
for mojo interaction between Renderer and Browser process.
MediaRecorderHandlerServiceImpl forwards call to MediaRecorderTizen
which interacts with platform calls.
Build flag "--enable-tizen-recorder" is added for GBS builds (Non desktop
builds).
Build command to enable to Tizen MediaRecorder is
./tizen_src/build/build_tv.sh --enable-tizen-recorder
Change-Id: Ib3af1befbd60302fdde142b54dfebe5f5f67da6c
Signed-off-by: Chandan Padhi <c.padhi@samsung.com>
Signed-off-by: Suhaspoornachandra <s.poornachan@samsung.com>
Jakub Gajownik [Fri, 19 Jul 2024 17:01:13 +0000 (19:01 +0200)]
[TTVD] Zero-initialize camera list passed to platform library
[Issue]
Crash during reserving memory for camera devices vector.
[Description]
It was possible before this patch, that camera list holds
random value from stack. It was not initialized during
declaration and platform library also did not change list
count to zero. In results vector was reserved with some
invalid value, leading to crash.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-537
Change-Id: Ib5cfd376a0008c14c27c4e5ad13e804ad90db395
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 19 Jul 2024 13:17:26 +0000 (15:17 +0200)]
[TTVD] Disallow using MFC for H264 level 5.0 and higher
There is an issue with decoding H264 videos, that for level
5.0 and higher, we cannot use normal FullHD decoder, it's
not capable of decoding all the contents. There is
workaround for that to select 4K decoder instread, however
it's applied only on platform supporting 4K decoding.
Before this patch, decoder selection proceeded with standard
FullHD decoder. It might lead to some weird errors
(not-supported event) or even crashes (Licensing board).
As level 5.0 in general is not decodable by FullHD decoder,
now it's not permitted to allocate it in such case.
Additionally, when board is not capable of decoding 4K
content, we'll try similar approach with HEVC codec
(as Tizen HEVC decoder is capable of decoding H264 as well).
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-537
Change-Id: Iaea9b6d76f10fe64db36e1b05e872fe04f5a7b48
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Kajetan Brzuszczak/Web Solutions (VD) /SRPOL [Fri, 14 Jun 2024 06:32:56 +0000 (07:32 +0100)]
[HBBTV] Allowing standalone audio to be played in HBBTV scenarios
[*KONA_ID]
DF240604-01167 [BBC] Sounds, no live or AOD content will play
In HBBTV scenarios `Prepare` is only allowed when HW Video Decoder is free
to use, but standalone audio was omitted in the logic. In that case, the
content might be played, but no `CanPlay` event is send, which breaks
one of the tests. Right now the standalone audio content is allowed to
be prepared when no conflict with broadcast is possible.
Jobs:
DF240604-01167
[git-p4: depot-paths = "//TIZEN/[Product2023]/[OSU_Trunk2023_T80_Prj]/[INT]/PLATFORM/COMMON/Profile/platform/framework/web/chromium-efl/": change =
12137792]
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: I7e0e0567372d359f8dfd7c49faee653087b56bbb
Piotr Bałut [Wed, 17 Jul 2024 11:13:34 +0000 (13:13 +0200)]
[EMSS] Fixed use after free error when deleting track during player cleanup
[PROBLEM]
When deleting a registered track in side_thread_elementary_media_track,
a structure containing base::ReaderWriterLock was removed from the map
of existing tracks. The operation of removing the structure was
performed with the lock held. This caused RAII scoped locker lock on
existing object, but unlock a deleted object when scope was exited.
[SOLUTION]
Made R/W lock outlive a scope where track structure is deleted from the
map of existing tracks.
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1513
Change-Id: Iad300b118a3469b69308aafb4ba1433f51491a68
Piotr Bałut [Tue, 9 Jul 2024 15:11:44 +0000 (17:11 +0200)]
[EMSS] Fixed EMSS does not send playback position change events in LL when TTvd is used
[PROBLEM]
Time updates are associated with session id, which synchronizes them
with ongoing seeks in normal latency. Session id is not set in LL when
webmediaplayer_ms is used (which is the case for TTvd) and updates are
dropped.
[SOLUTION]
There is no straightforward way to pass current session id to
webmediaplayer_ms, however it does not seem to be required as LL
playback generally does not seeks. An option to ignore session id upon
time update was introduced and it is now used for webmediaplayer_ms.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1501
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: If3eeea4b03715fec8e9fdbc8ae6b0b7fc984e1f2
Jakub Gajownik [Mon, 22 Jul 2024 14:32:45 +0000 (16:32 +0200)]
[TTVD] Fix deadlock when deleting self-manage resources
It was possible that self-managed resources (holding their
resource manager) could deadlock when releasing during
handling conflict. It's because of locking mutex by
RM client while waiting for resource to be released
and decoder thread trying to unregister resource manager.
Since handling resource might be dispatched to decoder
thread, it cannot be finished, as this thread might be
waiting for mutex to be released.
Similar issue was fixed before by dispatching resource
manager deletition to thread pool for decoder thread. After
such change decoder thread no longer depends on access to
resource manager mutex, it might finish its work and then
handle request dispatched from RM client.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-539
Change-Id: I9b4e97f060b292b1db86deb0693f5f727b1fa660
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Mon, 22 Jul 2024 15:45:08 +0000 (17:45 +0200)]
fixup! [TTVD] Optimize hardware encoding performance
Include |TizenGpuBuffer| to build for emulator target, as
it's used from hardware encoder implementation also.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I43bc3c47c486236a3fe026f2a475af5afd2ba435
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jan Prusakowski [Mon, 22 Jul 2024 06:04:00 +0000 (08:04 +0200)]
[HbbTV] MSE: Fix missing readyState update when buffering completes before prepare finishes
[Problem]
If buffering of data completes before player preparation is finished readyState is not updated.
[Solution]
When player preparation completes update buffering state so that readyState is updated.
[*KONA_ID]
DF240614-01315 [PreCert][SCL][TV][24_OSU_TV(23_PontusM)][Italy][TivuSat][HbbTV(App)]RAIPLAY_DRM Playready content reproduction test : After end of Pre-roll, A/V of DRM content blocked with loading and black screen
Change-Id: I96f21314c1512d63b58990a7904c191ba3dd5cda
Signed-off-by: Jan Prusakowski <jan.prus@samsung.com>
Mayank Kumar [Wed, 17 Jul 2024 10:15:01 +0000 (15:45 +0530)]
[M108 Migration][a11y] Handled a11y for aurum case
Accessibility flags include a vconf value and an "IsEnabled" value
from DBUS "org.a11y.Status". Aurum operates when "IsEnabled" is true,
regardless of the screen reader vconf value. The platform team
suggests enabling a11y if either the screen reader vconf or the DBUS
"org.a11y.Status" is enabled.
This patch includes the follwing changes:
1) Caches the "IsEnabled" value from AtSpiClientEnabledGet and
A11yPropertyChangedCb
2) Modifies the implementation of EWebAccessibilityUtil::
ToggleBrowserAccessibility to accept vconf as well as dbus values
3) Removes the useless result value check in EWebAccessibilityUtil
::Deactivate before ToggleBrowserAccessibility function call
Reference: https://review.tizen.org/gerrit/314688
Change-Id: I9cdb100097d1ec88ae976d806a5a8653e15a77a5
Signed-off-by: Mayank Kumar <mayank.k@samsung.com>
Jakub Gajownik [Mon, 15 Jul 2024 16:58:54 +0000 (18:58 +0200)]
[TTVD] Optimize hardware encoding performance
After latest changes, gpu memory buffer that is returned
from video capture pipeline is backed by single buffer.
Moreover, graphics accelerator (GA) might access it. On the
other end we have hardware encoder that is way faster if
it receives TBM surface also backed by memory accessible
by GA.
This CL improves hardware encoder performance when used
with video capture. Intermediate TBM surface is created
and GA is used to copy data into it.
Additionally, this improves performance when video is
cropped, since platform encoder library doesn't support it.
However, when intermediate buffer is used, we can perform
cropping on our own and request encoding with zero offset.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: Ia17d9801def09a03f10cc497b06756f59a184a6f
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 12 Jul 2024 17:44:21 +0000 (19:44 +0200)]
[TTVD] Add GPU workaround to disable software rendering
Some specific boards struggles with using overlay with
software rendering:
- OscarP has different color conversion when first video
is played,
- for RoseP software rendering is causing weird artifacts
on other playing videos.
For now, using software rendering is disabled by GPU
workaround. We'll work more on that till some working
solution is developed or bug in driver is solved.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: If21e8f6ca2d98416b1250460ec19aa09e0731472
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Sat, 23 Mar 2024 16:15:32 +0000 (17:15 +0100)]
[TTVD] Use hardware buffers to return captured frame
Before this change, all captured video frames where
immediately copied to temporary buffer using graphic
accelerator (GA) then mapped, copied to normal buffer
and returned.
This approach is slow on some boards (most notably on
KantSU2e), specially coping mapped data.
This change makes usage of GA accessible buffers to
return captured frames. With recent development of
software rendering and encoder capability of accesing
data without mapping, we can completely skip this
problematic part of pipeline.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I5a5d7720f4893537a2d9214508837060388651f3
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Wed, 3 Jul 2024 09:47:01 +0000 (11:47 +0200)]
[TTVD] Allow overlay usage with linear format planes
Now when it's possible to render data using scanout
buffers, we can extend support for overlay promotion.
Before this CL, only decoder collection could be promoted
to use dedicated output surface. This patch reduces need
for collection when software rendering is about to be used.
Such change allows us to render MJPEG data captured in the
camera component using overlay system in future.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I2d95815a55b5a16d4255672a36a88c5252f6e654
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Thu, 11 Jul 2024 19:31:55 +0000 (21:31 +0200)]
[TTVD] Allow passing offset to TizenGpuBuffer operations
This change adds passing offset for copy/scale operations
and fixes stride for scaling operation. It's going to be
used by future patches related to camera/encoder
optimizations.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I0e4480f51526d0b43705385cebbd2582be6817d4
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
yh106.jung [Thu, 18 Jul 2024 04:03:00 +0000 (21:03 -0700)]
Deleted the mention of product API from the public header
In order to improve Tizen documentation, this patch deletes the mention
of product API, ewk_view_html_string_override_current_entry_load, from
public API description.
Change-Id: I361727ed88d26d211ddbbd74440eb0678baeee68
Signed-off-by: yh106.jung <yh106.jung@samsung.com>
Piotr Bałut [Fri, 12 Jul 2024 16:45:17 +0000 (18:45 +0200)]
[EMSS] Fixed track type set in video `TrackDispatcher`.
Video track type in `TrackDispatcher` was set to audio. This is fixed
in this patch and correct video type is used.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1513
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: Iac8e6c8c5a2141956d7689160391b4a88afb87b5
Jakub Gajownik [Tue, 16 Jul 2024 13:42:29 +0000 (15:42 +0200)]
fixup! [TTVD] Prefer texture supporting decoder allocation on NikeL
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-514
Change-Id: I8f442e0ea87584ec4568748a2ab259d7ea531bf6
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 5 Jul 2024 15:19:06 +0000 (17:19 +0200)]
[TTVD] Fix calculation of geometry when crop is applied
When video frame visible rect is cropped (e.g video
capture), we should also apply this during overlay
rendering. At the rendering level crop rect also determines
what region of source image should be rendered, however
additional damage might be applied. To properly calculate
what is the target region, we should resize it according
to how much crop rect is affected by given damage.
Before this patch geometry was calculated wrongly, it
resulted at video capture that had crop applied was too
small and in incorrect possition on screen.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I3f1390c6e76932063fb70def7c601bfa3acf8ea3
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Mon, 8 Jul 2024 08:14:19 +0000 (10:14 +0200)]
[TTVD] Crop video to be encoded according to visible rect
When data is passed to encoder, it must be cropped according
to visible rect from the given video frame. It was not done
before this CL for Tizen hardware encoder implementation.
The results was that fully captured video from camera was
encoded (not the one cropped by video track adapter),
possibly squeezing it in one direction.
Moreover in such scenario, video being tighly packed in not
sufficient, as hardware encoder is not capable of applying
any stride other than width.
In general scenario, we can apply software cropping before
data is given to platform encoder. Similar is applied when
data is not tighly packed, otherwise it wouldn't be encoded.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-534
Change-Id: I72fa02f9dd8545dd998561d21d2446a469dd6917
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Tue, 7 May 2024 14:15:30 +0000 (16:15 +0200)]
[WebRTC] Handle raw camera format through buffer pool
This CL changes behavior in case of camera returning us
non-compressed format. Before this patch data was given to
client directly and client was responsible for converting
it into I420. Now we're doing it on our own. It's needed
so face detection might be applied later and we need some
stable format to convert from (I420 in this case).
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-505
Change-Id: I6eb1e4eb926e8437ff2e82cbc053df7ee883723d
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 5 Jul 2024 15:18:43 +0000 (17:18 +0200)]
[TTVD] Prevent TBM surface from being used for encoding when sub-rect is used
HW encoder does not support cropping data when it's feeded
into encoder using TBM surface. That's why we need to
disable this path when visible rect of video frame is not
equal to coded size.
Without this change, encoded frame still has proper
resolution, but video proportions are invalid.
It can happen when video is cropped to match required
contraints of camera device or application might apply
their own cropping.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-532
Change-Id: I17e26b69a9627ee1b1ae413e4fc100a64cf683ad
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Kajetan Brzuszczak/Web Solutions (VD) /SRPOL [Fri, 14 Jun 2024 06:29:14 +0000 (07:29 +0100)]
[HBBTV] Missing OscarS configuration in hardware_resource_helper
[*KONA_ID]
DF240605-00907 [Channel][TC][SRPOL_SQE][UK][HbbTV] Playback of UHD content fails on BBC HbbTV
No OscarS switch returns empty decoder list for 8K content, which prevent
prepare and play.
Added supported 8K codec OscarS in HBBTV
Jobs:
DF240605-00907
[git-p4: depot-paths = "//TIZEN/[Product2023]/[OSU_Trunk2023_T80_Prj]/[INT]/PLATFORM/COMMON/Profile/platform/framework/web/chromium-efl/": change =
12137781]
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: Ifdaab4d3142e9257969474686ad330ec1846a8d2
Michal Jurkiewicz/Web Solutions (VD) /SRPOL [Fri, 17 May 2024 10:20:17 +0000 (11:20 +0100)]
[HBBTV] Porting TA feature from OSU
HBBTV-TA Implementation
Jobs:
DF240513-00729
[git-p4: depot-paths = "//TIZEN/[Product2023]/[OSU_Trunk2023_T80_Prj]/[INT]/PLATFORM/COMMON/Profile/platform/framework/web/chromium-efl/": change =
12084875]
Bug: https://jira-eu.sec.samsung.net/browse/WPMEDMAIN-3149
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: Ie131046a05e8ca39885bbc6b14d2393b5d4267df
Jan Prusakowski [Wed, 3 Jul 2024 07:47:36 +0000 (09:47 +0200)]
[HbbTV] Fix resource conflict when selecting video decoder during a mid-roll ad insertion
[Problem]
During a mid-roll ad insertion the sub-decoder allocation conflicts with main
decoder. Additionally during the second ad insertion the ad steals the main
decoder from the main content.
[Cause]
Using UHD main video decoder on KantSU2e disables dual video decoding.
Relying on last_used_decoder_ causes the 2nd ad to take the main decoder.
[Solution]
Only request UHD decoder when video resolution is greater than full HD.
Use a free decoder for next playback (ignore last_used_decoder_).
Bug: https://jira-eu.sec.samsung.net/browse/VDSPD2CA-1191
Signed-off-by: Jan Prusakowski <jan.prus@samsung.com>
Change-Id: I70c4bfda96291aede363b6916df2e205238bb1d0
Piotr Bałut [Tue, 2 Jul 2024 15:22:09 +0000 (17:22 +0200)]
[EMSS] Create buffers with pts and dts set correctly
Up until recently only timestamp (pts) value on buffer was required
for normal latency playback. This was the case also for EMSS renderer,
so dts was ignored when copying input packet.
A recent change that introduced ranges calculation to TTvd made setting
both pts and dts obligatory. This patch makes both pts and dts available
in buffers sent to TTvd.
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
https: //jira-eu.sec.samsung.net/browse/VDWASM-1320
Change-Id: I6f51ff9a07f853cc2a0b2659112eed5d795f2b21
Kajetan Brzuszczak [Fri, 5 Jul 2024 10:12:36 +0000 (12:12 +0200)]
[*KONA]
DF240621-00553 IP Video manipulation causes native playback issue
Deactivate stream after pause. Deactivation stream before pause forced
player to reload data which cause lags in video.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1616
Signed-off-by: Kajetan Brzuszczak <k.brzuszczak@partner.samsung.com>
Change-Id: I85d2ed097c2e3528c4ff704fd9609b40030e7267
chenshurong [Wed, 3 Jul 2024 06:32:25 +0000 (14:32 +0800)]
[Multi Control] Support copy & paste multi type image file
Add image type when convert local images to base64 encoded data URI,
for supporting some website need check the image type, such as Gmail.
Change-Id: Ib7073ded398aac2bd72be61d442de584302f4e27
Signed-off-by: chenshurong <shurong.chen@samsung.com>
Piotr Bałut [Wed, 5 Jun 2024 10:49:36 +0000 (12:49 +0200)]
[EMSS] Fixed error reporting when using TTvd
This patch enables error reporting when using EMSS with TTvd:
* In normal latency a new code path is added that passes detailed error
from HTMLMediaElement to EMSS. Old implementation pushed error info
directly from EMSS Host service to both webmediaplayer and EMSS
renderer part independantly. Now without EMSS Host, the closest class
EMSS is connected can learn about media pipeline error is
webmediaplayer.
* In low latency webmediaplayer is notified about great deal of errors
(e.g. decoding errors), as it manages decoded frames. In LL scenario,
EMSS renderer part will be the source of error information (up to
decoding errors), notifying media element about the error.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1513
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: I3bb06426abc3158ba9ede78d0e5a0a6fa6ef1efe
Piotr Bałut [Tue, 18 Jun 2024 06:16:07 +0000 (08:16 +0200)]
[EMSS] Run TTvd low latency decoding on media thread
[PROBLEM]
Not all media::GpuVideoAcceleratorFactories methods are thread safe,
including methods used by media::MojoVideoDecoder. Since low latency
decoding with TTvd uses MojoVideoDecoder, running a dedicated worker
thread for decoding separate from GpuVideoAcceleratorFactories caused
occacsional crashes.
[SOLUTION]
GpuVideoAcceleratorFactories lives on the media thread. Instead of
creating a dedicated worker thread for EMSS, media thread is reused as
worker thread in low latency modes that use TTvd.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1501
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: Iaf0ffa63ac1f774c58c80449d57234cf35a63ce7
Piotr Bałut [Tue, 4 Jun 2024 11:28:19 +0000 (13:28 +0200)]
[EMSS] Fix autoplay when playing with TTvd
This patch introduces changes required to make autoplay work when using
EMSS with TTvd:
* In normal latency EMSS will be now correctly identified by
web_media_player_impl regardless of Demuxer implementation working in
either EMSS renderer or default Chromium renderer (TTvd).
* In low latency EMSS will open before play is issued on HTML Media
Element when autoplay policy is set to true. This will allow media
element to play when the first packet is appended, when
webmediaplayer_ms will up the ready state.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1501
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: Ia32ecee5916d4bfec67e66ed66d11d3ec104caaf
Piotr Bałut [Mon, 3 Jun 2024 14:48:33 +0000 (16:48 +0200)]
[EMSS] Fix play before open in LL when playing with TTvd
This patch introduces following fixes:
* Sequence of initialization is fixed in the main EMSS class, preventing
opening before tracks are set up in the webmediaplayer and media
element.
* Emitting canplay event in media element when running with TTvd EMSS LL
is now tied to opening the source (AKA finalizing setup phase). This
matches specified EMSS behaviour, as opposed to default
webmediaplyer_ms behaviour which postpones canplay event until a media
packet is sent for decoding which is inconsistent with EMSS allowing
to push media data only after play in low latency.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1501
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Change-Id: I31b63e98ec4e8f2e148132dd127740776f7768b2
Koyyani Maheswari [Thu, 4 Jul 2024 11:43:47 +0000 (17:13 +0530)]
fixup! Enable Select Picker for Onscreen Rendering
In Onscreen Rendering, picker is not closed until we choose an item,
so changing the window type to Utility and making necessary changes so
that picker closes whenever we click outside the picker.
Change-Id: Iaa6308bc79ecc18db84e0ff4c73e743a57badfc4
Signed-off-by: Koyyani Maheswari <m.koyyani@samsung.com>
Jakub Gajownik [Mon, 1 Jul 2024 14:36:25 +0000 (16:36 +0200)]
[TTVD] Prefer texture supporting decoder allocation on NikeL
Now, when some specific boards (NikeL) can peform better
when texture-supported decoder is used, we should prefer
selecting it during resource allocation. This CL implements
it by manipulating "progressive" property.
It makes use of corelation between interlaced format and
texturing support, since both of them are supported by MFC
decoder. So when "progressive" property is not set, only
MFC decoder might be selected (if applicable, e.g it's not
applicable for 4K resolution).
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-514
Change-Id: I5d0cf1d62db85356c9be08015d3e1e715c3b1f91
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 21 Jun 2024 08:58:37 +0000 (10:58 +0200)]
[TTVD] Introduce software video rendering method
For some boards (like NikeL), using direct video rendering
has poor performance, due to some post-processing being
applied on hardware scaler. This is not suitable for low
latency scenarios (e.g game streaming), where balance
between latency and playback quality is different than for
buffered video.
This patch introduces new video rendering method that copies
data directly onto display buffers and bypasses some video
quality enhancement mechanisms, so has lower latency.
It gives some better performance on NikeL board, so it's
prefered method when playing RTC streams for game streaming.
Legacy implementation on EsPlusPlayer uses same path
(MFC+JPEG), as mentioned above it gives better performance
on some specific boards (e.g NikeL).
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-514
Change-Id: I111e19d1592968d38be6ecf6db05de31225b9386
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Piotr Bałut [Fri, 26 Apr 2024 15:26:24 +0000 (17:26 +0200)]
[EMSS] `kEnableUpstreamArchitecture` support for WASM Player in low latency modes (audio)
This patch enables switches::kEnableUpstreamArchitecture support for
WASM Player in Low and Ultra Latency modes for audio tracks.
This change reduces dependency on platform libraries and also
eliminates the need to use any browser process implementation. The
maintenance cost is reduced and reliability of WASM Player is
increased when using upstream architecture, because reliable upstream
media pipeline can be now used.
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1320
Change-Id: I37d158b99cd92957c2a45541cb6a463d8a15870e
Jakub Gajownik [Mon, 1 Jul 2024 10:28:41 +0000 (12:28 +0200)]
[TTVD] Use GPU workaround to disable parallel copy
Before this CL, parallel access to single buffer was behind
static compile-time check of platform version. It works for
UWE, but behavior for OSU is invalid. Instead, after this
patch version checking is done in runtime.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-517
Change-Id: I2900545ee39310a5c9b7021f45ef5892affd7278
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Fri, 28 Jun 2024 15:46:00 +0000 (17:46 +0200)]
[WebRTC][TTVD] Return all supported camera framerates
We should return all the supported framerates when handling
|GetSupportedFormats|. When user agent ask for lower than
max framerate, we're now potenially waste resources on
gathering more frame than needed.
After this CL, if lower framerate is requested through
|getUserMedia|, it might be selected on camera device
as well. This should save more resources in scenarios with
e.g 15fps camera requestes for other tasks.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-528
Change-Id: I13e2cf8e03222b5c73f642bd08a16b96d004200b
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Michal Jurkiewicz [Mon, 18 Mar 2024 16:33:31 +0000 (17:33 +0100)]
[MM][WebRTC] Enable GPU Memory Buffer for upstream architecture video capture
Set `kVideoCaptureUseGpuMemoryBuffer` flag, which enables usage of
GPU Memory buffer for Video Capture functionality.
It allows usage of `MJPEG` format for Video Capture, that requires
creating HW MJPEG Decoder. By enabling ``MJPEG` format, it is possible
to achieve higher framerates of camera input streams.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-449
Change-Id: I448a6c745e6a2848cb41465e6d63d602313cf2d8
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
liwei90727 [Wed, 19 Jun 2024 04:42:51 +0000 (12:42 +0800)]
[WRTjs][VD] Support tvwindow rotate source from Tizen6.5
tv_control_roate_with_size() API is supported from Tizen6.5
in tvcontrol side, so WRT need add judgement for it, otherwise
compile error in UWE branch.
Change-Id: I4fb5a36e9f8a9195f03647f6c70ce277ce6f544e
Signed-off-by: liwei90727 <wei90727.li@samsung.com>
Michal Jurkiewicz [Thu, 20 Jun 2024 07:25:33 +0000 (09:25 +0200)]
[WebRTC][HW Encoder] Fix for tbm_bo mapping issue
[Problem]
`tbm_bo_map` failure with the following errors:
```
|fail [DRM_IOCTL_SDP_GEM_CPU_PREP] hndl[0xA] err[16:Device or resource busy]
fail to lock. error:-38
error: fail to lock bo
```
[Cause]
It is possible, that `tbm_bo_map` will be called multiple times
for the same `tbm_bo` by different `TizenVideoEncodeAccelerator`
instances during eg. multiple concurrent encoding.
If mapping fails, frame will not be encoded and sent to peer.
[Solution]
Add map with synchronization during mapping and unmapping in `ClientNativePixmapEfl`,
that will prevent `tbm_bo` from being mapped multiple times.
If `tbm_bo` was already mapped, mapped address will be returned.
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1530
Change-Id: I082cdab8f73e8bad8b5e7f2b62b553184804843d
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Michal Jurkiewicz [Mon, 22 Apr 2024 15:08:25 +0000 (17:08 +0200)]
[WebRTC][HW Encoder][Camera] Fix for wrong buffer mapping type
Provide proper buffer mappings in camera-to-encoder pipeline:
* Camera requires read/write buffer mapping, as it is writing data
into GPU Memory Buffer
* Encoder requires readonly buffer mapping, as it is passing filled
data into encoder
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-430
Change-Id: I898b999a4c189bed2224fe720fda7d01a7da05c8
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Jakub Gajownik [Fri, 28 Jun 2024 17:35:36 +0000 (19:35 +0200)]
[TTVD] Remove invalid error log about missing picture id
It's possible that TizenNativePixmap exists without valid
picture_id. This CL removes error log that spams across dlog
with that false negative check.
Instead we should skip such NativePixmap from further
analysis, without leaving any trace about that.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-528
Change-Id: Idf07d9dcada73ca8d3110090ecb4826aa547f3cc
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Tue, 18 Jun 2024 12:33:00 +0000 (14:33 +0200)]
[TTVD] Use dummy geometry when preparing video decoder
Some boards struggles when unmuting with zero-geometry
(e.g PontusM). When it happens, process of decoder
initialization is stuck, giving no video frame to client.
This CL changes behavior of scaler preparation when
initializing video decoder, so smallest possible
geometry (1x1) is used.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-529
Change-Id: I2d86cd28730ffb05660335dd773042ae9ffca4d9
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Jakub Gajownik [Mon, 3 Jun 2024 13:21:07 +0000 (15:21 +0200)]
[TTVD] Use ranges instead of comparing dts and pts
Previously used mechanism with comparing PTS and DTS is
sometimes giving wrong results, e.g for frames with
following order:
0, 4, 3, 2, 1
It doesn't check for timestamp continuity. Because of that
some frames might be wrongly returned as lazy frames, even
it we still don't have enough data for them to be decoded
(decoder returns frames according to ordered PTS).
With this change, we're going back to improved range
mechanism. With previous approach there were problems with
duration not provided by some clients (demuxer). Now it's
handled by calculating it using DTS parameter which should
solve all the past issues.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-507
Change-Id: I9243a8af707eb65fa9b18bbbdad8752bbc439662
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
Piotr Bałut [Tue, 13 Feb 2024 13:53:32 +0000 (14:53 +0100)]
[EMSS] `kEnableUpstreamArchitecture` support for WASM Player in low latency modes (video)
This patch enables switches::kEnableUpstreamArchitecture support for
WASM Player in Low and Ultra Latency modes for video tracks (audio
support will be added in a future patch).
This change reduces dependency on platform libraries and also
eliminates the need to use any browser process implementation. The
maintenance cost is reduced and reliability of WASM Player is
increased when using upstream architecture, because reliable upstream
media pipeline can be now used.
Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1320
Change-Id: I4addf25aec227552aa6c5426c718ab8c1b54bac6
Michal Jurkiewicz [Thu, 18 Jan 2024 12:47:07 +0000 (13:47 +0100)]
[MM][WebRTC][GS] Properly notify NativePixmap config support
[Problem]
GpuMemoryBuffer is not rendered properly for video capture devices
(camera, desktop screen capture).
[Cause]
Empty `texture_target_exception_list` reported by `GpuMemoryBufferSupport`,
causes `GL_TEXTURE_2D` to be set as gl texture_target instead of
`GL_TEXTURE_EXTERNAL_OES` for video frame.
[Solution]
Override `IsNativePixmapConfigSupported` function from `OzonePlatform` class
with implementation for TV.
After applying this change, `GpuMemoryBufferSupport` class will report support
for `YUV_420_BIPLANAR` pixel format, which will result in setting
`GL_TEXTURE_EXTERNAL_OES` as texture_format for video frame.
Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-430
Change-Id: Id2244a304a08ab927230129bf182084a5aae779e
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
Michal Jurkiewicz [Mon, 22 Apr 2024 15:17:31 +0000 (17:17 +0200)]
[WebRTC][HW Encoder] Report support for GPU Frame resize
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1529
Change-Id: Ie0e2ae2fbcebf85e8d3ba78e39f50f3c957c3172
Signed-off-by: Michal Jurkiewicz <m.jurkiewicz@samsung.com>
zhishun.zhou [Thu, 20 Jun 2024 08:01:34 +0000 (16:01 +0800)]
Fix media player client use before set
Media player client is set in the end of TizenRendererImpl::Initialize;
Media player is created in the middle of TizenRendererImpl::Initialize;
when MediaPlayerBridgeCapi::CreatePlayer failed, it will trigger
MediaPlayerBridgeCapi::OnNetworkStateChange, at this moment function
GetMediaPlayerClient() will return nullptr.
Change-Id: Icf2e6f514036ff2c965a89f79f59fc2a1b01306b
Signed-off-by: zhishun.zhou <zhishun.zhou@samsung.com>