Трудно поместить это в заголовок, поэтому позвольте мне объяснить.
У меня есть приложение, которое использует Direct3D для отображения некоторого меша и DirectShow (vmr9 + allocator) для воспроизведения некоторого видео, а затем отправляет видеокадр в качестве текстуры в часть Direct3D для применения к мешу. Приложение должно работать 24/7. По крайней мере, его можно перезапускать каждые 24 часа, но не чаще, чем это.
Теперь проблема в том, что DirectShow, похоже, дает проблемы после нескольких часов воспроизведения, либо из-за кодека, видео драйвера или самого видеофайла. В этот момент приложение просто перестает воспроизводить видео. Но часть Direct3D все еще работает нормально, сетка все еще отображается. После перезапуска приложения все возвращается на круги своя.
Итак, я думаю о том, чтобы разделить 2 части на 2 разных процесса. Так что, когда процесс видео не проигрывал видео, я мог, по крайней мере, немедленно его перезапустить, не теряя часть Direct3D.
Таким образом, здесь возникает реальный вопрос, возможно ли передать текстуру из видеопроигрывателя процессу Direct3D, передав указатель, или получить текстуру другого процесса из указателя? Мое первоначальное предположение невозможно из-за защищенной адресации памяти.
У меня есть настройка связи TCP для обоих процессов, и давайте не будем беспокоиться о связи указателя на этом этапе.
Это может быть сумасшедшая идея, но она будет удивительна, когда это возможно