23 августа, 2023

Canvas (холст) и W Scale (Ratio), H Scale (Ratio) в Cinelerra

В Cinelerra (во всех версиях) в окне 'Формат проекта' (Set Format) имеются параметры W и H, определяющие Canvas Size (Размер холста). Присутствуют там также W Ratio и H Ratio | Ширина (Соотношение) и Высота (Соотношение). 
UPD.: В форке Cin-CVE эти параметры давно были переименованы в W Scale и H Scale, а в янв. 2024 - и в Cin-HV, и Cin-CV (мной).
Что это такое ?
По умолчанию, Canvas Size (Размер холста), то-бишь размер проекта, он же размер вывода (Output size) при первом старте программы равен 720х576, а в полях W Ratio и H Ratio стоит 1.0000. Например, вы решили увеличить размер холста в 2 раза. Вам не нужно пересчитывать цифры - просто введите в эти поля значение '2'. Значения в полях W и H автоматически будут пересчитаны как 1440 и 1152 и вы увидите как изменится размер холста в Составителе (Compositor). 
Таким образом: в полях W Scale (Ratio), H Scale (Ratio) стоят значения, определяющие соотношение размеров нового холста к старому (в рассматриваемом примере 1440х1152 к 720х576). При этом какие бы значения ни стояли в полях W и H, в W Ratio и H Ratio будут значения, определяющие соотношение к 720х576. Например, установим размер холста 1280х720. W Ratio и H Ratio станут 1.7778 и 1.2500 соответственно, ибо 1280 / 720 = 1.7778 ...

А теперь загрузим медиаресурс (картинку или видео) в окно Ресурсы (Resources), щёлкнем там правой кнопкой по иконке м.ресурса (например, размером 1280х720), перейдём в Match...-> щёлкнем Match project size (Согласовать размер проекта). В окне Set Format размер холста автоматически примет значение 1280x720, а в полях W Ratio, H Ratio значения будут 1.0000. При последующих изменениях размера холста, коэффициенты будут пересчитываться к холсту размера 1280x720.
Выберем из предустановок размер холста 1920x1080. W Ratio, H Ratio примет значение 1.5000 (так как 1920 / 1280 = 1.5 ...). А теперь установим значения W Ratio, H Ratio = 1.0000.  Canvas Size автоматически примет размер 1280x720.
Вот и всё - так это работает.

Когда ещё это может быть полезно ?
Например вот. Здесь, в целях стабилизации видео, сначала увеличили Track Size (Размер трека) (правой кнопкой по треку), введя значение 1.2 в поле Scale и увеличив тем самым ширину и высоту на 20%, а затем коэффициент '1.2' ввели в поля W Ratio и H Ratio, масштабировав тем самым холст соответственно размеру трека. В результате эффект Motion (Движение) получил больше рабочего пространства для стабилизации.

Также этот калькулятор будет полезен при работе с эффектом Translate (Координатное преобразование).

И ещё: эта настройка не определяет Sample (pixel) Aspect Ratio.

Кстати, а что такое холст в Cinelerra (вероятно с этого надо было начинать) ? 
Как указано в глоссарии к букварю синелерриста, который хоть местами и устарел, но по-прежнему рекомендуется к прочтению всем новичкам в Cinelerra, ибо писали его пользователи и разработчики первой и второй волн, действительно понимающие как работает программа:
CANVAS
the space of the compositor where the final video is displayed. It can be imagined as the canvas of a painter or as the screen of a theatre. The standard canvas sizes are 720x576 (PAL) and 720x480 (NTSC).
TIMELINE
the part of the program window that contains video and audio tracks and displays the edits as they occur in time.

То-есть, холст -  это пространство в Compositor (в Составителе или Компоновщике, если хотите, но только ж не в "Композиторе", ёпрст.. !!), где отображается финальное видео, то-бишь результат вывода проектора.
То, что мы видим в Составителе - это, по сути, как модульная картина, обычно состоящая из нескольких фрагментов, которые вместе составляют единое изображение.

А вот определение холста, недавно зашедшее в руководство по Cin-GG  -  грубая ошибка, свидетельствующая о непонимании фундаментальных основ программы:
The entire space comprised by the timebar (horizontal extent) and the stack of the tracks, whether empty or occupied, (vertical extent) is called the canvas, in analogy of the workspace of raster graphics programs or the painter's canvas. It is usual to interchange the terms timeline and canvas. In the canvas, Audio tracks are different from Video tracks so a media including both audio and video will be split into 2 or more indipendent tracks. There is no like function present in other programs, although there are workarounds.

Оказывается временная линейка и монтажный стол с треками, по мнению cin-gg community - это холст.
Ну и дальше там ещё отжигают: 
"..media loaded in the timeline (canvas).. This leads to some advantages (e.g. putting an effect only in a part of the edit) but one must always keep in mind that the edit remains dependent on the track and the entire canvas."

Эх, community ... Много героев - мало понимания.
P.S.
Очень подробно о холсте (размере проекта), размере трека, камере и проекторе я рассказывал в этом блоге в начале статьи о использовании в Cinelerra маски в качестве кадрирующей рамки. Ну и ещё одна полезная ссылка из архива рассылки cinelerra-cv.
P.P.S.
Автор изменений прочитал эту статью, дебаты в комментариях, перечитал руководство и принял решение отменить нововведение.

