<Type Name="PlayerEngine" FullName="Banshee.MediaEngine.PlayerEngine">
  <TypeSignature Language="C#" Value="public abstract class PlayerEngine" />
  <AssemblyInfo>
    <AssemblyName>Banshee.Base</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces />
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected PlayerEngine ();" />
      <MemberType>Constructor</MemberType>
      <Parameters />
      <Docs>
        <summary>Protected constructor.</summary>
        <remarks>The engine implementation should provide its own default public constructor. If it cannot recover in a working state from any error in initialization, it should throw or propagate any exception for <see cref="T:Banshee.Base.PlayerEngineCore" /> to handle.</remarks>
      </Docs>
    </Member>
    <Member MemberName="StateChanged">
      <MemberSignature Language="C#" Value="public event Banshee.MediaEngine.PlayerEngineStateHandler StateChanged;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.MediaEngine.PlayerEngineStateHandler</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="EventChanged">
      <MemberSignature Language="C#" Value="public event Banshee.MediaEngine.PlayerEngineEventHandler EventChanged;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.MediaEngine.PlayerEngineEventHandler</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OpenUri">
      <MemberSignature Language="C#" Value="protected abstract void OpenUri (Banshee.Base.SafeUri uri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="uri" Type="Banshee.Base.SafeUri" />
      </Parameters>
      <Docs>
        <param name="uri">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Reset">
      <MemberSignature Language="C#" Value="public void Reset ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Close">
      <MemberSignature Language="C#" Value="public virtual void Close ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="public virtual void Dispose ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Open">
      <MemberSignature Language="C#" Value="public void Open (Banshee.Base.TrackInfo track);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="track" Type="Banshee.Base.TrackInfo" />
      </Parameters>
      <Docs>
        <param name="track">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Open">
      <MemberSignature Language="C#" Value="public void Open (Banshee.Base.SafeUri uri);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="uri" Type="Banshee.Base.SafeUri" />
      </Parameters>
      <Docs>
        <param name="uri">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Play">
      <MemberSignature Language="C#" Value="public virtual void Play ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Pause">
      <MemberSignature Language="C#" Value="public virtual void Pause ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetBaseElements">
      <MemberSignature Language="C#" Value="public virtual IntPtr[] GetBaseElements ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.IntPtr[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnStateChanged">
      <MemberSignature Language="C#" Value="protected virtual void OnStateChanged (Banshee.MediaEngine.PlayerEngineState state);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="state" Type="Banshee.MediaEngine.PlayerEngineState" />
      </Parameters>
      <Docs>
        <param name="state">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnEventChanged">
      <MemberSignature Language="C#" Value="protected void OnEventChanged (Banshee.MediaEngine.PlayerEngineEvent evnt);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="evnt" Type="Banshee.MediaEngine.PlayerEngineEvent" />
      </Parameters>
      <Docs>
        <param name="evnt">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnEventChanged">
      <MemberSignature Language="C#" Value="protected void OnEventChanged (Banshee.MediaEngine.PlayerEngineEvent evnt, string message);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="evnt" Type="Banshee.MediaEngine.PlayerEngineEvent" />
        <Parameter Name="message" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="evnt">To be added.</param>
        <param name="message">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnEventChanged">
      <MemberSignature Language="C#" Value="protected virtual void OnEventChanged (Banshee.MediaEngine.PlayerEngineEvent evnt, string message, double bufferingPercent);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="evnt" Type="Banshee.MediaEngine.PlayerEngineEvent" />
        <Parameter Name="message" Type="System.String" />
        <Parameter Name="bufferingPercent" Type="System.Double" />
      </Parameters>
      <Docs>
        <param name="evnt">To be added.</param>
        <param name="message">To be added.</param>
        <param name="bufferingPercent">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnTagFound">
      <MemberSignature Language="C#" Value="protected void OnTagFound (Banshee.Base.StreamTag tag);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="tag" Type="Banshee.Base.StreamTag" />
      </Parameters>
      <Docs>
        <param name="tag">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CurrentTrack">
      <MemberSignature Language="C#" Value="public Banshee.Base.TrackInfo CurrentTrack { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.Base.TrackInfo</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The track that the engine is currently playing or has loaded.</summary>
        <value>A TrackInfo object representing the currently loaded track.</value>
        <remarks>An interface can use this property to display to the user metadata about the current playing or loaded track.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CurrentUri">
      <MemberSignature Language="C#" Value="public Banshee.Base.SafeUri CurrentUri { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.Base.SafeUri</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CurrentState">
      <MemberSignature Language="C#" Value="public Banshee.MediaEngine.PlayerEngineState CurrentState { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.MediaEngine.PlayerEngineState</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets the current state of the engine.</summary>
        <value>A PlayerEngineState type depicting the current state of the engine.</value>
        <remarks>An interface element, such as a play/pause button, should check this property to reflect the engine state in a UI.</remarks>
      </Docs>
    </Member>
    <Member MemberName="LastState">
      <MemberSignature Language="C#" Value="public Banshee.MediaEngine.PlayerEngineState LastState { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Banshee.MediaEngine.PlayerEngineState</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Volume">
      <MemberSignature Language="C#" Value="public abstract ushort Volume { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt16</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="CanSeek">
      <MemberSignature Language="C#" Value="public virtual bool CanSeek { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Whether or not the playing stream is seekable.</summary>
        <value>If seeking is possible in the stream, return value will be true; false if the stream does not support seeking.</value>
        <remarks>An interface element, such as a range slider, should check this value to determine its sensitivity.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Position">
      <MemberSignature Language="C#" Value="public abstract uint Position { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Length">
      <MemberSignature Language="C#" Value="public abstract uint Length { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SourceCapabilities">
      <MemberSignature Language="C#" Value="public abstract System.Collections.IEnumerable SourceCapabilities { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Collections.IEnumerable</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="ExplicitDecoderCapabilities">
      <MemberSignature Language="C#" Value="public abstract System.Collections.IEnumerable ExplicitDecoderCapabilities { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Collections.IEnumerable</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Id">
      <MemberSignature Language="C#" Value="public abstract string Id { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Name">
      <MemberSignature Language="C#" Value="public abstract string Name { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
  <Docs>
    <summary>Abstract class implemented by media engine playback plugins.</summary>
    <remarks>
      <para>PlayerEngine is an abstract class that engine backends can implement. It provides access to common features of a player backend, such as playback control and stream information. </para>
      <para>Because Banshee supports multiple engines that can be switched between dynamically, in most situations you want to access common features of PlayerEngine through the global static class, <see cref="T:Banshee.Base.PlayerEngineCore" />.</para>
      <para>PlayerEngineCore handles the runtime loading, initialization, and dynamic engine switching of implemented and available engines.</para>
    </remarks>
  </Docs>
</Type>