Commit Graph

4383 Commits

Author SHA1 Message Date
Nyanmisaka
16e72d6883
Fix the broken codecs shifting (#11243) 2024-03-28 13:57:33 -06:00
gnattu
5db0c5a0e4
fix: forward port patch for GHSA-866x-wj5j-2vf4 (#11228) 2024-03-28 09:26:14 -06:00
gnattu
be21d51742
fix: move trickplay specific option into TrickplayOptions (#11229) 2024-03-28 09:26:01 -06:00
Shadowghost
56c432a843 Apply review suggestions 2024-03-26 23:45:14 +01:00
Shadowghost
88b3490d17 Add playlist ACL endpoints 2024-03-26 15:49:18 +01:00
gnattu
2e9aa146a5
fix: remove legacy codecs (#11217) 2024-03-26 04:32:06 -06:00
Cody Robibero
5437936bb9
Check all tags for allow/block (#11206) 2024-03-25 07:15:24 -06:00
gnattu
b1870792b1
fix: use Metal tonemap instead of OpenCL (#11198) 2024-03-24 08:20:05 -06:00
gnattu
cf16110a56
fix: map encoder preset to quality setting for VideoToolbox (#11205) 2024-03-24 08:19:48 -06:00
vedant
3bbb57eb83
Add new VideoRangeTypes to fully support DoVi on webOS (#10469) 2024-03-23 07:39:49 -06:00
Gary Wang
c16135800c
feat(i18n): transliterate item name before sorting (#11172) 2024-03-22 20:59:59 -06:00
Claus Vium
eae031ae5a
refactor: use Channels as queueing mechanism for periodic websocket messages (#11092) 2024-03-18 13:55:18 -06:00
Claus Vium
239727e896
fix: skip library folders that are inaccessible or empty (#9291) 2024-03-18 09:09:00 -06:00
Cody Robibero
833bc06eb4
Merge pull request #11161 from nyanmisaka/fix-segment-deletion
Co-authored-by: Claus Vium <cvium@users.noreply.github.com>
2024-03-18 08:37:02 -06:00
Bond-009
f44ec318d6
Merge pull request #11163 from robert-hamilton36/lyrics
Add lyric files to supported extensions
2024-03-17 18:07:34 +01:00
Bond-009
adb08c0aaa
Merge pull request #11149 from Bond-009/nullable4
Enable nullable for more files
2024-03-17 18:00:10 +01:00
btopherjohnson
9a40a67c60
Add ability to enable/disable libraries (#11037)
Co-authored-by: Bond-009 <bond.009@outlook.com>
Co-authored-by: Cody Robibero <cody@robibe.ro>
2024-03-17 09:50:48 -06:00
nyanmisaka
ae7c0c83e9 Bump the required minimum ffmpeg version to 4.4
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 21:30:42 +08:00
nyanmisaka
557b8f0c78 Apply suggestions from code review
Drop the unnecessary initial capacity from the list.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 20:45:00 +08:00
nyanmisaka
47a77974b8 Apply suggestions from code review
Drop excludeFilePaths and lower the log level to debug to avoid
spamming in the log file.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-17 17:17:47 +08:00
nyanmisaka
50541aea91 Apply suggestions from code review
Add excludeFilePaths to skip segment files in which IOException occurred.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 22:09:31 +08:00
nyanmisaka
39b953e41c Set input readrate for using SegmentDeletion with stream-copy
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
nyanmisaka
55fd6b5cb9 Add sanity check for ThrottleDelaySeconds
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
nyanmisaka
eca9bf41bc Add TranscodingSegmentCleaner to replace ffmpeg's hlsenc deletion
FFmpeg deletes segments based on its own transcoding progress,
but we need to delete segments based on client download progress.
Since disk and GPU speeds vary, using hlsenc's built-in deletion
will result in premature deletion of some segments. As a consequence,
the server has to constantly respin new ffmpeg instances, resulting
in choppy video playback.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-03-16 07:35:05 +08:00
robert-hamilton36
2234b5bec6 add lyric files to supportedExtensions 2024-03-16 12:14:29 +13:00
standstaff
64b7f0f721 chore: remove repetitive words
Signed-off-by: standstaff <zhengxingru@yeah.net>
2024-03-15 17:08:03 +08:00
Bond_009
651681c276 Enable nullable for more files 2024-03-13 14:56:51 +01:00
Cody Robibero
a92de9b2e3
Merge pull request #11014 from gnattu/vf-videotoolbox 2024-03-09 09:19:36 -07:00
gnattu
0909ee7208 fix: convert all non-yuv420 inputs to nv12
Signed-off-by: gnattu <gnattuoc@me.com>
2024-03-09 15:16:00 +08:00
gnattu
e6dee627e3 fix: force a pixel format for 10-bit inputs
Signed-off-by: gnattu <gnattuoc@me.com>
2024-03-09 14:22:27 +08:00
gnattu
d10ad6c383 fix: no need to check filters prematurely
Signed-off-by: gnattu <gnattuoc@me.com>
2024-03-09 11:02:53 +08:00
gnattu
2f66871040 fix: also check if we are doing scaling
Signed-off-by: gnattu <gnattuoc@me.com>
2024-03-08 23:37:27 +08:00
gnattu
f31549cc0d fix: code clean up
Co-authored-by: nyanmisaka <nst799610810@gmail.com>
Signed-off-by: gnattu <gnattuoc@me.com>
2024-03-08 23:23:24 +08:00
Cody Robibero
f7f3ad9eb7
Precache livetv program images (#11083)
* Precache livetv program images

* return if cache hit

* use EnsureSuccessStatusCode

* Read proper bytes
2024-03-03 13:32:55 -07:00
gnattu
a30dc81b28 fix: stack overflow
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-29 09:03:00 +08:00
Cody Robibero
169e0dcb11 Save embedded lyrics when probing audio 2024-02-28 17:34:33 -07:00
gnattu
ec896a901c fix: code style
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-29 05:37:31 +08:00
gnattu
1cb7264f0d feat: fully support videotoolbox hardware filters
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-28 17:56:59 +08:00
Cody Robibero
0bc41c015f
Store lyrics in the database as media streams (#9951) 2024-02-26 05:09:40 -07:00
Patrick Barron
b5a3c71b3a Move media source code from LiveTvManager to LiveTvMediaSourceProvider 2024-02-23 09:57:55 -05:00
Patrick Barron
0370167b8d Add IRecordingsManager service 2024-02-21 09:42:14 -05:00
Cody Robibero
31715c6b8a
Merge pull request #10981 from barronpm/livetv-listingsmanager
Add IListingsManager Service
2024-02-20 10:44:46 -08:00
Nyanmisaka
aa3aaa94fe
Fix the preproc filters for dvbsub burn-in (#11034)
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-02-20 10:49:39 -07:00
gnattu
21bf557145 fix: use hardware videotoolbox filter even only scale is available
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-16 01:43:40 +08:00
gnattu
0a8560f64a fix: use hardware filter option name explicitly
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-16 01:30:12 +08:00
gnattu
2f3e5cfa06 fix: correctly set the supported formats of videotoolbox tone mapping
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-16 01:08:17 +08:00
gnattu
0a4457dd68 fix: typo
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-16 00:18:19 +08:00
gnattu
5c743f2b4d feat: separate videotoolbox tone mapping option
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-16 00:16:59 +08:00
gnattu
cf3e3e2c3d fix: code style
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-15 23:22:32 +08:00
gnattu
c18ef13b3b feat: add tone mapping for videotoolbox
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-15 23:00:51 +08:00
gnattu
44cb9f5fdd feat: add hw scale filter for videotoolbox
Signed-off-by: gnattu <gnattuoc@me.com>
2024-02-15 21:52:41 +08:00
Shadowghost
9230472056 Fix file extension based on container 2024-02-10 16:57:10 +01:00
Patrick Barron
42b052a5a6 Add IListingsManager service 2024-02-08 15:20:46 -05:00
Patrick Barron
19a72e8bf2 Remove IServerEntryPoint 2024-02-07 10:52:36 -05:00
Patrick Barron
4c7eca9313 Use IHostApplicationLifetime to start library monitor 2024-02-07 10:52:36 -05:00
Bond-009
143ef71528
Merge pull request #10969 from barronpm/progress-cleanup
Progress cleanup
2024-02-07 16:24:36 +01:00
Patrick Barron
505c09c85b Fix tests 2024-02-06 12:21:52 -05:00
Patrick Barron
4dd2ed8fb7 Remove some unused drawing code 2024-02-06 10:11:47 -05:00
Patrick Barron
a54c08209e Remove some unused media encoding code 2024-02-06 10:06:39 -05:00
Patrick Barron
0960438065 Remove ActionableProgress 2024-02-06 09:58:25 -05:00
Patrick Barron
8698b90594 Remove SimpleProgress 2024-02-06 09:50:46 -05:00
nyanmisaka
be265cd87f Add EqualsAny for VideoCodecTag condition
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-02-05 23:41:43 +08:00
Cody Robibero
ccfc85af11
Merge pull request #10951 from barronpm/livetv-di
Live TV DI
2024-02-03 08:25:25 -07:00
Mark Cilia Vincenti
f26fc7dfb2 Merge changes 2024-02-03 08:45:14 +01:00
Patrick Barron
34269dee58 Use DI for ILiveTvService 2024-02-02 20:13:24 -05:00
Patrick Barron
efd024bafe Use DI for IListingsProvider 2024-02-02 20:13:24 -05:00
Cody Robibero
bf4c3bb1e4
Merge pull request #10878 from barronpm/livetv-guidemanager
Add IGuideManager service
2024-02-02 16:57:54 -07:00
nyanmisaka
e62dab627e Add full HWA transcoding pipeline for RKMPP
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-02-01 18:59:27 +08:00
nyanmisaka
92c0ec0c1b Use video framerate for ASS subtitle HW burn-in
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-01-28 20:06:42 +08:00
nyanmisaka
9323390add Fix the display aspect ratio of PGSSUB subtitle burn-in
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-01-28 20:06:42 +08:00
Patrick Barron
4399b51dca Merge branch 'master' into livetv-guidemanager
# Conflicts:
#	src/Jellyfin.LiveTv/LiveTvManager.cs
2024-01-17 12:08:01 -05:00
Cody Robibero
e7b8d45bbb
Use helper function to compare guid (#10825) 2024-01-17 08:51:39 -07:00
Patrick Barron
59c2ae944d Add IGuideManager service 2024-01-17 09:52:11 -05:00
Bond-009
484ccf7f28
Merge pull request #10858 from barronpm/livetv-tunerhostmanager
Add ITunerHostManager service and minor LiveTv cleanup
2024-01-17 15:42:37 +01:00
Patrick Barron
c101d287f2 Remove unused Live TV code 2024-01-15 13:29:55 -05:00
Patrick Barron
c23a038ba8 Remove unnecessary allocations in TunerHostManager 2024-01-15 09:37:03 -05:00
JPVenson
3ce16713dd
Fixed disposable not being called (#10613)
* Fixed disposable not being called

* PulledUp usage of IAsyncDisposable for sessioninfo

Co-authored-by: Patrick Barron <barronpm@gmail.com>
2024-01-14 16:50:09 +01:00
Mark Cilia Vincenti
e47144e7c7 Updated contributors, upgraded to AsyncKeyedLocker 6.3.0 which now supports non-keyed locking using a similar interface and changed SemaphoreSlim-based locks to using AsyncNonKeyedLocker. 2024-01-14 12:11:16 +01:00
Mark Cilia Vincenti
6a257e1b40 Merge branch 'master' into AsyncKeyedLock-migration 2024-01-14 11:45:19 +01:00
Patrick Barron
9c2c066e6f Add ITunerHostManager service 2024-01-12 21:17:09 -05:00
Patrick Barron
051fa04a80 Move GetRecordingStreamMediaSources to IMediaSourceManager 2024-01-09 09:47:07 -05:00
Patrick Barron
82f93afa22
Fix More Live TV Warnings (#10818)
* Fix CA1819 in LiveTvManager

* Call ConfigureAwait in ChannelManager
2024-01-06 13:33:58 -07:00
Niels van Velzen
55916a09eb
Remove some unused client capabilities and sync code (#10812) 2024-01-06 13:33:48 -07:00
Nyanmisaka
aa71129cff
Use -noauto{scale,rotate} for disabling auto filters (#10810)
`-auto{scale,rotate} 0` has been dropped in upstream FFmpeg.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2024-01-04 16:31:45 -07:00
Mark Cilia Vincenti
d1677dc680 AsyncKeyedLock migration 2024-01-03 16:47:25 +01:00
Patrick Barron
c49539cbe0 Move ProgressiveFileStream to Controller 2023-12-21 12:53:50 -05:00
Patrick Barron
9215a4d40a Add ITranscodeManager service 2023-12-21 12:53:50 -05:00
Patrick Barron
c2081955c8 Rename and clean up TranscodingJob 2023-12-21 12:53:50 -05:00
Patrick Barron
abd74fd5a4 Move TranscodingJobDto and TranscodingThrottler to Controller 2023-12-21 12:53:49 -05:00
Bond-009
053c3392f4
Merge pull request #10682 from barronpm/livetv-warnings
Fix some warnings in LiveTV
2023-12-18 23:21:45 +01:00
Bond-009
ce45b73c8b
Merge pull request #10702 from crobibero/collection-type-lowercase
Convert CollectionType to use lowercase enum names
2023-12-18 19:38:44 +01:00
Bond-009
24cbd64450
Merge pull request #10573 from arabcoders/master
Add new API endpoint to view/update Item UserData
2023-12-15 18:00:50 +01:00
jkhsjdhjs
547d97d602
Use eof_action=pass when overlaying subtitles
The previous behavior using `eof_action=endall` and `shortest=1` would
end the video stream if one of the input stream (video, subtitle) ends.
In some cases the duration of the overlayed subtitles is shorter than the
video stream, causing the output to end when the subtitles end and dropping
the remaining video stream.

This commit changes this behavior so `eof_action=pass` is used instead,
which continues passing the video stream through even if the subtitles end
earlier [1]. `shortest=1` is also removed, as this option implies
`eof_action=endall`.

If the subtitle stream has a higher duration than the video stream, the output
will also end with the video stream without `shortest=1`, as the video stream
is the primary input to the `overlay` filter.

Fix #10698

[1] https://ffmpeg.org/ffmpeg-filters.html#Options-for-filters-with-several-inputs-_0028framesync_0029
2023-12-13 13:11:42 +01:00
Cody Robibero
033cfa59c4 Convert CollectionType to use lowercase enum names 2023-12-08 15:45:36 -07:00
Patrick Barron
0d5bbfda32
Remove unused DLNA models (#10685)
* Remove unused DLNA models

* Remove IDlnaManager
2023-12-06 16:06:42 -07:00
Patrick Barron
192559db32 Make ILiveStream an IDisposable 2023-12-05 14:26:35 -05:00
Patrick Barron
5c593b120a Don't use List directly in ITunerHost method signatures 2023-12-05 13:35:18 -05:00
Claus Vium
0be2817ccb
Merge pull request #10371 from Pithaya/feat/book-persons
Allow persons on books
2023-11-23 23:09:06 +01:00
Abdulmohsen
9d5dc4d71b
Merge branch 'jellyfin:master' into master 2023-11-24 00:00:53 +03:00
Bond_009
faa22cdb84 Update deps
* Removes SourceLink as it should work automagically with .NET 8
2023-11-16 00:50:48 +01:00
ArabCoders
c4013d2e10 Updated the summary and the Dto name. 2023-11-15 13:55:14 +03:00
Bond_009
b62b0ec2b5 Fix warnings 2023-11-14 21:14:21 +01:00
Bond_009
eb022c49cc Update to .NET 8 2023-11-14 21:12:16 +01:00
Pithaya
eb2bcc91c5
Merge branch 'master' into feat/book-persons 2023-11-13 18:07:23 +01:00
ArabCoders
2a25c5a2e3 Refactored api call logic handling. 2023-11-13 15:51:06 +03:00
Bond-009
fc694289a9
Merge pull request #10557 from barronpm/dlna-plugin
Move DLNA to Plugin (Part 1)
2023-11-12 16:23:11 +01:00
Patrick Barron
1e1e1560a4 Add IServerApplicationHost parameter to IPluginServiceRegistrator 2023-11-10 07:43:46 -05:00
Cody Robibero
892973a9e3
Merge branch 'master' into media-type 2023-11-09 22:03:55 -07:00
Cody Robibero
906f701fa8
Convert CollectionType, SpecialFolderType to enum (#9764)
* Convert CollectionType, SpecialFolderType to enum

* Hide internal enum CollectionType values

* Apply suggestions from code review

Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com>

* Fix recent change

* Update Jellyfin.Data/Attributes/OpenApiIgnoreEnumAttribute.cs

Co-authored-by: Patrick Barron <barronpm@gmail.com>

---------

Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com>
Co-authored-by: Patrick Barron <barronpm@gmail.com>
2023-11-09 14:00:29 -07:00
Cody Robibero
c7a94d48ae
Convert ItemSortBy to enum (#9765)
* Convert ItemSortBy to enum

* Rename Unknown to Default
2023-11-09 14:00:13 -07:00
Bond_009
a9ef103c95 Add IDisposableAnalyzers to more projects 2023-11-05 02:01:14 +01:00
Claus Vium
0973f1e0ba
Merge pull request #10357 from herby2212/kill-inactive-streams-v2
Add auto close of an inactive session after X minutes
2023-10-27 09:47:43 +02:00
nyanmisaka
9c270b149c Fix mismatch between intel VAAPI UMD/KMD in rare cases
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
2023-10-22 19:06:35 +08:00
herby2212
27ceee8b6c update to current master to resolve merge conflict 2023-10-21 01:20:59 +02:00
Nick
cd662506a1 Merge branch 'master' into trickplay 2023-10-18 19:27:05 -07:00
Stepan Goremykin
38d962242a Merge branch 'master' into fix-resharper-warnings
# Conflicts:
#	Emby.Server.Implementations/Updates/InstallationManager.cs
#	tests/Jellyfin.Server.Integration.Tests/OpenApiSpecTests.cs
2023-10-14 00:45:52 +02:00
Stepan Goremykin
8d7e4229ca Merge branch 'master' into fix-resharper-warnings
# Conflicts:
#	Emby.Server.Implementations/Net/SocketFactory.cs
#	RSSDP/SsdpCommunicationsServer.cs
#	RSSDP/SsdpDeviceLocator.cs
#	RSSDP/SsdpDevicePublisher.cs
2023-10-12 20:11:16 +02:00
Bond_009
d7748cfa04 Multiple Stream changes
* Remove useless MemoryStream in DlnaHttpClient
* Use HttpContent.ReadFromJsonAsync extension
* Call ConfigureAwait for IAsyncDisposable
* Use HttpContent.CopyToAsync where possible
2023-10-11 18:32:57 +02:00
Cody Robibero
2920611ffc Convert string MediaType to enum MediaType 2023-10-10 15:57:15 -06:00
Patrick Barron
1ce49b4a04
Merge branch 'master' into xml-parsing-cleanup 2023-10-10 12:00:45 -04:00
Bond-009
6b06a43c3f
Merge pull request #10347 from Bond-009/drawing 2023-10-10 13:12:53 +02:00
Bond-009
fc1f0a31a1
Merge pull request #10337 from barronpm/system-manager 2023-10-10 13:12:43 +02:00
Bond_009
c707baed83 Jellyfin.Drawing minor improvements
Reduce duplicate/dead code
2023-10-08 17:10:04 +02:00
Bond-009
0b31997b2f
Merge pull request #10348 from Bond-009/strings 2023-10-08 14:07:30 +02:00
Stepan Goremykin
fdef9356b9 Use null propagation 2023-10-08 01:25:37 +02:00
Stepan Goremykin
2d7835c848 Join declaration and assignment 2023-10-08 01:16:43 +02:00
Pithaya
cc590f82b9 Allow people on books 2023-10-08 01:08:03 +02:00
Stepan Goremykin
6512f85ccb Pass cancellation token 2023-10-08 00:55:14 +02:00
Stepan Goremykin
f84469d500 Remove redundant using directives 2023-10-08 00:50:02 +02:00
Stepan Goremykin
526f9a825c Make files readonly 2023-10-08 00:40:58 +02:00
Stepan Goremykin
8ea812b65d Reduce string literal length by using verbatim string 2023-10-08 00:26:12 +02:00
herby2212
db5c2f738e integrate development from v1 2023-10-07 21:18:21 +02:00
Bond-009
1141883f77
Merge pull request #10321 from feilongfl/master 2023-10-07 00:15:01 +02:00
Patrick Barron
c38fbece03 Remove unnecessary Trim() from GetPersonFromXmlNode 2023-10-06 16:57:36 -04:00
Patrick Barron
40e1c5f4c6 Remove logger parameter from XmlReaderExtensions.TryReadDateTime 2023-10-06 16:56:50 -04:00
Patrick Barron
1dd6442e89 Use extension methods in GetPersonFromXmlNode 2023-10-06 16:43:50 -04:00
Patrick Barron
0e51ffa169 Add TryReadInt to XmlReaderExtensions 2023-10-06 15:35:26 -04:00
Patrick Barron
8a7a1cc723 Add ReadNormalizedString to XmlReaderExtensions 2023-10-06 15:12:49 -04:00
Patrick Barron
99832642ce Add TryParseDateTime and TryParseDateTimeExact to XmlReaderExtensions 2023-10-06 14:18:56 -04:00
Patrick Barron
1a6ec2c740 Add GetStringArray and GetPersonArray to XmlReaderExtensions 2023-10-06 13:40:08 -04:00
Patrick Barron
bdca4ed322 Add XmlReader.GetPersonFromXmlNode 2023-10-06 12:46:35 -04:00
Claus Vium
6593aa1255
Merge pull request #10135 from 0x25CBFC4F/fix/ffmpeg-probesize
Fixed probesize argument passing to FFmpeg
2023-10-06 11:38:31 +02:00
Claus Vium
a18b3fbe70
simplify the if 2023-10-06 10:49:20 +02:00
Bond_009
b176beb88e Reduce string allocations
Some simple changes to reduce the number of allocated strings
2023-10-06 01:04:25 +02:00
fei long
33b3331c72
change Substring to AsSpan
Co-authored-by: Bond-009 <bond.009@outlook.com>
2023-10-06 06:26:52 +08:00
Patrick Barron
6f7413812f Add SystemManager service 2023-10-04 14:40:00 -04:00
Claus Vium
467aa40d21
Merge pull request #10222 from Bond-009/photos 2023-10-03 19:23:35 +02:00
Bond-009
14b06ecbe2
Merge pull request #10261 from barronpm/ihostlifetime 2023-10-03 11:05:10 +02:00
YuLong Yao
808e59fdda
add pcm format when codec is pcm_* 2023-10-02 13:14:53 +08:00
Bond_009
57891e7639 PhotoResolver: change how generated images are detected
Backdrops/fanart are generated as (backdrop)|(fanart)[0-9]*.extension

Fixes #7830
2023-09-27 17:20:55 +02:00