6 комментариев:

  1. Ну в дереве исходников есть trackcanvas.C и он занимается рисованием временной шкалы и всего что в ней ...

    ЗЫ: Если тебе прямо так противна наша ветка - то и не пиши про неё, а то такое впечатление что ты хочешь чтобы вообще все ветки померли.

    ОтветитьУдалить
    Ответы
    1. Ну, во-первых, вовсе не противна - потому и пишу. Я вложил в неё столько труда - с чего бы мне была она противна ?! Во-вторых, нечего на зеркало пенять, если рожа крива. Наоборот - будьте благодарны. И в-третьих, мне у меня в блоге никто не указ. Придётся вам это принять.

      Теперь по делу. На треках монтажного стола может лежать масса разнокалиберного материала, но то, что идёт в выходное видео, определяется размером холста в Compositor.
      В руководстве картинку с камерой, временным кадром, проектором и выводом проектора видел ?
      Вот загрузи материал на монт. стол, примени эффекты, затем пройди в SetFormat, поизменяй там CanvasSize и посмотри что будет происходить с его размером.

      Цитата из русскояз. QuickStart: "В Синелерре формат (canvas size, полотно) изменяется путем изменения формата проекта. Рамка полотна отображается в окне Compositor при включенной кнопке Show Safe Regions (нижняя, с левой стороны окна). Всё, что выходит за пределы этой рамки будет автоматически обрезано. .. как работают настройки формата (они изменяют размер полотна изображения, а не масштабируют его) ...
      Проектор воздействует на все изображение, находящееся на какой-либо конкретной дорожке. Таким воздействием может быть перемещение изображения вверх или вниз, влево или вправо по экрану и изменение масштаба (путем перемещения изображения по оси Z). Все эти перемещения отображаются в пределах окна Format (Canvas size)."
      --------------

      То-есть, каждая дорожка имеет свой собственный временный кадр (temporary), к которому применяются эффекты, и потом проектором отправляются на холст, в заданные рамки его размера. Размер трека может быть разный (это задаётся размером трека) - это по сути рабочий буфер, да, в некоторой степени минихолст, но называть монтажный стол холстом - это неправильно.

      Чтобы иметь возможность рассчитывать изображения конкретного размера трека, Синелерра занимает в памяти рабочий буфер определенного размера (то-бишь размер трека). Выходной размер проекта (Canvas Size in SetFormat) - это размер конечного результата, а не размер каждого буфера дорожки. Всякий раз когда пользователь создает *новый* (видео) трек, Cinelerra использует в качестве начального значения размера этой дорожки значение, которое в данный момент установлено в качестве выходного размера проекта (глобальное). Вероятно потому и trackcanvas. При этом, если в существующем проекте изменить общий размер вывода проекта, размер уже существующих треков не изменяется. Пользователь может вручную изменить размер трека, через контекстное меню (правый клик по треку -> Размер трека). А если после глобального изменения размера проекта создать новый трек, то он примет размер вывода, то-бишь холста.

      Удалить
  2. Анонимный26/8/23

    Hi,
    I can use this article to edit the manual of CinGG?

    ОтветитьУдалить
  3. Анонимный9/1/24

    Hi,
    I would like to ask you for further clarification:
    (I take the concepts of PAR, DAR and SAR from Raffaella Traniello: http://www.g-raffa.eu/Cinelerra/HOWTO/anamorphic.html
    And I take other general concepts from the site: https://lurkertech.com/lg/pixelaspect/)

    1- PAR, SAR and DAR have nothing to do with the way Cinelerra works?
    2- Is it correct to say that, in Cinelerra, H/W Ratio uses PAR to make its automatic calculations? Or better yet, can it be said that H/W Ratio is the PAR?
    3- When we use "Resize" in "Source --> Info" or if we use "Resize Track" from the Program windows menus, are we varying the SAR (with the "Scale" parameter)?

    ОтветитьУдалить
    Ответы
    1. Cinelerra is oblivious about pixel aspect ratio of input files and provides no clean way to deal with that.
      The pixel aspect ratio logic is rather hackish where it exists at all.
      'W Ratio | H Ratio' do not define pixel aspect ratio.
      These are just coefficients for recalculating canvas sizes.

      In Cinelerra-ALL, no matter what attributes the media file has, it is played back (in Compos./Viewer) according to the project attributes. The program does not auto-detect DisplayAspectRatio, and only applies it on the output in Compos/Viewer, not on the individual input files. When displaying media, the viewer/compos. use the project's defined output size format settings, not the original assets format. So, you always have to choose the format settings (in the Set Format dialog) according to the media info. This can be annoying and confusing, but it is by design.

      Display Aspect Ratio and Auto checkbox in the Cinelerra world are not render settings and do not affect the rendered output. They just change the display in the Compositor/Viewer and don't change anything in the actual video data processed by Cinelerra (i.e. the rendered output). So, don't rely on Cinelerra to set the proper flags and parameters for DAR and square px.

      In mostly cases you can get the desired Display aspect ratio and even Pixel aspect ratio in the forks with modern ffmpeg i.e. in CinGG  and CinCVE. 
      In many cases you can not get the desired Display aspect ratio and Pixel aspect ratio in HV  and CVO.
      BUT
      In some cases (i.e. with some formats) you can not get the desired Display aspect ratio and Pixel aspect ratio in CinGG and CinCVE.
      In some cases you can get the desired Display aspect ratio and even Pixel aspect ratio in HV and CVO.

      Different encoders take aspect ratio from different places.
      Aspect ratio may be on container or frame level. The playback may override it.
      Cinelerra uses different libraries for different format/codec. There may be something different with libraries or preparing the parameters for libraries. 

      So, what is written in a media file depends mostly on the file format and W /H in the SetFormat dialog.

      The problem is that Implementing pixel aspect ratio (Sample Aspect Ratio) would require to fundamentally rework the complete channel handling and blending modes and also the plugin interfaces, so you'd likely have to touch half of the code base to introduce non-standard pixel modes or extended colour spaces and the likes...

      Today, none of the cinelerra forks has such changes.
      Live with that. :)

      Удалить