Показывать видеосигнал в .Net WPF / DirectX - PullRequest
2 голосов
/ 03 декабря 2010

У меня есть видеосигнал, который предоставляет мне буфер с YCbCR-сигналом. Я могу преобразовать его в RGB, выполнив некоторые математические операции, но я не знаю, как показать видео в Net WPF. Я также пытался использовать SlimDX и визуализировать поток в спрайте, но это только идея, и я также не знаю, как начать.

Спасибо за помощь, Meldur

1 Ответ

1 голос
/ 14 декабря 2010

Если вы можете конвертировать его в RGB, у вас есть Bitmap в ваших руках. Вы можете заблокировать растровое изображение и установить его данные. При создании нового растрового изображения вы можете установить формат пикселей (24 бит / с, 32 бит / с), поэтому создание растрового изображения из видеокадра не должно быть проблемой.

Каждый раз, когда вы получаете новый кадр, все, что вам нужно, это обновить текстуру в DirectX. Текстуры в DirectX имеют различные форматы, и некоторые из них совместимы с растровыми форматами, вы даже можете создавать новые текстуры с помощью растровых изображений.

Сначала найдите несколько примеров того, как визуализировать текстуру в DirectX (SlimDX, ManagedDirectX ...), затем обновляйте текстуру каждый раз, когда появляется новый кадр. Если вы не хотите беспокоиться о блокировке и обновлении текстуры, вы можете создать новую Текстура каждый раз, когда приходит новый кадр, используя этот конструктор

public Texture(Device, Bitmap, Usage, Pool); 

Даже если вы не хотите беспокоиться о DirectX, вы можете выполнить рендеринг непосредственно в Canvas в WPF

class MyCanvas : Canvas {
protected override void OnRender (DrawingContext dc) {
      BitmapImage img = ...;
      dc.DrawImage (img, new Rect (0, 0, img.PixelWidth, img.PixelHeight));
   }
}

Чтобы получить BitmapImage из Bitmap, смотрите здесь текст ссылки

...