Skip to content

Commit

Permalink
Version up to 1.5.5
Browse files Browse the repository at this point in the history
  • Loading branch information
pbsamsung committed Aug 21, 2020
1 parent ab78a4e commit 84d2bcb
Show file tree
Hide file tree
Showing 616 changed files with 68,292 additions and 0 deletions.
6 changes: 6 additions & 0 deletions Configuration/Configuration.csproj
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>
128 changes: 128 additions & 0 deletions Configuration/Defaults.cs
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);
}

}
27 changes: 27 additions & 0 deletions Configuration/Paths.cs
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";
}
}
7 changes: 7 additions & 0 deletions Configuration/res/logger.config
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.
22 changes: 22 additions & 0 deletions JuvoLogger.Tizen/JuvoLogger.Tizen.csproj
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>
99 changes: 99 additions & 0 deletions JuvoLogger.Tizen/TizenLogger.cs
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;
}
}
}
58 changes: 58 additions & 0 deletions JuvoLogger.Tizen/TizenLoggerManager.cs
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);
}
}
}
36 changes: 36 additions & 0 deletions JuvoLogger.Udp/JuvoLogger.Udp.csproj
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>
Loading

0 comments on commit 84d2bcb

Please sign in to comment.