From 176e2b8ffb0acbb9e2b197b94f0578f63963c4e1 Mon Sep 17 00:00:00 2001 From: Haesu Gwon Date: Tue, 11 Jul 2023 15:28:52 +0900 Subject: [PATCH] [MediaPlayer] Add new API to set video codec type (#5359) * [MediaPlayer] Add new API to set video codec type --- .../Interop/Interop.Player.cs | 6 +++ .../Player/Player.Properties.cs | 46 ++++++++++++++++++++-- .../Player/PlayerEnums.cs | 1 - 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs index 585510f..e48e241 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Interop/Interop.Player.cs @@ -387,6 +387,12 @@ internal static partial class Interop [DllImport(Libraries.Player, EntryPoint = "player_get_audio_codec_type")] internal static extern PlayerErrorCode GetAudioCodecType(IntPtr player, out CodecType type); + + [DllImport(Libraries.Player, EntryPoint = "player_set_video_codec_type")] + internal static extern PlayerErrorCode SetVideoCodecType(IntPtr player, CodecType type); + + [DllImport(Libraries.Player, EntryPoint = "player_get_video_codec_type")] + internal static extern PlayerErrorCode GetVideoCodecType(IntPtr player, out CodecType type); } internal class PlayerHandle : SafeHandle diff --git a/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs b/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs index e180bb5..9decb5c 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Player/Player.Properties.cs @@ -14,11 +14,7 @@ * limitations under the License. */ using System; -using System.Threading.Tasks; -using System.Runtime.InteropServices; using System.Diagnostics; -using System.IO; -using System.Threading; using NativeDisplay = Interop.Display; using static Interop; @@ -740,6 +736,48 @@ namespace Tizen.Multimedia } } + /// + /// Gets or sets the codec type of the video decoder. + /// + /// A specifies the type. + /// The default codec type could be different depending on the device capability. + /// + /// To set, the player must be in the state. + /// If H/W video codec type is not supported in some cases, S/W video codec type could be used instead. + /// The availability could be changed depending on the codec capability. + /// + /// The player has already been disposed. + /// The value is not valid. + /// + /// The player is not in the valid state. + /// -or-
+ /// Operation failed; internal error. + ///
+ /// The selected codec is not supported. + /// 11 + public CodecType VideoCodecType + { + get + { + ValidateNotDisposed(); + + NativePlayer.GetVideoCodecType(Handle, out var value). + ThrowIfFailed(this, "Failed to get the type of the video codec"); + + return value; + } + set + { + ValidateNotDisposed(); + ValidatePlayerState(PlayerState.Idle); + + ValidationUtil.ValidateEnum(typeof(CodecType), value, nameof(value)); + + NativePlayer.SetVideoCodecType(Handle, value). + ThrowIfFailed(this, "Failed to set the type of the video codec"); + } + } + private SphericalVideo _sphericalVideo; /// diff --git a/src/Tizen.Multimedia.MediaPlayer/Player/PlayerEnums.cs b/src/Tizen.Multimedia.MediaPlayer/Player/PlayerEnums.cs index ac58ce4..137fc1a 100644 --- a/src/Tizen.Multimedia.MediaPlayer/Player/PlayerEnums.cs +++ b/src/Tizen.Multimedia.MediaPlayer/Player/PlayerEnums.cs @@ -327,7 +327,6 @@ namespace Tizen.Multimedia NoSyncAndDeinterleave = 0x03, } - /// /// Specifies the types of a codec for . /// -- 2.7.4