public virtual PlaySeeking CheckSeekingCapabilities(
PlaySeeking mask
)
mask
A combination of one or more PlaySeeking enumeration values to test.
A combination of PlaySeeking values.
Declare a long value equal to the bitwise-OR combination of the PlaySeeking enumeration values to be tested and pass this value in the mask parameter. The return value indicates which of the requested capabilities are available.
using Leadtools;
using Leadtools.MediaFoundation;
using LeadtoolsMediaFoundationExamples.Fixtures;
public bool _result = false;
public PlayCtrlForm _form = new PlayCtrlForm();
public PlayCtrl _playctrl;
public PlaySeeking _seekingCaps;
public TimeSpan _start = TimeSpan.Zero;
public void HasDialogExample()
{
// reference the play control
_playctrl = _form.PlayCtrl;
// input file for playback
string inFile = Path.Combine(LEAD_VARS.MediaDir, "PlayCtrl_Source.avi");
try
{
// turn off autostart and auto rewind
_playctrl.AutoStart = false;
_playctrl.AutoRewind = false;
// set the source file
_playctrl.SourceFile = inFile;
// show some media info if available
ShowMediaInfo();
// the HasDialog method tells us that the control
// can display the desired settings dialog.
// check to see if the selected video processor properties dialog is available
if (_playctrl.HasDialog(PlayDlg.SelVideoProcessor))
{
// now show it to change some settings
_playctrl.ShowDialog(PlayDlg.SelVideoProcessor, _form);
_result = true;
}
// get the source object type
SourceObjectType sot = _playctrl.SourceType;
// check some audio properties
bool mute = _playctrl.Mute;
int bal = _playctrl.Balance;
int vol = _playctrl.Volume;
// seeking caps - you can use these to enable menu states or toolbar buttons
_seekingCaps = _playctrl.CheckSeekingCapabilities(PlaySeeking.Forward | PlaySeeking.Backward);
// subscribe to the key press event to demo play functions
_playctrl.KeyPress += new Leadtools.MediaFoundation.KeyPressEventHandler(PlayCtrl_KeyPress);
// start the capture process
_playctrl.Run();
// we'll loop on the state and pump messages for this example.
// but you should not need to if running from a Windows Forms application.
while (_playctrl.State == PlayState.Running
|| _playctrl.State == PlayState.Paused
|| _playctrl.State == PlayState.NotReady)
Application.DoEvents();
// call reset source here to release resources
// but not necessary if we are just exiting
_playctrl.ResetSource();
}
catch (Exception)
{
_result = false;
}
}
// state variables for helper timer states
public bool _markedSelStart = false;
public bool _markedSelEnd = false;
public bool _seekedSelStart = false;
public bool _seekedSelEnd = false;
// key press event handler to manage playback functions
void PlayCtrl_KeyPress(object sender, Leadtools.MediaFoundation.KeyPressEventArgs e)
{
char key = (char)e.keyAscii;
switch (key)
{
case 'b':
if (!_markedSelStart)
{
_markedSelStart = true;
_playctrl.MarkSelectionStart();
System.Diagnostics.Debug.WriteLine("Mark Selection Start: " + _playctrl.SelectionStart.ToString() + " secs");
System.Diagnostics.Debug.WriteLine(" ... playctrl.State: " + _playctrl.State.ToString());
}
break;
case 'e':
if (!_markedSelEnd)
{
_markedSelEnd = true;
_playctrl.Pause();
_playctrl.MarkSelectionEnd();
System.Diagnostics.Debug.WriteLine("Mark Selection End: "
+ _playctrl.SelectionEnd.ToString()
+ " secs");
System.Diagnostics.Debug.WriteLine(" ... playctrl.State: "
+ _playctrl.State.ToString());
_playctrl.SeekSelectionStart();
_playctrl.Run();
}
break;
case 's':
if (!_seekedSelStart)
{
_seekedSelStart = true;
System.Diagnostics.Debug.WriteLine("Seek To Selection Start: "
+ _playctrl.SelectionStart.ToString()
+ " secs");
System.Diagnostics.Debug.WriteLine(" ... playctrl.State: "
+ _playctrl.State.ToString());
_playctrl.SeekSelectionStart();
}
break;
case 'f':
// toggle full screen
_playctrl.ToggleFullScreenMode();
break;
case '+':
if (_playctrl.State == PlayState.Running)
_playctrl.Pause();
_playctrl.NextFrame();
break;
case '-':
if (_playctrl.State == PlayState.Running)
_playctrl.Pause();
_playctrl.PreviousFrame();
break;
case 'z':
if (!_seekedSelEnd)
{
// turn off full screen mode
_playctrl.FullScreenMode = false;
_seekedSelEnd = true;
System.Diagnostics.Debug.WriteLine("Seek To Selection End: "
+ _playctrl.SelectionEnd.ToString()
+ " secs");
System.Diagnostics.Debug.WriteLine(" ... playctrl.State: "
+ _playctrl.State.ToString());
_playctrl.SeekSelectionEnd();
}
break;
case 'x':
_playctrl.Stop();
break;
}
}
private void ShowMediaInfo()
{
double d = 0;
string sa, scr, sd, sr, st;
sa = scr = sd = sr = st = "Unavailable";
try
{
d = _playctrl.FrameDuration;
sa = _playctrl.Author;
scr = _playctrl.Copyright;
sd = _playctrl.Description;
sr = _playctrl.Rating;
st = _playctrl.Title;
}
catch (Exception)
{
}
MessageBox.Show(_form, string.Format("Duration: {0}\nAuthor: {1}\nCopyright: {2}\nDesc: {3}\nRating: {4}\nTitle: {5}\n",
d, sa, scr, sd, sr, st), "Media Info");
}
void SelectedOptions()
{
_playctrl.SeekStart();
_playctrl.SeekEnd();
int te = _playctrl.TrackingSelectionEnd;
int ts = _playctrl.TrackingSelectionStart;
double se = _playctrl.SelectionEnd;
double ss = _playctrl.SelectionStart;
}
static class LEAD_VARS
{
public const string MediaDir = @"C:\LEADTOOLS22\Media";
}