Рендеринг эффектов FXPlug в окончательном варианте
Введение
Рендеринг сценариев в Окончательном варианте может измениться с момента до момента — смещающийся динамично, например, с высококачественного Реального времени, представив к среднему качественному рендерингу Реального времени, и затем назад снова. Это - результат базового проекта Окончательного варианта — где обработка изображений имеет место на собственных видеоизображениях точно, поскольку они выходят из кодека — и развитие продукта в течение долгого времени.
При создании эффекта FxPlug, работающего при Окончательном варианте необходимо принять эти изменяющиеся обстоятельства во внимание и структурировать код соответственно так, чтобы эффект представил соответственно в любом случае.
Этот документ описывает сценарии рендеринга Окончательного варианта, где Ваш эффект FxPlug, возможно, должен адаптироваться. Это также указывает релевантную информацию от Окончательного варианта, который можно использовать для обнаружения обстоятельств рендеринга изменения.
Этот документ не рекомендует определенные стратегии, которые эффект мог бы использовать для ответа на определенный сценарий рендеринга, так как каждый эффект может обработать определенный сценарий по-другому. Например, если бы эффект работает на низком-res изображении прокси в среднем качественном рендеринге Реального времени, общее представление было бы для эффекта скорректировать себя масштабом рендеринга для создания изображения, подобного тому, что это произведет в высококачественном полном-res. На практике это могло бы означать, что размытость будет масштабировать свой размер ядра масштабом рендеринга, геометрический эффект исказил бы себя для единственных полей половинной высоты, и цветной корректор ничего не сделает.
Изображения в окончательном варианте
Чересстрочная видеозапись в Окончательном варианте
Изображения единственного поля в Окончательном варианте не расширяются к высоте полного кадра. Они - половина высоты полного кадра. Изображения единственного поля в Движении, с другой стороны, расширяются (удвоенные строкой) до высоты полного кадра. Ваш эффект должен обработать оба случая
Можно использовать -upscalesFields метод в протоколе FxHostCapabilities, чтобы определить, увеличены ли изображения единственного поля масштаб. Этот метод возвращает булево значение: TRUE если хост-приложение увеличивает масштаб единственные поля к размерностям полного кадра; FALSE если хост-приложение не увеличивает масштаб единственные поля.
Кроме того, потому что изображения единственного поля являются половиной высоты изображений полного кадра, их форматные соотношения корректируются также. Изображение единственного поля в Окончательном варианте имеет половину форматного соотношения полного кадра. Например, кадр DV имеет форматное соотношение 0,8888; единственное поле DV имеет форматное соотношение 0,4444. Плагины, заботящиеся о форматном соотношении, должны быть готовы к этому изменению.
В целом документация для FxHostCapabilities в FxPlug SDK обстоятельно объясняет другие различия между хост-приложениями.
Отобразите системы координат
Источник изображения в Окончательном варианте находится в верхнем левом углу. Источник изображения в Движении, с другой стороны, находится в нижнем левом углу. Ваш эффект должен обработать оба случая. Можно использовать FxImageOrigin перечисление определяется в заголовочном файле FxImage.h определить ориентацию изображения и избежать представлять вверх тормашками. (Вы не можете просто принять одну систему координат или другой.)
enum { |
kFxImageOrigin_BOTTOM_LEFT = 0, |
kFxImageOrigin_TOP_LEFT = 2 |
}; |
typedef UInt32 FxImageOrigin; |
Rowbytes
Битовые массивы в Окончательном варианте дополнили строки развертки. Эффекты FxPlug должны использовать-rowBytes средство доступа, определенное в FxBitmap.h для обнаружения, сколько байтов находится в каждой строке развертки битового массива. Эффект не должен перезаписывать байты в дополнении строки развертки. В изображении единственного поля дополнение может содержать другое поле чересстрочного кадра.
Путь дисплея RT
Во время нормального функционирования Ваш эффект вызывает RT Окончательного варианта механизмом (В реальном времени). Механизм RT ответственен за обновление видео, выведенного на экран в окне холста и на любом внешнем мониторе. Механизм RT занят во время воспроизведения и во время «вычищения».
Рендеринг характеристик
В целом механизм RT представляет изображения в их родном разрешении. Это вызвано тем, что тот же представленный кадр передается и к окну холста и к внешнему монитору. Даже если холст выводит на экран только одно поле, или даже если холст не выводит на экран все изображение вследствие изменения масштаба или панорамирования, оба поля изображения представляются в 100%-м разрешении.
Механизм RT представляет каждое поле чересстрочного изображения индивидуально. Это требуется, с тех пор keyframed параметры может иметь различные значения в различных полях.
Механизм RT представляет поля во временном порядке: временно первое поле представляется сначала, временно второе поле представляется второе.
Существует исключение к этим правилам: если механизм RT спадает до более низкого качества, он может представить в более низком разрешении, или только представить единственное поле или обоих. (Это обсуждено всестороннее в более позднем разделе.)
Пример 1: видеозапись DV
Как Окончательный вариант вызывает эффекты в простой последовательности DV? Вот пример.
DV видеозапись NTSC был добавлен к последовательности, создаваемой с DV предварительная установка NTSC. Вспомните, что настройки для DV NTSC являются следующим:


