Witam. Używam DSPack do obsługi karty telewizyjnej. Mam taki kod:

  public
    procedure OnSelectDevice(sender: TObject);

  //...

var
  VideoForm: TVideoForm;
  SysDev: TSysDevEnum;

  //...

procedure TVideoForm.FormCreate(Sender: TObject);
var
  i: integer;
  Device: TMenuItem;
begin
  SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
  if SysDev.CountFilters > 0 then
    for i := 0 to SysDev.CountFilters - 1 do
    begin
      Device := TMenuItem.Create(Devices);
      Device.Caption := SysDev.Filters[i].FriendlyName;
      Device.Tag := i;
      Device.OnClick := OnSelectDevice;
      Devices.Add(Device);
    end;
    OnSelectDevice(Device);
end;

procedure TVideoForm.OnSelectDevice(sender: TObject);
begin
  FilterGraph.ClearGraph;
  FilterGraph.Active := false;
  Filter.BaseFilter.Moniker := SysDev.GetMoniker(TMenuItem(Sender).tag);
  FilterGraph.Active := true;
  with FilterGraph as ICaptureGraphBuilder2 do
    RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter, SampleGrabber as IBaseFilter, VideoWindow as IbaseFilter);
  FilterGraph.Play;
end;

I działa dobrze, ale mam jeszcze 2 pytania:
1.Jak wybrać źródło z jakiego ma być pobierany obraz i dźwięk? Moja karta dla przykładu ma:

  • Telewizję
  • Compsite In
  • SVideo In
    I obsługuje jeszcze radio. Jak wybrać lub zmienić w czasie odtwarzania źródło?

2.Jak programowo zmienić kanał stacji?