Цитата: так понимаю у меня проблема в том же русле:
нужно на каждом кадре видеопотока (камера\файл) отрисовывать своё изображение.
на камере ещё что-то можно, но вот с видео файлом вообще тяжко.
одного кросплатформенного решения может и вовсе нет.
пока что под винду делаю отдельный модуль через директ как давно знаю,
а вот для андроида может кто реализовывал рендеринг для видеофайлов?
так как вообще опыта нет тут..
С этим вообще геморрой тот еще... Если нужно кроссплатформенное решение, то надо смотреть в сторону ffmpeg, НО аппаратный декодер для каждой платформы должен будет иметь свою реализацию и ковырять придется уже сам ffmpeg. Можно оставить софтовый декодер получать YUV кадр, не конвертированный в RGB (если конвертировать, то будет дикая просадка по процессору) и рендерить этот кадр шейдерами. Шейдеры впринципе все можно найти в инете, но надо вникнуть в суть как устроены YUV форматы.
если кадр необходимо еще хоть как-то обрабатывать искажать или преобразовывать то
(если для винды) о есть несколько путей:
1) софтовый декодер + аппаратный рендер (кадр из памяти перекидывать в текстуру в видеопамять и работать дальше уже с ним, перекидывание занимает время, терпимо, больше жрет декодер все равно), рендерить шейдерами.
2) nvcuvid декодер (только для карт nvidia 2-3 последних поколений), кадр декодируется целиком кудой во vram и дальше работа идет с ним именно во vram, ничего никуда кидать не надо. по времени отлично. Есть значительные ограничения.
3) для винды DXVA2-copyback режим (смотреть в lav-filters и lav-ffmpeg. Кадр декодируется аппаратным декодером видеокарты на DX поверхность, далее используется opengl interop расширение для переброски из DX в OpenGL текстуру.
Впринципе первый пункт работает для всех платформ.
зы я еще раз повторю - это все если надо производить над каждым кадром какие-то изменения. Если просто показать, то думаю тут полегче все, но опять же реализация под каждую платформу будет своя. С битмапами даже не думайте работать, не хватит процессора.
зыы еще забыл сказать что FMX очень плохо дружит с GL, не смотря на то что хедеры OpenGL.pas и OpenGLext.pas вылизаны до блеска, например нельзя выводить контекст GL в TPanel как в vcl, напрмер, т.к. HWND есть только у FMX окна, но не его компонентов. Как с DX - не знаю, скорее всего тоже плохо.
зыы ну и еще раз повторюсь, я не понимаю для чего и для кого писалась FMX... я еще понимаю если бы она на всех платформах использовала GL с низкоуровневым доступом. А так это заранее ущербная штука, нужная лишь для того чтобы выводить контролы. Все сейчас стремятся ближе к железу а эмбаркадеро, наоборот как можно дальше от него и добавляя новые тормоза, при этом начисто отрубая все плюсы конкретной платформы, что GL, что DX...