1

Delphi XE と DSPack 2.3.3 を使用しています。Webcam キャプチャを使用してデスクトップ アプリケーションを維持しています。ユーザーは、訪問者やドキュメントの写真をキャプチャできます。すべてが正常に機能しています。最大の顧客の 1 人が Citrix 7.13 に移行しており、Web カメラがフリーズしています。

彼らのサポートは Citrix に連絡しました。Citrix エンジニアリングは、アプリケーションが IMediaFilter::SetSyncSource メソッドを呼び出して、Web カメラのキャプチャに関するコード内のフィルター グラフに「参照クロック」を明示的に設定しているかどうかを知りたがっています。私はいくつかのテストを行いましたが、実際にはレンダリングが開始されたときに呼び出しがあります。DSPack デモ「VideoCap」を実行すると、呼び出しが表示されます。

  // now render streams
  with CaptureGraph as IcaptureGraphBuilder2 do
  begin
    // set the output filename
    SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(CapFile), multiplexer, Writer);

    // Connect Video preview (VideoWindow)
    if VideoSourceFilter.BaseFilter.DataLength > 0 then
      RenderStream(@PIN_CATEGORY_PREVIEW, nil, VideoSourceFilter as IBaseFilter,
        nil , VideoWindow as IBaseFilter);

    // Connect Video capture streams
    if VideoSourceFilter.FilterGraph <> nil then
      RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,
        nil, multiplexer as IBaseFilter);

    // Connect Audio capture streams
    if AudioSourceFilter.FilterGraph <> nil then
    begin

      RenderStream(nil, nil, AudioSourceFilter as IBaseFilter,
        nil, multiplexer as IBaseFilter);
    end;
  end;
  CaptureGraph.Play; 

DSpack ソース コメントによると:

{ The reference clock has changed. The filter graph manager sends this event
  when its IMediaFilter.SetSyncSource method is called.}
property OnGraphClockChanged: TNotifyEvent read FOnGraphClockChanged write FOnGraphClockChanged;

実際、OnGraphClockChanged は CaptureGraph.Play が呼び出された後に発生します。

SetSyncSource の呼び出しを避けることは可能ですか? これがこの問題を解決するかどうか知っていますか?

ティア、クレマン

4

1 に答える 1