internal static void RaiseFFmpegMessageLogged(object sender, MediaLogMessage e)
 {
     GuiContext.Current.EnqueueInvoke(() =>
     {
         FFmpegMessageLogged?.Invoke(sender, new MediaLogMessageEventArgs(e));
     });
 }
Exemple #2
0
 internal static void RaiseFFmpegMessageLogged(object sender, MediaLogMessage e)
 {
     WindowsPlatform.Instance.Gui?.EnqueueInvoke(DispatcherPriority.Background,
                                                 new Action <MediaLogMessage>((eventArgs) =>
     {
         FFmpegMessageLogged?.Invoke(sender, new MediaLogMessageEventArgs(e));
     }),
                                                 e);
 }
        /// <summary>
        /// Initializes static members of the <see cref="MediaElement"/> class.
        /// </summary>
        static MediaElement()
        {
            MediaEngine.FFmpegMessageLogged += (s, message) =>
                                               FFmpegMessageLogged?.Invoke(typeof(MediaElement), new MediaLogMessageEventArgs(message));

            // A GUI context must be registered
            Library.RegisterGuiContext(GuiContext.Current);

            // Content property cannot be changed.
            ContentProperty.OverrideMetadata(typeof(MediaElement), new FrameworkPropertyMetadata(null, OnCoerceContentValue));

            var style = new Style(typeof(MediaElement), null);

            style.Setters.Add(new Setter(FlowDirectionProperty, FlowDirection.LeftToRight));
            style.Seal();
            StyleProperty.OverrideMetadata(typeof(MediaElement), new FrameworkPropertyMetadata(style));
        }
        /// <summary>
        /// Initializes static members of the <see cref="MediaElement"/> class.
        /// </summary>
        static MediaElement()
        {
            var style = new Style(typeof(MediaElement), null);

            style.Setters.Add(new Setter(FlowDirectionProperty, FlowDirection.LeftToRight));
            style.Seal();
            StyleProperty.OverrideMetadata(typeof(MediaElement), new FrameworkPropertyMetadata(style));

            // Platform specific implementation
            Platform.SetDllDirectory = NativeMethods.SetDllDirectory;
            Platform.CopyMemory      = NativeMethods.CopyMemory;
            Platform.FillMemory      = NativeMethods.FillMemory;
            Platform.CreateTimer     = (priority) =>
            {
                return(new CustomDispatcherTimer((DispatcherPriority)priority));
            };

            // Setup the Platform-specific factory callbacks
            Platform.UIInvoke        = (priority, action) => WPFUtils.UIInvoke((DispatcherPriority)priority, action);
            Platform.UIEnqueueInvoke = (priority, action, args) => WPFUtils.UIEnqueueInvoke((DispatcherPriority)priority, action, args);
            Platform.CreateRenderer  = (mediaType, m) =>
            {
                if (mediaType == MediaType.Audio)
                {
                    return(new AudioRenderer(m));
                }
                else if (mediaType == MediaType.Video)
                {
                    return(new VideoRenderer(m));
                }
                else if (mediaType == MediaType.Subtitle)
                {
                    return(new SubtitleRenderer(m));
                }

                throw new ArgumentException($"No suitable renderer for Media Type '{mediaType}'");
            };

            // Simply forward the calls
            MediaElementCore.FFmpegMessageLogged += (o, e) => FFmpegMessageLogged?.Invoke(o, e);
        }
 public static void RaiseFFmpegMessageLogged(LoggingMessage message) =>
 FFmpegMessageLogged?.Invoke(null, message);
 internal static void RaiseFFmpegMessageLogged(object sender, MediaLogMessage e)
 {
     FFmpegMessageLogged?.Invoke(sender, new MediaLogMessageEventArgs(e));
 }
Exemple #7
0
 /// <summary>
 /// Raises the FFmpegMessageLogged event
 /// </summary>
 /// <param name="eventArgs">The <see cref="MediaLogMessagEventArgs" /> instance containing the event data.</param>
 internal static void RaiseFFmpegMessageLogged(MediaLogMessagEventArgs eventArgs)
 {
     FFmpegMessageLogged?.Invoke(typeof(MediaElement), eventArgs);
 }