-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
616 changed files
with
68,292 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<Project Sdk="Tizen.NET.Sdk/1.0.9"> | ||
<PropertyGroup> | ||
<TargetFrameworks>netstandard2.0;tizen50</TargetFrameworks> | ||
<LangVersion>7.3</LangVersion> | ||
</PropertyGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
/*! | ||
* https://github.com/SamsungDForum/JuvoPlayer | ||
* Copyright 2019, Samsung Electronics Co., Ltd | ||
* Licensed under the MIT license | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
using System; | ||
|
||
namespace Configuration | ||
{ | ||
public static class SeekLogic | ||
{ | ||
public static TimeSpan DefaultSeekInterval { get; set; } = TimeSpan.FromSeconds(5); | ||
public static TimeSpan DefaultSeekAccumulateInterval { get; set; } = TimeSpan.FromSeconds(2); | ||
public static double DefaultMaximumSeekIntervalPercentOfContentTotalTime { get; set; } = 1.0; | ||
public static TimeSpan DefaultSeekIntervalValueThreshold { get; set; } = | ||
TimeSpan.FromMilliseconds(200); // time between key events when key is being hold is ~100ms | ||
} | ||
|
||
public static class PlayerClockProviderConfig | ||
{ | ||
public static TimeSpan ClockInterval { get; set; } = TimeSpan.FromSeconds(0.1); | ||
public static readonly TimeSpan InvalidClock = TimeSpan.FromSeconds(-1); | ||
} | ||
|
||
public static class DataClockProviderConfig | ||
{ | ||
public static TimeSpan TimeBufferDepthDefault { get; set; } = TimeSpan.FromSeconds(10); | ||
public static TimeSpan ClockInterval { get; set; } = TimeSpan.FromSeconds(0.5); | ||
} | ||
|
||
public static class DataSynchronizerConfig | ||
{ | ||
public static TimeSpan PostKeyFrameTransferDuration { get; set; } = TimeSpan.FromSeconds(0.15); | ||
public static TimeSpan PreKeyFrameTransferDuration { get; set; } = TimeSpan.FromSeconds(0.15); | ||
public static TimeSpan StreamClockMaximumOverhead { get; set; } = TimeSpan.FromSeconds(1.25); | ||
public static TimeSpan StreamClockMinimumOverhead { get; set; } = TimeSpan.FromSeconds(0.75); | ||
public static TimeSpan StreamClockDiscontinuityThreshold { get; set; } = TimeSpan.FromSeconds(0.1); | ||
} | ||
|
||
public static class DashClient | ||
{ | ||
public static TimeSpan DynamicSegmentAvailabilityOverhead = TimeSpan.FromSeconds(2); | ||
} | ||
|
||
public static class DashDownloader | ||
{ | ||
public static int ChunkSize { get; set; } = 64 * 1024; | ||
} | ||
|
||
public static class DashManifest | ||
{ | ||
public static TimeSpan DownloadTimeout { get; set; } = TimeSpan.FromSeconds(3); | ||
public static int MaxManifestDownloadRetries { get; set; } = 3; | ||
public static TimeSpan ManifestDownloadDelay { get; set; } = TimeSpan.FromMilliseconds(1000); | ||
public static TimeSpan ManifestReloadDelay { get; set; } = TimeSpan.FromMilliseconds(1500); | ||
} | ||
|
||
public static class DashMediaPipeline | ||
{ | ||
public static TimeSpan SegmentEps { get; set; } = TimeSpan.FromSeconds(0.5); | ||
} | ||
|
||
public static class HLSDataProvider | ||
{ | ||
public static TimeSpan MaxBufferHealth { get; set; } = TimeSpan.FromSeconds(10); | ||
} | ||
|
||
public static class RTSPClient | ||
{ | ||
public static TimeSpan RtspCommandTimeout { get; set; } = TimeSpan.FromSeconds(2); | ||
public static TimeSpan ConnectionTimeout { get; set; } = TimeSpan.FromSeconds(2); | ||
} | ||
|
||
public static class EWMAThroughputHistory | ||
{ | ||
public static double SlowEWMACoeff { get; set; } = 0.99; | ||
public static double FastEWMACoeff { get; set; } = 0.98; | ||
public static double SlowBandwidth { get; set; } = 20000000; | ||
public static double FastBandwidth { get; set; } = 20000000; | ||
} | ||
|
||
public static class ThroughputHistory | ||
{ | ||
public static int MaxMeasurementsToKeep { get; set; } = 20; | ||
public static int AverageThroughputSampleAmount { get; set; } = 4; | ||
public static int MinimumThroughputSampleAmount { get; set; } = 2; | ||
public static double ThroughputDecreaseScale { get; set; } = 1.3; | ||
public static double ThroughputIncreaseScale { get; set; } = 1.3; | ||
} | ||
|
||
public static class FFmpegDemuxer | ||
{ | ||
public static ulong BufferSize { get; set; } = 64 * 1024; // 32kB seems to be "low level standard", but content downloading pipeline works better for 64kB | ||
|
||
public static int ProbeSize { get; set; } = 32 * 1024; // higher values may cause problems when probing certain kinds of content (assert "len >= s->orig_buffer_size" in aviobuf) | ||
|
||
public static TimeSpan MaxAnalyzeDuration { get; set; } = TimeSpan.FromSeconds(10); | ||
} | ||
|
||
public static class CencSession | ||
{ | ||
public static int MaxDecryptRetries { get; set; } = 5; | ||
public static TimeSpan DecryptBufferFullSleepTime { get; set; } = TimeSpan.FromMilliseconds(1000); | ||
} | ||
|
||
public static class PlayerControllerConfig | ||
{ | ||
public static TimeSpan TimeUpdatedInterval { get; set; } = TimeSpan.FromSeconds(0.33); | ||
} | ||
|
||
public static class EsStreamConfig | ||
{ | ||
public static TimeSpan BufferingEventThreshold { get; set; } = TimeSpan.FromSeconds(0.2); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/*! | ||
* | ||
* [https://github.com/SamsungDForum/JuvoPlayer]) | ||
* Copyright 2020, Samsung Electronics Co., Ltd | ||
* Licensed under the MIT license | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
*/ | ||
|
||
namespace Configuration | ||
{ | ||
public static class Paths | ||
{ | ||
public const string VideoClipJsonPath = | ||
"https://raw.githubusercontent.com/ppaneksamsung/JuvoPlayer/master/Resources/videoclips.json"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[LogLevel] | ||
JuvoPlayer=Info | ||
|
||
; Uncomment UdpLogger section and provide listening Port value to enable UDP logging. | ||
; | ||
; [UdpLogger] | ||
; Port= |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<Project Sdk="Tizen.NET.Sdk/1.0.9"> | ||
|
||
<!-- Property Group for Tizen Project --> | ||
<PropertyGroup> | ||
<TizenCreateTpkOnBuild>false</TizenCreateTpkOnBuild> | ||
<TargetFramework>tizen50</TargetFramework> | ||
<LangVersion>7.3</LangVersion> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
<DebugType>portable</DebugType> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
<DebugType>None</DebugType> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<PackageReference Include="ini-parser-netstandard" Version="2.5.2" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ProjectReference Include="..\JuvoLogger\JuvoLogger.csproj" /> | ||
</ItemGroup> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
/*! | ||
* https://github.com/SamsungDForum/JuvoPlayer | ||
* Copyright 2018, Samsung Electronics Co., Ltd | ||
* Licensed under the MIT license | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
using System.Collections.Generic; | ||
|
||
namespace JuvoLogger.Tizen | ||
{ | ||
public class TizenLogger : LoggerBase | ||
{ | ||
private const int MaxLen = 800; | ||
|
||
private delegate void LogMethod(string tag, string message, string file, string func, int line); | ||
|
||
public TizenLogger(string channel, LogLevel level) : base(channel, level) | ||
{ | ||
} | ||
|
||
public override void PrintLog(LogLevel level, string message, string file, string method, int line) | ||
{ | ||
LogMethod tizenLog; | ||
switch (level) | ||
{ | ||
case LogLevel.Verbose: | ||
tizenLog = global::Tizen.Log.Verbose; | ||
break; | ||
case LogLevel.Debug: | ||
tizenLog = global::Tizen.Log.Debug; | ||
break; | ||
case LogLevel.Info: | ||
tizenLog = global::Tizen.Log.Info; | ||
break; | ||
case LogLevel.Warn: | ||
tizenLog = global::Tizen.Log.Warn; | ||
break; | ||
case LogLevel.Error: | ||
tizenLog = global::Tizen.Log.Error; | ||
break; | ||
case LogLevel.Fatal: | ||
tizenLog = global::Tizen.Log.Fatal; | ||
break; | ||
default: | ||
tizenLog = global::Tizen.Log.Error; | ||
break; | ||
} | ||
|
||
if (message.Length <= MaxLen) | ||
tizenLog(Channel, message, file, method, line); | ||
else | ||
{ | ||
foreach (var messagePart in SplitMessage(message)) | ||
tizenLog(Channel, messagePart, file, method, line); | ||
} | ||
} | ||
|
||
private static IEnumerable<string> SplitMessage(string message) | ||
{ | ||
// Rules: | ||
// 1. If a message is less than or equal maxLen, then it's not split. | ||
// 2. If a message is greater than maxLen, then it's split firstly by a new line character. | ||
// 3. If a particular line is greater than maxLen, then it's split by maxLen size. | ||
// | ||
// Note: dlog's max log size is about 950 characters. | ||
|
||
if (message.Length <= MaxLen) | ||
return new[] {message}; | ||
var result = new List<string>(); | ||
foreach (var line in message.Split('\n')) | ||
{ | ||
if (line.Length <= MaxLen) | ||
result.Add(line); | ||
else | ||
{ | ||
var start = 0; | ||
for (var end = MaxLen; end < line.Length; end += MaxLen) | ||
{ | ||
result.Add(line.Substring(start, MaxLen)); | ||
start = end; | ||
} | ||
result.Add(line.Substring(start)); | ||
} | ||
} | ||
return result; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/*! | ||
* https://github.com/SamsungDForum/JuvoPlayer | ||
* Copyright 2018, Samsung Electronics Co., Ltd | ||
* Licensed under the MIT license | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY | ||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
using IniParser.Model; | ||
using System.IO; | ||
using System.Reflection; | ||
|
||
namespace JuvoLogger.Tizen | ||
{ | ||
public class TizenLoggerManager : LoggerManager | ||
{ | ||
private static LoggerBase CreateLogger(string channel, LogLevel level) => new TizenLogger(channel, level); | ||
|
||
public static void Configure(Stream stream) | ||
{ | ||
Configure(stream, CreateLogger); | ||
} | ||
|
||
public static void Configure(string contents) | ||
{ | ||
Configure(contents, CreateLogger); | ||
} | ||
|
||
public static void Configure(in IniData contents) | ||
{ | ||
Configure(contents, CreateLogger); | ||
} | ||
|
||
public static void Configure() | ||
{ | ||
var configFilename = Path.Combine( | ||
Path.GetDirectoryName(Path.GetDirectoryName( | ||
Assembly.GetExecutingAssembly().Location)), | ||
"res", "logger.config"); | ||
|
||
var contents = string.Empty; | ||
if (File.Exists(configFilename)) | ||
{ | ||
contents = File.ReadAllText(configFilename); | ||
} | ||
Configure(contents); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<Project Sdk="Tizen.NET.Sdk/1.0.9"> | ||
|
||
<!-- Property Group for Tizen Project --> | ||
<PropertyGroup> | ||
<OutputType>Library</OutputType> | ||
<TargetFrameworks>netstandard2.0</TargetFrameworks> | ||
<TizenCreateTpkOnBuild>false</TizenCreateTpkOnBuild> | ||
<LangVersion>7.3</LangVersion> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<PackageReference Include="ini-parser-netstandard" Version="2.5.2" /> | ||
<PackageReference Include="System.Memory" Version="4.5.3" /> | ||
<PackageReference Include="System.Net.Sockets" Version="4.3.0" /> | ||
<PackageReference Include="System.Threading.Channels" Version="4.5.0" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\JuvoLogger\JuvoLogger.csproj" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<Compile Update="Resources\Messages.Designer.cs"> | ||
<DesignTime>True</DesignTime> | ||
<AutoGen>True</AutoGen> | ||
<DependentUpon>Messages.resx</DependentUpon> | ||
</Compile> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<EmbeddedResource Update="Resources\Messages.resx"> | ||
<Generator>ResXFileCodeGenerator</Generator> | ||
<LastGenOutput>Messages.Designer.cs</LastGenOutput> | ||
</EmbeddedResource> | ||
</ItemGroup> | ||
|
||
</Project> |
Oops, something went wrong.