четверг, 16 февраля 2012 г.

Float в Vegas PIDK?

Сегодня долго пытался разобраться в том, как в 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 версия пока отменяется.

четверг, 9 февраля 2012 г.

Итоги на 9.02.2012

Подведу итоги своей разработки на данный момент. Что я имею на данном этапе.
Конечная цель моего первого продукта:

  • Плагины для Adobe Photoshop, Adobe Premiere, Adobe After Effects, Sony Vegas Pro, Sony Vegas Movie Studio
  • 5 эффектов
  • Поддерживаемое цветовое пространство RGB
  • Поддерживая глубина цвета 8, 16, 32 бит
  • Установщик
  • Простая реализация активации продукта
  • Сайт
На данный момент я решил для первого продукта поддерживать только RGB цветовое пространство, со всех остальных поддержать конвертацию в RGB и обратно после обработки. На данный момент не выгодно тратить время на поддержание YUV, HSV, LAB, CMYK. Тем более, что последний вообще не особо целесообразно поддерживать так как оно предназначено в основном для типографии. В Photoshop'е я вообще решил пока поддерживать только RGB. 
Итак по первому пункту.
Из 5 плагинов ситуация следующая (здесь я рассчитываю процесс готовности, учитывая, что ещё не проводилось полное тестирование и оптимизация):
  • В Photoshop реализована обработка 8,16 бит, окно параметров (или окно Preview) с масштабированием изображения для Preview, нестандартный пользовательский интерфейс, сохранение параметров в реестре Photoshop'а и при записи в макрос. Photoshop плагин готов на 70%, учитывая то, что ещё не проводилось полное тестирование на различных вариантах win32 ОС и документации.
  • Для Premiere и After Effects реализована поддержка 8,16 и 32 бит. Цветовое пространство - RGB. Правда с 16 бит возникли некоторые проблемы. По каким-то причинам из 16 приходящих моему плагину бит, для некоторых изображений, информация только в 14 битах, а не в 15, как сообщалось в документации и на форуме поддержки. И я даже не нашёл способ узнать о том, сколько бит используется для представления реально в этом режиме. Проблема ещё и в том, что, присылая мне 16 бит с 14 битами информации, на выходе от моего плагина ожидается уже 15 бит информации в 16. В интернете решение этой проблемы я не нашёл. Похоже это проблема, которую только я ещё не понял как решить. Ещё в зависимости от оставшегося времени хочется поддержать нестандартный интерфейс в этом плагине. Таким образом можно сказать, что плагин для этих хостов готов на 70%
  • Sony Vegas Pro и Sony Vegas Movie Studio. Поддержано окно параметров с нестандартным интерфейсом. Плагин для этих хостов писать мне понравилось больше всего. Плагины для Sony Vegas Pro и Sony Vegas Movie Studio это, по сути, обычные Direct Show фильтры. Не то, чтобы я разбирался в Direct Show, просто они используют стандартные методы и я имею расширенные возможности и необходимое количество документации. Это ускоряет процесс разработки. Несмотря на то, что я ещё не добрался до рендеринга, я уверен, что эта реализация не займёт много времени. Готов на 40%.
Общая готовность плагинов - 60%

По второму пункту.
  • Первый эффект (Color Temperature). Основной алгоритм готов полностью, необходимо исправить только один недочёт. 90% для основного алгоритма. Цветовые пространства -RGB, LAB. Необходим только RGB сейчас, поэтому - твёрдые 100% . Глубина цвета 8,16 бит. 66% по этому пункту. Общее: 85%
  • Второй эффект (Vintage Simple). Основной алгоритм готов полностью, но хочется кое-что добавить в функциональность. 80% считаю справедливым. Цветовые пространства RGB. 100%. Глубина цвета 8бит - 33%. Итого: 71%
  • Третий эффект (Dream Glow). Основной алгоритм готов полностью, но есть что добавить. Добавлю я это или нет зависит от времени. 90%. Цветовые пространства RGB (100%), а глубина 8 бит, 33%. Для этого эффекта - 74%
  • Четвёртый эффект (Color Game). Основной алгоритм нуждается в расширении функциональности и исправлении ошибок в некоторых моментах. Думаю это не займёт много времени. 60%. Цветовое пространство - 100%, Глубина цвета 8 бит, 33%. Итог - 64%
  • Пятый эффект (Без названия). Самый сложный на данный момент эффект. На него вся надежда первого продукта, в тоже время он же и тянет меня вниз. Основной алгоритм готов процентов на 40. Цветовые пространства и глубина 100% и 33% соответственно. Общая готовность - 57%
Общая готовность эффектов - 70%

Третий и четвёртый пункт понятны.
Пятый и шестой ещё рано.
Седьмой в самом конце.
По итогам первых пунктов. Моя общая готовность - 65%. Остальные пункты особо в расчёт не беру, так как на их решение уйдёт немного времени.

Ну, цифры говорят мне о том, что срок 1 марта взят очень жёстко, даже жестоко, но будем стараться в него уложиться. Вообще, ещё на последней работе я очень не любил жёсткие рамки в сроках. Это ухудшает конечное качество продуктов, сказывается спешка. Но мне необходимо поторопиться сейчас, так как разработка уже слишком затянулась. Поэтому хотелось бы через 20 дней всё-же осуществить релиз.

