SiberianGuy
SiberianGuy

Reputation: 25312

DsPack Stop Position

I need to play some video via DsPack from StartPosition to EndPosition. I have written a simple piece of code that allows to specify StartPosition:

  FilterGraph1.Active := true;
  VideoWindow1.FilterGraph:= FilterGraph1;
  FilterGraph1.RenderFile('C:\Users\idsa\Documents\ENGLISH_2\ENGLISH_2\0001\0.avi');
  FilterGraph1.Position := 10000;
  FilterGraph1.Play;

But how can I specify StopPosition?

Upvotes: 0

Views: 611

Answers (2)

Igor
Igor

Reputation: 1

Thank your ! I can make loop on DSP !!!

    procedure TForm1.FilterGraphLGraphComplete(Sender: TObject;
  Result: HRESULT; Renderer: IBaseFilter);

var
  MediaSeeking: DirectShow9.IMediaSeeking;
  Start: Int64;
  Stop: Int64;
begin
  FilterGraphL.QueryInterface(IMediaSeeking, MediaSeeking);

  Start := 0;
  Stop := 10 * 10000000;

  MediaSeeking.SetPositions(Start, AM_SEEKING_AbsolutePositioning, Stop, AM_SEEKING_NoPositioning);

Upvotes: 0

SiberianGuy
SiberianGuy

Reputation: 25312

Thanks FreeConsulting for a hint. Here is the final code.

uses DirectShow9;

...

procedure TForm1.FormShow(Sender: TObject);
var
  MediaSeeking: IMediaSeeking;
  Start: Int64;
  Stop: Int64;
begin
  FilterGraph1.Active := true;
  VideoWindow1.FilterGraph:= FilterGraph1;
  FilterGraph1.RenderFile('fileName');
  FilterGraph1.QueryInterface(IMediaSeeking, MediaSeeking);

  Start := 0;
  Stop := 10 * 10000000;

  MediaSeeking.SetPositions(Start, AM_SEEKING_AbsolutePositioning, Stop, AM_SEEKING_AbsolutePositioning);

  FilterGraph1.Play;
end;

Upvotes: 1

Related Questions