Сегодня долго пытался разобраться в том, как в Sony Vegas, Sony Vegas Movie Studio плагине поддержать float версию. Ничего, абсолютно ничего об этом нет в их SDK. Поиски в интернете и на сайте Sony тоже ничего не дали. Неужели такой гигант как Sony Vegas не поддерживает 32 бит? А может всё гораздо проще? Может они не дают 32 бит изображения API для плагинов от третих лиц. Не знаю.
Но интересен один момент, в файле SFBase.h, который идёт с их SDK, есть комментарий:
"Read and Write pointer classes for ARGB32 and SFARGBFLOAT". Дальше действительно идёт реализация класса CSFARGBReadPtr и CSFARGBReadWritePtr, но нет реализации для float версии. Странно.
Ещё одно упоминание о float есть в файле sfdxext.h, там ожидается GUID SFPF_PMARGBFLOAT, который, как я думаю, указывает на формат данных с приходящего Surface. Т.е. узнать о том, что входящие данные изображения float можно, но получить к ним доступ не получится, так как не описан интерфейс для этого. Всё бы ничего, но при регистрации плагина в памяти никак нельзя явно указать какие форматы пикселей поддерживает плагин, а это значит, что однажды хост может прислать float версию изображения и плагин не сможет его обработать! Хорошо, что хотябы можно узнать что пришёл именно float и отработать ошибку.
Странное дело, их SDK как-будто не закончен, хотя по его версии (1.0b, наверное, 1.0 beta) он скорее всего не закончен. Но когда ждать его доработки? Судя по комментариям в файлах, этот SDK был написан в 2006 году.
Повторив поиски в интернете я наткнулся на один форум (http://www.dvinfo.net/forum/what-happens-vegas/486884-vegas-plugins-not-actually-32bit-colour-wise.html), где один пользователь описал эту проблему. Как он утверждает, после его переписки с технической поддержкой Sony, ему дали ответ примерно следующего характера:
"Вот, что Вам необходимо сделать, чтобы поддержать float версию <...>
Добавьте это....добавьте то.... тут #define, там #define, упомянули о SFPF_PMARGBFLOAT"
И самый важный момент, когда я подумал, что моя проблема решена:
"Если Вы используете CSFARGBReadPtr, float версия прикреплена обновлённым файлом SFBase.h, в который добавлены CSFARGBFloatReadPtr и CSFARGBFloatReadWritePtr".
Сам автор темы никак более не комментирует это сообщение, кроме как "Для тех кому может быть интересно отсутствие 32 бит информации в плагине. Выкладываю это сообщение".
И всё. Сообщение было опубликовано 9 ноября 2010 года. Где же взять обновлённый SFBase.h? Нигде. На сайте Sony я его не нашёл. Более нигде в интернете тоже, также как и какие-либо упоминания связанные с этой проблемой. Единственный файл SFBase.h, который я нашёл в интернете и который отличался от того, что есть у меня, это файл в архиве spde_videopidk.zip (http://www.findthatfile.com/search-9799841-hZIP/winrar-winzip-download-spde_videopidk.zip.htm). Единственное отличие заключается в комментариях в начале файла, где указан не сайт Sony, а сайт www.sonicfoundry.com. Что это за Sonic и почему есть вообще такая версия файла SFBase.h, который был создан в 2000 году.
Вот и всё, что удалось узнать и что нисколько мне не помогло. Float версия пока отменяется.
Но интересен один момент, в файле SFBase.h, который идёт с их SDK, есть комментарий:
"Read and Write pointer classes for ARGB32 and SFARGBFLOAT". Дальше действительно идёт реализация класса CSFARGBReadPtr и CSFARGBReadWritePtr, но нет реализации для float версии. Странно.
Ещё одно упоминание о float есть в файле sfdxext.h, там ожидается GUID SFPF_PMARGBFLOAT, который, как я думаю, указывает на формат данных с приходящего Surface. Т.е. узнать о том, что входящие данные изображения float можно, но получить к ним доступ не получится, так как не описан интерфейс для этого. Всё бы ничего, но при регистрации плагина в памяти никак нельзя явно указать какие форматы пикселей поддерживает плагин, а это значит, что однажды хост может прислать float версию изображения и плагин не сможет его обработать! Хорошо, что хотябы можно узнать что пришёл именно float и отработать ошибку.
Странное дело, их SDK как-будто не закончен, хотя по его версии (1.0b, наверное, 1.0 beta) он скорее всего не закончен. Но когда ждать его доработки? Судя по комментариям в файлах, этот SDK был написан в 2006 году.
Повторив поиски в интернете я наткнулся на один форум (http://www.dvinfo.net/forum/what-happens-vegas/486884-vegas-plugins-not-actually-32bit-colour-wise.html), где один пользователь описал эту проблему. Как он утверждает, после его переписки с технической поддержкой Sony, ему дали ответ примерно следующего характера:
"Вот, что Вам необходимо сделать, чтобы поддержать float версию <...>
Добавьте это....добавьте то.... тут #define, там #define, упомянули о SFPF_PMARGBFLOAT"
И самый важный момент, когда я подумал, что моя проблема решена:
"Если Вы используете CSFARGBReadPtr, float версия прикреплена обновлённым файлом SFBase.h, в который добавлены CSFARGBFloatReadPtr и CSFARGBFloatReadWritePtr".
Сам автор темы никак более не комментирует это сообщение, кроме как "Для тех кому может быть интересно отсутствие 32 бит информации в плагине. Выкладываю это сообщение".
И всё. Сообщение было опубликовано 9 ноября 2010 года. Где же взять обновлённый SFBase.h? Нигде. На сайте Sony я его не нашёл. Более нигде в интернете тоже, также как и какие-либо упоминания связанные с этой проблемой. Единственный файл SFBase.h, который я нашёл в интернете и который отличался от того, что есть у меня, это файл в архиве spde_videopidk.zip (http://www.findthatfile.com/search-9799841-hZIP/winrar-winzip-download-spde_videopidk.zip.htm). Единственное отличие заключается в комментариях в начале файла, где указан не сайт Sony, а сайт www.sonicfoundry.com. Что это за Sonic и почему есть вообще такая версия файла SFBase.h, который был создан в 2000 году.
Вот и всё, что удалось узнать и что нисколько мне не помогло. Float версия пока отменяется.