From 6c64aa7c3d65b50aa702190aef3cce5390ea8db0 Mon Sep 17 00:00:00 2001 From: Paddy Xu Date: Sat, 29 Jul 2017 22:29:06 +0300 Subject: [PATCH] switch to new FFME control --- .../QuickLook.Plugin.ImageViewer/Plugin.cs | 10 +- .../Converters.cs | 41 +- .../FFmpeg/FFprobe.cs | 4 +- .../QuickLook.Plugin.VideoViewer/Plugin.cs | 33 +- .../QuickLook.Plugin.VideoViewer.csproj | 6 + .../Resources/compact-disc.png | Bin 0 -> 22879 bytes .../QuickLook.Plugin.VideoViewer/Styles.xaml | 4 +- .../ViewerPanel.xaml | 96 +- .../ViewerPanel.xaml.cs | 40 +- .../ffme/ffme.dll | Bin 219648 -> 218624 bytes .../ffme/ffme.xml | 13158 ++++++++-------- .../ffme/ffmpeg.dll | Bin 203264 -> 203264 bytes 12 files changed, 6700 insertions(+), 6692 deletions(-) create mode 100644 QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs index c938cb6..05b9da3 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs @@ -35,7 +35,7 @@ namespace QuickLook.Plugin.ImageViewer ".orf", ".pef", ".ptx", ".pxn", ".r3d", ".raf", ".raw", ".rwl", ".rw2", ".rwz", ".sr2", ".srf", ".srw", ".tif", ".x3f", // normal - ".bmp", ".gif", ".ico", ".icon", ".jpg", ".jpeg", ".png", ".psd", ".svg", ".wdp", ".tiff", ".tga", ".webp" + ".bmp", ".ggg", ".ico", ".icon", ".jpg", ".jpeg", ".png", ".psd", ".svg", ".wdp", ".tiff", ".tga", ".webp" }; private Size _imageSize; private ImagePanel _ip; @@ -67,10 +67,15 @@ namespace QuickLook.Plugin.ImageViewer context.SetPreferredSizeFit(_imageSize, 0.8); else context.PreferredSize = new Size(1024, 768); + + Directory.SetCurrentDirectory(App.AppPath); } public void View(string path, ContextObject context) { + // set dcraw.exe for Magick.NET + Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); + _ip = new ImagePanel(); context.ViewerContent = _ip; @@ -81,11 +86,12 @@ namespace QuickLook.Plugin.ImageViewer LoadImage(_ip, path); context.IsBusy = false; + + Directory.SetCurrentDirectory(App.AppPath); } public void Cleanup() { - Directory.SetCurrentDirectory(App.AppPath); _ip = null; } diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs index 1b6bd81..046e5eb 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs @@ -58,6 +58,24 @@ namespace QuickLook.Plugin.VideoViewer } } + public sealed class BooleanToVisibilityVisibleConverter : DependencyObject, IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + return Visibility.Visible; + + var v = (bool) value; + + return v ? Visibility.Visible : Visibility.Hidden; + } + + object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } + public sealed class BooleanToVisibilityHiddenConverter : DependencyObject, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) @@ -78,8 +96,7 @@ namespace QuickLook.Plugin.VideoViewer public class TimeSpanToSecondsConverter : IValueConverter { - public object Convert(object value, Type targetType, - object parameter, CultureInfo culture) + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is TimeSpan) return ((TimeSpan) value).TotalSeconds; if (value is Duration) @@ -88,15 +105,29 @@ namespace QuickLook.Plugin.VideoViewer return 0d; } - public object ConvertBack(object value, Type targetType, - object parameter, CultureInfo culture) + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { var result = TimeSpan.FromTicks((long) Math.Round(TimeSpan.TicksPerSecond * (double) value, 0)); - // Do the conversion from visibility to bool + if (targetType == typeof(TimeSpan)) return result; if (targetType == typeof(Duration)) return new Duration(result); return Activator.CreateInstance(targetType); } } + + public class DurationToTimeSpanConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var val = (Duration) value; + + return val.HasTimeSpan ? val.TimeSpan : TimeSpan.Zero; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } } \ No newline at end of file diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/FFmpeg/FFprobe.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/FFmpeg/FFprobe.cs index 0f5a76f..23d45b2 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/FFmpeg/FFprobe.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/FFmpeg/FFprobe.cs @@ -18,6 +18,7 @@ using System.Diagnostics; using System.IO; using System.Reflection; +using System.Text; using System.Windows; using System.Xml.XPath; @@ -47,6 +48,7 @@ namespace QuickLook.Plugin.VideoViewer.FFmpeg p.StartInfo.RedirectStandardOutput = true; p.StartInfo.FileName = _probePath; p.StartInfo.Arguments = $"-v quiet -print_format xml -show_streams -show_format \"{media}\""; + p.StartInfo.StandardOutputEncoding = Encoding.UTF8; p.Start(); p.WaitForExit(); @@ -67,7 +69,7 @@ namespace QuickLook.Plugin.VideoViewer.FFmpeg public bool CanDecode() { - var info = infoNavigator.SelectSingleNode("/ffprobe/streams"); + var info = infoNavigator.SelectSingleNode("/ffprobe/format"); return info != null; } diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs index 95766e2..2812e30 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs @@ -15,6 +15,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +using System; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; @@ -26,6 +28,7 @@ namespace QuickLook.Plugin.VideoViewer { public class Plugin : IViewer { + private Size _mediaSize; private ViewerPanel _vp; public int Priority => int.MaxValue; @@ -43,25 +46,28 @@ namespace QuickLook.Plugin.VideoViewer if (Directory.Exists(path)) return false; - var formats = new[] + var blacklist = new[] { - ".3g2", ".3gp", ".3gp2", ".3gpp", ".amv", ".asf", ".asf", ".avi", ".flv", ".m2ts", ".m4v", ".mkv", - ".mov", ".mp4", ".mp4v", ".mpeg", ".mpg", ".ogv", ".qt", ".vob", ".webm", ".wmv" + ".txt", ".jpg", ".bmp" }; - if (formats.Contains(Path.GetExtension(path).ToLower())) - return true; + if (blacklist.Contains(Path.GetExtension(path).ToLower())) + return false; - return false; + return new FFprobe(path).CanDecode(); } public void Prepare(string path, ContextObject context) { - var def = new Size(1024, 768); + var def = new Size(450, 450); - var real = new FFprobe(path).GetViewSize(); + _mediaSize = new FFprobe(path).GetViewSize(); - context.SetPreferredSizeFit(real == Size.Empty ? def : real, 0.6); + var windowSize = _mediaSize == Size.Empty ? def : _mediaSize; + windowSize.Width = Math.Max(def.Width, windowSize.Width); + windowSize.Height = Math.Max(def.Height, windowSize.Height); + + context.SetPreferredSizeFit(windowSize, 0.6); } public void View(string path, ContextObject context) @@ -70,11 +76,16 @@ namespace QuickLook.Plugin.VideoViewer context.ViewerContent = _vp; + Debug.WriteLine("ViewerContent done"); _vp.LoadAndPlay(path); + Debug.WriteLine("LoadAndPlay done"); + + _vp.mediaElement.MediaOpened += (sender, e) => context.IsBusy = false; + + var info = _mediaSize == Size.Empty ? "Audio" : $"{_mediaSize.Width}×{_mediaSize.Height}"; context.Title = - $"{Path.GetFileName(path)} ({_vp.mediaElement.NaturalVideoWidth}×{_vp.mediaElement.NaturalVideoHeight})"; - context.IsBusy = false; + $"{Path.GetFileName(path)} ({info})"; } public void Cleanup() diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj index 67275b7..3dbfc12 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj @@ -62,6 +62,7 @@ + 4.0 @@ -105,8 +106,13 @@ + + Always + + + Always diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png new file mode 100644 index 0000000000000000000000000000000000000000..c9539d3f8cc6dc94b51eca517c15daf1d88c05ad GIT binary patch literal 22879 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 A0{{R3 literal 0 HcmV?d00001 diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Styles.xaml b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Styles.xaml index 10abae4..6cb4b08 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Styles.xaml +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Styles.xaml @@ -4,8 +4,8 @@ + + + + @@ -42,22 +61,30 @@ @@ -72,13 +99,13 @@ - + - + - +