public MediaFile DiscoverFile(string filePath, bool takeScreenshot = true) { long duration = 0; uint width, height, fps_n, fps_d, par_n, par_d, ret, fps = 0; string container, audio_codec, video_codec; bool has_audio, has_video; float par = 0; IntPtr container_ptr, audio_codec_ptr, video_codec_ptr; IntPtr error = IntPtr.Zero; LongoMatch.Core.Common.Image preview = null; MultimediaFactory factory; IFramesCapturer thumbnailer; ret = lgm_discover_uri(filePath, out duration, out width, out height, out fps_n, out fps_d, out par_n, out par_d, out container_ptr, out video_codec_ptr, out audio_codec_ptr, out error); if (error != IntPtr.Zero) { throw new GLib.GException(error); } if (ret != 0) { throw new Exception(Catalog.GetString("Could not parse file:") + filePath); } has_audio = audio_codec_ptr != IntPtr.Zero; has_video = video_codec_ptr != IntPtr.Zero; container = GLib.Marshaller.PtrToStringGFree(container_ptr); audio_codec = GLib.Marshaller.PtrToStringGFree(audio_codec_ptr); video_codec = GLib.Marshaller.PtrToStringGFree(video_codec_ptr); /* From nanoseconds to milliseconds */ duration = duration / (1000 * 1000); if (has_video) { fps = fps_n / fps_d; par = (float)par_n / par_d; if (takeScreenshot) { factory = new MultimediaFactory(); thumbnailer = factory.GetFramesCapturer(); thumbnailer.Open(filePath); preview = thumbnailer.GetFrame(new Time { TotalSeconds = 2 }, false, THUMBNAIL_MAX_WIDTH, THUMBNAIL_MAX_HEIGHT); thumbnailer.Dispose(); } } return(new LongoMatch.Core.Store.MediaFile(filePath, duration, (ushort)fps, has_audio, has_video, container, video_codec, audio_codec, width, height, par, preview, null)); }
void AddImage(Playlist playlist, IPlaylistElement element, bool prepend, TreeIter parent) { Pixbuf pix = LongoMatch.Gui.Helpers.Misc.OpenImage(this); if (pix != null) { var image = new LongoMatch.Core.Common.Image(pix); PlaylistImage plimage = new PlaylistImage(image, new Time(5000)); int index = playlist.Elements.IndexOf(element); if (!prepend) { index++; } playlist.Elements.Insert(index, plimage); (Model as TreeStore).InsertWithValues(parent, index, plimage); } }
protected virtual void Update(int actual, int total, LongoMatch.Core.Common.Image frame) { if (actual <= total) { progressbar.Text = Catalog.GetString("Capturing frame: ") + actual + "/" + total; progressbar.Fraction = (double)actual / (double)total; if (frame != null) { if (image.Pixbuf != null) { image.Pixbuf.Dispose(); } image.Pixbuf = frame.Value; } } if (actual == total) { progressbar.Text = Catalog.GetString("Done"); cancelbutton.Visible = false; okbutton.Visible = true; } }
void AddImage(Playlist playlist, IPlaylistElement element, bool prepend, TreeIter parent) { Pixbuf pix = LongoMatch.Gui.Helpers.Misc.OpenImage (this); if (pix != null) { var image = new LongoMatch.Core.Common.Image (pix); PlaylistImage plimage = new PlaylistImage (image, new Time (5000)); int index = playlist.Elements.IndexOf (element); if (!prepend) { index++; } playlist.Elements.Insert (index, plimage); (Model as TreeStore).InsertWithValues (parent, index, plimage); } }