Как я могу определить, когда Directshow.net преобразование выполнено?

#c# #directshow #directshow.net

#c# #directshow #directshow.net

Вопрос:

прямо сейчас у меня есть Directshow.net graph, который принимает видеофайл и кодирует его в файл, однако он просто продолжает выполняться

 int x = program.Run() 
  

в DirectShow.net и я хочу, чтобы программа закрывалась, когда будет выполнено полное преобразование, вместо того, чтобы мне приходилось угадывать.

как я могу определить, выполнено ли его кодирование программно?

Комментарии:

1. Если у вас есть переменная mediaEvent, вы можете проверить функцию waitForCompletion, чтобы увидеть, завершен ли запуск кода. если результат waitforcompletion (в данном случае gh) не равен 0, оно выполняется, если оно равно 0, то оно выполнено. const int E_Abort = непроверенный((int)0x80004004); EventCode evCode; int gh = mediaEvent. waitForCompletion(1000, out evCode); DsROTEntry rot = новый DsROTEntry (фильтр); в то время как (gh == E_Abort) { Система. Windows. Формы. Приложение. DoEvents(); gh = this.mediaEvent. waitForCompletion(1000, out evCode); }

Ответ №1:

Если у вас есть переменная mediaEvent, вы можете проверить функцию waitForCompletion, чтобы увидеть, завершен ли запуск кода. если результат waitforcompletion (в данном случае gh) не равен 0, оно выполняется, если оно равно 0, то оно выполнено.

 const int E_Abort = unchecked((int)0x80004004); 
EventCode evCode; 
int gh = mediaEvent.WaitForCompletion(1000, out evCode); 
DsROTEntry rot = new DsROTEntry(filter); 
while (gh == E_Abort) 
{ System.Windows.Forms.Application.DoEvents(); 
gh = this.mediaEvent.WaitForCompletion(1000, out evCode); }