Теперь добавьте эффект фильтра FxPlug к этому элементу и переместите playhead для структурирования 5 из последовательности. Фильтр FxPlug вызывают для рендеринга дважды: один раз для первого поля кадра 5, и один раз для второго поля кадра 5.
Во время процесса рендеринга следующая информация доступна эффекту:
Первое поле | Второе поле | |
|---|---|---|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Отметьте эти общие точки:
Изображения ввода и вывода являются шириной полного кадра, но полуструктурируют высоту.
Форматные соотношения изображений были разделены на два.
Временно первое поле представляется сначала.
Когда Окончательный вариант представляет второе поле, информация идентична за исключением того, что число кадра постепенно увеличено 0,5, потому что это - временно второе поле. Изображения ввода и вывода теперь отмечены как верхнее поле кадра.
Эффекты, обращающие внимание для структурирования чисел, не должны быть удивлены получить дробные числа кадра на чересстрочных последовательностях.
Низко, носитель и динамическое качество в RT
При некоторых обстоятельствах последовательности не могут воспроизвести в в реальном времени на всех машинах. Когда это происходит, механизм RT может скорректировать качество несколькими способами для поддержания разумной производительности воспроизведения.
Меню RT во временной шкале предоставляет различные возможности, позволяющие контролю за работой пользователей производительность RT. Раздел «Playback Video Quality» меню является самым интересным для разработчиков FxPlug.

Когда видео распаковывается во время воспроизведения, установка The для Качества видео Воспроизведения передается как подсказка кодеку. В зависимости от этой установки кодек может произвести меньшее изображение в более низком качестве, или только распаковать одно поле вместо чересстрочного кадра. Фактическое поведение до кодека.
В целом среднее качество является половиной разрешения высокого качества, и низкое качество (если поддержка кодеков это) является одной четвертью разрешение высокого качества.
По умолчанию Качество видео Воспроизведения установлено в Динамический. Это означает, что механизм RT, для поддержания частоты кадров, корректирует качество во время воспроизведения. Если механизм RT не может поддержать воспроизведение в высоком качестве, это смещается к среднему качеству — и затем может сместиться назад к высокому качеству впоследствии, если это обнаруживает, что может.
Ключевой пункт - это: Ваш эффект должен быть готов к качественным изменениям посреди воспроизведения. Вы не должны предполагать, что размеры изображения и renderInfo.scale будут постоянными от одного кадра до другого.
Также обратите внимание на то, что по умолчанию, механизм RT установлен “Вычистить Высокое качество”. Это означает, что рендеринг может спасть до более низкого качества во время воспроизведения.
В режиме «Safe RT» механизм RT только представляет эффекты во время воспроизведения, если это профилировало эти эффекты и знает, как быстро они могут представить. Так как механизм RT не может профилировать сторонние эффекты, включая эффекты FxPlug, эти эффекты не представляются во время воспроизведения в режиме Safe RT. (Непрофилируемые эффекты представляются во время куста.)
Для отображения представленный эффектами FxPlug во время воспроизведения пользователь Окончательного варианта должен переключиться на установку Unlimited RT. В этом режиме механизм RT пытается представить все как можно быстрее. (Если качество воспроизведения установлено в Динамический, механизм RT может ухудшить качество воспроизведения для поддержания скорости воспроизведения.)
Подсказка: Для тестирования фильтра при более низких качественных настройках измените качество воспроизведения видео на «Носитель» или «Низко» и выключите “Высокое качество Куста”. В Вашем методе рендеринга Ваш плагин должен соответственно реагировать на изменения в renderInfo.scale.
Пример 2: Видеозапись DV в среднем качестве
В той же последовательности DV как Пример 1, давайте переключим Качество видео Воспроизведения на Носитель, выключим “Высокое качество Куста” и представим кадр 5 снова. Со Средним качеством DV кодек NTSC производит 360 x 240 прогрессивных кадров. Путем выбрасывания временно второго поля и половины пикселей во временно первом поле, кодек значительно сокращает время, должен был распаковать кадр. Это помогает ускорить воспроизведение.
Высокое качество | Среднее качество | |
|---|---|---|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Фильтр только вызывают для рендеринга один раз на кадр. Правильная строка таблицы (MEDIUM QUALITY) выводит на экран информацию, переданную фильтру. Отметьте, как это отличается от рендеринга в высоком качестве:
scaleX и scaleY renderInfo установлены в 0,5.
Размерности ввода и вывода являются половиной полного разрешения. (Это соответствует значения renderInfo.scale.)
Изображения ввода и вывода установлены в kFxField_NONE.
Выходное изображение установлено в kFxFieldOrder_PROGRESSIVE.
Кодек DV возвращает тот же результат для низкого качества что касается среднего качества. Для примера ситуация, где низкое качество отличается, чем среднее качество, пробует один из 1080i настройки.
Путь дисплея неRT
В дополнение к механизму RT Окончательный вариант имеет другой путь дисплея, иногда использующийся для рисования видео к окну холста и внешним устройствам. Этот путь дисплея предшествует механизму RT и используется для определенных параметров экрана, не поддерживающихся путем дисплея RT. Эти опции включают:
Покажите избыточный Luma или цветность.
Выведите на экран Белый или фон Шахматной доски.
Просмотрите отдельные каналы (красный, зеленый, синий, или альфа).
Используйте кодек Анимации (указанный в настройках Sequence), а не кодек DV.
Рендеринг характеристик
В отличие от механизма RT, путь дисплея неRT не выводит на экран то же изображение и в окне холста и во внешнем мониторе. При обновлении кадра механизм неRT представляет изображение для дисплея в окне, и затем представляет другое изображение позже для отправки к внешнему монитору. Внешний монитор обновляется во время простоя, поэтому если Вы вычищаете быстро, можно заметить, что окно холста обновляет более часто, чем внешнее устройство.
Когда путь дисплея неRT представляет изображение для окна холста, он представляет только, что будет видимо в окне. Если единственное поле выводится на экран в окне, путь неRT не представляет оба поля. Если окно масштабируется так, чтобы изображение в окне было меньшим, чем фактический тип телосложения, путь неRT представляет упрощенную версию кадра.
Примечание: путь неRT имеет другую причуду. Если холст установлен “Показать как Квадратные пиксели” (значение по умолчанию), путь неRT представляет кадр, горизонтально масштабирующийся форматным соотношением, и это отмечено как наличие форматного соотношения 1,0. Это в соответствии с подходом рендеринга, что выведено на экран в окне холста. В настоящее время FxPlug, представляющий код, расширяет изображение горизонтально для отмены этого, таким образом, эффекты FxPlug не должны обрабатывать этот случай.
Пример: Видеозапись DV в неRT выводит на экран путь
Для создания примера с помощью пути рендеринга неRT можно включить, “Показывают Избыточный Luma”:

С набором окна холста к 87% масштаба структурируйте 5 теперь рендеринг с путем неRT, возвращающим следующую информацию:
Рендеринг RT | Рендеринг неRT | |
|---|---|---|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Здесь существует несколько различий. Самое значимое - то, что изображение меньше, чем размер DV, потому что окно холста установлено в 87%-й масштаб. В результате renderInfo имеет масштаб 0,87, и размерности ввода и вывода составляют 87% размера DV.
Другое различие: потому что окно холста не при 100%-м изменении масштаба, неRT соединяет каналом только рендеринг, и выводит на экран одно поле.
IMPORTANT: при использовании пути неRT можно видеть некоторые неправильные полевые стоимости заказов, связанные с входным изображением. В примере здесь, полевой порядок должен быть kFxFieldOrder_PROGRESSIVE. Для предотвращения проблем необходимо только использовать полевые стоимости заказов от выходного изображения.
Если существует подключенное внешнее устройство, фильтр FxPlug вызывают снова для рендеринга изображения для этого внешнего устройства. В этом случае информация, отправленная в фильтр, легко понятна: кадр является размером DV в 100%-м масштабе, оба поля представляются и т.д.
Смешанные форматы
Временные шкалы смешанного формата имеют элементы, которые находятся в формате, отличающемся от формата временной шкалы. Типичные примеры были бы видеозаписью SD в последовательности HD или неподвижным изображением в последовательности.
Механизм RT и дескриптор механизма неRT смешали форматы по-другому. Когда эффект применяется к смешанной временной шкале формата, ее метод рендеринга вызывают одним путем к вычищению RT и воспроизведению и иначе к фильму. В механизме рендеринга RT все элементы масштабируются для упорядочивания размера, прежде чем будет применен эффект. В рендеринге неRT эффект применяется к элементу в его родном разрешении.
Когда элемент масштабируется для дисплея RT, можно использовать значение renderInfo.scale для обнаружения. Однако это значение не установлено в способе, которым Вы могли бы ожидать.
Считайте элемент на 720 пунктов в DV последовательностью NTSC. В RT отправляется следующая информация:
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
Когда последовательность представляется, следующая информация отправляется:
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
Обратите внимание на то, что в RT, Изображение высокой четкости масштабируется для вписывания в кадр DV. Ширина / аспект высоты сохраняется, таким образом, (единственное поле) изображение масштабируется к 720 x 202; это должно соответствовать в 720 x 240 полям DV.
В рендеринге неRT Изображение высокой четкости в полном разрешении. Значение масштаба установлено в число, больше, чем 1,0. Это говорит эффекту, что изображение будет уменьшено масштаб после рендеринга для вписывания в последовательность.