@@ -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