5 декабря 2015 г.

FFMPEG и Cinelerra-CVE от Einar Rünkaru

В бранче Cinelerra-CVE от Einar Rünkaru начата работа по интеграции новой версии ffmpeg релиза 2.8.х Принята новая модель работы программы c internal ffmpeg. Эта модель планируется (позже) к принятию и в главной ветке Cinelerra-CV.
Итак.

Старая версия internal ffmpeg удалена из дерева исходного кода Cinelerra-CVE от Einar Rünkaru. Новая используемая теперь версия  ffmpeg (internal) не является частью дерева исходного кода (source tree) Cinelerra-CVE и не хранится в Einar/cinelerra.git. The suffix of ffmpeg libraries is changed to cve, headers are installed under cinelerra-cve.
Используемая бранчем
Cinelerra-CVE internal ffmpeg в дереве исходного кода отныне храниться не будет, но будет клонироваться с source.ffmpeg.org.
Клонированная версия не обновляется автоматически.
Текущее поведение Cinelerra-CVE  (речь сейчас о бранче от Einar Rünkaru) таково, что configure производит проверку last commit from ffmpeg branch 2.8 если directory <cinelerra_root>/ffmpeg не существует.
В этом случае (если directory <cinelerra_root>/ffmpeg не существует)  configure клонирует последнюю на текущий момент выпущенную версию 2.8.x РЕЛИЗА 2.8 с source.ffmpeg.org в cinelerra-directory.
Если же таковая директория в каталоге исходного кода имеется, то configure не будет делать каких-либо попыток загрузить что-либо.
Это довольно удобно, поскольку предоставляет пользователю возможность самостоятельно выбирать: обновлять ffmpeg или нет.
                                                               ***

Как будет вести себя Cinelerra-CVE, если source.ffmpeg.org выпустит релиз новой stable version ffmpeg (например 2.9-stable) ?
Будет ли программа автоматически загружать в ходе компиляции новую версию ffmpeg 2.9-stable или Cinelerra-CVE будет работать со старой версией 2.8 ?


Вероятно существуют изменения API между 2.8 и 2.9. Cinelerra-CVE может перейти к использованию версии 2.9, если в её git произведены и протестированы (если таковые имеются) необходимые для этого изменения. Ни configure, ни дальнейшая компиляция не обновляют автоматически версию FFmpeg. Пользователь может удалить каталог FFmpeg из каталога исходного кода Cinelerra-CVE - в этом случае текущая версия FFmpeg 2.8.x будет клонирована при конфигурировании.
                                                                ***


Предположим, что компания source.ffmpeg.org выпустила новый стабильный релиз ffmpeg - 2.9-stable.
В это время пользователь идёт и удаляет каталог исходных кодов /home/user/builds/cin-cve а затем производит `git clone` или удаляет только каталог ffmpeg (/home/user/builds/cin-cve/ffmpeg) из каталога исходного кода cinelerra-cve

 В этом случае будет клонирована текущая версия ffmpeg. Но какая:  2.8.x-stable или 2.9-stable ?

Если это происходит после того, как в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию, и пользователь выполняет `git pull`,   configure клонирует 2.9.x
Если в Einar/cinelerra.git  необходимые изменения для перехода на новую версию не производились, configure клонирует 2.8.x
                                                                   ***


Предположим, что компания source.ffmpeg.org выпустила новую стабильную версию ffmpeg - 2.9-stable.
В это время в einar/cinelerra.git произведены необходимые изменения для перехода на новую версию. 
У пользователя в каталоге /home/user/builds/cin-cve/ffmpeg находится 2.8.x
Пользователь, не удаляя каталог /home/user/builds/cin-cve/ffmpeg ,  выполняет git clone ..   ./autogen   ./configure

 

В этом случае новая 2.9-stable клонирована не будет.
configure клонирует 2.8.x и компиляция программы произойдёт   с 2.8.x
----------------------------------------------------------------------------------


Если Вы конфигурируете с external ffmpeg, ничего не загружается.
В настоящий момент компиляция с external ffmpeg не поддерживается, хотя опция и существует.
По завершении работы над интеграций 2.8 планируется поддержка и компиляции с external ffmpeg
Версии FFmpeg, которые не поддерживаются программой внутри, не будут поддерживаться и извне.

Опытный пользователь  имеет возможность самостоятельно провести upgrade ffmpeg, если считает это необходимым. Пользователь может загрузить любую версию ffmpeg и поместить её в <cinelerra_root>/ffmpeg. Это не приведёт к конфликтам с configure.   

<cinelerra_root>/.configure должно быть запущено после изменений FFmpeg, так как команда configure производит конфигурирование (настройку) internal FFmpeg. То есть исходный код ffmpeg должен быть размещен в cinelerra директории прежде, чем будет выполнено configure.

Пользователь должен знать, что компиляция cinelerra-cve с таким custom (пользовательским) ffmpeg может потерпеть неудачу, ибо изменения api происходят относительно часто.

На настоящий момент cinelerra-cv использует ffmpeg libs для mp4, h264 codecs, WMA decoding и AC3 encoding. Другой вопрос как это работает .. 


Проблемы с h264.mp4, с AAC  вызваны тем, что:
".. the current quicktime is incompatible with the latest libx264. Seems that initialization is not right. Fixing libquicktime means complete rewrite of it. .."


"..   Which AAC-encoder is used by CVE ?
External libfaac.  libfaac is used through quicktime what has its own quirks."


Поэтому принято решение избавиться от libquicktime и передать все её функции ffmpeg


Личный испытательный полигон Einar Rünkaru ".. does not use libquicktime for rendering `QuickTime for Linux` from december 2015 .. I did replacing funtionality of quicktime with other means.." 
 
По поводу возможности использования FDK_AAC (libfdk-aac)
" ..As ffmpeg supports this, it is possible that it will be supported automatically when ffmpeg is linked to suitable library .. "


"..Though Cinelerra is linked with system libjpeg it heavily depended on quicktime - this was the reason of crash on certain jpegs.."

Все эти изменения будут портированы в main.git Конечной целью проекта заявлен полный переход программы на работу с сиcтемным (внешним) ffmpeg. Поскольку некоторые дистрибутивы не имеют ffmpeg, использование internal ffmpeg будет оставлено в качестве опции.


Комментариев нет:

Отправить комментарий