Зачем блог?


Чем я занимаюсь?
Я разрабатываю фото/видео плагины для NLE программ. В частности для Adobe Photoshop, Adobe Premiere, Adobe After Effects, Sony Vegas Pro, Sony Vegas Movie Studio.
Как, наверное, и многих начинающих независимых разработчиков, меня постигают сомнения по поводу успешности данного предприятия. Чем дальше я углубляюсь в разработку и чем ближе я к первому релизу, тем больше у меня сомнений. Последнее время я часто ищу утешение в историях или блогах других шароварщиков. Некоторые блоги действительно придают уверенности в себе, другие наоборот. Сделать конкретный вывод на основе рассказов других разработчиков непросто, или, скорее, невозможно, так как специфика, направление разработки всё-же отличается. Чаще всего я натыкаюсь на блоги разработчиков различных утилит, от программы для управления буфером обмена до почтовых клиентов. Поэтому судить о том, успешна ли будет моя попытка влиться в бизнес ПО, очень тяжело. Вообще всё очень зависит о моего текущего настроения, которое, последнее время, меняется как погода в Сибири. То меня постигают мысли типа: "Ты с ума сошёл?!", "На что ты тратишь время?!", "Ты пожалеешь об этом", то более приятные мысли: "Отлично! Сколько возможностей меня ожидает!", "Будет круто! Будет успех 100%".
Сегодня я хотел найти какой-нибудь блог шароварщика, который бы он вёл с самого начала, чтобы сравнить его мысли и темпы продвижения со своими, но натыкался только на блоги, которые велись уже с момента выпуска 2,3 или более позднего релиза. Конечно, как-то однажды я наткнулся на интервью с основателем компании Alien Skin, чья история была схожа с моей и он тоже разрабатывает фото/видео плагины, но его успех нельзя проецировать на мою ситуацию, или, по крайней мере, я в этом сомневаюсь.
В чём же заключается моя история? 
Когда я учился в университете (который я так и не закончил) я участвовал в студенческом КБ. Не то чтобы я был особо умный, просто когда я перешёл на третий курс (после двух курсов в филиале), хотелось охватить всё и вся, вот я и подписался на это. Я не умел программировать (я и сейчас то не умею), но мне пришлось освоить такую программу как BlitzMax по одной простой причине - мне было лень осваивать такой языка программирования как С++. Проект был связан с автоматическим определением автомобильных номеров с видео. У меня начали появляться кое-какие успехи в этом. По ходу дела я освоил С++ (перешёл на Borland C++). Позднее подзабил на учёбу, всё-таки такой возраст... Проект КБ тоже начал умирать. К моменту когда меня отчислили я дважды участвовал на презентации (это был ужас, я этого ненавидел) своего проекта, один раз мою статью даже напечатали в небольшой книжке по проектам СКБ. Позже я работал в небольшой фирме, где начал уже получать деньги за разработку видео эффектов. Успев закончить несколько проектов (могу насчитать примерно 10) я уволился (или меня уволили, думаю с бывшим начальникам у меня мнения расходятся).
Первое время я пытался устроиться на работу со схожим процессом и схожей специализацией, но успеха не добился. И однажды ранним утром (или поздним вечером... не суть) меня осенило: "Я же сам могу! Опто! Чё я раньше не догадался!". Протрезвев и пережив очередное похмелье (о, да я много гудел на оставшиеся после последней работы деньги) я начал узнавать в интернете как можно продавать свои продукты, что меня ждёт и на сколько это реально, учитывая специфику этого рынка в нашей стране. Немного покопавшись, я познакомился с понятием shareware, прочитал несколько статей от шароварщиков и был удивлён тем, как давно у нас продвигается сей бизнес. 
Итак, почувствовав в себе силы и уверенность я приступил к разработке своих эффектов, погрузился с головой, что-то начало проявляться... потом меня попросили послужить стране. Вернувшись с армии, я с ещё большей уверенностью вернулся к разработке.
Что я имею на данный момент? 
На данный момент у меня 5 почти законченных эффектов и почти все законченные плагины для вышеуказанных программ. Разработка затянулась (3 месяца до армии и 2 месяца после), пора уже заиметь деньги от продаж или устраиваться на работу (чего я так не хочу). Я определил себе жёсткий срок - 1 марта. 1 марта я должен иметь уже готовый продукт. Но у меня в голове такая каша оптимистических и пессимистических мыслей, что мне нужна информационная помощь, вот я и сунулся в интернет в поисках очередного позитива, но ничего стоящего не нашёл, во и решил начать свой блог.
Зачем мне этот блог? 
А зачем мне правда этот блог? Интересно конечно узнать к чему я приду к концу года. Может однажды этот блог будет положительной мотивацией для таких же начинающих разработчиков (если, конечно, у меня всё получится), а может он просто затеряется в архивах интернета и я, прочитав его с начала, что-то узнаю о себе (это, кончено, если у меня ничего не выйдет). В любом случае хуже не будет, а может кто-то всё-таки будет читать мой блог и я увижу комментарии, которые так или иначе помогут мне заставить себя верить в предприятие и перестать отвлекаться от работы на обработку своих сомнений. Кто знает, посмотрим.