Поиск ключевых кадров с помощью IMediaSample DirectShow.Net - PullRequest
0 голосов
/ 24 января 2011

Насколько я знаю, чтобы проверить, является ли кадр ключевым, или нет, я должен проверить метод IMediaSample :: IsSyncPoint (), который возвращает 0 (S_OK), если кадр является ключевым, false в другом случае.

Но метод IsSyncPoint () просто возвращает 0 в каждом кадре, который захватывается и передается методу обратного вызова ISampleGrabberCB :: SampleCB ().

Код, который включает в себя мой обратный вызов, прост:

  public int SampleCB ( double sampleTime, IMediaSample mediaSample )
  {
   Console.WriteLine ( "SampleCB Callback" );
   Console.WriteLine ( mediaSample.IsSyncPoint ( ) + " " );

   Marshal.ReleaseComObject ( mediaSample );
   return 0;
  }

Что мне здесь не хватает?

1 Ответ

1 голос
/ 30 января 2011

Какой у вас тип медиа? Если образец захвата получает несжатые видеокадры, то каждый кадр является точкой синхронизации.

...