Skip to content

Commit 22f5c1a

Browse files
committed
mediaplayer: add helper for deinterlace filters
1 parent b686a5b commit 22f5c1a

File tree

1 file changed

+83
-3
lines changed

1 file changed

+83
-3
lines changed

src/LibVLCSharp/MediaPlayer.cs

Lines changed: 83 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,9 +1704,9 @@ public Task<bool> TakeSnapshotAsync(uint num, string? filePath, uint width, uint
17041704
/// Enable or disable deinterlace filter
17051705
/// </summary>
17061706
/// <param name="deinterlace">deinterlace state: auto (default), disabled or enabled</param>
1707-
/// <param name="deinterlaceType">type of deinterlace filter, empty string to disable</param>
1707+
/// <param name="deinterlaceType">type of deinterlace filter from <see cref="DeinterlaceFilter"/>, empty string to disable</param>
17081708
/// <returns>true on success, false if the mode was not recognised</returns>
1709-
public bool SetDeinterlace(Deinterlace deinterlace, string deinterlaceType = "")
1709+
public bool SetDeinterlace(Deinterlace deinterlace, string? deinterlaceType = "")
17101710
{
17111711
var deinterlaceTypeUtf8 = deinterlaceType.ToUtf8();
17121712

@@ -1715,13 +1715,22 @@ public bool SetDeinterlace(Deinterlace deinterlace, string deinterlaceType = "")
17151715
deinterlaceTypeUtf8) == 0;
17161716
}
17171717

1718+
/// <summary>
1719+
/// Enable or disable deinterlace filter
1720+
/// </summary>
1721+
/// <param name="deinterlace">deinterlace state: auto (default), disabled or enabled</param>
1722+
/// <param name="deinterlaceType">type of deinterlace filter</param>
1723+
/// <returns>true on success, false if the mode was not recognised</returns>
1724+
public bool SetDeinterlace(Deinterlace deinterlace, DeinterlaceFilter deinterlaceType)
1725+
=> SetDeinterlace(deinterlace, deinterlaceType.ToFilterString());
1726+
17181727
/// <summary>
17191728
/// Gets the deinterlacing parameters.
17201729
/// </summary>
17211730
public (string? deinterlaceMode, Deinterlace deinterlaceState) GetDeinterlace()
17221731
{
17231732
var result = Native.LibVLCVideoGetDeinterlace(NativeReference, out var deinterlaceMode);
1724-
return (deinterlaceMode.FromUtf8(true), result);
1733+
return (deinterlaceMode: deinterlaceMode.FromUtf8(true), deinterlaceState: result);
17251734
}
17261735

17271736
/// <summary>
@@ -3947,4 +3956,75 @@ public enum Deinterlace
39473956
/// </summary>
39483957
ForceEnabled = 1
39493958
}
3959+
3960+
/// <summary>
3961+
/// Deinterlace filter modes
3962+
/// </summary>
3963+
public enum DeinterlaceFilter
3964+
{
3965+
/// <summary>
3966+
///
3967+
/// </summary>
3968+
Blend,
3969+
3970+
/// <summary>
3971+
///
3972+
/// </summary>
3973+
Discard,
3974+
3975+
/// <summary>
3976+
///
3977+
/// </summary>
3978+
Bob,
3979+
3980+
/// <summary>
3981+
///
3982+
/// </summary>
3983+
Linear,
3984+
3985+
/// <summary>
3986+
///
3987+
/// </summary>
3988+
Mean,
3989+
3990+
/// <summary>
3991+
///
3992+
/// </summary>
3993+
X,
3994+
3995+
/// <summary>
3996+
///
3997+
/// </summary>
3998+
Yadif2x,
3999+
4000+
/// <summary>
4001+
///
4002+
/// </summary>
4003+
Phosphor,
4004+
4005+
/// <summary>
4006+
///
4007+
/// </summary>
4008+
Ivtc,
4009+
4010+
/// <summary>
4011+
///
4012+
/// </summary>
4013+
Auto
4014+
}
4015+
4016+
/// <summary>
4017+
/// Extension methods for <see cref="DeinterlaceFilter"/>
4018+
/// </summary>
4019+
internal static class DeinterlaceFilterExtensions
4020+
{
4021+
/// <summary>
4022+
/// Converts the <see cref="DeinterlaceFilter"/> to its lowercase string representation
4023+
/// used by the native libVLC API.
4024+
/// </summary>
4025+
/// <param name="filter">The deinterlace filter</param>
4026+
/// <returns>The lowercase filter name</returns>
4027+
internal static string ToFilterString(this DeinterlaceFilter filter)
4028+
=> filter.ToString().ToLowerInvariant();
4029+
}
39504030
}

0 commit comments

Comments
 (0)