簡體   English   中英

帶有 GMF GDCL MPEG 4 Mux 濾波器的 GMFBridge

[英]GMFBridge with GMF GDCL MPEG 4 Mux Filter

我嘗試將 GDCL MPEG 4 Mux 與 GMFBridge 一起使用。

我的原始圖表是:

SourceFilter ---> GDCL MPEG 4 Mux Filter ---> FileWriter

我想根據我的特殊標准(例如時間,例如每五分鍾)提供新文件名,但不想再次創建整個圖表。 所以我嘗試使用 GMFBridge。

我不工作。 我真的不知道如何使用 GMFBridge 或者它不起作用。

注意:這是我對 GMFBridge 所做的

為了使用,我將我的圖表分為兩部分:

FirstPart ==>  SourceFilter---> GDCL MPEG 4 Mux Filter--> BridgeSinkFilter

SecondPart ==> BridgeSourceFilter ---> FileWriter 

我的程序偽代碼

IGraphBuilder firstPartGraph = (IGraphBuilder) new FilterGraph();
IGraphBuilder secondPartGraph =  (IGraphBuilder) new FilterGraph();

IBaseFilter   bridgeSinkFilter;
IBaseFilter   bridgeSourceFilter;

IBaseFilter   sourceFilter;
IBaseFilter   muxerFilter;
IBaseFilter   fileWriterFilter;


// Create bridge controller  and init
IGMFBridgeController bridge = (IGMFBridgeController)new GMFBridgeController();

bridge.AddStream(true,eFormatType.MuxInputs, true);

// Then insert Sink filter

bridge.InsertSinkFilter(firstPartGraph, bridgeSinkFilter);

// Configure first part filters


firstPartGraph.AddFilter(sourceFilter);
firstPartGraph.AddFilter(muxerFilter);
firstPartGraph.AddFilter(bridgeSinkFilter); // Have to add this??

ConnectFilters(firstPartGraph,sourceFilter,muxerFilter);
ConnectFilters(firstPartGraph,muxerFilter,bridgeSinkFilter);


// Now add bridge sourceFilter

bridge.InsertSourceFilter(bridgeSinkFilter,secondPartGraph,bridgeSourceFilter);

 // Then configure second part graph


secondPartGraph.AddFilter(bridgeSourceFilter); // Have to add this??
secondPartGraph.AddFilter(fileWriterFilter);

ConnectFilters(secondPartGraph,bridgeSourceFilter,fileWriterFilter);


 // Now bridge two graphs

 bridge.BridgeGraphs(bridgeSinkFilter,fileWriterFilter,bridgeSourceFilter);


// Execute both graphs

 IMediaControl mediaControlForPartOne = (IMediaControl)firstPartGraph;
 mediaControlForPartOne->Run(); 

 IMediaControl mediaControlForPartSecond = (IMediaControl)secondPartGraph;
 mediaControlForPartSecond->Run();

現在如何停止第二個圖形部分並設置新文件名,然后使用橋重新連接圖形?

修理它:

謝謝。

我只是改變了我的 grapg divison,現在開始工作:

  FirstPart ==>  SourceFilter--> BridgeSinkFilter
  SecondPart ==> BridgeSourceFilter ---> GDCL MPEG 4 Mux Filter---> FileWriter 

您需要將多路復用器和文件編寫器放在第二個圖中。 有兩個原因。 首先,多路復用器和文件寫入器之間的流量包括自定義接口,而不僅僅是標准的 IMemInputPin 協議(允許在圖形停止后最終確定標題),其次,它是您想要停止以關閉文件的多路復用器,而不是文件編寫器。

所以,第一個圖中的 source 和第二個圖中的 mux=>file writer 應該沒問題。

G

如果您的兩個圖表都工作,並且在第二個圖表中得到正確的 output; 您可以斷開圖表:

BridgeGraphs(NULL, NULL);

現在您可以停止第二個圖形,將其刪除並創建一個新圖形。 啟動新圖表,並再次連接它們:

BridgeGraphs(bridgeSinkFilter, newBridgeSourceFilter);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM