Я работаю над приложением, и у меня есть проблема я просто, наклон, кажется, находит решение для. Приложение записано в vc ++. То, что я должен сделать, отобразить видео канал YUV с текстом сверху его.
Прямо сейчас это работает правильно путем рисования текста в методе OnPaint с помощью GDI и видео на наложении DirectDraw. Я должен избавиться от наложения, потому что оно вызывает ко многим проблемам. Это работа привычки над некоторыми видеокартами, перспективой, 7, и т.д.
Я не могу выяснить способ завершить то же самое более совместимым способом. Я могу потянуть видео с помощью DirectDraw с задним буфером и скопировать его в основной буфер очень хорошо. Проблема здесь - то, что текст, оттягиваемый во вспышках GDI из-за суммы времен видео, обновляется. Я действительно хотел бы сохранить код для рисования текста, неповрежденного, если это возможно, так как он работает хорошо.
Существует ли способ нарисовать текст непосредственно к DirectDraw буферный или буфер памяти или что-то и затем с беконом, салатом и помидорами это к заднему буферу? Я должен смотреть на другой метод все вместе? Двумя важными ОС является XP и 7. Если у кого-либо есть какие-либо идеи, просто сообщенные мне, и я проверю их.Спасибо.
Попробуйте изучить DirectShow и образец тикера на microsoft.com:
В этом примере используется средство визуализации микширования видео для смешивания видео и текста. Он использует интерфейс IVMRMixerBitmap9 для наложения текста на нижнюю часть видеоокна.
DirectShow предназначен для построения графиков фильтров для воспроизведения аудио- или видеопотоков, а также для добавления различных фильтров для различных эффектов и манипуляции с видео- и аудиосэмплами.
Вместо использования средства визуализации микширования видео DirectShow можно также использовать интерфейс ISampleGrabber . Преимущество заключается в том, что это фильтр, который можно использовать и с другими модулями визуализации, например, когда видео не отображается на экране, а выполняется потоковая передача по сети или выгрузка в файл.