mm_avh_working_space
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +14 -0
- mm_avh_working_space/.gitattributes +2 -0
- mm_avh_working_space/.gitignore +7 -0
- mm_avh_working_space/LICENSE +21 -0
- mm_avh_working_space/README.md +149 -0
- mm_avh_working_space/bin/balabolka/balcon.exe +3 -0
- mm_avh_working_space/bin/balabolka/readme.pol.txt +383 -0
- mm_avh_working_space/bin/esrgan/realesrgan-ncnn-vulkan.exe +3 -0
- mm_avh_working_space/bin/esrgan/vcomp140.dll +0 -0
- mm_avh_working_space/bin/esrgan/vcomp140d.dll +0 -0
- mm_avh_working_space/bin/ffmpeg/FFmpeg.url +2 -0
- mm_avh_working_space/bin/ffmpeg/LICENSE +674 -0
- mm_avh_working_space/bin/ffmpeg/README.txt +782 -0
- mm_avh_working_space/bin/ffmpeg/bin/ffmpeg.exe +3 -0
- mm_avh_working_space/bin/ffmpeg/bin/ffplay.exe +3 -0
- mm_avh_working_space/bin/ffmpeg/bin/ffprobe.exe +3 -0
- mm_avh_working_space/bin/ffmpeg/doc/bootstrap.min.css +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/community.html +250 -0
- mm_avh_working_space/bin/ffmpeg/doc/default.css +165 -0
- mm_avh_working_space/bin/ffmpeg/doc/developer.html +1099 -0
- mm_avh_working_space/bin/ffmpeg/doc/faq.html +941 -0
- mm_avh_working_space/bin/ffmpeg/doc/fate.html +367 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-all.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-bitstream-filters.html +1307 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-codecs.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-devices.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-filters.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-formats.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-protocols.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-resampler.html +362 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-scaler.html +266 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-utils.html +1539 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffmpeg.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffplay-all.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffplay.html +893 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffprobe-all.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/ffprobe.html +1258 -0
- mm_avh_working_space/bin/ffmpeg/doc/general.html +0 -0
- mm_avh_working_space/bin/ffmpeg/doc/git-howto.html +624 -0
- mm_avh_working_space/bin/ffmpeg/doc/libavcodec.html +85 -0
- mm_avh_working_space/bin/ffmpeg/doc/libavdevice.html +82 -0
- mm_avh_working_space/bin/ffmpeg/doc/libavfilter.html +81 -0
- mm_avh_working_space/bin/ffmpeg/doc/libavformat.html +85 -0
- mm_avh_working_space/bin/ffmpeg/doc/libavutil.html +104 -0
- mm_avh_working_space/bin/ffmpeg/doc/libswresample.html +105 -0
- mm_avh_working_space/bin/ffmpeg/doc/libswscale.html +99 -0
- mm_avh_working_space/bin/ffmpeg/doc/mailing-list-faq.html +524 -0
- mm_avh_working_space/bin/ffmpeg/doc/nut.html +244 -0
- mm_avh_working_space/bin/ffmpeg/doc/platform.html +434 -0
- mm_avh_working_space/bin/ffmpeg/doc/style.min.css +23 -0
.gitattributes
CHANGED
@@ -33,3 +33,17 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
mm_avh_working_space/bin/balabolka/balcon.exe filter=lfs diff=lfs merge=lfs -text
|
37 |
+
mm_avh_working_space/bin/esrgan/realesrgan-ncnn-vulkan.exe filter=lfs diff=lfs merge=lfs -text
|
38 |
+
mm_avh_working_space/bin/ffmpeg/bin/ffmpeg.exe filter=lfs diff=lfs merge=lfs -text
|
39 |
+
mm_avh_working_space/bin/ffmpeg/bin/ffplay.exe filter=lfs diff=lfs merge=lfs -text
|
40 |
+
mm_avh_working_space/bin/ffmpeg/bin/ffprobe.exe filter=lfs diff=lfs merge=lfs -text
|
41 |
+
mm_avh_working_space/bin/mkvtoolnix/mkvextract.exe filter=lfs diff=lfs merge=lfs -text
|
42 |
+
mm_avh_working_space/bin/mkvtoolnix/mkvinfo.exe filter=lfs diff=lfs merge=lfs -text
|
43 |
+
mm_avh_working_space/bin/mkvtoolnix/mkvmerge.exe filter=lfs diff=lfs merge=lfs -text
|
44 |
+
mm_avh_working_space/bin/mkvtoolnix/mkvpropedit.exe filter=lfs diff=lfs merge=lfs -text
|
45 |
+
mm_avh_working_space/bin/mkvtoolnix/mkvtoolnix-gui.exe filter=lfs diff=lfs merge=lfs -text
|
46 |
+
mm_avh_working_space/bin/mkvtoolnix/tools/bluray_dump.exe filter=lfs diff=lfs merge=lfs -text
|
47 |
+
mm_avh_working_space/bin/mkvtoolnix/tools/ebml_validator.exe filter=lfs diff=lfs merge=lfs -text
|
48 |
+
mm_avh_working_space/bin/mkvtoolnix/tools/hevcc_dump.exe filter=lfs diff=lfs merge=lfs -text
|
49 |
+
mm_avh_working_space/bin/mkvtoolnix/tools/xvc_dump.exe filter=lfs diff=lfs merge=lfs -text
|
mm_avh_working_space/.gitattributes
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
# Auto detect text files and perform LF normalization
|
2 |
+
* text=auto
|
mm_avh_working_space/.gitignore
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
*.exe
|
2 |
+
*.mkv
|
3 |
+
*.srt
|
4 |
+
*.aas
|
5 |
+
*.mp4
|
6 |
+
*.mp3
|
7 |
+
*.eac3
|
mm_avh_working_space/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2023 Mateusz Mróz
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
mm_avh_working_space/README.md
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# <p align="center">✨MM_AVH✨<br>✨WORKING SPACE✨</p>
|
2 |
+
|
3 |
+
## Spis Treści
|
4 |
+
|
5 |
+
- [📝 Krótki Opis](#-krótki-opis)
|
6 |
+
- [📦 Zawartość](#-zawartość)
|
7 |
+
- [🔗 Linki](#-linki)
|
8 |
+
- [🔍 Wymagania](#-wymagania)
|
9 |
+
- [⚡ Instalacja](#-instalacja-windows)
|
10 |
+
- [📢 Aktualizacje](#-aktualizacje)
|
11 |
+
- [⚙️ Instrukcja](#-sposób-korzystania)
|
12 |
+
- [📝 Opis](#-opis-programów)
|
13 |
+
- [📸 Demonstracja](#-demonstracja)
|
14 |
+
- [📌 Uwagi](#-uwagi)
|
15 |
+
- [🙏 Podziękowania](#-podziękowania)
|
16 |
+
- [📄 Licencja](#-licencja)
|
17 |
+
- [📧 Kontakt](#-kontakt)
|
18 |
+
|
19 |
+
## 📝 Krótki Opis
|
20 |
+
|
21 |
+
**Multimedia Magic – Audio Visual Heaven (MM_AVH)** to zestaw narzędzi do przetwarzania i ulepszania multimediów. Repozytorium **_MM_AVH Working Space_** służy jako przestrzeń robocza do ciągłego pobierania, ulepszania i generowania multimediów.
|
22 |
+
|
23 |
+
**MM_AVH** składa się z wielu programów, które są stosowane sekwencyjnie, umożliwiając wielowarstwowe przetwarzanie multimediów. Narzędzia obejmują m.in:
|
24 |
+
|
25 |
+
- playery, readery, konwertery, edytory, wizualizatory, analizatory, generatory, itp.
|
26 |
+
- skalowanie
|
27 |
+
- interpolację
|
28 |
+
- zarządzanie napisami
|
29 |
+
- lektorowanie wideo (dubbingowanie w przyszłości)
|
30 |
+
- tworzenie audiobooków
|
31 |
+
- automatyczne tłumaczenie tekstów
|
32 |
+
i wiele innych.
|
33 |
+
|
34 |
+
Celem **MM_AVH** jest udostępnienie zaawansowanych, łatwych w użyciu narzędzi do manipulacji multimediów. **_MM_AVH Working Space_** jest częścią większego projektu, który ma na celu udostępnienie darmowego dostępu do multimediów i ułatwienie ich ulepszania i modyfikacji. Praca nad ulepszaniem **MM_AVH** jest ciągła, a repozytorium jest miejscem, gdzie te ulepszenia są opracowywane i testowane. Projekt **MM_AVH** skupia się również na odkrywaniu i dzieleniu się programami, które mogą poprawić jakość i wygodę odbioru multimediów.
|
35 |
+
|
36 |
+
## 📦 Zawartość
|
37 |
+
|
38 |
+
Projekt **MM_AVH Working Space** składa się z następujących głównych plików i folderów:
|
39 |
+
|
40 |
+
- `assets`: Folder zawierający prezentacje i zrzuty ekranu. Ten folder nie jest niezbędny do działania projektu i może być usunięty.
|
41 |
+
- `bin`: W tym folderze znajdują się wszystkie pliki wykonywalne (exe) oraz modele używane w projekcie. Podfoldery obejmują:
|
42 |
+
- `balabolka`
|
43 |
+
- `esrgan`
|
44 |
+
- `ffmpeg`
|
45 |
+
- `mkvtoolnix`
|
46 |
+
- `models`
|
47 |
+
- `data`: Folder zawierający proste ustawienia programu terminalowego.
|
48 |
+
- `modules`: Moduły stworzone specjalnie dla tego projektu.
|
49 |
+
- `tests`: Folder zawierający testy nowych rozwiązań. Ten folder nie jest niezbędny do działania projektu i może być usunięty.
|
50 |
+
- `utils`: Moduły, które mogą być używane w innych projektach.
|
51 |
+
- `working_space`: Folder roboczy, do którego przekazujemy pliki do przetworzenia. Zawiera podfoldery `output` i `temp`, które zawierają odpowiednio wyniki przetwarzania i pliki tymczasowe.
|
52 |
+
- `constants.py`: Plik zawierający stałe ustawienia programu, takie jak ścieżki do folderów i kolorystyka.
|
53 |
+
- `LICENSE`: Plik zawierający informacje o licencji projektu.
|
54 |
+
- `README.md`: Plik zawierający wszystkie informacje, które powinieneś wiedzieć o projekcie.
|
55 |
+
- `start.py`: Plik, który uruchamia proces przetwarzania.
|
56 |
+
- `requirements.txt`: Plik zawierający listę bibliotek wymaganych do działania projektu.
|
57 |
+
|
58 |
+
Struktura folderów projektu wygląda następująco:
|
59 |
+
|
60 |
+
```
|
61 |
+
mm_avh_working_space
|
62 |
+
├───assets ... ❌
|
63 |
+
├───bin
|
64 |
+
│ ├───balabolka
|
65 |
+
│ ├───esrgan
|
66 |
+
│ ├───ffmpeg ...
|
67 |
+
│ │ ├───bin
|
68 |
+
│ ├───mkvtoolnix ...
|
69 |
+
│ └───models
|
70 |
+
├───data
|
71 |
+
├───modules
|
72 |
+
├───tests ❌
|
73 |
+
├───utils
|
74 |
+
└───working_space ❗
|
75 |
+
├───output
|
76 |
+
└───temp
|
77 |
+
├───alt_subs
|
78 |
+
└───main_subs
|
79 |
+
```
|
80 |
+
|
81 |
+
Pliki na poziomie głównym to:
|
82 |
+
|
83 |
+
- `constants.py`
|
84 |
+
- `LICENSE`
|
85 |
+
- `README.md`
|
86 |
+
- `start.py` ❗
|
87 |
+
- `requirements.txt` ❗
|
88 |
+
|
89 |
+
❌ - zbędne po zapoznaiu się z urzwyaniem
|
90 |
+
|
91 |
+
❗ - ważne
|
92 |
+
|
93 |
+
## 🔗 Linki
|
94 |
+
|
95 |
+
- [Strona Główna - do zrobienia❗❗❗](https://mattymroz.github.io/mm_avh/)
|
96 |
+
- [Media Players](https://github.com/MattyMroz/mm_avh_media_players)
|
97 |
+
- [Web Players](https://github.com/MattyMroz/mm_avh_web_players)
|
98 |
+
- [Working Space **TU**](https://github.com/MattyMroz/mm_avh_working_space)
|
99 |
+
|
100 |
+
## 🔍 Wymagania
|
101 |
+
|
102 |
+
Tutaj powinieneś wymienić wszystko, co użytkownik musi zainstalować lub wiedzieć, zanim zacznie korzystać z Twojego projektu. Może to obejmować wymagania dotyczące oprogramowania, sprzętu, wiedzy lub zasobów.
|
103 |
+
|
104 |
+
Windows
|
105 |
+
FFmpeg zapisany w zmiennej środowiskowej PATH
|
106 |
+
Python >=10
|
107 |
+
|
108 |
+
## ⚡ Instalacja
|
109 |
+
|
110 |
+
W tej sekcji powinieneś opisać, jak zainstalować i skonfigurować Twój projekt. Krok po kroku instrukcje są tutaj bardzo pomocne.
|
111 |
+
|
112 |
+
|
113 |
+
|
114 |
+
## 📢 Aktualizacje
|
115 |
+
|
116 |
+
Tutaj możesz informować użytkowników o najnowszych aktualizacjach Twojego projektu.
|
117 |
+
|
118 |
+
## ⚙️ Sposób Korzystania
|
119 |
+
|
120 |
+
W tej sekcji powinieneś opisać, jak korzystać z Twojego projektu. Możesz tutaj umieścić przykłady użycia, wskazówki i triki.
|
121 |
+
|
122 |
+
## 📝 Opis Programów
|
123 |
+
|
124 |
+
Tutaj możesz opisać, jakie programy są używane w Twoim projekcie i do czego służą.
|
125 |
+
|
126 |
+
## 📸 Demonstracja
|
127 |
+
|
128 |
+
W tej sekcji możesz pokazać, jak działa Twój projekt. Możesz tutaj umieścić zrzuty ekranu, filmy lub gify.
|
129 |
+
|
130 |
+
## 📌 Uwagi
|
131 |
+
|
132 |
+
Tutaj możesz umieścić wszelkie dodatkowe uwagi, które mogą być ważne dla użytkowników Twojego projektu.
|
133 |
+
|
134 |
+
## 🙏 Podziękowania
|
135 |
+
|
136 |
+
Tutaj możesz podziękować osobom, które pomogły Ci w projekcie. Możesz podać ich imiona, role, jak pomogli.
|
137 |
+
|
138 |
+
## 📄 Licencja
|
139 |
+
|
140 |
+
W tej sekcji powinieneś podać, jaka licencja obowiązuje dla Twojego projektu. Możesz podać typ licencji i link do pełnego tekstu licencji.
|
141 |
+
|
142 |
+
## 📧 Kontakt
|
143 |
+
|
144 |
+
W tej sekcji powinieneś podać informacje kontaktowe, takie jak adres e-mail, profil na LinkedIn, strona internetowa itp.
|
145 |
+
|
146 |
+
<!-- Instalation:
|
147 |
+
git clone https://github.com/MattyMroz/mm_avh_working_space.git
|
148 |
+
cd mm_avh
|
149 |
+
pip install -r requirements.txt -->
|
mm_avh_working_space/bin/balabolka/balcon.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:2809d6a8dc5807dd631c8d053ef869bfe45e5cf6087667fa6216cf4ba4750d7a
|
3 |
+
size 1218048
|
mm_avh_working_space/bin/balabolka/readme.pol.txt
ADDED
@@ -0,0 +1,383 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Balabolka aplikacja konsolowa, wersja 1.79
|
2 |
+
Copyright c 2013-2022 Ilya Morozov
|
3 |
+
Wszystkie prawa zastrzeżone
|
4 |
+
|
5 |
+
WWW: http://balabolka.site/pl/bconsole.htm
|
6 |
+
E-mail: [email protected]
|
7 |
+
|
8 |
+
Licenzja: Freeware
|
9 |
+
System operacyjny: Microsoft Windows XP/Vista/7/8/10/11
|
10 |
+
Microsoft Speech API: 4.0/5.0
|
11 |
+
Microsoft Speech Platform: 11.0
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
+
Wiersz poleceń
|
16 |
+
|
17 |
+
balcon parametry
|
18 |
+
|
19 |
+
|
20 |
+
Parametry wiersza poleceń
|
21 |
+
|
22 |
+
-l
|
23 |
+
Pokazać listę głosów zainstalowanych na komputerze.
|
24 |
+
|
25 |
+
-g
|
26 |
+
Pokazać listę dostępnych urządzeń audio.
|
27 |
+
|
28 |
+
-f nazwa_pliku
|
29 |
+
Otworzyć plik tekstowy.Wiersz poleceń może zawierać kilka parametrów -f.
|
30 |
+
|
31 |
+
-fl nazwa_pliku
|
32 |
+
Sets the name of the text file with the list of input files one file name per line.Wiersz poleceń może zawierać kilka parametrów -fl.
|
33 |
+
|
34 |
+
-w nazwa_pliku
|
35 |
+
Zapisać plik dźwiękowy w formacie WAV.Jeśli parametr jest ustawiony, plik dźwiękowy zostanie utworzony.Jeśli parametr nie jest ustawiony, tekst zostanie przeczytany na głos.
|
36 |
+
|
37 |
+
-n nazwa_głosu
|
38 |
+
Wybrać głos wystarczy podać część jego nazwy.Jeśli parametr nie jest ustawiony, będzie używany głos wybrany w Panelu sterowania systemu Windows.
|
39 |
+
|
40 |
+
-id liczba
|
41 |
+
Wybrać głos komputerowy za pomocą identyfikatora języka Locale ID.Takie identyfikatory są przypisane wszystkim językom przez programistów Microsoft
|
42 |
+
np.1045 lub 0x0415 - język polski, 1058 lub 0x0422 - język ukraiński.
|
43 |
+
Program wybierze z listy pierwszy głos, identyfikator którego odpowiada określonej wartości.
|
44 |
+
Jeśli ten parametr nie zostanie określony, będzie używany głos określony przez parametr -n lub wybrany w Panelu sterowania systemu Windows.
|
45 |
+
Lista identyfikatorów: https://msdn.microsoft.com/en-us/library/cc233982.aspx
|
46 |
+
|
47 |
+
-m
|
48 |
+
Pokazać parametry wybranego głosu.
|
49 |
+
|
50 |
+
-b liczba
|
51 |
+
Wybrać urządzenie audio przez jego numer na liście dostępnych urządzeń do odtwarzania dźwięku.Numer urządzenia domyślnego dorówna 0.
|
52 |
+
|
53 |
+
-r tekst
|
54 |
+
Sets the audio output device by its name.
|
55 |
+
|
56 |
+
-c
|
57 |
+
Użyć tekstu ze schowka.
|
58 |
+
|
59 |
+
-t tekst
|
60 |
+
Użyć tekstu z wiersza poleceń.Wiersz poleceń może zawierać kilka parametrów -t.
|
61 |
+
|
62 |
+
-i
|
63 |
+
Użyć tekstu z standarowego strumienia wejścia STDIN.
|
64 |
+
|
65 |
+
-o
|
66 |
+
SAPI 4: parametr nie jest używany.
|
67 |
+
SAPI 5 i Microsoft Speech Platform: zapisać dżwięk do standarowego strumienia wyjścia STDOUT; jeśli parametr jest ustawiony, parametr -w jest ignorowany.
|
68 |
+
|
69 |
+
-s liczba
|
70 |
+
SAPI 4: ustawić prędkość mowy w zakresie od 0 do 100 brak wartości domyślnych.
|
71 |
+
SAPI 5 i Microsoft Speech Platform: ustawić prędkość mowy w zakresie od -10 do 10 wartość domyślna dorówna 0.
|
72 |
+
|
73 |
+
-p liczba
|
74 |
+
SAPI 4: ustawić ton mowy w zakresie od 0 do 100 brak wartości domyślnych.
|
75 |
+
SAPI 5 i Microsoft Speech Platform: ustawić ton mowy w zakresie od -10 do 10 wartość domyślna dorówna 0.
|
76 |
+
|
77 |
+
-v liczba
|
78 |
+
SAPI 4: parametr nie jest używany.
|
79 |
+
SAPI 5 i Microsoft Speech Platform: ustawić głosność mowy w zakresie od 0 do 100 wartość domyślna dorówna 100.
|
80 |
+
|
81 |
+
-e liczba
|
82 |
+
Ustawić długość pauzy między zdaniami milisekundy.Wartość domyślna dorówna 0.
|
83 |
+
|
84 |
+
-a liczba
|
85 |
+
Ustawić długość pauzy między akapitami milisekundy.Wartość domyślna dorówna 0.
|
86 |
+
|
87 |
+
-d nazwa_pliku
|
88 |
+
Użyć słownika do korekty wymowy plik z rozszerzeniem.BXD,.DIC lub.REX.Wiersz poleceń może zawierać kilka parametrów -d.
|
89 |
+
|
90 |
+
-k
|
91 |
+
Zatrzymać prace innych egzemplarzy aplikacji konsolowej uruchomionych na komputerze.
|
92 |
+
|
93 |
+
-ka
|
94 |
+
Kills the active copy of the console application in the computers memory.
|
95 |
+
|
96 |
+
-pr
|
97 |
+
Make pause or resume reading aloud by the active copy of the application.The action is the same as for the context menu item Pause/Resume.
|
98 |
+
|
99 |
+
-q
|
100 |
+
Dodać aplikację do kolejki.Aplikacja konsolowa będzie czekać, aż inne egzemplarzy programu skończą pracę.
|
101 |
+
|
102 |
+
-lrc
|
103 |
+
SAPI 4: parametr nie jest używany.
|
104 |
+
SAPI 5 i Microsoft Speech Platform: utworzyć plik LRC, jeśli ustawione parametry -w lub -o.
|
105 |
+
|
106 |
+
-srt
|
107 |
+
SAPI 4: parametr nie jest używany.
|
108 |
+
SAPI 5 i Microsoft Speech Platform: utworzyć plik SRT, jeśli ustawione parametry -w lub -o.
|
109 |
+
|
110 |
+
-vs nazwa_pliku
|
111 |
+
SAPI 4: parametr nie jest używany.
|
112 |
+
SAPI 5 i Microsoft Speech Platform: sets the name of output text file with visemes, if the option -w is specified.
|
113 |
+
A viseme is the mouth shape that corresponds to a particular speech sound.SAPI supports the list of 21 visemes.
|
114 |
+
This list is based on the original Disney visemes.The application will create the audio file and then read it aloud to get visemes and their timecodes.
|
115 |
+
The list of visemes supported by SAPI 5: https://msdn.microsoft.com/en-us/library/ms720881v=vs.85.aspx
|
116 |
+
|
117 |
+
-sub
|
118 |
+
Tekst wygląda jak napisy do plików i musi być przekształcony w plik dźwiękowy z wrachowaniem określonych odstępów czasu.
|
119 |
+
|
120 |
+
-tray
|
121 |
+
Pokazać ikonę programu w obszarze powiadomień systemu operacyjnego.
|
122 |
+
To pozwoli użytkownikowi monitorować postęp operacji, oraz przerwać proces klikając Stop w menu kontekstowym.
|
123 |
+
|
124 |
+
-ln liczba
|
125 |
+
Selects a line from the text file by using of a line number.The line numbering starts at 1.
|
126 |
+
The interval of numbers can be used for selecting of more than one line for example, 26-34.
|
127 |
+
Wiersz poleceń może zawierać kilka parametrów -ln.
|
128 |
+
|
129 |
+
-fr liczba
|
130 |
+
SAPI 4: parametr nie jest używany.
|
131 |
+
SAPI 5 i Microsoft Speech Platform: sets the output audio sampling frequency in kHz 8, 11, 12, 16, 22, 24, 32, 44, 48.
|
132 |
+
If the option is not specified, the default value of the selected voice will be used.
|
133 |
+
|
134 |
+
-bt liczba
|
135 |
+
SAPI 4: parametr nie jest używany.
|
136 |
+
SAPI 5 i Microsoft Speech Platform: sets the output audio bit depth 8 lub 16.
|
137 |
+
If the option is not specified, the default value of the selected voice will be used.
|
138 |
+
|
139 |
+
-ch liczba
|
140 |
+
SAPI 4: parametr nie jest używany.
|
141 |
+
SAPI 5 i Microsoft Speech Platform: sets the output audio channel mode 1 lub 2.
|
142 |
+
If the option is not specified, the default value of the selected voice will be used.
|
143 |
+
|
144 |
+
-h
|
145 |
+
Pokazać opis parametrów wiersza poleceń.
|
146 |
+
|
147 |
+
--encoding kodowanie lub -enc kodowanie
|
148 |
+
Kodowanie tekstu ze standardowego strumiena wejściowego ansi, utf8 lub unicode.Wartość domyślna dorówna ansi.
|
149 |
+
|
150 |
+
--silence-begin liczba lub -sb liczba
|
151 |
+
Ustawić długość pauzy na początku pliku dźwiękowego w milisekundach.Wartość domyślna dorówna 0.
|
152 |
+
|
153 |
+
--silence-end liczba lub -se liczba
|
154 |
+
Ustawić długość pauzy na końcu pliku dźwiękowego w milisekundach.Wartość domyślna dorówna 0.
|
155 |
+
|
156 |
+
--lrc-length liczba
|
157 |
+
Ustawić maksymalną długość wierszy plika LRC symboli.
|
158 |
+
|
159 |
+
--lrc-fname nazwa_pliku
|
160 |
+
Nazwa pliku LRC.Parametr może być przydatny gdy w wierszu poleceń ustawiony parametr -o.
|
161 |
+
|
162 |
+
--lrc-enc kodowanie
|
163 |
+
Kodowanie pliku LRC ansi, utf8 lub unicode.Wartość domyślna dorówna ansi.
|
164 |
+
|
165 |
+
--lrc-offset liczba
|
166 |
+
Ustawić przesunięcie czasu dla pliku LRC milisekundy.
|
167 |
+
|
168 |
+
--lrc-artist tekst
|
169 |
+
Znacznik dla pliku LRC: wykonawca utworu.
|
170 |
+
|
171 |
+
--lrc-album tekst
|
172 |
+
Znacznik dla pliku LRC: album.
|
173 |
+
|
174 |
+
--lrc-title tekst
|
175 |
+
Znacznik dla pliku LRC: nazwa utworu.
|
176 |
+
|
177 |
+
--lrc-author tekst
|
178 |
+
Znacznik dla pliku LRC: autor.
|
179 |
+
|
180 |
+
--lrc-creator tekst
|
181 |
+
Znacznik dla pliku LRC: twórcą pliku.
|
182 |
+
|
183 |
+
--lrc-sent
|
184 |
+
Inserts blank lines after sentences in the LRC file.
|
185 |
+
|
186 |
+
--lrc-para
|
187 |
+
Inserts blank lines after paragraphs in the LRC file.
|
188 |
+
|
189 |
+
--srt-length liczba
|
190 |
+
Ustawić maksymalną długość wierszy plika SRT symboli.
|
191 |
+
|
192 |
+
--srt-fname nazwa_pliku
|
193 |
+
Nazwa pliku SRT.Parametr może być przydatny gdy w wierszu poleceń ustawiony parametr -o.
|
194 |
+
|
195 |
+
--srt-enc kodowanie
|
196 |
+
Kodowanie pliku SRT ansi, utf8 lub unicode.Wartość domyślna dorówna ansi.
|
197 |
+
|
198 |
+
--raw
|
199 |
+
SAPI 4: parametr nie jest używany.
|
200 |
+
SAPI 5 i Microsoft Speech Platform: zapisać dżwiek w formacie RAW PCM; dane nie zawierają tytułu formatu WAV.
|
201 |
+
Parametr wykorzystuję się razem z parametrem -o.
|
202 |
+
|
203 |
+
--ignore-length lub -il
|
204 |
+
SAPI 4: parametr nie jest używany.
|
205 |
+
SAPI 5 i Microsoft Speech Platform: nie zapisywać rozmiar audio do tytułu formatu WAV.Parametr wykorzystuję się razem z parametrem -o.
|
206 |
+
|
207 |
+
--sub-format tekst
|
208 |
+
Format napisów filmowych srt, lrc, ssa, ass, smi lub vtt.Jeśli parametr nie określony format zostanie wybrany przez rozszerzenie nazwy pliku napisów.
|
209 |
+
|
210 |
+
--sub-fit lub -sf
|
211 |
+
SAPI 4: parametr nie jest używany.
|
212 |
+
SAPI 5 i Microsoft Speech Platform: automatycznie zwiększać prędkość mowy aby zmieścić się w odstępy czasu określone w napisach.
|
213 |
+
|
214 |
+
--sub-max liczba lub -sm liczba
|
215 |
+
SAPI 4: parametr nie jest używany.
|
216 |
+
SAPI 5 i Microsoft Speech Platform: ustawić maksymalną prędkość mowy w zakresie od -10 do 10 do konwersji napisów w pliki dźwiękowe.
|
217 |
+
|
218 |
+
--delete-file lub -df
|
219 |
+
Usunąć plik tekstowy po zakończeniu czytania na głos lub zapisywania pliku dźwiękowego.
|
220 |
+
|
221 |
+
--ignore-square-brackets lub -isb
|
222 |
+
Ignore text in square brackets.
|
223 |
+
|
224 |
+
--ignore-curly-brackets lub -icb
|
225 |
+
Ignore text in curly brackets.
|
226 |
+
|
227 |
+
--ignore-angle-brackets lub -iab
|
228 |
+
Ignore text in angle brackets.
|
229 |
+
|
230 |
+
--ignore-round-brackets lub -irb
|
231 |
+
Ignore text in round brackets.
|
232 |
+
|
233 |
+
--ignore-url lub -iu
|
234 |
+
Ignore URLs.
|
235 |
+
|
236 |
+
--ignore-comments lub -ic
|
237 |
+
Ignore comments in text.Single-line comments start with // and continue until the end of the line.Multiline comments start with / and end with /.
|
238 |
+
|
239 |
+
--voice1-name nazwa_głosu
|
240 |
+
SAPI 4: parametr nie jest używany.
|
241 |
+
SAPI 5 i Microsoft Speech Platform: sets the additional voice name to read foreign words in text the part of the name will be enough.
|
242 |
+
The option is used together with the option --voice1-langid.Other voices can be set by options --voice2-name, --voice3-name, etc.
|
243 |
+
|
244 |
+
--voice1-langid identyfikator_języka
|
245 |
+
Sets the language ID for foreign words in text.The option is used together with the option --voice1-name.The command line may contain more than one option --voice1-langid.Also an option may contain a comma-separated list of IDs.
|
246 |
+
The list of supported language IDs is based on ISO 639-1 codes: am, ar, az, ba, bg, be, ca, cs, cu, cv, da, de, el, en, es, et, eu, fi, fil, fr, ja, he, hi, hr, hu, hy, it, gn, gu, ka, kk-Cyr, kk-Lat, kn, ko, ky, lo, lt, lv, mk, no, pl, pt, ro, ru, sk, sl, sr-Cyr, sr-Lat, sv, tg, th, tr, tt, uk, zh.
|
247 |
+
|
248 |
+
--voice1-rate liczba
|
249 |
+
Sets the rate for the additional voice in a range of -10 to 10 the default is 0.
|
250 |
+
|
251 |
+
--voice1-pitch liczba
|
252 |
+
Sets the pitch for the additional voice in a range of -10 to 10 the default is 0.
|
253 |
+
|
254 |
+
--voice1-volume liczba
|
255 |
+
Sets the volume for the additional voice in a range of 0 to 100 the default is 100.
|
256 |
+
|
257 |
+
--voice1-roman
|
258 |
+
Use the default voice to read Roman numerals in text.If text with non-Latin characters contains Roman numerals, the application will not change a voice to read them.
|
259 |
+
|
260 |
+
--voice1-digit
|
261 |
+
Use the default voice to read numbers in text.
|
262 |
+
|
263 |
+
--voice1-length liczba
|
264 |
+
Set the minimal length of foreign text parts that will be read by the additional voice in characters.
|
265 |
+
|
266 |
+
|
267 |
+
Przykłady
|
268 |
+
|
269 |
+
balcon -l
|
270 |
+
|
271 |
+
balcon -n Microsoft Anna -m
|
272 |
+
|
273 |
+
balcon -f d:\Text\book.txt -w d:\Sound\book.wav -n Emma
|
274 |
+
|
275 |
+
balcon -n Callie -c -d d:\rex\rules.rex -d d:\dic\rules.dic
|
276 |
+
|
277 |
+
balcon -n Ewa -t Tekst będzie czytany wolno.-s -5 -v 70
|
278 |
+
|
279 |
+
balcon -k
|
280 |
+
|
281 |
+
balcon -f d:\Text\book.txt -w d:\Sound\book.wav -lrc --lrc-length 80 --lrc-title The Lord of the Rings
|
282 |
+
|
283 |
+
balcon -f d:\Text\film.srt -w d:\Sound\film.wav -n Laura --sub-fit --sub-max 2
|
284 |
+
|
285 |
+
balcon -f d:\Text\book.txt -n Kimberly --voice1-name Tatyana --voice1-langid ru
|
286 |
+
|
287 |
+
|
288 |
+
Przykład wykorzystania aplikacji razem z oprogramowaniem narzędziowym LAME.EXE:
|
289 |
+
|
290 |
+
balcon -f d:\book.txt -n Heather -o --raw | lame -r -s 22.05 -m m -h - d:\book.mp3
|
291 |
+
|
292 |
+
|
293 |
+
Przykład wykorzystania aplikacji razem z oprogramowaniem narzędziowym OGGENC2.EXE:
|
294 |
+
|
295 |
+
balcon -f d:\book.txt -n Heather -o -il | oggenc2 --ignorelength - -o d:\book.ogg
|
296 |
+
|
297 |
+
|
298 |
+
Przykład wykorzystania aplikacji razem z oprogramowaniem narzędziowym WMAENCODE.EXE:
|
299 |
+
|
300 |
+
balcon -f d:\book.txt -n Heather -o -il | wmaencode - d:\book.wma --ignorelength
|
301 |
+
|
302 |
+
|
303 |
+
Plik konfiguracyjny
|
304 |
+
|
305 |
+
Parametry można zachować jak plik konfiguracyjny balcon.cfg w tym samym folderze co aplikacja konsolowa.
|
306 |
+
|
307 |
+
Przykład zawartości pliku:
|
308 |
+
===============
|
309 |
+
-f d:\Text\book.txt
|
310 |
+
-w d:\Sound\book.wav
|
311 |
+
-n Microsoft Anna
|
312 |
+
-s 2
|
313 |
+
-p -1
|
314 |
+
-v 95
|
315 |
+
-e 300
|
316 |
+
-d d:\Dict\rules.bxd
|
317 |
+
-lrc
|
318 |
+
--lrc-length 75
|
319 |
+
--lrc-enc utf8
|
320 |
+
--lrc-offset 300
|
321 |
+
===============
|
322 |
+
|
323 |
+
Program może kombinować parametry z pliku konfiguracyjnego i wiersza poleceń.
|
324 |
+
|
325 |
+
|
326 |
+
Audio Clips
|
327 |
+
|
328 |
+
The application allows to insert links to external WAV files audio clips into text.Audio clip tag will look like:
|
329 |
+
|
330 |
+
Audio=C:\Sounds\ring.wav
|
331 |
+
|
332 |
+
When speaking text aloud, the program will pause when the audio clip tag is reached, play the audio clip and resume speaking.
|
333 |
+
When converting to audio files, the audio clip will be embedded in the audio file created by the application.
|
334 |
+
|
335 |
+
|
336 |
+
Voice Tag
|
337 |
+
|
338 |
+
If it is necessary to change a voice or its properties during reading aloud, a special tag can be used for SAPI 5 and Microsoft Speech Platform SAPI 4 voices will ignore this tag.
|
339 |
+
|
340 |
+
The tag format:
|
341 |
+
|
342 |
+
Voice=Name;Rate;Pitch;Volume
|
343 |
+
|
344 |
+
- Name: the name of a voice one word or the part of a word is enough;
|
345 |
+
- Rate: the rate of a voice values range from -10 to 10;
|
346 |
+
- Pitch: the pitch of a voice values range from -10 to 10;
|
347 |
+
- Volume: the volume values range from 0 to 100.
|
348 |
+
|
349 |
+
A tag applies to all subsequent text.The values are separated by semicolons.For example:
|
350 |
+
|
351 |
+
This text will be spoken by the default voice of Balabolka.Voice=Kimberly;0;0;100 The voice Kimberly will read the other text.
|
352 |
+
|
353 |
+
The tags content is case insensitive.Values for some properties can be omitted:
|
354 |
+
|
355 |
+
voice=eric;;;50
|
356 |
+
|
357 |
+
Voice=Hans;-1
|
358 |
+
|
359 |
+
Voice=Rachel
|
360 |
+
|
361 |
+
To return to the default voice, use this tag:
|
362 |
+
|
363 |
+
Voice=
|
364 |
+
|
365 |
+
Warning! It is impossible to switch between SAPI 5 voices and voices of the Microsoft Speech Platform.
|
366 |
+
|
367 |
+
|
368 |
+
Pause Tag
|
369 |
+
|
370 |
+
A specified number of milliseconds of silence can be inserted into the output audio file.For example:
|
371 |
+
|
372 |
+
One hundred twenty milliseconds of silence Pause=120 just occurred.
|
373 |
+
|
374 |
+
|
375 |
+
Licencja
|
376 |
+
|
377 |
+
Prawo do użytku niekomercyjnego:
|
378 |
+
- dla osób fizycznych - bez ograniczeń;
|
379 |
+
- dla osób prawnych - z zastrzeżeniem ograniczeń, co określa Umowa licencyjna programu Balabolka.
|
380 |
+
|
381 |
+
Użytek komercyjny dozwolony jedynie za wcześniejszą zgodą posiadacza praw autorskich.
|
382 |
+
|
383 |
+
###
|
mm_avh_working_space/bin/esrgan/realesrgan-ncnn-vulkan.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:07e49f7cbb4ede01ae4dd4c399d3a7e5846e3d2085c3128eff881e55cb7b1a0c
|
3 |
+
size 6161408
|
mm_avh_working_space/bin/esrgan/vcomp140.dll
ADDED
Binary file (183 kB). View file
|
|
mm_avh_working_space/bin/esrgan/vcomp140d.dll
ADDED
Binary file (208 kB). View file
|
|
mm_avh_working_space/bin/ffmpeg/FFmpeg.url
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
[InternetShortcut]
|
2 |
+
URL=https://www.gyan.dev/ffmpeg/builds/
|
mm_avh_working_space/bin/ffmpeg/LICENSE
ADDED
@@ -0,0 +1,674 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU GENERAL PUBLIC LICENSE
|
2 |
+
Version 3, 29 June 2007
|
3 |
+
|
4 |
+
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
5 |
+
Everyone is permitted to copy and distribute verbatim copies
|
6 |
+
of this license document, but changing it is not allowed.
|
7 |
+
|
8 |
+
Preamble
|
9 |
+
|
10 |
+
The GNU General Public License is a free, copyleft license for
|
11 |
+
software and other kinds of works.
|
12 |
+
|
13 |
+
The licenses for most software and other practical works are designed
|
14 |
+
to take away your freedom to share and change the works. By contrast,
|
15 |
+
the GNU General Public License is intended to guarantee your freedom to
|
16 |
+
share and change all versions of a program--to make sure it remains free
|
17 |
+
software for all its users. We, the Free Software Foundation, use the
|
18 |
+
GNU General Public License for most of our software; it applies also to
|
19 |
+
any other work released this way by its authors. You can apply it to
|
20 |
+
your programs, too.
|
21 |
+
|
22 |
+
When we speak of free software, we are referring to freedom, not
|
23 |
+
price. Our General Public Licenses are designed to make sure that you
|
24 |
+
have the freedom to distribute copies of free software (and charge for
|
25 |
+
them if you wish), that you receive source code or can get it if you
|
26 |
+
want it, that you can change the software or use pieces of it in new
|
27 |
+
free programs, and that you know you can do these things.
|
28 |
+
|
29 |
+
To protect your rights, we need to prevent others from denying you
|
30 |
+
these rights or asking you to surrender the rights. Therefore, you have
|
31 |
+
certain responsibilities if you distribute copies of the software, or if
|
32 |
+
you modify it: responsibilities to respect the freedom of others.
|
33 |
+
|
34 |
+
For example, if you distribute copies of such a program, whether
|
35 |
+
gratis or for a fee, you must pass on to the recipients the same
|
36 |
+
freedoms that you received. You must make sure that they, too, receive
|
37 |
+
or can get the source code. And you must show them these terms so they
|
38 |
+
know their rights.
|
39 |
+
|
40 |
+
Developers that use the GNU GPL protect your rights with two steps:
|
41 |
+
(1) assert copyright on the software, and (2) offer you this License
|
42 |
+
giving you legal permission to copy, distribute and/or modify it.
|
43 |
+
|
44 |
+
For the developers' and authors' protection, the GPL clearly explains
|
45 |
+
that there is no warranty for this free software. For both users' and
|
46 |
+
authors' sake, the GPL requires that modified versions be marked as
|
47 |
+
changed, so that their problems will not be attributed erroneously to
|
48 |
+
authors of previous versions.
|
49 |
+
|
50 |
+
Some devices are designed to deny users access to install or run
|
51 |
+
modified versions of the software inside them, although the manufacturer
|
52 |
+
can do so. This is fundamentally incompatible with the aim of
|
53 |
+
protecting users' freedom to change the software. The systematic
|
54 |
+
pattern of such abuse occurs in the area of products for individuals to
|
55 |
+
use, which is precisely where it is most unacceptable. Therefore, we
|
56 |
+
have designed this version of the GPL to prohibit the practice for those
|
57 |
+
products. If such problems arise substantially in other domains, we
|
58 |
+
stand ready to extend this provision to those domains in future versions
|
59 |
+
of the GPL, as needed to protect the freedom of users.
|
60 |
+
|
61 |
+
Finally, every program is threatened constantly by software patents.
|
62 |
+
States should not allow patents to restrict development and use of
|
63 |
+
software on general-purpose computers, but in those that do, we wish to
|
64 |
+
avoid the special danger that patents applied to a free program could
|
65 |
+
make it effectively proprietary. To prevent this, the GPL assures that
|
66 |
+
patents cannot be used to render the program non-free.
|
67 |
+
|
68 |
+
The precise terms and conditions for copying, distribution and
|
69 |
+
modification follow.
|
70 |
+
|
71 |
+
TERMS AND CONDITIONS
|
72 |
+
|
73 |
+
0. Definitions.
|
74 |
+
|
75 |
+
"This License" refers to version 3 of the GNU General Public License.
|
76 |
+
|
77 |
+
"Copyright" also means copyright-like laws that apply to other kinds of
|
78 |
+
works, such as semiconductor masks.
|
79 |
+
|
80 |
+
"The Program" refers to any copyrightable work licensed under this
|
81 |
+
License. Each licensee is addressed as "you". "Licensees" and
|
82 |
+
"recipients" may be individuals or organizations.
|
83 |
+
|
84 |
+
To "modify" a work means to copy from or adapt all or part of the work
|
85 |
+
in a fashion requiring copyright permission, other than the making of an
|
86 |
+
exact copy. The resulting work is called a "modified version" of the
|
87 |
+
earlier work or a work "based on" the earlier work.
|
88 |
+
|
89 |
+
A "covered work" means either the unmodified Program or a work based
|
90 |
+
on the Program.
|
91 |
+
|
92 |
+
To "propagate" a work means to do anything with it that, without
|
93 |
+
permission, would make you directly or secondarily liable for
|
94 |
+
infringement under applicable copyright law, except executing it on a
|
95 |
+
computer or modifying a private copy. Propagation includes copying,
|
96 |
+
distribution (with or without modification), making available to the
|
97 |
+
public, and in some countries other activities as well.
|
98 |
+
|
99 |
+
To "convey" a work means any kind of propagation that enables other
|
100 |
+
parties to make or receive copies. Mere interaction with a user through
|
101 |
+
a computer network, with no transfer of a copy, is not conveying.
|
102 |
+
|
103 |
+
An interactive user interface displays "Appropriate Legal Notices"
|
104 |
+
to the extent that it includes a convenient and prominently visible
|
105 |
+
feature that (1) displays an appropriate copyright notice, and (2)
|
106 |
+
tells the user that there is no warranty for the work (except to the
|
107 |
+
extent that warranties are provided), that licensees may convey the
|
108 |
+
work under this License, and how to view a copy of this License. If
|
109 |
+
the interface presents a list of user commands or options, such as a
|
110 |
+
menu, a prominent item in the list meets this criterion.
|
111 |
+
|
112 |
+
1. Source Code.
|
113 |
+
|
114 |
+
The "source code" for a work means the preferred form of the work
|
115 |
+
for making modifications to it. "Object code" means any non-source
|
116 |
+
form of a work.
|
117 |
+
|
118 |
+
A "Standard Interface" means an interface that either is an official
|
119 |
+
standard defined by a recognized standards body, or, in the case of
|
120 |
+
interfaces specified for a particular programming language, one that
|
121 |
+
is widely used among developers working in that language.
|
122 |
+
|
123 |
+
The "System Libraries" of an executable work include anything, other
|
124 |
+
than the work as a whole, that (a) is included in the normal form of
|
125 |
+
packaging a Major Component, but which is not part of that Major
|
126 |
+
Component, and (b) serves only to enable use of the work with that
|
127 |
+
Major Component, or to implement a Standard Interface for which an
|
128 |
+
implementation is available to the public in source code form. A
|
129 |
+
"Major Component", in this context, means a major essential component
|
130 |
+
(kernel, window system, and so on) of the specific operating system
|
131 |
+
(if any) on which the executable work runs, or a compiler used to
|
132 |
+
produce the work, or an object code interpreter used to run it.
|
133 |
+
|
134 |
+
The "Corresponding Source" for a work in object code form means all
|
135 |
+
the source code needed to generate, install, and (for an executable
|
136 |
+
work) run the object code and to modify the work, including scripts to
|
137 |
+
control those activities. However, it does not include the work's
|
138 |
+
System Libraries, or general-purpose tools or generally available free
|
139 |
+
programs which are used unmodified in performing those activities but
|
140 |
+
which are not part of the work. For example, Corresponding Source
|
141 |
+
includes interface definition files associated with source files for
|
142 |
+
the work, and the source code for shared libraries and dynamically
|
143 |
+
linked subprograms that the work is specifically designed to require,
|
144 |
+
such as by intimate data communication or control flow between those
|
145 |
+
subprograms and other parts of the work.
|
146 |
+
|
147 |
+
The Corresponding Source need not include anything that users
|
148 |
+
can regenerate automatically from other parts of the Corresponding
|
149 |
+
Source.
|
150 |
+
|
151 |
+
The Corresponding Source for a work in source code form is that
|
152 |
+
same work.
|
153 |
+
|
154 |
+
2. Basic Permissions.
|
155 |
+
|
156 |
+
All rights granted under this License are granted for the term of
|
157 |
+
copyright on the Program, and are irrevocable provided the stated
|
158 |
+
conditions are met. This License explicitly affirms your unlimited
|
159 |
+
permission to run the unmodified Program. The output from running a
|
160 |
+
covered work is covered by this License only if the output, given its
|
161 |
+
content, constitutes a covered work. This License acknowledges your
|
162 |
+
rights of fair use or other equivalent, as provided by copyright law.
|
163 |
+
|
164 |
+
You may make, run and propagate covered works that you do not
|
165 |
+
convey, without conditions so long as your license otherwise remains
|
166 |
+
in force. You may convey covered works to others for the sole purpose
|
167 |
+
of having them make modifications exclusively for you, or provide you
|
168 |
+
with facilities for running those works, provided that you comply with
|
169 |
+
the terms of this License in conveying all material for which you do
|
170 |
+
not control copyright. Those thus making or running the covered works
|
171 |
+
for you must do so exclusively on your behalf, under your direction
|
172 |
+
and control, on terms that prohibit them from making any copies of
|
173 |
+
your copyrighted material outside their relationship with you.
|
174 |
+
|
175 |
+
Conveying under any other circumstances is permitted solely under
|
176 |
+
the conditions stated below. Sublicensing is not allowed; section 10
|
177 |
+
makes it unnecessary.
|
178 |
+
|
179 |
+
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
180 |
+
|
181 |
+
No covered work shall be deemed part of an effective technological
|
182 |
+
measure under any applicable law fulfilling obligations under article
|
183 |
+
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
184 |
+
similar laws prohibiting or restricting circumvention of such
|
185 |
+
measures.
|
186 |
+
|
187 |
+
When you convey a covered work, you waive any legal power to forbid
|
188 |
+
circumvention of technological measures to the extent such circumvention
|
189 |
+
is effected by exercising rights under this License with respect to
|
190 |
+
the covered work, and you disclaim any intention to limit operation or
|
191 |
+
modification of the work as a means of enforcing, against the work's
|
192 |
+
users, your or third parties' legal rights to forbid circumvention of
|
193 |
+
technological measures.
|
194 |
+
|
195 |
+
4. Conveying Verbatim Copies.
|
196 |
+
|
197 |
+
You may convey verbatim copies of the Program's source code as you
|
198 |
+
receive it, in any medium, provided that you conspicuously and
|
199 |
+
appropriately publish on each copy an appropriate copyright notice;
|
200 |
+
keep intact all notices stating that this License and any
|
201 |
+
non-permissive terms added in accord with section 7 apply to the code;
|
202 |
+
keep intact all notices of the absence of any warranty; and give all
|
203 |
+
recipients a copy of this License along with the Program.
|
204 |
+
|
205 |
+
You may charge any price or no price for each copy that you convey,
|
206 |
+
and you may offer support or warranty protection for a fee.
|
207 |
+
|
208 |
+
5. Conveying Modified Source Versions.
|
209 |
+
|
210 |
+
You may convey a work based on the Program, or the modifications to
|
211 |
+
produce it from the Program, in the form of source code under the
|
212 |
+
terms of section 4, provided that you also meet all of these conditions:
|
213 |
+
|
214 |
+
a) The work must carry prominent notices stating that you modified
|
215 |
+
it, and giving a relevant date.
|
216 |
+
|
217 |
+
b) The work must carry prominent notices stating that it is
|
218 |
+
released under this License and any conditions added under section
|
219 |
+
7. This requirement modifies the requirement in section 4 to
|
220 |
+
"keep intact all notices".
|
221 |
+
|
222 |
+
c) You must license the entire work, as a whole, under this
|
223 |
+
License to anyone who comes into possession of a copy. This
|
224 |
+
License will therefore apply, along with any applicable section 7
|
225 |
+
additional terms, to the whole of the work, and all its parts,
|
226 |
+
regardless of how they are packaged. This License gives no
|
227 |
+
permission to license the work in any other way, but it does not
|
228 |
+
invalidate such permission if you have separately received it.
|
229 |
+
|
230 |
+
d) If the work has interactive user interfaces, each must display
|
231 |
+
Appropriate Legal Notices; however, if the Program has interactive
|
232 |
+
interfaces that do not display Appropriate Legal Notices, your
|
233 |
+
work need not make them do so.
|
234 |
+
|
235 |
+
A compilation of a covered work with other separate and independent
|
236 |
+
works, which are not by their nature extensions of the covered work,
|
237 |
+
and which are not combined with it such as to form a larger program,
|
238 |
+
in or on a volume of a storage or distribution medium, is called an
|
239 |
+
"aggregate" if the compilation and its resulting copyright are not
|
240 |
+
used to limit the access or legal rights of the compilation's users
|
241 |
+
beyond what the individual works permit. Inclusion of a covered work
|
242 |
+
in an aggregate does not cause this License to apply to the other
|
243 |
+
parts of the aggregate.
|
244 |
+
|
245 |
+
6. Conveying Non-Source Forms.
|
246 |
+
|
247 |
+
You may convey a covered work in object code form under the terms
|
248 |
+
of sections 4 and 5, provided that you also convey the
|
249 |
+
machine-readable Corresponding Source under the terms of this License,
|
250 |
+
in one of these ways:
|
251 |
+
|
252 |
+
a) Convey the object code in, or embodied in, a physical product
|
253 |
+
(including a physical distribution medium), accompanied by the
|
254 |
+
Corresponding Source fixed on a durable physical medium
|
255 |
+
customarily used for software interchange.
|
256 |
+
|
257 |
+
b) Convey the object code in, or embodied in, a physical product
|
258 |
+
(including a physical distribution medium), accompanied by a
|
259 |
+
written offer, valid for at least three years and valid for as
|
260 |
+
long as you offer spare parts or customer support for that product
|
261 |
+
model, to give anyone who possesses the object code either (1) a
|
262 |
+
copy of the Corresponding Source for all the software in the
|
263 |
+
product that is covered by this License, on a durable physical
|
264 |
+
medium customarily used for software interchange, for a price no
|
265 |
+
more than your reasonable cost of physically performing this
|
266 |
+
conveying of source, or (2) access to copy the
|
267 |
+
Corresponding Source from a network server at no charge.
|
268 |
+
|
269 |
+
c) Convey individual copies of the object code with a copy of the
|
270 |
+
written offer to provide the Corresponding Source. This
|
271 |
+
alternative is allowed only occasionally and noncommercially, and
|
272 |
+
only if you received the object code with such an offer, in accord
|
273 |
+
with subsection 6b.
|
274 |
+
|
275 |
+
d) Convey the object code by offering access from a designated
|
276 |
+
place (gratis or for a charge), and offer equivalent access to the
|
277 |
+
Corresponding Source in the same way through the same place at no
|
278 |
+
further charge. You need not require recipients to copy the
|
279 |
+
Corresponding Source along with the object code. If the place to
|
280 |
+
copy the object code is a network server, the Corresponding Source
|
281 |
+
may be on a different server (operated by you or a third party)
|
282 |
+
that supports equivalent copying facilities, provided you maintain
|
283 |
+
clear directions next to the object code saying where to find the
|
284 |
+
Corresponding Source. Regardless of what server hosts the
|
285 |
+
Corresponding Source, you remain obligated to ensure that it is
|
286 |
+
available for as long as needed to satisfy these requirements.
|
287 |
+
|
288 |
+
e) Convey the object code using peer-to-peer transmission, provided
|
289 |
+
you inform other peers where the object code and Corresponding
|
290 |
+
Source of the work are being offered to the general public at no
|
291 |
+
charge under subsection 6d.
|
292 |
+
|
293 |
+
A separable portion of the object code, whose source code is excluded
|
294 |
+
from the Corresponding Source as a System Library, need not be
|
295 |
+
included in conveying the object code work.
|
296 |
+
|
297 |
+
A "User Product" is either (1) a "consumer product", which means any
|
298 |
+
tangible personal property which is normally used for personal, family,
|
299 |
+
or household purposes, or (2) anything designed or sold for incorporation
|
300 |
+
into a dwelling. In determining whether a product is a consumer product,
|
301 |
+
doubtful cases shall be resolved in favor of coverage. For a particular
|
302 |
+
product received by a particular user, "normally used" refers to a
|
303 |
+
typical or common use of that class of product, regardless of the status
|
304 |
+
of the particular user or of the way in which the particular user
|
305 |
+
actually uses, or expects or is expected to use, the product. A product
|
306 |
+
is a consumer product regardless of whether the product has substantial
|
307 |
+
commercial, industrial or non-consumer uses, unless such uses represent
|
308 |
+
the only significant mode of use of the product.
|
309 |
+
|
310 |
+
"Installation Information" for a User Product means any methods,
|
311 |
+
procedures, authorization keys, or other information required to install
|
312 |
+
and execute modified versions of a covered work in that User Product from
|
313 |
+
a modified version of its Corresponding Source. The information must
|
314 |
+
suffice to ensure that the continued functioning of the modified object
|
315 |
+
code is in no case prevented or interfered with solely because
|
316 |
+
modification has been made.
|
317 |
+
|
318 |
+
If you convey an object code work under this section in, or with, or
|
319 |
+
specifically for use in, a User Product, and the conveying occurs as
|
320 |
+
part of a transaction in which the right of possession and use of the
|
321 |
+
User Product is transferred to the recipient in perpetuity or for a
|
322 |
+
fixed term (regardless of how the transaction is characterized), the
|
323 |
+
Corresponding Source conveyed under this section must be accompanied
|
324 |
+
by the Installation Information. But this requirement does not apply
|
325 |
+
if neither you nor any third party retains the ability to install
|
326 |
+
modified object code on the User Product (for example, the work has
|
327 |
+
been installed in ROM).
|
328 |
+
|
329 |
+
The requirement to provide Installation Information does not include a
|
330 |
+
requirement to continue to provide support service, warranty, or updates
|
331 |
+
for a work that has been modified or installed by the recipient, or for
|
332 |
+
the User Product in which it has been modified or installed. Access to a
|
333 |
+
network may be denied when the modification itself materially and
|
334 |
+
adversely affects the operation of the network or violates the rules and
|
335 |
+
protocols for communication across the network.
|
336 |
+
|
337 |
+
Corresponding Source conveyed, and Installation Information provided,
|
338 |
+
in accord with this section must be in a format that is publicly
|
339 |
+
documented (and with an implementation available to the public in
|
340 |
+
source code form), and must require no special password or key for
|
341 |
+
unpacking, reading or copying.
|
342 |
+
|
343 |
+
7. Additional Terms.
|
344 |
+
|
345 |
+
"Additional permissions" are terms that supplement the terms of this
|
346 |
+
License by making exceptions from one or more of its conditions.
|
347 |
+
Additional permissions that are applicable to the entire Program shall
|
348 |
+
be treated as though they were included in this License, to the extent
|
349 |
+
that they are valid under applicable law. If additional permissions
|
350 |
+
apply only to part of the Program, that part may be used separately
|
351 |
+
under those permissions, but the entire Program remains governed by
|
352 |
+
this License without regard to the additional permissions.
|
353 |
+
|
354 |
+
When you convey a copy of a covered work, you may at your option
|
355 |
+
remove any additional permissions from that copy, or from any part of
|
356 |
+
it. (Additional permissions may be written to require their own
|
357 |
+
removal in certain cases when you modify the work.) You may place
|
358 |
+
additional permissions on material, added by you to a covered work,
|
359 |
+
for which you have or can give appropriate copyright permission.
|
360 |
+
|
361 |
+
Notwithstanding any other provision of this License, for material you
|
362 |
+
add to a covered work, you may (if authorized by the copyright holders of
|
363 |
+
that material) supplement the terms of this License with terms:
|
364 |
+
|
365 |
+
a) Disclaiming warranty or limiting liability differently from the
|
366 |
+
terms of sections 15 and 16 of this License; or
|
367 |
+
|
368 |
+
b) Requiring preservation of specified reasonable legal notices or
|
369 |
+
author attributions in that material or in the Appropriate Legal
|
370 |
+
Notices displayed by works containing it; or
|
371 |
+
|
372 |
+
c) Prohibiting misrepresentation of the origin of that material, or
|
373 |
+
requiring that modified versions of such material be marked in
|
374 |
+
reasonable ways as different from the original version; or
|
375 |
+
|
376 |
+
d) Limiting the use for publicity purposes of names of licensors or
|
377 |
+
authors of the material; or
|
378 |
+
|
379 |
+
e) Declining to grant rights under trademark law for use of some
|
380 |
+
trade names, trademarks, or service marks; or
|
381 |
+
|
382 |
+
f) Requiring indemnification of licensors and authors of that
|
383 |
+
material by anyone who conveys the material (or modified versions of
|
384 |
+
it) with contractual assumptions of liability to the recipient, for
|
385 |
+
any liability that these contractual assumptions directly impose on
|
386 |
+
those licensors and authors.
|
387 |
+
|
388 |
+
All other non-permissive additional terms are considered "further
|
389 |
+
restrictions" within the meaning of section 10. If the Program as you
|
390 |
+
received it, or any part of it, contains a notice stating that it is
|
391 |
+
governed by this License along with a term that is a further
|
392 |
+
restriction, you may remove that term. If a license document contains
|
393 |
+
a further restriction but permits relicensing or conveying under this
|
394 |
+
License, you may add to a covered work material governed by the terms
|
395 |
+
of that license document, provided that the further restriction does
|
396 |
+
not survive such relicensing or conveying.
|
397 |
+
|
398 |
+
If you add terms to a covered work in accord with this section, you
|
399 |
+
must place, in the relevant source files, a statement of the
|
400 |
+
additional terms that apply to those files, or a notice indicating
|
401 |
+
where to find the applicable terms.
|
402 |
+
|
403 |
+
Additional terms, permissive or non-permissive, may be stated in the
|
404 |
+
form of a separately written license, or stated as exceptions;
|
405 |
+
the above requirements apply either way.
|
406 |
+
|
407 |
+
8. Termination.
|
408 |
+
|
409 |
+
You may not propagate or modify a covered work except as expressly
|
410 |
+
provided under this License. Any attempt otherwise to propagate or
|
411 |
+
modify it is void, and will automatically terminate your rights under
|
412 |
+
this License (including any patent licenses granted under the third
|
413 |
+
paragraph of section 11).
|
414 |
+
|
415 |
+
However, if you cease all violation of this License, then your
|
416 |
+
license from a particular copyright holder is reinstated (a)
|
417 |
+
provisionally, unless and until the copyright holder explicitly and
|
418 |
+
finally terminates your license, and (b) permanently, if the copyright
|
419 |
+
holder fails to notify you of the violation by some reasonable means
|
420 |
+
prior to 60 days after the cessation.
|
421 |
+
|
422 |
+
Moreover, your license from a particular copyright holder is
|
423 |
+
reinstated permanently if the copyright holder notifies you of the
|
424 |
+
violation by some reasonable means, this is the first time you have
|
425 |
+
received notice of violation of this License (for any work) from that
|
426 |
+
copyright holder, and you cure the violation prior to 30 days after
|
427 |
+
your receipt of the notice.
|
428 |
+
|
429 |
+
Termination of your rights under this section does not terminate the
|
430 |
+
licenses of parties who have received copies or rights from you under
|
431 |
+
this License. If your rights have been terminated and not permanently
|
432 |
+
reinstated, you do not qualify to receive new licenses for the same
|
433 |
+
material under section 10.
|
434 |
+
|
435 |
+
9. Acceptance Not Required for Having Copies.
|
436 |
+
|
437 |
+
You are not required to accept this License in order to receive or
|
438 |
+
run a copy of the Program. Ancillary propagation of a covered work
|
439 |
+
occurring solely as a consequence of using peer-to-peer transmission
|
440 |
+
to receive a copy likewise does not require acceptance. However,
|
441 |
+
nothing other than this License grants you permission to propagate or
|
442 |
+
modify any covered work. These actions infringe copyright if you do
|
443 |
+
not accept this License. Therefore, by modifying or propagating a
|
444 |
+
covered work, you indicate your acceptance of this License to do so.
|
445 |
+
|
446 |
+
10. Automatic Licensing of Downstream Recipients.
|
447 |
+
|
448 |
+
Each time you convey a covered work, the recipient automatically
|
449 |
+
receives a license from the original licensors, to run, modify and
|
450 |
+
propagate that work, subject to this License. You are not responsible
|
451 |
+
for enforcing compliance by third parties with this License.
|
452 |
+
|
453 |
+
An "entity transaction" is a transaction transferring control of an
|
454 |
+
organization, or substantially all assets of one, or subdividing an
|
455 |
+
organization, or merging organizations. If propagation of a covered
|
456 |
+
work results from an entity transaction, each party to that
|
457 |
+
transaction who receives a copy of the work also receives whatever
|
458 |
+
licenses to the work the party's predecessor in interest had or could
|
459 |
+
give under the previous paragraph, plus a right to possession of the
|
460 |
+
Corresponding Source of the work from the predecessor in interest, if
|
461 |
+
the predecessor has it or can get it with reasonable efforts.
|
462 |
+
|
463 |
+
You may not impose any further restrictions on the exercise of the
|
464 |
+
rights granted or affirmed under this License. For example, you may
|
465 |
+
not impose a license fee, royalty, or other charge for exercise of
|
466 |
+
rights granted under this License, and you may not initiate litigation
|
467 |
+
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
468 |
+
any patent claim is infringed by making, using, selling, offering for
|
469 |
+
sale, or importing the Program or any portion of it.
|
470 |
+
|
471 |
+
11. Patents.
|
472 |
+
|
473 |
+
A "contributor" is a copyright holder who authorizes use under this
|
474 |
+
License of the Program or a work on which the Program is based. The
|
475 |
+
work thus licensed is called the contributor's "contributor version".
|
476 |
+
|
477 |
+
A contributor's "essential patent claims" are all patent claims
|
478 |
+
owned or controlled by the contributor, whether already acquired or
|
479 |
+
hereafter acquired, that would be infringed by some manner, permitted
|
480 |
+
by this License, of making, using, or selling its contributor version,
|
481 |
+
but do not include claims that would be infringed only as a
|
482 |
+
consequence of further modification of the contributor version. For
|
483 |
+
purposes of this definition, "control" includes the right to grant
|
484 |
+
patent sublicenses in a manner consistent with the requirements of
|
485 |
+
this License.
|
486 |
+
|
487 |
+
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
488 |
+
patent license under the contributor's essential patent claims, to
|
489 |
+
make, use, sell, offer for sale, import and otherwise run, modify and
|
490 |
+
propagate the contents of its contributor version.
|
491 |
+
|
492 |
+
In the following three paragraphs, a "patent license" is any express
|
493 |
+
agreement or commitment, however denominated, not to enforce a patent
|
494 |
+
(such as an express permission to practice a patent or covenant not to
|
495 |
+
sue for patent infringement). To "grant" such a patent license to a
|
496 |
+
party means to make such an agreement or commitment not to enforce a
|
497 |
+
patent against the party.
|
498 |
+
|
499 |
+
If you convey a covered work, knowingly relying on a patent license,
|
500 |
+
and the Corresponding Source of the work is not available for anyone
|
501 |
+
to copy, free of charge and under the terms of this License, through a
|
502 |
+
publicly available network server or other readily accessible means,
|
503 |
+
then you must either (1) cause the Corresponding Source to be so
|
504 |
+
available, or (2) arrange to deprive yourself of the benefit of the
|
505 |
+
patent license for this particular work, or (3) arrange, in a manner
|
506 |
+
consistent with the requirements of this License, to extend the patent
|
507 |
+
license to downstream recipients. "Knowingly relying" means you have
|
508 |
+
actual knowledge that, but for the patent license, your conveying the
|
509 |
+
covered work in a country, or your recipient's use of the covered work
|
510 |
+
in a country, would infringe one or more identifiable patents in that
|
511 |
+
country that you have reason to believe are valid.
|
512 |
+
|
513 |
+
If, pursuant to or in connection with a single transaction or
|
514 |
+
arrangement, you convey, or propagate by procuring conveyance of, a
|
515 |
+
covered work, and grant a patent license to some of the parties
|
516 |
+
receiving the covered work authorizing them to use, propagate, modify
|
517 |
+
or convey a specific copy of the covered work, then the patent license
|
518 |
+
you grant is automatically extended to all recipients of the covered
|
519 |
+
work and works based on it.
|
520 |
+
|
521 |
+
A patent license is "discriminatory" if it does not include within
|
522 |
+
the scope of its coverage, prohibits the exercise of, or is
|
523 |
+
conditioned on the non-exercise of one or more of the rights that are
|
524 |
+
specifically granted under this License. You may not convey a covered
|
525 |
+
work if you are a party to an arrangement with a third party that is
|
526 |
+
in the business of distributing software, under which you make payment
|
527 |
+
to the third party based on the extent of your activity of conveying
|
528 |
+
the work, and under which the third party grants, to any of the
|
529 |
+
parties who would receive the covered work from you, a discriminatory
|
530 |
+
patent license (a) in connection with copies of the covered work
|
531 |
+
conveyed by you (or copies made from those copies), or (b) primarily
|
532 |
+
for and in connection with specific products or compilations that
|
533 |
+
contain the covered work, unless you entered into that arrangement,
|
534 |
+
or that patent license was granted, prior to 28 March 2007.
|
535 |
+
|
536 |
+
Nothing in this License shall be construed as excluding or limiting
|
537 |
+
any implied license or other defenses to infringement that may
|
538 |
+
otherwise be available to you under applicable patent law.
|
539 |
+
|
540 |
+
12. No Surrender of Others' Freedom.
|
541 |
+
|
542 |
+
If conditions are imposed on you (whether by court order, agreement or
|
543 |
+
otherwise) that contradict the conditions of this License, they do not
|
544 |
+
excuse you from the conditions of this License. If you cannot convey a
|
545 |
+
covered work so as to satisfy simultaneously your obligations under this
|
546 |
+
License and any other pertinent obligations, then as a consequence you may
|
547 |
+
not convey it at all. For example, if you agree to terms that obligate you
|
548 |
+
to collect a royalty for further conveying from those to whom you convey
|
549 |
+
the Program, the only way you could satisfy both those terms and this
|
550 |
+
License would be to refrain entirely from conveying the Program.
|
551 |
+
|
552 |
+
13. Use with the GNU Affero General Public License.
|
553 |
+
|
554 |
+
Notwithstanding any other provision of this License, you have
|
555 |
+
permission to link or combine any covered work with a work licensed
|
556 |
+
under version 3 of the GNU Affero General Public License into a single
|
557 |
+
combined work, and to convey the resulting work. The terms of this
|
558 |
+
License will continue to apply to the part which is the covered work,
|
559 |
+
but the special requirements of the GNU Affero General Public License,
|
560 |
+
section 13, concerning interaction through a network will apply to the
|
561 |
+
combination as such.
|
562 |
+
|
563 |
+
14. Revised Versions of this License.
|
564 |
+
|
565 |
+
The Free Software Foundation may publish revised and/or new versions of
|
566 |
+
the GNU General Public License from time to time. Such new versions will
|
567 |
+
be similar in spirit to the present version, but may differ in detail to
|
568 |
+
address new problems or concerns.
|
569 |
+
|
570 |
+
Each version is given a distinguishing version number. If the
|
571 |
+
Program specifies that a certain numbered version of the GNU General
|
572 |
+
Public License "or any later version" applies to it, you have the
|
573 |
+
option of following the terms and conditions either of that numbered
|
574 |
+
version or of any later version published by the Free Software
|
575 |
+
Foundation. If the Program does not specify a version number of the
|
576 |
+
GNU General Public License, you may choose any version ever published
|
577 |
+
by the Free Software Foundation.
|
578 |
+
|
579 |
+
If the Program specifies that a proxy can decide which future
|
580 |
+
versions of the GNU General Public License can be used, that proxy's
|
581 |
+
public statement of acceptance of a version permanently authorizes you
|
582 |
+
to choose that version for the Program.
|
583 |
+
|
584 |
+
Later license versions may give you additional or different
|
585 |
+
permissions. However, no additional obligations are imposed on any
|
586 |
+
author or copyright holder as a result of your choosing to follow a
|
587 |
+
later version.
|
588 |
+
|
589 |
+
15. Disclaimer of Warranty.
|
590 |
+
|
591 |
+
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
592 |
+
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
593 |
+
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
594 |
+
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
595 |
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
596 |
+
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
597 |
+
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
598 |
+
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
599 |
+
|
600 |
+
16. Limitation of Liability.
|
601 |
+
|
602 |
+
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
603 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
604 |
+
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
605 |
+
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
606 |
+
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
607 |
+
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
608 |
+
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
609 |
+
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
610 |
+
SUCH DAMAGES.
|
611 |
+
|
612 |
+
17. Interpretation of Sections 15 and 16.
|
613 |
+
|
614 |
+
If the disclaimer of warranty and limitation of liability provided
|
615 |
+
above cannot be given local legal effect according to their terms,
|
616 |
+
reviewing courts shall apply local law that most closely approximates
|
617 |
+
an absolute waiver of all civil liability in connection with the
|
618 |
+
Program, unless a warranty or assumption of liability accompanies a
|
619 |
+
copy of the Program in return for a fee.
|
620 |
+
|
621 |
+
END OF TERMS AND CONDITIONS
|
622 |
+
|
623 |
+
How to Apply These Terms to Your New Programs
|
624 |
+
|
625 |
+
If you develop a new program, and you want it to be of the greatest
|
626 |
+
possible use to the public, the best way to achieve this is to make it
|
627 |
+
free software which everyone can redistribute and change under these terms.
|
628 |
+
|
629 |
+
To do so, attach the following notices to the program. It is safest
|
630 |
+
to attach them to the start of each source file to most effectively
|
631 |
+
state the exclusion of warranty; and each file should have at least
|
632 |
+
the "copyright" line and a pointer to where the full notice is found.
|
633 |
+
|
634 |
+
<one line to give the program's name and a brief idea of what it does.>
|
635 |
+
Copyright (C) <year> <name of author>
|
636 |
+
|
637 |
+
This program is free software: you can redistribute it and/or modify
|
638 |
+
it under the terms of the GNU General Public License as published by
|
639 |
+
the Free Software Foundation, either version 3 of the License, or
|
640 |
+
(at your option) any later version.
|
641 |
+
|
642 |
+
This program is distributed in the hope that it will be useful,
|
643 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
644 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
645 |
+
GNU General Public License for more details.
|
646 |
+
|
647 |
+
You should have received a copy of the GNU General Public License
|
648 |
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
649 |
+
|
650 |
+
Also add information on how to contact you by electronic and paper mail.
|
651 |
+
|
652 |
+
If the program does terminal interaction, make it output a short
|
653 |
+
notice like this when it starts in an interactive mode:
|
654 |
+
|
655 |
+
<program> Copyright (C) <year> <name of author>
|
656 |
+
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
657 |
+
This is free software, and you are welcome to redistribute it
|
658 |
+
under certain conditions; type `show c' for details.
|
659 |
+
|
660 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
661 |
+
parts of the General Public License. Of course, your program's commands
|
662 |
+
might be different; for a GUI interface, you would use an "about box".
|
663 |
+
|
664 |
+
You should also get your employer (if you work as a programmer) or school,
|
665 |
+
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
666 |
+
For more information on this, and how to apply and follow the GNU GPL, see
|
667 |
+
<http://www.gnu.org/licenses/>.
|
668 |
+
|
669 |
+
The GNU General Public License does not permit incorporating your program
|
670 |
+
into proprietary programs. If your program is a subroutine library, you
|
671 |
+
may consider it more useful to permit linking proprietary applications with
|
672 |
+
the library. If this is what you want to do, use the GNU Lesser General
|
673 |
+
Public License instead of this License. But first, please read
|
674 |
+
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
mm_avh_working_space/bin/ffmpeg/README.txt
ADDED
@@ -0,0 +1,782 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FFmpeg 64-bit static Windows build from www.gyan.dev
|
2 |
+
|
3 |
+
Version: 2023-05-22-git-877ccaf776-full_build-www.gyan.dev
|
4 |
+
|
5 |
+
License: GPL v3
|
6 |
+
|
7 |
+
Source Code: https://github.com/FFmpeg/FFmpeg/commit/877ccaf776
|
8 |
+
|
9 |
+
External Assets
|
10 |
+
frei0r plugins: https://www.gyan.dev/ffmpeg/builds/ffmpeg-frei0r-plugins
|
11 |
+
lensfun database: https://www.gyan.dev/ffmpeg/builds/ffmpeg-lensfun-db
|
12 |
+
|
13 |
+
git-full build configuration:
|
14 |
+
|
15 |
+
ARCH x86 (generic)
|
16 |
+
big-endian no
|
17 |
+
runtime cpu detection yes
|
18 |
+
standalone assembly yes
|
19 |
+
x86 assembler nasm
|
20 |
+
MMX enabled yes
|
21 |
+
MMXEXT enabled yes
|
22 |
+
3DNow! enabled yes
|
23 |
+
3DNow! extended enabled yes
|
24 |
+
SSE enabled yes
|
25 |
+
SSSE3 enabled yes
|
26 |
+
AESNI enabled yes
|
27 |
+
AVX enabled yes
|
28 |
+
AVX2 enabled yes
|
29 |
+
AVX-512 enabled yes
|
30 |
+
AVX-512ICL enabled yes
|
31 |
+
XOP enabled yes
|
32 |
+
FMA3 enabled yes
|
33 |
+
FMA4 enabled yes
|
34 |
+
i686 features enabled yes
|
35 |
+
CMOV is fast yes
|
36 |
+
EBX available yes
|
37 |
+
EBP available yes
|
38 |
+
debug symbols yes
|
39 |
+
strip symbols yes
|
40 |
+
optimize for size no
|
41 |
+
optimizations yes
|
42 |
+
static yes
|
43 |
+
shared no
|
44 |
+
postprocessing support yes
|
45 |
+
network support yes
|
46 |
+
threading support pthreads
|
47 |
+
safe bitstream reader yes
|
48 |
+
texi2html enabled no
|
49 |
+
perl enabled yes
|
50 |
+
pod2man enabled yes
|
51 |
+
makeinfo enabled yes
|
52 |
+
makeinfo supports HTML yes
|
53 |
+
xmllint enabled yes
|
54 |
+
|
55 |
+
External libraries:
|
56 |
+
avisynth libgme libssh
|
57 |
+
bzlib libgsm libsvtav1
|
58 |
+
chromaprint libilbc libtheora
|
59 |
+
frei0r libjxl libtwolame
|
60 |
+
gmp liblensfun libuavs3d
|
61 |
+
gnutls libmodplug libvidstab
|
62 |
+
iconv libmp3lame libvmaf
|
63 |
+
ladspa libmysofa libvo_amrwbenc
|
64 |
+
libaom libopencore_amrnb libvorbis
|
65 |
+
libaribb24 libopencore_amrwb libvpx
|
66 |
+
libaribcaption libopenjpeg libwebp
|
67 |
+
libass libopenmpt libx264
|
68 |
+
libbluray libopus libx265
|
69 |
+
libbs2b libplacebo libxavs2
|
70 |
+
libcaca librav1e libxml2
|
71 |
+
libcdio librist libxvid
|
72 |
+
libcodec2 librubberband libzimg
|
73 |
+
libdav1d libshaderc libzmq
|
74 |
+
libdavs2 libshine libzvbi
|
75 |
+
libflite libsnappy lzma
|
76 |
+
libfontconfig libsoxr mediafoundation
|
77 |
+
libfreetype libspeex sdl2
|
78 |
+
libfribidi libsrt zlib
|
79 |
+
|
80 |
+
External libraries providing hardware acceleration:
|
81 |
+
amf dxva2 nvenc
|
82 |
+
cuda ffnvcodec opencl
|
83 |
+
cuda_llvm libmfx vulkan
|
84 |
+
cuvid libvpl
|
85 |
+
d3d11va nvdec
|
86 |
+
|
87 |
+
Libraries:
|
88 |
+
avcodec avformat swresample
|
89 |
+
avdevice avutil swscale
|
90 |
+
avfilter postproc
|
91 |
+
|
92 |
+
Programs:
|
93 |
+
ffmpeg ffplay ffprobe
|
94 |
+
|
95 |
+
Enabled decoders:
|
96 |
+
aac fraps pcm_u32le
|
97 |
+
aac_fixed frwu pcm_u8
|
98 |
+
aac_latm ftr pcm_vidc
|
99 |
+
aasc g2m pcx
|
100 |
+
ac3 g723_1 pdv
|
101 |
+
ac3_fixed g729 pfm
|
102 |
+
acelp_kelvin gdv pgm
|
103 |
+
adpcm_4xm gem pgmyuv
|
104 |
+
adpcm_adx gif pgssub
|
105 |
+
adpcm_afc gremlin_dpcm pgx
|
106 |
+
adpcm_agm gsm phm
|
107 |
+
adpcm_aica gsm_ms photocd
|
108 |
+
adpcm_argo h261 pictor
|
109 |
+
adpcm_ct h263 pixlet
|
110 |
+
adpcm_dtk h263i pjs
|
111 |
+
adpcm_ea h263p png
|
112 |
+
adpcm_ea_maxis_xa h264 ppm
|
113 |
+
adpcm_ea_r1 h264_cuvid prores
|
114 |
+
adpcm_ea_r2 h264_qsv prosumer
|
115 |
+
adpcm_ea_r3 hap psd
|
116 |
+
adpcm_ea_xas hca ptx
|
117 |
+
adpcm_g722 hcom qcelp
|
118 |
+
adpcm_g726 hdr qdm2
|
119 |
+
adpcm_g726le hevc qdmc
|
120 |
+
adpcm_ima_acorn hevc_cuvid qdraw
|
121 |
+
adpcm_ima_alp hevc_qsv qoi
|
122 |
+
adpcm_ima_amv hnm4_video qpeg
|
123 |
+
adpcm_ima_apc hq_hqa qtrle
|
124 |
+
adpcm_ima_apm hqx r10k
|
125 |
+
adpcm_ima_cunning huffyuv r210
|
126 |
+
adpcm_ima_dat4 hymt ra_144
|
127 |
+
adpcm_ima_dk3 iac ra_288
|
128 |
+
adpcm_ima_dk4 idcin ralf
|
129 |
+
adpcm_ima_ea_eacs idf rasc
|
130 |
+
adpcm_ima_ea_sead iff_ilbm rawvideo
|
131 |
+
adpcm_ima_iss ilbc realtext
|
132 |
+
adpcm_ima_moflex imc rka
|
133 |
+
adpcm_ima_mtf imm4 rl2
|
134 |
+
adpcm_ima_oki imm5 roq
|
135 |
+
adpcm_ima_qt indeo2 roq_dpcm
|
136 |
+
adpcm_ima_rad indeo3 rpza
|
137 |
+
adpcm_ima_smjpeg indeo4 rscc
|
138 |
+
adpcm_ima_ssi indeo5 rv10
|
139 |
+
adpcm_ima_wav interplay_acm rv20
|
140 |
+
adpcm_ima_ws interplay_dpcm rv30
|
141 |
+
adpcm_ms interplay_video rv40
|
142 |
+
adpcm_mtaf ipu s302m
|
143 |
+
adpcm_psx jacosub sami
|
144 |
+
adpcm_sbpro_2 jpeg2000 sanm
|
145 |
+
adpcm_sbpro_3 jpegls sbc
|
146 |
+
adpcm_sbpro_4 jv scpr
|
147 |
+
adpcm_swf kgv1 screenpresso
|
148 |
+
adpcm_thp kmvc sdx2_dpcm
|
149 |
+
adpcm_thp_le lagarith sga
|
150 |
+
adpcm_vima libaom_av1 sgi
|
151 |
+
adpcm_xa libaribb24 sgirle
|
152 |
+
adpcm_xmd libaribcaption sheervideo
|
153 |
+
adpcm_yamaha libcodec2 shorten
|
154 |
+
adpcm_zork libdav1d simbiosis_imx
|
155 |
+
agm libdavs2 sipr
|
156 |
+
aic libgsm siren
|
157 |
+
alac libgsm_ms smackaud
|
158 |
+
alias_pix libilbc smacker
|
159 |
+
als libjxl smc
|
160 |
+
amrnb libopencore_amrnb smvjpeg
|
161 |
+
amrwb libopencore_amrwb snow
|
162 |
+
amv libopus sol_dpcm
|
163 |
+
anm libspeex sonic
|
164 |
+
ansi libuavs3d sp5x
|
165 |
+
anull libvorbis speedhq
|
166 |
+
apac libvpx_vp8 speex
|
167 |
+
ape libvpx_vp9 srgc
|
168 |
+
apng libzvbi_teletext srt
|
169 |
+
aptx loco ssa
|
170 |
+
aptx_hd lscr stl
|
171 |
+
arbc m101 subrip
|
172 |
+
argo mace3 subviewer
|
173 |
+
ass mace6 subviewer1
|
174 |
+
asv1 magicyuv sunrast
|
175 |
+
asv2 mdec svq1
|
176 |
+
atrac1 media100 svq3
|
177 |
+
atrac3 metasound tak
|
178 |
+
atrac3al microdvd targa
|
179 |
+
atrac3p mimic targa_y216
|
180 |
+
atrac3pal misc4 tdsc
|
181 |
+
atrac9 mjpeg text
|
182 |
+
aura mjpeg_cuvid theora
|
183 |
+
aura2 mjpeg_qsv thp
|
184 |
+
av1 mjpegb tiertexseqvideo
|
185 |
+
av1_cuvid mlp tiff
|
186 |
+
av1_qsv mmvideo tmv
|
187 |
+
avrn mobiclip truehd
|
188 |
+
avrp motionpixels truemotion1
|
189 |
+
avs movtext truemotion2
|
190 |
+
avui mp1 truemotion2rt
|
191 |
+
ayuv mp1float truespeech
|
192 |
+
bethsoftvid mp2 tscc
|
193 |
+
bfi mp2float tscc2
|
194 |
+
bink mp3 tta
|
195 |
+
binkaudio_dct mp3adu twinvq
|
196 |
+
binkaudio_rdft mp3adufloat txd
|
197 |
+
bintext mp3float ulti
|
198 |
+
bitpacked mp3on4 utvideo
|
199 |
+
bmp mp3on4float v210
|
200 |
+
bmv_audio mpc7 v210x
|
201 |
+
bmv_video mpc8 v308
|
202 |
+
bonk mpeg1_cuvid v408
|
203 |
+
brender_pix mpeg1video v410
|
204 |
+
c93 mpeg2_cuvid vb
|
205 |
+
cavs mpeg2_qsv vble
|
206 |
+
cbd2_dpcm mpeg2video vbn
|
207 |
+
ccaption mpeg4 vc1
|
208 |
+
cdgraphics mpeg4_cuvid vc1_cuvid
|
209 |
+
cdtoons mpegvideo vc1_qsv
|
210 |
+
cdxl mpl2 vc1image
|
211 |
+
cfhd msa1 vcr1
|
212 |
+
cinepak mscc vmdaudio
|
213 |
+
clearvideo msmpeg4v1 vmdvideo
|
214 |
+
cljr msmpeg4v2 vmnc
|
215 |
+
cllc msmpeg4v3 vnull
|
216 |
+
comfortnoise msnsiren vorbis
|
217 |
+
cook msp2 vp3
|
218 |
+
cpia msrle vp4
|
219 |
+
cri mss1 vp5
|
220 |
+
cscd mss2 vp6
|
221 |
+
cyuv msvideo1 vp6a
|
222 |
+
dca mszh vp6f
|
223 |
+
dds mts2 vp7
|
224 |
+
derf_dpcm mv30 vp8
|
225 |
+
dfa mvc1 vp8_cuvid
|
226 |
+
dfpwm mvc2 vp8_qsv
|
227 |
+
dirac mvdv vp9
|
228 |
+
dnxhd mvha vp9_cuvid
|
229 |
+
dolby_e mwsc vp9_qsv
|
230 |
+
dpx mxpeg vplayer
|
231 |
+
dsd_lsbf nellymoser vqa
|
232 |
+
dsd_lsbf_planar notchlc vqc
|
233 |
+
dsd_msbf nuv wady_dpcm
|
234 |
+
dsd_msbf_planar on2avc wavarc
|
235 |
+
dsicinaudio opus wavpack
|
236 |
+
dsicinvideo paf_audio wbmp
|
237 |
+
dss_sp paf_video wcmv
|
238 |
+
dst pam webp
|
239 |
+
dvaudio pbm webvtt
|
240 |
+
dvbsub pcm_alaw wmalossless
|
241 |
+
dvdsub pcm_bluray wmapro
|
242 |
+
dvvideo pcm_dvd wmav1
|
243 |
+
dxa pcm_f16le wmav2
|
244 |
+
dxtory pcm_f24le wmavoice
|
245 |
+
dxv pcm_f32be wmv1
|
246 |
+
eac3 pcm_f32le wmv2
|
247 |
+
eacmv pcm_f64be wmv3
|
248 |
+
eamad pcm_f64le wmv3image
|
249 |
+
eatgq pcm_lxf wnv1
|
250 |
+
eatgv pcm_mulaw wrapped_avframe
|
251 |
+
eatqi pcm_s16be ws_snd1
|
252 |
+
eightbps pcm_s16be_planar xan_dpcm
|
253 |
+
eightsvx_exp pcm_s16le xan_wc3
|
254 |
+
eightsvx_fib pcm_s16le_planar xan_wc4
|
255 |
+
escape124 pcm_s24be xbin
|
256 |
+
escape130 pcm_s24daud xbm
|
257 |
+
evrc pcm_s24le xface
|
258 |
+
exr pcm_s24le_planar xl
|
259 |
+
fastaudio pcm_s32be xma1
|
260 |
+
ffv1 pcm_s32le xma2
|
261 |
+
ffvhuff pcm_s32le_planar xpm
|
262 |
+
ffwavesynth pcm_s64be xsub
|
263 |
+
fic pcm_s64le xwd
|
264 |
+
fits pcm_s8 y41p
|
265 |
+
flac pcm_s8_planar ylc
|
266 |
+
flashsv pcm_sga yop
|
267 |
+
flashsv2 pcm_u16be yuv4
|
268 |
+
flic pcm_u16le zero12v
|
269 |
+
flv pcm_u24be zerocodec
|
270 |
+
fmvc pcm_u24le zlib
|
271 |
+
fourxm pcm_u32be zmbv
|
272 |
+
|
273 |
+
Enabled encoders:
|
274 |
+
a64multi hevc_qsv pcm_u16be
|
275 |
+
a64multi5 huffyuv pcm_u16le
|
276 |
+
aac jpeg2000 pcm_u24be
|
277 |
+
aac_mf jpegls pcm_u24le
|
278 |
+
ac3 libaom_av1 pcm_u32be
|
279 |
+
ac3_fixed libcodec2 pcm_u32le
|
280 |
+
ac3_mf libgsm pcm_u8
|
281 |
+
adpcm_adx libgsm_ms pcm_vidc
|
282 |
+
adpcm_argo libilbc pcx
|
283 |
+
adpcm_g722 libjxl pfm
|
284 |
+
adpcm_g726 libmp3lame pgm
|
285 |
+
adpcm_g726le libopencore_amrnb pgmyuv
|
286 |
+
adpcm_ima_alp libopenjpeg phm
|
287 |
+
adpcm_ima_amv libopus png
|
288 |
+
adpcm_ima_apm librav1e ppm
|
289 |
+
adpcm_ima_qt libshine prores
|
290 |
+
adpcm_ima_ssi libspeex prores_aw
|
291 |
+
adpcm_ima_wav libsvtav1 prores_ks
|
292 |
+
adpcm_ima_ws libtheora qoi
|
293 |
+
adpcm_ms libtwolame qtrle
|
294 |
+
adpcm_swf libvo_amrwbenc r10k
|
295 |
+
adpcm_yamaha libvorbis r210
|
296 |
+
alac libvpx_vp8 ra_144
|
297 |
+
alias_pix libvpx_vp9 rawvideo
|
298 |
+
amv libwebp roq
|
299 |
+
anull libwebp_anim roq_dpcm
|
300 |
+
apng libx264 rpza
|
301 |
+
aptx libx264rgb rv10
|
302 |
+
aptx_hd libx265 rv20
|
303 |
+
ass libxavs2 s302m
|
304 |
+
asv1 libxvid sbc
|
305 |
+
asv2 ljpeg sgi
|
306 |
+
av1_amf magicyuv smc
|
307 |
+
av1_nvenc mjpeg snow
|
308 |
+
av1_qsv mjpeg_qsv sonic
|
309 |
+
avrp mlp sonic_ls
|
310 |
+
avui movtext speedhq
|
311 |
+
ayuv mp2 srt
|
312 |
+
bitpacked mp2fixed ssa
|
313 |
+
bmp mp3_mf subrip
|
314 |
+
cfhd mpeg1video sunrast
|
315 |
+
cinepak mpeg2_qsv svq1
|
316 |
+
cljr mpeg2video targa
|
317 |
+
comfortnoise mpeg4 text
|
318 |
+
dca msmpeg4v2 tiff
|
319 |
+
dfpwm msmpeg4v3 truehd
|
320 |
+
dnxhd msvideo1 tta
|
321 |
+
dpx nellymoser ttml
|
322 |
+
dvbsub opus utvideo
|
323 |
+
dvdsub pam v210
|
324 |
+
dvvideo pbm v308
|
325 |
+
eac3 pcm_alaw v408
|
326 |
+
exr pcm_bluray v410
|
327 |
+
ffv1 pcm_dvd vbn
|
328 |
+
ffvhuff pcm_f32be vc2
|
329 |
+
fits pcm_f32le vnull
|
330 |
+
flac pcm_f64be vorbis
|
331 |
+
flashsv pcm_f64le vp9_qsv
|
332 |
+
flashsv2 pcm_mulaw wavpack
|
333 |
+
flv pcm_s16be wbmp
|
334 |
+
g723_1 pcm_s16be_planar webvtt
|
335 |
+
gif pcm_s16le wmav1
|
336 |
+
h261 pcm_s16le_planar wmav2
|
337 |
+
h263 pcm_s24be wmv1
|
338 |
+
h263p pcm_s24daud wmv2
|
339 |
+
h264_amf pcm_s24le wrapped_avframe
|
340 |
+
h264_mf pcm_s24le_planar xbm
|
341 |
+
h264_nvenc pcm_s32be xface
|
342 |
+
h264_qsv pcm_s32le xsub
|
343 |
+
hap pcm_s32le_planar xwd
|
344 |
+
hdr pcm_s64be y41p
|
345 |
+
hevc_amf pcm_s64le yuv4
|
346 |
+
hevc_mf pcm_s8 zlib
|
347 |
+
hevc_nvenc pcm_s8_planar zmbv
|
348 |
+
|
349 |
+
Enabled hwaccels:
|
350 |
+
av1_d3d11va hevc_nvdec vc1_nvdec
|
351 |
+
av1_d3d11va2 mjpeg_nvdec vp8_nvdec
|
352 |
+
av1_dxva2 mpeg1_nvdec vp9_d3d11va
|
353 |
+
av1_nvdec mpeg2_d3d11va vp9_d3d11va2
|
354 |
+
h264_d3d11va mpeg2_d3d11va2 vp9_dxva2
|
355 |
+
h264_d3d11va2 mpeg2_dxva2 vp9_nvdec
|
356 |
+
h264_dxva2 mpeg2_nvdec wmv3_d3d11va
|
357 |
+
h264_nvdec mpeg4_nvdec wmv3_d3d11va2
|
358 |
+
hevc_d3d11va vc1_d3d11va wmv3_dxva2
|
359 |
+
hevc_d3d11va2 vc1_d3d11va2 wmv3_nvdec
|
360 |
+
hevc_dxva2 vc1_dxva2
|
361 |
+
|
362 |
+
Enabled parsers:
|
363 |
+
aac dvdsub opus
|
364 |
+
aac_latm flac png
|
365 |
+
ac3 ftr pnm
|
366 |
+
adx g723_1 qoi
|
367 |
+
amr g729 rv30
|
368 |
+
av1 gif rv40
|
369 |
+
avs2 gsm sbc
|
370 |
+
avs3 h261 sipr
|
371 |
+
bmp h263 tak
|
372 |
+
cavsvideo h264 vc1
|
373 |
+
cook hdr vorbis
|
374 |
+
cri hevc vp3
|
375 |
+
dca ipu vp8
|
376 |
+
dirac jpeg2000 vp9
|
377 |
+
dnxhd misc4 webp
|
378 |
+
dolby_e mjpeg xbm
|
379 |
+
dpx mlp xma
|
380 |
+
dvaudio mpeg4video xwd
|
381 |
+
dvbsub mpegaudio
|
382 |
+
dvd_nav mpegvideo
|
383 |
+
|
384 |
+
Enabled demuxers:
|
385 |
+
aa idf pcm_f64le
|
386 |
+
aac iff pcm_mulaw
|
387 |
+
aax ifv pcm_s16be
|
388 |
+
ac3 ilbc pcm_s16le
|
389 |
+
ace image2 pcm_s24be
|
390 |
+
acm image2_alias_pix pcm_s24le
|
391 |
+
act image2_brender_pix pcm_s32be
|
392 |
+
adf image2pipe pcm_s32le
|
393 |
+
adp image_bmp_pipe pcm_s8
|
394 |
+
ads image_cri_pipe pcm_u16be
|
395 |
+
adx image_dds_pipe pcm_u16le
|
396 |
+
aea image_dpx_pipe pcm_u24be
|
397 |
+
afc image_exr_pipe pcm_u24le
|
398 |
+
aiff image_gem_pipe pcm_u32be
|
399 |
+
aix image_gif_pipe pcm_u32le
|
400 |
+
alp image_hdr_pipe pcm_u8
|
401 |
+
amr image_j2k_pipe pcm_vidc
|
402 |
+
amrnb image_jpeg_pipe pdv
|
403 |
+
amrwb image_jpegls_pipe pjs
|
404 |
+
anm image_jpegxl_pipe pmp
|
405 |
+
apac image_pam_pipe pp_bnk
|
406 |
+
apc image_pbm_pipe pva
|
407 |
+
ape image_pcx_pipe pvf
|
408 |
+
apm image_pfm_pipe qcp
|
409 |
+
apng image_pgm_pipe r3d
|
410 |
+
aptx image_pgmyuv_pipe rawvideo
|
411 |
+
aptx_hd image_pgx_pipe realtext
|
412 |
+
aqtitle image_phm_pipe redspark
|
413 |
+
argo_asf image_photocd_pipe rka
|
414 |
+
argo_brp image_pictor_pipe rl2
|
415 |
+
argo_cvg image_png_pipe rm
|
416 |
+
asf image_ppm_pipe roq
|
417 |
+
asf_o image_psd_pipe rpl
|
418 |
+
ass image_qdraw_pipe rsd
|
419 |
+
ast image_qoi_pipe rso
|
420 |
+
au image_sgi_pipe rtp
|
421 |
+
av1 image_sunrast_pipe rtsp
|
422 |
+
avi image_svg_pipe s337m
|
423 |
+
avisynth image_tiff_pipe sami
|
424 |
+
avr image_vbn_pipe sap
|
425 |
+
avs image_webp_pipe sbc
|
426 |
+
avs2 image_xbm_pipe sbg
|
427 |
+
avs3 image_xpm_pipe scc
|
428 |
+
bethsoftvid image_xwd_pipe scd
|
429 |
+
bfi imf sdns
|
430 |
+
bfstm ingenient sdp
|
431 |
+
bink ipmovie sdr2
|
432 |
+
binka ipu sds
|
433 |
+
bintext ircam sdx
|
434 |
+
bit iss segafilm
|
435 |
+
bitpacked iv8 ser
|
436 |
+
bmv ivf sga
|
437 |
+
boa ivr shorten
|
438 |
+
bonk jacosub siff
|
439 |
+
brstm jv simbiosis_imx
|
440 |
+
c93 kux sln
|
441 |
+
caf kvag smacker
|
442 |
+
cavsvideo laf smjpeg
|
443 |
+
cdg libgme smush
|
444 |
+
cdxl libmodplug sol
|
445 |
+
cine libopenmpt sox
|
446 |
+
codec2 live_flv spdif
|
447 |
+
codec2raw lmlm4 srt
|
448 |
+
concat loas stl
|
449 |
+
dash lrc str
|
450 |
+
data luodat subviewer
|
451 |
+
daud lvf subviewer1
|
452 |
+
dcstr lxf sup
|
453 |
+
derf m4v svag
|
454 |
+
dfa matroska svs
|
455 |
+
dfpwm mca swf
|
456 |
+
dhav mcc tak
|
457 |
+
dirac mgsts tedcaptions
|
458 |
+
dnxhd microdvd thp
|
459 |
+
dsf mjpeg threedostr
|
460 |
+
dsicin mjpeg_2000 tiertexseq
|
461 |
+
dss mlp tmv
|
462 |
+
dts mlv truehd
|
463 |
+
dtshd mm tta
|
464 |
+
dv mmf tty
|
465 |
+
dvbsub mods txd
|
466 |
+
dvbtxt moflex ty
|
467 |
+
dxa mov v210
|
468 |
+
ea mp3 v210x
|
469 |
+
ea_cdata mpc vag
|
470 |
+
eac3 mpc8 vc1
|
471 |
+
epaf mpegps vc1t
|
472 |
+
ffmetadata mpegts vividas
|
473 |
+
filmstrip mpegtsraw vivo
|
474 |
+
fits mpegvideo vmd
|
475 |
+
flac mpjpeg vobsub
|
476 |
+
flic mpl2 voc
|
477 |
+
flv mpsub vpk
|
478 |
+
fourxm msf vplayer
|
479 |
+
frm msnwc_tcp vqf
|
480 |
+
fsb msp w64
|
481 |
+
fwse mtaf wady
|
482 |
+
g722 mtv wav
|
483 |
+
g723_1 musx wavarc
|
484 |
+
g726 mv wc3
|
485 |
+
g726le mvi webm_dash_manifest
|
486 |
+
g729 mxf webvtt
|
487 |
+
gdv mxg wsaud
|
488 |
+
genh nc wsd
|
489 |
+
gif nistsphere wsvqa
|
490 |
+
gsm nsp wtv
|
491 |
+
gxf nsv wv
|
492 |
+
h261 nut wve
|
493 |
+
h263 nuv xa
|
494 |
+
h264 obu xbin
|
495 |
+
hca ogg xmd
|
496 |
+
hcom oma xmv
|
497 |
+
hevc paf xvag
|
498 |
+
hls pcm_alaw xwma
|
499 |
+
hnm pcm_f32be yop
|
500 |
+
ico pcm_f32le yuv4mpegpipe
|
501 |
+
idcin pcm_f64be
|
502 |
+
|
503 |
+
Enabled muxers:
|
504 |
+
a64 h263 pcm_s24be
|
505 |
+
ac3 h264 pcm_s24le
|
506 |
+
adts hash pcm_s32be
|
507 |
+
adx hds pcm_s32le
|
508 |
+
aiff hevc pcm_s8
|
509 |
+
alp hls pcm_u16be
|
510 |
+
amr ico pcm_u16le
|
511 |
+
amv ilbc pcm_u24be
|
512 |
+
apm image2 pcm_u24le
|
513 |
+
apng image2pipe pcm_u32be
|
514 |
+
aptx ipod pcm_u32le
|
515 |
+
aptx_hd ircam pcm_u8
|
516 |
+
argo_asf ismv pcm_vidc
|
517 |
+
argo_cvg ivf psp
|
518 |
+
asf jacosub rawvideo
|
519 |
+
asf_stream kvag rm
|
520 |
+
ass latm roq
|
521 |
+
ast lrc rso
|
522 |
+
au m4v rtp
|
523 |
+
avi matroska rtp_mpegts
|
524 |
+
avif matroska_audio rtsp
|
525 |
+
avm2 md5 sap
|
526 |
+
avs2 microdvd sbc
|
527 |
+
avs3 mjpeg scc
|
528 |
+
bit mkvtimestamp_v2 segafilm
|
529 |
+
caf mlp segment
|
530 |
+
cavsvideo mmf smjpeg
|
531 |
+
chromaprint mov smoothstreaming
|
532 |
+
codec2 mp2 sox
|
533 |
+
codec2raw mp3 spdif
|
534 |
+
crc mp4 spx
|
535 |
+
dash mpeg1system srt
|
536 |
+
data mpeg1vcd stream_segment
|
537 |
+
daud mpeg1video streamhash
|
538 |
+
dfpwm mpeg2dvd sup
|
539 |
+
dirac mpeg2svcd swf
|
540 |
+
dnxhd mpeg2video tee
|
541 |
+
dts mpeg2vob tg2
|
542 |
+
dv mpegts tgp
|
543 |
+
eac3 mpjpeg truehd
|
544 |
+
f4v mxf tta
|
545 |
+
ffmetadata mxf_d10 ttml
|
546 |
+
fifo mxf_opatom uncodedframecrc
|
547 |
+
fifo_test null vc1
|
548 |
+
filmstrip nut vc1t
|
549 |
+
fits obu voc
|
550 |
+
flac oga w64
|
551 |
+
flv ogg wav
|
552 |
+
framecrc ogv webm
|
553 |
+
framehash oma webm_chunk
|
554 |
+
framemd5 opus webm_dash_manifest
|
555 |
+
g722 pcm_alaw webp
|
556 |
+
g723_1 pcm_f32be webvtt
|
557 |
+
g726 pcm_f32le wsaud
|
558 |
+
g726le pcm_f64be wtv
|
559 |
+
gif pcm_f64le wv
|
560 |
+
gsm pcm_mulaw yuv4mpegpipe
|
561 |
+
gxf pcm_s16be
|
562 |
+
h261 pcm_s16le
|
563 |
+
|
564 |
+
Enabled protocols:
|
565 |
+
async http rtmp
|
566 |
+
bluray httpproxy rtmpe
|
567 |
+
cache https rtmps
|
568 |
+
concat icecast rtmpt
|
569 |
+
concatf ipfs_gateway rtmpte
|
570 |
+
crypto ipns_gateway rtmpts
|
571 |
+
data librist rtp
|
572 |
+
fd libsrt srtp
|
573 |
+
ffrtmpcrypt libssh subfile
|
574 |
+
ffrtmphttp libzmq tcp
|
575 |
+
file md5 tee
|
576 |
+
ftp mmsh tls
|
577 |
+
gopher mmst udp
|
578 |
+
gophers pipe udplite
|
579 |
+
hls prompeg
|
580 |
+
|
581 |
+
Enabled filters:
|
582 |
+
a3dscope dcshift pad
|
583 |
+
abench dctdnoiz pad_opencl
|
584 |
+
abitscope ddagrab pal100bars
|
585 |
+
acompressor deband pal75bars
|
586 |
+
acontrast deblock palettegen
|
587 |
+
acopy decimate paletteuse
|
588 |
+
acrossfade deconvolve pan
|
589 |
+
acrossover dedot perms
|
590 |
+
acrusher deesser perspective
|
591 |
+
acue deflate phase
|
592 |
+
addroi deflicker photosensitivity
|
593 |
+
adeclick deinterlace_qsv pixdesctest
|
594 |
+
adeclip dejudder pixelize
|
595 |
+
adecorrelate delogo pixscope
|
596 |
+
adelay derain pp
|
597 |
+
adenorm deshake pp7
|
598 |
+
aderivative deshake_opencl premultiply
|
599 |
+
adrawgraph despill prewitt
|
600 |
+
adrc detelecine prewitt_opencl
|
601 |
+
adynamicequalizer dialoguenhance program_opencl
|
602 |
+
adynamicsmooth dilation pseudocolor
|
603 |
+
aecho dilation_opencl psnr
|
604 |
+
aemphasis displace pullup
|
605 |
+
aeval dnn_classify qp
|
606 |
+
aevalsrc dnn_detect random
|
607 |
+
aexciter dnn_processing readeia608
|
608 |
+
afade doubleweave readvitc
|
609 |
+
afdelaysrc drawbox realtime
|
610 |
+
afftdn drawgraph remap
|
611 |
+
afftfilt drawgrid remap_opencl
|
612 |
+
afifo drawtext removegrain
|
613 |
+
afir drmeter removelogo
|
614 |
+
afireqsrc dynaudnorm repeatfields
|
615 |
+
afirsrc earwax replaygain
|
616 |
+
aformat ebur128 reverse
|
617 |
+
afreqshift edgedetect rgbashift
|
618 |
+
afwtdn elbg rgbtestsrc
|
619 |
+
agate entropy roberts
|
620 |
+
agraphmonitor epx roberts_opencl
|
621 |
+
ahistogram eq rotate
|
622 |
+
aiir equalizer rubberband
|
623 |
+
aintegral erosion sab
|
624 |
+
ainterleave erosion_opencl scale
|
625 |
+
alatency estdif scale2ref
|
626 |
+
alimiter exposure scale_cuda
|
627 |
+
allpass extractplanes scale_qsv
|
628 |
+
allrgb extrastereo scale_vulkan
|
629 |
+
allyuv fade scdet
|
630 |
+
aloop feedback scharr
|
631 |
+
alphaextract fftdnoiz scroll
|
632 |
+
alphamerge fftfilt segment
|
633 |
+
amerge field select
|
634 |
+
ametadata fieldhint selectivecolor
|
635 |
+
amix fieldmatch sendcmd
|
636 |
+
amovie fieldorder separatefields
|
637 |
+
amplify fifo setdar
|
638 |
+
amultiply fillborders setfield
|
639 |
+
anequalizer find_rect setparams
|
640 |
+
anlmdn firequalizer setpts
|
641 |
+
anlmf flanger setrange
|
642 |
+
anlms flip_vulkan setsar
|
643 |
+
anoisesrc flite settb
|
644 |
+
anull floodfill shear
|
645 |
+
anullsink format showcqt
|
646 |
+
anullsrc fps showcwt
|
647 |
+
apad framepack showfreqs
|
648 |
+
aperms framerate showinfo
|
649 |
+
aphasemeter framestep showpalette
|
650 |
+
aphaser freezedetect showspatial
|
651 |
+
aphaseshift freezeframes showspectrum
|
652 |
+
apsyclip frei0r showspectrumpic
|
653 |
+
apulsator frei0r_src showvolume
|
654 |
+
arealtime fspp showwaves
|
655 |
+
aresample gblur showwavespic
|
656 |
+
areverse gblur_vulkan shuffleframes
|
657 |
+
arls geq shufflepixels
|
658 |
+
arnndn gradfun shuffleplanes
|
659 |
+
asdr gradients sidechaincompress
|
660 |
+
asegment graphmonitor sidechaingate
|
661 |
+
aselect grayworld sidedata
|
662 |
+
asendcmd greyedge sierpinski
|
663 |
+
asetnsamples guided signalstats
|
664 |
+
asetpts haas signature
|
665 |
+
asetrate haldclut silencedetect
|
666 |
+
asettb haldclutsrc silenceremove
|
667 |
+
ashowinfo hdcd sinc
|
668 |
+
asidedata headphone sine
|
669 |
+
asoftclip hflip siti
|
670 |
+
aspectralstats hflip_vulkan smartblur
|
671 |
+
asplit highpass smptebars
|
672 |
+
ass highshelf smptehdbars
|
673 |
+
astats hilbert sobel
|
674 |
+
astreamselect histeq sobel_opencl
|
675 |
+
asubboost histogram sofalizer
|
676 |
+
asubcut hqdn3d spectrumsynth
|
677 |
+
asupercut hqx speechnorm
|
678 |
+
asuperpass hstack split
|
679 |
+
asuperstop hstack_qsv spp
|
680 |
+
atadenoise hsvhold sr
|
681 |
+
atempo hsvkey ssim
|
682 |
+
atilt hue ssim360
|
683 |
+
atrim huesaturation stereo3d
|
684 |
+
avectorscope hwdownload stereotools
|
685 |
+
avgblur hwmap stereowiden
|
686 |
+
avgblur_opencl hwupload streamselect
|
687 |
+
avgblur_vulkan hwupload_cuda subtitles
|
688 |
+
avsynctest hysteresis super2xsai
|
689 |
+
axcorrelate identity superequalizer
|
690 |
+
azmq idet surround
|
691 |
+
backgroundkey il swaprect
|
692 |
+
bandpass inflate swapuv
|
693 |
+
bandreject interlace tblend
|
694 |
+
bass interleave telecine
|
695 |
+
bbox join testsrc
|
696 |
+
bench kerndeint testsrc2
|
697 |
+
bilateral kirsch thistogram
|
698 |
+
bilateral_cuda ladspa threshold
|
699 |
+
biquad lagfun thumbnail
|
700 |
+
bitplanenoise latency thumbnail_cuda
|
701 |
+
blackdetect lenscorrection tile
|
702 |
+
blackframe lensfun tiltshelf
|
703 |
+
blend libplacebo tinterlace
|
704 |
+
blend_vulkan libvmaf tlut2
|
705 |
+
blockdetect life tmedian
|
706 |
+
blurdetect limitdiff tmidequalizer
|
707 |
+
bm3d limiter tmix
|
708 |
+
boxblur loop tonemap
|
709 |
+
boxblur_opencl loudnorm tonemap_opencl
|
710 |
+
bs2b lowpass tpad
|
711 |
+
bwdif lowshelf transpose
|
712 |
+
cas lumakey transpose_opencl
|
713 |
+
ccrepack lut transpose_vulkan
|
714 |
+
cellauto lut1d treble
|
715 |
+
channelmap lut2 tremolo
|
716 |
+
channelsplit lut3d trim
|
717 |
+
chorus lutrgb unpremultiply
|
718 |
+
chromaber_vulkan lutyuv unsharp
|
719 |
+
chromahold mandelbrot unsharp_opencl
|
720 |
+
chromakey maskedclamp untile
|
721 |
+
chromakey_cuda maskedmax uspp
|
722 |
+
chromanr maskedmerge v360
|
723 |
+
chromashift maskedmin vaguedenoiser
|
724 |
+
ciescope maskedthreshold varblur
|
725 |
+
codecview maskfun vectorscope
|
726 |
+
color mcdeint vflip
|
727 |
+
colorbalance mcompand vflip_vulkan
|
728 |
+
colorchannelmixer median vfrdet
|
729 |
+
colorchart mergeplanes vibrance
|
730 |
+
colorcontrast mestimate vibrato
|
731 |
+
colorcorrect metadata vidstabdetect
|
732 |
+
colorhold midequalizer vidstabtransform
|
733 |
+
colorize minterpolate vif
|
734 |
+
colorkey mix vignette
|
735 |
+
colorkey_opencl monochrome virtualbass
|
736 |
+
colorlevels morpho vmafmotion
|
737 |
+
colormap movie volume
|
738 |
+
colormatrix mpdecimate volumedetect
|
739 |
+
colorspace mptestsrc vpp_qsv
|
740 |
+
colorspace_cuda msad vstack
|
741 |
+
colorspectrum multiply vstack_qsv
|
742 |
+
colortemperature negate w3fdif
|
743 |
+
compand nlmeans waveform
|
744 |
+
compensationdelay nlmeans_opencl weave
|
745 |
+
concat nnedi xbr
|
746 |
+
convolution noformat xcorrelate
|
747 |
+
convolution_opencl noise xfade
|
748 |
+
convolve normalize xfade_opencl
|
749 |
+
copy null xmedian
|
750 |
+
corr nullsink xstack
|
751 |
+
cover_rect nullsrc xstack_qsv
|
752 |
+
crop openclsrc yadif
|
753 |
+
cropdetect oscilloscope yadif_cuda
|
754 |
+
crossfeed overlay yaepblur
|
755 |
+
crystalizer overlay_cuda yuvtestsrc
|
756 |
+
cue overlay_opencl zmq
|
757 |
+
curves overlay_qsv zoneplate
|
758 |
+
datascope overlay_vulkan zoompan
|
759 |
+
dblur owdenoise zscale
|
760 |
+
|
761 |
+
Enabled bsfs:
|
762 |
+
aac_adtstoasc h264_redundant_pps opus_metadata
|
763 |
+
av1_frame_merge hapqa_extract pcm_rechunk
|
764 |
+
av1_frame_split hevc_metadata pgs_frame_merge
|
765 |
+
av1_metadata hevc_mp4toannexb prores_metadata
|
766 |
+
chomp imx_dump_header remove_extradata
|
767 |
+
dca_core media100_to_mjpegb setts
|
768 |
+
dts2pts mjpeg2jpeg text2movsub
|
769 |
+
dump_extradata mjpega_dump_header trace_headers
|
770 |
+
dv_error_marker mov2textsub truehd_core
|
771 |
+
eac3_core mp3_header_decompress vp9_metadata
|
772 |
+
extract_extradata mpeg2_metadata vp9_raw_reorder
|
773 |
+
filter_units mpeg4_unpack_bframes vp9_superframe
|
774 |
+
h264_metadata noise vp9_superframe_split
|
775 |
+
h264_mp4toannexb null
|
776 |
+
|
777 |
+
Enabled indevs:
|
778 |
+
dshow lavfi vfwcap
|
779 |
+
gdigrab libcdio
|
780 |
+
|
781 |
+
Enabled outdevs:
|
782 |
+
caca sdl2
|
mm_avh_working_space/bin/ffmpeg/bin/ffmpeg.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:37ab214146d148bcb29555353adce5853155bc802caf5c0169865d242a5aaadc
|
3 |
+
size 133299200
|
mm_avh_working_space/bin/ffmpeg/bin/ffplay.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ad1af2274601982fb475e15ca4dfbc3e3f921ed01f57cabddeee0cb0ac067854
|
3 |
+
size 133134336
|
mm_avh_working_space/bin/ffmpeg/bin/ffprobe.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:2d038ab3d48ea6a4f1da1cb2d229bd049b207caf3ae9a27652be59e493c1d4d8
|
3 |
+
size 133175296
|
mm_avh_working_space/bin/ffmpeg/doc/bootstrap.min.css
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/community.html
ADDED
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Community</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Community">
|
9 |
+
<meta name="keywords" content="Community">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<a class="anchor" id="Organisation"></a><div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Organisation-1" href="#Organisation-1">1 Organisation</a></li>
|
38 |
+
<li><a id="toc-General-Assembly-1" href="#General-Assembly-1">2 General Assembly</a></li>
|
39 |
+
<li><a id="toc-Voting-1" href="#Voting-1">3 Voting</a></li>
|
40 |
+
<li><a id="toc-Technical-Committee-1" href="#Technical-Committee-1">4 Technical Committee</a>
|
41 |
+
<ul class="toc-numbered-mark">
|
42 |
+
<li><a id="toc-Resolution-Process-1" href="#Resolution-Process-1">4.1 Resolution Process</a>
|
43 |
+
<ul class="toc-numbered-mark">
|
44 |
+
<li><a id="toc-Seizing" href="#Seizing">4.1.1 Seizing</a></li>
|
45 |
+
<li><a id="toc-Announcement" href="#Announcement">4.1.2 Announcement</a></li>
|
46 |
+
<li><a id="toc-RFC-call" href="#RFC-call">4.1.3 RFC call</a></li>
|
47 |
+
<li><a id="toc-Within-TC" href="#Within-TC">4.1.4 Within TC</a></li>
|
48 |
+
<li><a id="toc-Decisions" href="#Decisions">4.1.5 Decisions</a></li>
|
49 |
+
</ul></li>
|
50 |
+
</ul></li>
|
51 |
+
<li><a id="toc-Community-Committee-1" href="#Community-Committee-1">5 Community Committee</a></li>
|
52 |
+
<li><a id="toc-Code-of-Conduct-1" href="#Code-of-Conduct-1">6 Code of Conduct</a></li>
|
53 |
+
</ul>
|
54 |
+
</div>
|
55 |
+
</div>
|
56 |
+
<div class="chapter-level-extent" id="Organisation-1">
|
57 |
+
<h2 class="chapter">1 Organisation</h2>
|
58 |
+
|
59 |
+
<p>The FFmpeg project is organized through a community working on global consensus.
|
60 |
+
</p>
|
61 |
+
<p>Decisions are taken by the ensemble of active members, through voting and are aided by two committees.
|
62 |
+
</p>
|
63 |
+
<a class="anchor" id="General-Assembly"></a></div>
|
64 |
+
<div class="chapter-level-extent" id="General-Assembly-1">
|
65 |
+
<h2 class="chapter">2 General Assembly</h2>
|
66 |
+
|
67 |
+
<p>The ensemble of active members is called the General Assembly (GA).
|
68 |
+
</p>
|
69 |
+
<p>The General Assembly is sovereign and legitimate for all its decisions regarding the FFmpeg project.
|
70 |
+
</p>
|
71 |
+
<p>The General Assembly is made up of active contributors.
|
72 |
+
</p>
|
73 |
+
<p>Contributors are considered "active contributors" if they have pushed more than 20 patches in the last 36 months in the main FFmpeg repository, or if they have been voted in by the GA.
|
74 |
+
</p>
|
75 |
+
<p>Additional members are added to the General Assembly through a vote after proposal by a member of the General Assembly. They are part of the GA for two years, after which they need a confirmation by the GA.
|
76 |
+
</p>
|
77 |
+
<p>A script to generate the current members of the general assembly (minus members voted in) can be found in ‘tools/general_assembly.pl‘.
|
78 |
+
</p>
|
79 |
+
<a class="anchor" id="Voting"></a></div>
|
80 |
+
<div class="chapter-level-extent" id="Voting-1">
|
81 |
+
<h2 class="chapter">3 Voting</h2>
|
82 |
+
|
83 |
+
<p>Voting is done using a ranked voting system, currently running on https://vote.ffmpeg.org/ .
|
84 |
+
</p>
|
85 |
+
<p>Majority vote means more than 50% of the expressed ballots.
|
86 |
+
</p>
|
87 |
+
<a class="anchor" id="Technical-Committee"></a></div>
|
88 |
+
<div class="chapter-level-extent" id="Technical-Committee-1">
|
89 |
+
<h2 class="chapter">4 Technical Committee</h2>
|
90 |
+
|
91 |
+
<p>The Technical Committee (TC) is here to arbitrate and make decisions when technical conflicts occur in the project. They will consider the merits of all the positions, judge them and make a decision.
|
92 |
+
</p>
|
93 |
+
<p>The TC resolves technical conflicts but is not a technical steering committee.
|
94 |
+
</p>
|
95 |
+
<p>Decisions by the TC are binding for all the contributors.
|
96 |
+
</p>
|
97 |
+
<p>Decisions made by the TC can be re-opened after 1 year or by a majority vote of the General Assembly, requested by one of the member of the GA.
|
98 |
+
</p>
|
99 |
+
<p>The TC is elected by the General Assembly for a duration of 1 year, and is composed of 5 members. Members can be re-elected if they wish. A majority vote in the General Assembly can trigger a new election of the TC.
|
100 |
+
</p>
|
101 |
+
<p>The members of the TC can be elected from outside of the GA. Candidates for election can either be suggested or self-nominated.
|
102 |
+
</p>
|
103 |
+
<p>The conflict resolution process is detailed in the resolution process document.
|
104 |
+
</p>
|
105 |
+
<p>The TC can be contacted at <tc@ffmpeg>.
|
106 |
+
</p>
|
107 |
+
<a class="anchor" id="Resolution-Process"></a><ul class="mini-toc">
|
108 |
+
<li><a href="#Resolution-Process-1" accesskey="1">Resolution Process</a></li>
|
109 |
+
</ul>
|
110 |
+
<div class="section-level-extent" id="Resolution-Process-1">
|
111 |
+
<h3 class="section">4.1 Resolution Process</h3>
|
112 |
+
|
113 |
+
<p>The Technical Committee (TC) is here to arbitrate and make decisions when technical conflicts occur in the project.
|
114 |
+
</p>
|
115 |
+
<p>The TC main role is to resolve technical conflicts. It is therefore not a technical steering committee, but it is understood that some decisions might impact the future of the project.
|
116 |
+
</p>
|
117 |
+
<ul class="mini-toc">
|
118 |
+
<li><a href="#Seizing" accesskey="1">Seizing</a></li>
|
119 |
+
<li><a href="#Announcement" accesskey="2">Announcement</a></li>
|
120 |
+
<li><a href="#RFC-call" accesskey="3">RFC call</a></li>
|
121 |
+
<li><a href="#Within-TC" accesskey="4">Within TC</a></li>
|
122 |
+
<li><a href="#Decisions" accesskey="5">Decisions</a></li>
|
123 |
+
</ul>
|
124 |
+
<div class="subsection-level-extent" id="Seizing">
|
125 |
+
<h4 class="subsection">4.1.1 Seizing</h4>
|
126 |
+
|
127 |
+
<p>The TC can take possession of any technical matter that it sees fit.
|
128 |
+
</p>
|
129 |
+
<p>To involve the TC in a matter, email tc or CC them on an ongoing discussion.
|
130 |
+
</p>
|
131 |
+
<p>As members of TC are developers, they also can email tc to raise an issue.
|
132 |
+
</p></div>
|
133 |
+
<div class="subsection-level-extent" id="Announcement">
|
134 |
+
<h4 class="subsection">4.1.2 Announcement</h4>
|
135 |
+
|
136 |
+
<p>The TC, once seized, must announce itself on the main mailing list, with a [TC] tag.
|
137 |
+
</p>
|
138 |
+
<p>The TC has 2 modes of operation: a RFC one and an internal one.
|
139 |
+
</p>
|
140 |
+
<p>If the TC thinks it needs the input from the larger community, the TC can call for a RFC. Else, it can decide by itself.
|
141 |
+
</p>
|
142 |
+
<p>If the disagreement involves a member of the TC, that member should recuse themselves from the decision.
|
143 |
+
</p>
|
144 |
+
<p>The decision to use a RFC process or an internal discussion is a discretionary decision of the TC.
|
145 |
+
</p>
|
146 |
+
<p>The TC can also reject a seizure for a few reasons such as: the matter was not discussed enough previously; it lacks expertise to reach a beneficial decision on the matter; or the matter is too trivial.
|
147 |
+
</p></div>
|
148 |
+
<div class="subsection-level-extent" id="RFC-call">
|
149 |
+
<h4 class="subsection">4.1.3 RFC call</h4>
|
150 |
+
|
151 |
+
<p>In the RFC mode, one person from the TC posts on the mailing list the technical question and will request input from the community.
|
152 |
+
</p>
|
153 |
+
<p>The mail will have the following specification:
|
154 |
+
</p>
|
155 |
+
<p>a precise title
|
156 |
+
a specific tag [TC RFC]
|
157 |
+
a top-level email
|
158 |
+
contain a precise question that does not exceed 100 words and that is answerable by developers
|
159 |
+
may have an extra description, or a link to a previous discussion, if deemed necessary,
|
160 |
+
contain a precise end date for the answers.
|
161 |
+
</p>
|
162 |
+
<p>The answers from the community must be on the main mailing list and must have the following specification:
|
163 |
+
</p>
|
164 |
+
<p>keep the tag and the title unchanged
|
165 |
+
limited to 400 words
|
166 |
+
a first-level, answering directly to the main email
|
167 |
+
answering to the question.
|
168 |
+
</p>
|
169 |
+
<p>Further replies to answers are permitted, as long as they conform to the community standards of politeness, they are limited to 100 words, and are not nested more than once. (max-depth=2)
|
170 |
+
</p>
|
171 |
+
<p>After the end-date, mails on the thread will be ignored.
|
172 |
+
</p>
|
173 |
+
<p>Violations of those rules will be escalated through the Community Committee.
|
174 |
+
</p>
|
175 |
+
<p>After all the emails are in, the TC has 96 hours to give its final decision. Exceptionally, the TC can request an extra delay, that will be notified on the mailing list.
|
176 |
+
</p></div>
|
177 |
+
<div class="subsection-level-extent" id="Within-TC">
|
178 |
+
<h4 class="subsection">4.1.4 Within TC</h4>
|
179 |
+
|
180 |
+
<p>In the internal case, the TC has 96 hours to give its final decision. Exceptionally, the TC can request an extra delay.
|
181 |
+
</p></div>
|
182 |
+
<div class="subsection-level-extent" id="Decisions">
|
183 |
+
<h4 class="subsection">4.1.5 Decisions</h4>
|
184 |
+
|
185 |
+
<p>The decisions from the TC will be sent on the mailing list, with the [TC] tag.
|
186 |
+
</p>
|
187 |
+
<p>Internally, the TC should take decisions with a majority, or using ranked-choice voting.
|
188 |
+
</p>
|
189 |
+
<p>The decision from the TC should be published with a summary of the reasons that lead to this decision.
|
190 |
+
</p>
|
191 |
+
<p>The decisions from the TC are final, until the matters are reopened after no less than one year.
|
192 |
+
</p>
|
193 |
+
<a class="anchor" id="Community-Committee"></a></div>
|
194 |
+
</div>
|
195 |
+
</div>
|
196 |
+
<div class="chapter-level-extent" id="Community-Committee-1">
|
197 |
+
<h2 class="chapter">5 Community Committee</h2>
|
198 |
+
|
199 |
+
<p>The Community Committee (CC) is here to arbitrage and make decisions when inter-personal conflicts occur in the project. It will decide quickly and take actions, for the sake of the project.
|
200 |
+
</p>
|
201 |
+
<p>The CC can remove privileges of offending members, including removal of commit access and temporary ban from the community.
|
202 |
+
</p>
|
203 |
+
<p>Decisions made by the CC can be re-opened after 1 year or by a majority vote of the General Assembly. Indefinite bans from the community must be confirmed by the General Assembly, in a majority vote.
|
204 |
+
</p>
|
205 |
+
<p>The CC is elected by the General Assembly for a duration of 1 year, and is composed of 5 members. Members can be re-elected if they wish. A majority vote in the General Assembly can trigger a new election of the CC.
|
206 |
+
</p>
|
207 |
+
<p>The members of the CC can be elected from outside of the GA. Candidates for election can either be suggested or self-nominated.
|
208 |
+
</p>
|
209 |
+
<p>The CC is governed by and responsible for enforcing the Code of Conduct.
|
210 |
+
</p>
|
211 |
+
<p>The CC can be contacted at <cc@ffmpeg>.
|
212 |
+
</p>
|
213 |
+
<a class="anchor" id="Code-of-Conduct"></a></div>
|
214 |
+
<div class="chapter-level-extent" id="Code-of-Conduct-1">
|
215 |
+
<h2 class="chapter">6 Code of Conduct</h2>
|
216 |
+
|
217 |
+
<p>Be friendly and respectful towards others and third parties.
|
218 |
+
Treat others the way you yourself want to be treated.
|
219 |
+
</p>
|
220 |
+
<p>Be considerate. Not everyone shares the same viewpoint and priorities as you do.
|
221 |
+
Different opinions and interpretations help the project.
|
222 |
+
Looking at issues from a different perspective assists development.
|
223 |
+
</p>
|
224 |
+
<p>Do not assume malice for things that can be attributed to incompetence. Even if
|
225 |
+
it is malice, it’s rarely good to start with that as initial assumption.
|
226 |
+
</p>
|
227 |
+
<p>Stay friendly even if someone acts contrarily. Everyone has a bad day
|
228 |
+
once in a while.
|
229 |
+
If you yourself have a bad day or are angry then try to take a break and reply
|
230 |
+
once you are calm and without anger if you have to.
|
231 |
+
</p>
|
232 |
+
<p>Try to help other team members and cooperate if you can.
|
233 |
+
</p>
|
234 |
+
<p>The goal of software development is to create technical excellence, not for any
|
235 |
+
individual to be better and "win" against the others. Large software projects
|
236 |
+
are only possible and successful through teamwork.
|
237 |
+
</p>
|
238 |
+
<p>If someone struggles do not put them down. Give them a helping hand
|
239 |
+
instead and point them in the right direction.
|
240 |
+
</p>
|
241 |
+
<p>Finally, keep in mind the immortal words of Bill and Ted,
|
242 |
+
"Be excellent to each other."
|
243 |
+
</p>
|
244 |
+
</div>
|
245 |
+
</div>
|
246 |
+
|
247 |
+
|
248 |
+
|
249 |
+
</body>
|
250 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/default.css
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
a.summary-letter {
|
2 |
+
text-decoration: none;
|
3 |
+
}
|
4 |
+
|
5 |
+
a {
|
6 |
+
color: #2D6198;
|
7 |
+
}
|
8 |
+
|
9 |
+
a:visited {
|
10 |
+
color: #884488;
|
11 |
+
}
|
12 |
+
|
13 |
+
#banner {
|
14 |
+
background-color: white;
|
15 |
+
position: relative;
|
16 |
+
text-align: center;
|
17 |
+
}
|
18 |
+
|
19 |
+
#banner img {
|
20 |
+
margin-bottom: 1px;
|
21 |
+
margin-top: 5px;
|
22 |
+
}
|
23 |
+
|
24 |
+
#body {
|
25 |
+
margin-left: 1em;
|
26 |
+
margin-right: 1em;
|
27 |
+
}
|
28 |
+
|
29 |
+
body {
|
30 |
+
background-color: #313131;
|
31 |
+
margin: 0;
|
32 |
+
text-align: justify;
|
33 |
+
}
|
34 |
+
|
35 |
+
.center {
|
36 |
+
margin-left: auto;
|
37 |
+
margin-right: auto;
|
38 |
+
text-align: center;
|
39 |
+
}
|
40 |
+
|
41 |
+
#container {
|
42 |
+
background-color: white;
|
43 |
+
color: #202020;
|
44 |
+
margin-left: 1em;
|
45 |
+
margin-right: 1em;
|
46 |
+
}
|
47 |
+
|
48 |
+
#footer {
|
49 |
+
text-align: center;
|
50 |
+
}
|
51 |
+
|
52 |
+
h1 a, h2 a, h3 a, h4 a {
|
53 |
+
text-decoration: inherit;
|
54 |
+
color: inherit;
|
55 |
+
}
|
56 |
+
|
57 |
+
h1, h2, h3, h4 {
|
58 |
+
padding-left: 0.4em;
|
59 |
+
border-radius: 4px;
|
60 |
+
padding-bottom: 0.25em;
|
61 |
+
padding-top: 0.25em;
|
62 |
+
border: 1px solid #6A996A;
|
63 |
+
}
|
64 |
+
|
65 |
+
h1 {
|
66 |
+
background-color: #7BB37B;
|
67 |
+
color: #151515;
|
68 |
+
font-size: 1.2em;
|
69 |
+
padding-bottom: 0.3em;
|
70 |
+
padding-top: 0.3em;
|
71 |
+
}
|
72 |
+
|
73 |
+
h2 {
|
74 |
+
color: #313131;
|
75 |
+
font-size: 1.0em;
|
76 |
+
background-color: #ABE3AB;
|
77 |
+
}
|
78 |
+
|
79 |
+
h3 {
|
80 |
+
color: #313131;
|
81 |
+
font-size: 0.9em;
|
82 |
+
margin-bottom: -6px;
|
83 |
+
background-color: #BBF3BB;
|
84 |
+
}
|
85 |
+
|
86 |
+
h4 {
|
87 |
+
color: #313131;
|
88 |
+
font-size: 0.8em;
|
89 |
+
margin-bottom: -8px;
|
90 |
+
background-color: #D1FDD1;
|
91 |
+
}
|
92 |
+
|
93 |
+
img {
|
94 |
+
border: 0;
|
95 |
+
}
|
96 |
+
|
97 |
+
#navbar {
|
98 |
+
background-color: #738073;
|
99 |
+
border-bottom: 1px solid #5C665C;
|
100 |
+
border-top: 1px solid #5C665C;
|
101 |
+
margin-top: 12px;
|
102 |
+
padding: 0.3em;
|
103 |
+
position: relative;
|
104 |
+
text-align: center;
|
105 |
+
}
|
106 |
+
|
107 |
+
#navbar a, #navbar_secondary a {
|
108 |
+
color: white;
|
109 |
+
padding: 0.3em;
|
110 |
+
text-decoration: none;
|
111 |
+
}
|
112 |
+
|
113 |
+
#navbar a:hover, #navbar_secondary a:hover {
|
114 |
+
background-color: #313131;
|
115 |
+
color: white;
|
116 |
+
text-decoration: none;
|
117 |
+
}
|
118 |
+
|
119 |
+
#navbar_secondary {
|
120 |
+
background-color: #738073;
|
121 |
+
border-bottom: 1px solid #5C665C;
|
122 |
+
border-left: 1px solid #5C665C;
|
123 |
+
border-right: 1px solid #5C665C;
|
124 |
+
padding: 0.3em;
|
125 |
+
position: relative;
|
126 |
+
text-align: center;
|
127 |
+
}
|
128 |
+
|
129 |
+
p {
|
130 |
+
margin-left: 1em;
|
131 |
+
margin-right: 1em;
|
132 |
+
}
|
133 |
+
|
134 |
+
pre {
|
135 |
+
margin-left: 3em;
|
136 |
+
margin-right: 3em;
|
137 |
+
padding: 0.3em;
|
138 |
+
border: 1px solid #bbb;
|
139 |
+
background-color: #f7f7f7;
|
140 |
+
}
|
141 |
+
|
142 |
+
dl dt {
|
143 |
+
font-weight: bold;
|
144 |
+
}
|
145 |
+
|
146 |
+
#proj_desc {
|
147 |
+
font-size: 1.2em;
|
148 |
+
}
|
149 |
+
|
150 |
+
#repos {
|
151 |
+
margin-left: 1em;
|
152 |
+
margin-right: 1em;
|
153 |
+
border-collapse: collapse;
|
154 |
+
border: solid 1px #6A996A;
|
155 |
+
}
|
156 |
+
|
157 |
+
#repos th {
|
158 |
+
background-color: #7BB37B;
|
159 |
+
border: solid 1px #6A996A;
|
160 |
+
}
|
161 |
+
|
162 |
+
#repos td {
|
163 |
+
padding: 0.2em;
|
164 |
+
border: solid 1px #6A996A;
|
165 |
+
}
|
mm_avh_working_space/bin/ffmpeg/doc/developer.html
ADDED
@@ -0,0 +1,1099 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Developer Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Developer Documentation">
|
9 |
+
<meta name="keywords" content="Developer Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a>
|
40 |
+
<ul class="toc-numbered-mark">
|
41 |
+
<li><a id="toc-Contributing-code" href="#Contributing-code">1.1 Contributing code</a></li>
|
42 |
+
</ul></li>
|
43 |
+
<li><a id="toc-Coding-Rules-1" href="#Coding-Rules-1">2 Coding Rules</a>
|
44 |
+
<ul class="toc-numbered-mark">
|
45 |
+
<li><a id="toc-Language" href="#Language">2.1 Language</a>
|
46 |
+
<ul class="toc-numbered-mark">
|
47 |
+
<li><a id="toc-SIMD_002fDSP-1" href="#SIMD_002fDSP-1">2.1.1 SIMD/DSP</a></li>
|
48 |
+
<li><a id="toc-Other-languages" href="#Other-languages">2.1.2 Other languages</a></li>
|
49 |
+
</ul></li>
|
50 |
+
<li><a id="toc-Code-formatting-conventions" href="#Code-formatting-conventions">2.2 Code formatting conventions</a>
|
51 |
+
<ul class="toc-numbered-mark">
|
52 |
+
<li><a id="toc-Vim-configuration" href="#Vim-configuration">2.2.1 Vim configuration</a></li>
|
53 |
+
<li><a id="toc-Emacs-configuration" href="#Emacs-configuration">2.2.2 Emacs configuration</a></li>
|
54 |
+
</ul></li>
|
55 |
+
<li><a id="toc-Comments" href="#Comments">2.3 Comments</a></li>
|
56 |
+
<li><a id="toc-Naming-conventions-1" href="#Naming-conventions-1">2.4 Naming conventions</a></li>
|
57 |
+
<li><a id="toc-Miscellaneous-conventions" href="#Miscellaneous-conventions">2.5 Miscellaneous conventions</a></li>
|
58 |
+
</ul></li>
|
59 |
+
<li><a id="toc-Development-Policy-1" href="#Development-Policy-1">3 Development Policy</a>
|
60 |
+
<ul class="toc-numbered-mark">
|
61 |
+
<li><a id="toc-Patches_002fCommitting" href="#Patches_002fCommitting">3.1 Patches/Committing</a></li>
|
62 |
+
<li><a id="toc-Code" href="#Code">3.2 Code</a></li>
|
63 |
+
<li><a id="toc-Library-public-interfaces" href="#Library-public-interfaces">3.3 Library public interfaces</a>
|
64 |
+
<ul class="toc-numbered-mark">
|
65 |
+
<li><a id="toc-Adding-new-interfaces" href="#Adding-new-interfaces">3.3.1 Adding new interfaces</a></li>
|
66 |
+
<li><a id="toc-Removing-interfaces-1" href="#Removing-interfaces-1">3.3.2 Removing interfaces</a></li>
|
67 |
+
<li><a id="toc-Major-version-bumps-1" href="#Major-version-bumps-1">3.3.3 Major version bumps</a></li>
|
68 |
+
</ul></li>
|
69 |
+
<li><a id="toc-Documentation_002fOther" href="#Documentation_002fOther">3.4 Documentation/Other</a></li>
|
70 |
+
</ul></li>
|
71 |
+
<li><a id="toc-Submitting-patches-1" href="#Submitting-patches-1">4 Submitting patches</a></li>
|
72 |
+
<li><a id="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">5 New codecs or formats checklist</a></li>
|
73 |
+
<li><a id="toc-Patch-submission-checklist" href="#Patch-submission-checklist">6 Patch submission checklist</a></li>
|
74 |
+
<li><a id="toc-Patch-review-process" href="#Patch-review-process">7 Patch review process</a></li>
|
75 |
+
<li><a id="toc-Regression-tests-1" href="#Regression-tests-1">8 Regression tests</a>
|
76 |
+
<ul class="toc-numbered-mark">
|
77 |
+
<li><a id="toc-Adding-files-to-the-fate_002dsuite-dataset" href="#Adding-files-to-the-fate_002dsuite-dataset">8.1 Adding files to the fate-suite dataset</a></li>
|
78 |
+
<li><a id="toc-Visualizing-Test-Coverage" href="#Visualizing-Test-Coverage">8.2 Visualizing Test Coverage</a></li>
|
79 |
+
<li><a id="toc-Using-Valgrind" href="#Using-Valgrind">8.3 Using Valgrind</a></li>
|
80 |
+
</ul></li>
|
81 |
+
<li><a id="toc-Release-process-1" href="#Release-process-1">9 Release process</a>
|
82 |
+
<ul class="toc-numbered-mark">
|
83 |
+
<li><a id="toc-Criteria-for-Point-Releases-1" href="#Criteria-for-Point-Releases-1">9.1 Criteria for Point Releases</a></li>
|
84 |
+
<li><a id="toc-Release-Checklist" href="#Release-Checklist">9.2 Release Checklist</a></li>
|
85 |
+
</ul></li>
|
86 |
+
</ul>
|
87 |
+
</div>
|
88 |
+
</div>
|
89 |
+
<div class="chapter-level-extent" id="Introduction">
|
90 |
+
<h2 class="chapter">1 Introduction</h2>
|
91 |
+
|
92 |
+
<p>This text is concerned with the development <em class="emph">of</em> FFmpeg itself. Information
|
93 |
+
on using the FFmpeg libraries in other programs can be found elsewhere, e.g. in:
|
94 |
+
</p><ul class="itemize mark-bullet">
|
95 |
+
<li>the installed header files
|
96 |
+
</li><li><a class="url" href="http://ffmpeg.org/doxygen/trunk/index.html">the Doxygen documentation</a>
|
97 |
+
generated from the headers
|
98 |
+
</li><li>the examples under <samp class="file">doc/examples</samp>
|
99 |
+
</li></ul>
|
100 |
+
|
101 |
+
<p>If you modify FFmpeg code for your own use case, you are highly encouraged to
|
102 |
+
<em class="emph">submit your changes back to us</em>, using this document as a guide. There are
|
103 |
+
both pragmatic and ideological reasons to do so:
|
104 |
+
</p><ul class="itemize mark-bullet">
|
105 |
+
<li>Maintaining external changes to keep up with upstream development is
|
106 |
+
time-consuming and error-prone. With your code in the main tree, it will be
|
107 |
+
maintained by FFmpeg developers.
|
108 |
+
</li><li>FFmpeg developers include leading experts in the field who can find bugs or
|
109 |
+
design flaws in your code.
|
110 |
+
</li><li>By supporting the project you find useful you ensure it continues to be
|
111 |
+
maintained and developed.
|
112 |
+
</li></ul>
|
113 |
+
|
114 |
+
<p>For more detailed legal information about the use of FFmpeg in
|
115 |
+
external programs read the <samp class="file">LICENSE</samp> file in the source tree and
|
116 |
+
consult <a class="url" href="https://ffmpeg.org/legal.html">https://ffmpeg.org/legal.html</a>.
|
117 |
+
</p>
|
118 |
+
<ul class="mini-toc">
|
119 |
+
<li><a href="#Contributing-code" accesskey="1">Contributing code</a></li>
|
120 |
+
</ul>
|
121 |
+
<div class="section-level-extent" id="Contributing-code">
|
122 |
+
<h3 class="section">1.1 Contributing code</h3>
|
123 |
+
|
124 |
+
<p>All proposed code changes should be submitted for review to
|
125 |
+
<a class="url" href="mailto:[email protected]">the development mailing list</a>, as
|
126 |
+
described in more detail in the <a class="ref" href="#Submitting-patches">Submitting patches</a> chapter. The code
|
127 |
+
should comply with the <a class="ref" href="#Development-Policy">Development Policy</a> and follow the <a class="ref" href="#Coding-Rules">Coding Rules</a>.
|
128 |
+
The developer making the commit and the author are responsible for their changes
|
129 |
+
and should try to fix issues their commit causes.
|
130 |
+
</p>
|
131 |
+
<a class="anchor" id="Coding-Rules"></a></div>
|
132 |
+
</div>
|
133 |
+
<div class="chapter-level-extent" id="Coding-Rules-1">
|
134 |
+
<h2 class="chapter">2 Coding Rules</h2>
|
135 |
+
|
136 |
+
<ul class="mini-toc">
|
137 |
+
<li><a href="#Language" accesskey="1">Language</a></li>
|
138 |
+
<li><a href="#Code-formatting-conventions" accesskey="2">Code formatting conventions</a></li>
|
139 |
+
<li><a href="#Comments" accesskey="3">Comments</a></li>
|
140 |
+
<li><a href="#Naming-conventions-1" accesskey="4">Naming conventions</a></li>
|
141 |
+
<li><a href="#Miscellaneous-conventions" accesskey="5">Miscellaneous conventions</a></li>
|
142 |
+
</ul>
|
143 |
+
<div class="section-level-extent" id="Language">
|
144 |
+
<h3 class="section">2.1 Language</h3>
|
145 |
+
|
146 |
+
<p>FFmpeg is mainly programmed in the ISO C99 language, extended with:
|
147 |
+
</p><ul class="itemize mark-bullet">
|
148 |
+
<li>Atomic operations from C11 <samp class="file">stdatomic.h</samp>. They are emulated on
|
149 |
+
architectures/compilers that do not support them, so all FFmpeg-internal code
|
150 |
+
may use atomics without any extra checks. However, <samp class="file">stdatomic.h</samp> must not
|
151 |
+
be included in public headers, so they stay C99-compatible.
|
152 |
+
</li></ul>
|
153 |
+
|
154 |
+
<p>Compiler-specific extensions may be used with good reason, but must not be
|
155 |
+
depended on, i.e. the code must still compile and work with compilers lacking
|
156 |
+
the extension.
|
157 |
+
</p>
|
158 |
+
<p>The following C99 features must not be used anywhere in the codebase:
|
159 |
+
</p><ul class="itemize mark-bullet">
|
160 |
+
<li>variable-length arrays;
|
161 |
+
|
162 |
+
</li><li>complex numbers;
|
163 |
+
|
164 |
+
</li><li>mixed statements and declarations.
|
165 |
+
</li></ul>
|
166 |
+
|
167 |
+
<ul class="mini-toc">
|
168 |
+
<li><a href="#SIMD_002fDSP-1" accesskey="1">SIMD/DSP</a></li>
|
169 |
+
<li><a href="#Other-languages" accesskey="2">Other languages</a></li>
|
170 |
+
</ul>
|
171 |
+
<div class="subsection-level-extent" id="SIMD_002fDSP-1">
|
172 |
+
<h4 class="subsection">2.1.1 SIMD/DSP</h4>
|
173 |
+
<a class="anchor" id="SIMD_002fDSP"></a>
|
174 |
+
<p>As modern compilers are unable to generate efficient SIMD or other
|
175 |
+
performance-critical DSP code from plain C, handwritten assembly is used.
|
176 |
+
Usually such code is isolated in a separate function. Then the standard approach
|
177 |
+
is writing multiple versions of this function – a plain C one that works
|
178 |
+
everywhere and may also be useful for debugging, and potentially multiple
|
179 |
+
architecture-specific optimized implementations. Initialization code then
|
180 |
+
chooses the best available version at runtime and loads it into a function
|
181 |
+
pointer; the function in question is then always called through this pointer.
|
182 |
+
</p>
|
183 |
+
<p>The specific syntax used for writing assembly is:
|
184 |
+
</p><ul class="itemize mark-bullet">
|
185 |
+
<li>NASM on x86;
|
186 |
+
|
187 |
+
</li><li>GAS on ARM.
|
188 |
+
</li></ul>
|
189 |
+
|
190 |
+
<p>A unit testing framework for assembly called <code class="code">checkasm</code> lives under
|
191 |
+
<samp class="file">tests/checkasm</samp>. All new assembly should come with <code class="code">checkasm</code> tests;
|
192 |
+
adding tests for existing assembly that lacks them is also strongly encouraged.
|
193 |
+
</p>
|
194 |
+
</div>
|
195 |
+
<div class="subsection-level-extent" id="Other-languages">
|
196 |
+
<h4 class="subsection">2.1.2 Other languages</h4>
|
197 |
+
|
198 |
+
<p>Other languages than C may be used in special cases:
|
199 |
+
</p><ul class="itemize mark-bullet">
|
200 |
+
<li>Compiler intrinsics or inline assembly when the code in question cannot be
|
201 |
+
written in the standard way described in the <a class="ref" href="#SIMD_002fDSP">SIMD/DSP</a> section. This
|
202 |
+
typically applies to code that needs to be inlined.
|
203 |
+
|
204 |
+
</li><li>Objective-C where required for interacting with macOS-specific interfaces.
|
205 |
+
</li></ul>
|
206 |
+
|
207 |
+
</div>
|
208 |
+
</div>
|
209 |
+
<div class="section-level-extent" id="Code-formatting-conventions">
|
210 |
+
<h3 class="section">2.2 Code formatting conventions</h3>
|
211 |
+
|
212 |
+
<p>There are the following guidelines regarding the indentation in files:
|
213 |
+
</p>
|
214 |
+
<ul class="itemize mark-bullet">
|
215 |
+
<li>Indent size is 4.
|
216 |
+
|
217 |
+
</li><li>The TAB character is forbidden outside of Makefiles as is any
|
218 |
+
form of trailing whitespace. Commits containing either will be
|
219 |
+
rejected by the git repository.
|
220 |
+
|
221 |
+
</li><li>You should try to limit your code lines to 80 characters; however, do so if
|
222 |
+
and only if this improves readability.
|
223 |
+
|
224 |
+
</li><li>K&R coding style is used.
|
225 |
+
</li></ul>
|
226 |
+
<p>The presentation is one inspired by ’indent -i4 -kr -nut’.
|
227 |
+
</p>
|
228 |
+
<ul class="mini-toc">
|
229 |
+
<li><a href="#Vim-configuration" accesskey="1">Vim configuration</a></li>
|
230 |
+
<li><a href="#Emacs-configuration" accesskey="2">Emacs configuration</a></li>
|
231 |
+
</ul>
|
232 |
+
<div class="subsection-level-extent" id="Vim-configuration">
|
233 |
+
<h4 class="subsection">2.2.1 Vim configuration</h4>
|
234 |
+
<p>In order to configure Vim to follow FFmpeg formatting conventions, paste
|
235 |
+
the following snippet into your <samp class="file">.vimrc</samp>:
|
236 |
+
</p><div class="example">
|
237 |
+
<pre class="example-preformatted">" indentation rules for FFmpeg: 4 spaces, no tabs
|
238 |
+
set expandtab
|
239 |
+
set shiftwidth=4
|
240 |
+
set softtabstop=4
|
241 |
+
set cindent
|
242 |
+
set cinoptions=(0
|
243 |
+
" Allow tabs in Makefiles.
|
244 |
+
autocmd FileType make,automake set noexpandtab shiftwidth=8 softtabstop=8
|
245 |
+
" Trailing whitespace and tabs are forbidden, so highlight them.
|
246 |
+
highlight ForbiddenWhitespace ctermbg=red guibg=red
|
247 |
+
match ForbiddenWhitespace /\s\+$\|\t/
|
248 |
+
" Do not highlight spaces at the end of line while typing on that line.
|
249 |
+
autocmd InsertEnter * match ForbiddenWhitespace /\t\|\s\+\%#\@<!$/
|
250 |
+
</pre></div>
|
251 |
+
|
252 |
+
</div>
|
253 |
+
<div class="subsection-level-extent" id="Emacs-configuration">
|
254 |
+
<h4 class="subsection">2.2.2 Emacs configuration</h4>
|
255 |
+
<p>For Emacs, add these roughly equivalent lines to your <samp class="file">.emacs.d/init.el</samp>:
|
256 |
+
</p><div class="example lisp">
|
257 |
+
<pre class="lisp-preformatted">(c-add-style "ffmpeg"
|
258 |
+
'("k&r"
|
259 |
+
(c-basic-offset . 4)
|
260 |
+
(indent-tabs-mode . nil)
|
261 |
+
(show-trailing-whitespace . t)
|
262 |
+
(c-offsets-alist
|
263 |
+
(statement-cont . (c-lineup-assignments +)))
|
264 |
+
)
|
265 |
+
)
|
266 |
+
(setq c-default-style "ffmpeg")
|
267 |
+
</pre></div>
|
268 |
+
|
269 |
+
</div>
|
270 |
+
</div>
|
271 |
+
<div class="section-level-extent" id="Comments">
|
272 |
+
<h3 class="section">2.3 Comments</h3>
|
273 |
+
<p>Use the JavaDoc/Doxygen format (see examples below) so that code documentation
|
274 |
+
can be generated automatically. All nontrivial functions should have a comment
|
275 |
+
above them explaining what the function does, even if it is just one sentence.
|
276 |
+
All structures and their member variables should be documented, too.
|
277 |
+
</p>
|
278 |
+
<p>Avoid Qt-style and similar Doxygen syntax with <code class="code">!</code> in it, i.e. replace
|
279 |
+
<code class="code">//!</code> with <code class="code">///</code> and similar. Also @ syntax should be employed
|
280 |
+
for markup commands, i.e. use <code class="code">@param</code> and not <code class="code">\param</code>.
|
281 |
+
</p>
|
282 |
+
<div class="example">
|
283 |
+
<pre class="example-preformatted">/**
|
284 |
+
* @file
|
285 |
+
* MPEG codec.
|
286 |
+
* @author ...
|
287 |
+
*/
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Summary sentence.
|
291 |
+
* more text ...
|
292 |
+
* ...
|
293 |
+
*/
|
294 |
+
typedef struct Foobar {
|
295 |
+
int var1; /**< var1 description */
|
296 |
+
int var2; ///< var2 description
|
297 |
+
/** var3 description */
|
298 |
+
int var3;
|
299 |
+
} Foobar;
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Summary sentence.
|
303 |
+
* more text ...
|
304 |
+
* ...
|
305 |
+
* @param my_parameter description of my_parameter
|
306 |
+
* @return return value description
|
307 |
+
*/
|
308 |
+
int myfunc(int my_parameter)
|
309 |
+
...
|
310 |
+
</pre></div>
|
311 |
+
|
312 |
+
<a class="anchor" id="Naming-conventions"></a></div>
|
313 |
+
<div class="section-level-extent" id="Naming-conventions-1">
|
314 |
+
<h3 class="section">2.4 Naming conventions</h3>
|
315 |
+
|
316 |
+
<p>Names of functions, variables, and struct members must be lowercase, using
|
317 |
+
underscores (_) to separate words. For example, ‘<samp class="samp">avfilter_get_video_buffer</samp>’
|
318 |
+
is an acceptable function name and ‘<samp class="samp">AVFilterGetVideo</samp>’ is not.
|
319 |
+
</p>
|
320 |
+
<p>Struct, union, enum, and typedeffed type names must use CamelCase. All structs
|
321 |
+
and unions should be typedeffed to the same name as the struct/union tag, e.g.
|
322 |
+
<code class="code">typedef struct AVFoo { ... } AVFoo;</code>. Enums are typically not
|
323 |
+
typedeffed.
|
324 |
+
</p>
|
325 |
+
<p>Enumeration constants and macros must be UPPERCASE, except for macros
|
326 |
+
masquerading as functions, which should use the function naming convention.
|
327 |
+
</p>
|
328 |
+
<p>All identifiers in the libraries should be namespaced as follows:
|
329 |
+
</p><ul class="itemize mark-bullet">
|
330 |
+
<li>No namespacing for identifiers with file and lower scope (e.g. local variables,
|
331 |
+
static functions), and struct and union members,
|
332 |
+
|
333 |
+
</li><li>The <code class="code">ff_</code> prefix must be used for variables and functions visible outside
|
334 |
+
of file scope, but only used internally within a single library, e.g.
|
335 |
+
‘<samp class="samp">ff_w64_demuxer</samp>’. This prevents name collisions when FFmpeg is statically
|
336 |
+
linked.
|
337 |
+
|
338 |
+
</li><li>For variables and functions visible outside of file scope, used internally
|
339 |
+
across multiple libraries, use <code class="code">avpriv_</code> as prefix, for example,
|
340 |
+
‘<samp class="samp">avpriv_report_missing_feature</samp>’.
|
341 |
+
|
342 |
+
</li><li>All other internal identifiers, like private type or macro names, should be
|
343 |
+
namespaced only to avoid possible internal conflicts. E.g. <code class="code">H264_NAL_SPS</code>
|
344 |
+
vs. <code class="code">HEVC_NAL_SPS</code>.
|
345 |
+
|
346 |
+
</li><li>Each library has its own prefix for public symbols, in addition to the
|
347 |
+
commonly used <code class="code">av_</code> (<code class="code">avformat_</code> for libavformat,
|
348 |
+
<code class="code">avcodec_</code> for libavcodec, <code class="code">swr_</code> for libswresample, etc).
|
349 |
+
Check the existing code and choose names accordingly.
|
350 |
+
|
351 |
+
</li><li>Other public identifiers (struct, union, enum, macro, type names) must use their
|
352 |
+
library’s public prefix (<code class="code">AV</code>, <code class="code">Sws</code>, or <code class="code">Swr</code>).
|
353 |
+
</li></ul>
|
354 |
+
|
355 |
+
<p>Furthermore, name space reserved for the system should not be invaded.
|
356 |
+
Identifiers ending in <code class="code">_t</code> are reserved by
|
357 |
+
<a class="url" href="http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html#tag_02_02_02">POSIX</a>.
|
358 |
+
Also avoid names starting with <code class="code">__</code> or <code class="code">_</code> followed by an uppercase
|
359 |
+
letter as they are reserved by the C standard. Names starting with <code class="code">_</code>
|
360 |
+
are reserved at the file level and may not be used for externally visible
|
361 |
+
symbols. If in doubt, just avoid names starting with <code class="code">_</code> altogether.
|
362 |
+
</p>
|
363 |
+
</div>
|
364 |
+
<div class="section-level-extent" id="Miscellaneous-conventions">
|
365 |
+
<h3 class="section">2.5 Miscellaneous conventions</h3>
|
366 |
+
|
367 |
+
<ul class="itemize mark-bullet">
|
368 |
+
<li>fprintf and printf are forbidden in libavformat and libavcodec,
|
369 |
+
please use av_log() instead.
|
370 |
+
|
371 |
+
</li><li>Casts should be used only when necessary. Unneeded parentheses
|
372 |
+
should also be avoided if they don’t make the code easier to understand.
|
373 |
+
</li></ul>
|
374 |
+
|
375 |
+
<a class="anchor" id="Development-Policy"></a></div>
|
376 |
+
</div>
|
377 |
+
<div class="chapter-level-extent" id="Development-Policy-1">
|
378 |
+
<h2 class="chapter">3 Development Policy</h2>
|
379 |
+
|
380 |
+
<ul class="mini-toc">
|
381 |
+
<li><a href="#Patches_002fCommitting" accesskey="1">Patches/Committing</a></li>
|
382 |
+
<li><a href="#Code" accesskey="2">Code</a></li>
|
383 |
+
<li><a href="#Library-public-interfaces" accesskey="3">Library public interfaces</a></li>
|
384 |
+
<li><a href="#Documentation_002fOther" accesskey="4">Documentation/Other</a></li>
|
385 |
+
</ul>
|
386 |
+
<div class="section-level-extent" id="Patches_002fCommitting">
|
387 |
+
<h3 class="section">3.1 Patches/Committing</h3>
|
388 |
+
<h4 class="subheading" id="Licenses-for-patches-must-be-compatible-with-FFmpeg_002e">Licenses for patches must be compatible with FFmpeg.</h4>
|
389 |
+
<p>Contributions should be licensed under the
|
390 |
+
<a class="uref" href="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL 2.1</a>,
|
391 |
+
including an "or any later version" clause, or, if you prefer
|
392 |
+
a gift-style license, the
|
393 |
+
<a class="uref" href="http://opensource.org/licenses/isc-license.txt">ISC</a> or
|
394 |
+
<a class="uref" href="http://mit-license.org/">MIT</a> license.
|
395 |
+
<a class="uref" href="http://www.gnu.org/licenses/gpl-2.0.html">GPL 2</a> including
|
396 |
+
an "or any later version" clause is also acceptable, but LGPL is
|
397 |
+
preferred.
|
398 |
+
If you add a new file, give it a proper license header. Do not copy and
|
399 |
+
paste it from a random place, use an existing file as template.
|
400 |
+
</p>
|
401 |
+
<h4 class="subheading" id="You-must-not-commit-code-which-breaks-FFmpeg_0021">You must not commit code which breaks FFmpeg!</h4>
|
402 |
+
<p>This means unfinished code which is enabled and breaks compilation,
|
403 |
+
or compiles but does not work/breaks the regression tests. Code which
|
404 |
+
is unfinished but disabled may be permitted under-circumstances, like
|
405 |
+
missing samples or an implementation with a small subset of features.
|
406 |
+
Always check the mailing list for any reviewers with issues and test
|
407 |
+
FATE before you push.
|
408 |
+
</p>
|
409 |
+
<h4 class="subheading" id="Keep-the-main-commit-message-short-with-an-extended-description-below_002e">Keep the main commit message short with an extended description below.</h4>
|
410 |
+
<p>The commit message should have a short first line in the form of
|
411 |
+
a ‘<samp class="samp">topic: short description</samp>’ as a header, separated by a newline
|
412 |
+
from the body consisting of an explanation of why the change is necessary.
|
413 |
+
If the commit fixes a known bug on the bug tracker, the commit message
|
414 |
+
should include its bug ID. Referring to the issue on the bug tracker does
|
415 |
+
not exempt you from writing an excerpt of the bug in the commit message.
|
416 |
+
</p>
|
417 |
+
<h4 class="subheading" id="Testing-must-be-adequate-but-not-excessive_002e">Testing must be adequate but not excessive.</h4>
|
418 |
+
<p>If it works for you, others, and passes FATE then it should be OK to commit
|
419 |
+
it, provided it fits the other committing criteria. You should not worry about
|
420 |
+
over-testing things. If your code has problems (portability, triggers
|
421 |
+
compiler bugs, unusual environment etc) they will be reported and eventually
|
422 |
+
fixed.
|
423 |
+
</p>
|
424 |
+
<h4 class="subheading" id="Do-not-commit-unrelated-changes-together_002e">Do not commit unrelated changes together.</h4>
|
425 |
+
<p>They should be split them into self-contained pieces. Also do not forget
|
426 |
+
that if part B depends on part A, but A does not depend on B, then A can
|
427 |
+
and should be committed first and separate from B. Keeping changes well
|
428 |
+
split into self-contained parts makes reviewing and understanding them on
|
429 |
+
the commit log mailing list easier. This also helps in case of debugging
|
430 |
+
later on.
|
431 |
+
Also if you have doubts about splitting or not splitting, do not hesitate to
|
432 |
+
ask/discuss it on the developer mailing list.
|
433 |
+
</p>
|
434 |
+
<h4 class="subheading" id="Ask-before-you-change-the-build-system-_0028configure_002c-etc_0029_002e">Ask before you change the build system (configure, etc).</h4>
|
435 |
+
<p>Do not commit changes to the build system (Makefiles, configure script)
|
436 |
+
which change behavior, defaults etc, without asking first. The same
|
437 |
+
applies to compiler warning fixes, trivial looking fixes and to code
|
438 |
+
maintained by other developers. We usually have a reason for doing things
|
439 |
+
the way we do. Send your changes as patches to the ffmpeg-devel mailing
|
440 |
+
list, and if the code maintainers say OK, you may commit. This does not
|
441 |
+
apply to files you wrote and/or maintain.
|
442 |
+
</p>
|
443 |
+
<h4 class="subheading" id="Cosmetic-changes-should-be-kept-in-separate-patches_002e">Cosmetic changes should be kept in separate patches.</h4>
|
444 |
+
<p>We refuse source indentation and other cosmetic changes if they are mixed
|
445 |
+
with functional changes, such commits will be rejected and removed. Every
|
446 |
+
developer has his own indentation style, you should not change it. Of course
|
447 |
+
if you (re)write something, you can use your own style, even though we would
|
448 |
+
prefer if the indentation throughout FFmpeg was consistent (Many projects
|
449 |
+
force a given indentation style - we do not.). If you really need to make
|
450 |
+
indentation changes (try to avoid this), separate them strictly from real
|
451 |
+
changes.
|
452 |
+
</p>
|
453 |
+
<p>NOTE: If you had to put if(){ .. } over a large (> 5 lines) chunk of code,
|
454 |
+
then either do NOT change the indentation of the inner part within (do not
|
455 |
+
move it to the right)! or do so in a separate commit
|
456 |
+
</p>
|
457 |
+
<h4 class="subheading" id="Commit-messages-should-always-be-filled-out-properly_002e">Commit messages should always be filled out properly.</h4>
|
458 |
+
<p>Always fill out the commit log message. Describe in a few lines what you
|
459 |
+
changed and why. You can refer to mailing list postings if you fix a
|
460 |
+
particular bug. Comments such as "fixed!" or "Changed it." are unacceptable.
|
461 |
+
Recommended format:
|
462 |
+
</p>
|
463 |
+
<div class="example">
|
464 |
+
<pre class="example-preformatted">area changed: Short 1 line description
|
465 |
+
|
466 |
+
details describing what and why and giving references.
|
467 |
+
</pre></div>
|
468 |
+
|
469 |
+
<h4 class="subheading" id="Credit-the-author-of-the-patch_002e">Credit the author of the patch.</h4>
|
470 |
+
<p>Make sure the author of the commit is set correctly. (see git commit –author)
|
471 |
+
If you apply a patch, send an
|
472 |
+
answer to ffmpeg-devel (or wherever you got the patch from) saying that
|
473 |
+
you applied the patch.
|
474 |
+
</p>
|
475 |
+
<h4 class="subheading" id="Complex-patches-should-refer-to-discussion-surrounding-them_002e">Complex patches should refer to discussion surrounding them.</h4>
|
476 |
+
<p>When applying patches that have been discussed (at length) on the mailing
|
477 |
+
list, reference the thread in the log message.
|
478 |
+
</p>
|
479 |
+
<h4 class="subheading" id="Always-wait-long-enough-before-pushing-changes">Always wait long enough before pushing changes</h4>
|
480 |
+
<p>Do NOT commit to code actively maintained by others without permission.
|
481 |
+
Send a patch to ffmpeg-devel. If no one answers within a reasonable
|
482 |
+
time-frame (12h for build failures and security fixes, 3 days small changes,
|
483 |
+
1 week for big patches) then commit your patch if you think it is OK.
|
484 |
+
Also note, the maintainer can simply ask for more time to review!
|
485 |
+
</p>
|
486 |
+
</div>
|
487 |
+
<div class="section-level-extent" id="Code">
|
488 |
+
<h3 class="section">3.2 Code</h3>
|
489 |
+
<h4 class="subheading" id="Warnings-for-correct-code-may-be-disabled-if-there-is-no-other-option_002e">Warnings for correct code may be disabled if there is no other option.</h4>
|
490 |
+
<p>Compiler warnings indicate potential bugs or code with bad style. If a type of
|
491 |
+
warning always points to correct and clean code, that warning should
|
492 |
+
be disabled, not the code changed.
|
493 |
+
Thus the remaining warnings can either be bugs or correct code.
|
494 |
+
If it is a bug, the bug has to be fixed. If it is not, the code should
|
495 |
+
be changed to not generate a warning unless that causes a slowdown
|
496 |
+
or obfuscates the code.
|
497 |
+
</p>
|
498 |
+
<h4 class="subheading" id="Check-untrusted-input-properly_002e">Check untrusted input properly.</h4>
|
499 |
+
<p>Never write to unallocated memory, never write over the end of arrays,
|
500 |
+
always check values read from some untrusted source before using them
|
501 |
+
as array index or other risky things.
|
502 |
+
</p>
|
503 |
+
</div>
|
504 |
+
<div class="section-level-extent" id="Library-public-interfaces">
|
505 |
+
<h3 class="section">3.3 Library public interfaces</h3>
|
506 |
+
<p>Every library in FFmpeg provides a set of public APIs in its installed headers,
|
507 |
+
which are those listed in the variable <code class="code">HEADERS</code> in that library’s
|
508 |
+
<samp class="file">Makefile</samp>. All identifiers defined in those headers (except for those
|
509 |
+
explicitly documented otherwise), and corresponding symbols exported from
|
510 |
+
compiled shared or static libraries are considered public interfaces and must
|
511 |
+
comply with the API and ABI compatibility rules described in this section.
|
512 |
+
</p>
|
513 |
+
<p>Public APIs must be backward compatible within a given major version. I.e. any
|
514 |
+
valid user code that compiles and works with a given library version must still
|
515 |
+
compile and work with any later version, as long as the major version number is
|
516 |
+
unchanged. "Valid user code" here means code that is calling our APIs in a
|
517 |
+
documented and/or intended manner and is not relying on any undefined behavior.
|
518 |
+
Incrementing the major version may break backward compatibility, but only to the
|
519 |
+
extent described in <a class="ref" href="#Major-version-bumps">Major version bumps</a>.
|
520 |
+
</p>
|
521 |
+
<p>We also guarantee backward ABI compatibility for shared and static libraries.
|
522 |
+
I.e. it should be possible to replace a shared or static build of our library
|
523 |
+
with a build of any later version (re-linking the user binary in the static
|
524 |
+
case) without breaking any valid user binaries, as long as the major version
|
525 |
+
number remains unchanged.
|
526 |
+
</p>
|
527 |
+
<ul class="mini-toc">
|
528 |
+
<li><a href="#Adding-new-interfaces" accesskey="1">Adding new interfaces</a></li>
|
529 |
+
<li><a href="#Removing-interfaces-1" accesskey="2">Removing interfaces</a></li>
|
530 |
+
<li><a href="#Major-version-bumps-1" accesskey="3">Major version bumps</a></li>
|
531 |
+
</ul>
|
532 |
+
<div class="subsection-level-extent" id="Adding-new-interfaces">
|
533 |
+
<h4 class="subsection">3.3.1 Adding new interfaces</h4>
|
534 |
+
<p>Any new public identifiers in installed headers are considered new API - this
|
535 |
+
includes new functions, structs, macros, enum values, typedefs, new fields in
|
536 |
+
existing functions, new installed headers, etc. Consider the following
|
537 |
+
guidelines when adding new APIs.
|
538 |
+
</p>
|
539 |
+
<h4 class="subsubheading" id="Motivation">Motivation</h4>
|
540 |
+
<p>While new APIs can be added relatively easily, changing or removing them is much
|
541 |
+
harder due to abovementioned compatibility requirements. You should then
|
542 |
+
consider carefully whether the functionality you are adding really needs to be
|
543 |
+
exposed to our callers as new public API.
|
544 |
+
</p>
|
545 |
+
<p>Your new API should have at least one well-established use case outside of the
|
546 |
+
library that cannot be easily achieved with existing APIs. Every library in
|
547 |
+
FFmpeg also has a defined scope - your new API must fit within it.
|
548 |
+
</p>
|
549 |
+
<h4 class="subsubheading" id="Replacing-existing-APIs">Replacing existing APIs</h4>
|
550 |
+
<p>If your new API is replacing an existing one, it should be strictly superior to
|
551 |
+
it, so that the advantages of using the new API outweight the cost to the
|
552 |
+
callers of changing their code. After adding the new API you should then
|
553 |
+
deprecate the old one and schedule it for removal, as described in
|
554 |
+
<a class="ref" href="#Removing-interfaces">Removing interfaces</a>.
|
555 |
+
</p>
|
556 |
+
<p>If you deem an existing API deficient and want to fix it, the preferred approach
|
557 |
+
in most cases is to add a differently-named replacement and deprecate the
|
558 |
+
existing API rather than modify it. It is important to make the changes visible
|
559 |
+
to our callers (e.g. through compile- or run-time deprecation warnings) and make
|
560 |
+
it clear how to transition to the new API (e.g. in the Doxygen documentation or
|
561 |
+
on the wiki).
|
562 |
+
</p>
|
563 |
+
<h4 class="subsubheading" id="API-design">API design</h4>
|
564 |
+
<p>The FFmpeg libraries are used by a variety of callers to perform a wide range of
|
565 |
+
multimedia-related processing tasks. You should therefore - within reason - try
|
566 |
+
to design your new API for the broadest feasible set of use cases and avoid
|
567 |
+
unnecessarily limiting it to a specific type of callers (e.g. just media
|
568 |
+
playback or just transcoding).
|
569 |
+
</p>
|
570 |
+
<h4 class="subsubheading" id="Consistency">Consistency</h4>
|
571 |
+
<p>Check whether similar APIs already exist in FFmpeg. If they do, try to model
|
572 |
+
your new addition on them to achieve better overall consistency.
|
573 |
+
</p>
|
574 |
+
<p>The naming of your new identifiers should follow the <a class="ref" href="#Naming-conventions">Naming conventions</a>
|
575 |
+
and be aligned with other similar APIs, if applicable.
|
576 |
+
</p>
|
577 |
+
<h4 class="subsubheading" id="Extensibility">Extensibility</h4>
|
578 |
+
<p>You should also consider how your API might be extended in the future in a
|
579 |
+
backward-compatible way. If you are adding a new struct <code class="code">AVFoo</code>, the
|
580 |
+
standard approach is requiring the caller to always allocate it through a
|
581 |
+
constructor function, typically named <code class="code">av_foo_alloc()</code>. This way new fields
|
582 |
+
may be added to the end of the struct without breaking ABI compatibility.
|
583 |
+
Typically you will also want a destructor - <code class="code">av_foo_free(AVFoo**)</code> that
|
584 |
+
frees the indirectly supplied object (and its contents, if applicable) and
|
585 |
+
writes <code class="code">NULL</code> to the supplied pointer, thus eliminating the potential
|
586 |
+
dangling pointer in the caller’s memory.
|
587 |
+
</p>
|
588 |
+
<p>If you are adding new functions, consider whether it might be desirable to tweak
|
589 |
+
their behavior in the future - you may want to add a flags argument, even though
|
590 |
+
it would be unused initially.
|
591 |
+
</p>
|
592 |
+
<h4 class="subsubheading" id="Documentation">Documentation</h4>
|
593 |
+
<p>All new APIs must be documented as Doxygen-formatted comments above the
|
594 |
+
identifiers you add to the public headers. You should also briefly mention the
|
595 |
+
change in <samp class="file">doc/APIchanges</samp>.
|
596 |
+
</p>
|
597 |
+
<h4 class="subsubheading" id="Bump-the-version">Bump the version</h4>
|
598 |
+
<p>Backward-incompatible API or ABI changes require incrementing (bumping) the
|
599 |
+
major version number, as described in <a class="ref" href="#Major-version-bumps">Major version bumps</a>. Major
|
600 |
+
bumps are significant events that happen on a schedule - so if your change
|
601 |
+
strictly requires one you should add it under <code class="code">#if</code> preprocesor guards that
|
602 |
+
disable it until the next major bump happens.
|
603 |
+
</p>
|
604 |
+
<p>New APIs that can be added without breaking API or ABI compatibility require
|
605 |
+
bumping the minor version number.
|
606 |
+
</p>
|
607 |
+
<p>Incrementing the third (micro) version component means a noteworthy binary
|
608 |
+
compatible change (e.g. encoder bug fix that matters for the decoder). The third
|
609 |
+
component always starts at 100 to distinguish FFmpeg from Libav.
|
610 |
+
</p>
|
611 |
+
<a class="anchor" id="Removing-interfaces"></a></div>
|
612 |
+
<div class="subsection-level-extent" id="Removing-interfaces-1">
|
613 |
+
<h4 class="subsection">3.3.2 Removing interfaces</h4>
|
614 |
+
<p>Due to abovementioned compatibility guarantees, removing APIs is an involved
|
615 |
+
process that should only be undertaken with good reason. Typically a deficient,
|
616 |
+
restrictive, or otherwise inadequate API is replaced by a superior one, though
|
617 |
+
it does at times happen that we remove an API without any replacement (e.g. when
|
618 |
+
the feature it provides is deemed not worth the maintenance effort, out of scope
|
619 |
+
of the project, fundamentally flawed, etc.).
|
620 |
+
</p>
|
621 |
+
<p>The removal has two steps - first the API is deprecated and scheduled for
|
622 |
+
removal, but remains present and functional. The second step is actually
|
623 |
+
removing the API - this is described in <a class="ref" href="#Major-version-bumps">Major version bumps</a>.
|
624 |
+
</p>
|
625 |
+
<p>To deprecate an API you should signal to our users that they should stop using
|
626 |
+
it. E.g. if you intend to remove struct members or functions, you should mark
|
627 |
+
them with <code class="code">attribute_deprecated</code>. When this cannot be done, it may be
|
628 |
+
possible to detect the use of the deprecated API at runtime and print a warning
|
629 |
+
(though take care not to print it too often). You should also document the
|
630 |
+
deprecation (and the replacement, if applicable) in the relevant Doxygen
|
631 |
+
documentation block.
|
632 |
+
</p>
|
633 |
+
<p>Finally, you should define a deprecation guard along the lines of
|
634 |
+
<code class="code">#define FF_API_<FOO> (LIBAVBAR_VERSION_MAJOR < XX)</code> (where XX is the major
|
635 |
+
version in which the API will be removed) in <samp class="file">libavbar/version_major.h</samp>
|
636 |
+
(<samp class="file">version.h</samp> in case of <code class="code">libavutil</code>). Then wrap all uses of the
|
637 |
+
deprecated API in <code class="code">#if FF_API_<FOO> .... #endif</code>, so that the code will
|
638 |
+
automatically get disabled once the major version reaches XX. You can also use
|
639 |
+
<code class="code">FF_DISABLE_DEPRECATION_WARNINGS</code> and <code class="code">FF_ENABLE_DEPRECATION_WARNINGS</code>
|
640 |
+
to suppress compiler deprecation warnings inside these guards. You should test
|
641 |
+
that the code compiles and works with the guard macro evaluating to both true
|
642 |
+
and false.
|
643 |
+
</p>
|
644 |
+
<a class="anchor" id="Major-version-bumps"></a></div>
|
645 |
+
<div class="subsection-level-extent" id="Major-version-bumps-1">
|
646 |
+
<h4 class="subsection">3.3.3 Major version bumps</h4>
|
647 |
+
<p>A major version bump signifies an API and/or ABI compatibility break. To reduce
|
648 |
+
the negative effects on our callers, who are required to adapt their code,
|
649 |
+
backward-incompatible changes during a major bump should be limited to:
|
650 |
+
</p><ul class="itemize mark-bullet">
|
651 |
+
<li>Removing previously deprecated APIs.
|
652 |
+
|
653 |
+
</li><li>Performing ABI- but not API-breaking changes, like reordering struct contents.
|
654 |
+
</li></ul>
|
655 |
+
|
656 |
+
</div>
|
657 |
+
</div>
|
658 |
+
<div class="section-level-extent" id="Documentation_002fOther">
|
659 |
+
<h3 class="section">3.4 Documentation/Other</h3>
|
660 |
+
<h4 class="subheading" id="Subscribe-to-the-ffmpeg_002ddevel-mailing-list_002e">Subscribe to the ffmpeg-devel mailing list.</h4>
|
661 |
+
<p>It is important to be subscribed to the
|
662 |
+
<a class="uref" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
663 |
+
mailing list. Almost any non-trivial patch is to be sent there for review.
|
664 |
+
Other developers may have comments about your contribution. We expect you see
|
665 |
+
those comments, and to improve it if requested. (N.B. Experienced committers
|
666 |
+
have other channels, and may sometimes skip review for trivial fixes.) Also,
|
667 |
+
discussion here about bug fixes and FFmpeg improvements by other developers may
|
668 |
+
be helpful information for you. Finally, by being a list subscriber, your
|
669 |
+
contribution will be posted immediately to the list, without the moderation
|
670 |
+
hold which messages from non-subscribers experience.
|
671 |
+
</p>
|
672 |
+
<p>However, it is more important to the project that we receive your patch than
|
673 |
+
that you be subscribed to the ffmpeg-devel list. If you have a patch, and don’t
|
674 |
+
want to subscribe and discuss the patch, then please do send it to the list
|
675 |
+
anyway.
|
676 |
+
</p>
|
677 |
+
<h4 class="subheading" id="Subscribe-to-the-ffmpeg_002dcvslog-mailing-list_002e">Subscribe to the ffmpeg-cvslog mailing list.</h4>
|
678 |
+
<p>Diffs of all commits are sent to the
|
679 |
+
<a class="uref" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-cvslog">ffmpeg-cvslog</a>
|
680 |
+
mailing list. Some developers read this list to review all code base changes
|
681 |
+
from all sources. Subscribing to this list is not mandatory.
|
682 |
+
</p>
|
683 |
+
<h4 class="subheading" id="Keep-the-documentation-up-to-date_002e">Keep the documentation up to date.</h4>
|
684 |
+
<p>Update the documentation if you change behavior or add features. If you are
|
685 |
+
unsure how best to do this, send a patch to ffmpeg-devel, the documentation
|
686 |
+
maintainer(s) will review and commit your stuff.
|
687 |
+
</p>
|
688 |
+
<h4 class="subheading" id="Important-discussions-should-be-accessible-to-all_002e">Important discussions should be accessible to all.</h4>
|
689 |
+
<p>Try to keep important discussions and requests (also) on the public
|
690 |
+
developer mailing list, so that all developers can benefit from them.
|
691 |
+
</p>
|
692 |
+
<h4 class="subheading" id="Check-your-entries-in-MAINTAINERS_002e">Check your entries in MAINTAINERS.</h4>
|
693 |
+
<p>Make sure that no parts of the codebase that you maintain are missing from the
|
694 |
+
<samp class="file">MAINTAINERS</samp> file. If something that you want to maintain is missing add it with
|
695 |
+
your name after it.
|
696 |
+
If at some point you no longer want to maintain some code, then please help in
|
697 |
+
finding a new maintainer and also don’t forget to update the <samp class="file">MAINTAINERS</samp> file.
|
698 |
+
</p>
|
699 |
+
<p>We think our rules are not too hard. If you have comments, contact us.
|
700 |
+
</p>
|
701 |
+
<a class="anchor" id="Submitting-patches"></a></div>
|
702 |
+
</div>
|
703 |
+
<div class="chapter-level-extent" id="Submitting-patches-1">
|
704 |
+
<h2 class="chapter">4 Submitting patches</h2>
|
705 |
+
|
706 |
+
<p>First, read the <a class="ref" href="#Coding-Rules">Coding Rules</a> above if you did not yet, in particular
|
707 |
+
the rules regarding patch submission.
|
708 |
+
</p>
|
709 |
+
<p>When you submit your patch, please use <code class="code">git format-patch</code> or
|
710 |
+
<code class="code">git send-email</code>. We cannot read other diffs :-).
|
711 |
+
</p>
|
712 |
+
<p>Also please do not submit a patch which contains several unrelated changes.
|
713 |
+
Split it into separate, self-contained pieces. This does not mean splitting
|
714 |
+
file by file. Instead, make the patch as small as possible while still
|
715 |
+
keeping it as a logical unit that contains an individual change, even
|
716 |
+
if it spans multiple files. This makes reviewing your patches much easier
|
717 |
+
for us and greatly increases your chances of getting your patch applied.
|
718 |
+
</p>
|
719 |
+
<p>Use the patcheck tool of FFmpeg to check your patch.
|
720 |
+
The tool is located in the tools directory.
|
721 |
+
</p>
|
722 |
+
<p>Run the <a class="ref" href="#Regression-tests">Regression tests</a> before submitting a patch in order to verify
|
723 |
+
it does not cause unexpected problems.
|
724 |
+
</p>
|
725 |
+
<p>It also helps quite a bit if you tell us what the patch does (for example
|
726 |
+
’replaces lrint by lrintf’), and why (for example ’*BSD isn’t C99 compliant
|
727 |
+
and has no lrint()’)
|
728 |
+
</p>
|
729 |
+
<p>Also please if you send several patches, send each patch as a separate mail,
|
730 |
+
do not attach several unrelated patches to the same mail.
|
731 |
+
</p>
|
732 |
+
<p>Patches should be posted to the
|
733 |
+
<a class="uref" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
734 |
+
mailing list. Use <code class="code">git send-email</code> when possible since it will properly
|
735 |
+
send patches without requiring extra care. If you cannot, then send patches
|
736 |
+
as base64-encoded attachments, so your patch is not trashed during
|
737 |
+
transmission. Also ensure the correct mime type is used
|
738 |
+
(text/x-diff or text/x-patch or at least text/plain) and that only one
|
739 |
+
patch is inline or attached per mail.
|
740 |
+
You can check <a class="url" href="https://patchwork.ffmpeg.org">https://patchwork.ffmpeg.org</a>, if your patch does not show up, its mime type
|
741 |
+
likely was wrong.
|
742 |
+
</p>
|
743 |
+
<h4 class="subheading" id="Sending-patches-from-email-clients">Sending patches from email clients</h4>
|
744 |
+
<p>Using <code class="code">git send-email</code> might not be desirable for everyone. The
|
745 |
+
following trick allows to send patches via email clients in a safe
|
746 |
+
way. It has been tested with Outlook and Thunderbird (with X-Unsent
|
747 |
+
extension) and might work with other applications.
|
748 |
+
</p>
|
749 |
+
<p>Create your patch like this:
|
750 |
+
</p>
|
751 |
+
<pre class="verbatim">git format-patch -s -o "outputfolder" --add-header "X-Unsent: 1" --suffix .eml --to [email protected] -1 1a2b3c4d
|
752 |
+
</pre>
|
753 |
+
<p>Now you’ll just need to open the eml file with the email application
|
754 |
+
and execute ’Send’.
|
755 |
+
</p>
|
756 |
+
<h4 class="subheading" id="Reviews">Reviews</h4>
|
757 |
+
<p>Your patch will be reviewed on the mailing list. You will likely be asked
|
758 |
+
to make some changes and are expected to send in an improved version that
|
759 |
+
incorporates the requests from the review. This process may go through
|
760 |
+
several iterations. Once your patch is deemed good enough, some developer
|
761 |
+
will pick it up and commit it to the official FFmpeg tree.
|
762 |
+
</p>
|
763 |
+
<p>Give us a few days to react. But if some time passes without reaction,
|
764 |
+
send a reminder by email. Your patch should eventually be dealt with.
|
765 |
+
</p>
|
766 |
+
|
767 |
+
</div>
|
768 |
+
<div class="chapter-level-extent" id="New-codecs-or-formats-checklist">
|
769 |
+
<h2 class="chapter">5 New codecs or formats checklist</h2>
|
770 |
+
|
771 |
+
<ol class="enumerate">
|
772 |
+
<li> Did you use av_cold for codec initialization and close functions?
|
773 |
+
|
774 |
+
</li><li> Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
|
775 |
+
AVInputFormat/AVOutputFormat struct?
|
776 |
+
|
777 |
+
</li><li> Did you bump the minor version number (and reset the micro version
|
778 |
+
number) in <samp class="file">libavcodec/version.h</samp> or <samp class="file">libavformat/version.h</samp>?
|
779 |
+
|
780 |
+
</li><li> Did you register it in <samp class="file">allcodecs.c</samp> or <samp class="file">allformats.c</samp>?
|
781 |
+
|
782 |
+
</li><li> Did you add the AVCodecID to <samp class="file">avcodec.h</samp>?
|
783 |
+
When adding new codec IDs, also add an entry to the codec descriptor
|
784 |
+
list in <samp class="file">libavcodec/codec_desc.c</samp>.
|
785 |
+
|
786 |
+
</li><li> If it has a FourCC, did you add it to <samp class="file">libavformat/riff.c</samp>,
|
787 |
+
even if it is only a decoder?
|
788 |
+
|
789 |
+
</li><li> Did you add a rule to compile the appropriate files in the Makefile?
|
790 |
+
Remember to do this even if you’re just adding a format to a file that is
|
791 |
+
already being compiled by some other rule, like a raw demuxer.
|
792 |
+
|
793 |
+
</li><li> Did you add an entry to the table of supported formats or codecs in
|
794 |
+
<samp class="file">doc/general.texi</samp>?
|
795 |
+
|
796 |
+
</li><li> Did you add an entry in the Changelog?
|
797 |
+
|
798 |
+
</li><li> If it depends on a parser or a library, did you add that dependency in
|
799 |
+
configure?
|
800 |
+
|
801 |
+
</li><li> Did you <code class="code">git add</code> the appropriate files before committing?
|
802 |
+
|
803 |
+
</li><li> Did you make sure it compiles standalone, i.e. with
|
804 |
+
<code class="code">configure --disable-everything --enable-decoder=foo</code>
|
805 |
+
(or <code class="code">--enable-demuxer</code> or whatever your component is)?
|
806 |
+
</li></ol>
|
807 |
+
|
808 |
+
|
809 |
+
</div>
|
810 |
+
<div class="chapter-level-extent" id="Patch-submission-checklist">
|
811 |
+
<h2 class="chapter">6 Patch submission checklist</h2>
|
812 |
+
|
813 |
+
<ol class="enumerate">
|
814 |
+
<li> Does <code class="code">make fate</code> pass with the patch applied?
|
815 |
+
|
816 |
+
</li><li> Was the patch generated with git format-patch or send-email?
|
817 |
+
|
818 |
+
</li><li> Did you sign-off your patch? (<code class="code">git commit -s</code>)
|
819 |
+
See <a class="uref" href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/process/submitting-patches.rst">Sign your work</a> for the meaning
|
820 |
+
of <em class="dfn">sign-off</em>.
|
821 |
+
|
822 |
+
</li><li> Did you provide a clear git commit log message?
|
823 |
+
|
824 |
+
</li><li> Is the patch against latest FFmpeg git master branch?
|
825 |
+
|
826 |
+
</li><li> Are you subscribed to ffmpeg-devel?
|
827 |
+
(the list is subscribers only due to spam)
|
828 |
+
|
829 |
+
</li><li> Have you checked that the changes are minimal, so that the same cannot be
|
830 |
+
achieved with a smaller patch and/or simpler final code?
|
831 |
+
|
832 |
+
</li><li> If the change is to speed critical code, did you benchmark it?
|
833 |
+
|
834 |
+
</li><li> If you did any benchmarks, did you provide them in the mail?
|
835 |
+
|
836 |
+
</li><li> Have you checked that the patch does not introduce buffer overflows or
|
837 |
+
other security issues?
|
838 |
+
|
839 |
+
</li><li> Did you test your decoder or demuxer against damaged data? If no, see
|
840 |
+
tools/trasher, the noise bitstream filter, and
|
841 |
+
<a class="uref" href="http://caca.zoy.org/wiki/zzuf">zzuf</a>. Your decoder or demuxer
|
842 |
+
should not crash, end in a (near) infinite loop, or allocate ridiculous
|
843 |
+
amounts of memory when fed damaged data.
|
844 |
+
|
845 |
+
</li><li> Did you test your decoder or demuxer against sample files?
|
846 |
+
Samples may be obtained at <a class="url" href="https://samples.ffmpeg.org">https://samples.ffmpeg.org</a>.
|
847 |
+
|
848 |
+
</li><li> Does the patch not mix functional and cosmetic changes?
|
849 |
+
|
850 |
+
</li><li> Did you add tabs or trailing whitespace to the code? Both are forbidden.
|
851 |
+
|
852 |
+
</li><li> Is the patch attached to the email you send?
|
853 |
+
|
854 |
+
</li><li> Is the mime type of the patch correct? It should be text/x-diff or
|
855 |
+
text/x-patch or at least text/plain and not application/octet-stream.
|
856 |
+
|
857 |
+
</li><li> If the patch fixes a bug, did you provide a verbose analysis of the bug?
|
858 |
+
|
859 |
+
</li><li> If the patch fixes a bug, did you provide enough information, including
|
860 |
+
a sample, so the bug can be reproduced and the fix can be verified?
|
861 |
+
Note please do not attach samples >100k to mails but rather provide a
|
862 |
+
URL, you can upload to <a class="url" href="https://streams.videolan.org/upload/">https://streams.videolan.org/upload/</a>.
|
863 |
+
|
864 |
+
</li><li> Did you provide a verbose summary about what the patch does change?
|
865 |
+
|
866 |
+
</li><li> Did you provide a verbose explanation why it changes things like it does?
|
867 |
+
|
868 |
+
</li><li> Did you provide a verbose summary of the user visible advantages and
|
869 |
+
disadvantages if the patch is applied?
|
870 |
+
|
871 |
+
</li><li> Did you provide an example so we can verify the new feature added by the
|
872 |
+
patch easily?
|
873 |
+
|
874 |
+
</li><li> If you added a new file, did you insert a license header? It should be
|
875 |
+
taken from FFmpeg, not randomly copied and pasted from somewhere else.
|
876 |
+
|
877 |
+
</li><li> You should maintain alphabetical order in alphabetically ordered lists as
|
878 |
+
long as doing so does not break API/ABI compatibility.
|
879 |
+
|
880 |
+
</li><li> Lines with similar content should be aligned vertically when doing so
|
881 |
+
improves readability.
|
882 |
+
|
883 |
+
</li><li> Consider adding a regression test for your code.
|
884 |
+
|
885 |
+
</li><li> If you added YASM code please check that things still work with –disable-yasm.
|
886 |
+
|
887 |
+
</li><li> Make sure you check the return values of function and return appropriate
|
888 |
+
error codes. Especially memory allocation functions like <code class="code">av_malloc()</code>
|
889 |
+
are notoriously left unchecked, which is a serious problem.
|
890 |
+
|
891 |
+
</li><li> Test your code with valgrind and or Address Sanitizer to ensure it’s free
|
892 |
+
of leaks, out of array accesses, etc.
|
893 |
+
</li></ol>
|
894 |
+
|
895 |
+
</div>
|
896 |
+
<div class="chapter-level-extent" id="Patch-review-process">
|
897 |
+
<h2 class="chapter">7 Patch review process</h2>
|
898 |
+
|
899 |
+
<p>All patches posted to ffmpeg-devel will be reviewed, unless they contain a
|
900 |
+
clear note that the patch is not for the git master branch.
|
901 |
+
Reviews and comments will be posted as replies to the patch on the
|
902 |
+
mailing list. The patch submitter then has to take care of every comment,
|
903 |
+
that can be by resubmitting a changed patch or by discussion. Resubmitted
|
904 |
+
patches will themselves be reviewed like any other patch. If at some point
|
905 |
+
a patch passes review with no comments then it is approved, that can for
|
906 |
+
simple and small patches happen immediately while large patches will generally
|
907 |
+
have to be changed and reviewed many times before they are approved.
|
908 |
+
After a patch is approved it will be committed to the repository.
|
909 |
+
</p>
|
910 |
+
<p>We will review all submitted patches, but sometimes we are quite busy so
|
911 |
+
especially for large patches this can take several weeks.
|
912 |
+
</p>
|
913 |
+
<p>If you feel that the review process is too slow and you are willing to try to
|
914 |
+
take over maintainership of the area of code you change then just clone
|
915 |
+
git master and maintain the area of code there. We will merge each area from
|
916 |
+
where its best maintained.
|
917 |
+
</p>
|
918 |
+
<p>When resubmitting patches, please do not make any significant changes
|
919 |
+
not related to the comments received during review. Such patches will
|
920 |
+
be rejected. Instead, submit significant changes or new features as
|
921 |
+
separate patches.
|
922 |
+
</p>
|
923 |
+
<p>Everyone is welcome to review patches. Also if you are waiting for your patch
|
924 |
+
to be reviewed, please consider helping to review other patches, that is a great
|
925 |
+
way to get everyone’s patches reviewed sooner.
|
926 |
+
</p>
|
927 |
+
<a class="anchor" id="Regression-tests"></a></div>
|
928 |
+
<div class="chapter-level-extent" id="Regression-tests-1">
|
929 |
+
<h2 class="chapter">8 Regression tests</h2>
|
930 |
+
|
931 |
+
<p>Before submitting a patch (or committing to the repository), you should at least
|
932 |
+
test that you did not break anything.
|
933 |
+
</p>
|
934 |
+
<p>Running ’make fate’ accomplishes this, please see <a class="url" href="fate.html">fate.html</a> for details.
|
935 |
+
</p>
|
936 |
+
<p>[Of course, some patches may change the results of the regression tests. In
|
937 |
+
this case, the reference results of the regression tests shall be modified
|
938 |
+
accordingly].
|
939 |
+
</p>
|
940 |
+
<ul class="mini-toc">
|
941 |
+
<li><a href="#Adding-files-to-the-fate_002dsuite-dataset" accesskey="1">Adding files to the fate-suite dataset</a></li>
|
942 |
+
<li><a href="#Visualizing-Test-Coverage" accesskey="2">Visualizing Test Coverage</a></li>
|
943 |
+
<li><a href="#Using-Valgrind" accesskey="3">Using Valgrind</a></li>
|
944 |
+
</ul>
|
945 |
+
<div class="section-level-extent" id="Adding-files-to-the-fate_002dsuite-dataset">
|
946 |
+
<h3 class="section">8.1 Adding files to the fate-suite dataset</h3>
|
947 |
+
|
948 |
+
<p>If you need a sample uploaded send a mail to samples-request.
|
949 |
+
</p>
|
950 |
+
<p>When there is no muxer or encoder available to generate test media for a
|
951 |
+
specific test then the media has to be included in the fate-suite.
|
952 |
+
First please make sure that the sample file is as small as possible to test the
|
953 |
+
respective decoder or demuxer sufficiently. Large files increase network
|
954 |
+
bandwidth and disk space requirements.
|
955 |
+
Once you have a working fate test and fate sample, provide in the commit
|
956 |
+
message or introductory message for the patch series that you post to
|
957 |
+
the ffmpeg-devel mailing list, a direct link to download the sample media.
|
958 |
+
</p>
|
959 |
+
</div>
|
960 |
+
<div class="section-level-extent" id="Visualizing-Test-Coverage">
|
961 |
+
<h3 class="section">8.2 Visualizing Test Coverage</h3>
|
962 |
+
|
963 |
+
<p>The FFmpeg build system allows visualizing the test coverage in an easy
|
964 |
+
manner with the coverage tools <code class="code">gcov</code>/<code class="code">lcov</code>. This involves
|
965 |
+
the following steps:
|
966 |
+
</p>
|
967 |
+
<ol class="enumerate">
|
968 |
+
<li> Configure to compile with instrumentation enabled:
|
969 |
+
<code class="code">configure --toolchain=gcov</code>.
|
970 |
+
|
971 |
+
</li><li> Run your test case, either manually or via FATE. This can be either
|
972 |
+
the full FATE regression suite, or any arbitrary invocation of any
|
973 |
+
front-end tool provided by FFmpeg, in any combination.
|
974 |
+
|
975 |
+
</li><li> Run <code class="code">make lcov</code> to generate coverage data in HTML format.
|
976 |
+
|
977 |
+
</li><li> View <code class="code">lcov/index.html</code> in your preferred HTML viewer.
|
978 |
+
</li></ol>
|
979 |
+
|
980 |
+
<p>You can use the command <code class="code">make lcov-reset</code> to reset the coverage
|
981 |
+
measurements. You will need to rerun <code class="code">make lcov</code> after running a
|
982 |
+
new test.
|
983 |
+
</p>
|
984 |
+
</div>
|
985 |
+
<div class="section-level-extent" id="Using-Valgrind">
|
986 |
+
<h3 class="section">8.3 Using Valgrind</h3>
|
987 |
+
|
988 |
+
<p>The configure script provides a shortcut for using valgrind to spot bugs
|
989 |
+
related to memory handling. Just add the option
|
990 |
+
<code class="code">--toolchain=valgrind-memcheck</code> or <code class="code">--toolchain=valgrind-massif</code>
|
991 |
+
to your configure line, and reasonable defaults will be set for running
|
992 |
+
FATE under the supervision of either the <strong class="strong">memcheck</strong> or the
|
993 |
+
<strong class="strong">massif</strong> tool of the valgrind suite.
|
994 |
+
</p>
|
995 |
+
<p>In case you need finer control over how valgrind is invoked, use the
|
996 |
+
<code class="code">--target-exec='valgrind <your_custom_valgrind_options></code> option in
|
997 |
+
your configure line instead.
|
998 |
+
</p>
|
999 |
+
<a class="anchor" id="Release-process"></a></div>
|
1000 |
+
</div>
|
1001 |
+
<div class="chapter-level-extent" id="Release-process-1">
|
1002 |
+
<h2 class="chapter">9 Release process</h2>
|
1003 |
+
|
1004 |
+
<p>FFmpeg maintains a set of <strong class="strong">release branches</strong>, which are the
|
1005 |
+
recommended deliverable for system integrators and distributors (such as
|
1006 |
+
Linux distributions, etc.). At regular times, a <strong class="strong">release
|
1007 |
+
manager</strong> prepares, tests and publishes tarballs on the
|
1008 |
+
<a class="url" href="https://ffmpeg.org">https://ffmpeg.org</a> website.
|
1009 |
+
</p>
|
1010 |
+
<p>There are two kinds of releases:
|
1011 |
+
</p>
|
1012 |
+
<ol class="enumerate">
|
1013 |
+
<li> <strong class="strong">Major releases</strong> always include the latest and greatest
|
1014 |
+
features and functionality.
|
1015 |
+
|
1016 |
+
</li><li> <strong class="strong">Point releases</strong> are cut from <strong class="strong">release</strong> branches,
|
1017 |
+
which are named <code class="code">release/X</code>, with <code class="code">X</code> being the release
|
1018 |
+
version number.
|
1019 |
+
</li></ol>
|
1020 |
+
|
1021 |
+
<p>Note that we promise to our users that shared libraries from any FFmpeg
|
1022 |
+
release never break programs that have been <strong class="strong">compiled</strong> against
|
1023 |
+
previous versions of <strong class="strong">the same release series</strong> in any case!
|
1024 |
+
</p>
|
1025 |
+
<p>However, from time to time, we do make API changes that require adaptations
|
1026 |
+
in applications. Such changes are only allowed in (new) major releases and
|
1027 |
+
require further steps such as bumping library version numbers and/or
|
1028 |
+
adjustments to the symbol versioning file. Please discuss such changes
|
1029 |
+
on the <strong class="strong">ffmpeg-devel</strong> mailing list in time to allow forward planning.
|
1030 |
+
</p>
|
1031 |
+
<a class="anchor" id="Criteria-for-Point-Releases"></a><ul class="mini-toc">
|
1032 |
+
<li><a href="#Criteria-for-Point-Releases-1" accesskey="1">Criteria for Point Releases</a></li>
|
1033 |
+
<li><a href="#Release-Checklist" accesskey="2">Release Checklist</a></li>
|
1034 |
+
</ul>
|
1035 |
+
<div class="section-level-extent" id="Criteria-for-Point-Releases-1">
|
1036 |
+
<h3 class="section">9.1 Criteria for Point Releases</h3>
|
1037 |
+
|
1038 |
+
<p>Changes that match the following criteria are valid candidates for
|
1039 |
+
inclusion into a point release:
|
1040 |
+
</p>
|
1041 |
+
<ol class="enumerate">
|
1042 |
+
<li> Fixes a security issue, preferably identified by a <strong class="strong">CVE
|
1043 |
+
number</strong> issued by <a class="url" href="http://cve.mitre.org/">http://cve.mitre.org/</a>.
|
1044 |
+
|
1045 |
+
</li><li> Fixes a documented bug in <a class="url" href="https://trac.ffmpeg.org">https://trac.ffmpeg.org</a>.
|
1046 |
+
|
1047 |
+
</li><li> Improves the included documentation.
|
1048 |
+
|
1049 |
+
</li><li> Retains both source code and binary compatibility with previous
|
1050 |
+
point releases of the same release branch.
|
1051 |
+
</li></ol>
|
1052 |
+
|
1053 |
+
<p>The order for checking the rules is (1 OR 2 OR 3) AND 4.
|
1054 |
+
</p>
|
1055 |
+
|
1056 |
+
</div>
|
1057 |
+
<div class="section-level-extent" id="Release-Checklist">
|
1058 |
+
<h3 class="section">9.2 Release Checklist</h3>
|
1059 |
+
|
1060 |
+
<p>The release process involves the following steps:
|
1061 |
+
</p>
|
1062 |
+
<ol class="enumerate">
|
1063 |
+
<li> Ensure that the <samp class="file">RELEASE</samp> file contains the version number for
|
1064 |
+
the upcoming release.
|
1065 |
+
|
1066 |
+
</li><li> Add the release at <a class="url" href="https://trac.ffmpeg.org/admin/ticket/versions">https://trac.ffmpeg.org/admin/ticket/versions</a>.
|
1067 |
+
|
1068 |
+
</li><li> Announce the intent to do a release to the mailing list.
|
1069 |
+
|
1070 |
+
</li><li> Make sure all relevant security fixes have been backported. See
|
1071 |
+
<a class="url" href="https://ffmpeg.org/security.html">https://ffmpeg.org/security.html</a>.
|
1072 |
+
|
1073 |
+
</li><li> Ensure that the FATE regression suite still passes in the release
|
1074 |
+
branch on at least <strong class="strong">i386</strong> and <strong class="strong">amd64</strong>
|
1075 |
+
(cf. <a class="ref" href="#Regression-tests">Regression tests</a>).
|
1076 |
+
|
1077 |
+
</li><li> Prepare the release tarballs in <code class="code">bz2</code> and <code class="code">gz</code> formats, and
|
1078 |
+
supplementing files that contain <code class="code">gpg</code> signatures
|
1079 |
+
|
1080 |
+
</li><li> Publish the tarballs at <a class="url" href="https://ffmpeg.org/releases">https://ffmpeg.org/releases</a>. Create and
|
1081 |
+
push an annotated tag in the form <code class="code">nX</code>, with <code class="code">X</code>
|
1082 |
+
containing the version number.
|
1083 |
+
|
1084 |
+
</li><li> Propose and send a patch to the <strong class="strong">ffmpeg-devel</strong> mailing list
|
1085 |
+
with a news entry for the website.
|
1086 |
+
|
1087 |
+
</li><li> Publish the news entry.
|
1088 |
+
|
1089 |
+
</li><li> Send an announcement to the mailing list.
|
1090 |
+
</li></ol>
|
1091 |
+
|
1092 |
+
</div>
|
1093 |
+
</div>
|
1094 |
+
</div>
|
1095 |
+
|
1096 |
+
|
1097 |
+
|
1098 |
+
</body>
|
1099 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/faq.html
ADDED
@@ -0,0 +1,941 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg FAQ</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg FAQ">
|
9 |
+
<meta name="keywords" content="FFmpeg FAQ">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
40 |
+
<ul class="toc-numbered-mark">
|
41 |
+
<li><a id="toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn’t FFmpeg support feature [xyz]?</a></li>
|
42 |
+
<li><a id="toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
|
43 |
+
<li><a id="toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
|
44 |
+
<li><a id="toc-Which-codecs-are-supported-by-Windows_003f" href="#Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></li>
|
45 |
+
</ul></li>
|
46 |
+
<li><a id="toc-Compilation" href="#Compilation">2 Compilation</a>
|
47 |
+
<ul class="toc-numbered-mark">
|
48 |
+
<li><a id="toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027" href="#error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code class="code">error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></li>
|
49 |
+
<li><a id="toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f" href="#I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro’s package manager. Why does <code class="command">configure</code> not see it?</a></li>
|
50 |
+
<li><a id="toc-How-do-I-make-pkg_002dconfig-find-my-libraries_003f" href="#How-do-I-make-pkg_002dconfig-find-my-libraries_003f">2.3 How do I make <code class="command">pkg-config</code> find my libraries?</a></li>
|
51 |
+
<li><a id="toc-How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f" href="#How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">2.4 How do I use <code class="command">pkg-config</code> when cross-compiling?</a></li>
|
52 |
+
</ul></li>
|
53 |
+
<li><a id="toc-Usage" href="#Usage">3 Usage</a>
|
54 |
+
<ul class="toc-numbered-mark">
|
55 |
+
<li><a id="toc-ffmpeg-does-not-work_003b-what-is-wrong_003f" href="#ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></li>
|
56 |
+
<li><a id="toc-How-do-I-encode-single-pictures-into-movies_003f" href="#How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></li>
|
57 |
+
<li><a id="toc-How-do-I-encode-movie-to-single-pictures_003f" href="#How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></li>
|
58 |
+
<li><a id="toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f" href="#Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></li>
|
59 |
+
<li><a id="toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f" href="#How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></li>
|
60 |
+
<li><a id="toc-_002df-jpeg-doesn_0027t-work_002e" href="#g_t_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn’t work.</a></li>
|
61 |
+
<li><a id="toc-Why-can-I-not-change-the-frame-rate_003f" href="#Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></li>
|
62 |
+
<li><a id="toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f" href="#How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></li>
|
63 |
+
<li><a id="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></li>
|
64 |
+
<li><a id="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
|
65 |
+
<li><a id="toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f" href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
|
66 |
+
<li><a id="toc-How-can-I-read-DirectShow-files_003f" href="#How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></li>
|
67 |
+
<li><a id="toc-How-can-I-join-video-files_003f" href="#How-can-I-join-video-files_003f">3.13 How can I join video files?</a></li>
|
68 |
+
<li><a id="toc-How-can-I-concatenate-video-files_003f" href="#How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a>
|
69 |
+
<ul class="toc-numbered-mark">
|
70 |
+
<li><a id="toc-Concatenating-using-the-concat-filter" href="#Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em class="emph">filter</em></a></li>
|
71 |
+
<li><a id="toc-Concatenating-using-the-concat-demuxer" href="#Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em class="emph">demuxer</em></a></li>
|
72 |
+
<li><a id="toc-Concatenating-using-the-concat-protocol-_0028file-level_0029" href="#Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em class="emph">protocol</em> (file level)</a></li>
|
73 |
+
<li><a id="toc-Concatenating-using-raw-audio-and-video" href="#Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></li>
|
74 |
+
</ul></li>
|
75 |
+
<li><a id="toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e" href="#Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.15 Using <samp class="option">-f lavfi</samp>, audio becomes mono for no apparent reason.</a></li>
|
76 |
+
<li><a id="toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f" href="#Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.16 Why does FFmpeg not see the subtitles in my VOB file?</a></li>
|
77 |
+
<li><a id="toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f" href="#Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.17 Why was the <code class="command">ffmpeg</code> <samp class="option">-sameq</samp> option removed? What to use instead?</a></li>
|
78 |
+
<li><a id="toc-I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f" href="#I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">3.18 I have a stretched video, why does scaling does not fix it?</a></li>
|
79 |
+
<li><a id="toc-How-do-I-run-ffmpeg-as-a-background-task_003f" href="#How-do-I-run-ffmpeg-as-a-background-task_003f">3.19 How do I run ffmpeg as a background task?</a></li>
|
80 |
+
<li><a id="toc-How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f" href="#How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">3.20 How do I prevent ffmpeg from suspending with a message like <em class="emph">suspended (tty output)</em>?</a></li>
|
81 |
+
</ul></li>
|
82 |
+
<li><a id="toc-Development" href="#Development">4 Development</a>
|
83 |
+
<ul class="toc-numbered-mark">
|
84 |
+
<li><a id="toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f" href="#Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></li>
|
85 |
+
<li><a id="toc-Can-you-support-my-C-compiler-XXX_003f" href="#Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></li>
|
86 |
+
<li><a id="toc-Is-Microsoft-Visual-C_002b_002b-supported_003f" href="#Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></li>
|
87 |
+
<li><a id="toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f" href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></li>
|
88 |
+
<li><a id="toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f" href="#Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></li>
|
89 |
+
<li><a id="toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></li>
|
90 |
+
<li><a id="toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
|
91 |
+
<li><a id="toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e" href="#I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></li>
|
92 |
+
<li><a id="toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" href="#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
|
93 |
+
<li><a id="toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope" href="#I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></li>
|
94 |
+
<li><a id="toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f" href="#I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></li>
|
95 |
+
<li><a id="toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f" href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
|
96 |
+
<li><a id="toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f" href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
|
97 |
+
<li><a id="toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e" href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></li>
|
98 |
+
<li><a id="toc-Why-is-make-fate-not-running-all-tests_003f" href="#Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code class="code">make fate</code> not running all tests?</a></li>
|
99 |
+
<li><a id="toc-Why-is-make-fate-not-finding-the-samples_003f" href="#Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code class="code">make fate</code> not finding the samples?</a></li>
|
100 |
+
</ul></li>
|
101 |
+
</ul>
|
102 |
+
</div>
|
103 |
+
</div>
|
104 |
+
<div class="chapter-level-extent" id="General-Questions">
|
105 |
+
<h2 class="chapter">1 General Questions</h2>
|
106 |
+
|
107 |
+
<ul class="mini-toc">
|
108 |
+
<li><a href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" accesskey="1">Why doesn’t FFmpeg support feature [xyz]?</a></li>
|
109 |
+
<li><a href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" accesskey="2">FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
|
110 |
+
<li><a href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" accesskey="3">I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
|
111 |
+
<li><a href="#Which-codecs-are-supported-by-Windows_003f" accesskey="4">Which codecs are supported by Windows?</a></li>
|
112 |
+
</ul>
|
113 |
+
<div class="section-level-extent" id="Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">
|
114 |
+
<h3 class="section">1.1 Why doesn’t FFmpeg support feature [xyz]?</h3>
|
115 |
+
|
116 |
+
<p>Because no one has taken on that task yet. FFmpeg development is
|
117 |
+
driven by the tasks that are important to the individual developers.
|
118 |
+
If there is a feature that is important to you, the best way to get
|
119 |
+
it implemented is to undertake the task yourself or sponsor a developer.
|
120 |
+
</p>
|
121 |
+
</div>
|
122 |
+
<div class="section-level-extent" id="FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">
|
123 |
+
<h3 class="section">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</h3>
|
124 |
+
|
125 |
+
<p>No. Windows DLLs are not portable, bloated and often slow.
|
126 |
+
Moreover FFmpeg strives to support all codecs natively.
|
127 |
+
A DLL loader is not conducive to that goal.
|
128 |
+
</p>
|
129 |
+
</div>
|
130 |
+
<div class="section-level-extent" id="I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">
|
131 |
+
<h3 class="section">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</h3>
|
132 |
+
|
133 |
+
<p>Even if ffmpeg can read the container format, it may not support all its
|
134 |
+
codecs. Please consult the supported codec list in the ffmpeg
|
135 |
+
documentation.
|
136 |
+
</p>
|
137 |
+
</div>
|
138 |
+
<div class="section-level-extent" id="Which-codecs-are-supported-by-Windows_003f">
|
139 |
+
<h3 class="section">1.4 Which codecs are supported by Windows?</h3>
|
140 |
+
|
141 |
+
<p>Windows does not support standard formats like MPEG very well, unless you
|
142 |
+
install some additional codecs.
|
143 |
+
</p>
|
144 |
+
<p>The following list of video codecs should work on most Windows systems:
|
145 |
+
</p><dl class="table">
|
146 |
+
<dt><samp class="option">msmpeg4v2</samp></dt>
|
147 |
+
<dd><p>.avi/.asf
|
148 |
+
</p></dd>
|
149 |
+
<dt><samp class="option">msmpeg4</samp></dt>
|
150 |
+
<dd><p>.asf only
|
151 |
+
</p></dd>
|
152 |
+
<dt><samp class="option">wmv1</samp></dt>
|
153 |
+
<dd><p>.asf only
|
154 |
+
</p></dd>
|
155 |
+
<dt><samp class="option">wmv2</samp></dt>
|
156 |
+
<dd><p>.asf only
|
157 |
+
</p></dd>
|
158 |
+
<dt><samp class="option">mpeg4</samp></dt>
|
159 |
+
<dd><p>Only if you have some MPEG-4 codec like ffdshow or Xvid installed.
|
160 |
+
</p></dd>
|
161 |
+
<dt><samp class="option">mpeg1video</samp></dt>
|
162 |
+
<dd><p>.mpg only
|
163 |
+
</p></dd>
|
164 |
+
</dl>
|
165 |
+
<p>Note, ASF files often have .wmv or .wma extensions in Windows. It should also
|
166 |
+
be mentioned that Microsoft claims a patent on the ASF format, and may sue
|
167 |
+
or threaten users who create ASF files with non-Microsoft software. It is
|
168 |
+
strongly advised to avoid ASF where possible.
|
169 |
+
</p>
|
170 |
+
<p>The following list of audio codecs should work on most Windows systems:
|
171 |
+
</p><dl class="table">
|
172 |
+
<dt><samp class="option">adpcm_ima_wav</samp></dt>
|
173 |
+
<dt><samp class="option">adpcm_ms</samp></dt>
|
174 |
+
<dt><samp class="option">pcm_s16le</samp></dt>
|
175 |
+
<dd><p>always
|
176 |
+
</p></dd>
|
177 |
+
<dt><samp class="option">libmp3lame</samp></dt>
|
178 |
+
<dd><p>If some MP3 codec like LAME is installed.
|
179 |
+
</p></dd>
|
180 |
+
</dl>
|
181 |
+
|
182 |
+
|
183 |
+
</div>
|
184 |
+
</div>
|
185 |
+
<div class="chapter-level-extent" id="Compilation">
|
186 |
+
<h2 class="chapter">2 Compilation</h2>
|
187 |
+
|
188 |
+
<ul class="mini-toc">
|
189 |
+
<li><a href="#error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027" accesskey="1"><code class="code">error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></li>
|
190 |
+
<li><a href="#I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f" accesskey="2">I have installed this library with my distro’s package manager. Why does <code class="command">configure</code> not see it?</a></li>
|
191 |
+
<li><a href="#How-do-I-make-pkg_002dconfig-find-my-libraries_003f" accesskey="3">How do I make <code class="command">pkg-config</code> find my libraries?</a></li>
|
192 |
+
<li><a href="#How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f" accesskey="4">How do I use <code class="command">pkg-config</code> when cross-compiling?</a></li>
|
193 |
+
</ul>
|
194 |
+
<div class="section-level-extent" id="error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">
|
195 |
+
<h3 class="section">2.1 <code class="code">error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></h3>
|
196 |
+
|
197 |
+
<p>This is a bug in gcc. Do not report it to us. Instead, please report it to
|
198 |
+
the gcc developers. Note that we will not add workarounds for gcc bugs.
|
199 |
+
</p>
|
200 |
+
<p>Also note that (some of) the gcc developers believe this is not a bug or
|
201 |
+
not a bug they should fix:
|
202 |
+
<a class="url" href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203</a>.
|
203 |
+
Then again, some of them do not know the difference between an undecidable
|
204 |
+
problem and an NP-hard problem...
|
205 |
+
</p>
|
206 |
+
</div>
|
207 |
+
<div class="section-level-extent" id="I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">
|
208 |
+
<h3 class="section">2.2 I have installed this library with my distro’s package manager. Why does <code class="command">configure</code> not see it?</h3>
|
209 |
+
|
210 |
+
<p>Distributions usually split libraries in several packages. The main package
|
211 |
+
contains the files necessary to run programs using the library. The
|
212 |
+
development package contains the files necessary to build programs using the
|
213 |
+
library. Sometimes, docs and/or data are in a separate package too.
|
214 |
+
</p>
|
215 |
+
<p>To build FFmpeg, you need to install the development package. It is usually
|
216 |
+
called <samp class="file">libfoo-dev</samp> or <samp class="file">libfoo-devel</samp>. You can remove it after the
|
217 |
+
build is finished, but be sure to keep the main package.
|
218 |
+
</p>
|
219 |
+
</div>
|
220 |
+
<div class="section-level-extent" id="How-do-I-make-pkg_002dconfig-find-my-libraries_003f">
|
221 |
+
<h3 class="section">2.3 How do I make <code class="command">pkg-config</code> find my libraries?</h3>
|
222 |
+
|
223 |
+
<p>Somewhere along with your libraries, there is a <samp class="file">.pc</samp> file (or several)
|
224 |
+
in a <samp class="file">pkgconfig</samp> directory. You need to set environment variables to
|
225 |
+
point <code class="command">pkg-config</code> to these files.
|
226 |
+
</p>
|
227 |
+
<p>If you need to <em class="emph">add</em> directories to <code class="command">pkg-config</code>’s search list
|
228 |
+
(typical use case: library installed separately), add it to
|
229 |
+
<code class="code">$PKG_CONFIG_PATH</code>:
|
230 |
+
</p>
|
231 |
+
<div class="example">
|
232 |
+
<pre class="example-preformatted">export PKG_CONFIG_PATH=/opt/x264/lib/pkgconfig:/opt/opus/lib/pkgconfig
|
233 |
+
</pre></div>
|
234 |
+
|
235 |
+
<p>If you need to <em class="emph">replace</em> <code class="command">pkg-config</code>’s search list
|
236 |
+
(typical use case: cross-compiling), set it in
|
237 |
+
<code class="code">$PKG_CONFIG_LIBDIR</code>:
|
238 |
+
</p>
|
239 |
+
<div class="example">
|
240 |
+
<pre class="example-preformatted">export PKG_CONFIG_LIBDIR=/home/me/cross/usr/lib/pkgconfig:/home/me/cross/usr/local/lib/pkgconfig
|
241 |
+
</pre></div>
|
242 |
+
|
243 |
+
<p>If you need to know the library’s internal dependencies (typical use: static
|
244 |
+
linking), add the <code class="code">--static</code> option to <code class="command">pkg-config</code>:
|
245 |
+
</p>
|
246 |
+
<div class="example">
|
247 |
+
<pre class="example-preformatted">./configure --pkg-config-flags=--static
|
248 |
+
</pre></div>
|
249 |
+
|
250 |
+
</div>
|
251 |
+
<div class="section-level-extent" id="How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">
|
252 |
+
<h3 class="section">2.4 How do I use <code class="command">pkg-config</code> when cross-compiling?</h3>
|
253 |
+
|
254 |
+
<p>The best way is to install <code class="command">pkg-config</code> in your cross-compilation
|
255 |
+
environment. It will automatically use the cross-compilation libraries.
|
256 |
+
</p>
|
257 |
+
<p>You can also use <code class="command">pkg-config</code> from the host environment by
|
258 |
+
specifying explicitly <code class="code">--pkg-config=pkg-config</code> to <code class="command">configure</code>.
|
259 |
+
In that case, you must point <code class="command">pkg-config</code> to the correct directories
|
260 |
+
using the <code class="code">PKG_CONFIG_LIBDIR</code>, as explained in the previous entry.
|
261 |
+
</p>
|
262 |
+
<p>As an intermediate solution, you can place in your cross-compilation
|
263 |
+
environment a script that calls the host <code class="command">pkg-config</code> with
|
264 |
+
<code class="code">PKG_CONFIG_LIBDIR</code> set. That script can look like that:
|
265 |
+
</p>
|
266 |
+
<div class="example">
|
267 |
+
<pre class="example-preformatted">#!/bin/sh
|
268 |
+
PKG_CONFIG_LIBDIR=/path/to/cross/lib/pkgconfig
|
269 |
+
export PKG_CONFIG_LIBDIR
|
270 |
+
exec /usr/bin/pkg-config "$@"
|
271 |
+
</pre></div>
|
272 |
+
|
273 |
+
</div>
|
274 |
+
</div>
|
275 |
+
<div class="chapter-level-extent" id="Usage">
|
276 |
+
<h2 class="chapter">3 Usage</h2>
|
277 |
+
|
278 |
+
<ul class="mini-toc">
|
279 |
+
<li><a href="#ffmpeg-does-not-work_003b-what-is-wrong_003f" accesskey="1">ffmpeg does not work; what is wrong?</a></li>
|
280 |
+
<li><a href="#How-do-I-encode-single-pictures-into-movies_003f" accesskey="2">How do I encode single pictures into movies?</a></li>
|
281 |
+
<li><a href="#How-do-I-encode-movie-to-single-pictures_003f" accesskey="3">How do I encode movie to single pictures?</a></li>
|
282 |
+
<li><a href="#Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f" accesskey="4">Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></li>
|
283 |
+
<li><a href="#How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f" accesskey="5">How can I read from the standard input or write to the standard output?</a></li>
|
284 |
+
<li><a href="#g_t_002df-jpeg-doesn_0027t-work_002e" accesskey="6">-f jpeg doesn’t work.</a></li>
|
285 |
+
<li><a href="#Why-can-I-not-change-the-frame-rate_003f" accesskey="7">Why can I not change the frame rate?</a></li>
|
286 |
+
<li><a href="#How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f" accesskey="8">How do I encode Xvid or DivX video with ffmpeg?</a></li>
|
287 |
+
<li><a href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" accesskey="9">Which are good parameters for encoding high quality MPEG-4?</a></li>
|
288 |
+
<li><a href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
|
289 |
+
<li><a href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
|
290 |
+
<li><a href="#How-can-I-read-DirectShow-files_003f">How can I read DirectShow files?</a></li>
|
291 |
+
<li><a href="#How-can-I-join-video-files_003f">How can I join video files?</a></li>
|
292 |
+
<li><a href="#How-can-I-concatenate-video-files_003f">How can I concatenate video files?</a></li>
|
293 |
+
<li><a href="#Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">Using <samp class="option">-f lavfi</samp>, audio becomes mono for no apparent reason.</a></li>
|
294 |
+
<li><a href="#Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">Why does FFmpeg not see the subtitles in my VOB file?</a></li>
|
295 |
+
<li><a href="#Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">Why was the <code class="command">ffmpeg</code> <samp class="option">-sameq</samp> option removed? What to use instead?</a></li>
|
296 |
+
<li><a href="#I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">I have a stretched video, why does scaling does not fix it?</a></li>
|
297 |
+
<li><a href="#How-do-I-run-ffmpeg-as-a-background-task_003f">How do I run ffmpeg as a background task?</a></li>
|
298 |
+
<li><a href="#How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">How do I prevent ffmpeg from suspending with a message like <em class="emph">suspended (tty output)</em>?</a></li>
|
299 |
+
</ul>
|
300 |
+
<div class="section-level-extent" id="ffmpeg-does-not-work_003b-what-is-wrong_003f">
|
301 |
+
<h3 class="section">3.1 ffmpeg does not work; what is wrong?</h3>
|
302 |
+
|
303 |
+
<p>Try a <code class="code">make distclean</code> in the ffmpeg source directory before the build.
|
304 |
+
If this does not help see
|
305 |
+
(<a class="url" href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>).
|
306 |
+
</p>
|
307 |
+
</div>
|
308 |
+
<div class="section-level-extent" id="How-do-I-encode-single-pictures-into-movies_003f">
|
309 |
+
<h3 class="section">3.2 How do I encode single pictures into movies?</h3>
|
310 |
+
|
311 |
+
<p>First, rename your pictures to follow a numerical sequence.
|
312 |
+
For example, img1.jpg, img2.jpg, img3.jpg,...
|
313 |
+
Then you may run:
|
314 |
+
</p>
|
315 |
+
<div class="example">
|
316 |
+
<pre class="example-preformatted">ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
|
317 |
+
</pre></div>
|
318 |
+
|
319 |
+
<p>Notice that ‘<samp class="samp">%d</samp>’ is replaced by the image number.
|
320 |
+
</p>
|
321 |
+
<p><samp class="file">img%03d.jpg</samp> means the sequence <samp class="file">img001.jpg</samp>, <samp class="file">img002.jpg</samp>, etc.
|
322 |
+
</p>
|
323 |
+
<p>Use the <samp class="option">-start_number</samp> option to declare a starting number for
|
324 |
+
the sequence. This is useful if your sequence does not start with
|
325 |
+
<samp class="file">img001.jpg</samp> but is still in a numerical order. The following
|
326 |
+
example will start with <samp class="file">img100.jpg</samp>:
|
327 |
+
</p>
|
328 |
+
<div class="example">
|
329 |
+
<pre class="example-preformatted">ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
|
330 |
+
</pre></div>
|
331 |
+
|
332 |
+
<p>If you have large number of pictures to rename, you can use the
|
333 |
+
following command to ease the burden. The command, using the bourne
|
334 |
+
shell syntax, symbolically links all files in the current directory
|
335 |
+
that match <code class="code">*jpg</code> to the <samp class="file">/tmp</samp> directory in the sequence of
|
336 |
+
<samp class="file">img001.jpg</samp>, <samp class="file">img002.jpg</samp> and so on.
|
337 |
+
</p>
|
338 |
+
<div class="example">
|
339 |
+
<pre class="example-preformatted">x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done
|
340 |
+
</pre></div>
|
341 |
+
|
342 |
+
<p>If you want to sequence them by oldest modified first, substitute
|
343 |
+
<code class="code">$(ls -r -t *jpg)</code> in place of <code class="code">*jpg</code>.
|
344 |
+
</p>
|
345 |
+
<p>Then run:
|
346 |
+
</p>
|
347 |
+
<div class="example">
|
348 |
+
<pre class="example-preformatted">ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg
|
349 |
+
</pre></div>
|
350 |
+
|
351 |
+
<p>The same logic is used for any image format that ffmpeg reads.
|
352 |
+
</p>
|
353 |
+
<p>You can also use <code class="command">cat</code> to pipe images to ffmpeg:
|
354 |
+
</p>
|
355 |
+
<div class="example">
|
356 |
+
<pre class="example-preformatted">cat *.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.mpg
|
357 |
+
</pre></div>
|
358 |
+
|
359 |
+
</div>
|
360 |
+
<div class="section-level-extent" id="How-do-I-encode-movie-to-single-pictures_003f">
|
361 |
+
<h3 class="section">3.3 How do I encode movie to single pictures?</h3>
|
362 |
+
|
363 |
+
<p>Use:
|
364 |
+
</p>
|
365 |
+
<div class="example">
|
366 |
+
<pre class="example-preformatted">ffmpeg -i movie.mpg movie%d.jpg
|
367 |
+
</pre></div>
|
368 |
+
|
369 |
+
<p>The <samp class="file">movie.mpg</samp> used as input will be converted to
|
370 |
+
<samp class="file">movie1.jpg</samp>, <samp class="file">movie2.jpg</samp>, etc...
|
371 |
+
</p>
|
372 |
+
<p>Instead of relying on file format self-recognition, you may also use
|
373 |
+
</p><dl class="table">
|
374 |
+
<dt><samp class="option">-c:v ppm</samp></dt>
|
375 |
+
<dt><samp class="option">-c:v png</samp></dt>
|
376 |
+
<dt><samp class="option">-c:v mjpeg</samp></dt>
|
377 |
+
</dl>
|
378 |
+
<p>to force the encoding.
|
379 |
+
</p>
|
380 |
+
<p>Applying that to the previous example:
|
381 |
+
</p><div class="example">
|
382 |
+
<pre class="example-preformatted">ffmpeg -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
|
383 |
+
</pre></div>
|
384 |
+
|
385 |
+
<p>Beware that there is no "jpeg" codec. Use "mjpeg" instead.
|
386 |
+
</p>
|
387 |
+
</div>
|
388 |
+
<div class="section-level-extent" id="Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">
|
389 |
+
<h3 class="section">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</h3>
|
390 |
+
|
391 |
+
<p>For multithreaded MPEG* encoding, the encoded slices must be independent,
|
392 |
+
otherwise thread n would practically have to wait for n-1 to finish, so it’s
|
393 |
+
quite logical that there is a small reduction of quality. This is not a bug.
|
394 |
+
</p>
|
395 |
+
</div>
|
396 |
+
<div class="section-level-extent" id="How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">
|
397 |
+
<h3 class="section">3.5 How can I read from the standard input or write to the standard output?</h3>
|
398 |
+
|
399 |
+
<p>Use <samp class="file">-</samp> as file name.
|
400 |
+
</p>
|
401 |
+
</div>
|
402 |
+
<div class="section-level-extent" id="g_t_002df-jpeg-doesn_0027t-work_002e">
|
403 |
+
<h3 class="section">3.6 -f jpeg doesn’t work.</h3>
|
404 |
+
|
405 |
+
<p>Try ’-f image2 test%d.jpg’.
|
406 |
+
</p>
|
407 |
+
</div>
|
408 |
+
<div class="section-level-extent" id="Why-can-I-not-change-the-frame-rate_003f">
|
409 |
+
<h3 class="section">3.7 Why can I not change the frame rate?</h3>
|
410 |
+
|
411 |
+
<p>Some codecs, like MPEG-1/2, only allow a small number of fixed frame rates.
|
412 |
+
Choose a different codec with the -c:v command line option.
|
413 |
+
</p>
|
414 |
+
</div>
|
415 |
+
<div class="section-level-extent" id="How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">
|
416 |
+
<h3 class="section">3.8 How do I encode Xvid or DivX video with ffmpeg?</h3>
|
417 |
+
|
418 |
+
<p>Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4
|
419 |
+
standard (note that there are many other coding formats that use this
|
420 |
+
same standard). Thus, use ’-c:v mpeg4’ to encode in these formats. The
|
421 |
+
default fourcc stored in an MPEG-4-coded file will be ’FMP4’. If you want
|
422 |
+
a different fourcc, use the ’-vtag’ option. E.g., ’-vtag xvid’ will
|
423 |
+
force the fourcc ’xvid’ to be stored as the video fourcc rather than the
|
424 |
+
default.
|
425 |
+
</p>
|
426 |
+
</div>
|
427 |
+
<div class="section-level-extent" id="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">
|
428 |
+
<h3 class="section">3.9 Which are good parameters for encoding high quality MPEG-4?</h3>
|
429 |
+
|
430 |
+
<p>’-mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2’,
|
431 |
+
things to try: ’-bf 2’, ’-mpv_flags qp_rd’, ’-mpv_flags mv0’, ’-mpv_flags skip_rd’.
|
432 |
+
</p>
|
433 |
+
</div>
|
434 |
+
<div class="section-level-extent" id="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">
|
435 |
+
<h3 class="section">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</h3>
|
436 |
+
|
437 |
+
<p>’-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’
|
438 |
+
but beware the ’-g 100’ might cause problems with some decoders.
|
439 |
+
Things to try: ’-bf 2’, ’-mpv_flags qp_rd’, ’-mpv_flags mv0’, ’-mpv_flags skip_rd’.
|
440 |
+
</p>
|
441 |
+
</div>
|
442 |
+
<div class="section-level-extent" id="Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">
|
443 |
+
<h3 class="section">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</h3>
|
444 |
+
|
445 |
+
<p>You should use ’-flags +ilme+ildct’ and maybe ’-flags +alt’ for interlaced
|
446 |
+
material, and try ’-top 0/1’ if the result looks really messed-up.
|
447 |
+
</p>
|
448 |
+
</div>
|
449 |
+
<div class="section-level-extent" id="How-can-I-read-DirectShow-files_003f">
|
450 |
+
<h3 class="section">3.12 How can I read DirectShow files?</h3>
|
451 |
+
|
452 |
+
<p>If you have built FFmpeg with <code class="code">./configure --enable-avisynth</code>
|
453 |
+
(only possible on MinGW/Cygwin platforms),
|
454 |
+
then you may use any file that DirectShow can read as input.
|
455 |
+
</p>
|
456 |
+
<p>Just create an "input.avs" text file with this single line ...
|
457 |
+
</p><div class="example">
|
458 |
+
<pre class="example-preformatted">DirectShowSource("C:\path to your file\yourfile.asf")
|
459 |
+
</pre></div>
|
460 |
+
<p>... and then feed that text file to ffmpeg:
|
461 |
+
</p><div class="example">
|
462 |
+
<pre class="example-preformatted">ffmpeg -i input.avs
|
463 |
+
</pre></div>
|
464 |
+
|
465 |
+
<p>For ANY other help on AviSynth, please visit the
|
466 |
+
<a class="uref" href="http://www.avisynth.org/">AviSynth homepage</a>.
|
467 |
+
</p>
|
468 |
+
</div>
|
469 |
+
<div class="section-level-extent" id="How-can-I-join-video-files_003f">
|
470 |
+
<h3 class="section">3.13 How can I join video files?</h3>
|
471 |
+
|
472 |
+
<p>To "join" video files is quite ambiguous. The following list explains the
|
473 |
+
different kinds of "joining" and points out how those are addressed in
|
474 |
+
FFmpeg. To join video files may mean:
|
475 |
+
</p>
|
476 |
+
<ul class="itemize mark-bullet">
|
477 |
+
<li>To put them one after the other: this is called to <em class="emph">concatenate</em> them
|
478 |
+
(in short: concat) and is addressed
|
479 |
+
<a class="ref" href="#How-can-I-concatenate-video-files">in this very faq</a>.
|
480 |
+
|
481 |
+
</li><li>To put them together in the same file, to let the user choose between the
|
482 |
+
different versions (example: different audio languages): this is called to
|
483 |
+
<em class="emph">multiplex</em> them together (in short: mux), and is done by simply
|
484 |
+
invoking ffmpeg with several <samp class="option">-i</samp> options.
|
485 |
+
|
486 |
+
</li><li>For audio, to put all channels together in a single stream (example: two
|
487 |
+
mono streams into one stereo stream): this is sometimes called to
|
488 |
+
<em class="emph">merge</em> them, and can be done using the
|
489 |
+
<a class="url" href="ffmpeg-filters.html#amerge"><code class="code">amerge</code></a> filter.
|
490 |
+
|
491 |
+
</li><li>For audio, to play one on top of the other: this is called to <em class="emph">mix</em>
|
492 |
+
them, and can be done by first merging them into a single stream and then
|
493 |
+
using the <a class="url" href="ffmpeg-filters.html#pan"><code class="code">pan</code></a> filter to mix
|
494 |
+
the channels at will.
|
495 |
+
|
496 |
+
</li><li>For video, to display both together, side by side or one on top of a part of
|
497 |
+
the other; it can be done using the
|
498 |
+
<a class="url" href="ffmpeg-filters.html#overlay"><code class="code">overlay</code></a> video filter.
|
499 |
+
|
500 |
+
</li></ul>
|
501 |
+
|
502 |
+
<a class="anchor" id="How-can-I-concatenate-video-files"></a></div>
|
503 |
+
<div class="section-level-extent" id="How-can-I-concatenate-video-files_003f">
|
504 |
+
<h3 class="section">3.14 How can I concatenate video files?</h3>
|
505 |
+
|
506 |
+
<p>There are several solutions, depending on the exact circumstances.
|
507 |
+
</p>
|
508 |
+
<ul class="mini-toc">
|
509 |
+
<li><a href="#Concatenating-using-the-concat-filter" accesskey="1">Concatenating using the concat <em class="emph">filter</em></a></li>
|
510 |
+
<li><a href="#Concatenating-using-the-concat-demuxer" accesskey="2">Concatenating using the concat <em class="emph">demuxer</em></a></li>
|
511 |
+
<li><a href="#Concatenating-using-the-concat-protocol-_0028file-level_0029" accesskey="3">Concatenating using the concat <em class="emph">protocol</em> (file level)</a></li>
|
512 |
+
<li><a href="#Concatenating-using-raw-audio-and-video" accesskey="4">Concatenating using raw audio and video</a></li>
|
513 |
+
</ul>
|
514 |
+
<div class="subsection-level-extent" id="Concatenating-using-the-concat-filter">
|
515 |
+
<h4 class="subsection">3.14.1 Concatenating using the concat <em class="emph">filter</em></h4>
|
516 |
+
|
517 |
+
<p>FFmpeg has a <a class="url" href="ffmpeg-filters.html#concat"><code class="code">concat</code></a> filter designed specifically for that, with examples in the
|
518 |
+
documentation. This operation is recommended if you need to re-encode.
|
519 |
+
</p>
|
520 |
+
</div>
|
521 |
+
<div class="subsection-level-extent" id="Concatenating-using-the-concat-demuxer">
|
522 |
+
<h4 class="subsection">3.14.2 Concatenating using the concat <em class="emph">demuxer</em></h4>
|
523 |
+
|
524 |
+
<p>FFmpeg has a <a class="url" href="ffmpeg-formats.html#concat"><code class="code">concat</code></a> demuxer which you can use when you want to avoid a re-encode and
|
525 |
+
your format doesn’t support file level concatenation.
|
526 |
+
</p>
|
527 |
+
</div>
|
528 |
+
<div class="subsection-level-extent" id="Concatenating-using-the-concat-protocol-_0028file-level_0029">
|
529 |
+
<h4 class="subsection">3.14.3 Concatenating using the concat <em class="emph">protocol</em> (file level)</h4>
|
530 |
+
|
531 |
+
<p>FFmpeg has a <a class="url" href="ffmpeg-protocols.html#concat"><code class="code">concat</code></a> protocol designed specifically for that, with examples in the
|
532 |
+
documentation.
|
533 |
+
</p>
|
534 |
+
<p>A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow one to concatenate
|
535 |
+
video by merely concatenating the files containing them.
|
536 |
+
</p>
|
537 |
+
<p>Hence you may concatenate your multimedia files by first transcoding them to
|
538 |
+
these privileged formats, then using the humble <code class="code">cat</code> command (or the
|
539 |
+
equally humble <code class="code">copy</code> under Windows), and finally transcoding back to your
|
540 |
+
format of choice.
|
541 |
+
</p>
|
542 |
+
<div class="example">
|
543 |
+
<pre class="example-preformatted">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
544 |
+
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
545 |
+
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
|
546 |
+
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
547 |
+
</pre></div>
|
548 |
+
|
549 |
+
<p>Additionally, you can use the <code class="code">concat</code> protocol instead of <code class="code">cat</code> or
|
550 |
+
<code class="code">copy</code> which will avoid creation of a potentially huge intermediate file.
|
551 |
+
</p>
|
552 |
+
<div class="example">
|
553 |
+
<pre class="example-preformatted">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
554 |
+
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
555 |
+
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
|
556 |
+
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
557 |
+
</pre></div>
|
558 |
+
|
559 |
+
<p>Note that you may need to escape the character "|" which is special for many
|
560 |
+
shells.
|
561 |
+
</p>
|
562 |
+
<p>Another option is usage of named pipes, should your platform support it:
|
563 |
+
</p>
|
564 |
+
<div class="example">
|
565 |
+
<pre class="example-preformatted">mkfifo intermediate1.mpg
|
566 |
+
mkfifo intermediate2.mpg
|
567 |
+
ffmpeg -i input1.avi -qscale:v 1 -y intermediate1.mpg < /dev/null &
|
568 |
+
ffmpeg -i input2.avi -qscale:v 1 -y intermediate2.mpg < /dev/null &
|
569 |
+
cat intermediate1.mpg intermediate2.mpg |\
|
570 |
+
ffmpeg -f mpeg -i - -c:v mpeg4 -c:a libmp3lame output.avi
|
571 |
+
</pre></div>
|
572 |
+
|
573 |
+
</div>
|
574 |
+
<div class="subsection-level-extent" id="Concatenating-using-raw-audio-and-video">
|
575 |
+
<h4 class="subsection">3.14.4 Concatenating using raw audio and video</h4>
|
576 |
+
|
577 |
+
<p>Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
|
578 |
+
allow concatenation, and the transcoding step is almost lossless.
|
579 |
+
When using multiple yuv4mpegpipe(s), the first line needs to be discarded
|
580 |
+
from all but the first stream. This can be accomplished by piping through
|
581 |
+
<code class="code">tail</code> as seen below. Note that when piping through <code class="code">tail</code> you
|
582 |
+
must use command grouping, <code class="code">{ ;}</code>, to background properly.
|
583 |
+
</p>
|
584 |
+
<p>For example, let’s say we want to concatenate two FLV files into an
|
585 |
+
output.flv file:
|
586 |
+
</p>
|
587 |
+
<div class="example">
|
588 |
+
<pre class="example-preformatted">mkfifo temp1.a
|
589 |
+
mkfifo temp1.v
|
590 |
+
mkfifo temp2.a
|
591 |
+
mkfifo temp2.v
|
592 |
+
mkfifo all.a
|
593 |
+
mkfifo all.v
|
594 |
+
ffmpeg -i input1.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
|
595 |
+
ffmpeg -i input2.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
|
596 |
+
ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
|
597 |
+
{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; } &
|
598 |
+
cat temp1.a temp2.a > all.a &
|
599 |
+
cat temp1.v temp2.v > all.v &
|
600 |
+
ffmpeg -f u16le -c:a pcm_s16le -ac 2 -ar 44100 -i all.a \
|
601 |
+
-f yuv4mpegpipe -i all.v \
|
602 |
+
-y output.flv
|
603 |
+
rm temp[12].[av] all.[av]
|
604 |
+
</pre></div>
|
605 |
+
|
606 |
+
</div>
|
607 |
+
</div>
|
608 |
+
<div class="section-level-extent" id="Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">
|
609 |
+
<h3 class="section">3.15 Using <samp class="option">-f lavfi</samp>, audio becomes mono for no apparent reason.</h3>
|
610 |
+
|
611 |
+
<p>Use <samp class="option">-dumpgraph -</samp> to find out exactly where the channel layout is
|
612 |
+
lost.
|
613 |
+
</p>
|
614 |
+
<p>Most likely, it is through <code class="code">auto-inserted aresample</code>. Try to understand
|
615 |
+
why the converting filter was needed at that place.
|
616 |
+
</p>
|
617 |
+
<p>Just before the output is a likely place, as <samp class="option">-f lavfi</samp> currently
|
618 |
+
only support packed S16.
|
619 |
+
</p>
|
620 |
+
<p>Then insert the correct <code class="code">aformat</code> explicitly in the filtergraph,
|
621 |
+
specifying the exact format.
|
622 |
+
</p>
|
623 |
+
<div class="example">
|
624 |
+
<pre class="example-preformatted">aformat=sample_fmts=s16:channel_layouts=stereo
|
625 |
+
</pre></div>
|
626 |
+
|
627 |
+
</div>
|
628 |
+
<div class="section-level-extent" id="Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">
|
629 |
+
<h3 class="section">3.16 Why does FFmpeg not see the subtitles in my VOB file?</h3>
|
630 |
+
|
631 |
+
<p>VOB and a few other formats do not have a global header that describes
|
632 |
+
everything present in the file. Instead, applications are supposed to scan
|
633 |
+
the file to see what it contains. Since VOB files are frequently large, only
|
634 |
+
the beginning is scanned. If the subtitles happen only later in the file,
|
635 |
+
they will not be initially detected.
|
636 |
+
</p>
|
637 |
+
<p>Some applications, including the <code class="code">ffmpeg</code> command-line tool, can only
|
638 |
+
work with streams that were detected during the initial scan; streams that
|
639 |
+
are detected later are ignored.
|
640 |
+
</p>
|
641 |
+
<p>The size of the initial scan is controlled by two options: <code class="code">probesize</code>
|
642 |
+
(default ~5 Mo) and <code class="code">analyzeduration</code> (default 5,000,000 µs = 5 s). For
|
643 |
+
the subtitle stream to be detected, both values must be large enough.
|
644 |
+
</p>
|
645 |
+
</div>
|
646 |
+
<div class="section-level-extent" id="Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">
|
647 |
+
<h3 class="section">3.17 Why was the <code class="command">ffmpeg</code> <samp class="option">-sameq</samp> option removed? What to use instead?</h3>
|
648 |
+
|
649 |
+
<p>The <samp class="option">-sameq</samp> option meant "same quantizer", and made sense only in a
|
650 |
+
very limited set of cases. Unfortunately, a lot of people mistook it for
|
651 |
+
"same quality" and used it in places where it did not make sense: it had
|
652 |
+
roughly the expected visible effect, but achieved it in a very inefficient
|
653 |
+
way.
|
654 |
+
</p>
|
655 |
+
<p>Each encoder has its own set of options to set the quality-vs-size balance,
|
656 |
+
use the options for the encoder you are using to set the quality level to a
|
657 |
+
point acceptable for your tastes. The most common options to do that are
|
658 |
+
<samp class="option">-qscale</samp> and <samp class="option">-qmax</samp>, but you should peruse the documentation
|
659 |
+
of the encoder you chose.
|
660 |
+
</p>
|
661 |
+
</div>
|
662 |
+
<div class="section-level-extent" id="I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">
|
663 |
+
<h3 class="section">3.18 I have a stretched video, why does scaling does not fix it?</h3>
|
664 |
+
|
665 |
+
<p>A lot of video codecs and formats can store the <em class="emph">aspect ratio</em> of the
|
666 |
+
video: this is the ratio between the width and the height of either the full
|
667 |
+
image (DAR, display aspect ratio) or individual pixels (SAR, sample aspect
|
668 |
+
ratio). For example, EGA screens at resolution 640×350 had 4:3 DAR and 35:48
|
669 |
+
SAR.
|
670 |
+
</p>
|
671 |
+
<p>Most still image processing work with square pixels, i.e. 1:1 SAR, but a lot
|
672 |
+
of video standards, especially from the analogic-numeric transition era, use
|
673 |
+
non-square pixels.
|
674 |
+
</p>
|
675 |
+
<p>Most processing filters in FFmpeg handle the aspect ratio to avoid
|
676 |
+
stretching the image: cropping adjusts the DAR to keep the SAR constant,
|
677 |
+
scaling adjusts the SAR to keep the DAR constant.
|
678 |
+
</p>
|
679 |
+
<p>If you want to stretch, or “unstretch”, the image, you need to override the
|
680 |
+
information with the
|
681 |
+
<a class="url" href="ffmpeg-filters.html#setdar_002c-setsar"><code class="code">setdar or setsar filters</code></a>.
|
682 |
+
</p>
|
683 |
+
<p>Do not forget to examine carefully the original video to check whether the
|
684 |
+
stretching comes from the image or from the aspect ratio information.
|
685 |
+
</p>
|
686 |
+
<p>For example, to fix a badly encoded EGA capture, use the following commands,
|
687 |
+
either the first one to upscale to square pixels or the second one to set
|
688 |
+
the correct aspect ratio or the third one to avoid transcoding (may not work
|
689 |
+
depending on the format / codec / player / phase of the moon):
|
690 |
+
</p>
|
691 |
+
<div class="example">
|
692 |
+
<pre class="example-preformatted">ffmpeg -i ega_screen.nut -vf scale=640:480,setsar=1 ega_screen_scaled.nut
|
693 |
+
ffmpeg -i ega_screen.nut -vf setdar=4/3 ega_screen_anamorphic.nut
|
694 |
+
ffmpeg -i ega_screen.nut -aspect 4/3 -c copy ega_screen_overridden.nut
|
695 |
+
</pre></div>
|
696 |
+
|
697 |
+
<a class="anchor" id="background-task"></a></div>
|
698 |
+
<div class="section-level-extent" id="How-do-I-run-ffmpeg-as-a-background-task_003f">
|
699 |
+
<h3 class="section">3.19 How do I run ffmpeg as a background task?</h3>
|
700 |
+
|
701 |
+
<p>ffmpeg normally checks the console input, for entries like "q" to stop
|
702 |
+
and "?" to give help, while performing operations. ffmpeg does not have a way of
|
703 |
+
detecting when it is running as a background task.
|
704 |
+
When it checks the console input, that can cause the process running ffmpeg
|
705 |
+
in the background to suspend.
|
706 |
+
</p>
|
707 |
+
<p>To prevent those input checks, allowing ffmpeg to run as a background task,
|
708 |
+
use the <a class="url" href="ffmpeg.html#stdin-option"><code class="code">-nostdin</code> option</a>
|
709 |
+
in the ffmpeg invocation. This is effective whether you run ffmpeg in a shell
|
710 |
+
or invoke ffmpeg in its own process via an operating system API.
|
711 |
+
</p>
|
712 |
+
<p>As an alternative, when you are running ffmpeg in a shell, you can redirect
|
713 |
+
standard input to <code class="code">/dev/null</code> (on Linux and macOS)
|
714 |
+
or <code class="code">NUL</code> (on Windows). You can do this redirect either
|
715 |
+
on the ffmpeg invocation, or from a shell script which calls ffmpeg.
|
716 |
+
</p>
|
717 |
+
<p>For example:
|
718 |
+
</p>
|
719 |
+
<div class="example">
|
720 |
+
<pre class="example-preformatted">ffmpeg -nostdin -i INPUT OUTPUT
|
721 |
+
</pre></div>
|
722 |
+
|
723 |
+
<p>or (on Linux, macOS, and other UNIX-like shells):
|
724 |
+
</p>
|
725 |
+
<div class="example">
|
726 |
+
<pre class="example-preformatted">ffmpeg -i INPUT OUTPUT </dev/null
|
727 |
+
</pre></div>
|
728 |
+
|
729 |
+
<p>or (on Windows):
|
730 |
+
</p>
|
731 |
+
<div class="example">
|
732 |
+
<pre class="example-preformatted">ffmpeg -i INPUT OUTPUT <NUL
|
733 |
+
</pre></div>
|
734 |
+
|
735 |
+
</div>
|
736 |
+
<div class="section-level-extent" id="How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">
|
737 |
+
<h3 class="section">3.20 How do I prevent ffmpeg from suspending with a message like <em class="emph">suspended (tty output)</em>?</h3>
|
738 |
+
|
739 |
+
<p>If you run ffmpeg in the background, you may find that its process suspends.
|
740 |
+
There may be a message like <em class="emph">suspended (tty output)</em>. The question is how
|
741 |
+
to prevent the process from being suspended.
|
742 |
+
</p>
|
743 |
+
<p>For example:
|
744 |
+
</p>
|
745 |
+
<div class="example">
|
746 |
+
<pre class="example-preformatted">% ffmpeg -i INPUT OUTPUT &> ~/tmp/log.txt &
|
747 |
+
[1] 93352
|
748 |
+
%
|
749 |
+
[1] + suspended (tty output) ffmpeg -i INPUT OUTPUT &>
|
750 |
+
</pre></div>
|
751 |
+
|
752 |
+
<p>The message "tty output" notwithstanding, the problem here is that
|
753 |
+
ffmpeg normally checks the console input when it runs. The operating system
|
754 |
+
detects this, and suspends the process until you can bring it to the
|
755 |
+
foreground and attend to it.
|
756 |
+
</p>
|
757 |
+
<p>The solution is to use the right techniques to tell ffmpeg not to consult
|
758 |
+
console input. You can use the
|
759 |
+
<a class="url" href="ffmpeg.html#stdin-option"><code class="code">-nostdin</code> option</a>,
|
760 |
+
or redirect standard input with <code class="code">< /dev/null</code>.
|
761 |
+
See FAQ
|
762 |
+
<a class="ref" href="#background-task"><em class="emph">How do I run ffmpeg as a background task?</em></a>
|
763 |
+
for details.
|
764 |
+
</p>
|
765 |
+
</div>
|
766 |
+
</div>
|
767 |
+
<div class="chapter-level-extent" id="Development">
|
768 |
+
<h2 class="chapter">4 Development</h2>
|
769 |
+
|
770 |
+
<ul class="mini-toc">
|
771 |
+
<li><a href="#Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f" accesskey="1">Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></li>
|
772 |
+
<li><a href="#Can-you-support-my-C-compiler-XXX_003f" accesskey="2">Can you support my C compiler XXX?</a></li>
|
773 |
+
<li><a href="#Is-Microsoft-Visual-C_002b_002b-supported_003f" accesskey="3">Is Microsoft Visual C++ supported?</a></li>
|
774 |
+
<li><a href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f" accesskey="4">Can you add automake, libtool or autoconf support?</a></li>
|
775 |
+
<li><a href="#Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f" accesskey="5">Why not rewrite FFmpeg in object-oriented C++?</a></li>
|
776 |
+
<li><a href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" accesskey="6">Why are the ffmpeg programs devoid of debugging symbols?</a></li>
|
777 |
+
<li><a href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" accesskey="7">I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
|
778 |
+
<li><a href="#I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e" accesskey="8">I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></li>
|
779 |
+
<li><a href="#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" accesskey="9">I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
|
780 |
+
<li><a href="#I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></li>
|
781 |
+
<li><a href="#I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></li>
|
782 |
+
<li><a href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
|
783 |
+
<li><a href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
|
784 |
+
<li><a href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></li>
|
785 |
+
<li><a href="#Why-is-make-fate-not-running-all-tests_003f">Why is <code class="code">make fate</code> not running all tests?</a></li>
|
786 |
+
<li><a href="#Why-is-make-fate-not-finding-the-samples_003f">Why is <code class="code">make fate</code> not finding the samples?</a></li>
|
787 |
+
</ul>
|
788 |
+
<div class="section-level-extent" id="Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">
|
789 |
+
<h3 class="section">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</h3>
|
790 |
+
|
791 |
+
<p>Yes. Check the <samp class="file">doc/examples</samp> directory in the source
|
792 |
+
repository, also available online at:
|
793 |
+
<a class="url" href="https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples">https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples</a>.
|
794 |
+
</p>
|
795 |
+
<p>Examples are also installed by default, usually in
|
796 |
+
<code class="code">$PREFIX/share/ffmpeg/examples</code>.
|
797 |
+
</p>
|
798 |
+
<p>Also you may read the Developers Guide of the FFmpeg documentation. Alternatively,
|
799 |
+
examine the source code for one of the many open source projects that
|
800 |
+
already incorporate FFmpeg at (<a class="url" href="projects.html">projects.html</a>).
|
801 |
+
</p>
|
802 |
+
</div>
|
803 |
+
<div class="section-level-extent" id="Can-you-support-my-C-compiler-XXX_003f">
|
804 |
+
<h3 class="section">4.2 Can you support my C compiler XXX?</h3>
|
805 |
+
|
806 |
+
<p>It depends. If your compiler is C99-compliant, then patches to support
|
807 |
+
it are likely to be welcome if they do not pollute the source code
|
808 |
+
with <code class="code">#ifdef</code>s related to the compiler.
|
809 |
+
</p>
|
810 |
+
</div>
|
811 |
+
<div class="section-level-extent" id="Is-Microsoft-Visual-C_002b_002b-supported_003f">
|
812 |
+
<h3 class="section">4.3 Is Microsoft Visual C++ supported?</h3>
|
813 |
+
|
814 |
+
<p>Yes. Please see the <a class="uref" href="platform.html">Microsoft Visual C++</a>
|
815 |
+
section in the FFmpeg documentation.
|
816 |
+
</p>
|
817 |
+
</div>
|
818 |
+
<div class="section-level-extent" id="Can-you-add-automake_002c-libtool-or-autoconf-support_003f">
|
819 |
+
<h3 class="section">4.4 Can you add automake, libtool or autoconf support?</h3>
|
820 |
+
|
821 |
+
<p>No. These tools are too bloated and they complicate the build.
|
822 |
+
</p>
|
823 |
+
</div>
|
824 |
+
<div class="section-level-extent" id="Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">
|
825 |
+
<h3 class="section">4.5 Why not rewrite FFmpeg in object-oriented C++?</h3>
|
826 |
+
|
827 |
+
<p>FFmpeg is already organized in a highly modular manner and does not need to
|
828 |
+
be rewritten in a formal object language. Further, many of the developers
|
829 |
+
favor straight C; it works for them. For more arguments on this matter,
|
830 |
+
read <a class="uref" href="https://web.archive.org/web/20111004021423/http://kernel.org/pub/linux/docs/lkml/#s15">"Programming Religion"</a>.
|
831 |
+
</p>
|
832 |
+
</div>
|
833 |
+
<div class="section-level-extent" id="Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">
|
834 |
+
<h3 class="section">4.6 Why are the ffmpeg programs devoid of debugging symbols?</h3>
|
835 |
+
|
836 |
+
<p>The build process creates <code class="command">ffmpeg_g</code>, <code class="command">ffplay_g</code>, etc. which
|
837 |
+
contain full debug information. Those binaries are stripped to create
|
838 |
+
<code class="command">ffmpeg</code>, <code class="command">ffplay</code>, etc. If you need the debug information, use
|
839 |
+
the *_g versions.
|
840 |
+
</p>
|
841 |
+
</div>
|
842 |
+
<div class="section-level-extent" id="I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">
|
843 |
+
<h3 class="section">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</h3>
|
844 |
+
|
845 |
+
<p>Yes, as long as the code is optional and can easily and cleanly be placed
|
846 |
+
under #if CONFIG_GPL without breaking anything. So, for example, a new codec
|
847 |
+
or filter would be OK under GPL while a bug fix to LGPL code would not.
|
848 |
+
</p>
|
849 |
+
</div>
|
850 |
+
<div class="section-level-extent" id="I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">
|
851 |
+
<h3 class="section">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</h3>
|
852 |
+
|
853 |
+
<p>FFmpeg builds static libraries by default. In static libraries, dependencies
|
854 |
+
are not handled. That has two consequences. First, you must specify the
|
855 |
+
libraries in dependency order: <code class="code">-lavdevice</code> must come before
|
856 |
+
<code class="code">-lavformat</code>, <code class="code">-lavutil</code> must come after everything else, etc.
|
857 |
+
Second, external libraries that are used in FFmpeg have to be specified too.
|
858 |
+
</p>
|
859 |
+
<p>An easy way to get the full list of required libraries in dependency order
|
860 |
+
is to use <code class="code">pkg-config</code>.
|
861 |
+
</p>
|
862 |
+
<div class="example">
|
863 |
+
<pre class="example-preformatted">c99 -o program program.c $(pkg-config --cflags --libs libavformat libavcodec)
|
864 |
+
</pre></div>
|
865 |
+
|
866 |
+
<p>See <samp class="file">doc/example/Makefile</samp> and <samp class="file">doc/example/pc-uninstalled</samp> for
|
867 |
+
more details.
|
868 |
+
</p>
|
869 |
+
</div>
|
870 |
+
<div class="section-level-extent" id="I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">
|
871 |
+
<h3 class="section">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</h3>
|
872 |
+
|
873 |
+
<p>FFmpeg is a pure C project, so to use the libraries within your C++ application
|
874 |
+
you need to explicitly state that you are using a C library. You can do this by
|
875 |
+
encompassing your FFmpeg includes using <code class="code">extern "C"</code>.
|
876 |
+
</p>
|
877 |
+
<p>See <a class="url" href="http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3">http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3</a>
|
878 |
+
</p>
|
879 |
+
</div>
|
880 |
+
<div class="section-level-extent" id="I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">
|
881 |
+
<h3 class="section">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</h3>
|
882 |
+
|
883 |
+
<p>FFmpeg is a pure C project using C99 math features, in order to enable C++
|
884 |
+
to use them you have to append -D__STDC_CONSTANT_MACROS to your CXXFLAGS
|
885 |
+
</p>
|
886 |
+
</div>
|
887 |
+
<div class="section-level-extent" id="I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">
|
888 |
+
<h3 class="section">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</h3>
|
889 |
+
|
890 |
+
<p>You have to create a custom AVIOContext using <code class="code">avio_alloc_context</code>,
|
891 |
+
see <samp class="file">libavformat/aviobuf.c</samp> in FFmpeg and <samp class="file">libmpdemux/demux_lavf.c</samp> in MPlayer or MPlayer2 sources.
|
892 |
+
</p>
|
893 |
+
</div>
|
894 |
+
<div class="section-level-extent" id="Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">
|
895 |
+
<h3 class="section">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</h3>
|
896 |
+
|
897 |
+
<p>see <a class="url" href="https://www.ffmpeg.org/~michael/">https://www.ffmpeg.org/~michael/</a>
|
898 |
+
</p>
|
899 |
+
</div>
|
900 |
+
<div class="section-level-extent" id="How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">
|
901 |
+
<h3 class="section">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</h3>
|
902 |
+
|
903 |
+
<p>Even if peculiar since it is network oriented, RTP is a container like any
|
904 |
+
other. You have to <em class="emph">demux</em> RTP before feeding the payload to libavcodec.
|
905 |
+
In this specific case please look at RFC 4629 to see how it should be done.
|
906 |
+
</p>
|
907 |
+
</div>
|
908 |
+
<div class="section-level-extent" id="AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">
|
909 |
+
<h3 class="section">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</h3>
|
910 |
+
|
911 |
+
<p><code class="code">r_frame_rate</code> is NOT the average frame rate, it is the smallest frame rate
|
912 |
+
that can accurately represent all timestamps. So no, it is not
|
913 |
+
wrong if it is larger than the average!
|
914 |
+
For example, if you have mixed 25 and 30 fps content, then <code class="code">r_frame_rate</code>
|
915 |
+
will be 150 (it is the least common multiple).
|
916 |
+
If you are looking for the average frame rate, see <code class="code">AVStream.avg_frame_rate</code>.
|
917 |
+
</p>
|
918 |
+
</div>
|
919 |
+
<div class="section-level-extent" id="Why-is-make-fate-not-running-all-tests_003f">
|
920 |
+
<h3 class="section">4.15 Why is <code class="code">make fate</code> not running all tests?</h3>
|
921 |
+
|
922 |
+
<p>Make sure you have the fate-suite samples and the <code class="code">SAMPLES</code> Make variable
|
923 |
+
or <code class="code">FATE_SAMPLES</code> environment variable or the <code class="code">--samples</code>
|
924 |
+
<code class="command">configure</code> option is set to the right path.
|
925 |
+
</p>
|
926 |
+
</div>
|
927 |
+
<div class="section-level-extent" id="Why-is-make-fate-not-finding-the-samples_003f">
|
928 |
+
<h3 class="section">4.16 Why is <code class="code">make fate</code> not finding the samples?</h3>
|
929 |
+
|
930 |
+
<p>Do you happen to have a <code class="code">~</code> character in the samples path to indicate a
|
931 |
+
home directory? The value is used in ways where the shell cannot expand it,
|
932 |
+
causing FATE to not find files. Just replace <code class="code">~</code> by the full path.
|
933 |
+
</p>
|
934 |
+
</div>
|
935 |
+
</div>
|
936 |
+
</div>
|
937 |
+
|
938 |
+
|
939 |
+
|
940 |
+
</body>
|
941 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/fate.html
ADDED
@@ -0,0 +1,367 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Automated Testing Environment</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Automated Testing Environment">
|
9 |
+
<meta name="keywords" content="FFmpeg Automated Testing Environment">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#Top" rel="start" title="Top">
|
16 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
17 |
+
<style type="text/css">
|
18 |
+
<!--
|
19 |
+
div.example {margin-left: 3.2em}
|
20 |
+
ul.mark-bullet {list-style-type: disc}
|
21 |
+
ul.toc-numbered-mark {list-style: none}
|
22 |
+
-->
|
23 |
+
</style>
|
24 |
+
|
25 |
+
|
26 |
+
</head>
|
27 |
+
|
28 |
+
<body lang="en">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="top-level-extent" id="Top">
|
32 |
+
<a class="top" id="SEC_Top"></a>
|
33 |
+
|
34 |
+
<div class="element-contents" id="SEC_Contents">
|
35 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
36 |
+
|
37 |
+
<div class="contents">
|
38 |
+
|
39 |
+
<ul class="toc-numbered-mark">
|
40 |
+
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
41 |
+
<li><a id="toc-Using-FATE-from-your-FFmpeg-source-directory" href="#Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></li>
|
42 |
+
<li><a id="toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></li>
|
43 |
+
<li><a id="toc-Uploading-new-samples-to-the-fate-suite" href="#Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></li>
|
44 |
+
<li><a id="toc-FATE-makefile-targets-and-variables" href="#FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a>
|
45 |
+
<ul class="toc-numbered-mark">
|
46 |
+
<li><a id="toc-Makefile-targets" href="#Makefile-targets">5.1 Makefile targets</a></li>
|
47 |
+
<li><a id="toc-Makefile-variables" href="#Makefile-variables">5.2 Makefile variables</a></li>
|
48 |
+
<li><a id="toc-Examples" href="#Examples">5.3 Examples</a></li>
|
49 |
+
</ul></li>
|
50 |
+
</ul>
|
51 |
+
</div>
|
52 |
+
</div>
|
53 |
+
<div class="chapter-level-extent" id="Introduction">
|
54 |
+
<h2 class="chapter">1 Introduction</h2>
|
55 |
+
|
56 |
+
<p>FATE is an extended regression suite on the client-side and a means
|
57 |
+
for results aggregation and presentation on the server-side.
|
58 |
+
</p>
|
59 |
+
<p>The first part of this document explains how you can use FATE from
|
60 |
+
your FFmpeg source directory to test your ffmpeg binary. The second
|
61 |
+
part describes how you can run FATE to submit the results to FFmpeg’s
|
62 |
+
FATE server.
|
63 |
+
</p>
|
64 |
+
<p>In any way you can have a look at the publicly viewable FATE results
|
65 |
+
by visiting this website:
|
66 |
+
</p>
|
67 |
+
<p><a class="url" href="http://fate.ffmpeg.org/">http://fate.ffmpeg.org/</a>
|
68 |
+
</p>
|
69 |
+
<p>This is especially recommended for all people contributing source
|
70 |
+
code to FFmpeg, as it can be seen if some test on some platform broke
|
71 |
+
with their recent contribution. This usually happens on the platforms
|
72 |
+
the developers could not test on.
|
73 |
+
</p>
|
74 |
+
<p>The second part of this document describes how you can run FATE to
|
75 |
+
submit your results to FFmpeg’s FATE server. If you want to submit your
|
76 |
+
results be sure to check that your combination of CPU, OS and compiler
|
77 |
+
is not already listed on the above mentioned website.
|
78 |
+
</p>
|
79 |
+
<p>In the third part you can find a comprehensive listing of FATE makefile
|
80 |
+
targets and variables.
|
81 |
+
</p>
|
82 |
+
|
83 |
+
</div>
|
84 |
+
<div class="chapter-level-extent" id="Using-FATE-from-your-FFmpeg-source-directory">
|
85 |
+
<h2 class="chapter">2 Using FATE from your FFmpeg source directory</h2>
|
86 |
+
|
87 |
+
<p>If you want to run FATE on your machine you need to have the samples
|
88 |
+
in place. You can get the samples via the build target fate-rsync.
|
89 |
+
Use this command from the top-level source directory:
|
90 |
+
</p>
|
91 |
+
<div class="example">
|
92 |
+
<pre class="example-preformatted">make fate-rsync SAMPLES=fate-suite/
|
93 |
+
make fate SAMPLES=fate-suite/
|
94 |
+
</pre></div>
|
95 |
+
|
96 |
+
<p>The above commands set the samples location by passing a makefile
|
97 |
+
variable via command line. It is also possible to set the samples
|
98 |
+
location at source configuration time by invoking configure with
|
99 |
+
<samp class="option">--samples=<path to the samples directory></samp>. Afterwards you can
|
100 |
+
invoke the makefile targets without setting the <var class="var">SAMPLES</var> makefile
|
101 |
+
variable. This is illustrated by the following commands:
|
102 |
+
</p>
|
103 |
+
<div class="example">
|
104 |
+
<pre class="example-preformatted">./configure --samples=fate-suite/
|
105 |
+
make fate-rsync
|
106 |
+
make fate
|
107 |
+
</pre></div>
|
108 |
+
|
109 |
+
<p>Yet another way to tell FATE about the location of the sample
|
110 |
+
directory is by making sure the environment variable FATE_SAMPLES
|
111 |
+
contains the path to your samples directory. This can be achieved
|
112 |
+
by e.g. putting that variable in your shell profile or by setting
|
113 |
+
it in your interactive session.
|
114 |
+
</p>
|
115 |
+
<div class="example">
|
116 |
+
<pre class="example-preformatted">FATE_SAMPLES=fate-suite/ make fate
|
117 |
+
</pre></div>
|
118 |
+
|
119 |
+
<div class="float">
|
120 |
+
<p>Do not put a ’~’ character in the samples path to indicate a home
|
121 |
+
directory. Because of shell nuances, this will cause FATE to fail.
|
122 |
+
</p><div class="type-number-float"><p><strong class="strong">NOTE
|
123 |
+
</strong></p></div></div>
|
124 |
+
<p>To get the complete list of tests, run the command:
|
125 |
+
</p><div class="example">
|
126 |
+
<pre class="example-preformatted">make fate-list
|
127 |
+
</pre></div>
|
128 |
+
|
129 |
+
<p>You can specify a subset of tests to run by specifying the
|
130 |
+
corresponding elements from the list with the <code class="code">fate-</code> prefix,
|
131 |
+
e.g. as in:
|
132 |
+
</p><div class="example">
|
133 |
+
<pre class="example-preformatted">make fate-ffprobe_compact fate-ffprobe_xml
|
134 |
+
</pre></div>
|
135 |
+
|
136 |
+
<p>This makes it easier to run a few tests in case of failure without
|
137 |
+
running the complete test suite.
|
138 |
+
</p>
|
139 |
+
<p>To use a custom wrapper to run the test, pass <samp class="option">--target-exec</samp> to
|
140 |
+
<code class="command">configure</code> or set the <var class="var">TARGET_EXEC</var> Make variable.
|
141 |
+
</p>
|
142 |
+
|
143 |
+
</div>
|
144 |
+
<div class="chapter-level-extent" id="Submitting-the-results-to-the-FFmpeg-result-aggregation-server">
|
145 |
+
<h2 class="chapter">3 Submitting the results to the FFmpeg result aggregation server</h2>
|
146 |
+
|
147 |
+
<p>To submit your results to the server you should run fate through the
|
148 |
+
shell script <samp class="file">tests/fate.sh</samp> from the FFmpeg sources. This script needs
|
149 |
+
to be invoked with a configuration file as its first argument.
|
150 |
+
</p>
|
151 |
+
<div class="example">
|
152 |
+
<pre class="example-preformatted">tests/fate.sh /path/to/fate_config
|
153 |
+
</pre></div>
|
154 |
+
|
155 |
+
<p>A configuration file template with comments describing the individual
|
156 |
+
configuration variables can be found at <samp class="file">doc/fate_config.sh.template</samp>.
|
157 |
+
</p>
|
158 |
+
<p>The mentioned configuration template is also available here:
|
159 |
+
</p><pre class="verbatim">slot= # some unique identifier
|
160 |
+
repo=git://source.ffmpeg.org/ffmpeg.git # the source repository
|
161 |
+
#branch=release/2.6 # the branch to test
|
162 |
+
samples= # path to samples directory
|
163 |
+
workdir= # directory in which to do all the work
|
164 |
+
#fate_recv="ssh -T [email protected]" # command to submit report
|
165 |
+
comment= # optional description
|
166 |
+
build_only= # set to "yes" for a compile-only instance that skips tests
|
167 |
+
ignore_tests=
|
168 |
+
|
169 |
+
# the following are optional and map to configure options
|
170 |
+
arch=
|
171 |
+
cpu=
|
172 |
+
cross_prefix=
|
173 |
+
as=
|
174 |
+
cc=
|
175 |
+
ld=
|
176 |
+
target_os=
|
177 |
+
sysroot=
|
178 |
+
target_exec=
|
179 |
+
target_path=
|
180 |
+
target_samples=
|
181 |
+
extra_cflags=
|
182 |
+
extra_ldflags=
|
183 |
+
extra_libs=
|
184 |
+
extra_conf= # extra configure options not covered above
|
185 |
+
|
186 |
+
#make= # name of GNU make if not 'make'
|
187 |
+
makeopts= # extra options passed to 'make'
|
188 |
+
#makeopts_fate= # extra options passed to 'make' when running tests,
|
189 |
+
# defaulting to makeopts above if this is not set
|
190 |
+
#tar= # command to create a tar archive from its arguments on stdout,
|
191 |
+
# defaults to 'tar c'
|
192 |
+
</pre>
|
193 |
+
<p>Create a configuration that suits your needs, based on the configuration
|
194 |
+
template. The <code class="env">slot</code> configuration variable can be any string that is not
|
195 |
+
yet used, but it is suggested that you name it adhering to the following
|
196 |
+
pattern ‘<samp class="samp"><var class="var">arch</var>-<var class="var">os</var>-<var class="var">compiler</var>-<var class="var">compiler version</var></samp>’. The
|
197 |
+
configuration file itself will be sourced in a shell script, therefore all
|
198 |
+
shell features may be used. This enables you to setup the environment as you
|
199 |
+
need it for your build.
|
200 |
+
</p>
|
201 |
+
<p>For your first test runs the <code class="env">fate_recv</code> variable should be empty or
|
202 |
+
commented out. This will run everything as normal except that it will omit
|
203 |
+
the submission of the results to the server. The following files should be
|
204 |
+
present in $workdir as specified in the configuration file:
|
205 |
+
</p>
|
206 |
+
<ul class="itemize mark-bullet">
|
207 |
+
<li>configure.log
|
208 |
+
</li><li>compile.log
|
209 |
+
</li><li>test.log
|
210 |
+
</li><li>report
|
211 |
+
</li><li>version
|
212 |
+
</li></ul>
|
213 |
+
|
214 |
+
<p>When you have everything working properly you can create an SSH key pair
|
215 |
+
and send the public key to the FATE server administrator who can be contacted
|
216 |
+
at the email address <a class="email" href="mailto:[email protected]">[email protected]</a>.
|
217 |
+
</p>
|
218 |
+
<p>Configure your SSH client to use public key authentication with that key
|
219 |
+
when connecting to the FATE server. Also do not forget to check the identity
|
220 |
+
of the server and to accept its host key. This can usually be achieved by
|
221 |
+
running your SSH client manually and killing it after you accepted the key.
|
222 |
+
The FATE server’s fingerprint is:
|
223 |
+
</p>
|
224 |
+
<dl class="table">
|
225 |
+
<dt>‘<samp class="samp">RSA</samp>’</dt>
|
226 |
+
<dd><p>d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
|
227 |
+
</p></dd>
|
228 |
+
<dt>‘<samp class="samp">ECDSA</samp>’</dt>
|
229 |
+
<dd><p>76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86
|
230 |
+
</p></dd>
|
231 |
+
</dl>
|
232 |
+
|
233 |
+
<p>If you have problems connecting to the FATE server, it may help to try out
|
234 |
+
the <code class="command">ssh</code> command with one or more <samp class="option">-v</samp> options. You should
|
235 |
+
get detailed output concerning your SSH configuration and the authentication
|
236 |
+
process.
|
237 |
+
</p>
|
238 |
+
<p>The only thing left is to automate the execution of the fate.sh script and
|
239 |
+
the synchronisation of the samples directory.
|
240 |
+
</p>
|
241 |
+
</div>
|
242 |
+
<div class="chapter-level-extent" id="Uploading-new-samples-to-the-fate-suite">
|
243 |
+
<h2 class="chapter">4 Uploading new samples to the fate suite</h2>
|
244 |
+
|
245 |
+
<p>If you need a sample uploaded send a mail to samples-request.
|
246 |
+
</p>
|
247 |
+
<p>This is for developers who have an account on the fate suite server.
|
248 |
+
If you upload new samples, please make sure they are as small as possible,
|
249 |
+
space on each client, network bandwidth and so on benefit from smaller test cases.
|
250 |
+
Also keep in mind older checkouts use existing sample files, that means in
|
251 |
+
practice generally do not replace, remove or overwrite files as it likely would
|
252 |
+
break older checkouts or releases.
|
253 |
+
Also all needed samples for a commit should be uploaded, ideally 24
|
254 |
+
hours, before the push.
|
255 |
+
If you need an account for frequently uploading samples or you wish to help
|
256 |
+
others by doing that send a mail to ffmpeg-devel.
|
257 |
+
</p>
|
258 |
+
<div class="example">
|
259 |
+
<pre class="example-preformatted">#First update your local samples copy:
|
260 |
+
rsync -vauL --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X fate-suite.ffmpeg.org:/home/samples/fate-suite/ ~/fate-suite
|
261 |
+
|
262 |
+
#Then do a dry run checking what would be uploaded:
|
263 |
+
rsync -vanL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
264 |
+
|
265 |
+
#Upload the files:
|
266 |
+
rsync -vaL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
267 |
+
</pre></div>
|
268 |
+
|
269 |
+
|
270 |
+
</div>
|
271 |
+
<div class="chapter-level-extent" id="FATE-makefile-targets-and-variables">
|
272 |
+
<h2 class="chapter">5 FATE makefile targets and variables</h2>
|
273 |
+
|
274 |
+
<ul class="mini-toc">
|
275 |
+
<li><a href="#Makefile-targets" accesskey="1">Makefile targets</a></li>
|
276 |
+
<li><a href="#Makefile-variables" accesskey="2">Makefile variables</a></li>
|
277 |
+
<li><a href="#Examples" accesskey="3">Examples</a></li>
|
278 |
+
</ul>
|
279 |
+
<div class="section-level-extent" id="Makefile-targets">
|
280 |
+
<h3 class="section">5.1 Makefile targets</h3>
|
281 |
+
|
282 |
+
<dl class="table">
|
283 |
+
<dt><samp class="option">fate-rsync</samp></dt>
|
284 |
+
<dd><p>Download/synchronize sample files to the configured samples directory.
|
285 |
+
</p>
|
286 |
+
</dd>
|
287 |
+
<dt><samp class="option">fate-list</samp></dt>
|
288 |
+
<dd><p>Will list all fate/regression test targets.
|
289 |
+
</p>
|
290 |
+
</dd>
|
291 |
+
<dt><samp class="option">fate</samp></dt>
|
292 |
+
<dd><p>Run the FATE test suite (requires the fate-suite dataset).
|
293 |
+
</p></dd>
|
294 |
+
</dl>
|
295 |
+
|
296 |
+
</div>
|
297 |
+
<div class="section-level-extent" id="Makefile-variables">
|
298 |
+
<h3 class="section">5.2 Makefile variables</h3>
|
299 |
+
|
300 |
+
<dl class="table">
|
301 |
+
<dt><code class="env">V</code></dt>
|
302 |
+
<dd><p>Verbosity level, can be set to 0, 1 or 2.
|
303 |
+
</p><ul class="itemize mark-bullet">
|
304 |
+
<li>0: show just the test arguments
|
305 |
+
</li><li>1: show just the command used in the test
|
306 |
+
</li><li>2: show everything
|
307 |
+
</li></ul>
|
308 |
+
|
309 |
+
</dd>
|
310 |
+
<dt><code class="env">SAMPLES</code></dt>
|
311 |
+
<dd><p>Specify or override the path to the FATE samples at make time, it has a
|
312 |
+
meaning only while running the regression tests.
|
313 |
+
</p>
|
314 |
+
</dd>
|
315 |
+
<dt><code class="env">THREADS</code></dt>
|
316 |
+
<dd><p>Specify how many threads to use while running regression tests, it is
|
317 |
+
quite useful to detect thread-related regressions.
|
318 |
+
</p>
|
319 |
+
</dd>
|
320 |
+
<dt><code class="env">THREAD_TYPE</code></dt>
|
321 |
+
<dd><p>Specify which threading strategy test, either ‘<samp class="samp">slice</samp>’ or ‘<samp class="samp">frame</samp>’,
|
322 |
+
by default ‘<samp class="samp">slice+frame</samp>’
|
323 |
+
</p>
|
324 |
+
</dd>
|
325 |
+
<dt><code class="env">CPUFLAGS</code></dt>
|
326 |
+
<dd><p>Specify CPU flags.
|
327 |
+
</p>
|
328 |
+
</dd>
|
329 |
+
<dt><code class="env">TARGET_EXEC</code></dt>
|
330 |
+
<dd><p>Specify or override the wrapper used to run the tests.
|
331 |
+
The <code class="env">TARGET_EXEC</code> option provides a way to run FATE wrapped in
|
332 |
+
<code class="command">valgrind</code>, <code class="command">qemu-user</code> or <code class="command">wine</code> or on remote targets
|
333 |
+
through <code class="command">ssh</code>.
|
334 |
+
</p>
|
335 |
+
</dd>
|
336 |
+
<dt><code class="env">GEN</code></dt>
|
337 |
+
<dd><p>Set to ‘<samp class="samp">1</samp>’ to generate the missing or mismatched references.
|
338 |
+
</p>
|
339 |
+
</dd>
|
340 |
+
<dt><code class="env">HWACCEL</code></dt>
|
341 |
+
<dd><p>Specify which hardware acceleration to use while running regression tests,
|
342 |
+
by default ‘<samp class="samp">none</samp>’ is used.
|
343 |
+
</p>
|
344 |
+
</dd>
|
345 |
+
<dt><code class="env">KEEP</code></dt>
|
346 |
+
<dd><p>Set to ‘<samp class="samp">1</samp>’ to keep temp files generated by fate test(s) when test is successful.
|
347 |
+
Default is ‘<samp class="samp">0</samp>’, which removes these files. Files are always kept when a test
|
348 |
+
fails.
|
349 |
+
</p>
|
350 |
+
</dd>
|
351 |
+
</dl>
|
352 |
+
|
353 |
+
</div>
|
354 |
+
<div class="section-level-extent" id="Examples">
|
355 |
+
<h3 class="section">5.3 Examples</h3>
|
356 |
+
|
357 |
+
<div class="example">
|
358 |
+
<pre class="example-preformatted">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
|
359 |
+
</pre></div>
|
360 |
+
</div>
|
361 |
+
</div>
|
362 |
+
</div>
|
363 |
+
|
364 |
+
|
365 |
+
|
366 |
+
</body>
|
367 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-all.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-bitstream-filters.html
ADDED
@@ -0,0 +1,1307 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Bitstream Filters Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Bitstream Filters Documentation">
|
9 |
+
<meta name="keywords" content="FFmpeg Bitstream Filters Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.toc-numbered-mark {list-style: none}
|
20 |
+
-->
|
21 |
+
</style>
|
22 |
+
|
23 |
+
|
24 |
+
</head>
|
25 |
+
|
26 |
+
<body lang="en">
|
27 |
+
|
28 |
+
|
29 |
+
<div class="top-level-extent" id="SEC_Top">
|
30 |
+
|
31 |
+
|
32 |
+
<div class="element-contents" id="SEC_Contents">
|
33 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
34 |
+
|
35 |
+
<div class="contents">
|
36 |
+
|
37 |
+
<ul class="toc-numbered-mark">
|
38 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
39 |
+
<li><a id="toc-Bitstream-Filters" href="#Bitstream-Filters">2 Bitstream Filters</a>
|
40 |
+
<ul class="toc-numbered-mark">
|
41 |
+
<li><a id="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
|
42 |
+
<li><a id="toc-av1_005fmetadata" href="#av1_005fmetadata">2.2 av1_metadata</a></li>
|
43 |
+
<li><a id="toc-chomp" href="#chomp">2.3 chomp</a></li>
|
44 |
+
<li><a id="toc-dca_005fcore" href="#dca_005fcore">2.4 dca_core</a></li>
|
45 |
+
<li><a id="toc-dump_005fextra" href="#dump_005fextra">2.5 dump_extra</a></li>
|
46 |
+
<li><a id="toc-dv_005ferror_005fmarker" href="#dv_005ferror_005fmarker">2.6 dv_error_marker</a></li>
|
47 |
+
<li><a id="toc-eac3_005fcore" href="#eac3_005fcore">2.7 eac3_core</a></li>
|
48 |
+
<li><a id="toc-extract_005fextradata" href="#extract_005fextradata">2.8 extract_extradata</a></li>
|
49 |
+
<li><a id="toc-filter_005funits" href="#filter_005funits">2.9 filter_units</a></li>
|
50 |
+
<li><a id="toc-hapqa_005fextract" href="#hapqa_005fextract">2.10 hapqa_extract</a></li>
|
51 |
+
<li><a id="toc-h264_005fmetadata" href="#h264_005fmetadata">2.11 h264_metadata</a></li>
|
52 |
+
<li><a id="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.12 h264_mp4toannexb</a></li>
|
53 |
+
<li><a id="toc-h264_005fredundant_005fpps" href="#h264_005fredundant_005fpps">2.13 h264_redundant_pps</a></li>
|
54 |
+
<li><a id="toc-hevc_005fmetadata" href="#hevc_005fmetadata">2.14 hevc_metadata</a></li>
|
55 |
+
<li><a id="toc-hevc_005fmp4toannexb" href="#hevc_005fmp4toannexb">2.15 hevc_mp4toannexb</a></li>
|
56 |
+
<li><a id="toc-imxdump" href="#imxdump">2.16 imxdump</a></li>
|
57 |
+
<li><a id="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.17 mjpeg2jpeg</a></li>
|
58 |
+
<li><a id="toc-mjpegadump" href="#mjpegadump">2.18 mjpegadump</a></li>
|
59 |
+
<li><a id="toc-mov2textsub-1" href="#mov2textsub-1">2.19 mov2textsub</a></li>
|
60 |
+
<li><a id="toc-mp3decomp" href="#mp3decomp">2.20 mp3decomp</a></li>
|
61 |
+
<li><a id="toc-mpeg2_005fmetadata" href="#mpeg2_005fmetadata">2.21 mpeg2_metadata</a></li>
|
62 |
+
<li><a id="toc-mpeg4_005funpack_005fbframes" href="#mpeg4_005funpack_005fbframes">2.22 mpeg4_unpack_bframes</a></li>
|
63 |
+
<li><a id="toc-noise" href="#noise">2.23 noise</a>
|
64 |
+
<ul class="toc-numbered-mark">
|
65 |
+
<li><a id="toc-Examples" href="#Examples">2.23.1 Examples</a></li>
|
66 |
+
</ul></li>
|
67 |
+
<li><a id="toc-null" href="#null">2.24 null</a></li>
|
68 |
+
<li><a id="toc-pcm_005frechunk" href="#pcm_005frechunk">2.25 pcm_rechunk</a></li>
|
69 |
+
<li><a id="toc-pgs_005fframe_005fmerge" href="#pgs_005fframe_005fmerge">2.26 pgs_frame_merge</a></li>
|
70 |
+
<li><a id="toc-prores_005fmetadata" href="#prores_005fmetadata">2.27 prores_metadata</a></li>
|
71 |
+
<li><a id="toc-remove_005fextra" href="#remove_005fextra">2.28 remove_extra</a></li>
|
72 |
+
<li><a id="toc-setts" href="#setts">2.29 setts</a></li>
|
73 |
+
<li><a id="toc-text2movsub-1" href="#text2movsub-1">2.30 text2movsub</a></li>
|
74 |
+
<li><a id="toc-trace_005fheaders" href="#trace_005fheaders">2.31 trace_headers</a></li>
|
75 |
+
<li><a id="toc-truehd_005fcore" href="#truehd_005fcore">2.32 truehd_core</a></li>
|
76 |
+
<li><a id="toc-vp9_005fmetadata" href="#vp9_005fmetadata">2.33 vp9_metadata</a></li>
|
77 |
+
<li><a id="toc-vp9_005fsuperframe" href="#vp9_005fsuperframe">2.34 vp9_superframe</a></li>
|
78 |
+
<li><a id="toc-vp9_005fsuperframe_005fsplit" href="#vp9_005fsuperframe_005fsplit">2.35 vp9_superframe_split</a></li>
|
79 |
+
<li><a id="toc-vp9_005fraw_005freorder" href="#vp9_005fraw_005freorder">2.36 vp9_raw_reorder</a></li>
|
80 |
+
</ul></li>
|
81 |
+
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
82 |
+
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
83 |
+
</ul>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
<div class="chapter-level-extent" id="Description">
|
87 |
+
<h2 class="chapter">1 Description</h2>
|
88 |
+
|
89 |
+
<p>This document describes the bitstream filters provided by the
|
90 |
+
libavcodec library.
|
91 |
+
</p>
|
92 |
+
<p>A bitstream filter operates on the encoded stream data, and performs
|
93 |
+
bitstream level modifications without performing decoding.
|
94 |
+
</p>
|
95 |
+
|
96 |
+
</div>
|
97 |
+
<div class="chapter-level-extent" id="Bitstream-Filters">
|
98 |
+
<h2 class="chapter">2 Bitstream Filters</h2>
|
99 |
+
|
100 |
+
<p>When you configure your FFmpeg build, all the supported bitstream
|
101 |
+
filters are enabled by default. You can list all available ones using
|
102 |
+
the configure option <code class="code">--list-bsfs</code>.
|
103 |
+
</p>
|
104 |
+
<p>You can disable all the bitstream filters using the configure option
|
105 |
+
<code class="code">--disable-bsfs</code>, and selectively enable any bitstream filter using
|
106 |
+
the option <code class="code">--enable-bsf=BSF</code>, or you can disable a particular
|
107 |
+
bitstream filter using the option <code class="code">--disable-bsf=BSF</code>.
|
108 |
+
</p>
|
109 |
+
<p>The option <code class="code">-bsfs</code> of the ff* tools will display the list of
|
110 |
+
all the supported bitstream filters included in your build.
|
111 |
+
</p>
|
112 |
+
<p>The ff* tools have a -bsf option applied per stream, taking a
|
113 |
+
comma-separated list of filters, whose parameters follow the filter
|
114 |
+
name after a ’=’.
|
115 |
+
</p>
|
116 |
+
<div class="example">
|
117 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
|
118 |
+
</pre></div>
|
119 |
+
|
120 |
+
<p>Below is a description of the currently available bitstream filters,
|
121 |
+
with their parameters, if any.
|
122 |
+
</p>
|
123 |
+
<ul class="mini-toc">
|
124 |
+
<li><a href="#aac_005fadtstoasc" accesskey="1">aac_adtstoasc</a></li>
|
125 |
+
<li><a href="#av1_005fmetadata" accesskey="2">av1_metadata</a></li>
|
126 |
+
<li><a href="#chomp" accesskey="3">chomp</a></li>
|
127 |
+
<li><a href="#dca_005fcore" accesskey="4">dca_core</a></li>
|
128 |
+
<li><a href="#dump_005fextra" accesskey="5">dump_extra</a></li>
|
129 |
+
<li><a href="#dv_005ferror_005fmarker" accesskey="6">dv_error_marker</a></li>
|
130 |
+
<li><a href="#eac3_005fcore" accesskey="7">eac3_core</a></li>
|
131 |
+
<li><a href="#extract_005fextradata" accesskey="8">extract_extradata</a></li>
|
132 |
+
<li><a href="#filter_005funits" accesskey="9">filter_units</a></li>
|
133 |
+
<li><a href="#hapqa_005fextract">hapqa_extract</a></li>
|
134 |
+
<li><a href="#h264_005fmetadata">h264_metadata</a></li>
|
135 |
+
<li><a href="#h264_005fmp4toannexb">h264_mp4toannexb</a></li>
|
136 |
+
<li><a href="#h264_005fredundant_005fpps">h264_redundant_pps</a></li>
|
137 |
+
<li><a href="#hevc_005fmetadata">hevc_metadata</a></li>
|
138 |
+
<li><a href="#hevc_005fmp4toannexb">hevc_mp4toannexb</a></li>
|
139 |
+
<li><a href="#imxdump">imxdump</a></li>
|
140 |
+
<li><a href="#mjpeg2jpeg">mjpeg2jpeg</a></li>
|
141 |
+
<li><a href="#mjpegadump">mjpegadump</a></li>
|
142 |
+
<li><a href="#mov2textsub-1">mov2textsub</a></li>
|
143 |
+
<li><a href="#mp3decomp">mp3decomp</a></li>
|
144 |
+
<li><a href="#mpeg2_005fmetadata">mpeg2_metadata</a></li>
|
145 |
+
<li><a href="#mpeg4_005funpack_005fbframes">mpeg4_unpack_bframes</a></li>
|
146 |
+
<li><a href="#noise">noise</a></li>
|
147 |
+
<li><a href="#null">null</a></li>
|
148 |
+
<li><a href="#pcm_005frechunk">pcm_rechunk</a></li>
|
149 |
+
<li><a href="#pgs_005fframe_005fmerge">pgs_frame_merge</a></li>
|
150 |
+
<li><a href="#prores_005fmetadata">prores_metadata</a></li>
|
151 |
+
<li><a href="#remove_005fextra">remove_extra</a></li>
|
152 |
+
<li><a href="#setts">setts</a></li>
|
153 |
+
<li><a href="#text2movsub-1">text2movsub</a></li>
|
154 |
+
<li><a href="#trace_005fheaders">trace_headers</a></li>
|
155 |
+
<li><a href="#truehd_005fcore">truehd_core</a></li>
|
156 |
+
<li><a href="#vp9_005fmetadata">vp9_metadata</a></li>
|
157 |
+
<li><a href="#vp9_005fsuperframe">vp9_superframe</a></li>
|
158 |
+
<li><a href="#vp9_005fsuperframe_005fsplit">vp9_superframe_split</a></li>
|
159 |
+
<li><a href="#vp9_005fraw_005freorder">vp9_raw_reorder</a></li>
|
160 |
+
</ul>
|
161 |
+
<div class="section-level-extent" id="aac_005fadtstoasc">
|
162 |
+
<h3 class="section">2.1 aac_adtstoasc</h3>
|
163 |
+
|
164 |
+
<p>Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
|
165 |
+
bitstream.
|
166 |
+
</p>
|
167 |
+
<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
168 |
+
ADTS header and removes the ADTS header.
|
169 |
+
</p>
|
170 |
+
<p>This filter is required for example when copying an AAC stream from a
|
171 |
+
raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
|
172 |
+
to MOV/MP4 files and related formats such as 3GP or M4A. Please note
|
173 |
+
that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
|
174 |
+
</p>
|
175 |
+
</div>
|
176 |
+
<div class="section-level-extent" id="av1_005fmetadata">
|
177 |
+
<h3 class="section">2.2 av1_metadata</h3>
|
178 |
+
|
179 |
+
<p>Modify metadata embedded in an AV1 stream.
|
180 |
+
</p>
|
181 |
+
<dl class="table">
|
182 |
+
<dt><samp class="option">td</samp></dt>
|
183 |
+
<dd><p>Insert or remove temporal delimiter OBUs in all temporal units of the
|
184 |
+
stream.
|
185 |
+
</p>
|
186 |
+
<dl class="table">
|
187 |
+
<dt>‘<samp class="samp">insert</samp>’</dt>
|
188 |
+
<dd><p>Insert a TD at the beginning of every TU which does not already have one.
|
189 |
+
</p></dd>
|
190 |
+
<dt>‘<samp class="samp">remove</samp>’</dt>
|
191 |
+
<dd><p>Remove the TD from the beginning of every TU which has one.
|
192 |
+
</p></dd>
|
193 |
+
</dl>
|
194 |
+
|
195 |
+
</dd>
|
196 |
+
<dt><samp class="option">color_primaries</samp></dt>
|
197 |
+
<dt><samp class="option">transfer_characteristics</samp></dt>
|
198 |
+
<dt><samp class="option">matrix_coefficients</samp></dt>
|
199 |
+
<dd><p>Set the color description fields in the stream (see AV1 section 6.4.2).
|
200 |
+
</p>
|
201 |
+
</dd>
|
202 |
+
<dt><samp class="option">color_range</samp></dt>
|
203 |
+
<dd><p>Set the color range in the stream (see AV1 section 6.4.2; note that
|
204 |
+
this cannot be set for streams using BT.709 primaries, sRGB transfer
|
205 |
+
characteristic and identity (RGB) matrix coefficients).
|
206 |
+
</p><dl class="table">
|
207 |
+
<dt>‘<samp class="samp">tv</samp>’</dt>
|
208 |
+
<dd><p>Limited range.
|
209 |
+
</p></dd>
|
210 |
+
<dt>‘<samp class="samp">pc</samp>’</dt>
|
211 |
+
<dd><p>Full range.
|
212 |
+
</p></dd>
|
213 |
+
</dl>
|
214 |
+
|
215 |
+
</dd>
|
216 |
+
<dt><samp class="option">chroma_sample_position</samp></dt>
|
217 |
+
<dd><p>Set the chroma sample location in the stream (see AV1 section 6.4.2).
|
218 |
+
This can only be set for 4:2:0 streams.
|
219 |
+
</p>
|
220 |
+
<dl class="table">
|
221 |
+
<dt>‘<samp class="samp">vertical</samp>’</dt>
|
222 |
+
<dd><p>Left position (matching the default in MPEG-2 and H.264).
|
223 |
+
</p></dd>
|
224 |
+
<dt>‘<samp class="samp">colocated</samp>’</dt>
|
225 |
+
<dd><p>Top-left position.
|
226 |
+
</p></dd>
|
227 |
+
</dl>
|
228 |
+
|
229 |
+
</dd>
|
230 |
+
<dt><samp class="option">tick_rate</samp></dt>
|
231 |
+
<dd><p>Set the tick rate (<em class="emph">time_scale / num_units_in_display_tick</em>) in
|
232 |
+
the timing info in the sequence header.
|
233 |
+
</p></dd>
|
234 |
+
<dt><samp class="option">num_ticks_per_picture</samp></dt>
|
235 |
+
<dd><p>Set the number of ticks in each picture, to indicate that the stream
|
236 |
+
has a fixed framerate. Ignored if <samp class="option">tick_rate</samp> is not also set.
|
237 |
+
</p>
|
238 |
+
</dd>
|
239 |
+
<dt><samp class="option">delete_padding</samp></dt>
|
240 |
+
<dd><p>Deletes Padding OBUs.
|
241 |
+
</p>
|
242 |
+
</dd>
|
243 |
+
</dl>
|
244 |
+
|
245 |
+
</div>
|
246 |
+
<div class="section-level-extent" id="chomp">
|
247 |
+
<h3 class="section">2.3 chomp</h3>
|
248 |
+
|
249 |
+
<p>Remove zero padding at the end of a packet.
|
250 |
+
</p>
|
251 |
+
</div>
|
252 |
+
<div class="section-level-extent" id="dca_005fcore">
|
253 |
+
<h3 class="section">2.4 dca_core</h3>
|
254 |
+
|
255 |
+
<p>Extract the core from a DCA/DTS stream, dropping extensions such as
|
256 |
+
DTS-HD.
|
257 |
+
</p>
|
258 |
+
</div>
|
259 |
+
<div class="section-level-extent" id="dump_005fextra">
|
260 |
+
<h3 class="section">2.5 dump_extra</h3>
|
261 |
+
|
262 |
+
<p>Add extradata to the beginning of the filtered packets except when
|
263 |
+
said packets already exactly begin with the extradata that is intended
|
264 |
+
to be added.
|
265 |
+
</p>
|
266 |
+
<dl class="table">
|
267 |
+
<dt><samp class="option">freq</samp></dt>
|
268 |
+
<dd><p>The additional argument specifies which packets should be filtered.
|
269 |
+
It accepts the values:
|
270 |
+
</p><dl class="table">
|
271 |
+
<dt>‘<samp class="samp">k</samp>’</dt>
|
272 |
+
<dt>‘<samp class="samp">keyframe</samp>’</dt>
|
273 |
+
<dd><p>add extradata to all key packets
|
274 |
+
</p>
|
275 |
+
</dd>
|
276 |
+
<dt>‘<samp class="samp">e</samp>’</dt>
|
277 |
+
<dt>‘<samp class="samp">all</samp>’</dt>
|
278 |
+
<dd><p>add extradata to all packets
|
279 |
+
</p></dd>
|
280 |
+
</dl>
|
281 |
+
</dd>
|
282 |
+
</dl>
|
283 |
+
|
284 |
+
<p>If not specified it is assumed ‘<samp class="samp">k</samp>’.
|
285 |
+
</p>
|
286 |
+
<p>For example the following <code class="command">ffmpeg</code> command forces a global
|
287 |
+
header (thus disabling individual packet headers) in the H.264 packets
|
288 |
+
generated by the <code class="code">libx264</code> encoder, but corrects them by adding
|
289 |
+
the header stored in extradata to the key packets:
|
290 |
+
</p><div class="example">
|
291 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
292 |
+
</pre></div>
|
293 |
+
|
294 |
+
</div>
|
295 |
+
<div class="section-level-extent" id="dv_005ferror_005fmarker">
|
296 |
+
<h3 class="section">2.6 dv_error_marker</h3>
|
297 |
+
|
298 |
+
<p>Blocks in DV which are marked as damaged are replaced by blocks of the specified color.
|
299 |
+
</p>
|
300 |
+
<dl class="table">
|
301 |
+
<dt><samp class="option">color</samp></dt>
|
302 |
+
<dd><p>The color to replace damaged blocks by
|
303 |
+
</p></dd>
|
304 |
+
<dt><samp class="option">sta</samp></dt>
|
305 |
+
<dd><p>A 16 bit mask which specifies which of the 16 possible error status values are
|
306 |
+
to be replaced by colored blocks. 0xFFFE is the default which replaces all non 0
|
307 |
+
error status values.
|
308 |
+
</p><dl class="table">
|
309 |
+
<dt>‘<samp class="samp">ok</samp>’</dt>
|
310 |
+
<dd><p>No error, no concealment
|
311 |
+
</p></dd>
|
312 |
+
<dt>‘<samp class="samp">err</samp>’</dt>
|
313 |
+
<dd><p>Error, No concealment
|
314 |
+
</p></dd>
|
315 |
+
<dt>‘<samp class="samp">res</samp>’</dt>
|
316 |
+
<dd><p>Reserved
|
317 |
+
</p></dd>
|
318 |
+
<dt>‘<samp class="samp">notok</samp>’</dt>
|
319 |
+
<dd><p>Error or concealment
|
320 |
+
</p></dd>
|
321 |
+
<dt>‘<samp class="samp">notres</samp>’</dt>
|
322 |
+
<dd><p>Not reserved
|
323 |
+
</p></dd>
|
324 |
+
<dt>‘<samp class="samp">Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru</samp>’</dt>
|
325 |
+
<dd><p>The specific error status code
|
326 |
+
</p></dd>
|
327 |
+
</dl>
|
328 |
+
<p>see page 44-46 or section 5.5 of
|
329 |
+
<a class="url" href="http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf">http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf</a>
|
330 |
+
</p>
|
331 |
+
</dd>
|
332 |
+
</dl>
|
333 |
+
|
334 |
+
</div>
|
335 |
+
<div class="section-level-extent" id="eac3_005fcore">
|
336 |
+
<h3 class="section">2.7 eac3_core</h3>
|
337 |
+
|
338 |
+
<p>Extract the core from a E-AC-3 stream, dropping extra channels.
|
339 |
+
</p>
|
340 |
+
</div>
|
341 |
+
<div class="section-level-extent" id="extract_005fextradata">
|
342 |
+
<h3 class="section">2.8 extract_extradata</h3>
|
343 |
+
|
344 |
+
<p>Extract the in-band extradata.
|
345 |
+
</p>
|
346 |
+
<p>Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
|
347 |
+
or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
|
348 |
+
of the bitstream containing the coded frames) or "out of band" (e.g. on the
|
349 |
+
container level). This latter form is called "extradata" in FFmpeg terminology.
|
350 |
+
</p>
|
351 |
+
<p>This bitstream filter detects the in-band headers and makes them available as
|
352 |
+
extradata.
|
353 |
+
</p>
|
354 |
+
<dl class="table">
|
355 |
+
<dt><samp class="option">remove</samp></dt>
|
356 |
+
<dd><p>When this option is enabled, the long-term headers are removed from the
|
357 |
+
bitstream after extraction.
|
358 |
+
</p></dd>
|
359 |
+
</dl>
|
360 |
+
|
361 |
+
</div>
|
362 |
+
<div class="section-level-extent" id="filter_005funits">
|
363 |
+
<h3 class="section">2.9 filter_units</h3>
|
364 |
+
|
365 |
+
<p>Remove units with types in or not in a given set from the stream.
|
366 |
+
</p>
|
367 |
+
<dl class="table">
|
368 |
+
<dt><samp class="option">pass_types</samp></dt>
|
369 |
+
<dd><p>List of unit types or ranges of unit types to pass through while removing
|
370 |
+
all others. This is specified as a ’|’-separated list of unit type values
|
371 |
+
or ranges of values with ’-’.
|
372 |
+
</p>
|
373 |
+
</dd>
|
374 |
+
<dt><samp class="option">remove_types</samp></dt>
|
375 |
+
<dd><p>Identical to <samp class="option">pass_types</samp>, except the units in the given set
|
376 |
+
removed and all others passed through.
|
377 |
+
</p></dd>
|
378 |
+
</dl>
|
379 |
+
|
380 |
+
<p>Extradata is unchanged by this transformation, but note that if the stream
|
381 |
+
contains inline parameter sets then the output may be unusable if they are
|
382 |
+
removed.
|
383 |
+
</p>
|
384 |
+
<p>For example, to remove all non-VCL NAL units from an H.264 stream:
|
385 |
+
</p><div class="example">
|
386 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
|
387 |
+
</pre></div>
|
388 |
+
|
389 |
+
<p>To remove all AUDs, SEI and filler from an H.265 stream:
|
390 |
+
</p><div class="example">
|
391 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
|
392 |
+
</pre></div>
|
393 |
+
|
394 |
+
</div>
|
395 |
+
<div class="section-level-extent" id="hapqa_005fextract">
|
396 |
+
<h3 class="section">2.10 hapqa_extract</h3>
|
397 |
+
|
398 |
+
<p>Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
|
399 |
+
</p>
|
400 |
+
<dl class="table">
|
401 |
+
<dt><samp class="option">texture</samp></dt>
|
402 |
+
<dd><p>Specifies the texture to keep.
|
403 |
+
</p>
|
404 |
+
<dl class="table">
|
405 |
+
<dt><samp class="option">color</samp></dt>
|
406 |
+
<dt><samp class="option">alpha</samp></dt>
|
407 |
+
</dl>
|
408 |
+
|
409 |
+
</dd>
|
410 |
+
</dl>
|
411 |
+
|
412 |
+
<p>Convert HAPQA to HAPQ
|
413 |
+
</p><div class="example">
|
414 |
+
<pre class="example-preformatted">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
|
415 |
+
</pre></div>
|
416 |
+
|
417 |
+
<p>Convert HAPQA to HAPAlphaOnly
|
418 |
+
</p><div class="example">
|
419 |
+
<pre class="example-preformatted">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
|
420 |
+
</pre></div>
|
421 |
+
|
422 |
+
</div>
|
423 |
+
<div class="section-level-extent" id="h264_005fmetadata">
|
424 |
+
<h3 class="section">2.11 h264_metadata</h3>
|
425 |
+
|
426 |
+
<p>Modify metadata embedded in an H.264 stream.
|
427 |
+
</p>
|
428 |
+
<dl class="table">
|
429 |
+
<dt><samp class="option">aud</samp></dt>
|
430 |
+
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
431 |
+
</p>
|
432 |
+
<dl class="table">
|
433 |
+
<dt>‘<samp class="samp">pass</samp>’</dt>
|
434 |
+
<dt>‘<samp class="samp">insert</samp>’</dt>
|
435 |
+
<dt>‘<samp class="samp">remove</samp>’</dt>
|
436 |
+
</dl>
|
437 |
+
|
438 |
+
<p>Default is pass.
|
439 |
+
</p>
|
440 |
+
</dd>
|
441 |
+
<dt><samp class="option">sample_aspect_ratio</samp></dt>
|
442 |
+
<dd><p>Set the sample aspect ratio of the stream in the VUI parameters.
|
443 |
+
See H.264 table E-1.
|
444 |
+
</p>
|
445 |
+
</dd>
|
446 |
+
<dt><samp class="option">overscan_appropriate_flag</samp></dt>
|
447 |
+
<dd><p>Set whether the stream is suitable for display using overscan
|
448 |
+
or not (see H.264 section E.2.1).
|
449 |
+
</p>
|
450 |
+
</dd>
|
451 |
+
<dt><samp class="option">video_format</samp></dt>
|
452 |
+
<dt><samp class="option">video_full_range_flag</samp></dt>
|
453 |
+
<dd><p>Set the video format in the stream (see H.264 section E.2.1 and
|
454 |
+
table E-2).
|
455 |
+
</p>
|
456 |
+
</dd>
|
457 |
+
<dt><samp class="option">colour_primaries</samp></dt>
|
458 |
+
<dt><samp class="option">transfer_characteristics</samp></dt>
|
459 |
+
<dt><samp class="option">matrix_coefficients</samp></dt>
|
460 |
+
<dd><p>Set the colour description in the stream (see H.264 section E.2.1
|
461 |
+
and tables E-3, E-4 and E-5).
|
462 |
+
</p>
|
463 |
+
</dd>
|
464 |
+
<dt><samp class="option">chroma_sample_loc_type</samp></dt>
|
465 |
+
<dd><p>Set the chroma sample location in the stream (see H.264 section
|
466 |
+
E.2.1 and figure E-1).
|
467 |
+
</p>
|
468 |
+
</dd>
|
469 |
+
<dt><samp class="option">tick_rate</samp></dt>
|
470 |
+
<dd><p>Set the tick rate (time_scale / num_units_in_tick) in the VUI
|
471 |
+
parameters. This is the smallest time unit representable in the
|
472 |
+
stream, and in many cases represents the field rate of the stream
|
473 |
+
(double the frame rate).
|
474 |
+
</p></dd>
|
475 |
+
<dt><samp class="option">fixed_frame_rate_flag</samp></dt>
|
476 |
+
<dd><p>Set whether the stream has fixed framerate - typically this indicates
|
477 |
+
that the framerate is exactly half the tick rate, but the exact
|
478 |
+
meaning is dependent on interlacing and the picture structure (see
|
479 |
+
H.264 section E.2.1 and table E-6).
|
480 |
+
</p></dd>
|
481 |
+
<dt><samp class="option">zero_new_constraint_set_flags</samp></dt>
|
482 |
+
<dd><p>Zero constraint_set4_flag and constraint_set5_flag in the SPS. These
|
483 |
+
bits were reserved in a previous version of the H.264 spec, and thus
|
484 |
+
some hardware decoders require these to be zero. The result of zeroing
|
485 |
+
this is still a valid bitstream.
|
486 |
+
</p>
|
487 |
+
</dd>
|
488 |
+
<dt><samp class="option">crop_left</samp></dt>
|
489 |
+
<dt><samp class="option">crop_right</samp></dt>
|
490 |
+
<dt><samp class="option">crop_top</samp></dt>
|
491 |
+
<dt><samp class="option">crop_bottom</samp></dt>
|
492 |
+
<dd><p>Set the frame cropping offsets in the SPS. These values will replace
|
493 |
+
the current ones if the stream is already cropped.
|
494 |
+
</p>
|
495 |
+
<p>These fields are set in pixels. Note that some sizes may not be
|
496 |
+
representable if the chroma is subsampled or the stream is interlaced
|
497 |
+
(see H.264 section 7.4.2.1.1).
|
498 |
+
</p>
|
499 |
+
</dd>
|
500 |
+
<dt><samp class="option">sei_user_data</samp></dt>
|
501 |
+
<dd><p>Insert a string as SEI unregistered user data. The argument must
|
502 |
+
be of the form <em class="emph">UUID+string</em>, where the UUID is as hex digits
|
503 |
+
possibly separated by hyphens, and the string can be anything.
|
504 |
+
</p>
|
505 |
+
<p>For example, ‘<samp class="samp">086f3693-b7b3-4f2c-9653-21492feee5b8+hello</samp>’ will
|
506 |
+
insert the string “hello” associated with the given UUID.
|
507 |
+
</p>
|
508 |
+
</dd>
|
509 |
+
<dt><samp class="option">delete_filler</samp></dt>
|
510 |
+
<dd><p>Deletes both filler NAL units and filler SEI messages.
|
511 |
+
</p>
|
512 |
+
</dd>
|
513 |
+
<dt><samp class="option">display_orientation</samp></dt>
|
514 |
+
<dd><p>Insert, extract or remove Display orientation SEI messages.
|
515 |
+
See H.264 section D.1.27 and D.2.27 for syntax and semantics.
|
516 |
+
</p>
|
517 |
+
<dl class="table">
|
518 |
+
<dt>‘<samp class="samp">pass</samp>’</dt>
|
519 |
+
<dt>‘<samp class="samp">insert</samp>’</dt>
|
520 |
+
<dt>‘<samp class="samp">remove</samp>’</dt>
|
521 |
+
<dt>‘<samp class="samp">extract</samp>’</dt>
|
522 |
+
</dl>
|
523 |
+
|
524 |
+
<p>Default is pass.
|
525 |
+
</p>
|
526 |
+
<p>Insert mode works in conjunction with <code class="code">rotate</code> and <code class="code">flip</code> options.
|
527 |
+
Any pre-existing Display orientation messages will be removed in insert or remove mode.
|
528 |
+
Extract mode attaches the display matrix to the packet as side data.
|
529 |
+
</p>
|
530 |
+
</dd>
|
531 |
+
<dt><samp class="option">rotate</samp></dt>
|
532 |
+
<dd><p>Set rotation in display orientation SEI (anticlockwise angle in degrees).
|
533 |
+
Range is -360 to +360. Default is NaN.
|
534 |
+
</p>
|
535 |
+
</dd>
|
536 |
+
<dt><samp class="option">flip</samp></dt>
|
537 |
+
<dd><p>Set flip in display orientation SEI.
|
538 |
+
</p>
|
539 |
+
<dl class="table">
|
540 |
+
<dt>‘<samp class="samp">horizontal</samp>’</dt>
|
541 |
+
<dt>‘<samp class="samp">vertical</samp>’</dt>
|
542 |
+
</dl>
|
543 |
+
|
544 |
+
<p>Default is unset.
|
545 |
+
</p>
|
546 |
+
</dd>
|
547 |
+
<dt><samp class="option">level</samp></dt>
|
548 |
+
<dd><p>Set the level in the SPS. Refer to H.264 section A.3 and tables A-1
|
549 |
+
to A-5.
|
550 |
+
</p>
|
551 |
+
<p>The argument must be the name of a level (for example, ‘<samp class="samp">4.2</samp>’), a
|
552 |
+
level_idc value (for example, ‘<samp class="samp">42</samp>’), or the special name ‘<samp class="samp">auto</samp>’
|
553 |
+
indicating that the filter should attempt to guess the level from the
|
554 |
+
input stream properties.
|
555 |
+
</p>
|
556 |
+
</dd>
|
557 |
+
</dl>
|
558 |
+
|
559 |
+
</div>
|
560 |
+
<div class="section-level-extent" id="h264_005fmp4toannexb">
|
561 |
+
<h3 class="section">2.12 h264_mp4toannexb</h3>
|
562 |
+
|
563 |
+
<p>Convert an H.264 bitstream from length prefixed mode to start code
|
564 |
+
prefixed mode (as defined in the Annex B of the ITU-T H.264
|
565 |
+
specification).
|
566 |
+
</p>
|
567 |
+
<p>This is required by some streaming formats, typically the MPEG-2
|
568 |
+
transport stream format (muxer <code class="code">mpegts</code>).
|
569 |
+
</p>
|
570 |
+
<p>For example to remux an MP4 file containing an H.264 stream to mpegts
|
571 |
+
format with <code class="command">ffmpeg</code>, you can use the command:
|
572 |
+
</p>
|
573 |
+
<div class="example">
|
574 |
+
<pre class="example-preformatted">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
575 |
+
</pre></div>
|
576 |
+
|
577 |
+
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
578 |
+
<code class="code">mpegts</code>) and raw H.264 (muxer <code class="code">h264</code>) output formats.
|
579 |
+
</p>
|
580 |
+
</div>
|
581 |
+
<div class="section-level-extent" id="h264_005fredundant_005fpps">
|
582 |
+
<h3 class="section">2.13 h264_redundant_pps</h3>
|
583 |
+
|
584 |
+
<p>This applies a specific fixup to some Blu-ray streams which contain
|
585 |
+
redundant PPSs modifying irrelevant parameters of the stream which
|
586 |
+
confuse other transformations which require correct extradata.
|
587 |
+
</p>
|
588 |
+
</div>
|
589 |
+
<div class="section-level-extent" id="hevc_005fmetadata">
|
590 |
+
<h3 class="section">2.14 hevc_metadata</h3>
|
591 |
+
|
592 |
+
<p>Modify metadata embedded in an HEVC stream.
|
593 |
+
</p>
|
594 |
+
<dl class="table">
|
595 |
+
<dt><samp class="option">aud</samp></dt>
|
596 |
+
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
597 |
+
</p>
|
598 |
+
<dl class="table">
|
599 |
+
<dt>‘<samp class="samp">insert</samp>’</dt>
|
600 |
+
<dt>‘<samp class="samp">remove</samp>’</dt>
|
601 |
+
</dl>
|
602 |
+
|
603 |
+
</dd>
|
604 |
+
<dt><samp class="option">sample_aspect_ratio</samp></dt>
|
605 |
+
<dd><p>Set the sample aspect ratio in the stream in the VUI parameters.
|
606 |
+
</p>
|
607 |
+
</dd>
|
608 |
+
<dt><samp class="option">video_format</samp></dt>
|
609 |
+
<dt><samp class="option">video_full_range_flag</samp></dt>
|
610 |
+
<dd><p>Set the video format in the stream (see H.265 section E.3.1 and
|
611 |
+
table E.2).
|
612 |
+
</p>
|
613 |
+
</dd>
|
614 |
+
<dt><samp class="option">colour_primaries</samp></dt>
|
615 |
+
<dt><samp class="option">transfer_characteristics</samp></dt>
|
616 |
+
<dt><samp class="option">matrix_coefficients</samp></dt>
|
617 |
+
<dd><p>Set the colour description in the stream (see H.265 section E.3.1
|
618 |
+
and tables E.3, E.4 and E.5).
|
619 |
+
</p>
|
620 |
+
</dd>
|
621 |
+
<dt><samp class="option">chroma_sample_loc_type</samp></dt>
|
622 |
+
<dd><p>Set the chroma sample location in the stream (see H.265 section
|
623 |
+
E.3.1 and figure E.1).
|
624 |
+
</p>
|
625 |
+
</dd>
|
626 |
+
<dt><samp class="option">tick_rate</samp></dt>
|
627 |
+
<dd><p>Set the tick rate in the VPS and VUI parameters (time_scale /
|
628 |
+
num_units_in_tick). Combined with <samp class="option">num_ticks_poc_diff_one</samp>, this can
|
629 |
+
set a constant framerate in the stream. Note that it is likely to be
|
630 |
+
overridden by container parameters when the stream is in a container.
|
631 |
+
</p>
|
632 |
+
</dd>
|
633 |
+
<dt><samp class="option">num_ticks_poc_diff_one</samp></dt>
|
634 |
+
<dd><p>Set poc_proportional_to_timing_flag in VPS and VUI and use this value
|
635 |
+
to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
|
636 |
+
E.3.1). Ignored if <samp class="option">tick_rate</samp> is not also set.
|
637 |
+
</p>
|
638 |
+
</dd>
|
639 |
+
<dt><samp class="option">crop_left</samp></dt>
|
640 |
+
<dt><samp class="option">crop_right</samp></dt>
|
641 |
+
<dt><samp class="option">crop_top</samp></dt>
|
642 |
+
<dt><samp class="option">crop_bottom</samp></dt>
|
643 |
+
<dd><p>Set the conformance window cropping offsets in the SPS. These values
|
644 |
+
will replace the current ones if the stream is already cropped.
|
645 |
+
</p>
|
646 |
+
<p>These fields are set in pixels. Note that some sizes may not be
|
647 |
+
representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
|
648 |
+
</p>
|
649 |
+
</dd>
|
650 |
+
<dt><samp class="option">level</samp></dt>
|
651 |
+
<dd><p>Set the level in the VPS and SPS. See H.265 section A.4 and tables
|
652 |
+
A.6 and A.7.
|
653 |
+
</p>
|
654 |
+
<p>The argument must be the name of a level (for example, ‘<samp class="samp">5.1</samp>’), a
|
655 |
+
<em class="emph">general_level_idc</em> value (for example, ‘<samp class="samp">153</samp>’ for level 5.1),
|
656 |
+
or the special name ‘<samp class="samp">auto</samp>’ indicating that the filter should
|
657 |
+
attempt to guess the level from the input stream properties.
|
658 |
+
</p>
|
659 |
+
</dd>
|
660 |
+
</dl>
|
661 |
+
|
662 |
+
</div>
|
663 |
+
<div class="section-level-extent" id="hevc_005fmp4toannexb">
|
664 |
+
<h3 class="section">2.15 hevc_mp4toannexb</h3>
|
665 |
+
|
666 |
+
<p>Convert an HEVC/H.265 bitstream from length prefixed mode to start code
|
667 |
+
prefixed mode (as defined in the Annex B of the ITU-T H.265
|
668 |
+
specification).
|
669 |
+
</p>
|
670 |
+
<p>This is required by some streaming formats, typically the MPEG-2
|
671 |
+
transport stream format (muxer <code class="code">mpegts</code>).
|
672 |
+
</p>
|
673 |
+
<p>For example to remux an MP4 file containing an HEVC stream to mpegts
|
674 |
+
format with <code class="command">ffmpeg</code>, you can use the command:
|
675 |
+
</p>
|
676 |
+
<div class="example">
|
677 |
+
<pre class="example-preformatted">ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
|
678 |
+
</pre></div>
|
679 |
+
|
680 |
+
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
681 |
+
<code class="code">mpegts</code>) and raw HEVC/H.265 (muxer <code class="code">h265</code> or
|
682 |
+
<code class="code">hevc</code>) output formats.
|
683 |
+
</p>
|
684 |
+
</div>
|
685 |
+
<div class="section-level-extent" id="imxdump">
|
686 |
+
<h3 class="section">2.16 imxdump</h3>
|
687 |
+
|
688 |
+
<p>Modifies the bitstream to fit in MOV and to be usable by the Final Cut
|
689 |
+
Pro decoder. This filter only applies to the mpeg2video codec, and is
|
690 |
+
likely not needed for Final Cut Pro 7 and newer with the appropriate
|
691 |
+
<samp class="option">-tag:v</samp>.
|
692 |
+
</p>
|
693 |
+
<p>For example, to remux 30 MB/sec NTSC IMX to MOV:
|
694 |
+
</p>
|
695 |
+
<div class="example">
|
696 |
+
<pre class="example-preformatted">ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
|
697 |
+
</pre></div>
|
698 |
+
|
699 |
+
</div>
|
700 |
+
<div class="section-level-extent" id="mjpeg2jpeg">
|
701 |
+
<h3 class="section">2.17 mjpeg2jpeg</h3>
|
702 |
+
|
703 |
+
<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
|
704 |
+
</p>
|
705 |
+
<p>MJPEG is a video codec wherein each video frame is essentially a
|
706 |
+
JPEG image. The individual frames can be extracted without loss,
|
707 |
+
e.g. by
|
708 |
+
</p>
|
709 |
+
<div class="example">
|
710 |
+
<pre class="example-preformatted">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
711 |
+
</pre></div>
|
712 |
+
|
713 |
+
<p>Unfortunately, these chunks are incomplete JPEG images, because
|
714 |
+
they lack the DHT segment required for decoding. Quoting from
|
715 |
+
<a class="url" href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
|
716 |
+
</p>
|
717 |
+
<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
|
718 |
+
commented that "MJPEG, or at least the MJPEG in AVIs having the
|
719 |
+
MJPG fourcc, is restricted JPEG with a fixed – and *omitted* –
|
720 |
+
Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
|
721 |
+
and it must use basic Huffman encoding, not arithmetic or
|
722 |
+
progressive. . . . You can indeed extract the MJPEG frames and
|
723 |
+
decode them with a regular JPEG decoder, but you have to prepend
|
724 |
+
the DHT segment to them, or else the decoder won’t have any idea
|
725 |
+
how to decompress the data. The exact table necessary is given in
|
726 |
+
the OpenDML spec."
|
727 |
+
</p>
|
728 |
+
<p>This bitstream filter patches the header of frames extracted from an MJPEG
|
729 |
+
stream (carrying the AVI1 header ID and lacking a DHT segment) to
|
730 |
+
produce fully qualified JPEG images.
|
731 |
+
</p>
|
732 |
+
<div class="example">
|
733 |
+
<pre class="example-preformatted">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
|
734 |
+
exiftran -i -9 frame*.jpg
|
735 |
+
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
|
736 |
+
</pre></div>
|
737 |
+
|
738 |
+
</div>
|
739 |
+
<div class="section-level-extent" id="mjpegadump">
|
740 |
+
<h3 class="section">2.18 mjpegadump</h3>
|
741 |
+
|
742 |
+
<p>Add an MJPEG A header to the bitstream, to enable decoding by
|
743 |
+
Quicktime.
|
744 |
+
</p>
|
745 |
+
<a class="anchor" id="mov2textsub"></a></div>
|
746 |
+
<div class="section-level-extent" id="mov2textsub-1">
|
747 |
+
<h3 class="section">2.19 mov2textsub</h3>
|
748 |
+
|
749 |
+
<p>Extract a representable text file from MOV subtitles, stripping the
|
750 |
+
metadata header from each subtitle packet.
|
751 |
+
</p>
|
752 |
+
<p>See also the <a class="ref" href="#text2movsub">text2movsub</a> filter.
|
753 |
+
</p>
|
754 |
+
</div>
|
755 |
+
<div class="section-level-extent" id="mp3decomp">
|
756 |
+
<h3 class="section">2.20 mp3decomp</h3>
|
757 |
+
|
758 |
+
<p>Decompress non-standard compressed MP3 audio headers.
|
759 |
+
</p>
|
760 |
+
</div>
|
761 |
+
<div class="section-level-extent" id="mpeg2_005fmetadata">
|
762 |
+
<h3 class="section">2.21 mpeg2_metadata</h3>
|
763 |
+
|
764 |
+
<p>Modify metadata embedded in an MPEG-2 stream.
|
765 |
+
</p>
|
766 |
+
<dl class="table">
|
767 |
+
<dt><samp class="option">display_aspect_ratio</samp></dt>
|
768 |
+
<dd><p>Set the display aspect ratio in the stream.
|
769 |
+
</p>
|
770 |
+
<p>The following fixed values are supported:
|
771 |
+
</p><dl class="table">
|
772 |
+
<dt><samp class="option">4/3</samp></dt>
|
773 |
+
<dt><samp class="option">16/9</samp></dt>
|
774 |
+
<dt><samp class="option">221/100</samp></dt>
|
775 |
+
</dl>
|
776 |
+
<p>Any other value will result in square pixels being signalled instead
|
777 |
+
(see H.262 section 6.3.3 and table 6-3).
|
778 |
+
</p>
|
779 |
+
</dd>
|
780 |
+
<dt><samp class="option">frame_rate</samp></dt>
|
781 |
+
<dd><p>Set the frame rate in the stream. This is constructed from a table
|
782 |
+
of known values combined with a small multiplier and divisor - if
|
783 |
+
the supplied value is not exactly representable, the nearest
|
784 |
+
representable value will be used instead (see H.262 section 6.3.3
|
785 |
+
and table 6-4).
|
786 |
+
</p>
|
787 |
+
</dd>
|
788 |
+
<dt><samp class="option">video_format</samp></dt>
|
789 |
+
<dd><p>Set the video format in the stream (see H.262 section 6.3.6 and
|
790 |
+
table 6-6).
|
791 |
+
</p>
|
792 |
+
</dd>
|
793 |
+
<dt><samp class="option">colour_primaries</samp></dt>
|
794 |
+
<dt><samp class="option">transfer_characteristics</samp></dt>
|
795 |
+
<dt><samp class="option">matrix_coefficients</samp></dt>
|
796 |
+
<dd><p>Set the colour description in the stream (see H.262 section 6.3.6
|
797 |
+
and tables 6-7, 6-8 and 6-9).
|
798 |
+
</p>
|
799 |
+
</dd>
|
800 |
+
</dl>
|
801 |
+
|
802 |
+
</div>
|
803 |
+
<div class="section-level-extent" id="mpeg4_005funpack_005fbframes">
|
804 |
+
<h3 class="section">2.22 mpeg4_unpack_bframes</h3>
|
805 |
+
|
806 |
+
<p>Unpack DivX-style packed B-frames.
|
807 |
+
</p>
|
808 |
+
<p>DivX-style packed B-frames are not valid MPEG-4 and were only a
|
809 |
+
workaround for the broken Video for Windows subsystem.
|
810 |
+
They use more space, can cause minor AV sync issues, require more
|
811 |
+
CPU power to decode (unless the player has some decoded picture queue
|
812 |
+
to compensate the 2,0,2,0 frame per packet style) and cause
|
813 |
+
trouble if copied into a standard container like mp4 or mpeg-ps/ts,
|
814 |
+
because MPEG-4 decoders may not be able to decode them, since they are
|
815 |
+
not valid MPEG-4.
|
816 |
+
</p>
|
817 |
+
<p>For example to fix an AVI file containing an MPEG-4 stream with
|
818 |
+
DivX-style packed B-frames using <code class="command">ffmpeg</code>, you can use the command:
|
819 |
+
</p>
|
820 |
+
<div class="example">
|
821 |
+
<pre class="example-preformatted">ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
|
822 |
+
</pre></div>
|
823 |
+
|
824 |
+
</div>
|
825 |
+
<div class="section-level-extent" id="noise">
|
826 |
+
<h3 class="section">2.23 noise</h3>
|
827 |
+
|
828 |
+
<p>Damages the contents of packets or simply drops them without damaging the
|
829 |
+
container. Can be used for fuzzing or testing error resilience/concealment.
|
830 |
+
</p>
|
831 |
+
<p>Parameters:
|
832 |
+
</p><dl class="table">
|
833 |
+
<dt><samp class="option">amount</samp></dt>
|
834 |
+
<dd><p>Accepts an expression whose evaluation per-packet determines how often bytes in that
|
835 |
+
packet will be modified. A value below 0 will result in a variable frequency.
|
836 |
+
Default is 0 which results in no modification. However, if neither amount nor drop is specified,
|
837 |
+
amount will be set to <var class="var">-1</var>. See below for accepted variables.
|
838 |
+
</p></dd>
|
839 |
+
<dt><samp class="option">drop</samp></dt>
|
840 |
+
<dd><p>Accepts an expression evaluated per-packet whose value determines whether that packet is dropped.
|
841 |
+
Evaluation to a positive value results in the packet being dropped. Evaluation to a negative
|
842 |
+
value results in a variable chance of it being dropped, roughly inverse in proportion to the magnitude
|
843 |
+
of the value. Default is 0 which results in no drops. See below for accepted variables.
|
844 |
+
</p></dd>
|
845 |
+
<dt><samp class="option">dropamount</samp></dt>
|
846 |
+
<dd><p>Accepts a non-negative integer, which assigns a variable chance of it being dropped, roughly inverse
|
847 |
+
in proportion to the value. Default is 0 which results in no drops. This option is kept for backwards
|
848 |
+
compatibility and is equivalent to setting drop to a negative value with the same magnitude
|
849 |
+
i.e. <code class="code">dropamount=4</code> is the same as <code class="code">drop=-4</code>. Ignored if drop is also specified.
|
850 |
+
</p></dd>
|
851 |
+
</dl>
|
852 |
+
|
853 |
+
<p>Both <code class="code">amount</code> and <code class="code">drop</code> accept expressions containing the following variables:
|
854 |
+
</p>
|
855 |
+
<dl class="table">
|
856 |
+
<dt>‘<samp class="samp">n</samp>’</dt>
|
857 |
+
<dd><p>The index of the packet, starting from zero.
|
858 |
+
</p></dd>
|
859 |
+
<dt>‘<samp class="samp">tb</samp>’</dt>
|
860 |
+
<dd><p>The timebase for packet timestamps.
|
861 |
+
</p></dd>
|
862 |
+
<dt>‘<samp class="samp">pts</samp>’</dt>
|
863 |
+
<dd><p>Packet presentation timestamp.
|
864 |
+
</p></dd>
|
865 |
+
<dt>‘<samp class="samp">dts</samp>’</dt>
|
866 |
+
<dd><p>Packet decoding timestamp.
|
867 |
+
</p></dd>
|
868 |
+
<dt>‘<samp class="samp">nopts</samp>’</dt>
|
869 |
+
<dd><p>Constant representing AV_NOPTS_VALUE.
|
870 |
+
</p></dd>
|
871 |
+
<dt>‘<samp class="samp">startpts</samp>’</dt>
|
872 |
+
<dd><p>First non-AV_NOPTS_VALUE PTS seen in the stream.
|
873 |
+
</p></dd>
|
874 |
+
<dt>‘<samp class="samp">startdts</samp>’</dt>
|
875 |
+
<dd><p>First non-AV_NOPTS_VALUE DTS seen in the stream.
|
876 |
+
</p></dd>
|
877 |
+
<dt>‘<samp class="samp">duration</samp>’</dt>
|
878 |
+
<dt>‘<samp class="samp">d</samp>’</dt>
|
879 |
+
<dd><p>Packet duration, in timebase units.
|
880 |
+
</p></dd>
|
881 |
+
<dt>‘<samp class="samp">pos</samp>’</dt>
|
882 |
+
<dd><p>Packet position in input; may be -1 when unknown or not set.
|
883 |
+
</p></dd>
|
884 |
+
<dt>‘<samp class="samp">size</samp>’</dt>
|
885 |
+
<dd><p>Packet size, in bytes.
|
886 |
+
</p></dd>
|
887 |
+
<dt>‘<samp class="samp">key</samp>’</dt>
|
888 |
+
<dd><p>Whether packet is marked as a keyframe.
|
889 |
+
</p></dd>
|
890 |
+
<dt>‘<samp class="samp">state</samp>’</dt>
|
891 |
+
<dd><p>A pseudo random integer, primarily derived from the content of packet payload.
|
892 |
+
</p></dd>
|
893 |
+
</dl>
|
894 |
+
|
895 |
+
<ul class="mini-toc">
|
896 |
+
<li><a href="#Examples" accesskey="1">Examples</a></li>
|
897 |
+
</ul>
|
898 |
+
<div class="subsection-level-extent" id="Examples">
|
899 |
+
<h4 class="subsection">2.23.1 Examples</h4>
|
900 |
+
<p>Apply modification to every byte but don’t drop any packets.
|
901 |
+
</p><div class="example">
|
902 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
|
903 |
+
</pre></div>
|
904 |
+
|
905 |
+
<p>Drop every video packet not marked as a keyframe after timestamp 30s but do not
|
906 |
+
modify any of the remaining packets.
|
907 |
+
</p><div class="example">
|
908 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
|
909 |
+
</pre></div>
|
910 |
+
|
911 |
+
<p>Drop one second of audio every 10 seconds and add some random noise to the rest.
|
912 |
+
</p><div class="example">
|
913 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
|
914 |
+
</pre></div>
|
915 |
+
|
916 |
+
</div>
|
917 |
+
</div>
|
918 |
+
<div class="section-level-extent" id="null">
|
919 |
+
<h3 class="section">2.24 null</h3>
|
920 |
+
<p>This bitstream filter passes the packets through unchanged.
|
921 |
+
</p>
|
922 |
+
</div>
|
923 |
+
<div class="section-level-extent" id="pcm_005frechunk">
|
924 |
+
<h3 class="section">2.25 pcm_rechunk</h3>
|
925 |
+
|
926 |
+
<p>Repacketize PCM audio to a fixed number of samples per packet or a fixed packet
|
927 |
+
rate per second. This is similar to the <a data-manual="ffmpeg-filters" href="ffmpeg-filters.html#asetnsamples">(ffmpeg-filters)asetnsamples audio
|
928 |
+
filter</a> but works on audio packets instead of audio frames.
|
929 |
+
</p>
|
930 |
+
<dl class="table">
|
931 |
+
<dt><samp class="option">nb_out_samples, n</samp></dt>
|
932 |
+
<dd><p>Set the number of samples per each output audio packet. The number is intended
|
933 |
+
as the number of samples <em class="emph">per each channel</em>. Default value is 1024.
|
934 |
+
</p>
|
935 |
+
</dd>
|
936 |
+
<dt><samp class="option">pad, p</samp></dt>
|
937 |
+
<dd><p>If set to 1, the filter will pad the last audio packet with silence, so that it
|
938 |
+
will contain the same number of samples (or roughly the same number of samples,
|
939 |
+
see <samp class="option">frame_rate</samp>) as the previous ones. Default value is 1.
|
940 |
+
</p>
|
941 |
+
</dd>
|
942 |
+
<dt><samp class="option">frame_rate, r</samp></dt>
|
943 |
+
<dd><p>This option makes the filter output a fixed number of packets per second instead
|
944 |
+
of a fixed number of samples per packet. If the audio sample rate is not
|
945 |
+
divisible by the frame rate then the number of samples will not be constant but
|
946 |
+
will vary slightly so that each packet will start as close to the frame
|
947 |
+
boundary as possible. Using this option has precedence over <samp class="option">nb_out_samples</samp>.
|
948 |
+
</p></dd>
|
949 |
+
</dl>
|
950 |
+
|
951 |
+
<p>You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio
|
952 |
+
for NTSC frame rate using the <samp class="option">frame_rate</samp> option.
|
953 |
+
</p><div class="example">
|
954 |
+
<pre class="example-preformatted">ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
|
955 |
+
</pre></div>
|
956 |
+
|
957 |
+
</div>
|
958 |
+
<div class="section-level-extent" id="pgs_005fframe_005fmerge">
|
959 |
+
<h3 class="section">2.26 pgs_frame_merge</h3>
|
960 |
+
|
961 |
+
<p>Merge a sequence of PGS Subtitle segments ending with an "end of display set"
|
962 |
+
segment into a single packet.
|
963 |
+
</p>
|
964 |
+
<p>This is required by some containers that support PGS subtitles
|
965 |
+
(muxer <code class="code">matroska</code>).
|
966 |
+
</p>
|
967 |
+
</div>
|
968 |
+
<div class="section-level-extent" id="prores_005fmetadata">
|
969 |
+
<h3 class="section">2.27 prores_metadata</h3>
|
970 |
+
|
971 |
+
<p>Modify color property metadata embedded in prores stream.
|
972 |
+
</p>
|
973 |
+
<dl class="table">
|
974 |
+
<dt><samp class="option">color_primaries</samp></dt>
|
975 |
+
<dd><p>Set the color primaries.
|
976 |
+
Available values are:
|
977 |
+
</p>
|
978 |
+
<dl class="table">
|
979 |
+
<dt>‘<samp class="samp">auto</samp>’</dt>
|
980 |
+
<dd><p>Keep the same color primaries property (default).
|
981 |
+
</p>
|
982 |
+
</dd>
|
983 |
+
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
984 |
+
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
985 |
+
<dt>‘<samp class="samp">bt470bg</samp>’</dt>
|
986 |
+
<dd><p>BT601 625
|
987 |
+
</p>
|
988 |
+
</dd>
|
989 |
+
<dt>‘<samp class="samp">smpte170m</samp>’</dt>
|
990 |
+
<dd><p>BT601 525
|
991 |
+
</p>
|
992 |
+
</dd>
|
993 |
+
<dt>‘<samp class="samp">bt2020</samp>’</dt>
|
994 |
+
<dt>‘<samp class="samp">smpte431</samp>’</dt>
|
995 |
+
<dd><p>DCI P3
|
996 |
+
</p>
|
997 |
+
</dd>
|
998 |
+
<dt>‘<samp class="samp">smpte432</samp>’</dt>
|
999 |
+
<dd><p>P3 D65
|
1000 |
+
</p>
|
1001 |
+
</dd>
|
1002 |
+
</dl>
|
1003 |
+
|
1004 |
+
</dd>
|
1005 |
+
<dt><samp class="option">transfer_characteristics</samp></dt>
|
1006 |
+
<dd><p>Set the color transfer.
|
1007 |
+
Available values are:
|
1008 |
+
</p>
|
1009 |
+
<dl class="table">
|
1010 |
+
<dt>‘<samp class="samp">auto</samp>’</dt>
|
1011 |
+
<dd><p>Keep the same transfer characteristics property (default).
|
1012 |
+
</p>
|
1013 |
+
</dd>
|
1014 |
+
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
1015 |
+
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
1016 |
+
<dd><p>BT 601, BT 709, BT 2020
|
1017 |
+
</p></dd>
|
1018 |
+
<dt>‘<samp class="samp">smpte2084</samp>’</dt>
|
1019 |
+
<dd><p>SMPTE ST 2084
|
1020 |
+
</p></dd>
|
1021 |
+
<dt>‘<samp class="samp">arib-std-b67</samp>’</dt>
|
1022 |
+
<dd><p>ARIB STD-B67
|
1023 |
+
</p></dd>
|
1024 |
+
</dl>
|
1025 |
+
|
1026 |
+
|
1027 |
+
</dd>
|
1028 |
+
<dt><samp class="option">matrix_coefficients</samp></dt>
|
1029 |
+
<dd><p>Set the matrix coefficient.
|
1030 |
+
Available values are:
|
1031 |
+
</p>
|
1032 |
+
<dl class="table">
|
1033 |
+
<dt>‘<samp class="samp">auto</samp>’</dt>
|
1034 |
+
<dd><p>Keep the same colorspace property (default).
|
1035 |
+
</p>
|
1036 |
+
</dd>
|
1037 |
+
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
1038 |
+
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
1039 |
+
<dt>‘<samp class="samp">smpte170m</samp>’</dt>
|
1040 |
+
<dd><p>BT 601
|
1041 |
+
</p>
|
1042 |
+
</dd>
|
1043 |
+
<dt>‘<samp class="samp">bt2020nc</samp>’</dt>
|
1044 |
+
</dl>
|
1045 |
+
</dd>
|
1046 |
+
</dl>
|
1047 |
+
|
1048 |
+
<p>Set Rec709 colorspace for each frame of the file
|
1049 |
+
</p><div class="example">
|
1050 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
|
1051 |
+
</pre></div>
|
1052 |
+
|
1053 |
+
<p>Set Hybrid Log-Gamma parameters for each frame of the file
|
1054 |
+
</p><div class="example">
|
1055 |
+
<pre class="example-preformatted">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
|
1056 |
+
</pre></div>
|
1057 |
+
|
1058 |
+
</div>
|
1059 |
+
<div class="section-level-extent" id="remove_005fextra">
|
1060 |
+
<h3 class="section">2.28 remove_extra</h3>
|
1061 |
+
|
1062 |
+
<p>Remove extradata from packets.
|
1063 |
+
</p>
|
1064 |
+
<p>It accepts the following parameter:
|
1065 |
+
</p><dl class="table">
|
1066 |
+
<dt><samp class="option">freq</samp></dt>
|
1067 |
+
<dd><p>Set which frame types to remove extradata from.
|
1068 |
+
</p>
|
1069 |
+
<dl class="table">
|
1070 |
+
<dt>‘<samp class="samp">k</samp>’</dt>
|
1071 |
+
<dd><p>Remove extradata from non-keyframes only.
|
1072 |
+
</p>
|
1073 |
+
</dd>
|
1074 |
+
<dt>‘<samp class="samp">keyframe</samp>’</dt>
|
1075 |
+
<dd><p>Remove extradata from keyframes only.
|
1076 |
+
</p>
|
1077 |
+
</dd>
|
1078 |
+
<dt>‘<samp class="samp">e, all</samp>’</dt>
|
1079 |
+
<dd><p>Remove extradata from all frames.
|
1080 |
+
</p>
|
1081 |
+
</dd>
|
1082 |
+
</dl>
|
1083 |
+
</dd>
|
1084 |
+
</dl>
|
1085 |
+
|
1086 |
+
</div>
|
1087 |
+
<div class="section-level-extent" id="setts">
|
1088 |
+
<h3 class="section">2.29 setts</h3>
|
1089 |
+
<p>Set PTS and DTS in packets.
|
1090 |
+
</p>
|
1091 |
+
<p>It accepts the following parameters:
|
1092 |
+
</p><dl class="table">
|
1093 |
+
<dt><samp class="option">ts</samp></dt>
|
1094 |
+
<dt><samp class="option">pts</samp></dt>
|
1095 |
+
<dt><samp class="option">dts</samp></dt>
|
1096 |
+
<dd><p>Set expressions for PTS, DTS or both.
|
1097 |
+
</p></dd>
|
1098 |
+
<dt><samp class="option">duration</samp></dt>
|
1099 |
+
<dd><p>Set expression for duration.
|
1100 |
+
</p></dd>
|
1101 |
+
<dt><samp class="option">time_base</samp></dt>
|
1102 |
+
<dd><p>Set output time base.
|
1103 |
+
</p></dd>
|
1104 |
+
</dl>
|
1105 |
+
|
1106 |
+
<p>The expressions are evaluated through the eval API and can contain the following
|
1107 |
+
constants:
|
1108 |
+
</p>
|
1109 |
+
<dl class="table">
|
1110 |
+
<dt><samp class="option">N</samp></dt>
|
1111 |
+
<dd><p>The count of the input packet. Starting from 0.
|
1112 |
+
</p>
|
1113 |
+
</dd>
|
1114 |
+
<dt><samp class="option">TS</samp></dt>
|
1115 |
+
<dd><p>The demux timestamp in input in case of <code class="code">ts</code> or <code class="code">dts</code> option or presentation
|
1116 |
+
timestamp in case of <code class="code">pts</code> option.
|
1117 |
+
</p>
|
1118 |
+
</dd>
|
1119 |
+
<dt><samp class="option">POS</samp></dt>
|
1120 |
+
<dd><p>The original position in the file of the packet, or undefined if undefined
|
1121 |
+
for the current packet
|
1122 |
+
</p>
|
1123 |
+
</dd>
|
1124 |
+
<dt><samp class="option">DTS</samp></dt>
|
1125 |
+
<dd><p>The demux timestamp in input.
|
1126 |
+
</p>
|
1127 |
+
</dd>
|
1128 |
+
<dt><samp class="option">PTS</samp></dt>
|
1129 |
+
<dd><p>The presentation timestamp in input.
|
1130 |
+
</p>
|
1131 |
+
</dd>
|
1132 |
+
<dt><samp class="option">DURATION</samp></dt>
|
1133 |
+
<dd><p>The duration in input.
|
1134 |
+
</p>
|
1135 |
+
</dd>
|
1136 |
+
<dt><samp class="option">STARTDTS</samp></dt>
|
1137 |
+
<dd><p>The DTS of the first packet.
|
1138 |
+
</p>
|
1139 |
+
</dd>
|
1140 |
+
<dt><samp class="option">STARTPTS</samp></dt>
|
1141 |
+
<dd><p>The PTS of the first packet.
|
1142 |
+
</p>
|
1143 |
+
</dd>
|
1144 |
+
<dt><samp class="option">PREV_INDTS</samp></dt>
|
1145 |
+
<dd><p>The previous input DTS.
|
1146 |
+
</p>
|
1147 |
+
</dd>
|
1148 |
+
<dt><samp class="option">PREV_INPTS</samp></dt>
|
1149 |
+
<dd><p>The previous input PTS.
|
1150 |
+
</p>
|
1151 |
+
</dd>
|
1152 |
+
<dt><samp class="option">PREV_INDURATION</samp></dt>
|
1153 |
+
<dd><p>The previous input duration.
|
1154 |
+
</p>
|
1155 |
+
</dd>
|
1156 |
+
<dt><samp class="option">PREV_OUTDTS</samp></dt>
|
1157 |
+
<dd><p>The previous output DTS.
|
1158 |
+
</p>
|
1159 |
+
</dd>
|
1160 |
+
<dt><samp class="option">PREV_OUTPTS</samp></dt>
|
1161 |
+
<dd><p>The previous output PTS.
|
1162 |
+
</p>
|
1163 |
+
</dd>
|
1164 |
+
<dt><samp class="option">PREV_OUTDURATION</samp></dt>
|
1165 |
+
<dd><p>The previous output duration.
|
1166 |
+
</p>
|
1167 |
+
</dd>
|
1168 |
+
<dt><samp class="option">NEXT_DTS</samp></dt>
|
1169 |
+
<dd><p>The next input DTS.
|
1170 |
+
</p>
|
1171 |
+
</dd>
|
1172 |
+
<dt><samp class="option">NEXT_PTS</samp></dt>
|
1173 |
+
<dd><p>The next input PTS.
|
1174 |
+
</p>
|
1175 |
+
</dd>
|
1176 |
+
<dt><samp class="option">NEXT_DURATION</samp></dt>
|
1177 |
+
<dd><p>The next input duration.
|
1178 |
+
</p>
|
1179 |
+
</dd>
|
1180 |
+
<dt><samp class="option">TB</samp></dt>
|
1181 |
+
<dd><p>The timebase of stream packet belongs.
|
1182 |
+
</p>
|
1183 |
+
</dd>
|
1184 |
+
<dt><samp class="option">TB_OUT</samp></dt>
|
1185 |
+
<dd><p>The output timebase.
|
1186 |
+
</p>
|
1187 |
+
</dd>
|
1188 |
+
<dt><samp class="option">SR</samp></dt>
|
1189 |
+
<dd><p>The sample rate of stream packet belongs.
|
1190 |
+
</p>
|
1191 |
+
</dd>
|
1192 |
+
<dt><samp class="option">NOPTS</samp></dt>
|
1193 |
+
<dd><p>The AV_NOPTS_VALUE constant.
|
1194 |
+
</p></dd>
|
1195 |
+
</dl>
|
1196 |
+
|
1197 |
+
<a class="anchor" id="text2movsub"></a></div>
|
1198 |
+
<div class="section-level-extent" id="text2movsub-1">
|
1199 |
+
<h3 class="section">2.30 text2movsub</h3>
|
1200 |
+
|
1201 |
+
<p>Convert text subtitles to MOV subtitles (as used by the <code class="code">mov_text</code>
|
1202 |
+
codec) with metadata headers.
|
1203 |
+
</p>
|
1204 |
+
<p>See also the <a class="ref" href="#mov2textsub">mov2textsub</a> filter.
|
1205 |
+
</p>
|
1206 |
+
</div>
|
1207 |
+
<div class="section-level-extent" id="trace_005fheaders">
|
1208 |
+
<h3 class="section">2.31 trace_headers</h3>
|
1209 |
+
|
1210 |
+
<p>Log trace output containing all syntax elements in the coded stream
|
1211 |
+
headers (everything above the level of individual coded blocks).
|
1212 |
+
This can be useful for debugging low-level stream issues.
|
1213 |
+
</p>
|
1214 |
+
<p>Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending
|
1215 |
+
on the build only a subset of these may be available.
|
1216 |
+
</p>
|
1217 |
+
</div>
|
1218 |
+
<div class="section-level-extent" id="truehd_005fcore">
|
1219 |
+
<h3 class="section">2.32 truehd_core</h3>
|
1220 |
+
|
1221 |
+
<p>Extract the core from a TrueHD stream, dropping ATMOS data.
|
1222 |
+
</p>
|
1223 |
+
</div>
|
1224 |
+
<div class="section-level-extent" id="vp9_005fmetadata">
|
1225 |
+
<h3 class="section">2.33 vp9_metadata</h3>
|
1226 |
+
|
1227 |
+
<p>Modify metadata embedded in a VP9 stream.
|
1228 |
+
</p>
|
1229 |
+
<dl class="table">
|
1230 |
+
<dt><samp class="option">color_space</samp></dt>
|
1231 |
+
<dd><p>Set the color space value in the frame header. Note that any frame
|
1232 |
+
set to RGB will be implicitly set to PC range and that RGB is
|
1233 |
+
incompatible with profiles 0 and 2.
|
1234 |
+
</p><dl class="table">
|
1235 |
+
<dt>‘<samp class="samp">unknown</samp>’</dt>
|
1236 |
+
<dt>‘<samp class="samp">bt601</samp>’</dt>
|
1237 |
+
<dt>‘<samp class="samp">bt709</samp>’</dt>
|
1238 |
+
<dt>‘<samp class="samp">smpte170</samp>’</dt>
|
1239 |
+
<dt>‘<samp class="samp">smpte240</samp>’</dt>
|
1240 |
+
<dt>‘<samp class="samp">bt2020</samp>’</dt>
|
1241 |
+
<dt>‘<samp class="samp">rgb</samp>’</dt>
|
1242 |
+
</dl>
|
1243 |
+
|
1244 |
+
</dd>
|
1245 |
+
<dt><samp class="option">color_range</samp></dt>
|
1246 |
+
<dd><p>Set the color range value in the frame header. Note that any value
|
1247 |
+
imposed by the color space will take precedence over this value.
|
1248 |
+
</p><dl class="table">
|
1249 |
+
<dt>‘<samp class="samp">tv</samp>’</dt>
|
1250 |
+
<dt>‘<samp class="samp">pc</samp>’</dt>
|
1251 |
+
</dl>
|
1252 |
+
</dd>
|
1253 |
+
</dl>
|
1254 |
+
|
1255 |
+
</div>
|
1256 |
+
<div class="section-level-extent" id="vp9_005fsuperframe">
|
1257 |
+
<h3 class="section">2.34 vp9_superframe</h3>
|
1258 |
+
|
1259 |
+
<p>Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
|
1260 |
+
fixes merging of split/segmented VP9 streams where the alt-ref frame
|
1261 |
+
was split from its visible counterpart.
|
1262 |
+
</p>
|
1263 |
+
</div>
|
1264 |
+
<div class="section-level-extent" id="vp9_005fsuperframe_005fsplit">
|
1265 |
+
<h3 class="section">2.35 vp9_superframe_split</h3>
|
1266 |
+
|
1267 |
+
<p>Split VP9 superframes into single frames.
|
1268 |
+
</p>
|
1269 |
+
</div>
|
1270 |
+
<div class="section-level-extent" id="vp9_005fraw_005freorder">
|
1271 |
+
<h3 class="section">2.36 vp9_raw_reorder</h3>
|
1272 |
+
|
1273 |
+
<p>Given a VP9 stream with correct timestamps but possibly out of order,
|
1274 |
+
insert additional show-existing-frame packets to correct the ordering.
|
1275 |
+
</p>
|
1276 |
+
|
1277 |
+
</div>
|
1278 |
+
</div>
|
1279 |
+
<div class="chapter-level-extent" id="See-Also">
|
1280 |
+
<h2 class="chapter">3 See Also</h2>
|
1281 |
+
|
1282 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
1283 |
+
<a class="url" href="libavcodec.html">libavcodec</a>
|
1284 |
+
</p>
|
1285 |
+
|
1286 |
+
</div>
|
1287 |
+
<div class="chapter-level-extent" id="Authors">
|
1288 |
+
<h2 class="chapter">4 Authors</h2>
|
1289 |
+
|
1290 |
+
<p>The FFmpeg developers.
|
1291 |
+
</p>
|
1292 |
+
<p>For details about the authorship, see the Git history of the project
|
1293 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
1294 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
1295 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
1296 |
+
</p>
|
1297 |
+
<p>Maintainers for the specific components are listed in the file
|
1298 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
1299 |
+
</p>
|
1300 |
+
|
1301 |
+
</div>
|
1302 |
+
</div>
|
1303 |
+
|
1304 |
+
|
1305 |
+
|
1306 |
+
</body>
|
1307 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-codecs.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-devices.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-filters.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-formats.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-protocols.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-resampler.html
ADDED
@@ -0,0 +1,362 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Resampler Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Resampler Documentation">
|
9 |
+
<meta name="keywords" content="FFmpeg Resampler Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-Resampler-Options" href="#Resampler-Options">2 Resampler Options</a></li>
|
39 |
+
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
40 |
+
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
41 |
+
</ul>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
<div class="chapter-level-extent" id="Description">
|
45 |
+
<h2 class="chapter">1 Description</h2>
|
46 |
+
|
47 |
+
<p>The FFmpeg resampler provides a high-level interface to the
|
48 |
+
libswresample library audio resampling utilities. In particular it
|
49 |
+
allows one to perform audio resampling, audio channel layout rematrixing,
|
50 |
+
and convert audio format and packing layout.
|
51 |
+
</p>
|
52 |
+
|
53 |
+
</div>
|
54 |
+
<div class="chapter-level-extent" id="Resampler-Options">
|
55 |
+
<h2 class="chapter">2 Resampler Options</h2>
|
56 |
+
|
57 |
+
<p>The audio resampler supports the following named options.
|
58 |
+
</p>
|
59 |
+
<p>Options may be set by specifying -<var class="var">option</var> <var class="var">value</var> in the
|
60 |
+
FFmpeg tools, <var class="var">option</var>=<var class="var">value</var> for the aresample filter,
|
61 |
+
by setting the value explicitly in the
|
62 |
+
<code class="code">SwrContext</code> options or using the <samp class="file">libavutil/opt.h</samp> API for
|
63 |
+
programmatic use.
|
64 |
+
</p>
|
65 |
+
<dl class="table">
|
66 |
+
<dt><samp class="option">uchl, used_chlayout</samp></dt>
|
67 |
+
<dd><p>Set used input channel layout. Default is unset. This option is
|
68 |
+
only used for special remapping.
|
69 |
+
</p>
|
70 |
+
</dd>
|
71 |
+
<dt><samp class="option">isr, in_sample_rate</samp></dt>
|
72 |
+
<dd><p>Set the input sample rate. Default value is 0.
|
73 |
+
</p>
|
74 |
+
</dd>
|
75 |
+
<dt><samp class="option">osr, out_sample_rate</samp></dt>
|
76 |
+
<dd><p>Set the output sample rate. Default value is 0.
|
77 |
+
</p>
|
78 |
+
</dd>
|
79 |
+
<dt><samp class="option">isf, in_sample_fmt</samp></dt>
|
80 |
+
<dd><p>Specify the input sample format. It is set by default to <code class="code">none</code>.
|
81 |
+
</p>
|
82 |
+
</dd>
|
83 |
+
<dt><samp class="option">osf, out_sample_fmt</samp></dt>
|
84 |
+
<dd><p>Specify the output sample format. It is set by default to <code class="code">none</code>.
|
85 |
+
</p>
|
86 |
+
</dd>
|
87 |
+
<dt><samp class="option">tsf, internal_sample_fmt</samp></dt>
|
88 |
+
<dd><p>Set the internal sample format. Default value is <code class="code">none</code>.
|
89 |
+
This will automatically be chosen when it is not explicitly set.
|
90 |
+
</p>
|
91 |
+
</dd>
|
92 |
+
<dt><samp class="option">ichl, in_chlayout</samp></dt>
|
93 |
+
<dt><samp class="option">ochl, out_chlayout</samp></dt>
|
94 |
+
<dd><p>Set the input/output channel layout.
|
95 |
+
</p>
|
96 |
+
<p>See <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)the Channel Layout section in the ffmpeg-utils(1) manual</a>
|
97 |
+
for the required syntax.
|
98 |
+
</p>
|
99 |
+
</dd>
|
100 |
+
<dt><samp class="option">clev, center_mix_level</samp></dt>
|
101 |
+
<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
|
102 |
+
in the interval [-32,32].
|
103 |
+
</p>
|
104 |
+
</dd>
|
105 |
+
<dt><samp class="option">slev, surround_mix_level</samp></dt>
|
106 |
+
<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
|
107 |
+
be in the interval [-32,32].
|
108 |
+
</p>
|
109 |
+
</dd>
|
110 |
+
<dt><samp class="option">lfe_mix_level</samp></dt>
|
111 |
+
<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
|
112 |
+
LFE output. It is a value expressed in deciBel, and must
|
113 |
+
be in the interval [-32,32].
|
114 |
+
</p>
|
115 |
+
</dd>
|
116 |
+
<dt><samp class="option">rmvol, rematrix_volume</samp></dt>
|
117 |
+
<dd><p>Set rematrix volume. Default value is 1.0.
|
118 |
+
</p>
|
119 |
+
</dd>
|
120 |
+
<dt><samp class="option">rematrix_maxval</samp></dt>
|
121 |
+
<dd><p>Set maximum output value for rematrixing.
|
122 |
+
This can be used to prevent clipping vs. preventing volume reduction.
|
123 |
+
A value of 1.0 prevents clipping.
|
124 |
+
</p>
|
125 |
+
</dd>
|
126 |
+
<dt><samp class="option">flags, swr_flags</samp></dt>
|
127 |
+
<dd><p>Set flags used by the converter. Default value is 0.
|
128 |
+
</p>
|
129 |
+
<p>It supports the following individual flags:
|
130 |
+
</p><dl class="table">
|
131 |
+
<dt><samp class="option">res</samp></dt>
|
132 |
+
<dd><p>force resampling, this flag forces resampling to be used even when the
|
133 |
+
input and output sample rates match.
|
134 |
+
</p></dd>
|
135 |
+
</dl>
|
136 |
+
|
137 |
+
</dd>
|
138 |
+
<dt><samp class="option">dither_scale</samp></dt>
|
139 |
+
<dd><p>Set the dither scale. Default value is 1.
|
140 |
+
</p>
|
141 |
+
</dd>
|
142 |
+
<dt><samp class="option">dither_method</samp></dt>
|
143 |
+
<dd><p>Set dither method. Default value is 0.
|
144 |
+
</p>
|
145 |
+
<p>Supported values:
|
146 |
+
</p><dl class="table">
|
147 |
+
<dt>‘<samp class="samp">rectangular</samp>’</dt>
|
148 |
+
<dd><p>select rectangular dither
|
149 |
+
</p></dd>
|
150 |
+
<dt>‘<samp class="samp">triangular</samp>’</dt>
|
151 |
+
<dd><p>select triangular dither
|
152 |
+
</p></dd>
|
153 |
+
<dt>‘<samp class="samp">triangular_hp</samp>’</dt>
|
154 |
+
<dd><p>select triangular dither with high pass
|
155 |
+
</p></dd>
|
156 |
+
<dt>‘<samp class="samp">lipshitz</samp>’</dt>
|
157 |
+
<dd><p>select Lipshitz noise shaping dither.
|
158 |
+
</p></dd>
|
159 |
+
<dt>‘<samp class="samp">shibata</samp>’</dt>
|
160 |
+
<dd><p>select Shibata noise shaping dither.
|
161 |
+
</p></dd>
|
162 |
+
<dt>‘<samp class="samp">low_shibata</samp>’</dt>
|
163 |
+
<dd><p>select low Shibata noise shaping dither.
|
164 |
+
</p></dd>
|
165 |
+
<dt>‘<samp class="samp">high_shibata</samp>’</dt>
|
166 |
+
<dd><p>select high Shibata noise shaping dither.
|
167 |
+
</p></dd>
|
168 |
+
<dt>‘<samp class="samp">f_weighted</samp>’</dt>
|
169 |
+
<dd><p>select f-weighted noise shaping dither
|
170 |
+
</p></dd>
|
171 |
+
<dt>‘<samp class="samp">modified_e_weighted</samp>’</dt>
|
172 |
+
<dd><p>select modified-e-weighted noise shaping dither
|
173 |
+
</p></dd>
|
174 |
+
<dt>‘<samp class="samp">improved_e_weighted</samp>’</dt>
|
175 |
+
<dd><p>select improved-e-weighted noise shaping dither
|
176 |
+
</p>
|
177 |
+
</dd>
|
178 |
+
</dl>
|
179 |
+
|
180 |
+
</dd>
|
181 |
+
<dt><samp class="option">resampler</samp></dt>
|
182 |
+
<dd><p>Set resampling engine. Default value is swr.
|
183 |
+
</p>
|
184 |
+
<p>Supported values:
|
185 |
+
</p><dl class="table">
|
186 |
+
<dt>‘<samp class="samp">swr</samp>’</dt>
|
187 |
+
<dd><p>select the native SW Resampler; filter options precision and cheby are not
|
188 |
+
applicable in this case.
|
189 |
+
</p></dd>
|
190 |
+
<dt>‘<samp class="samp">soxr</samp>’</dt>
|
191 |
+
<dd><p>select the SoX Resampler (where available); compensation, and filter options
|
192 |
+
filter_size, phase_shift, exact_rational, filter_type & kaiser_beta, are not
|
193 |
+
applicable in this case.
|
194 |
+
</p></dd>
|
195 |
+
</dl>
|
196 |
+
|
197 |
+
</dd>
|
198 |
+
<dt><samp class="option">filter_size</samp></dt>
|
199 |
+
<dd><p>For swr only, set resampling filter size, default value is 32.
|
200 |
+
</p>
|
201 |
+
</dd>
|
202 |
+
<dt><samp class="option">phase_shift</samp></dt>
|
203 |
+
<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
|
204 |
+
the interval [0,30].
|
205 |
+
</p>
|
206 |
+
</dd>
|
207 |
+
<dt><samp class="option">linear_interp</samp></dt>
|
208 |
+
<dd><p>Use linear interpolation when enabled (the default). Disable it if you want
|
209 |
+
to preserve speed instead of quality when exact_rational fails.
|
210 |
+
</p>
|
211 |
+
</dd>
|
212 |
+
<dt><samp class="option">exact_rational</samp></dt>
|
213 |
+
<dd><p>For swr only, when enabled, try to use exact phase_count based on input and
|
214 |
+
output sample rate. However, if it is larger than <code class="code">1 << phase_shift</code>,
|
215 |
+
the phase_count will be <code class="code">1 << phase_shift</code> as fallback. Default is enabled.
|
216 |
+
</p>
|
217 |
+
</dd>
|
218 |
+
<dt><samp class="option">cutoff</samp></dt>
|
219 |
+
<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
|
220 |
+
value between 0 and 1. Default value is 0.97 with swr, and 0.91 with soxr
|
221 |
+
(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
|
222 |
+
</p>
|
223 |
+
</dd>
|
224 |
+
<dt><samp class="option">precision</samp></dt>
|
225 |
+
<dd><p>For soxr only, the precision in bits to which the resampled signal will be
|
226 |
+
calculated. The default value of 20 (which, with suitable dithering, is
|
227 |
+
appropriate for a destination bit-depth of 16) gives SoX’s ’High Quality’; a
|
228 |
+
value of 28 gives SoX’s ’Very High Quality’.
|
229 |
+
</p>
|
230 |
+
</dd>
|
231 |
+
<dt><samp class="option">cheby</samp></dt>
|
232 |
+
<dd><p>For soxr only, selects passband rolloff none (Chebyshev) & higher-precision
|
233 |
+
approximation for ’irrational’ ratios. Default value is 0.
|
234 |
+
</p>
|
235 |
+
</dd>
|
236 |
+
<dt><samp class="option">async</samp></dt>
|
237 |
+
<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
|
238 |
+
squeezing, filling and trimming. Setting this to 1 will enable filling and
|
239 |
+
trimming, larger values represent the maximum amount in samples that the data
|
240 |
+
may be stretched or squeezed for each second.
|
241 |
+
Default value is 0, thus no compensation is applied to make the samples match
|
242 |
+
the audio timestamps.
|
243 |
+
</p>
|
244 |
+
</dd>
|
245 |
+
<dt><samp class="option">first_pts</samp></dt>
|
246 |
+
<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
|
247 |
+
This allows for padding/trimming at the start of stream. By default, no
|
248 |
+
assumption is made about the first frame’s expected pts, so no padding or
|
249 |
+
trimming is done. For example, this could be set to 0 to pad the beginning with
|
250 |
+
silence if an audio stream starts after the video stream or to trim any samples
|
251 |
+
with a negative pts due to encoder delay.
|
252 |
+
</p>
|
253 |
+
</dd>
|
254 |
+
<dt><samp class="option">min_comp</samp></dt>
|
255 |
+
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
256 |
+
seconds) to trigger stretching/squeezing/filling or trimming of the
|
257 |
+
data to make it match the timestamps. The default is that
|
258 |
+
stretching/squeezing/filling and trimming is disabled
|
259 |
+
(<samp class="option">min_comp</samp> = <code class="code">FLT_MAX</code>).
|
260 |
+
</p>
|
261 |
+
</dd>
|
262 |
+
<dt><samp class="option">min_hard_comp</samp></dt>
|
263 |
+
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
264 |
+
seconds) to trigger adding/dropping samples to make it match the
|
265 |
+
timestamps. This option effectively is a threshold to select between
|
266 |
+
hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
|
267 |
+
all compensation is by default disabled through <samp class="option">min_comp</samp>.
|
268 |
+
The default is 0.1.
|
269 |
+
</p>
|
270 |
+
</dd>
|
271 |
+
<dt><samp class="option">comp_duration</samp></dt>
|
272 |
+
<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
|
273 |
+
to make it match the timestamps. Must be a non-negative double float value,
|
274 |
+
default value is 1.0.
|
275 |
+
</p>
|
276 |
+
</dd>
|
277 |
+
<dt><samp class="option">max_soft_comp</samp></dt>
|
278 |
+
<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
|
279 |
+
match the timestamps. Must be a non-negative double float value, default value
|
280 |
+
is 0.
|
281 |
+
</p>
|
282 |
+
</dd>
|
283 |
+
<dt><samp class="option">matrix_encoding</samp></dt>
|
284 |
+
<dd><p>Select matrixed stereo encoding.
|
285 |
+
</p>
|
286 |
+
<p>It accepts the following values:
|
287 |
+
</p><dl class="table">
|
288 |
+
<dt>‘<samp class="samp">none</samp>’</dt>
|
289 |
+
<dd><p>select none
|
290 |
+
</p></dd>
|
291 |
+
<dt>‘<samp class="samp">dolby</samp>’</dt>
|
292 |
+
<dd><p>select Dolby
|
293 |
+
</p></dd>
|
294 |
+
<dt>‘<samp class="samp">dplii</samp>’</dt>
|
295 |
+
<dd><p>select Dolby Pro Logic II
|
296 |
+
</p></dd>
|
297 |
+
</dl>
|
298 |
+
|
299 |
+
<p>Default value is <code class="code">none</code>.
|
300 |
+
</p>
|
301 |
+
</dd>
|
302 |
+
<dt><samp class="option">filter_type</samp></dt>
|
303 |
+
<dd><p>For swr only, select resampling filter type. This only affects resampling
|
304 |
+
operations.
|
305 |
+
</p>
|
306 |
+
<p>It accepts the following values:
|
307 |
+
</p><dl class="table">
|
308 |
+
<dt>‘<samp class="samp">cubic</samp>’</dt>
|
309 |
+
<dd><p>select cubic
|
310 |
+
</p></dd>
|
311 |
+
<dt>‘<samp class="samp">blackman_nuttall</samp>’</dt>
|
312 |
+
<dd><p>select Blackman Nuttall windowed sinc
|
313 |
+
</p></dd>
|
314 |
+
<dt>‘<samp class="samp">kaiser</samp>’</dt>
|
315 |
+
<dd><p>select Kaiser windowed sinc
|
316 |
+
</p></dd>
|
317 |
+
</dl>
|
318 |
+
|
319 |
+
</dd>
|
320 |
+
<dt><samp class="option">kaiser_beta</samp></dt>
|
321 |
+
<dd><p>For swr only, set Kaiser window beta value. Must be a double float value in the
|
322 |
+
interval [2,16], default value is 9.
|
323 |
+
</p>
|
324 |
+
</dd>
|
325 |
+
<dt><samp class="option">output_sample_bits</samp></dt>
|
326 |
+
<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
|
327 |
+
interval [0,64], default value is 0, which means it’s not used.
|
328 |
+
</p>
|
329 |
+
</dd>
|
330 |
+
</dl>
|
331 |
+
|
332 |
+
|
333 |
+
</div>
|
334 |
+
<div class="chapter-level-extent" id="See-Also">
|
335 |
+
<h2 class="chapter">3 See Also</h2>
|
336 |
+
|
337 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
338 |
+
<a class="url" href="libswresample.html">libswresample</a>
|
339 |
+
</p>
|
340 |
+
|
341 |
+
</div>
|
342 |
+
<div class="chapter-level-extent" id="Authors">
|
343 |
+
<h2 class="chapter">4 Authors</h2>
|
344 |
+
|
345 |
+
<p>The FFmpeg developers.
|
346 |
+
</p>
|
347 |
+
<p>For details about the authorship, see the Git history of the project
|
348 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
349 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
350 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
351 |
+
</p>
|
352 |
+
<p>Maintainers for the specific components are listed in the file
|
353 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
354 |
+
</p>
|
355 |
+
|
356 |
+
</div>
|
357 |
+
</div>
|
358 |
+
|
359 |
+
|
360 |
+
|
361 |
+
</body>
|
362 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-scaler.html
ADDED
@@ -0,0 +1,266 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Scaler Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Scaler Documentation">
|
9 |
+
<meta name="keywords" content="FFmpeg Scaler Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-Scaler-Options" href="#Scaler-Options">2 Scaler Options</a></li>
|
39 |
+
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
40 |
+
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
41 |
+
</ul>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
<div class="chapter-level-extent" id="Description">
|
45 |
+
<h2 class="chapter">1 Description</h2>
|
46 |
+
|
47 |
+
<p>The FFmpeg rescaler provides a high-level interface to the libswscale
|
48 |
+
library image conversion utilities. In particular it allows one to perform
|
49 |
+
image rescaling and pixel format conversion.
|
50 |
+
</p>
|
51 |
+
|
52 |
+
<a class="anchor" id="scaler_005foptions"></a></div>
|
53 |
+
<div class="chapter-level-extent" id="Scaler-Options">
|
54 |
+
<h2 class="chapter">2 Scaler Options</h2>
|
55 |
+
|
56 |
+
<p>The video scaler supports the following named options.
|
57 |
+
</p>
|
58 |
+
<p>Options may be set by specifying -<var class="var">option</var> <var class="var">value</var> in the
|
59 |
+
FFmpeg tools, with a few API-only exceptions noted below.
|
60 |
+
For programmatic use, they can be set explicitly in the
|
61 |
+
<code class="code">SwsContext</code> options or through the <samp class="file">libavutil/opt.h</samp> API.
|
62 |
+
</p>
|
63 |
+
<dl class="table">
|
64 |
+
<dd>
|
65 |
+
<a class="anchor" id="sws_005fflags"></a></dd>
|
66 |
+
<dt><samp class="option">sws_flags</samp></dt>
|
67 |
+
<dd><p>Set the scaler flags. This is also used to set the scaling
|
68 |
+
algorithm. Only a single algorithm should be selected. Default
|
69 |
+
value is ‘<samp class="samp">bicubic</samp>’.
|
70 |
+
</p>
|
71 |
+
<p>It accepts the following values:
|
72 |
+
</p><dl class="table">
|
73 |
+
<dt>‘<samp class="samp">fast_bilinear</samp>’</dt>
|
74 |
+
<dd><p>Select fast bilinear scaling algorithm.
|
75 |
+
</p>
|
76 |
+
</dd>
|
77 |
+
<dt>‘<samp class="samp">bilinear</samp>’</dt>
|
78 |
+
<dd><p>Select bilinear scaling algorithm.
|
79 |
+
</p>
|
80 |
+
</dd>
|
81 |
+
<dt>‘<samp class="samp">bicubic</samp>’</dt>
|
82 |
+
<dd><p>Select bicubic scaling algorithm.
|
83 |
+
</p>
|
84 |
+
</dd>
|
85 |
+
<dt>‘<samp class="samp">experimental</samp>’</dt>
|
86 |
+
<dd><p>Select experimental scaling algorithm.
|
87 |
+
</p>
|
88 |
+
</dd>
|
89 |
+
<dt>‘<samp class="samp">neighbor</samp>’</dt>
|
90 |
+
<dd><p>Select nearest neighbor rescaling algorithm.
|
91 |
+
</p>
|
92 |
+
</dd>
|
93 |
+
<dt>‘<samp class="samp">area</samp>’</dt>
|
94 |
+
<dd><p>Select averaging area rescaling algorithm.
|
95 |
+
</p>
|
96 |
+
</dd>
|
97 |
+
<dt>‘<samp class="samp">bicublin</samp>’</dt>
|
98 |
+
<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
|
99 |
+
chroma components.
|
100 |
+
</p>
|
101 |
+
</dd>
|
102 |
+
<dt>‘<samp class="samp">gauss</samp>’</dt>
|
103 |
+
<dd><p>Select Gaussian rescaling algorithm.
|
104 |
+
</p>
|
105 |
+
</dd>
|
106 |
+
<dt>‘<samp class="samp">sinc</samp>’</dt>
|
107 |
+
<dd><p>Select sinc rescaling algorithm.
|
108 |
+
</p>
|
109 |
+
</dd>
|
110 |
+
<dt>‘<samp class="samp">lanczos</samp>’</dt>
|
111 |
+
<dd><p>Select Lanczos rescaling algorithm. The default width (alpha) is 3 and can be
|
112 |
+
changed by setting <code class="code">param0</code>.
|
113 |
+
</p>
|
114 |
+
</dd>
|
115 |
+
<dt>‘<samp class="samp">spline</samp>’</dt>
|
116 |
+
<dd><p>Select natural bicubic spline rescaling algorithm.
|
117 |
+
</p>
|
118 |
+
</dd>
|
119 |
+
<dt>‘<samp class="samp">print_info</samp>’</dt>
|
120 |
+
<dd><p>Enable printing/debug logging.
|
121 |
+
</p>
|
122 |
+
</dd>
|
123 |
+
<dt>‘<samp class="samp">accurate_rnd</samp>’</dt>
|
124 |
+
<dd><p>Enable accurate rounding.
|
125 |
+
</p>
|
126 |
+
</dd>
|
127 |
+
<dt>‘<samp class="samp">full_chroma_int</samp>’</dt>
|
128 |
+
<dd><p>Enable full chroma interpolation.
|
129 |
+
</p>
|
130 |
+
</dd>
|
131 |
+
<dt>‘<samp class="samp">full_chroma_inp</samp>’</dt>
|
132 |
+
<dd><p>Select full chroma input.
|
133 |
+
</p>
|
134 |
+
</dd>
|
135 |
+
<dt>‘<samp class="samp">bitexact</samp>’</dt>
|
136 |
+
<dd><p>Enable bitexact output.
|
137 |
+
</p></dd>
|
138 |
+
</dl>
|
139 |
+
|
140 |
+
</dd>
|
141 |
+
<dt><samp class="option">srcw <var class="var">(API only)</var></samp></dt>
|
142 |
+
<dd><p>Set source width.
|
143 |
+
</p>
|
144 |
+
</dd>
|
145 |
+
<dt><samp class="option">srch <var class="var">(API only)</var></samp></dt>
|
146 |
+
<dd><p>Set source height.
|
147 |
+
</p>
|
148 |
+
</dd>
|
149 |
+
<dt><samp class="option">dstw <var class="var">(API only)</var></samp></dt>
|
150 |
+
<dd><p>Set destination width.
|
151 |
+
</p>
|
152 |
+
</dd>
|
153 |
+
<dt><samp class="option">dsth <var class="var">(API only)</var></samp></dt>
|
154 |
+
<dd><p>Set destination height.
|
155 |
+
</p>
|
156 |
+
</dd>
|
157 |
+
<dt><samp class="option">src_format <var class="var">(API only)</var></samp></dt>
|
158 |
+
<dd><p>Set source pixel format (must be expressed as an integer).
|
159 |
+
</p>
|
160 |
+
</dd>
|
161 |
+
<dt><samp class="option">dst_format <var class="var">(API only)</var></samp></dt>
|
162 |
+
<dd><p>Set destination pixel format (must be expressed as an integer).
|
163 |
+
</p>
|
164 |
+
</dd>
|
165 |
+
<dt><samp class="option">src_range <var class="var">(boolean)</var></samp></dt>
|
166 |
+
<dd><p>If value is set to <code class="code">1</code>, indicates source is full range. Default value is
|
167 |
+
<code class="code">0</code>, which indicates source is limited range.
|
168 |
+
</p>
|
169 |
+
</dd>
|
170 |
+
<dt><samp class="option">dst_range <var class="var">(boolean)</var></samp></dt>
|
171 |
+
<dd><p>If value is set to <code class="code">1</code>, enable full range for destination. Default value
|
172 |
+
is <code class="code">0</code>, which enables limited range.
|
173 |
+
</p>
|
174 |
+
<a class="anchor" id="sws_005fparams"></a></dd>
|
175 |
+
<dt><samp class="option">param0, param1</samp></dt>
|
176 |
+
<dd><p>Set scaling algorithm parameters. The specified values are specific of
|
177 |
+
some scaling algorithms and ignored by others. The specified values
|
178 |
+
are floating point number values.
|
179 |
+
</p>
|
180 |
+
</dd>
|
181 |
+
<dt><samp class="option">sws_dither</samp></dt>
|
182 |
+
<dd><p>Set the dithering algorithm. Accepts one of the following
|
183 |
+
values. Default value is ‘<samp class="samp">auto</samp>’.
|
184 |
+
</p>
|
185 |
+
<dl class="table">
|
186 |
+
<dt>‘<samp class="samp">auto</samp>’</dt>
|
187 |
+
<dd><p>automatic choice
|
188 |
+
</p>
|
189 |
+
</dd>
|
190 |
+
<dt>‘<samp class="samp">none</samp>’</dt>
|
191 |
+
<dd><p>no dithering
|
192 |
+
</p>
|
193 |
+
</dd>
|
194 |
+
<dt>‘<samp class="samp">bayer</samp>’</dt>
|
195 |
+
<dd><p>bayer dither
|
196 |
+
</p>
|
197 |
+
</dd>
|
198 |
+
<dt>‘<samp class="samp">ed</samp>’</dt>
|
199 |
+
<dd><p>error diffusion dither
|
200 |
+
</p>
|
201 |
+
</dd>
|
202 |
+
<dt>‘<samp class="samp">a_dither</samp>’</dt>
|
203 |
+
<dd><p>arithmetic dither, based using addition
|
204 |
+
</p>
|
205 |
+
</dd>
|
206 |
+
<dt>‘<samp class="samp">x_dither</samp>’</dt>
|
207 |
+
<dd><p>arithmetic dither, based using xor (more random/less apparent patterning that
|
208 |
+
a_dither).
|
209 |
+
</p>
|
210 |
+
</dd>
|
211 |
+
</dl>
|
212 |
+
|
213 |
+
</dd>
|
214 |
+
<dt><samp class="option">alphablend</samp></dt>
|
215 |
+
<dd><p>Set the alpha blending to use when the input has alpha but the output does not.
|
216 |
+
Default value is ‘<samp class="samp">none</samp>’.
|
217 |
+
</p>
|
218 |
+
<dl class="table">
|
219 |
+
<dt>‘<samp class="samp">uniform_color</samp>’</dt>
|
220 |
+
<dd><p>Blend onto a uniform background color
|
221 |
+
</p>
|
222 |
+
</dd>
|
223 |
+
<dt>‘<samp class="samp">checkerboard</samp>’</dt>
|
224 |
+
<dd><p>Blend onto a checkerboard
|
225 |
+
</p>
|
226 |
+
</dd>
|
227 |
+
<dt>‘<samp class="samp">none</samp>’</dt>
|
228 |
+
<dd><p>No blending
|
229 |
+
</p>
|
230 |
+
</dd>
|
231 |
+
</dl>
|
232 |
+
|
233 |
+
</dd>
|
234 |
+
</dl>
|
235 |
+
|
236 |
+
|
237 |
+
</div>
|
238 |
+
<div class="chapter-level-extent" id="See-Also">
|
239 |
+
<h2 class="chapter">3 See Also</h2>
|
240 |
+
|
241 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
242 |
+
<a class="url" href="libswscale.html">libswscale</a>
|
243 |
+
</p>
|
244 |
+
|
245 |
+
</div>
|
246 |
+
<div class="chapter-level-extent" id="Authors">
|
247 |
+
<h2 class="chapter">4 Authors</h2>
|
248 |
+
|
249 |
+
<p>The FFmpeg developers.
|
250 |
+
</p>
|
251 |
+
<p>For details about the authorship, see the Git history of the project
|
252 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
253 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
254 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
255 |
+
</p>
|
256 |
+
<p>Maintainers for the specific components are listed in the file
|
257 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
258 |
+
</p>
|
259 |
+
|
260 |
+
</div>
|
261 |
+
</div>
|
262 |
+
|
263 |
+
|
264 |
+
|
265 |
+
</body>
|
266 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg-utils.html
ADDED
@@ -0,0 +1,1539 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Utilities Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Utilities Documentation">
|
9 |
+
<meta name="keywords" content="FFmpeg Utilities Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
40 |
+
<li><a id="toc-Syntax" href="#Syntax">2 Syntax</a>
|
41 |
+
<ul class="toc-numbered-mark">
|
42 |
+
<li><a id="toc-Quoting-and-escaping" href="#Quoting-and-escaping">2.1 Quoting and escaping</a>
|
43 |
+
<ul class="toc-numbered-mark">
|
44 |
+
<li><a id="toc-Examples" href="#Examples">2.1.1 Examples</a></li>
|
45 |
+
</ul></li>
|
46 |
+
<li><a id="toc-Date" href="#Date">2.2 Date</a></li>
|
47 |
+
<li><a id="toc-Time-duration" href="#Time-duration">2.3 Time duration</a>
|
48 |
+
<ul class="toc-numbered-mark">
|
49 |
+
<li><a id="toc-Examples-1" href="#Examples-1">2.3.1 Examples</a></li>
|
50 |
+
</ul></li>
|
51 |
+
<li><a id="toc-Video-size" href="#Video-size">2.4 Video size</a></li>
|
52 |
+
<li><a id="toc-Video-rate" href="#Video-rate">2.5 Video rate</a></li>
|
53 |
+
<li><a id="toc-Ratio" href="#Ratio">2.6 Ratio</a></li>
|
54 |
+
<li><a id="toc-Color" href="#Color">2.7 Color</a></li>
|
55 |
+
<li><a id="toc-Channel-Layout" href="#Channel-Layout">2.8 Channel Layout</a></li>
|
56 |
+
</ul></li>
|
57 |
+
<li><a id="toc-Expression-Evaluation" href="#Expression-Evaluation">3 Expression Evaluation</a></li>
|
58 |
+
<li><a id="toc-See-Also" href="#See-Also">4 See Also</a></li>
|
59 |
+
<li><a id="toc-Authors" href="#Authors">5 Authors</a></li>
|
60 |
+
</ul>
|
61 |
+
</div>
|
62 |
+
</div>
|
63 |
+
<div class="chapter-level-extent" id="Description">
|
64 |
+
<h2 class="chapter">1 Description</h2>
|
65 |
+
|
66 |
+
<p>This document describes some generic features and utilities provided
|
67 |
+
by the libavutil library.
|
68 |
+
</p>
|
69 |
+
|
70 |
+
</div>
|
71 |
+
<div class="chapter-level-extent" id="Syntax">
|
72 |
+
<h2 class="chapter">2 Syntax</h2>
|
73 |
+
|
74 |
+
<p>This section documents the syntax and formats employed by the FFmpeg
|
75 |
+
libraries and tools.
|
76 |
+
</p>
|
77 |
+
<a class="anchor" id="quoting_005fand_005fescaping"></a><ul class="mini-toc">
|
78 |
+
<li><a href="#Quoting-and-escaping" accesskey="1">Quoting and escaping</a></li>
|
79 |
+
<li><a href="#Date" accesskey="2">Date</a></li>
|
80 |
+
<li><a href="#Time-duration" accesskey="3">Time duration</a></li>
|
81 |
+
<li><a href="#Video-size" accesskey="4">Video size</a></li>
|
82 |
+
<li><a href="#Video-rate" accesskey="5">Video rate</a></li>
|
83 |
+
<li><a href="#Ratio" accesskey="6">Ratio</a></li>
|
84 |
+
<li><a href="#Color" accesskey="7">Color</a></li>
|
85 |
+
<li><a href="#Channel-Layout" accesskey="8">Channel Layout</a></li>
|
86 |
+
</ul>
|
87 |
+
<div class="section-level-extent" id="Quoting-and-escaping">
|
88 |
+
<h3 class="section">2.1 Quoting and escaping</h3>
|
89 |
+
|
90 |
+
<p>FFmpeg adopts the following quoting and escaping mechanism, unless
|
91 |
+
explicitly specified. The following rules are applied:
|
92 |
+
</p>
|
93 |
+
<ul class="itemize mark-bullet">
|
94 |
+
<li>‘<samp class="samp">'</samp>’ and ‘<samp class="samp">\</samp>’ are special characters (respectively used for
|
95 |
+
quoting and escaping). In addition to them, there might be other
|
96 |
+
special characters depending on the specific syntax where the escaping
|
97 |
+
and quoting are employed.
|
98 |
+
|
99 |
+
</li><li>A special character is escaped by prefixing it with a ‘<samp class="samp">\</samp>’.
|
100 |
+
|
101 |
+
</li><li>All characters enclosed between ‘<samp class="samp">''</samp>’ are included literally in the
|
102 |
+
parsed string. The quote character ‘<samp class="samp">'</samp>’ itself cannot be quoted,
|
103 |
+
so you may need to close the quote and escape it.
|
104 |
+
|
105 |
+
</li><li>Leading and trailing whitespaces, unless escaped or quoted, are
|
106 |
+
removed from the parsed string.
|
107 |
+
</li></ul>
|
108 |
+
|
109 |
+
<p>Note that you may need to add a second level of escaping when using
|
110 |
+
the command line or a script, which depends on the syntax of the
|
111 |
+
adopted shell language.
|
112 |
+
</p>
|
113 |
+
<p>The function <code class="code">av_get_token</code> defined in
|
114 |
+
<samp class="file">libavutil/avstring.h</samp> can be used to parse a token quoted or
|
115 |
+
escaped according to the rules defined above.
|
116 |
+
</p>
|
117 |
+
<p>The tool <samp class="file">tools/ffescape</samp> in the FFmpeg source tree can be used
|
118 |
+
to automatically quote or escape a string in a script.
|
119 |
+
</p>
|
120 |
+
<ul class="mini-toc">
|
121 |
+
<li><a href="#Examples" accesskey="1">Examples</a></li>
|
122 |
+
</ul>
|
123 |
+
<div class="subsection-level-extent" id="Examples">
|
124 |
+
<h4 class="subsection">2.1.1 Examples</h4>
|
125 |
+
|
126 |
+
<ul class="itemize mark-bullet">
|
127 |
+
<li>Escape the string <code class="code">Crime d'Amour</code> containing the <code class="code">'</code> special
|
128 |
+
character:
|
129 |
+
<div class="example">
|
130 |
+
<pre class="example-preformatted">Crime d\'Amour
|
131 |
+
</pre></div>
|
132 |
+
|
133 |
+
</li><li>The string above contains a quote, so the <code class="code">'</code> needs to be escaped
|
134 |
+
when quoting it:
|
135 |
+
<div class="example">
|
136 |
+
<pre class="example-preformatted">'Crime d'\''Amour'
|
137 |
+
</pre></div>
|
138 |
+
|
139 |
+
</li><li>Include leading or trailing whitespaces using quoting:
|
140 |
+
<div class="example">
|
141 |
+
<pre class="example-preformatted">' this string starts and ends with whitespaces '
|
142 |
+
</pre></div>
|
143 |
+
|
144 |
+
</li><li>Escaping and quoting can be mixed together:
|
145 |
+
<div class="example">
|
146 |
+
<pre class="example-preformatted">' The string '\'string\'' is a string '
|
147 |
+
</pre></div>
|
148 |
+
|
149 |
+
</li><li>To include a literal ‘<samp class="samp">\</samp>’ you can use either escaping or quoting:
|
150 |
+
<div class="example">
|
151 |
+
<pre class="example-preformatted">'c:\foo' can be written as c:\\foo
|
152 |
+
</pre></div>
|
153 |
+
</li></ul>
|
154 |
+
|
155 |
+
<a class="anchor" id="date-syntax"></a></div>
|
156 |
+
</div>
|
157 |
+
<div class="section-level-extent" id="Date">
|
158 |
+
<h3 class="section">2.2 Date</h3>
|
159 |
+
|
160 |
+
<p>The accepted syntax is:
|
161 |
+
</p><div class="example">
|
162 |
+
<pre class="example-preformatted">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
|
163 |
+
now
|
164 |
+
</pre></div>
|
165 |
+
|
166 |
+
<p>If the value is "now" it takes the current time.
|
167 |
+
</p>
|
168 |
+
<p>Time is local time unless Z is appended, in which case it is
|
169 |
+
interpreted as UTC.
|
170 |
+
If the year-month-day part is not specified it takes the current
|
171 |
+
year-month-day.
|
172 |
+
</p>
|
173 |
+
<a class="anchor" id="time-duration-syntax"></a></div>
|
174 |
+
<div class="section-level-extent" id="Time-duration">
|
175 |
+
<h3 class="section">2.3 Time duration</h3>
|
176 |
+
|
177 |
+
<p>There are two accepted syntaxes for expressing time duration.
|
178 |
+
</p>
|
179 |
+
<div class="example">
|
180 |
+
<pre class="example-preformatted">[-][<var class="var">HH</var>:]<var class="var">MM</var>:<var class="var">SS</var>[.<var class="var">m</var>...]
|
181 |
+
</pre></div>
|
182 |
+
|
183 |
+
<p><var class="var">HH</var> expresses the number of hours, <var class="var">MM</var> the number of minutes
|
184 |
+
for a maximum of 2 digits, and <var class="var">SS</var> the number of seconds for a
|
185 |
+
maximum of 2 digits. The <var class="var">m</var> at the end expresses decimal value for
|
186 |
+
<var class="var">SS</var>.
|
187 |
+
</p>
|
188 |
+
<p><em class="emph">or</em>
|
189 |
+
</p>
|
190 |
+
<div class="example">
|
191 |
+
<pre class="example-preformatted">[-]<var class="var">S</var>+[.<var class="var">m</var>...][s|ms|us]
|
192 |
+
</pre></div>
|
193 |
+
|
194 |
+
<p><var class="var">S</var> expresses the number of seconds, with the optional decimal part
|
195 |
+
<var class="var">m</var>. The optional literal suffixes ‘<samp class="samp">s</samp>’, ‘<samp class="samp">ms</samp>’ or ‘<samp class="samp">us</samp>’
|
196 |
+
indicate to interpret the value as seconds, milliseconds or microseconds,
|
197 |
+
respectively.
|
198 |
+
</p>
|
199 |
+
<p>In both expressions, the optional ‘<samp class="samp">-</samp>’ indicates negative duration.
|
200 |
+
</p>
|
201 |
+
<ul class="mini-toc">
|
202 |
+
<li><a href="#Examples-1" accesskey="1">Examples</a></li>
|
203 |
+
</ul>
|
204 |
+
<div class="subsection-level-extent" id="Examples-1">
|
205 |
+
<h4 class="subsection">2.3.1 Examples</h4>
|
206 |
+
|
207 |
+
<p>The following examples are all valid time duration:
|
208 |
+
</p>
|
209 |
+
<dl class="table">
|
210 |
+
<dt>‘<samp class="samp">55</samp>’</dt>
|
211 |
+
<dd><p>55 seconds
|
212 |
+
</p>
|
213 |
+
</dd>
|
214 |
+
<dt>‘<samp class="samp">0.2</samp>’</dt>
|
215 |
+
<dd><p>0.2 seconds
|
216 |
+
</p>
|
217 |
+
</dd>
|
218 |
+
<dt>‘<samp class="samp">200ms</samp>’</dt>
|
219 |
+
<dd><p>200 milliseconds, that’s 0.2s
|
220 |
+
</p>
|
221 |
+
</dd>
|
222 |
+
<dt>‘<samp class="samp">200000us</samp>’</dt>
|
223 |
+
<dd><p>200000 microseconds, that’s 0.2s
|
224 |
+
</p>
|
225 |
+
</dd>
|
226 |
+
<dt>‘<samp class="samp">12:03:45</samp>’</dt>
|
227 |
+
<dd><p>12 hours, 03 minutes and 45 seconds
|
228 |
+
</p>
|
229 |
+
</dd>
|
230 |
+
<dt>‘<samp class="samp">23.189</samp>’</dt>
|
231 |
+
<dd><p>23.189 seconds
|
232 |
+
</p></dd>
|
233 |
+
</dl>
|
234 |
+
|
235 |
+
<a class="anchor" id="video-size-syntax"></a></div>
|
236 |
+
</div>
|
237 |
+
<div class="section-level-extent" id="Video-size">
|
238 |
+
<h3 class="section">2.4 Video size</h3>
|
239 |
+
<p>Specify the size of the sourced video, it may be a string of the form
|
240 |
+
<var class="var">width</var>x<var class="var">height</var>, or the name of a size abbreviation.
|
241 |
+
</p>
|
242 |
+
<p>The following abbreviations are recognized:
|
243 |
+
</p><dl class="table">
|
244 |
+
<dt>‘<samp class="samp">ntsc</samp>’</dt>
|
245 |
+
<dd><p>720x480
|
246 |
+
</p></dd>
|
247 |
+
<dt>‘<samp class="samp">pal</samp>’</dt>
|
248 |
+
<dd><p>720x576
|
249 |
+
</p></dd>
|
250 |
+
<dt>‘<samp class="samp">qntsc</samp>’</dt>
|
251 |
+
<dd><p>352x240
|
252 |
+
</p></dd>
|
253 |
+
<dt>‘<samp class="samp">qpal</samp>’</dt>
|
254 |
+
<dd><p>352x288
|
255 |
+
</p></dd>
|
256 |
+
<dt>‘<samp class="samp">sntsc</samp>’</dt>
|
257 |
+
<dd><p>640x480
|
258 |
+
</p></dd>
|
259 |
+
<dt>‘<samp class="samp">spal</samp>’</dt>
|
260 |
+
<dd><p>768x576
|
261 |
+
</p></dd>
|
262 |
+
<dt>‘<samp class="samp">film</samp>’</dt>
|
263 |
+
<dd><p>352x240
|
264 |
+
</p></dd>
|
265 |
+
<dt>‘<samp class="samp">ntsc-film</samp>’</dt>
|
266 |
+
<dd><p>352x240
|
267 |
+
</p></dd>
|
268 |
+
<dt>‘<samp class="samp">sqcif</samp>’</dt>
|
269 |
+
<dd><p>128x96
|
270 |
+
</p></dd>
|
271 |
+
<dt>‘<samp class="samp">qcif</samp>’</dt>
|
272 |
+
<dd><p>176x144
|
273 |
+
</p></dd>
|
274 |
+
<dt>‘<samp class="samp">cif</samp>’</dt>
|
275 |
+
<dd><p>352x288
|
276 |
+
</p></dd>
|
277 |
+
<dt>‘<samp class="samp">4cif</samp>’</dt>
|
278 |
+
<dd><p>704x576
|
279 |
+
</p></dd>
|
280 |
+
<dt>‘<samp class="samp">16cif</samp>’</dt>
|
281 |
+
<dd><p>1408x1152
|
282 |
+
</p></dd>
|
283 |
+
<dt>‘<samp class="samp">qqvga</samp>’</dt>
|
284 |
+
<dd><p>160x120
|
285 |
+
</p></dd>
|
286 |
+
<dt>‘<samp class="samp">qvga</samp>’</dt>
|
287 |
+
<dd><p>320x240
|
288 |
+
</p></dd>
|
289 |
+
<dt>‘<samp class="samp">vga</samp>’</dt>
|
290 |
+
<dd><p>640x480
|
291 |
+
</p></dd>
|
292 |
+
<dt>‘<samp class="samp">svga</samp>’</dt>
|
293 |
+
<dd><p>800x600
|
294 |
+
</p></dd>
|
295 |
+
<dt>‘<samp class="samp">xga</samp>’</dt>
|
296 |
+
<dd><p>1024x768
|
297 |
+
</p></dd>
|
298 |
+
<dt>‘<samp class="samp">uxga</samp>’</dt>
|
299 |
+
<dd><p>1600x1200
|
300 |
+
</p></dd>
|
301 |
+
<dt>‘<samp class="samp">qxga</samp>’</dt>
|
302 |
+
<dd><p>2048x1536
|
303 |
+
</p></dd>
|
304 |
+
<dt>‘<samp class="samp">sxga</samp>’</dt>
|
305 |
+
<dd><p>1280x1024
|
306 |
+
</p></dd>
|
307 |
+
<dt>‘<samp class="samp">qsxga</samp>’</dt>
|
308 |
+
<dd><p>2560x2048
|
309 |
+
</p></dd>
|
310 |
+
<dt>‘<samp class="samp">hsxga</samp>’</dt>
|
311 |
+
<dd><p>5120x4096
|
312 |
+
</p></dd>
|
313 |
+
<dt>‘<samp class="samp">wvga</samp>’</dt>
|
314 |
+
<dd><p>852x480
|
315 |
+
</p></dd>
|
316 |
+
<dt>‘<samp class="samp">wxga</samp>’</dt>
|
317 |
+
<dd><p>1366x768
|
318 |
+
</p></dd>
|
319 |
+
<dt>‘<samp class="samp">wsxga</samp>’</dt>
|
320 |
+
<dd><p>1600x1024
|
321 |
+
</p></dd>
|
322 |
+
<dt>‘<samp class="samp">wuxga</samp>’</dt>
|
323 |
+
<dd><p>1920x1200
|
324 |
+
</p></dd>
|
325 |
+
<dt>‘<samp class="samp">woxga</samp>’</dt>
|
326 |
+
<dd><p>2560x1600
|
327 |
+
</p></dd>
|
328 |
+
<dt>‘<samp class="samp">wqsxga</samp>’</dt>
|
329 |
+
<dd><p>3200x2048
|
330 |
+
</p></dd>
|
331 |
+
<dt>‘<samp class="samp">wquxga</samp>’</dt>
|
332 |
+
<dd><p>3840x2400
|
333 |
+
</p></dd>
|
334 |
+
<dt>‘<samp class="samp">whsxga</samp>’</dt>
|
335 |
+
<dd><p>6400x4096
|
336 |
+
</p></dd>
|
337 |
+
<dt>‘<samp class="samp">whuxga</samp>’</dt>
|
338 |
+
<dd><p>7680x4800
|
339 |
+
</p></dd>
|
340 |
+
<dt>‘<samp class="samp">cga</samp>’</dt>
|
341 |
+
<dd><p>320x200
|
342 |
+
</p></dd>
|
343 |
+
<dt>‘<samp class="samp">ega</samp>’</dt>
|
344 |
+
<dd><p>640x350
|
345 |
+
</p></dd>
|
346 |
+
<dt>‘<samp class="samp">hd480</samp>’</dt>
|
347 |
+
<dd><p>852x480
|
348 |
+
</p></dd>
|
349 |
+
<dt>‘<samp class="samp">hd720</samp>’</dt>
|
350 |
+
<dd><p>1280x720
|
351 |
+
</p></dd>
|
352 |
+
<dt>‘<samp class="samp">hd1080</samp>’</dt>
|
353 |
+
<dd><p>1920x1080
|
354 |
+
</p></dd>
|
355 |
+
<dt>‘<samp class="samp">2k</samp>’</dt>
|
356 |
+
<dd><p>2048x1080
|
357 |
+
</p></dd>
|
358 |
+
<dt>‘<samp class="samp">2kflat</samp>’</dt>
|
359 |
+
<dd><p>1998x1080
|
360 |
+
</p></dd>
|
361 |
+
<dt>‘<samp class="samp">2kscope</samp>’</dt>
|
362 |
+
<dd><p>2048x858
|
363 |
+
</p></dd>
|
364 |
+
<dt>‘<samp class="samp">4k</samp>’</dt>
|
365 |
+
<dd><p>4096x2160
|
366 |
+
</p></dd>
|
367 |
+
<dt>‘<samp class="samp">4kflat</samp>’</dt>
|
368 |
+
<dd><p>3996x2160
|
369 |
+
</p></dd>
|
370 |
+
<dt>‘<samp class="samp">4kscope</samp>’</dt>
|
371 |
+
<dd><p>4096x1716
|
372 |
+
</p></dd>
|
373 |
+
<dt>‘<samp class="samp">nhd</samp>’</dt>
|
374 |
+
<dd><p>640x360
|
375 |
+
</p></dd>
|
376 |
+
<dt>‘<samp class="samp">hqvga</samp>’</dt>
|
377 |
+
<dd><p>240x160
|
378 |
+
</p></dd>
|
379 |
+
<dt>‘<samp class="samp">wqvga</samp>’</dt>
|
380 |
+
<dd><p>400x240
|
381 |
+
</p></dd>
|
382 |
+
<dt>‘<samp class="samp">fwqvga</samp>’</dt>
|
383 |
+
<dd><p>432x240
|
384 |
+
</p></dd>
|
385 |
+
<dt>‘<samp class="samp">hvga</samp>’</dt>
|
386 |
+
<dd><p>480x320
|
387 |
+
</p></dd>
|
388 |
+
<dt>‘<samp class="samp">qhd</samp>’</dt>
|
389 |
+
<dd><p>960x540
|
390 |
+
</p></dd>
|
391 |
+
<dt>‘<samp class="samp">2kdci</samp>’</dt>
|
392 |
+
<dd><p>2048x1080
|
393 |
+
</p></dd>
|
394 |
+
<dt>‘<samp class="samp">4kdci</samp>’</dt>
|
395 |
+
<dd><p>4096x2160
|
396 |
+
</p></dd>
|
397 |
+
<dt>‘<samp class="samp">uhd2160</samp>’</dt>
|
398 |
+
<dd><p>3840x2160
|
399 |
+
</p></dd>
|
400 |
+
<dt>‘<samp class="samp">uhd4320</samp>’</dt>
|
401 |
+
<dd><p>7680x4320
|
402 |
+
</p></dd>
|
403 |
+
</dl>
|
404 |
+
|
405 |
+
<a class="anchor" id="video-rate-syntax"></a></div>
|
406 |
+
<div class="section-level-extent" id="Video-rate">
|
407 |
+
<h3 class="section">2.5 Video rate</h3>
|
408 |
+
|
409 |
+
<p>Specify the frame rate of a video, expressed as the number of frames
|
410 |
+
generated per second. It has to be a string in the format
|
411 |
+
<var class="var">frame_rate_num</var>/<var class="var">frame_rate_den</var>, an integer number, a float
|
412 |
+
number or a valid video frame rate abbreviation.
|
413 |
+
</p>
|
414 |
+
<p>The following abbreviations are recognized:
|
415 |
+
</p><dl class="table">
|
416 |
+
<dt>‘<samp class="samp">ntsc</samp>’</dt>
|
417 |
+
<dd><p>30000/1001
|
418 |
+
</p></dd>
|
419 |
+
<dt>‘<samp class="samp">pal</samp>’</dt>
|
420 |
+
<dd><p>25/1
|
421 |
+
</p></dd>
|
422 |
+
<dt>‘<samp class="samp">qntsc</samp>’</dt>
|
423 |
+
<dd><p>30000/1001
|
424 |
+
</p></dd>
|
425 |
+
<dt>‘<samp class="samp">qpal</samp>’</dt>
|
426 |
+
<dd><p>25/1
|
427 |
+
</p></dd>
|
428 |
+
<dt>‘<samp class="samp">sntsc</samp>’</dt>
|
429 |
+
<dd><p>30000/1001
|
430 |
+
</p></dd>
|
431 |
+
<dt>‘<samp class="samp">spal</samp>’</dt>
|
432 |
+
<dd><p>25/1
|
433 |
+
</p></dd>
|
434 |
+
<dt>‘<samp class="samp">film</samp>’</dt>
|
435 |
+
<dd><p>24/1
|
436 |
+
</p></dd>
|
437 |
+
<dt>‘<samp class="samp">ntsc-film</samp>’</dt>
|
438 |
+
<dd><p>24000/1001
|
439 |
+
</p></dd>
|
440 |
+
</dl>
|
441 |
+
|
442 |
+
<a class="anchor" id="ratio-syntax"></a></div>
|
443 |
+
<div class="section-level-extent" id="Ratio">
|
444 |
+
<h3 class="section">2.6 Ratio</h3>
|
445 |
+
|
446 |
+
<p>A ratio can be expressed as an expression, or in the form
|
447 |
+
<var class="var">numerator</var>:<var class="var">denominator</var>.
|
448 |
+
</p>
|
449 |
+
<p>Note that a ratio with infinite (1/0) or negative value is
|
450 |
+
considered valid, so you should check on the returned value if you
|
451 |
+
want to exclude those values.
|
452 |
+
</p>
|
453 |
+
<p>The undefined value can be expressed using the "0:0" string.
|
454 |
+
</p>
|
455 |
+
<a class="anchor" id="color-syntax"></a></div>
|
456 |
+
<div class="section-level-extent" id="Color">
|
457 |
+
<h3 class="section">2.7 Color</h3>
|
458 |
+
|
459 |
+
<p>It can be the name of a color as defined below (case insensitive match) or a
|
460 |
+
<code class="code">[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
|
461 |
+
representing the alpha component.
|
462 |
+
</p>
|
463 |
+
<p>The alpha component may be a string composed by "0x" followed by an
|
464 |
+
hexadecimal number or a decimal number between 0.0 and 1.0, which
|
465 |
+
represents the opacity value (‘<samp class="samp">0x00</samp>’ or ‘<samp class="samp">0.0</samp>’ means completely
|
466 |
+
transparent, ‘<samp class="samp">0xff</samp>’ or ‘<samp class="samp">1.0</samp>’ completely opaque). If the alpha
|
467 |
+
component is not specified then ‘<samp class="samp">0xff</samp>’ is assumed.
|
468 |
+
</p>
|
469 |
+
<p>The string ‘<samp class="samp">random</samp>’ will result in a random color.
|
470 |
+
</p>
|
471 |
+
<p>The following names of colors are recognized:
|
472 |
+
</p><dl class="table">
|
473 |
+
<dt>‘<samp class="samp">AliceBlue</samp>’</dt>
|
474 |
+
<dd><p>0xF0F8FF
|
475 |
+
</p></dd>
|
476 |
+
<dt>‘<samp class="samp">AntiqueWhite</samp>’</dt>
|
477 |
+
<dd><p>0xFAEBD7
|
478 |
+
</p></dd>
|
479 |
+
<dt>‘<samp class="samp">Aqua</samp>’</dt>
|
480 |
+
<dd><p>0x00FFFF
|
481 |
+
</p></dd>
|
482 |
+
<dt>‘<samp class="samp">Aquamarine</samp>’</dt>
|
483 |
+
<dd><p>0x7FFFD4
|
484 |
+
</p></dd>
|
485 |
+
<dt>‘<samp class="samp">Azure</samp>’</dt>
|
486 |
+
<dd><p>0xF0FFFF
|
487 |
+
</p></dd>
|
488 |
+
<dt>‘<samp class="samp">Beige</samp>’</dt>
|
489 |
+
<dd><p>0xF5F5DC
|
490 |
+
</p></dd>
|
491 |
+
<dt>‘<samp class="samp">Bisque</samp>’</dt>
|
492 |
+
<dd><p>0xFFE4C4
|
493 |
+
</p></dd>
|
494 |
+
<dt>‘<samp class="samp">Black</samp>’</dt>
|
495 |
+
<dd><p>0x000000
|
496 |
+
</p></dd>
|
497 |
+
<dt>‘<samp class="samp">BlanchedAlmond</samp>’</dt>
|
498 |
+
<dd><p>0xFFEBCD
|
499 |
+
</p></dd>
|
500 |
+
<dt>‘<samp class="samp">Blue</samp>’</dt>
|
501 |
+
<dd><p>0x0000FF
|
502 |
+
</p></dd>
|
503 |
+
<dt>‘<samp class="samp">BlueViolet</samp>’</dt>
|
504 |
+
<dd><p>0x8A2BE2
|
505 |
+
</p></dd>
|
506 |
+
<dt>‘<samp class="samp">Brown</samp>’</dt>
|
507 |
+
<dd><p>0xA52A2A
|
508 |
+
</p></dd>
|
509 |
+
<dt>‘<samp class="samp">BurlyWood</samp>’</dt>
|
510 |
+
<dd><p>0xDEB887
|
511 |
+
</p></dd>
|
512 |
+
<dt>‘<samp class="samp">CadetBlue</samp>’</dt>
|
513 |
+
<dd><p>0x5F9EA0
|
514 |
+
</p></dd>
|
515 |
+
<dt>‘<samp class="samp">Chartreuse</samp>’</dt>
|
516 |
+
<dd><p>0x7FFF00
|
517 |
+
</p></dd>
|
518 |
+
<dt>‘<samp class="samp">Chocolate</samp>’</dt>
|
519 |
+
<dd><p>0xD2691E
|
520 |
+
</p></dd>
|
521 |
+
<dt>‘<samp class="samp">Coral</samp>’</dt>
|
522 |
+
<dd><p>0xFF7F50
|
523 |
+
</p></dd>
|
524 |
+
<dt>‘<samp class="samp">CornflowerBlue</samp>’</dt>
|
525 |
+
<dd><p>0x6495ED
|
526 |
+
</p></dd>
|
527 |
+
<dt>‘<samp class="samp">Cornsilk</samp>’</dt>
|
528 |
+
<dd><p>0xFFF8DC
|
529 |
+
</p></dd>
|
530 |
+
<dt>‘<samp class="samp">Crimson</samp>’</dt>
|
531 |
+
<dd><p>0xDC143C
|
532 |
+
</p></dd>
|
533 |
+
<dt>‘<samp class="samp">Cyan</samp>’</dt>
|
534 |
+
<dd><p>0x00FFFF
|
535 |
+
</p></dd>
|
536 |
+
<dt>‘<samp class="samp">DarkBlue</samp>’</dt>
|
537 |
+
<dd><p>0x00008B
|
538 |
+
</p></dd>
|
539 |
+
<dt>‘<samp class="samp">DarkCyan</samp>’</dt>
|
540 |
+
<dd><p>0x008B8B
|
541 |
+
</p></dd>
|
542 |
+
<dt>‘<samp class="samp">DarkGoldenRod</samp>’</dt>
|
543 |
+
<dd><p>0xB8860B
|
544 |
+
</p></dd>
|
545 |
+
<dt>‘<samp class="samp">DarkGray</samp>’</dt>
|
546 |
+
<dd><p>0xA9A9A9
|
547 |
+
</p></dd>
|
548 |
+
<dt>‘<samp class="samp">DarkGreen</samp>’</dt>
|
549 |
+
<dd><p>0x006400
|
550 |
+
</p></dd>
|
551 |
+
<dt>‘<samp class="samp">DarkKhaki</samp>’</dt>
|
552 |
+
<dd><p>0xBDB76B
|
553 |
+
</p></dd>
|
554 |
+
<dt>‘<samp class="samp">DarkMagenta</samp>’</dt>
|
555 |
+
<dd><p>0x8B008B
|
556 |
+
</p></dd>
|
557 |
+
<dt>‘<samp class="samp">DarkOliveGreen</samp>’</dt>
|
558 |
+
<dd><p>0x556B2F
|
559 |
+
</p></dd>
|
560 |
+
<dt>‘<samp class="samp">Darkorange</samp>’</dt>
|
561 |
+
<dd><p>0xFF8C00
|
562 |
+
</p></dd>
|
563 |
+
<dt>‘<samp class="samp">DarkOrchid</samp>’</dt>
|
564 |
+
<dd><p>0x9932CC
|
565 |
+
</p></dd>
|
566 |
+
<dt>‘<samp class="samp">DarkRed</samp>’</dt>
|
567 |
+
<dd><p>0x8B0000
|
568 |
+
</p></dd>
|
569 |
+
<dt>‘<samp class="samp">DarkSalmon</samp>’</dt>
|
570 |
+
<dd><p>0xE9967A
|
571 |
+
</p></dd>
|
572 |
+
<dt>‘<samp class="samp">DarkSeaGreen</samp>’</dt>
|
573 |
+
<dd><p>0x8FBC8F
|
574 |
+
</p></dd>
|
575 |
+
<dt>‘<samp class="samp">DarkSlateBlue</samp>’</dt>
|
576 |
+
<dd><p>0x483D8B
|
577 |
+
</p></dd>
|
578 |
+
<dt>‘<samp class="samp">DarkSlateGray</samp>’</dt>
|
579 |
+
<dd><p>0x2F4F4F
|
580 |
+
</p></dd>
|
581 |
+
<dt>‘<samp class="samp">DarkTurquoise</samp>’</dt>
|
582 |
+
<dd><p>0x00CED1
|
583 |
+
</p></dd>
|
584 |
+
<dt>‘<samp class="samp">DarkViolet</samp>’</dt>
|
585 |
+
<dd><p>0x9400D3
|
586 |
+
</p></dd>
|
587 |
+
<dt>‘<samp class="samp">DeepPink</samp>’</dt>
|
588 |
+
<dd><p>0xFF1493
|
589 |
+
</p></dd>
|
590 |
+
<dt>‘<samp class="samp">DeepSkyBlue</samp>’</dt>
|
591 |
+
<dd><p>0x00BFFF
|
592 |
+
</p></dd>
|
593 |
+
<dt>‘<samp class="samp">DimGray</samp>’</dt>
|
594 |
+
<dd><p>0x696969
|
595 |
+
</p></dd>
|
596 |
+
<dt>‘<samp class="samp">DodgerBlue</samp>’</dt>
|
597 |
+
<dd><p>0x1E90FF
|
598 |
+
</p></dd>
|
599 |
+
<dt>‘<samp class="samp">FireBrick</samp>’</dt>
|
600 |
+
<dd><p>0xB22222
|
601 |
+
</p></dd>
|
602 |
+
<dt>‘<samp class="samp">FloralWhite</samp>’</dt>
|
603 |
+
<dd><p>0xFFFAF0
|
604 |
+
</p></dd>
|
605 |
+
<dt>‘<samp class="samp">ForestGreen</samp>’</dt>
|
606 |
+
<dd><p>0x228B22
|
607 |
+
</p></dd>
|
608 |
+
<dt>‘<samp class="samp">Fuchsia</samp>’</dt>
|
609 |
+
<dd><p>0xFF00FF
|
610 |
+
</p></dd>
|
611 |
+
<dt>‘<samp class="samp">Gainsboro</samp>’</dt>
|
612 |
+
<dd><p>0xDCDCDC
|
613 |
+
</p></dd>
|
614 |
+
<dt>‘<samp class="samp">GhostWhite</samp>’</dt>
|
615 |
+
<dd><p>0xF8F8FF
|
616 |
+
</p></dd>
|
617 |
+
<dt>‘<samp class="samp">Gold</samp>’</dt>
|
618 |
+
<dd><p>0xFFD700
|
619 |
+
</p></dd>
|
620 |
+
<dt>‘<samp class="samp">GoldenRod</samp>’</dt>
|
621 |
+
<dd><p>0xDAA520
|
622 |
+
</p></dd>
|
623 |
+
<dt>‘<samp class="samp">Gray</samp>’</dt>
|
624 |
+
<dd><p>0x808080
|
625 |
+
</p></dd>
|
626 |
+
<dt>‘<samp class="samp">Green</samp>’</dt>
|
627 |
+
<dd><p>0x008000
|
628 |
+
</p></dd>
|
629 |
+
<dt>‘<samp class="samp">GreenYellow</samp>’</dt>
|
630 |
+
<dd><p>0xADFF2F
|
631 |
+
</p></dd>
|
632 |
+
<dt>‘<samp class="samp">HoneyDew</samp>’</dt>
|
633 |
+
<dd><p>0xF0FFF0
|
634 |
+
</p></dd>
|
635 |
+
<dt>‘<samp class="samp">HotPink</samp>’</dt>
|
636 |
+
<dd><p>0xFF69B4
|
637 |
+
</p></dd>
|
638 |
+
<dt>‘<samp class="samp">IndianRed</samp>’</dt>
|
639 |
+
<dd><p>0xCD5C5C
|
640 |
+
</p></dd>
|
641 |
+
<dt>‘<samp class="samp">Indigo</samp>’</dt>
|
642 |
+
<dd><p>0x4B0082
|
643 |
+
</p></dd>
|
644 |
+
<dt>‘<samp class="samp">Ivory</samp>’</dt>
|
645 |
+
<dd><p>0xFFFFF0
|
646 |
+
</p></dd>
|
647 |
+
<dt>‘<samp class="samp">Khaki</samp>’</dt>
|
648 |
+
<dd><p>0xF0E68C
|
649 |
+
</p></dd>
|
650 |
+
<dt>‘<samp class="samp">Lavender</samp>’</dt>
|
651 |
+
<dd><p>0xE6E6FA
|
652 |
+
</p></dd>
|
653 |
+
<dt>‘<samp class="samp">LavenderBlush</samp>’</dt>
|
654 |
+
<dd><p>0xFFF0F5
|
655 |
+
</p></dd>
|
656 |
+
<dt>‘<samp class="samp">LawnGreen</samp>’</dt>
|
657 |
+
<dd><p>0x7CFC00
|
658 |
+
</p></dd>
|
659 |
+
<dt>‘<samp class="samp">LemonChiffon</samp>’</dt>
|
660 |
+
<dd><p>0xFFFACD
|
661 |
+
</p></dd>
|
662 |
+
<dt>‘<samp class="samp">LightBlue</samp>’</dt>
|
663 |
+
<dd><p>0xADD8E6
|
664 |
+
</p></dd>
|
665 |
+
<dt>‘<samp class="samp">LightCoral</samp>’</dt>
|
666 |
+
<dd><p>0xF08080
|
667 |
+
</p></dd>
|
668 |
+
<dt>‘<samp class="samp">LightCyan</samp>’</dt>
|
669 |
+
<dd><p>0xE0FFFF
|
670 |
+
</p></dd>
|
671 |
+
<dt>‘<samp class="samp">LightGoldenRodYellow</samp>’</dt>
|
672 |
+
<dd><p>0xFAFAD2
|
673 |
+
</p></dd>
|
674 |
+
<dt>‘<samp class="samp">LightGreen</samp>’</dt>
|
675 |
+
<dd><p>0x90EE90
|
676 |
+
</p></dd>
|
677 |
+
<dt>‘<samp class="samp">LightGrey</samp>’</dt>
|
678 |
+
<dd><p>0xD3D3D3
|
679 |
+
</p></dd>
|
680 |
+
<dt>‘<samp class="samp">LightPink</samp>’</dt>
|
681 |
+
<dd><p>0xFFB6C1
|
682 |
+
</p></dd>
|
683 |
+
<dt>‘<samp class="samp">LightSalmon</samp>’</dt>
|
684 |
+
<dd><p>0xFFA07A
|
685 |
+
</p></dd>
|
686 |
+
<dt>‘<samp class="samp">LightSeaGreen</samp>’</dt>
|
687 |
+
<dd><p>0x20B2AA
|
688 |
+
</p></dd>
|
689 |
+
<dt>‘<samp class="samp">LightSkyBlue</samp>’</dt>
|
690 |
+
<dd><p>0x87CEFA
|
691 |
+
</p></dd>
|
692 |
+
<dt>‘<samp class="samp">LightSlateGray</samp>’</dt>
|
693 |
+
<dd><p>0x778899
|
694 |
+
</p></dd>
|
695 |
+
<dt>‘<samp class="samp">LightSteelBlue</samp>’</dt>
|
696 |
+
<dd><p>0xB0C4DE
|
697 |
+
</p></dd>
|
698 |
+
<dt>‘<samp class="samp">LightYellow</samp>’</dt>
|
699 |
+
<dd><p>0xFFFFE0
|
700 |
+
</p></dd>
|
701 |
+
<dt>‘<samp class="samp">Lime</samp>’</dt>
|
702 |
+
<dd><p>0x00FF00
|
703 |
+
</p></dd>
|
704 |
+
<dt>‘<samp class="samp">LimeGreen</samp>’</dt>
|
705 |
+
<dd><p>0x32CD32
|
706 |
+
</p></dd>
|
707 |
+
<dt>‘<samp class="samp">Linen</samp>’</dt>
|
708 |
+
<dd><p>0xFAF0E6
|
709 |
+
</p></dd>
|
710 |
+
<dt>‘<samp class="samp">Magenta</samp>’</dt>
|
711 |
+
<dd><p>0xFF00FF
|
712 |
+
</p></dd>
|
713 |
+
<dt>‘<samp class="samp">Maroon</samp>’</dt>
|
714 |
+
<dd><p>0x800000
|
715 |
+
</p></dd>
|
716 |
+
<dt>‘<samp class="samp">MediumAquaMarine</samp>’</dt>
|
717 |
+
<dd><p>0x66CDAA
|
718 |
+
</p></dd>
|
719 |
+
<dt>‘<samp class="samp">MediumBlue</samp>’</dt>
|
720 |
+
<dd><p>0x0000CD
|
721 |
+
</p></dd>
|
722 |
+
<dt>‘<samp class="samp">MediumOrchid</samp>’</dt>
|
723 |
+
<dd><p>0xBA55D3
|
724 |
+
</p></dd>
|
725 |
+
<dt>‘<samp class="samp">MediumPurple</samp>’</dt>
|
726 |
+
<dd><p>0x9370D8
|
727 |
+
</p></dd>
|
728 |
+
<dt>‘<samp class="samp">MediumSeaGreen</samp>’</dt>
|
729 |
+
<dd><p>0x3CB371
|
730 |
+
</p></dd>
|
731 |
+
<dt>‘<samp class="samp">MediumSlateBlue</samp>’</dt>
|
732 |
+
<dd><p>0x7B68EE
|
733 |
+
</p></dd>
|
734 |
+
<dt>‘<samp class="samp">MediumSpringGreen</samp>’</dt>
|
735 |
+
<dd><p>0x00FA9A
|
736 |
+
</p></dd>
|
737 |
+
<dt>‘<samp class="samp">MediumTurquoise</samp>’</dt>
|
738 |
+
<dd><p>0x48D1CC
|
739 |
+
</p></dd>
|
740 |
+
<dt>‘<samp class="samp">MediumVioletRed</samp>’</dt>
|
741 |
+
<dd><p>0xC71585
|
742 |
+
</p></dd>
|
743 |
+
<dt>‘<samp class="samp">MidnightBlue</samp>’</dt>
|
744 |
+
<dd><p>0x191970
|
745 |
+
</p></dd>
|
746 |
+
<dt>‘<samp class="samp">MintCream</samp>’</dt>
|
747 |
+
<dd><p>0xF5FFFA
|
748 |
+
</p></dd>
|
749 |
+
<dt>‘<samp class="samp">MistyRose</samp>’</dt>
|
750 |
+
<dd><p>0xFFE4E1
|
751 |
+
</p></dd>
|
752 |
+
<dt>‘<samp class="samp">Moccasin</samp>’</dt>
|
753 |
+
<dd><p>0xFFE4B5
|
754 |
+
</p></dd>
|
755 |
+
<dt>‘<samp class="samp">NavajoWhite</samp>’</dt>
|
756 |
+
<dd><p>0xFFDEAD
|
757 |
+
</p></dd>
|
758 |
+
<dt>‘<samp class="samp">Navy</samp>’</dt>
|
759 |
+
<dd><p>0x000080
|
760 |
+
</p></dd>
|
761 |
+
<dt>‘<samp class="samp">OldLace</samp>’</dt>
|
762 |
+
<dd><p>0xFDF5E6
|
763 |
+
</p></dd>
|
764 |
+
<dt>‘<samp class="samp">Olive</samp>’</dt>
|
765 |
+
<dd><p>0x808000
|
766 |
+
</p></dd>
|
767 |
+
<dt>‘<samp class="samp">OliveDrab</samp>’</dt>
|
768 |
+
<dd><p>0x6B8E23
|
769 |
+
</p></dd>
|
770 |
+
<dt>‘<samp class="samp">Orange</samp>’</dt>
|
771 |
+
<dd><p>0xFFA500
|
772 |
+
</p></dd>
|
773 |
+
<dt>‘<samp class="samp">OrangeRed</samp>’</dt>
|
774 |
+
<dd><p>0xFF4500
|
775 |
+
</p></dd>
|
776 |
+
<dt>‘<samp class="samp">Orchid</samp>’</dt>
|
777 |
+
<dd><p>0xDA70D6
|
778 |
+
</p></dd>
|
779 |
+
<dt>‘<samp class="samp">PaleGoldenRod</samp>’</dt>
|
780 |
+
<dd><p>0xEEE8AA
|
781 |
+
</p></dd>
|
782 |
+
<dt>‘<samp class="samp">PaleGreen</samp>’</dt>
|
783 |
+
<dd><p>0x98FB98
|
784 |
+
</p></dd>
|
785 |
+
<dt>‘<samp class="samp">PaleTurquoise</samp>’</dt>
|
786 |
+
<dd><p>0xAFEEEE
|
787 |
+
</p></dd>
|
788 |
+
<dt>‘<samp class="samp">PaleVioletRed</samp>’</dt>
|
789 |
+
<dd><p>0xD87093
|
790 |
+
</p></dd>
|
791 |
+
<dt>‘<samp class="samp">PapayaWhip</samp>’</dt>
|
792 |
+
<dd><p>0xFFEFD5
|
793 |
+
</p></dd>
|
794 |
+
<dt>‘<samp class="samp">PeachPuff</samp>’</dt>
|
795 |
+
<dd><p>0xFFDAB9
|
796 |
+
</p></dd>
|
797 |
+
<dt>‘<samp class="samp">Peru</samp>’</dt>
|
798 |
+
<dd><p>0xCD853F
|
799 |
+
</p></dd>
|
800 |
+
<dt>‘<samp class="samp">Pink</samp>’</dt>
|
801 |
+
<dd><p>0xFFC0CB
|
802 |
+
</p></dd>
|
803 |
+
<dt>‘<samp class="samp">Plum</samp>’</dt>
|
804 |
+
<dd><p>0xDDA0DD
|
805 |
+
</p></dd>
|
806 |
+
<dt>‘<samp class="samp">PowderBlue</samp>’</dt>
|
807 |
+
<dd><p>0xB0E0E6
|
808 |
+
</p></dd>
|
809 |
+
<dt>‘<samp class="samp">Purple</samp>’</dt>
|
810 |
+
<dd><p>0x800080
|
811 |
+
</p></dd>
|
812 |
+
<dt>‘<samp class="samp">Red</samp>’</dt>
|
813 |
+
<dd><p>0xFF0000
|
814 |
+
</p></dd>
|
815 |
+
<dt>‘<samp class="samp">RosyBrown</samp>’</dt>
|
816 |
+
<dd><p>0xBC8F8F
|
817 |
+
</p></dd>
|
818 |
+
<dt>‘<samp class="samp">RoyalBlue</samp>’</dt>
|
819 |
+
<dd><p>0x4169E1
|
820 |
+
</p></dd>
|
821 |
+
<dt>‘<samp class="samp">SaddleBrown</samp>’</dt>
|
822 |
+
<dd><p>0x8B4513
|
823 |
+
</p></dd>
|
824 |
+
<dt>‘<samp class="samp">Salmon</samp>’</dt>
|
825 |
+
<dd><p>0xFA8072
|
826 |
+
</p></dd>
|
827 |
+
<dt>‘<samp class="samp">SandyBrown</samp>’</dt>
|
828 |
+
<dd><p>0xF4A460
|
829 |
+
</p></dd>
|
830 |
+
<dt>‘<samp class="samp">SeaGreen</samp>’</dt>
|
831 |
+
<dd><p>0x2E8B57
|
832 |
+
</p></dd>
|
833 |
+
<dt>‘<samp class="samp">SeaShell</samp>’</dt>
|
834 |
+
<dd><p>0xFFF5EE
|
835 |
+
</p></dd>
|
836 |
+
<dt>‘<samp class="samp">Sienna</samp>’</dt>
|
837 |
+
<dd><p>0xA0522D
|
838 |
+
</p></dd>
|
839 |
+
<dt>‘<samp class="samp">Silver</samp>’</dt>
|
840 |
+
<dd><p>0xC0C0C0
|
841 |
+
</p></dd>
|
842 |
+
<dt>‘<samp class="samp">SkyBlue</samp>’</dt>
|
843 |
+
<dd><p>0x87CEEB
|
844 |
+
</p></dd>
|
845 |
+
<dt>‘<samp class="samp">SlateBlue</samp>’</dt>
|
846 |
+
<dd><p>0x6A5ACD
|
847 |
+
</p></dd>
|
848 |
+
<dt>‘<samp class="samp">SlateGray</samp>’</dt>
|
849 |
+
<dd><p>0x708090
|
850 |
+
</p></dd>
|
851 |
+
<dt>‘<samp class="samp">Snow</samp>’</dt>
|
852 |
+
<dd><p>0xFFFAFA
|
853 |
+
</p></dd>
|
854 |
+
<dt>‘<samp class="samp">SpringGreen</samp>’</dt>
|
855 |
+
<dd><p>0x00FF7F
|
856 |
+
</p></dd>
|
857 |
+
<dt>‘<samp class="samp">SteelBlue</samp>’</dt>
|
858 |
+
<dd><p>0x4682B4
|
859 |
+
</p></dd>
|
860 |
+
<dt>‘<samp class="samp">Tan</samp>’</dt>
|
861 |
+
<dd><p>0xD2B48C
|
862 |
+
</p></dd>
|
863 |
+
<dt>‘<samp class="samp">Teal</samp>’</dt>
|
864 |
+
<dd><p>0x008080
|
865 |
+
</p></dd>
|
866 |
+
<dt>‘<samp class="samp">Thistle</samp>’</dt>
|
867 |
+
<dd><p>0xD8BFD8
|
868 |
+
</p></dd>
|
869 |
+
<dt>‘<samp class="samp">Tomato</samp>’</dt>
|
870 |
+
<dd><p>0xFF6347
|
871 |
+
</p></dd>
|
872 |
+
<dt>‘<samp class="samp">Turquoise</samp>’</dt>
|
873 |
+
<dd><p>0x40E0D0
|
874 |
+
</p></dd>
|
875 |
+
<dt>‘<samp class="samp">Violet</samp>’</dt>
|
876 |
+
<dd><p>0xEE82EE
|
877 |
+
</p></dd>
|
878 |
+
<dt>‘<samp class="samp">Wheat</samp>’</dt>
|
879 |
+
<dd><p>0xF5DEB3
|
880 |
+
</p></dd>
|
881 |
+
<dt>‘<samp class="samp">White</samp>’</dt>
|
882 |
+
<dd><p>0xFFFFFF
|
883 |
+
</p></dd>
|
884 |
+
<dt>‘<samp class="samp">WhiteSmoke</samp>’</dt>
|
885 |
+
<dd><p>0xF5F5F5
|
886 |
+
</p></dd>
|
887 |
+
<dt>‘<samp class="samp">Yellow</samp>’</dt>
|
888 |
+
<dd><p>0xFFFF00
|
889 |
+
</p></dd>
|
890 |
+
<dt>‘<samp class="samp">YellowGreen</samp>’</dt>
|
891 |
+
<dd><p>0x9ACD32
|
892 |
+
</p></dd>
|
893 |
+
</dl>
|
894 |
+
|
895 |
+
<a class="anchor" id="channel-layout-syntax"></a></div>
|
896 |
+
<div class="section-level-extent" id="Channel-Layout">
|
897 |
+
<h3 class="section">2.8 Channel Layout</h3>
|
898 |
+
|
899 |
+
<p>A channel layout specifies the spatial disposition of the channels in
|
900 |
+
a multi-channel audio stream. To specify a channel layout, FFmpeg
|
901 |
+
makes use of a special syntax.
|
902 |
+
</p>
|
903 |
+
<p>Individual channels are identified by an id, as given by the table
|
904 |
+
below:
|
905 |
+
</p><dl class="table">
|
906 |
+
<dt>‘<samp class="samp">FL</samp>’</dt>
|
907 |
+
<dd><p>front left
|
908 |
+
</p></dd>
|
909 |
+
<dt>‘<samp class="samp">FR</samp>’</dt>
|
910 |
+
<dd><p>front right
|
911 |
+
</p></dd>
|
912 |
+
<dt>‘<samp class="samp">FC</samp>’</dt>
|
913 |
+
<dd><p>front center
|
914 |
+
</p></dd>
|
915 |
+
<dt>‘<samp class="samp">LFE</samp>’</dt>
|
916 |
+
<dd><p>low frequency
|
917 |
+
</p></dd>
|
918 |
+
<dt>‘<samp class="samp">BL</samp>’</dt>
|
919 |
+
<dd><p>back left
|
920 |
+
</p></dd>
|
921 |
+
<dt>‘<samp class="samp">BR</samp>’</dt>
|
922 |
+
<dd><p>back right
|
923 |
+
</p></dd>
|
924 |
+
<dt>‘<samp class="samp">FLC</samp>’</dt>
|
925 |
+
<dd><p>front left-of-center
|
926 |
+
</p></dd>
|
927 |
+
<dt>‘<samp class="samp">FRC</samp>’</dt>
|
928 |
+
<dd><p>front right-of-center
|
929 |
+
</p></dd>
|
930 |
+
<dt>‘<samp class="samp">BC</samp>’</dt>
|
931 |
+
<dd><p>back center
|
932 |
+
</p></dd>
|
933 |
+
<dt>‘<samp class="samp">SL</samp>’</dt>
|
934 |
+
<dd><p>side left
|
935 |
+
</p></dd>
|
936 |
+
<dt>‘<samp class="samp">SR</samp>’</dt>
|
937 |
+
<dd><p>side right
|
938 |
+
</p></dd>
|
939 |
+
<dt>‘<samp class="samp">TC</samp>’</dt>
|
940 |
+
<dd><p>top center
|
941 |
+
</p></dd>
|
942 |
+
<dt>‘<samp class="samp">TFL</samp>’</dt>
|
943 |
+
<dd><p>top front left
|
944 |
+
</p></dd>
|
945 |
+
<dt>‘<samp class="samp">TFC</samp>’</dt>
|
946 |
+
<dd><p>top front center
|
947 |
+
</p></dd>
|
948 |
+
<dt>‘<samp class="samp">TFR</samp>’</dt>
|
949 |
+
<dd><p>top front right
|
950 |
+
</p></dd>
|
951 |
+
<dt>‘<samp class="samp">TBL</samp>’</dt>
|
952 |
+
<dd><p>top back left
|
953 |
+
</p></dd>
|
954 |
+
<dt>‘<samp class="samp">TBC</samp>’</dt>
|
955 |
+
<dd><p>top back center
|
956 |
+
</p></dd>
|
957 |
+
<dt>‘<samp class="samp">TBR</samp>’</dt>
|
958 |
+
<dd><p>top back right
|
959 |
+
</p></dd>
|
960 |
+
<dt>‘<samp class="samp">DL</samp>’</dt>
|
961 |
+
<dd><p>downmix left
|
962 |
+
</p></dd>
|
963 |
+
<dt>‘<samp class="samp">DR</samp>’</dt>
|
964 |
+
<dd><p>downmix right
|
965 |
+
</p></dd>
|
966 |
+
<dt>‘<samp class="samp">WL</samp>’</dt>
|
967 |
+
<dd><p>wide left
|
968 |
+
</p></dd>
|
969 |
+
<dt>‘<samp class="samp">WR</samp>’</dt>
|
970 |
+
<dd><p>wide right
|
971 |
+
</p></dd>
|
972 |
+
<dt>‘<samp class="samp">SDL</samp>’</dt>
|
973 |
+
<dd><p>surround direct left
|
974 |
+
</p></dd>
|
975 |
+
<dt>‘<samp class="samp">SDR</samp>’</dt>
|
976 |
+
<dd><p>surround direct right
|
977 |
+
</p></dd>
|
978 |
+
<dt>‘<samp class="samp">LFE2</samp>’</dt>
|
979 |
+
<dd><p>low frequency 2
|
980 |
+
</p></dd>
|
981 |
+
</dl>
|
982 |
+
|
983 |
+
<p>Standard channel layout compositions can be specified by using the
|
984 |
+
following identifiers:
|
985 |
+
</p><dl class="table">
|
986 |
+
<dt>‘<samp class="samp">mono</samp>’</dt>
|
987 |
+
<dd><p>FC
|
988 |
+
</p></dd>
|
989 |
+
<dt>‘<samp class="samp">stereo</samp>’</dt>
|
990 |
+
<dd><p>FL+FR
|
991 |
+
</p></dd>
|
992 |
+
<dt>‘<samp class="samp">2.1</samp>’</dt>
|
993 |
+
<dd><p>FL+FR+LFE
|
994 |
+
</p></dd>
|
995 |
+
<dt>‘<samp class="samp">3.0</samp>’</dt>
|
996 |
+
<dd><p>FL+FR+FC
|
997 |
+
</p></dd>
|
998 |
+
<dt>‘<samp class="samp">3.0(back)</samp>’</dt>
|
999 |
+
<dd><p>FL+FR+BC
|
1000 |
+
</p></dd>
|
1001 |
+
<dt>‘<samp class="samp">4.0</samp>’</dt>
|
1002 |
+
<dd><p>FL+FR+FC+BC
|
1003 |
+
</p></dd>
|
1004 |
+
<dt>‘<samp class="samp">quad</samp>’</dt>
|
1005 |
+
<dd><p>FL+FR+BL+BR
|
1006 |
+
</p></dd>
|
1007 |
+
<dt>‘<samp class="samp">quad(side)</samp>’</dt>
|
1008 |
+
<dd><p>FL+FR+SL+SR
|
1009 |
+
</p></dd>
|
1010 |
+
<dt>‘<samp class="samp">3.1</samp>’</dt>
|
1011 |
+
<dd><p>FL+FR+FC+LFE
|
1012 |
+
</p></dd>
|
1013 |
+
<dt>‘<samp class="samp">5.0</samp>’</dt>
|
1014 |
+
<dd><p>FL+FR+FC+BL+BR
|
1015 |
+
</p></dd>
|
1016 |
+
<dt>‘<samp class="samp">5.0(side)</samp>’</dt>
|
1017 |
+
<dd><p>FL+FR+FC+SL+SR
|
1018 |
+
</p></dd>
|
1019 |
+
<dt>‘<samp class="samp">4.1</samp>’</dt>
|
1020 |
+
<dd><p>FL+FR+FC+LFE+BC
|
1021 |
+
</p></dd>
|
1022 |
+
<dt>‘<samp class="samp">5.1</samp>’</dt>
|
1023 |
+
<dd><p>FL+FR+FC+LFE+BL+BR
|
1024 |
+
</p></dd>
|
1025 |
+
<dt>‘<samp class="samp">5.1(side)</samp>’</dt>
|
1026 |
+
<dd><p>FL+FR+FC+LFE+SL+SR
|
1027 |
+
</p></dd>
|
1028 |
+
<dt>‘<samp class="samp">6.0</samp>’</dt>
|
1029 |
+
<dd><p>FL+FR+FC+BC+SL+SR
|
1030 |
+
</p></dd>
|
1031 |
+
<dt>‘<samp class="samp">6.0(front)</samp>’</dt>
|
1032 |
+
<dd><p>FL+FR+FLC+FRC+SL+SR
|
1033 |
+
</p></dd>
|
1034 |
+
<dt>‘<samp class="samp">hexagonal</samp>’</dt>
|
1035 |
+
<dd><p>FL+FR+FC+BL+BR+BC
|
1036 |
+
</p></dd>
|
1037 |
+
<dt>‘<samp class="samp">6.1</samp>’</dt>
|
1038 |
+
<dd><p>FL+FR+FC+LFE+BC+SL+SR
|
1039 |
+
</p></dd>
|
1040 |
+
<dt>‘<samp class="samp">6.1</samp>’</dt>
|
1041 |
+
<dd><p>FL+FR+FC+LFE+BL+BR+BC
|
1042 |
+
</p></dd>
|
1043 |
+
<dt>‘<samp class="samp">6.1(front)</samp>’</dt>
|
1044 |
+
<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
|
1045 |
+
</p></dd>
|
1046 |
+
<dt>‘<samp class="samp">7.0</samp>’</dt>
|
1047 |
+
<dd><p>FL+FR+FC+BL+BR+SL+SR
|
1048 |
+
</p></dd>
|
1049 |
+
<dt>‘<samp class="samp">7.0(front)</samp>’</dt>
|
1050 |
+
<dd><p>FL+FR+FC+FLC+FRC+SL+SR
|
1051 |
+
</p></dd>
|
1052 |
+
<dt>‘<samp class="samp">7.1</samp>’</dt>
|
1053 |
+
<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
|
1054 |
+
</p></dd>
|
1055 |
+
<dt>‘<samp class="samp">7.1(wide)</samp>’</dt>
|
1056 |
+
<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
|
1057 |
+
</p></dd>
|
1058 |
+
<dt>‘<samp class="samp">7.1(wide-side)</samp>’</dt>
|
1059 |
+
<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
|
1060 |
+
</p></dd>
|
1061 |
+
<dt>‘<samp class="samp">7.1(top)</samp>’</dt>
|
1062 |
+
<dd><p>FL+FR+FC+LFE+BL+BR+TFL+TFR
|
1063 |
+
</p></dd>
|
1064 |
+
<dt>‘<samp class="samp">octagonal</samp>’</dt>
|
1065 |
+
<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
|
1066 |
+
</p></dd>
|
1067 |
+
<dt>‘<samp class="samp">cube</samp>’</dt>
|
1068 |
+
<dd><p>FL+FR+BL+BR+TFL+TFR+TBL+TBR
|
1069 |
+
</p></dd>
|
1070 |
+
<dt>‘<samp class="samp">hexadecagonal</samp>’</dt>
|
1071 |
+
<dd><p>FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
|
1072 |
+
</p></dd>
|
1073 |
+
<dt>‘<samp class="samp">downmix</samp>’</dt>
|
1074 |
+
<dd><p>DL+DR
|
1075 |
+
</p></dd>
|
1076 |
+
<dt>‘<samp class="samp">22.2</samp>’</dt>
|
1077 |
+
<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
|
1078 |
+
</p></dd>
|
1079 |
+
</dl>
|
1080 |
+
|
1081 |
+
<p>A custom channel layout can be specified as a sequence of terms, separated by ’+’.
|
1082 |
+
Each term can be:
|
1083 |
+
</p><ul class="itemize mark-bullet">
|
1084 |
+
<li>the name of a single channel (e.g. ‘<samp class="samp">FL</samp>’, ‘<samp class="samp">FR</samp>’, ‘<samp class="samp">FC</samp>’, ‘<samp class="samp">LFE</samp>’, etc.),
|
1085 |
+
each optionally containing a custom name after a ’@’, (e.g. ‘<samp class="samp">FL@Left</samp>’,
|
1086 |
+
‘<samp class="samp">FR@Right</samp>’, ‘<samp class="samp">FC@Center</samp>’, ‘<samp class="samp">LFE@Low_Frequency</samp>’, etc.)
|
1087 |
+
</li></ul>
|
1088 |
+
|
1089 |
+
<p>A standard channel layout can be specified by the following:
|
1090 |
+
</p><ul class="itemize mark-bullet">
|
1091 |
+
<li>the name of a single channel (e.g. ‘<samp class="samp">FL</samp>’, ‘<samp class="samp">FR</samp>’, ‘<samp class="samp">FC</samp>’, ‘<samp class="samp">LFE</samp>’, etc.)
|
1092 |
+
|
1093 |
+
</li><li>the name of a standard channel layout (e.g. ‘<samp class="samp">mono</samp>’,
|
1094 |
+
‘<samp class="samp">stereo</samp>’, ‘<samp class="samp">4.0</samp>’, ‘<samp class="samp">quad</samp>’, ‘<samp class="samp">5.0</samp>’, etc.)
|
1095 |
+
|
1096 |
+
</li><li>a number of channels, in decimal, followed by ’c’, yielding the default channel
|
1097 |
+
layout for that number of channels (see the function
|
1098 |
+
<code class="code">av_channel_layout_default</code>). Note that not all channel counts have a
|
1099 |
+
default layout.
|
1100 |
+
|
1101 |
+
</li><li>a number of channels, in decimal, followed by ’C’, yielding an unknown channel
|
1102 |
+
layout with the specified number of channels. Note that not all channel layout
|
1103 |
+
specification strings support unknown channel layouts.
|
1104 |
+
|
1105 |
+
</li><li>a channel layout mask, in hexadecimal starting with "0x" (see the
|
1106 |
+
<code class="code">AV_CH_*</code> macros in <samp class="file">libavutil/channel_layout.h</samp>.
|
1107 |
+
</li></ul>
|
1108 |
+
|
1109 |
+
<p>Before libavutil version 53 the trailing character "c" to specify a number of
|
1110 |
+
channels was optional, but now it is required, while a channel layout mask can
|
1111 |
+
also be specified as a decimal number (if and only if not followed by "c" or "C").
|
1112 |
+
</p>
|
1113 |
+
<p>See also the function <code class="code">av_channel_layout_from_string</code> defined in
|
1114 |
+
<samp class="file">libavutil/channel_layout.h</samp>.
|
1115 |
+
</p>
|
1116 |
+
</div>
|
1117 |
+
</div>
|
1118 |
+
<div class="chapter-level-extent" id="Expression-Evaluation">
|
1119 |
+
<h2 class="chapter">3 Expression Evaluation</h2>
|
1120 |
+
|
1121 |
+
<p>When evaluating an arithmetic expression, FFmpeg uses an internal
|
1122 |
+
formula evaluator, implemented through the <samp class="file">libavutil/eval.h</samp>
|
1123 |
+
interface.
|
1124 |
+
</p>
|
1125 |
+
<p>An expression may contain unary, binary operators, constants, and
|
1126 |
+
functions.
|
1127 |
+
</p>
|
1128 |
+
<p>Two expressions <var class="var">expr1</var> and <var class="var">expr2</var> can be combined to form
|
1129 |
+
another expression "<var class="var">expr1</var>;<var class="var">expr2</var>".
|
1130 |
+
<var class="var">expr1</var> and <var class="var">expr2</var> are evaluated in turn, and the new
|
1131 |
+
expression evaluates to the value of <var class="var">expr2</var>.
|
1132 |
+
</p>
|
1133 |
+
<p>The following binary operators are available: <code class="code">+</code>, <code class="code">-</code>,
|
1134 |
+
<code class="code">*</code>, <code class="code">/</code>, <code class="code">^</code>.
|
1135 |
+
</p>
|
1136 |
+
<p>The following unary operators are available: <code class="code">+</code>, <code class="code">-</code>.
|
1137 |
+
</p>
|
1138 |
+
<p>The following functions are available:
|
1139 |
+
</p><dl class="table">
|
1140 |
+
<dt><samp class="option">abs(x)</samp></dt>
|
1141 |
+
<dd><p>Compute absolute value of <var class="var">x</var>.
|
1142 |
+
</p>
|
1143 |
+
</dd>
|
1144 |
+
<dt><samp class="option">acos(x)</samp></dt>
|
1145 |
+
<dd><p>Compute arccosine of <var class="var">x</var>.
|
1146 |
+
</p>
|
1147 |
+
</dd>
|
1148 |
+
<dt><samp class="option">asin(x)</samp></dt>
|
1149 |
+
<dd><p>Compute arcsine of <var class="var">x</var>.
|
1150 |
+
</p>
|
1151 |
+
</dd>
|
1152 |
+
<dt><samp class="option">atan(x)</samp></dt>
|
1153 |
+
<dd><p>Compute arctangent of <var class="var">x</var>.
|
1154 |
+
</p>
|
1155 |
+
</dd>
|
1156 |
+
<dt><samp class="option">atan2(x, y)</samp></dt>
|
1157 |
+
<dd><p>Compute principal value of the arc tangent of <var class="var">y</var>/<var class="var">x</var>.
|
1158 |
+
</p>
|
1159 |
+
</dd>
|
1160 |
+
<dt><samp class="option">between(x, min, max)</samp></dt>
|
1161 |
+
<dd><p>Return 1 if <var class="var">x</var> is greater than or equal to <var class="var">min</var> and lesser than or
|
1162 |
+
equal to <var class="var">max</var>, 0 otherwise.
|
1163 |
+
</p>
|
1164 |
+
</dd>
|
1165 |
+
<dt><samp class="option">bitand(x, y)</samp></dt>
|
1166 |
+
<dt><samp class="option">bitor(x, y)</samp></dt>
|
1167 |
+
<dd><p>Compute bitwise and/or operation on <var class="var">x</var> and <var class="var">y</var>.
|
1168 |
+
</p>
|
1169 |
+
<p>The results of the evaluation of <var class="var">x</var> and <var class="var">y</var> are converted to
|
1170 |
+
integers before executing the bitwise operation.
|
1171 |
+
</p>
|
1172 |
+
<p>Note that both the conversion to integer and the conversion back to
|
1173 |
+
floating point can lose precision. Beware of unexpected results for
|
1174 |
+
large numbers (usually 2^53 and larger).
|
1175 |
+
</p>
|
1176 |
+
</dd>
|
1177 |
+
<dt><samp class="option">ceil(expr)</samp></dt>
|
1178 |
+
<dd><p>Round the value of expression <var class="var">expr</var> upwards to the nearest
|
1179 |
+
integer. For example, "ceil(1.5)" is "2.0".
|
1180 |
+
</p>
|
1181 |
+
</dd>
|
1182 |
+
<dt><samp class="option">clip(x, min, max)</samp></dt>
|
1183 |
+
<dd><p>Return the value of <var class="var">x</var> clipped between <var class="var">min</var> and <var class="var">max</var>.
|
1184 |
+
</p>
|
1185 |
+
</dd>
|
1186 |
+
<dt><samp class="option">cos(x)</samp></dt>
|
1187 |
+
<dd><p>Compute cosine of <var class="var">x</var>.
|
1188 |
+
</p>
|
1189 |
+
</dd>
|
1190 |
+
<dt><samp class="option">cosh(x)</samp></dt>
|
1191 |
+
<dd><p>Compute hyperbolic cosine of <var class="var">x</var>.
|
1192 |
+
</p>
|
1193 |
+
</dd>
|
1194 |
+
<dt><samp class="option">eq(x, y)</samp></dt>
|
1195 |
+
<dd><p>Return 1 if <var class="var">x</var> and <var class="var">y</var> are equivalent, 0 otherwise.
|
1196 |
+
</p>
|
1197 |
+
</dd>
|
1198 |
+
<dt><samp class="option">exp(x)</samp></dt>
|
1199 |
+
<dd><p>Compute exponential of <var class="var">x</var> (with base <code class="code">e</code>, the Euler’s number).
|
1200 |
+
</p>
|
1201 |
+
</dd>
|
1202 |
+
<dt><samp class="option">floor(expr)</samp></dt>
|
1203 |
+
<dd><p>Round the value of expression <var class="var">expr</var> downwards to the nearest
|
1204 |
+
integer. For example, "floor(-1.5)" is "-2.0".
|
1205 |
+
</p>
|
1206 |
+
</dd>
|
1207 |
+
<dt><samp class="option">gauss(x)</samp></dt>
|
1208 |
+
<dd><p>Compute Gauss function of <var class="var">x</var>, corresponding to
|
1209 |
+
<code class="code">exp(-x*x/2) / sqrt(2*PI)</code>.
|
1210 |
+
</p>
|
1211 |
+
</dd>
|
1212 |
+
<dt><samp class="option">gcd(x, y)</samp></dt>
|
1213 |
+
<dd><p>Return the greatest common divisor of <var class="var">x</var> and <var class="var">y</var>. If both <var class="var">x</var> and
|
1214 |
+
<var class="var">y</var> are 0 or either or both are less than zero then behavior is undefined.
|
1215 |
+
</p>
|
1216 |
+
</dd>
|
1217 |
+
<dt><samp class="option">gt(x, y)</samp></dt>
|
1218 |
+
<dd><p>Return 1 if <var class="var">x</var> is greater than <var class="var">y</var>, 0 otherwise.
|
1219 |
+
</p>
|
1220 |
+
</dd>
|
1221 |
+
<dt><samp class="option">gte(x, y)</samp></dt>
|
1222 |
+
<dd><p>Return 1 if <var class="var">x</var> is greater than or equal to <var class="var">y</var>, 0 otherwise.
|
1223 |
+
</p>
|
1224 |
+
</dd>
|
1225 |
+
<dt><samp class="option">hypot(x, y)</samp></dt>
|
1226 |
+
<dd><p>This function is similar to the C function with the same name; it returns
|
1227 |
+
"sqrt(<var class="var">x</var>*<var class="var">x</var> + <var class="var">y</var>*<var class="var">y</var>)", the length of the hypotenuse of a
|
1228 |
+
right triangle with sides of length <var class="var">x</var> and <var class="var">y</var>, or the distance of the
|
1229 |
+
point (<var class="var">x</var>, <var class="var">y</var>) from the origin.
|
1230 |
+
</p>
|
1231 |
+
</dd>
|
1232 |
+
<dt><samp class="option">if(x, y)</samp></dt>
|
1233 |
+
<dd><p>Evaluate <var class="var">x</var>, and if the result is non-zero return the result of
|
1234 |
+
the evaluation of <var class="var">y</var>, return 0 otherwise.
|
1235 |
+
</p>
|
1236 |
+
</dd>
|
1237 |
+
<dt><samp class="option">if(x, y, z)</samp></dt>
|
1238 |
+
<dd><p>Evaluate <var class="var">x</var>, and if the result is non-zero return the evaluation
|
1239 |
+
result of <var class="var">y</var>, otherwise the evaluation result of <var class="var">z</var>.
|
1240 |
+
</p>
|
1241 |
+
</dd>
|
1242 |
+
<dt><samp class="option">ifnot(x, y)</samp></dt>
|
1243 |
+
<dd><p>Evaluate <var class="var">x</var>, and if the result is zero return the result of the
|
1244 |
+
evaluation of <var class="var">y</var>, return 0 otherwise.
|
1245 |
+
</p>
|
1246 |
+
</dd>
|
1247 |
+
<dt><samp class="option">ifnot(x, y, z)</samp></dt>
|
1248 |
+
<dd><p>Evaluate <var class="var">x</var>, and if the result is zero return the evaluation
|
1249 |
+
result of <var class="var">y</var>, otherwise the evaluation result of <var class="var">z</var>.
|
1250 |
+
</p>
|
1251 |
+
</dd>
|
1252 |
+
<dt><samp class="option">isinf(x)</samp></dt>
|
1253 |
+
<dd><p>Return 1.0 if <var class="var">x</var> is +/-INFINITY, 0.0 otherwise.
|
1254 |
+
</p>
|
1255 |
+
</dd>
|
1256 |
+
<dt><samp class="option">isnan(x)</samp></dt>
|
1257 |
+
<dd><p>Return 1.0 if <var class="var">x</var> is NAN, 0.0 otherwise.
|
1258 |
+
</p>
|
1259 |
+
</dd>
|
1260 |
+
<dt><samp class="option">ld(var)</samp></dt>
|
1261 |
+
<dd><p>Load the value of the internal variable with number
|
1262 |
+
<var class="var">var</var>, which was previously stored with st(<var class="var">var</var>, <var class="var">expr</var>).
|
1263 |
+
The function returns the loaded value.
|
1264 |
+
</p>
|
1265 |
+
</dd>
|
1266 |
+
<dt><samp class="option">lerp(x, y, z)</samp></dt>
|
1267 |
+
<dd><p>Return linear interpolation between <var class="var">x</var> and <var class="var">y</var> by amount of <var class="var">z</var>.
|
1268 |
+
</p>
|
1269 |
+
</dd>
|
1270 |
+
<dt><samp class="option">log(x)</samp></dt>
|
1271 |
+
<dd><p>Compute natural logarithm of <var class="var">x</var>.
|
1272 |
+
</p>
|
1273 |
+
</dd>
|
1274 |
+
<dt><samp class="option">lt(x, y)</samp></dt>
|
1275 |
+
<dd><p>Return 1 if <var class="var">x</var> is lesser than <var class="var">y</var>, 0 otherwise.
|
1276 |
+
</p>
|
1277 |
+
</dd>
|
1278 |
+
<dt><samp class="option">lte(x, y)</samp></dt>
|
1279 |
+
<dd><p>Return 1 if <var class="var">x</var> is lesser than or equal to <var class="var">y</var>, 0 otherwise.
|
1280 |
+
</p>
|
1281 |
+
</dd>
|
1282 |
+
<dt><samp class="option">max(x, y)</samp></dt>
|
1283 |
+
<dd><p>Return the maximum between <var class="var">x</var> and <var class="var">y</var>.
|
1284 |
+
</p>
|
1285 |
+
</dd>
|
1286 |
+
<dt><samp class="option">min(x, y)</samp></dt>
|
1287 |
+
<dd><p>Return the minimum between <var class="var">x</var> and <var class="var">y</var>.
|
1288 |
+
</p>
|
1289 |
+
</dd>
|
1290 |
+
<dt><samp class="option">mod(x, y)</samp></dt>
|
1291 |
+
<dd><p>Compute the remainder of division of <var class="var">x</var> by <var class="var">y</var>.
|
1292 |
+
</p>
|
1293 |
+
</dd>
|
1294 |
+
<dt><samp class="option">not(expr)</samp></dt>
|
1295 |
+
<dd><p>Return 1.0 if <var class="var">expr</var> is zero, 0.0 otherwise.
|
1296 |
+
</p>
|
1297 |
+
</dd>
|
1298 |
+
<dt><samp class="option">pow(x, y)</samp></dt>
|
1299 |
+
<dd><p>Compute the power of <var class="var">x</var> elevated <var class="var">y</var>, it is equivalent to
|
1300 |
+
"(<var class="var">x</var>)^(<var class="var">y</var>)".
|
1301 |
+
</p>
|
1302 |
+
</dd>
|
1303 |
+
<dt><samp class="option">print(t)</samp></dt>
|
1304 |
+
<dt><samp class="option">print(t, l)</samp></dt>
|
1305 |
+
<dd><p>Print the value of expression <var class="var">t</var> with loglevel <var class="var">l</var>. If
|
1306 |
+
<var class="var">l</var> is not specified then a default log level is used.
|
1307 |
+
Returns the value of the expression printed.
|
1308 |
+
</p>
|
1309 |
+
<p>Prints t with loglevel l
|
1310 |
+
</p>
|
1311 |
+
</dd>
|
1312 |
+
<dt><samp class="option">random(x)</samp></dt>
|
1313 |
+
<dd><p>Return a pseudo random value between 0.0 and 1.0. <var class="var">x</var> is the index of the
|
1314 |
+
internal variable which will be used to save the seed/state.
|
1315 |
+
</p>
|
1316 |
+
</dd>
|
1317 |
+
<dt><samp class="option">root(expr, max)</samp></dt>
|
1318 |
+
<dd><p>Find an input value for which the function represented by <var class="var">expr</var>
|
1319 |
+
with argument <var class="var">ld(0)</var> is 0 in the interval 0..<var class="var">max</var>.
|
1320 |
+
</p>
|
1321 |
+
<p>The expression in <var class="var">expr</var> must denote a continuous function or the
|
1322 |
+
result is undefined.
|
1323 |
+
</p>
|
1324 |
+
<p><var class="var">ld(0)</var> is used to represent the function input value, which means
|
1325 |
+
that the given expression will be evaluated multiple times with
|
1326 |
+
various input values that the expression can access through
|
1327 |
+
<code class="code">ld(0)</code>. When the expression evaluates to 0 then the
|
1328 |
+
corresponding input value will be returned.
|
1329 |
+
</p>
|
1330 |
+
</dd>
|
1331 |
+
<dt><samp class="option">round(expr)</samp></dt>
|
1332 |
+
<dd><p>Round the value of expression <var class="var">expr</var> to the nearest integer. For example, "round(1.5)" is "2.0".
|
1333 |
+
</p>
|
1334 |
+
</dd>
|
1335 |
+
<dt><samp class="option">sgn(x)</samp></dt>
|
1336 |
+
<dd><p>Compute sign of <var class="var">x</var>.
|
1337 |
+
</p>
|
1338 |
+
</dd>
|
1339 |
+
<dt><samp class="option">sin(x)</samp></dt>
|
1340 |
+
<dd><p>Compute sine of <var class="var">x</var>.
|
1341 |
+
</p>
|
1342 |
+
</dd>
|
1343 |
+
<dt><samp class="option">sinh(x)</samp></dt>
|
1344 |
+
<dd><p>Compute hyperbolic sine of <var class="var">x</var>.
|
1345 |
+
</p>
|
1346 |
+
</dd>
|
1347 |
+
<dt><samp class="option">sqrt(expr)</samp></dt>
|
1348 |
+
<dd><p>Compute the square root of <var class="var">expr</var>. This is equivalent to
|
1349 |
+
"(<var class="var">expr</var>)^.5".
|
1350 |
+
</p>
|
1351 |
+
</dd>
|
1352 |
+
<dt><samp class="option">squish(x)</samp></dt>
|
1353 |
+
<dd><p>Compute expression <code class="code">1/(1 + exp(4*x))</code>.
|
1354 |
+
</p>
|
1355 |
+
</dd>
|
1356 |
+
<dt><samp class="option">st(var, expr)</samp></dt>
|
1357 |
+
<dd><p>Store the value of the expression <var class="var">expr</var> in an internal
|
1358 |
+
variable. <var class="var">var</var> specifies the number of the variable where to
|
1359 |
+
store the value, and it is a value ranging from 0 to 9. The function
|
1360 |
+
returns the value stored in the internal variable.
|
1361 |
+
Note, Variables are currently not shared between expressions.
|
1362 |
+
</p>
|
1363 |
+
</dd>
|
1364 |
+
<dt><samp class="option">tan(x)</samp></dt>
|
1365 |
+
<dd><p>Compute tangent of <var class="var">x</var>.
|
1366 |
+
</p>
|
1367 |
+
</dd>
|
1368 |
+
<dt><samp class="option">tanh(x)</samp></dt>
|
1369 |
+
<dd><p>Compute hyperbolic tangent of <var class="var">x</var>.
|
1370 |
+
</p>
|
1371 |
+
</dd>
|
1372 |
+
<dt><samp class="option">taylor(expr, x)</samp></dt>
|
1373 |
+
<dt><samp class="option">taylor(expr, x, id)</samp></dt>
|
1374 |
+
<dd><p>Evaluate a Taylor series at <var class="var">x</var>, given an expression representing
|
1375 |
+
the <code class="code">ld(id)</code>-th derivative of a function at 0.
|
1376 |
+
</p>
|
1377 |
+
<p>When the series does not converge the result is undefined.
|
1378 |
+
</p>
|
1379 |
+
<p><var class="var">ld(id)</var> is used to represent the derivative order in <var class="var">expr</var>,
|
1380 |
+
which means that the given expression will be evaluated multiple times
|
1381 |
+
with various input values that the expression can access through
|
1382 |
+
<code class="code">ld(id)</code>. If <var class="var">id</var> is not specified then 0 is assumed.
|
1383 |
+
</p>
|
1384 |
+
<p>Note, when you have the derivatives at y instead of 0,
|
1385 |
+
<code class="code">taylor(expr, x-y)</code> can be used.
|
1386 |
+
</p>
|
1387 |
+
</dd>
|
1388 |
+
<dt><samp class="option">time(0)</samp></dt>
|
1389 |
+
<dd><p>Return the current (wallclock) time in seconds.
|
1390 |
+
</p>
|
1391 |
+
</dd>
|
1392 |
+
<dt><samp class="option">trunc(expr)</samp></dt>
|
1393 |
+
<dd><p>Round the value of expression <var class="var">expr</var> towards zero to the nearest
|
1394 |
+
integer. For example, "trunc(-1.5)" is "-1.0".
|
1395 |
+
</p>
|
1396 |
+
</dd>
|
1397 |
+
<dt><samp class="option">while(cond, expr)</samp></dt>
|
1398 |
+
<dd><p>Evaluate expression <var class="var">expr</var> while the expression <var class="var">cond</var> is
|
1399 |
+
non-zero, and returns the value of the last <var class="var">expr</var> evaluation, or
|
1400 |
+
NAN if <var class="var">cond</var> was always false.
|
1401 |
+
</p></dd>
|
1402 |
+
</dl>
|
1403 |
+
|
1404 |
+
<p>The following constants are available:
|
1405 |
+
</p><dl class="table">
|
1406 |
+
<dt><samp class="option">PI</samp></dt>
|
1407 |
+
<dd><p>area of the unit disc, approximately 3.14
|
1408 |
+
</p></dd>
|
1409 |
+
<dt><samp class="option">E</samp></dt>
|
1410 |
+
<dd><p>exp(1) (Euler’s number), approximately 2.718
|
1411 |
+
</p></dd>
|
1412 |
+
<dt><samp class="option">PHI</samp></dt>
|
1413 |
+
<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
|
1414 |
+
</p></dd>
|
1415 |
+
</dl>
|
1416 |
+
|
1417 |
+
<p>Assuming that an expression is considered "true" if it has a non-zero
|
1418 |
+
value, note that:
|
1419 |
+
</p>
|
1420 |
+
<p><code class="code">*</code> works like AND
|
1421 |
+
</p>
|
1422 |
+
<p><code class="code">+</code> works like OR
|
1423 |
+
</p>
|
1424 |
+
<p>For example the construct:
|
1425 |
+
</p><div class="example">
|
1426 |
+
<pre class="example-preformatted">if (A AND B) then C
|
1427 |
+
</pre></div>
|
1428 |
+
<p>is equivalent to:
|
1429 |
+
</p><div class="example">
|
1430 |
+
<pre class="example-preformatted">if(A*B, C)
|
1431 |
+
</pre></div>
|
1432 |
+
|
1433 |
+
<p>In your C code, you can extend the list of unary and binary functions,
|
1434 |
+
and define recognized constants, so that they are available for your
|
1435 |
+
expressions.
|
1436 |
+
</p>
|
1437 |
+
<p>The evaluator also recognizes the International System unit prefixes.
|
1438 |
+
If ’i’ is appended after the prefix, binary prefixes are used, which
|
1439 |
+
are based on powers of 1024 instead of powers of 1000.
|
1440 |
+
The ’B’ postfix multiplies the value by 8, and can be appended after a
|
1441 |
+
unit prefix or used alone. This allows using for example ’KB’, ’MiB’,
|
1442 |
+
’G’ and ’B’ as number postfix.
|
1443 |
+
</p>
|
1444 |
+
<p>The list of available International System prefixes follows, with
|
1445 |
+
indication of the corresponding powers of 10 and of 2.
|
1446 |
+
</p><dl class="table">
|
1447 |
+
<dt><samp class="option">y</samp></dt>
|
1448 |
+
<dd><p>10^-24 / 2^-80
|
1449 |
+
</p></dd>
|
1450 |
+
<dt><samp class="option">z</samp></dt>
|
1451 |
+
<dd><p>10^-21 / 2^-70
|
1452 |
+
</p></dd>
|
1453 |
+
<dt><samp class="option">a</samp></dt>
|
1454 |
+
<dd><p>10^-18 / 2^-60
|
1455 |
+
</p></dd>
|
1456 |
+
<dt><samp class="option">f</samp></dt>
|
1457 |
+
<dd><p>10^-15 / 2^-50
|
1458 |
+
</p></dd>
|
1459 |
+
<dt><samp class="option">p</samp></dt>
|
1460 |
+
<dd><p>10^-12 / 2^-40
|
1461 |
+
</p></dd>
|
1462 |
+
<dt><samp class="option">n</samp></dt>
|
1463 |
+
<dd><p>10^-9 / 2^-30
|
1464 |
+
</p></dd>
|
1465 |
+
<dt><samp class="option">u</samp></dt>
|
1466 |
+
<dd><p>10^-6 / 2^-20
|
1467 |
+
</p></dd>
|
1468 |
+
<dt><samp class="option">m</samp></dt>
|
1469 |
+
<dd><p>10^-3 / 2^-10
|
1470 |
+
</p></dd>
|
1471 |
+
<dt><samp class="option">c</samp></dt>
|
1472 |
+
<dd><p>10^-2
|
1473 |
+
</p></dd>
|
1474 |
+
<dt><samp class="option">d</samp></dt>
|
1475 |
+
<dd><p>10^-1
|
1476 |
+
</p></dd>
|
1477 |
+
<dt><samp class="option">h</samp></dt>
|
1478 |
+
<dd><p>10^2
|
1479 |
+
</p></dd>
|
1480 |
+
<dt><samp class="option">k</samp></dt>
|
1481 |
+
<dd><p>10^3 / 2^10
|
1482 |
+
</p></dd>
|
1483 |
+
<dt><samp class="option">K</samp></dt>
|
1484 |
+
<dd><p>10^3 / 2^10
|
1485 |
+
</p></dd>
|
1486 |
+
<dt><samp class="option">M</samp></dt>
|
1487 |
+
<dd><p>10^6 / 2^20
|
1488 |
+
</p></dd>
|
1489 |
+
<dt><samp class="option">G</samp></dt>
|
1490 |
+
<dd><p>10^9 / 2^30
|
1491 |
+
</p></dd>
|
1492 |
+
<dt><samp class="option">T</samp></dt>
|
1493 |
+
<dd><p>10^12 / 2^40
|
1494 |
+
</p></dd>
|
1495 |
+
<dt><samp class="option">P</samp></dt>
|
1496 |
+
<dd><p>10^15 / 2^50
|
1497 |
+
</p></dd>
|
1498 |
+
<dt><samp class="option">E</samp></dt>
|
1499 |
+
<dd><p>10^18 / 2^60
|
1500 |
+
</p></dd>
|
1501 |
+
<dt><samp class="option">Z</samp></dt>
|
1502 |
+
<dd><p>10^21 / 2^70
|
1503 |
+
</p></dd>
|
1504 |
+
<dt><samp class="option">Y</samp></dt>
|
1505 |
+
<dd><p>10^24 / 2^80
|
1506 |
+
</p></dd>
|
1507 |
+
</dl>
|
1508 |
+
|
1509 |
+
|
1510 |
+
</div>
|
1511 |
+
<div class="chapter-level-extent" id="See-Also">
|
1512 |
+
<h2 class="chapter">4 See Also</h2>
|
1513 |
+
|
1514 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
1515 |
+
<a class="url" href="libavutil.html">libavutil</a>
|
1516 |
+
</p>
|
1517 |
+
|
1518 |
+
</div>
|
1519 |
+
<div class="chapter-level-extent" id="Authors">
|
1520 |
+
<h2 class="chapter">5 Authors</h2>
|
1521 |
+
|
1522 |
+
<p>The FFmpeg developers.
|
1523 |
+
</p>
|
1524 |
+
<p>For details about the authorship, see the Git history of the project
|
1525 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
1526 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
1527 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
1528 |
+
</p>
|
1529 |
+
<p>Maintainers for the specific components are listed in the file
|
1530 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
1531 |
+
</p>
|
1532 |
+
|
1533 |
+
</div>
|
1534 |
+
</div>
|
1535 |
+
|
1536 |
+
|
1537 |
+
|
1538 |
+
</body>
|
1539 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffmpeg.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffplay-all.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffplay.html
ADDED
@@ -0,0 +1,893 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>ffplay Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="ffplay Documentation">
|
9 |
+
<meta name="keywords" content="ffplay Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
kbd.key {font-style: normal}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Synopsis" href="#Synopsis">1 Synopsis</a></li>
|
40 |
+
<li><a id="toc-Description" href="#Description">2 Description</a></li>
|
41 |
+
<li><a id="toc-Options" href="#Options">3 Options</a>
|
42 |
+
<ul class="toc-numbered-mark">
|
43 |
+
<li><a id="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
|
44 |
+
<li><a id="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
|
45 |
+
<li><a id="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
|
46 |
+
<li><a id="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
|
47 |
+
<li><a id="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
|
48 |
+
<li><a id="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
|
49 |
+
</ul></li>
|
50 |
+
<li><a id="toc-See-Also" href="#See-Also">4 See Also</a></li>
|
51 |
+
<li><a id="toc-Authors" href="#Authors">5 Authors</a></li>
|
52 |
+
</ul>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
<div class="chapter-level-extent" id="Synopsis">
|
56 |
+
<h2 class="chapter">1 Synopsis</h2>
|
57 |
+
|
58 |
+
<p>ffplay [<var class="var">options</var>] [<samp class="file">input_url</samp>]
|
59 |
+
</p>
|
60 |
+
</div>
|
61 |
+
<div class="chapter-level-extent" id="Description">
|
62 |
+
<h2 class="chapter">2 Description</h2>
|
63 |
+
|
64 |
+
<p>FFplay is a very simple and portable media player using the FFmpeg
|
65 |
+
libraries and the SDL library. It is mostly used as a testbed for the
|
66 |
+
various FFmpeg APIs.
|
67 |
+
</p>
|
68 |
+
</div>
|
69 |
+
<div class="chapter-level-extent" id="Options">
|
70 |
+
<h2 class="chapter">3 Options</h2>
|
71 |
+
|
72 |
+
<p>All the numerical options, if not specified otherwise, accept a string
|
73 |
+
representing a number as input, which may be followed by one of the SI
|
74 |
+
unit prefixes, for example: ’K’, ’M’, or ’G’.
|
75 |
+
</p>
|
76 |
+
<p>If ’i’ is appended to the SI unit prefix, the complete prefix will be
|
77 |
+
interpreted as a unit prefix for binary multiples, which are based on
|
78 |
+
powers of 1024 instead of powers of 1000. Appending ’B’ to the SI unit
|
79 |
+
prefix multiplies the value by 8. This allows using, for example:
|
80 |
+
’KB’, ’MiB’, ’G’ and ’B’ as number suffixes.
|
81 |
+
</p>
|
82 |
+
<p>Options which do not take arguments are boolean options, and set the
|
83 |
+
corresponding value to true. They can be set to false by prefixing
|
84 |
+
the option name with "no". For example using "-nofoo"
|
85 |
+
will set the boolean option with name "foo" to false.
|
86 |
+
</p>
|
87 |
+
<a class="anchor" id="Stream-specifiers"></a><ul class="mini-toc">
|
88 |
+
<li><a href="#Stream-specifiers-1" accesskey="1">Stream specifiers</a></li>
|
89 |
+
<li><a href="#Generic-options" accesskey="2">Generic options</a></li>
|
90 |
+
<li><a href="#AVOptions" accesskey="3">AVOptions</a></li>
|
91 |
+
<li><a href="#Main-options" accesskey="4">Main options</a></li>
|
92 |
+
<li><a href="#Advanced-options" accesskey="5">Advanced options</a></li>
|
93 |
+
<li><a href="#While-playing" accesskey="6">While playing</a></li>
|
94 |
+
</ul>
|
95 |
+
<div class="section-level-extent" id="Stream-specifiers-1">
|
96 |
+
<h3 class="section">3.1 Stream specifiers</h3>
|
97 |
+
<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
|
98 |
+
are used to precisely specify which stream(s) a given option belongs to.
|
99 |
+
</p>
|
100 |
+
<p>A stream specifier is a string generally appended to the option name and
|
101 |
+
separated from it by a colon. E.g. <code class="code">-codec:a:1 ac3</code> contains the
|
102 |
+
<code class="code">a:1</code> stream specifier, which matches the second audio stream. Therefore, it
|
103 |
+
would select the ac3 codec for the second audio stream.
|
104 |
+
</p>
|
105 |
+
<p>A stream specifier can match several streams, so that the option is applied to all
|
106 |
+
of them. E.g. the stream specifier in <code class="code">-b:a 128k</code> matches all audio
|
107 |
+
streams.
|
108 |
+
</p>
|
109 |
+
<p>An empty stream specifier matches all streams. For example, <code class="code">-codec copy</code>
|
110 |
+
or <code class="code">-codec: copy</code> would copy all the streams without reencoding.
|
111 |
+
</p>
|
112 |
+
<p>Possible forms of stream specifiers are:
|
113 |
+
</p><dl class="table">
|
114 |
+
<dt><samp class="option"><var class="var">stream_index</var></samp></dt>
|
115 |
+
<dd><p>Matches the stream with this index. E.g. <code class="code">-threads:1 4</code> would set the
|
116 |
+
thread count for the second stream to 4. If <var class="var">stream_index</var> is used as an
|
117 |
+
additional stream specifier (see below), then it selects stream number
|
118 |
+
<var class="var">stream_index</var> from the matching streams. Stream numbering is based on the
|
119 |
+
order of the streams as detected by libavformat except when a program ID is
|
120 |
+
also specified. In this case it is based on the ordering of the streams in the
|
121 |
+
program.
|
122 |
+
</p></dd>
|
123 |
+
<dt><samp class="option"><var class="var">stream_type</var>[:<var class="var">additional_stream_specifier</var>]</samp></dt>
|
124 |
+
<dd><p><var class="var">stream_type</var> is one of following: ’v’ or ’V’ for video, ’a’ for audio, ’s’
|
125 |
+
for subtitle, ’d’ for data, and ’t’ for attachments. ’v’ matches all video
|
126 |
+
streams, ’V’ only matches video streams which are not attached pictures, video
|
127 |
+
thumbnails or cover arts. If <var class="var">additional_stream_specifier</var> is used, then
|
128 |
+
it matches streams which both have this type and match the
|
129 |
+
<var class="var">additional_stream_specifier</var>. Otherwise, it matches all streams of the
|
130 |
+
specified type.
|
131 |
+
</p></dd>
|
132 |
+
<dt><samp class="option">p:<var class="var">program_id</var>[:<var class="var">additional_stream_specifier</var>]</samp></dt>
|
133 |
+
<dd><p>Matches streams which are in the program with the id <var class="var">program_id</var>. If
|
134 |
+
<var class="var">additional_stream_specifier</var> is used, then it matches streams which both
|
135 |
+
are part of the program and match the <var class="var">additional_stream_specifier</var>.
|
136 |
+
</p>
|
137 |
+
</dd>
|
138 |
+
<dt><samp class="option">#<var class="var">stream_id</var> or i:<var class="var">stream_id</var></samp></dt>
|
139 |
+
<dd><p>Match the stream by stream id (e.g. PID in MPEG-TS container).
|
140 |
+
</p></dd>
|
141 |
+
<dt><samp class="option">m:<var class="var">key</var>[:<var class="var">value</var>]</samp></dt>
|
142 |
+
<dd><p>Matches streams with the metadata tag <var class="var">key</var> having the specified value. If
|
143 |
+
<var class="var">value</var> is not given, matches streams that contain the given tag with any
|
144 |
+
value.
|
145 |
+
</p></dd>
|
146 |
+
<dt><samp class="option">u</samp></dt>
|
147 |
+
<dd><p>Matches streams with usable configuration, the codec must be defined and the
|
148 |
+
essential information such as video dimension or audio sample rate must be present.
|
149 |
+
</p>
|
150 |
+
<p>Note that in <code class="command">ffmpeg</code>, matching by metadata will only work properly for
|
151 |
+
input files.
|
152 |
+
</p></dd>
|
153 |
+
</dl>
|
154 |
+
|
155 |
+
</div>
|
156 |
+
<div class="section-level-extent" id="Generic-options">
|
157 |
+
<h3 class="section">3.2 Generic options</h3>
|
158 |
+
|
159 |
+
<p>These options are shared amongst the ff* tools.
|
160 |
+
</p>
|
161 |
+
<dl class="table">
|
162 |
+
<dt><samp class="option">-L</samp></dt>
|
163 |
+
<dd><p>Show license.
|
164 |
+
</p>
|
165 |
+
</dd>
|
166 |
+
<dt><samp class="option">-h, -?, -help, --help [<var class="var">arg</var>]</samp></dt>
|
167 |
+
<dd><p>Show help. An optional parameter may be specified to print help about a specific
|
168 |
+
item. If no argument is specified, only basic (non advanced) tool
|
169 |
+
options are shown.
|
170 |
+
</p>
|
171 |
+
<p>Possible values of <var class="var">arg</var> are:
|
172 |
+
</p><dl class="table">
|
173 |
+
<dt><samp class="option">long</samp></dt>
|
174 |
+
<dd><p>Print advanced tool options in addition to the basic tool options.
|
175 |
+
</p>
|
176 |
+
</dd>
|
177 |
+
<dt><samp class="option">full</samp></dt>
|
178 |
+
<dd><p>Print complete list of options, including shared and private options
|
179 |
+
for encoders, decoders, demuxers, muxers, filters, etc.
|
180 |
+
</p>
|
181 |
+
</dd>
|
182 |
+
<dt><samp class="option">decoder=<var class="var">decoder_name</var></samp></dt>
|
183 |
+
<dd><p>Print detailed information about the decoder named <var class="var">decoder_name</var>. Use the
|
184 |
+
<samp class="option">-decoders</samp> option to get a list of all decoders.
|
185 |
+
</p>
|
186 |
+
</dd>
|
187 |
+
<dt><samp class="option">encoder=<var class="var">encoder_name</var></samp></dt>
|
188 |
+
<dd><p>Print detailed information about the encoder named <var class="var">encoder_name</var>. Use the
|
189 |
+
<samp class="option">-encoders</samp> option to get a list of all encoders.
|
190 |
+
</p>
|
191 |
+
</dd>
|
192 |
+
<dt><samp class="option">demuxer=<var class="var">demuxer_name</var></samp></dt>
|
193 |
+
<dd><p>Print detailed information about the demuxer named <var class="var">demuxer_name</var>. Use the
|
194 |
+
<samp class="option">-formats</samp> option to get a list of all demuxers and muxers.
|
195 |
+
</p>
|
196 |
+
</dd>
|
197 |
+
<dt><samp class="option">muxer=<var class="var">muxer_name</var></samp></dt>
|
198 |
+
<dd><p>Print detailed information about the muxer named <var class="var">muxer_name</var>. Use the
|
199 |
+
<samp class="option">-formats</samp> option to get a list of all muxers and demuxers.
|
200 |
+
</p>
|
201 |
+
</dd>
|
202 |
+
<dt><samp class="option">filter=<var class="var">filter_name</var></samp></dt>
|
203 |
+
<dd><p>Print detailed information about the filter named <var class="var">filter_name</var>. Use the
|
204 |
+
<samp class="option">-filters</samp> option to get a list of all filters.
|
205 |
+
</p>
|
206 |
+
</dd>
|
207 |
+
<dt><samp class="option">bsf=<var class="var">bitstream_filter_name</var></samp></dt>
|
208 |
+
<dd><p>Print detailed information about the bitstream filter named <var class="var">bitstream_filter_name</var>.
|
209 |
+
Use the <samp class="option">-bsfs</samp> option to get a list of all bitstream filters.
|
210 |
+
</p>
|
211 |
+
</dd>
|
212 |
+
<dt><samp class="option">protocol=<var class="var">protocol_name</var></samp></dt>
|
213 |
+
<dd><p>Print detailed information about the protocol named <var class="var">protocol_name</var>.
|
214 |
+
Use the <samp class="option">-protocols</samp> option to get a list of all protocols.
|
215 |
+
</p></dd>
|
216 |
+
</dl>
|
217 |
+
|
218 |
+
</dd>
|
219 |
+
<dt><samp class="option">-version</samp></dt>
|
220 |
+
<dd><p>Show version.
|
221 |
+
</p>
|
222 |
+
</dd>
|
223 |
+
<dt><samp class="option">-buildconf</samp></dt>
|
224 |
+
<dd><p>Show the build configuration, one option per line.
|
225 |
+
</p>
|
226 |
+
</dd>
|
227 |
+
<dt><samp class="option">-formats</samp></dt>
|
228 |
+
<dd><p>Show available formats (including devices).
|
229 |
+
</p>
|
230 |
+
</dd>
|
231 |
+
<dt><samp class="option">-demuxers</samp></dt>
|
232 |
+
<dd><p>Show available demuxers.
|
233 |
+
</p>
|
234 |
+
</dd>
|
235 |
+
<dt><samp class="option">-muxers</samp></dt>
|
236 |
+
<dd><p>Show available muxers.
|
237 |
+
</p>
|
238 |
+
</dd>
|
239 |
+
<dt><samp class="option">-devices</samp></dt>
|
240 |
+
<dd><p>Show available devices.
|
241 |
+
</p>
|
242 |
+
</dd>
|
243 |
+
<dt><samp class="option">-codecs</samp></dt>
|
244 |
+
<dd><p>Show all codecs known to libavcodec.
|
245 |
+
</p>
|
246 |
+
<p>Note that the term ’codec’ is used throughout this documentation as a shortcut
|
247 |
+
for what is more correctly called a media bitstream format.
|
248 |
+
</p>
|
249 |
+
</dd>
|
250 |
+
<dt><samp class="option">-decoders</samp></dt>
|
251 |
+
<dd><p>Show available decoders.
|
252 |
+
</p>
|
253 |
+
</dd>
|
254 |
+
<dt><samp class="option">-encoders</samp></dt>
|
255 |
+
<dd><p>Show all available encoders.
|
256 |
+
</p>
|
257 |
+
</dd>
|
258 |
+
<dt><samp class="option">-bsfs</samp></dt>
|
259 |
+
<dd><p>Show available bitstream filters.
|
260 |
+
</p>
|
261 |
+
</dd>
|
262 |
+
<dt><samp class="option">-protocols</samp></dt>
|
263 |
+
<dd><p>Show available protocols.
|
264 |
+
</p>
|
265 |
+
</dd>
|
266 |
+
<dt><samp class="option">-filters</samp></dt>
|
267 |
+
<dd><p>Show available libavfilter filters.
|
268 |
+
</p>
|
269 |
+
</dd>
|
270 |
+
<dt><samp class="option">-pix_fmts</samp></dt>
|
271 |
+
<dd><p>Show available pixel formats.
|
272 |
+
</p>
|
273 |
+
</dd>
|
274 |
+
<dt><samp class="option">-sample_fmts</samp></dt>
|
275 |
+
<dd><p>Show available sample formats.
|
276 |
+
</p>
|
277 |
+
</dd>
|
278 |
+
<dt><samp class="option">-layouts</samp></dt>
|
279 |
+
<dd><p>Show channel names and standard channel layouts.
|
280 |
+
</p>
|
281 |
+
</dd>
|
282 |
+
<dt><samp class="option">-dispositions</samp></dt>
|
283 |
+
<dd><p>Show stream dispositions.
|
284 |
+
</p>
|
285 |
+
</dd>
|
286 |
+
<dt><samp class="option">-colors</samp></dt>
|
287 |
+
<dd><p>Show recognized color names.
|
288 |
+
</p>
|
289 |
+
</dd>
|
290 |
+
<dt><samp class="option">-sources <var class="var">device</var>[,<var class="var">opt1</var>=<var class="var">val1</var>[,<var class="var">opt2</var>=<var class="var">val2</var>]...]</samp></dt>
|
291 |
+
<dd><p>Show autodetected sources of the input device.
|
292 |
+
Some devices may provide system-dependent source names that cannot be autodetected.
|
293 |
+
The returned list cannot be assumed to be always complete.
|
294 |
+
</p><div class="example">
|
295 |
+
<pre class="example-preformatted">ffmpeg -sources pulse,server=192.168.0.4
|
296 |
+
</pre></div>
|
297 |
+
|
298 |
+
</dd>
|
299 |
+
<dt><samp class="option">-sinks <var class="var">device</var>[,<var class="var">opt1</var>=<var class="var">val1</var>[,<var class="var">opt2</var>=<var class="var">val2</var>]...]</samp></dt>
|
300 |
+
<dd><p>Show autodetected sinks of the output device.
|
301 |
+
Some devices may provide system-dependent sink names that cannot be autodetected.
|
302 |
+
The returned list cannot be assumed to be always complete.
|
303 |
+
</p><div class="example">
|
304 |
+
<pre class="example-preformatted">ffmpeg -sinks pulse,server=192.168.0.4
|
305 |
+
</pre></div>
|
306 |
+
|
307 |
+
</dd>
|
308 |
+
<dt><samp class="option">-loglevel [<var class="var">flags</var>+]<var class="var">loglevel</var> | -v [<var class="var">flags</var>+]<var class="var">loglevel</var></samp></dt>
|
309 |
+
<dd><p>Set logging level and flags used by the library.
|
310 |
+
</p>
|
311 |
+
<p>The optional <var class="var">flags</var> prefix can consist of the following values:
|
312 |
+
</p><dl class="table">
|
313 |
+
<dt>‘<samp class="samp">repeat</samp>’</dt>
|
314 |
+
<dd><p>Indicates that repeated log output should not be compressed to the first line
|
315 |
+
and the "Last message repeated n times" line will be omitted.
|
316 |
+
</p></dd>
|
317 |
+
<dt>‘<samp class="samp">level</samp>’</dt>
|
318 |
+
<dd><p>Indicates that log output should add a <code class="code">[level]</code> prefix to each message
|
319 |
+
line. This can be used as an alternative to log coloring, e.g. when dumping the
|
320 |
+
log to file.
|
321 |
+
</p></dd>
|
322 |
+
</dl>
|
323 |
+
<p>Flags can also be used alone by adding a ’+’/’-’ prefix to set/reset a single
|
324 |
+
flag without affecting other <var class="var">flags</var> or changing <var class="var">loglevel</var>. When
|
325 |
+
setting both <var class="var">flags</var> and <var class="var">loglevel</var>, a ’+’ separator is expected
|
326 |
+
between the last <var class="var">flags</var> value and before <var class="var">loglevel</var>.
|
327 |
+
</p>
|
328 |
+
<p><var class="var">loglevel</var> is a string or a number containing one of the following values:
|
329 |
+
</p><dl class="table">
|
330 |
+
<dt>‘<samp class="samp">quiet, -8</samp>’</dt>
|
331 |
+
<dd><p>Show nothing at all; be silent.
|
332 |
+
</p></dd>
|
333 |
+
<dt>‘<samp class="samp">panic, 0</samp>’</dt>
|
334 |
+
<dd><p>Only show fatal errors which could lead the process to crash, such as
|
335 |
+
an assertion failure. This is not currently used for anything.
|
336 |
+
</p></dd>
|
337 |
+
<dt>‘<samp class="samp">fatal, 8</samp>’</dt>
|
338 |
+
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
339 |
+
cannot continue.
|
340 |
+
</p></dd>
|
341 |
+
<dt>‘<samp class="samp">error, 16</samp>’</dt>
|
342 |
+
<dd><p>Show all errors, including ones which can be recovered from.
|
343 |
+
</p></dd>
|
344 |
+
<dt>‘<samp class="samp">warning, 24</samp>’</dt>
|
345 |
+
<dd><p>Show all warnings and errors. Any message related to possibly
|
346 |
+
incorrect or unexpected events will be shown.
|
347 |
+
</p></dd>
|
348 |
+
<dt>‘<samp class="samp">info, 32</samp>’</dt>
|
349 |
+
<dd><p>Show informative messages during processing. This is in addition to
|
350 |
+
warnings and errors. This is the default value.
|
351 |
+
</p></dd>
|
352 |
+
<dt>‘<samp class="samp">verbose, 40</samp>’</dt>
|
353 |
+
<dd><p>Same as <code class="code">info</code>, except more verbose.
|
354 |
+
</p></dd>
|
355 |
+
<dt>‘<samp class="samp">debug, 48</samp>’</dt>
|
356 |
+
<dd><p>Show everything, including debugging information.
|
357 |
+
</p></dd>
|
358 |
+
<dt>‘<samp class="samp">trace, 56</samp>’</dt>
|
359 |
+
</dl>
|
360 |
+
|
361 |
+
<p>For example to enable repeated log output, add the <code class="code">level</code> prefix, and set
|
362 |
+
<var class="var">loglevel</var> to <code class="code">verbose</code>:
|
363 |
+
</p><div class="example">
|
364 |
+
<pre class="example-preformatted">ffmpeg -loglevel repeat+level+verbose -i input output
|
365 |
+
</pre></div>
|
366 |
+
<p>Another example that enables repeated log output without affecting current
|
367 |
+
state of <code class="code">level</code> prefix flag or <var class="var">loglevel</var>:
|
368 |
+
</p><div class="example">
|
369 |
+
<pre class="example-preformatted">ffmpeg [...] -loglevel +repeat
|
370 |
+
</pre></div>
|
371 |
+
|
372 |
+
<p>By default the program logs to stderr. If coloring is supported by the
|
373 |
+
terminal, colors are used to mark errors and warnings. Log coloring
|
374 |
+
can be disabled setting the environment variable
|
375 |
+
<code class="env">AV_LOG_FORCE_NOCOLOR</code>, or can be forced setting
|
376 |
+
the environment variable <code class="env">AV_LOG_FORCE_COLOR</code>.
|
377 |
+
</p>
|
378 |
+
</dd>
|
379 |
+
<dt><samp class="option">-report</samp></dt>
|
380 |
+
<dd><p>Dump full command line and log output to a file named
|
381 |
+
<code class="code"><var class="var">program</var>-<var class="var">YYYYMMDD</var>-<var class="var">HHMMSS</var>.log</code> in the current
|
382 |
+
directory.
|
383 |
+
This file can be useful for bug reports.
|
384 |
+
It also implies <code class="code">-loglevel debug</code>.
|
385 |
+
</p>
|
386 |
+
<p>Setting the environment variable <code class="env">FFREPORT</code> to any value has the
|
387 |
+
same effect. If the value is a ’:’-separated key=value sequence, these
|
388 |
+
options will affect the report; option values must be escaped if they
|
389 |
+
contain special characters or the options delimiter ’:’ (see the
|
390 |
+
“Quoting and escaping” section in the ffmpeg-utils manual).
|
391 |
+
</p>
|
392 |
+
<p>The following options are recognized:
|
393 |
+
</p><dl class="table">
|
394 |
+
<dt><samp class="option">file</samp></dt>
|
395 |
+
<dd><p>set the file name to use for the report; <code class="code">%p</code> is expanded to the name
|
396 |
+
of the program, <code class="code">%t</code> is expanded to a timestamp, <code class="code">%%</code> is expanded
|
397 |
+
to a plain <code class="code">%</code>
|
398 |
+
</p></dd>
|
399 |
+
<dt><samp class="option">level</samp></dt>
|
400 |
+
<dd><p>set the log verbosity level using a numerical value (see <code class="code">-loglevel</code>).
|
401 |
+
</p></dd>
|
402 |
+
</dl>
|
403 |
+
|
404 |
+
<p>For example, to output a report to a file named <samp class="file">ffreport.log</samp>
|
405 |
+
using a log level of <code class="code">32</code> (alias for log level <code class="code">info</code>):
|
406 |
+
</p>
|
407 |
+
<div class="example">
|
408 |
+
<pre class="example-preformatted">FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
|
409 |
+
</pre></div>
|
410 |
+
|
411 |
+
<p>Errors in parsing the environment variable are not fatal, and will not
|
412 |
+
appear in the report.
|
413 |
+
</p>
|
414 |
+
</dd>
|
415 |
+
<dt><samp class="option">-hide_banner</samp></dt>
|
416 |
+
<dd><p>Suppress printing banner.
|
417 |
+
</p>
|
418 |
+
<p>All FFmpeg tools will normally show a copyright notice, build options
|
419 |
+
and library versions. This option can be used to suppress printing
|
420 |
+
this information.
|
421 |
+
</p>
|
422 |
+
</dd>
|
423 |
+
<dt><samp class="option">-cpuflags flags (<em class="emph">global</em>)</samp></dt>
|
424 |
+
<dd><p>Allows setting and clearing cpu flags. This option is intended
|
425 |
+
for testing. Do not use it unless you know what you’re doing.
|
426 |
+
</p><div class="example">
|
427 |
+
<pre class="example-preformatted">ffmpeg -cpuflags -sse+mmx ...
|
428 |
+
ffmpeg -cpuflags mmx ...
|
429 |
+
ffmpeg -cpuflags 0 ...
|
430 |
+
</pre></div>
|
431 |
+
<p>Possible flags for this option are:
|
432 |
+
</p><dl class="table">
|
433 |
+
<dt>‘<samp class="samp">x86</samp>’</dt>
|
434 |
+
<dd><dl class="table">
|
435 |
+
<dt>‘<samp class="samp">mmx</samp>’</dt>
|
436 |
+
<dt>‘<samp class="samp">mmxext</samp>’</dt>
|
437 |
+
<dt>‘<samp class="samp">sse</samp>’</dt>
|
438 |
+
<dt>‘<samp class="samp">sse2</samp>’</dt>
|
439 |
+
<dt>‘<samp class="samp">sse2slow</samp>’</dt>
|
440 |
+
<dt>‘<samp class="samp">sse3</samp>’</dt>
|
441 |
+
<dt>‘<samp class="samp">sse3slow</samp>’</dt>
|
442 |
+
<dt>‘<samp class="samp">ssse3</samp>’</dt>
|
443 |
+
<dt>‘<samp class="samp">atom</samp>’</dt>
|
444 |
+
<dt>‘<samp class="samp">sse4.1</samp>’</dt>
|
445 |
+
<dt>‘<samp class="samp">sse4.2</samp>’</dt>
|
446 |
+
<dt>‘<samp class="samp">avx</samp>’</dt>
|
447 |
+
<dt>‘<samp class="samp">avx2</samp>’</dt>
|
448 |
+
<dt>‘<samp class="samp">xop</samp>’</dt>
|
449 |
+
<dt>‘<samp class="samp">fma3</samp>’</dt>
|
450 |
+
<dt>‘<samp class="samp">fma4</samp>’</dt>
|
451 |
+
<dt>‘<samp class="samp">3dnow</samp>’</dt>
|
452 |
+
<dt>‘<samp class="samp">3dnowext</samp>’</dt>
|
453 |
+
<dt>‘<samp class="samp">bmi1</samp>’</dt>
|
454 |
+
<dt>‘<samp class="samp">bmi2</samp>’</dt>
|
455 |
+
<dt>‘<samp class="samp">cmov</samp>’</dt>
|
456 |
+
</dl>
|
457 |
+
</dd>
|
458 |
+
<dt>‘<samp class="samp">ARM</samp>’</dt>
|
459 |
+
<dd><dl class="table">
|
460 |
+
<dt>‘<samp class="samp">armv5te</samp>’</dt>
|
461 |
+
<dt>‘<samp class="samp">armv6</samp>’</dt>
|
462 |
+
<dt>‘<samp class="samp">armv6t2</samp>’</dt>
|
463 |
+
<dt>‘<samp class="samp">vfp</samp>’</dt>
|
464 |
+
<dt>‘<samp class="samp">vfpv3</samp>’</dt>
|
465 |
+
<dt>‘<samp class="samp">neon</samp>’</dt>
|
466 |
+
<dt>‘<samp class="samp">setend</samp>’</dt>
|
467 |
+
</dl>
|
468 |
+
</dd>
|
469 |
+
<dt>‘<samp class="samp">AArch64</samp>’</dt>
|
470 |
+
<dd><dl class="table">
|
471 |
+
<dt>‘<samp class="samp">armv8</samp>’</dt>
|
472 |
+
<dt>‘<samp class="samp">vfp</samp>’</dt>
|
473 |
+
<dt>‘<samp class="samp">neon</samp>’</dt>
|
474 |
+
</dl>
|
475 |
+
</dd>
|
476 |
+
<dt>‘<samp class="samp">PowerPC</samp>’</dt>
|
477 |
+
<dd><dl class="table">
|
478 |
+
<dt>‘<samp class="samp">altivec</samp>’</dt>
|
479 |
+
</dl>
|
480 |
+
</dd>
|
481 |
+
<dt>‘<samp class="samp">Specific Processors</samp>’</dt>
|
482 |
+
<dd><dl class="table">
|
483 |
+
<dt>‘<samp class="samp">pentium2</samp>’</dt>
|
484 |
+
<dt>‘<samp class="samp">pentium3</samp>’</dt>
|
485 |
+
<dt>‘<samp class="samp">pentium4</samp>’</dt>
|
486 |
+
<dt>‘<samp class="samp">k6</samp>’</dt>
|
487 |
+
<dt>‘<samp class="samp">k62</samp>’</dt>
|
488 |
+
<dt>‘<samp class="samp">athlon</samp>’</dt>
|
489 |
+
<dt>‘<samp class="samp">athlonxp</samp>’</dt>
|
490 |
+
<dt>‘<samp class="samp">k8</samp>’</dt>
|
491 |
+
</dl>
|
492 |
+
</dd>
|
493 |
+
</dl>
|
494 |
+
|
495 |
+
</dd>
|
496 |
+
<dt><samp class="option">-cpucount <var class="var">count</var> (<em class="emph">global</em>)</samp></dt>
|
497 |
+
<dd><p>Override detection of CPU count. This option is intended
|
498 |
+
for testing. Do not use it unless you know what you’re doing.
|
499 |
+
</p><div class="example">
|
500 |
+
<pre class="example-preformatted">ffmpeg -cpucount 2
|
501 |
+
</pre></div>
|
502 |
+
|
503 |
+
</dd>
|
504 |
+
<dt><samp class="option">-max_alloc <var class="var">bytes</var></samp></dt>
|
505 |
+
<dd><p>Set the maximum size limit for allocating a block on the heap by ffmpeg’s
|
506 |
+
family of malloc functions. Exercise <strong class="strong">extreme caution</strong> when using
|
507 |
+
this option. Don’t use if you do not understand the full consequence of doing so.
|
508 |
+
Default is INT_MAX.
|
509 |
+
</p></dd>
|
510 |
+
</dl>
|
511 |
+
|
512 |
+
</div>
|
513 |
+
<div class="section-level-extent" id="AVOptions">
|
514 |
+
<h3 class="section">3.3 AVOptions</h3>
|
515 |
+
|
516 |
+
<p>These options are provided directly by the libavformat, libavdevice and
|
517 |
+
libavcodec libraries. To see the list of available AVOptions, use the
|
518 |
+
<samp class="option">-help</samp> option. They are separated into two categories:
|
519 |
+
</p><dl class="table">
|
520 |
+
<dt><samp class="option">generic</samp></dt>
|
521 |
+
<dd><p>These options can be set for any container, codec or device. Generic options
|
522 |
+
are listed under AVFormatContext options for containers/devices and under
|
523 |
+
AVCodecContext options for codecs.
|
524 |
+
</p></dd>
|
525 |
+
<dt><samp class="option">private</samp></dt>
|
526 |
+
<dd><p>These options are specific to the given container, device or codec. Private
|
527 |
+
options are listed under their corresponding containers/devices/codecs.
|
528 |
+
</p></dd>
|
529 |
+
</dl>
|
530 |
+
|
531 |
+
<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
|
532 |
+
an MP3 file, use the <samp class="option">id3v2_version</samp> private option of the MP3
|
533 |
+
muxer:
|
534 |
+
</p><div class="example">
|
535 |
+
<pre class="example-preformatted">ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
536 |
+
</pre></div>
|
537 |
+
|
538 |
+
<p>All codec AVOptions are per-stream, and thus a stream specifier
|
539 |
+
should be attached to them:
|
540 |
+
</p><div class="example">
|
541 |
+
<pre class="example-preformatted">ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
|
542 |
+
</pre></div>
|
543 |
+
|
544 |
+
<p>In the above example, a multichannel audio stream is mapped twice for output.
|
545 |
+
The first instance is encoded with codec ac3 and bitrate 640k.
|
546 |
+
The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using
|
547 |
+
absolute index of the output stream.
|
548 |
+
</p>
|
549 |
+
<p>Note: the <samp class="option">-nooption</samp> syntax cannot be used for boolean
|
550 |
+
AVOptions, use <samp class="option">-option 0</samp>/<samp class="option">-option 1</samp>.
|
551 |
+
</p>
|
552 |
+
<p>Note: the old undocumented way of specifying per-stream AVOptions by
|
553 |
+
prepending v/a/s to the options name is now obsolete and will be
|
554 |
+
removed soon.
|
555 |
+
</p>
|
556 |
+
</div>
|
557 |
+
<div class="section-level-extent" id="Main-options">
|
558 |
+
<h3 class="section">3.4 Main options</h3>
|
559 |
+
|
560 |
+
<dl class="table">
|
561 |
+
<dt><samp class="option">-x <var class="var">width</var></samp></dt>
|
562 |
+
<dd><p>Force displayed width.
|
563 |
+
</p></dd>
|
564 |
+
<dt><samp class="option">-y <var class="var">height</var></samp></dt>
|
565 |
+
<dd><p>Force displayed height.
|
566 |
+
</p></dd>
|
567 |
+
<dt><samp class="option">-fs</samp></dt>
|
568 |
+
<dd><p>Start in fullscreen mode.
|
569 |
+
</p></dd>
|
570 |
+
<dt><samp class="option">-an</samp></dt>
|
571 |
+
<dd><p>Disable audio.
|
572 |
+
</p></dd>
|
573 |
+
<dt><samp class="option">-vn</samp></dt>
|
574 |
+
<dd><p>Disable video.
|
575 |
+
</p></dd>
|
576 |
+
<dt><samp class="option">-sn</samp></dt>
|
577 |
+
<dd><p>Disable subtitles.
|
578 |
+
</p></dd>
|
579 |
+
<dt><samp class="option">-ss <var class="var">pos</var></samp></dt>
|
580 |
+
<dd><p>Seek to <var class="var">pos</var>. Note that in most formats it is not possible to seek
|
581 |
+
exactly, so <code class="command">ffplay</code> will seek to the nearest seek point to
|
582 |
+
<var class="var">pos</var>.
|
583 |
+
</p>
|
584 |
+
<p><var class="var">pos</var> must be a time duration specification,
|
585 |
+
see <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
586 |
+
</p></dd>
|
587 |
+
<dt><samp class="option">-t <var class="var">duration</var></samp></dt>
|
588 |
+
<dd><p>Play <var class="var">duration</var> seconds of audio/video.
|
589 |
+
</p>
|
590 |
+
<p><var class="var">duration</var> must be a time duration specification,
|
591 |
+
see <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
592 |
+
</p></dd>
|
593 |
+
<dt><samp class="option">-bytes</samp></dt>
|
594 |
+
<dd><p>Seek by bytes.
|
595 |
+
</p></dd>
|
596 |
+
<dt><samp class="option">-seek_interval</samp></dt>
|
597 |
+
<dd><p>Set custom interval, in seconds, for seeking using left/right keys. Default is 10 seconds.
|
598 |
+
</p></dd>
|
599 |
+
<dt><samp class="option">-nodisp</samp></dt>
|
600 |
+
<dd><p>Disable graphical display.
|
601 |
+
</p></dd>
|
602 |
+
<dt><samp class="option">-noborder</samp></dt>
|
603 |
+
<dd><p>Borderless window.
|
604 |
+
</p></dd>
|
605 |
+
<dt><samp class="option">-alwaysontop</samp></dt>
|
606 |
+
<dd><p>Window always on top. Available on: X11 with SDL >= 2.0.5, Windows SDL >= 2.0.6.
|
607 |
+
</p></dd>
|
608 |
+
<dt><samp class="option">-volume</samp></dt>
|
609 |
+
<dd><p>Set the startup volume. 0 means silence, 100 means no volume reduction or
|
610 |
+
amplification. Negative values are treated as 0, values above 100 are treated
|
611 |
+
as 100.
|
612 |
+
</p></dd>
|
613 |
+
<dt><samp class="option">-f <var class="var">fmt</var></samp></dt>
|
614 |
+
<dd><p>Force format.
|
615 |
+
</p></dd>
|
616 |
+
<dt><samp class="option">-window_title <var class="var">title</var></samp></dt>
|
617 |
+
<dd><p>Set window title (default is the input filename).
|
618 |
+
</p></dd>
|
619 |
+
<dt><samp class="option">-left <var class="var">title</var></samp></dt>
|
620 |
+
<dd><p>Set the x position for the left of the window (default is a centered window).
|
621 |
+
</p></dd>
|
622 |
+
<dt><samp class="option">-top <var class="var">title</var></samp></dt>
|
623 |
+
<dd><p>Set the y position for the top of the window (default is a centered window).
|
624 |
+
</p></dd>
|
625 |
+
<dt><samp class="option">-loop <var class="var">number</var></samp></dt>
|
626 |
+
<dd><p>Loops movie playback <number> times. 0 means forever.
|
627 |
+
</p></dd>
|
628 |
+
<dt><samp class="option">-showmode <var class="var">mode</var></samp></dt>
|
629 |
+
<dd><p>Set the show mode to use.
|
630 |
+
Available values for <var class="var">mode</var> are:
|
631 |
+
</p><dl class="table">
|
632 |
+
<dt>‘<samp class="samp">0, video</samp>’</dt>
|
633 |
+
<dd><p>show video
|
634 |
+
</p></dd>
|
635 |
+
<dt>‘<samp class="samp">1, waves</samp>’</dt>
|
636 |
+
<dd><p>show audio waves
|
637 |
+
</p></dd>
|
638 |
+
<dt>‘<samp class="samp">2, rdft</samp>’</dt>
|
639 |
+
<dd><p>show audio frequency band using RDFT ((Inverse) Real Discrete Fourier Transform)
|
640 |
+
</p></dd>
|
641 |
+
</dl>
|
642 |
+
|
643 |
+
<p>Default value is "video", if video is not present or cannot be played
|
644 |
+
"rdft" is automatically selected.
|
645 |
+
</p>
|
646 |
+
<p>You can interactively cycle through the available show modes by
|
647 |
+
pressing the key <kbd class="key">w</kbd>.
|
648 |
+
</p>
|
649 |
+
</dd>
|
650 |
+
<dt><samp class="option">-vf <var class="var">filtergraph</var></samp></dt>
|
651 |
+
<dd><p>Create the filtergraph specified by <var class="var">filtergraph</var> and use it to
|
652 |
+
filter the video stream.
|
653 |
+
</p>
|
654 |
+
<p><var class="var">filtergraph</var> is a description of the filtergraph to apply to
|
655 |
+
the stream, and must have a single video input and a single video
|
656 |
+
output. In the filtergraph, the input is associated to the label
|
657 |
+
<code class="code">in</code>, and the output to the label <code class="code">out</code>. See the
|
658 |
+
ffmpeg-filters manual for more information about the filtergraph
|
659 |
+
syntax.
|
660 |
+
</p>
|
661 |
+
<p>You can specify this parameter multiple times and cycle through the specified
|
662 |
+
filtergraphs along with the show modes by pressing the key <kbd class="key">w</kbd>.
|
663 |
+
</p>
|
664 |
+
</dd>
|
665 |
+
<dt><samp class="option">-af <var class="var">filtergraph</var></samp></dt>
|
666 |
+
<dd><p><var class="var">filtergraph</var> is a description of the filtergraph to apply to
|
667 |
+
the input audio.
|
668 |
+
Use the option "-filters" to show all the available filters (including
|
669 |
+
sources and sinks).
|
670 |
+
</p>
|
671 |
+
</dd>
|
672 |
+
<dt><samp class="option">-i <var class="var">input_url</var></samp></dt>
|
673 |
+
<dd><p>Read <var class="var">input_url</var>.
|
674 |
+
</p></dd>
|
675 |
+
</dl>
|
676 |
+
|
677 |
+
</div>
|
678 |
+
<div class="section-level-extent" id="Advanced-options">
|
679 |
+
<h3 class="section">3.5 Advanced options</h3>
|
680 |
+
<dl class="table">
|
681 |
+
<dt><samp class="option">-stats</samp></dt>
|
682 |
+
<dd><p>Print several playback statistics, in particular show the stream
|
683 |
+
duration, the codec parameters, the current position in the stream and
|
684 |
+
the audio/video synchronisation drift. It is shown by default, unless the
|
685 |
+
log level is lower than <code class="code">info</code>. Its display can be forced by manually
|
686 |
+
specifying this option. To disable it, you need to specify <code class="code">-nostats</code>.
|
687 |
+
</p>
|
688 |
+
</dd>
|
689 |
+
<dt><samp class="option">-fast</samp></dt>
|
690 |
+
<dd><p>Non-spec-compliant optimizations.
|
691 |
+
</p></dd>
|
692 |
+
<dt><samp class="option">-genpts</samp></dt>
|
693 |
+
<dd><p>Generate pts.
|
694 |
+
</p></dd>
|
695 |
+
<dt><samp class="option">-sync <var class="var">type</var></samp></dt>
|
696 |
+
<dd><p>Set the master clock to audio (<code class="code">type=audio</code>), video
|
697 |
+
(<code class="code">type=video</code>) or external (<code class="code">type=ext</code>). Default is audio. The
|
698 |
+
master clock is used to control audio-video synchronization. Most media
|
699 |
+
players use audio as master clock, but in some cases (streaming or high
|
700 |
+
quality broadcast) it is necessary to change that. This option is mainly
|
701 |
+
used for debugging purposes.
|
702 |
+
</p></dd>
|
703 |
+
<dt><samp class="option">-ast <var class="var">audio_stream_specifier</var></samp></dt>
|
704 |
+
<dd><p>Select the desired audio stream using the given stream specifier. The stream
|
705 |
+
specifiers are described in the <a class="ref" href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
706 |
+
is not specified, the "best" audio stream is selected in the program of the
|
707 |
+
already selected video stream.
|
708 |
+
</p></dd>
|
709 |
+
<dt><samp class="option">-vst <var class="var">video_stream_specifier</var></samp></dt>
|
710 |
+
<dd><p>Select the desired video stream using the given stream specifier. The stream
|
711 |
+
specifiers are described in the <a class="ref" href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
712 |
+
is not specified, the "best" video stream is selected.
|
713 |
+
</p></dd>
|
714 |
+
<dt><samp class="option">-sst <var class="var">subtitle_stream_specifier</var></samp></dt>
|
715 |
+
<dd><p>Select the desired subtitle stream using the given stream specifier. The stream
|
716 |
+
specifiers are described in the <a class="ref" href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
717 |
+
is not specified, the "best" subtitle stream is selected in the program of the
|
718 |
+
already selected video or audio stream.
|
719 |
+
</p></dd>
|
720 |
+
<dt><samp class="option">-autoexit</samp></dt>
|
721 |
+
<dd><p>Exit when video is done playing.
|
722 |
+
</p></dd>
|
723 |
+
<dt><samp class="option">-exitonkeydown</samp></dt>
|
724 |
+
<dd><p>Exit if any key is pressed.
|
725 |
+
</p></dd>
|
726 |
+
<dt><samp class="option">-exitonmousedown</samp></dt>
|
727 |
+
<dd><p>Exit if any mouse button is pressed.
|
728 |
+
</p>
|
729 |
+
</dd>
|
730 |
+
<dt><samp class="option">-codec:<var class="var">media_specifier</var> <var class="var">codec_name</var></samp></dt>
|
731 |
+
<dd><p>Force a specific decoder implementation for the stream identified by
|
732 |
+
<var class="var">media_specifier</var>, which can assume the values <code class="code">a</code> (audio),
|
733 |
+
<code class="code">v</code> (video), and <code class="code">s</code> subtitle.
|
734 |
+
</p>
|
735 |
+
</dd>
|
736 |
+
<dt><samp class="option">-acodec <var class="var">codec_name</var></samp></dt>
|
737 |
+
<dd><p>Force a specific audio decoder.
|
738 |
+
</p>
|
739 |
+
</dd>
|
740 |
+
<dt><samp class="option">-vcodec <var class="var">codec_name</var></samp></dt>
|
741 |
+
<dd><p>Force a specific video decoder.
|
742 |
+
</p>
|
743 |
+
</dd>
|
744 |
+
<dt><samp class="option">-scodec <var class="var">codec_name</var></samp></dt>
|
745 |
+
<dd><p>Force a specific subtitle decoder.
|
746 |
+
</p>
|
747 |
+
</dd>
|
748 |
+
<dt><samp class="option">-autorotate</samp></dt>
|
749 |
+
<dd><p>Automatically rotate the video according to file metadata. Enabled by
|
750 |
+
default, use <samp class="option">-noautorotate</samp> to disable it.
|
751 |
+
</p>
|
752 |
+
</dd>
|
753 |
+
<dt><samp class="option">-framedrop</samp></dt>
|
754 |
+
<dd><p>Drop video frames if video is out of sync. Enabled by default if the master
|
755 |
+
clock is not set to video. Use this option to enable frame dropping for all
|
756 |
+
master clock sources, use <samp class="option">-noframedrop</samp> to disable it.
|
757 |
+
</p>
|
758 |
+
</dd>
|
759 |
+
<dt><samp class="option">-infbuf</samp></dt>
|
760 |
+
<dd><p>Do not limit the input buffer size, read as much data as possible from the
|
761 |
+
input as soon as possible. Enabled by default for realtime streams, where data
|
762 |
+
may be dropped if not read in time. Use this option to enable infinite buffers
|
763 |
+
for all inputs, use <samp class="option">-noinfbuf</samp> to disable it.
|
764 |
+
</p>
|
765 |
+
</dd>
|
766 |
+
<dt><samp class="option">-filter_threads <var class="var">nb_threads</var></samp></dt>
|
767 |
+
<dd><p>Defines how many threads are used to process a filter pipeline. Each pipeline
|
768 |
+
will produce a thread pool with this many threads available for parallel
|
769 |
+
processing. The default is 0 which means that the thread count will be
|
770 |
+
determined by the number of available CPUs.
|
771 |
+
</p>
|
772 |
+
</dd>
|
773 |
+
</dl>
|
774 |
+
|
775 |
+
</div>
|
776 |
+
<div class="section-level-extent" id="While-playing">
|
777 |
+
<h3 class="section">3.6 While playing</h3>
|
778 |
+
|
779 |
+
<dl class="table">
|
780 |
+
<dt><kbd class="key">q, ESC</kbd></dt>
|
781 |
+
<dd><p>Quit.
|
782 |
+
</p>
|
783 |
+
</dd>
|
784 |
+
<dt><kbd class="key">f</kbd></dt>
|
785 |
+
<dd><p>Toggle full screen.
|
786 |
+
</p>
|
787 |
+
</dd>
|
788 |
+
<dt><kbd class="key">p, SPC</kbd></dt>
|
789 |
+
<dd><p>Pause.
|
790 |
+
</p>
|
791 |
+
</dd>
|
792 |
+
<dt><kbd class="key">m</kbd></dt>
|
793 |
+
<dd><p>Toggle mute.
|
794 |
+
</p>
|
795 |
+
</dd>
|
796 |
+
<dt><kbd class="key">9, 0</kbd></dt>
|
797 |
+
<dt><kbd class="key">/, *</kbd></dt>
|
798 |
+
<dd><p>Decrease and increase volume respectively.
|
799 |
+
</p>
|
800 |
+
</dd>
|
801 |
+
<dt><kbd class="key">a</kbd></dt>
|
802 |
+
<dd><p>Cycle audio channel in the current program.
|
803 |
+
</p>
|
804 |
+
</dd>
|
805 |
+
<dt><kbd class="key">v</kbd></dt>
|
806 |
+
<dd><p>Cycle video channel.
|
807 |
+
</p>
|
808 |
+
</dd>
|
809 |
+
<dt><kbd class="key">t</kbd></dt>
|
810 |
+
<dd><p>Cycle subtitle channel in the current program.
|
811 |
+
</p>
|
812 |
+
</dd>
|
813 |
+
<dt><kbd class="key">c</kbd></dt>
|
814 |
+
<dd><p>Cycle program.
|
815 |
+
</p>
|
816 |
+
</dd>
|
817 |
+
<dt><kbd class="key">w</kbd></dt>
|
818 |
+
<dd><p>Cycle video filters or show modes.
|
819 |
+
</p>
|
820 |
+
</dd>
|
821 |
+
<dt><kbd class="key">s</kbd></dt>
|
822 |
+
<dd><p>Step to the next frame.
|
823 |
+
</p>
|
824 |
+
<p>Pause if the stream is not already paused, step to the next video
|
825 |
+
frame, and pause.
|
826 |
+
</p>
|
827 |
+
</dd>
|
828 |
+
<dt><kbd class="key">left/right</kbd></dt>
|
829 |
+
<dd><p>Seek backward/forward 10 seconds.
|
830 |
+
</p>
|
831 |
+
</dd>
|
832 |
+
<dt><kbd class="key">down/up</kbd></dt>
|
833 |
+
<dd><p>Seek backward/forward 1 minute.
|
834 |
+
</p>
|
835 |
+
</dd>
|
836 |
+
<dt><kbd class="key">page down/page up</kbd></dt>
|
837 |
+
<dd><p>Seek to the previous/next chapter.
|
838 |
+
or if there are no chapters
|
839 |
+
Seek backward/forward 10 minutes.
|
840 |
+
</p>
|
841 |
+
</dd>
|
842 |
+
<dt><kbd class="key">right mouse click</kbd></dt>
|
843 |
+
<dd><p>Seek to percentage in file corresponding to fraction of width.
|
844 |
+
</p>
|
845 |
+
</dd>
|
846 |
+
<dt><kbd class="key">left mouse double-click</kbd></dt>
|
847 |
+
<dd><p>Toggle full screen.
|
848 |
+
</p>
|
849 |
+
</dd>
|
850 |
+
</dl>
|
851 |
+
|
852 |
+
|
853 |
+
|
854 |
+
</div>
|
855 |
+
</div>
|
856 |
+
<div class="chapter-level-extent" id="See-Also">
|
857 |
+
<h2 class="chapter">4 See Also</h2>
|
858 |
+
|
859 |
+
<p><a class="url" href="ffplay-all.html">ffmpeg-all</a>,
|
860 |
+
<a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
861 |
+
<a class="url" href="ffmpeg-utils.html">ffmpeg-utils</a>,
|
862 |
+
<a class="url" href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
863 |
+
<a class="url" href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
864 |
+
<a class="url" href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
|
865 |
+
<a class="url" href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
|
866 |
+
<a class="url" href="ffmpeg-formats.html">ffmpeg-formats</a>,
|
867 |
+
<a class="url" href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
868 |
+
<a class="url" href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
869 |
+
<a class="url" href="ffmpeg-filters.html">ffmpeg-filters</a>
|
870 |
+
</p>
|
871 |
+
|
872 |
+
</div>
|
873 |
+
<div class="chapter-level-extent" id="Authors">
|
874 |
+
<h2 class="chapter">5 Authors</h2>
|
875 |
+
|
876 |
+
<p>The FFmpeg developers.
|
877 |
+
</p>
|
878 |
+
<p>For details about the authorship, see the Git history of the project
|
879 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
880 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
881 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
882 |
+
</p>
|
883 |
+
<p>Maintainers for the specific components are listed in the file
|
884 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
885 |
+
</p>
|
886 |
+
|
887 |
+
</div>
|
888 |
+
</div>
|
889 |
+
|
890 |
+
|
891 |
+
|
892 |
+
</body>
|
893 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/ffprobe-all.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/ffprobe.html
ADDED
@@ -0,0 +1,1258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>ffprobe Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="ffprobe Documentation">
|
9 |
+
<meta name="keywords" content="ffprobe Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Synopsis" href="#Synopsis">1 Synopsis</a></li>
|
40 |
+
<li><a id="toc-Description" href="#Description">2 Description</a></li>
|
41 |
+
<li><a id="toc-Options" href="#Options">3 Options</a>
|
42 |
+
<ul class="toc-numbered-mark">
|
43 |
+
<li><a id="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
|
44 |
+
<li><a id="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
|
45 |
+
<li><a id="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
|
46 |
+
<li><a id="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
|
47 |
+
</ul></li>
|
48 |
+
<li><a id="toc-Writers" href="#Writers">4 Writers</a>
|
49 |
+
<ul class="toc-numbered-mark">
|
50 |
+
<li><a id="toc-default" href="#default">4.1 default</a></li>
|
51 |
+
<li><a id="toc-compact_002c-csv" href="#compact_002c-csv">4.2 compact, csv</a></li>
|
52 |
+
<li><a id="toc-flat" href="#flat">4.3 flat</a></li>
|
53 |
+
<li><a id="toc-ini" href="#ini">4.4 ini</a></li>
|
54 |
+
<li><a id="toc-json" href="#json">4.5 json</a></li>
|
55 |
+
<li><a id="toc-xml" href="#xml">4.6 xml</a></li>
|
56 |
+
</ul></li>
|
57 |
+
<li><a id="toc-Timecode" href="#Timecode">5 Timecode</a></li>
|
58 |
+
<li><a id="toc-See-Also" href="#See-Also">6 See Also</a></li>
|
59 |
+
<li><a id="toc-Authors" href="#Authors">7 Authors</a></li>
|
60 |
+
</ul>
|
61 |
+
</div>
|
62 |
+
</div>
|
63 |
+
<div class="chapter-level-extent" id="Synopsis">
|
64 |
+
<h2 class="chapter">1 Synopsis</h2>
|
65 |
+
|
66 |
+
<p>ffprobe [<var class="var">options</var>] <samp class="file">input_url</samp>
|
67 |
+
</p>
|
68 |
+
</div>
|
69 |
+
<div class="chapter-level-extent" id="Description">
|
70 |
+
<h2 class="chapter">2 Description</h2>
|
71 |
+
|
72 |
+
<p>ffprobe gathers information from multimedia streams and prints it in
|
73 |
+
human- and machine-readable fashion.
|
74 |
+
</p>
|
75 |
+
<p>For example it can be used to check the format of the container used
|
76 |
+
by a multimedia stream and the format and type of each media stream
|
77 |
+
contained in it.
|
78 |
+
</p>
|
79 |
+
<p>If a url is specified in input, ffprobe will try to open and
|
80 |
+
probe the url content. If the url cannot be opened or recognized as
|
81 |
+
a multimedia file, a positive exit code is returned.
|
82 |
+
</p>
|
83 |
+
<p>If no output is specified as output with <samp class="option">o</samp> ffprobe will write
|
84 |
+
to stdout.
|
85 |
+
</p>
|
86 |
+
<p>ffprobe may be employed both as a standalone application or in
|
87 |
+
combination with a textual filter, which may perform more
|
88 |
+
sophisticated processing, e.g. statistical processing or plotting.
|
89 |
+
</p>
|
90 |
+
<p>Options are used to list some of the formats supported by ffprobe or
|
91 |
+
for specifying which information to display, and for setting how
|
92 |
+
ffprobe will show it.
|
93 |
+
</p>
|
94 |
+
<p>ffprobe output is designed to be easily parsable by a textual filter,
|
95 |
+
and consists of one or more sections of a form defined by the selected
|
96 |
+
writer, which is specified by the <samp class="option">print_format</samp> option.
|
97 |
+
</p>
|
98 |
+
<p>Sections may contain other nested sections, and are identified by a
|
99 |
+
name (which may be shared by other sections), and an unique
|
100 |
+
name. See the output of <samp class="option">sections</samp>.
|
101 |
+
</p>
|
102 |
+
<p>Metadata tags stored in the container or in the streams are recognized
|
103 |
+
and printed in the corresponding "FORMAT", "STREAM" or "PROGRAM_STREAM"
|
104 |
+
section.
|
105 |
+
</p>
|
106 |
+
|
107 |
+
</div>
|
108 |
+
<div class="chapter-level-extent" id="Options">
|
109 |
+
<h2 class="chapter">3 Options</h2>
|
110 |
+
|
111 |
+
<p>All the numerical options, if not specified otherwise, accept a string
|
112 |
+
representing a number as input, which may be followed by one of the SI
|
113 |
+
unit prefixes, for example: ’K’, ’M’, or ’G’.
|
114 |
+
</p>
|
115 |
+
<p>If ’i’ is appended to the SI unit prefix, the complete prefix will be
|
116 |
+
interpreted as a unit prefix for binary multiples, which are based on
|
117 |
+
powers of 1024 instead of powers of 1000. Appending ’B’ to the SI unit
|
118 |
+
prefix multiplies the value by 8. This allows using, for example:
|
119 |
+
’KB’, ’MiB’, ’G’ and ’B’ as number suffixes.
|
120 |
+
</p>
|
121 |
+
<p>Options which do not take arguments are boolean options, and set the
|
122 |
+
corresponding value to true. They can be set to false by prefixing
|
123 |
+
the option name with "no". For example using "-nofoo"
|
124 |
+
will set the boolean option with name "foo" to false.
|
125 |
+
</p>
|
126 |
+
<a class="anchor" id="Stream-specifiers"></a><ul class="mini-toc">
|
127 |
+
<li><a href="#Stream-specifiers-1" accesskey="1">Stream specifiers</a></li>
|
128 |
+
<li><a href="#Generic-options" accesskey="2">Generic options</a></li>
|
129 |
+
<li><a href="#AVOptions" accesskey="3">AVOptions</a></li>
|
130 |
+
<li><a href="#Main-options" accesskey="4">Main options</a></li>
|
131 |
+
</ul>
|
132 |
+
<div class="section-level-extent" id="Stream-specifiers-1">
|
133 |
+
<h3 class="section">3.1 Stream specifiers</h3>
|
134 |
+
<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
|
135 |
+
are used to precisely specify which stream(s) a given option belongs to.
|
136 |
+
</p>
|
137 |
+
<p>A stream specifier is a string generally appended to the option name and
|
138 |
+
separated from it by a colon. E.g. <code class="code">-codec:a:1 ac3</code> contains the
|
139 |
+
<code class="code">a:1</code> stream specifier, which matches the second audio stream. Therefore, it
|
140 |
+
would select the ac3 codec for the second audio stream.
|
141 |
+
</p>
|
142 |
+
<p>A stream specifier can match several streams, so that the option is applied to all
|
143 |
+
of them. E.g. the stream specifier in <code class="code">-b:a 128k</code> matches all audio
|
144 |
+
streams.
|
145 |
+
</p>
|
146 |
+
<p>An empty stream specifier matches all streams. For example, <code class="code">-codec copy</code>
|
147 |
+
or <code class="code">-codec: copy</code> would copy all the streams without reencoding.
|
148 |
+
</p>
|
149 |
+
<p>Possible forms of stream specifiers are:
|
150 |
+
</p><dl class="table">
|
151 |
+
<dt><samp class="option"><var class="var">stream_index</var></samp></dt>
|
152 |
+
<dd><p>Matches the stream with this index. E.g. <code class="code">-threads:1 4</code> would set the
|
153 |
+
thread count for the second stream to 4. If <var class="var">stream_index</var> is used as an
|
154 |
+
additional stream specifier (see below), then it selects stream number
|
155 |
+
<var class="var">stream_index</var> from the matching streams. Stream numbering is based on the
|
156 |
+
order of the streams as detected by libavformat except when a program ID is
|
157 |
+
also specified. In this case it is based on the ordering of the streams in the
|
158 |
+
program.
|
159 |
+
</p></dd>
|
160 |
+
<dt><samp class="option"><var class="var">stream_type</var>[:<var class="var">additional_stream_specifier</var>]</samp></dt>
|
161 |
+
<dd><p><var class="var">stream_type</var> is one of following: ’v’ or ’V’ for video, ’a’ for audio, ’s’
|
162 |
+
for subtitle, ’d’ for data, and ’t’ for attachments. ’v’ matches all video
|
163 |
+
streams, ’V’ only matches video streams which are not attached pictures, video
|
164 |
+
thumbnails or cover arts. If <var class="var">additional_stream_specifier</var> is used, then
|
165 |
+
it matches streams which both have this type and match the
|
166 |
+
<var class="var">additional_stream_specifier</var>. Otherwise, it matches all streams of the
|
167 |
+
specified type.
|
168 |
+
</p></dd>
|
169 |
+
<dt><samp class="option">p:<var class="var">program_id</var>[:<var class="var">additional_stream_specifier</var>]</samp></dt>
|
170 |
+
<dd><p>Matches streams which are in the program with the id <var class="var">program_id</var>. If
|
171 |
+
<var class="var">additional_stream_specifier</var> is used, then it matches streams which both
|
172 |
+
are part of the program and match the <var class="var">additional_stream_specifier</var>.
|
173 |
+
</p>
|
174 |
+
</dd>
|
175 |
+
<dt><samp class="option">#<var class="var">stream_id</var> or i:<var class="var">stream_id</var></samp></dt>
|
176 |
+
<dd><p>Match the stream by stream id (e.g. PID in MPEG-TS container).
|
177 |
+
</p></dd>
|
178 |
+
<dt><samp class="option">m:<var class="var">key</var>[:<var class="var">value</var>]</samp></dt>
|
179 |
+
<dd><p>Matches streams with the metadata tag <var class="var">key</var> having the specified value. If
|
180 |
+
<var class="var">value</var> is not given, matches streams that contain the given tag with any
|
181 |
+
value.
|
182 |
+
</p></dd>
|
183 |
+
<dt><samp class="option">u</samp></dt>
|
184 |
+
<dd><p>Matches streams with usable configuration, the codec must be defined and the
|
185 |
+
essential information such as video dimension or audio sample rate must be present.
|
186 |
+
</p>
|
187 |
+
<p>Note that in <code class="command">ffmpeg</code>, matching by metadata will only work properly for
|
188 |
+
input files.
|
189 |
+
</p></dd>
|
190 |
+
</dl>
|
191 |
+
|
192 |
+
</div>
|
193 |
+
<div class="section-level-extent" id="Generic-options">
|
194 |
+
<h3 class="section">3.2 Generic options</h3>
|
195 |
+
|
196 |
+
<p>These options are shared amongst the ff* tools.
|
197 |
+
</p>
|
198 |
+
<dl class="table">
|
199 |
+
<dt><samp class="option">-L</samp></dt>
|
200 |
+
<dd><p>Show license.
|
201 |
+
</p>
|
202 |
+
</dd>
|
203 |
+
<dt><samp class="option">-h, -?, -help, --help [<var class="var">arg</var>]</samp></dt>
|
204 |
+
<dd><p>Show help. An optional parameter may be specified to print help about a specific
|
205 |
+
item. If no argument is specified, only basic (non advanced) tool
|
206 |
+
options are shown.
|
207 |
+
</p>
|
208 |
+
<p>Possible values of <var class="var">arg</var> are:
|
209 |
+
</p><dl class="table">
|
210 |
+
<dt><samp class="option">long</samp></dt>
|
211 |
+
<dd><p>Print advanced tool options in addition to the basic tool options.
|
212 |
+
</p>
|
213 |
+
</dd>
|
214 |
+
<dt><samp class="option">full</samp></dt>
|
215 |
+
<dd><p>Print complete list of options, including shared and private options
|
216 |
+
for encoders, decoders, demuxers, muxers, filters, etc.
|
217 |
+
</p>
|
218 |
+
</dd>
|
219 |
+
<dt><samp class="option">decoder=<var class="var">decoder_name</var></samp></dt>
|
220 |
+
<dd><p>Print detailed information about the decoder named <var class="var">decoder_name</var>. Use the
|
221 |
+
<samp class="option">-decoders</samp> option to get a list of all decoders.
|
222 |
+
</p>
|
223 |
+
</dd>
|
224 |
+
<dt><samp class="option">encoder=<var class="var">encoder_name</var></samp></dt>
|
225 |
+
<dd><p>Print detailed information about the encoder named <var class="var">encoder_name</var>. Use the
|
226 |
+
<samp class="option">-encoders</samp> option to get a list of all encoders.
|
227 |
+
</p>
|
228 |
+
</dd>
|
229 |
+
<dt><samp class="option">demuxer=<var class="var">demuxer_name</var></samp></dt>
|
230 |
+
<dd><p>Print detailed information about the demuxer named <var class="var">demuxer_name</var>. Use the
|
231 |
+
<samp class="option">-formats</samp> option to get a list of all demuxers and muxers.
|
232 |
+
</p>
|
233 |
+
</dd>
|
234 |
+
<dt><samp class="option">muxer=<var class="var">muxer_name</var></samp></dt>
|
235 |
+
<dd><p>Print detailed information about the muxer named <var class="var">muxer_name</var>. Use the
|
236 |
+
<samp class="option">-formats</samp> option to get a list of all muxers and demuxers.
|
237 |
+
</p>
|
238 |
+
</dd>
|
239 |
+
<dt><samp class="option">filter=<var class="var">filter_name</var></samp></dt>
|
240 |
+
<dd><p>Print detailed information about the filter named <var class="var">filter_name</var>. Use the
|
241 |
+
<samp class="option">-filters</samp> option to get a list of all filters.
|
242 |
+
</p>
|
243 |
+
</dd>
|
244 |
+
<dt><samp class="option">bsf=<var class="var">bitstream_filter_name</var></samp></dt>
|
245 |
+
<dd><p>Print detailed information about the bitstream filter named <var class="var">bitstream_filter_name</var>.
|
246 |
+
Use the <samp class="option">-bsfs</samp> option to get a list of all bitstream filters.
|
247 |
+
</p>
|
248 |
+
</dd>
|
249 |
+
<dt><samp class="option">protocol=<var class="var">protocol_name</var></samp></dt>
|
250 |
+
<dd><p>Print detailed information about the protocol named <var class="var">protocol_name</var>.
|
251 |
+
Use the <samp class="option">-protocols</samp> option to get a list of all protocols.
|
252 |
+
</p></dd>
|
253 |
+
</dl>
|
254 |
+
|
255 |
+
</dd>
|
256 |
+
<dt><samp class="option">-version</samp></dt>
|
257 |
+
<dd><p>Show version.
|
258 |
+
</p>
|
259 |
+
</dd>
|
260 |
+
<dt><samp class="option">-buildconf</samp></dt>
|
261 |
+
<dd><p>Show the build configuration, one option per line.
|
262 |
+
</p>
|
263 |
+
</dd>
|
264 |
+
<dt><samp class="option">-formats</samp></dt>
|
265 |
+
<dd><p>Show available formats (including devices).
|
266 |
+
</p>
|
267 |
+
</dd>
|
268 |
+
<dt><samp class="option">-demuxers</samp></dt>
|
269 |
+
<dd><p>Show available demuxers.
|
270 |
+
</p>
|
271 |
+
</dd>
|
272 |
+
<dt><samp class="option">-muxers</samp></dt>
|
273 |
+
<dd><p>Show available muxers.
|
274 |
+
</p>
|
275 |
+
</dd>
|
276 |
+
<dt><samp class="option">-devices</samp></dt>
|
277 |
+
<dd><p>Show available devices.
|
278 |
+
</p>
|
279 |
+
</dd>
|
280 |
+
<dt><samp class="option">-codecs</samp></dt>
|
281 |
+
<dd><p>Show all codecs known to libavcodec.
|
282 |
+
</p>
|
283 |
+
<p>Note that the term ’codec’ is used throughout this documentation as a shortcut
|
284 |
+
for what is more correctly called a media bitstream format.
|
285 |
+
</p>
|
286 |
+
</dd>
|
287 |
+
<dt><samp class="option">-decoders</samp></dt>
|
288 |
+
<dd><p>Show available decoders.
|
289 |
+
</p>
|
290 |
+
</dd>
|
291 |
+
<dt><samp class="option">-encoders</samp></dt>
|
292 |
+
<dd><p>Show all available encoders.
|
293 |
+
</p>
|
294 |
+
</dd>
|
295 |
+
<dt><samp class="option">-bsfs</samp></dt>
|
296 |
+
<dd><p>Show available bitstream filters.
|
297 |
+
</p>
|
298 |
+
</dd>
|
299 |
+
<dt><samp class="option">-protocols</samp></dt>
|
300 |
+
<dd><p>Show available protocols.
|
301 |
+
</p>
|
302 |
+
</dd>
|
303 |
+
<dt><samp class="option">-filters</samp></dt>
|
304 |
+
<dd><p>Show available libavfilter filters.
|
305 |
+
</p>
|
306 |
+
</dd>
|
307 |
+
<dt><samp class="option">-pix_fmts</samp></dt>
|
308 |
+
<dd><p>Show available pixel formats.
|
309 |
+
</p>
|
310 |
+
</dd>
|
311 |
+
<dt><samp class="option">-sample_fmts</samp></dt>
|
312 |
+
<dd><p>Show available sample formats.
|
313 |
+
</p>
|
314 |
+
</dd>
|
315 |
+
<dt><samp class="option">-layouts</samp></dt>
|
316 |
+
<dd><p>Show channel names and standard channel layouts.
|
317 |
+
</p>
|
318 |
+
</dd>
|
319 |
+
<dt><samp class="option">-dispositions</samp></dt>
|
320 |
+
<dd><p>Show stream dispositions.
|
321 |
+
</p>
|
322 |
+
</dd>
|
323 |
+
<dt><samp class="option">-colors</samp></dt>
|
324 |
+
<dd><p>Show recognized color names.
|
325 |
+
</p>
|
326 |
+
</dd>
|
327 |
+
<dt><samp class="option">-sources <var class="var">device</var>[,<var class="var">opt1</var>=<var class="var">val1</var>[,<var class="var">opt2</var>=<var class="var">val2</var>]...]</samp></dt>
|
328 |
+
<dd><p>Show autodetected sources of the input device.
|
329 |
+
Some devices may provide system-dependent source names that cannot be autodetected.
|
330 |
+
The returned list cannot be assumed to be always complete.
|
331 |
+
</p><div class="example">
|
332 |
+
<pre class="example-preformatted">ffmpeg -sources pulse,server=192.168.0.4
|
333 |
+
</pre></div>
|
334 |
+
|
335 |
+
</dd>
|
336 |
+
<dt><samp class="option">-sinks <var class="var">device</var>[,<var class="var">opt1</var>=<var class="var">val1</var>[,<var class="var">opt2</var>=<var class="var">val2</var>]...]</samp></dt>
|
337 |
+
<dd><p>Show autodetected sinks of the output device.
|
338 |
+
Some devices may provide system-dependent sink names that cannot be autodetected.
|
339 |
+
The returned list cannot be assumed to be always complete.
|
340 |
+
</p><div class="example">
|
341 |
+
<pre class="example-preformatted">ffmpeg -sinks pulse,server=192.168.0.4
|
342 |
+
</pre></div>
|
343 |
+
|
344 |
+
</dd>
|
345 |
+
<dt><samp class="option">-loglevel [<var class="var">flags</var>+]<var class="var">loglevel</var> | -v [<var class="var">flags</var>+]<var class="var">loglevel</var></samp></dt>
|
346 |
+
<dd><p>Set logging level and flags used by the library.
|
347 |
+
</p>
|
348 |
+
<p>The optional <var class="var">flags</var> prefix can consist of the following values:
|
349 |
+
</p><dl class="table">
|
350 |
+
<dt>‘<samp class="samp">repeat</samp>’</dt>
|
351 |
+
<dd><p>Indicates that repeated log output should not be compressed to the first line
|
352 |
+
and the "Last message repeated n times" line will be omitted.
|
353 |
+
</p></dd>
|
354 |
+
<dt>‘<samp class="samp">level</samp>’</dt>
|
355 |
+
<dd><p>Indicates that log output should add a <code class="code">[level]</code> prefix to each message
|
356 |
+
line. This can be used as an alternative to log coloring, e.g. when dumping the
|
357 |
+
log to file.
|
358 |
+
</p></dd>
|
359 |
+
</dl>
|
360 |
+
<p>Flags can also be used alone by adding a ’+’/’-’ prefix to set/reset a single
|
361 |
+
flag without affecting other <var class="var">flags</var> or changing <var class="var">loglevel</var>. When
|
362 |
+
setting both <var class="var">flags</var> and <var class="var">loglevel</var>, a ’+’ separator is expected
|
363 |
+
between the last <var class="var">flags</var> value and before <var class="var">loglevel</var>.
|
364 |
+
</p>
|
365 |
+
<p><var class="var">loglevel</var> is a string or a number containing one of the following values:
|
366 |
+
</p><dl class="table">
|
367 |
+
<dt>‘<samp class="samp">quiet, -8</samp>’</dt>
|
368 |
+
<dd><p>Show nothing at all; be silent.
|
369 |
+
</p></dd>
|
370 |
+
<dt>‘<samp class="samp">panic, 0</samp>’</dt>
|
371 |
+
<dd><p>Only show fatal errors which could lead the process to crash, such as
|
372 |
+
an assertion failure. This is not currently used for anything.
|
373 |
+
</p></dd>
|
374 |
+
<dt>‘<samp class="samp">fatal, 8</samp>’</dt>
|
375 |
+
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
376 |
+
cannot continue.
|
377 |
+
</p></dd>
|
378 |
+
<dt>‘<samp class="samp">error, 16</samp>’</dt>
|
379 |
+
<dd><p>Show all errors, including ones which can be recovered from.
|
380 |
+
</p></dd>
|
381 |
+
<dt>‘<samp class="samp">warning, 24</samp>’</dt>
|
382 |
+
<dd><p>Show all warnings and errors. Any message related to possibly
|
383 |
+
incorrect or unexpected events will be shown.
|
384 |
+
</p></dd>
|
385 |
+
<dt>‘<samp class="samp">info, 32</samp>’</dt>
|
386 |
+
<dd><p>Show informative messages during processing. This is in addition to
|
387 |
+
warnings and errors. This is the default value.
|
388 |
+
</p></dd>
|
389 |
+
<dt>‘<samp class="samp">verbose, 40</samp>’</dt>
|
390 |
+
<dd><p>Same as <code class="code">info</code>, except more verbose.
|
391 |
+
</p></dd>
|
392 |
+
<dt>‘<samp class="samp">debug, 48</samp>’</dt>
|
393 |
+
<dd><p>Show everything, including debugging information.
|
394 |
+
</p></dd>
|
395 |
+
<dt>‘<samp class="samp">trace, 56</samp>’</dt>
|
396 |
+
</dl>
|
397 |
+
|
398 |
+
<p>For example to enable repeated log output, add the <code class="code">level</code> prefix, and set
|
399 |
+
<var class="var">loglevel</var> to <code class="code">verbose</code>:
|
400 |
+
</p><div class="example">
|
401 |
+
<pre class="example-preformatted">ffmpeg -loglevel repeat+level+verbose -i input output
|
402 |
+
</pre></div>
|
403 |
+
<p>Another example that enables repeated log output without affecting current
|
404 |
+
state of <code class="code">level</code> prefix flag or <var class="var">loglevel</var>:
|
405 |
+
</p><div class="example">
|
406 |
+
<pre class="example-preformatted">ffmpeg [...] -loglevel +repeat
|
407 |
+
</pre></div>
|
408 |
+
|
409 |
+
<p>By default the program logs to stderr. If coloring is supported by the
|
410 |
+
terminal, colors are used to mark errors and warnings. Log coloring
|
411 |
+
can be disabled setting the environment variable
|
412 |
+
<code class="env">AV_LOG_FORCE_NOCOLOR</code>, or can be forced setting
|
413 |
+
the environment variable <code class="env">AV_LOG_FORCE_COLOR</code>.
|
414 |
+
</p>
|
415 |
+
</dd>
|
416 |
+
<dt><samp class="option">-report</samp></dt>
|
417 |
+
<dd><p>Dump full command line and log output to a file named
|
418 |
+
<code class="code"><var class="var">program</var>-<var class="var">YYYYMMDD</var>-<var class="var">HHMMSS</var>.log</code> in the current
|
419 |
+
directory.
|
420 |
+
This file can be useful for bug reports.
|
421 |
+
It also implies <code class="code">-loglevel debug</code>.
|
422 |
+
</p>
|
423 |
+
<p>Setting the environment variable <code class="env">FFREPORT</code> to any value has the
|
424 |
+
same effect. If the value is a ’:’-separated key=value sequence, these
|
425 |
+
options will affect the report; option values must be escaped if they
|
426 |
+
contain special characters or the options delimiter ’:’ (see the
|
427 |
+
“Quoting and escaping” section in the ffmpeg-utils manual).
|
428 |
+
</p>
|
429 |
+
<p>The following options are recognized:
|
430 |
+
</p><dl class="table">
|
431 |
+
<dt><samp class="option">file</samp></dt>
|
432 |
+
<dd><p>set the file name to use for the report; <code class="code">%p</code> is expanded to the name
|
433 |
+
of the program, <code class="code">%t</code> is expanded to a timestamp, <code class="code">%%</code> is expanded
|
434 |
+
to a plain <code class="code">%</code>
|
435 |
+
</p></dd>
|
436 |
+
<dt><samp class="option">level</samp></dt>
|
437 |
+
<dd><p>set the log verbosity level using a numerical value (see <code class="code">-loglevel</code>).
|
438 |
+
</p></dd>
|
439 |
+
</dl>
|
440 |
+
|
441 |
+
<p>For example, to output a report to a file named <samp class="file">ffreport.log</samp>
|
442 |
+
using a log level of <code class="code">32</code> (alias for log level <code class="code">info</code>):
|
443 |
+
</p>
|
444 |
+
<div class="example">
|
445 |
+
<pre class="example-preformatted">FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
|
446 |
+
</pre></div>
|
447 |
+
|
448 |
+
<p>Errors in parsing the environment variable are not fatal, and will not
|
449 |
+
appear in the report.
|
450 |
+
</p>
|
451 |
+
</dd>
|
452 |
+
<dt><samp class="option">-hide_banner</samp></dt>
|
453 |
+
<dd><p>Suppress printing banner.
|
454 |
+
</p>
|
455 |
+
<p>All FFmpeg tools will normally show a copyright notice, build options
|
456 |
+
and library versions. This option can be used to suppress printing
|
457 |
+
this information.
|
458 |
+
</p>
|
459 |
+
</dd>
|
460 |
+
<dt><samp class="option">-cpuflags flags (<em class="emph">global</em>)</samp></dt>
|
461 |
+
<dd><p>Allows setting and clearing cpu flags. This option is intended
|
462 |
+
for testing. Do not use it unless you know what you’re doing.
|
463 |
+
</p><div class="example">
|
464 |
+
<pre class="example-preformatted">ffmpeg -cpuflags -sse+mmx ...
|
465 |
+
ffmpeg -cpuflags mmx ...
|
466 |
+
ffmpeg -cpuflags 0 ...
|
467 |
+
</pre></div>
|
468 |
+
<p>Possible flags for this option are:
|
469 |
+
</p><dl class="table">
|
470 |
+
<dt>‘<samp class="samp">x86</samp>’</dt>
|
471 |
+
<dd><dl class="table">
|
472 |
+
<dt>‘<samp class="samp">mmx</samp>’</dt>
|
473 |
+
<dt>‘<samp class="samp">mmxext</samp>’</dt>
|
474 |
+
<dt>‘<samp class="samp">sse</samp>’</dt>
|
475 |
+
<dt>‘<samp class="samp">sse2</samp>’</dt>
|
476 |
+
<dt>‘<samp class="samp">sse2slow</samp>’</dt>
|
477 |
+
<dt>‘<samp class="samp">sse3</samp>’</dt>
|
478 |
+
<dt>‘<samp class="samp">sse3slow</samp>’</dt>
|
479 |
+
<dt>‘<samp class="samp">ssse3</samp>’</dt>
|
480 |
+
<dt>‘<samp class="samp">atom</samp>’</dt>
|
481 |
+
<dt>‘<samp class="samp">sse4.1</samp>’</dt>
|
482 |
+
<dt>‘<samp class="samp">sse4.2</samp>’</dt>
|
483 |
+
<dt>‘<samp class="samp">avx</samp>’</dt>
|
484 |
+
<dt>‘<samp class="samp">avx2</samp>’</dt>
|
485 |
+
<dt>‘<samp class="samp">xop</samp>’</dt>
|
486 |
+
<dt>‘<samp class="samp">fma3</samp>’</dt>
|
487 |
+
<dt>‘<samp class="samp">fma4</samp>’</dt>
|
488 |
+
<dt>‘<samp class="samp">3dnow</samp>’</dt>
|
489 |
+
<dt>‘<samp class="samp">3dnowext</samp>’</dt>
|
490 |
+
<dt>‘<samp class="samp">bmi1</samp>’</dt>
|
491 |
+
<dt>‘<samp class="samp">bmi2</samp>’</dt>
|
492 |
+
<dt>‘<samp class="samp">cmov</samp>’</dt>
|
493 |
+
</dl>
|
494 |
+
</dd>
|
495 |
+
<dt>‘<samp class="samp">ARM</samp>’</dt>
|
496 |
+
<dd><dl class="table">
|
497 |
+
<dt>‘<samp class="samp">armv5te</samp>’</dt>
|
498 |
+
<dt>‘<samp class="samp">armv6</samp>’</dt>
|
499 |
+
<dt>‘<samp class="samp">armv6t2</samp>’</dt>
|
500 |
+
<dt>‘<samp class="samp">vfp</samp>’</dt>
|
501 |
+
<dt>‘<samp class="samp">vfpv3</samp>’</dt>
|
502 |
+
<dt>‘<samp class="samp">neon</samp>’</dt>
|
503 |
+
<dt>‘<samp class="samp">setend</samp>’</dt>
|
504 |
+
</dl>
|
505 |
+
</dd>
|
506 |
+
<dt>‘<samp class="samp">AArch64</samp>’</dt>
|
507 |
+
<dd><dl class="table">
|
508 |
+
<dt>‘<samp class="samp">armv8</samp>’</dt>
|
509 |
+
<dt>‘<samp class="samp">vfp</samp>’</dt>
|
510 |
+
<dt>‘<samp class="samp">neon</samp>’</dt>
|
511 |
+
</dl>
|
512 |
+
</dd>
|
513 |
+
<dt>‘<samp class="samp">PowerPC</samp>’</dt>
|
514 |
+
<dd><dl class="table">
|
515 |
+
<dt>‘<samp class="samp">altivec</samp>’</dt>
|
516 |
+
</dl>
|
517 |
+
</dd>
|
518 |
+
<dt>‘<samp class="samp">Specific Processors</samp>’</dt>
|
519 |
+
<dd><dl class="table">
|
520 |
+
<dt>‘<samp class="samp">pentium2</samp>’</dt>
|
521 |
+
<dt>‘<samp class="samp">pentium3</samp>’</dt>
|
522 |
+
<dt>‘<samp class="samp">pentium4</samp>’</dt>
|
523 |
+
<dt>‘<samp class="samp">k6</samp>’</dt>
|
524 |
+
<dt>‘<samp class="samp">k62</samp>’</dt>
|
525 |
+
<dt>‘<samp class="samp">athlon</samp>’</dt>
|
526 |
+
<dt>‘<samp class="samp">athlonxp</samp>’</dt>
|
527 |
+
<dt>‘<samp class="samp">k8</samp>’</dt>
|
528 |
+
</dl>
|
529 |
+
</dd>
|
530 |
+
</dl>
|
531 |
+
|
532 |
+
</dd>
|
533 |
+
<dt><samp class="option">-cpucount <var class="var">count</var> (<em class="emph">global</em>)</samp></dt>
|
534 |
+
<dd><p>Override detection of CPU count. This option is intended
|
535 |
+
for testing. Do not use it unless you know what you’re doing.
|
536 |
+
</p><div class="example">
|
537 |
+
<pre class="example-preformatted">ffmpeg -cpucount 2
|
538 |
+
</pre></div>
|
539 |
+
|
540 |
+
</dd>
|
541 |
+
<dt><samp class="option">-max_alloc <var class="var">bytes</var></samp></dt>
|
542 |
+
<dd><p>Set the maximum size limit for allocating a block on the heap by ffmpeg’s
|
543 |
+
family of malloc functions. Exercise <strong class="strong">extreme caution</strong> when using
|
544 |
+
this option. Don’t use if you do not understand the full consequence of doing so.
|
545 |
+
Default is INT_MAX.
|
546 |
+
</p></dd>
|
547 |
+
</dl>
|
548 |
+
|
549 |
+
</div>
|
550 |
+
<div class="section-level-extent" id="AVOptions">
|
551 |
+
<h3 class="section">3.3 AVOptions</h3>
|
552 |
+
|
553 |
+
<p>These options are provided directly by the libavformat, libavdevice and
|
554 |
+
libavcodec libraries. To see the list of available AVOptions, use the
|
555 |
+
<samp class="option">-help</samp> option. They are separated into two categories:
|
556 |
+
</p><dl class="table">
|
557 |
+
<dt><samp class="option">generic</samp></dt>
|
558 |
+
<dd><p>These options can be set for any container, codec or device. Generic options
|
559 |
+
are listed under AVFormatContext options for containers/devices and under
|
560 |
+
AVCodecContext options for codecs.
|
561 |
+
</p></dd>
|
562 |
+
<dt><samp class="option">private</samp></dt>
|
563 |
+
<dd><p>These options are specific to the given container, device or codec. Private
|
564 |
+
options are listed under their corresponding containers/devices/codecs.
|
565 |
+
</p></dd>
|
566 |
+
</dl>
|
567 |
+
|
568 |
+
<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
|
569 |
+
an MP3 file, use the <samp class="option">id3v2_version</samp> private option of the MP3
|
570 |
+
muxer:
|
571 |
+
</p><div class="example">
|
572 |
+
<pre class="example-preformatted">ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
573 |
+
</pre></div>
|
574 |
+
|
575 |
+
<p>All codec AVOptions are per-stream, and thus a stream specifier
|
576 |
+
should be attached to them:
|
577 |
+
</p><div class="example">
|
578 |
+
<pre class="example-preformatted">ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
|
579 |
+
</pre></div>
|
580 |
+
|
581 |
+
<p>In the above example, a multichannel audio stream is mapped twice for output.
|
582 |
+
The first instance is encoded with codec ac3 and bitrate 640k.
|
583 |
+
The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using
|
584 |
+
absolute index of the output stream.
|
585 |
+
</p>
|
586 |
+
<p>Note: the <samp class="option">-nooption</samp> syntax cannot be used for boolean
|
587 |
+
AVOptions, use <samp class="option">-option 0</samp>/<samp class="option">-option 1</samp>.
|
588 |
+
</p>
|
589 |
+
<p>Note: the old undocumented way of specifying per-stream AVOptions by
|
590 |
+
prepending v/a/s to the options name is now obsolete and will be
|
591 |
+
removed soon.
|
592 |
+
</p>
|
593 |
+
</div>
|
594 |
+
<div class="section-level-extent" id="Main-options">
|
595 |
+
<h3 class="section">3.4 Main options</h3>
|
596 |
+
|
597 |
+
<dl class="table">
|
598 |
+
<dt><samp class="option">-f <var class="var">format</var></samp></dt>
|
599 |
+
<dd><p>Force format to use.
|
600 |
+
</p>
|
601 |
+
</dd>
|
602 |
+
<dt><samp class="option">-unit</samp></dt>
|
603 |
+
<dd><p>Show the unit of the displayed values.
|
604 |
+
</p>
|
605 |
+
</dd>
|
606 |
+
<dt><samp class="option">-prefix</samp></dt>
|
607 |
+
<dd><p>Use SI prefixes for the displayed values.
|
608 |
+
Unless the "-byte_binary_prefix" option is used all the prefixes
|
609 |
+
are decimal.
|
610 |
+
</p>
|
611 |
+
</dd>
|
612 |
+
<dt><samp class="option">-byte_binary_prefix</samp></dt>
|
613 |
+
<dd><p>Force the use of binary prefixes for byte values.
|
614 |
+
</p>
|
615 |
+
</dd>
|
616 |
+
<dt><samp class="option">-sexagesimal</samp></dt>
|
617 |
+
<dd><p>Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
|
618 |
+
</p>
|
619 |
+
</dd>
|
620 |
+
<dt><samp class="option">-pretty</samp></dt>
|
621 |
+
<dd><p>Prettify the format of the displayed values, it corresponds to the
|
622 |
+
options "-unit -prefix -byte_binary_prefix -sexagesimal".
|
623 |
+
</p>
|
624 |
+
</dd>
|
625 |
+
<dt><samp class="option">-of, -print_format <var class="var">writer_name</var>[=<var class="var">writer_options</var>]</samp></dt>
|
626 |
+
<dd><p>Set the output printing format.
|
627 |
+
</p>
|
628 |
+
<p><var class="var">writer_name</var> specifies the name of the writer, and
|
629 |
+
<var class="var">writer_options</var> specifies the options to be passed to the writer.
|
630 |
+
</p>
|
631 |
+
<p>For example for printing the output in JSON format, specify:
|
632 |
+
</p><div class="example">
|
633 |
+
<pre class="example-preformatted">-print_format json
|
634 |
+
</pre></div>
|
635 |
+
|
636 |
+
<p>For more details on the available output printing formats, see the
|
637 |
+
Writers section below.
|
638 |
+
</p>
|
639 |
+
</dd>
|
640 |
+
<dt><samp class="option">-sections</samp></dt>
|
641 |
+
<dd><p>Print sections structure and section information, and exit. The output
|
642 |
+
is not meant to be parsed by a machine.
|
643 |
+
</p>
|
644 |
+
</dd>
|
645 |
+
<dt><samp class="option">-select_streams <var class="var">stream_specifier</var></samp></dt>
|
646 |
+
<dd><p>Select only the streams specified by <var class="var">stream_specifier</var>. This
|
647 |
+
option affects only the options related to streams
|
648 |
+
(e.g. <code class="code">show_streams</code>, <code class="code">show_packets</code>, etc.).
|
649 |
+
</p>
|
650 |
+
<p>For example to show only audio streams, you can use the command:
|
651 |
+
</p><div class="example">
|
652 |
+
<pre class="example-preformatted">ffprobe -show_streams -select_streams a INPUT
|
653 |
+
</pre></div>
|
654 |
+
|
655 |
+
<p>To show only video packets belonging to the video stream with index 1:
|
656 |
+
</p><div class="example">
|
657 |
+
<pre class="example-preformatted">ffprobe -show_packets -select_streams v:1 INPUT
|
658 |
+
</pre></div>
|
659 |
+
|
660 |
+
</dd>
|
661 |
+
<dt><samp class="option">-show_data</samp></dt>
|
662 |
+
<dd><p>Show payload data, as a hexadecimal and ASCII dump. Coupled with
|
663 |
+
<samp class="option">-show_packets</samp>, it will dump the packets’ data. Coupled with
|
664 |
+
<samp class="option">-show_streams</samp>, it will dump the codec extradata.
|
665 |
+
</p>
|
666 |
+
<p>The dump is printed as the "data" field. It may contain newlines.
|
667 |
+
</p>
|
668 |
+
</dd>
|
669 |
+
<dt><samp class="option">-show_data_hash <var class="var">algorithm</var></samp></dt>
|
670 |
+
<dd><p>Show a hash of payload data, for packets with <samp class="option">-show_packets</samp> and for
|
671 |
+
codec extradata with <samp class="option">-show_streams</samp>.
|
672 |
+
</p>
|
673 |
+
</dd>
|
674 |
+
<dt><samp class="option">-show_error</samp></dt>
|
675 |
+
<dd><p>Show information about the error found when trying to probe the input.
|
676 |
+
</p>
|
677 |
+
<p>The error information is printed within a section with name "ERROR".
|
678 |
+
</p>
|
679 |
+
</dd>
|
680 |
+
<dt><samp class="option">-show_format</samp></dt>
|
681 |
+
<dd><p>Show information about the container format of the input multimedia
|
682 |
+
stream.
|
683 |
+
</p>
|
684 |
+
<p>All the container format information is printed within a section with
|
685 |
+
name "FORMAT".
|
686 |
+
</p>
|
687 |
+
</dd>
|
688 |
+
<dt><samp class="option">-show_format_entry <var class="var">name</var></samp></dt>
|
689 |
+
<dd><p>Like <samp class="option">-show_format</samp>, but only prints the specified entry of the
|
690 |
+
container format information, rather than all. This option may be given more
|
691 |
+
than once, then all specified entries will be shown.
|
692 |
+
</p>
|
693 |
+
<p>This option is deprecated, use <code class="code">show_entries</code> instead.
|
694 |
+
</p>
|
695 |
+
</dd>
|
696 |
+
<dt><samp class="option">-show_entries <var class="var">section_entries</var></samp></dt>
|
697 |
+
<dd><p>Set list of entries to show.
|
698 |
+
</p>
|
699 |
+
<p>Entries are specified according to the following
|
700 |
+
syntax. <var class="var">section_entries</var> contains a list of section entries
|
701 |
+
separated by <code class="code">:</code>. Each section entry is composed by a section
|
702 |
+
name (or unique name), optionally followed by a list of entries local
|
703 |
+
to that section, separated by <code class="code">,</code>.
|
704 |
+
</p>
|
705 |
+
<p>If section name is specified but is followed by no <code class="code">=</code>, all
|
706 |
+
entries are printed to output, together with all the contained
|
707 |
+
sections. Otherwise only the entries specified in the local section
|
708 |
+
entries list are printed. In particular, if <code class="code">=</code> is specified but
|
709 |
+
the list of local entries is empty, then no entries will be shown for
|
710 |
+
that section.
|
711 |
+
</p>
|
712 |
+
<p>Note that the order of specification of the local section entries is
|
713 |
+
not honored in the output, and the usual display order will be
|
714 |
+
retained.
|
715 |
+
</p>
|
716 |
+
<p>The formal syntax is given by:
|
717 |
+
</p><div class="example">
|
718 |
+
<pre class="example-preformatted"><var class="var">LOCAL_SECTION_ENTRIES</var> ::= <var class="var">SECTION_ENTRY_NAME</var>[,<var class="var">LOCAL_SECTION_ENTRIES</var>]
|
719 |
+
<var class="var">SECTION_ENTRY</var> ::= <var class="var">SECTION_NAME</var>[=[<var class="var">LOCAL_SECTION_ENTRIES</var>]]
|
720 |
+
<var class="var">SECTION_ENTRIES</var> ::= <var class="var">SECTION_ENTRY</var>[:<var class="var">SECTION_ENTRIES</var>]
|
721 |
+
</pre></div>
|
722 |
+
|
723 |
+
<p>For example, to show only the index and type of each stream, and the PTS
|
724 |
+
time, duration time, and stream index of the packets, you can specify
|
725 |
+
the argument:
|
726 |
+
</p><div class="example">
|
727 |
+
<pre class="example-preformatted">packet=pts_time,duration_time,stream_index : stream=index,codec_type
|
728 |
+
</pre></div>
|
729 |
+
|
730 |
+
<p>To show all the entries in the section "format", but only the codec
|
731 |
+
type in the section "stream", specify the argument:
|
732 |
+
</p><div class="example">
|
733 |
+
<pre class="example-preformatted">format : stream=codec_type
|
734 |
+
</pre></div>
|
735 |
+
|
736 |
+
<p>To show all the tags in the stream and format sections:
|
737 |
+
</p><div class="example">
|
738 |
+
<pre class="example-preformatted">stream_tags : format_tags
|
739 |
+
</pre></div>
|
740 |
+
|
741 |
+
<p>To show only the <code class="code">title</code> tag (if available) in the stream
|
742 |
+
sections:
|
743 |
+
</p><div class="example">
|
744 |
+
<pre class="example-preformatted">stream_tags=title
|
745 |
+
</pre></div>
|
746 |
+
|
747 |
+
</dd>
|
748 |
+
<dt><samp class="option">-show_packets</samp></dt>
|
749 |
+
<dd><p>Show information about each packet contained in the input multimedia
|
750 |
+
stream.
|
751 |
+
</p>
|
752 |
+
<p>The information for each single packet is printed within a dedicated
|
753 |
+
section with name "PACKET".
|
754 |
+
</p>
|
755 |
+
</dd>
|
756 |
+
<dt><samp class="option">-show_frames</samp></dt>
|
757 |
+
<dd><p>Show information about each frame and subtitle contained in the input
|
758 |
+
multimedia stream.
|
759 |
+
</p>
|
760 |
+
<p>The information for each single frame is printed within a dedicated
|
761 |
+
section with name "FRAME" or "SUBTITLE".
|
762 |
+
</p>
|
763 |
+
</dd>
|
764 |
+
<dt><samp class="option">-show_log <var class="var">loglevel</var></samp></dt>
|
765 |
+
<dd><p>Show logging information from the decoder about each frame according to
|
766 |
+
the value set in <var class="var">loglevel</var>, (see <code class="code">-loglevel</code>). This option requires <code class="code">-show_frames</code>.
|
767 |
+
</p>
|
768 |
+
<p>The information for each log message is printed within a dedicated
|
769 |
+
section with name "LOG".
|
770 |
+
</p>
|
771 |
+
</dd>
|
772 |
+
<dt><samp class="option">-show_streams</samp></dt>
|
773 |
+
<dd><p>Show information about each media stream contained in the input
|
774 |
+
multimedia stream.
|
775 |
+
</p>
|
776 |
+
<p>Each media stream information is printed within a dedicated section
|
777 |
+
with name "STREAM".
|
778 |
+
</p>
|
779 |
+
</dd>
|
780 |
+
<dt><samp class="option">-show_programs</samp></dt>
|
781 |
+
<dd><p>Show information about programs and their streams contained in the input
|
782 |
+
multimedia stream.
|
783 |
+
</p>
|
784 |
+
<p>Each media stream information is printed within a dedicated section
|
785 |
+
with name "PROGRAM_STREAM".
|
786 |
+
</p>
|
787 |
+
</dd>
|
788 |
+
<dt><samp class="option">-show_chapters</samp></dt>
|
789 |
+
<dd><p>Show information about chapters stored in the format.
|
790 |
+
</p>
|
791 |
+
<p>Each chapter is printed within a dedicated section with name "CHAPTER".
|
792 |
+
</p>
|
793 |
+
</dd>
|
794 |
+
<dt><samp class="option">-count_frames</samp></dt>
|
795 |
+
<dd><p>Count the number of frames per stream and report it in the
|
796 |
+
corresponding stream section.
|
797 |
+
</p>
|
798 |
+
</dd>
|
799 |
+
<dt><samp class="option">-count_packets</samp></dt>
|
800 |
+
<dd><p>Count the number of packets per stream and report it in the
|
801 |
+
corresponding stream section.
|
802 |
+
</p>
|
803 |
+
</dd>
|
804 |
+
<dt><samp class="option">-read_intervals <var class="var">read_intervals</var></samp></dt>
|
805 |
+
<dd>
|
806 |
+
<p>Read only the specified intervals. <var class="var">read_intervals</var> must be a
|
807 |
+
sequence of interval specifications separated by ",".
|
808 |
+
<code class="command">ffprobe</code> will seek to the interval starting point, and will
|
809 |
+
continue reading from that.
|
810 |
+
</p>
|
811 |
+
<p>Each interval is specified by two optional parts, separated by "%".
|
812 |
+
</p>
|
813 |
+
<p>The first part specifies the interval start position. It is
|
814 |
+
interpreted as an absolute position, or as a relative offset from the
|
815 |
+
current position if it is preceded by the "+" character. If this first
|
816 |
+
part is not specified, no seeking will be performed when reading this
|
817 |
+
interval.
|
818 |
+
</p>
|
819 |
+
<p>The second part specifies the interval end position. It is interpreted
|
820 |
+
as an absolute position, or as a relative offset from the current
|
821 |
+
position if it is preceded by the "+" character. If the offset
|
822 |
+
specification starts with "#", it is interpreted as the number of
|
823 |
+
packets to read (not including the flushing packets) from the interval
|
824 |
+
start. If no second part is specified, the program will read until the
|
825 |
+
end of the input.
|
826 |
+
</p>
|
827 |
+
<p>Note that seeking is not accurate, thus the actual interval start
|
828 |
+
point may be different from the specified position. Also, when an
|
829 |
+
interval duration is specified, the absolute end time will be computed
|
830 |
+
by adding the duration to the interval start point found by seeking
|
831 |
+
the file, rather than to the specified start value.
|
832 |
+
</p>
|
833 |
+
<p>The formal syntax is given by:
|
834 |
+
</p><div class="example">
|
835 |
+
<pre class="example-preformatted"><var class="var">INTERVAL</var> ::= [<var class="var">START</var>|+<var class="var">START_OFFSET</var>][%[<var class="var">END</var>|+<var class="var">END_OFFSET</var>]]
|
836 |
+
<var class="var">INTERVALS</var> ::= <var class="var">INTERVAL</var>[,<var class="var">INTERVALS</var>]
|
837 |
+
</pre></div>
|
838 |
+
|
839 |
+
<p>A few examples follow.
|
840 |
+
</p><ul class="itemize mark-bullet">
|
841 |
+
<li>Seek to time 10, read packets until 20 seconds after the found seek
|
842 |
+
point, then seek to position <code class="code">01:30</code> (1 minute and thirty
|
843 |
+
seconds) and read packets until position <code class="code">01:45</code>.
|
844 |
+
<div class="example">
|
845 |
+
<pre class="example-preformatted">10%+20,01:30%01:45
|
846 |
+
</pre></div>
|
847 |
+
|
848 |
+
</li><li>Read only 42 packets after seeking to position <code class="code">01:23</code>:
|
849 |
+
<div class="example">
|
850 |
+
<pre class="example-preformatted">01:23%+#42
|
851 |
+
</pre></div>
|
852 |
+
|
853 |
+
</li><li>Read only the first 20 seconds from the start:
|
854 |
+
<div class="example">
|
855 |
+
<pre class="example-preformatted">%+20
|
856 |
+
</pre></div>
|
857 |
+
|
858 |
+
</li><li>Read from the start until position <code class="code">02:30</code>:
|
859 |
+
<div class="example">
|
860 |
+
<pre class="example-preformatted">%02:30
|
861 |
+
</pre></div>
|
862 |
+
</li></ul>
|
863 |
+
|
864 |
+
</dd>
|
865 |
+
<dt><samp class="option">-show_private_data, -private</samp></dt>
|
866 |
+
<dd><p>Show private data, that is data depending on the format of the
|
867 |
+
particular shown element.
|
868 |
+
This option is enabled by default, but you may need to disable it
|
869 |
+
for specific uses, for example when creating XSD-compliant XML output.
|
870 |
+
</p>
|
871 |
+
</dd>
|
872 |
+
<dt><samp class="option">-show_program_version</samp></dt>
|
873 |
+
<dd><p>Show information related to program version.
|
874 |
+
</p>
|
875 |
+
<p>Version information is printed within a section with name
|
876 |
+
"PROGRAM_VERSION".
|
877 |
+
</p>
|
878 |
+
</dd>
|
879 |
+
<dt><samp class="option">-show_library_versions</samp></dt>
|
880 |
+
<dd><p>Show information related to library versions.
|
881 |
+
</p>
|
882 |
+
<p>Version information for each library is printed within a section with
|
883 |
+
name "LIBRARY_VERSION".
|
884 |
+
</p>
|
885 |
+
</dd>
|
886 |
+
<dt><samp class="option">-show_versions</samp></dt>
|
887 |
+
<dd><p>Show information related to program and library versions. This is the
|
888 |
+
equivalent of setting both <samp class="option">-show_program_version</samp> and
|
889 |
+
<samp class="option">-show_library_versions</samp> options.
|
890 |
+
</p>
|
891 |
+
</dd>
|
892 |
+
<dt><samp class="option">-show_pixel_formats</samp></dt>
|
893 |
+
<dd><p>Show information about all pixel formats supported by FFmpeg.
|
894 |
+
</p>
|
895 |
+
<p>Pixel format information for each format is printed within a section
|
896 |
+
with name "PIXEL_FORMAT".
|
897 |
+
</p>
|
898 |
+
</dd>
|
899 |
+
<dt><samp class="option">-show_optional_fields <var class="var">value</var></samp></dt>
|
900 |
+
<dd><p>Some writers viz. JSON and XML, omit the printing of fields with invalid or non-applicable values,
|
901 |
+
while other writers always print them. This option enables one to control this behaviour.
|
902 |
+
Valid values are <code class="code">always</code>/<code class="code">1</code>, <code class="code">never</code>/<code class="code">0</code> and <code class="code">auto</code>/<code class="code">-1</code>.
|
903 |
+
Default is <var class="var">auto</var>.
|
904 |
+
</p>
|
905 |
+
</dd>
|
906 |
+
<dt><samp class="option">-bitexact</samp></dt>
|
907 |
+
<dd><p>Force bitexact output, useful to produce output which is not dependent
|
908 |
+
on the specific build.
|
909 |
+
</p>
|
910 |
+
</dd>
|
911 |
+
<dt><samp class="option">-i <var class="var">input_url</var></samp></dt>
|
912 |
+
<dd><p>Read <var class="var">input_url</var>.
|
913 |
+
</p>
|
914 |
+
</dd>
|
915 |
+
<dt><samp class="option">-o <var class="var">output_url</var></samp></dt>
|
916 |
+
<dd><p>Write output to <var class="var">output_url</var>. If not specified, the output is sent
|
917 |
+
to stdout.
|
918 |
+
</p>
|
919 |
+
</dd>
|
920 |
+
</dl>
|
921 |
+
|
922 |
+
</div>
|
923 |
+
</div>
|
924 |
+
<div class="chapter-level-extent" id="Writers">
|
925 |
+
<h2 class="chapter">4 Writers</h2>
|
926 |
+
|
927 |
+
<p>A writer defines the output format adopted by <code class="command">ffprobe</code>, and will be
|
928 |
+
used for printing all the parts of the output.
|
929 |
+
</p>
|
930 |
+
<p>A writer may accept one or more arguments, which specify the options
|
931 |
+
to adopt. The options are specified as a list of <var class="var">key</var>=<var class="var">value</var>
|
932 |
+
pairs, separated by ":".
|
933 |
+
</p>
|
934 |
+
<p>All writers support the following options:
|
935 |
+
</p>
|
936 |
+
<dl class="table">
|
937 |
+
<dt><samp class="option">string_validation, sv</samp></dt>
|
938 |
+
<dd><p>Set string validation mode.
|
939 |
+
</p>
|
940 |
+
<p>The following values are accepted.
|
941 |
+
</p><dl class="table">
|
942 |
+
<dt>‘<samp class="samp">fail</samp>’</dt>
|
943 |
+
<dd><p>The writer will fail immediately in case an invalid string (UTF-8)
|
944 |
+
sequence or code point is found in the input. This is especially
|
945 |
+
useful to validate input metadata.
|
946 |
+
</p>
|
947 |
+
</dd>
|
948 |
+
<dt>‘<samp class="samp">ignore</samp>’</dt>
|
949 |
+
<dd><p>Any validation error will be ignored. This will result in possibly
|
950 |
+
broken output, especially with the json or xml writer.
|
951 |
+
</p>
|
952 |
+
</dd>
|
953 |
+
<dt>‘<samp class="samp">replace</samp>’</dt>
|
954 |
+
<dd><p>The writer will substitute invalid UTF-8 sequences or code points with
|
955 |
+
the string specified with the <samp class="option">string_validation_replacement</samp>.
|
956 |
+
</p></dd>
|
957 |
+
</dl>
|
958 |
+
|
959 |
+
<p>Default value is ‘<samp class="samp">replace</samp>’.
|
960 |
+
</p>
|
961 |
+
</dd>
|
962 |
+
<dt><samp class="option">string_validation_replacement, svr</samp></dt>
|
963 |
+
<dd><p>Set replacement string to use in case <samp class="option">string_validation</samp> is
|
964 |
+
set to ‘<samp class="samp">replace</samp>’.
|
965 |
+
</p>
|
966 |
+
<p>In case the option is not specified, the writer will assume the empty
|
967 |
+
string, that is it will remove the invalid sequences from the input
|
968 |
+
strings.
|
969 |
+
</p></dd>
|
970 |
+
</dl>
|
971 |
+
|
972 |
+
<p>A description of the currently available writers follows.
|
973 |
+
</p>
|
974 |
+
<ul class="mini-toc">
|
975 |
+
<li><a href="#default" accesskey="1">default</a></li>
|
976 |
+
<li><a href="#compact_002c-csv" accesskey="2">compact, csv</a></li>
|
977 |
+
<li><a href="#flat" accesskey="3">flat</a></li>
|
978 |
+
<li><a href="#ini" accesskey="4">ini</a></li>
|
979 |
+
<li><a href="#json" accesskey="5">json</a></li>
|
980 |
+
<li><a href="#xml" accesskey="6">xml</a></li>
|
981 |
+
</ul>
|
982 |
+
<div class="section-level-extent" id="default">
|
983 |
+
<h3 class="section">4.1 default</h3>
|
984 |
+
<p>Default format.
|
985 |
+
</p>
|
986 |
+
<p>Print each section in the form:
|
987 |
+
</p><div class="example">
|
988 |
+
<pre class="example-preformatted">[SECTION]
|
989 |
+
key1=val1
|
990 |
+
...
|
991 |
+
keyN=valN
|
992 |
+
[/SECTION]
|
993 |
+
</pre></div>
|
994 |
+
|
995 |
+
<p>Metadata tags are printed as a line in the corresponding FORMAT, STREAM or
|
996 |
+
PROGRAM_STREAM section, and are prefixed by the string "TAG:".
|
997 |
+
</p>
|
998 |
+
<p>A description of the accepted options follows.
|
999 |
+
</p>
|
1000 |
+
<dl class="table">
|
1001 |
+
<dt><samp class="option">nokey, nk</samp></dt>
|
1002 |
+
<dd><p>If set to 1 specify not to print the key of each field. Default value
|
1003 |
+
is 0.
|
1004 |
+
</p>
|
1005 |
+
</dd>
|
1006 |
+
<dt><samp class="option">noprint_wrappers, nw</samp></dt>
|
1007 |
+
<dd><p>If set to 1 specify not to print the section header and footer.
|
1008 |
+
Default value is 0.
|
1009 |
+
</p></dd>
|
1010 |
+
</dl>
|
1011 |
+
|
1012 |
+
</div>
|
1013 |
+
<div class="section-level-extent" id="compact_002c-csv">
|
1014 |
+
<h3 class="section">4.2 compact, csv</h3>
|
1015 |
+
<p>Compact and CSV format.
|
1016 |
+
</p>
|
1017 |
+
<p>The <code class="code">csv</code> writer is equivalent to <code class="code">compact</code>, but supports
|
1018 |
+
different defaults.
|
1019 |
+
</p>
|
1020 |
+
<p>Each section is printed on a single line.
|
1021 |
+
If no option is specified, the output has the form:
|
1022 |
+
</p><div class="example">
|
1023 |
+
<pre class="example-preformatted">section|key1=val1| ... |keyN=valN
|
1024 |
+
</pre></div>
|
1025 |
+
|
1026 |
+
<p>Metadata tags are printed in the corresponding "format" or "stream"
|
1027 |
+
section. A metadata tag key, if printed, is prefixed by the string
|
1028 |
+
"tag:".
|
1029 |
+
</p>
|
1030 |
+
<p>The description of the accepted options follows.
|
1031 |
+
</p>
|
1032 |
+
<dl class="table">
|
1033 |
+
<dt><samp class="option">item_sep, s</samp></dt>
|
1034 |
+
<dd><p>Specify the character to use for separating fields in the output line.
|
1035 |
+
It must be a single printable character, it is "|" by default ("," for
|
1036 |
+
the <code class="code">csv</code> writer).
|
1037 |
+
</p>
|
1038 |
+
</dd>
|
1039 |
+
<dt><samp class="option">nokey, nk</samp></dt>
|
1040 |
+
<dd><p>If set to 1 specify not to print the key of each field. Its default
|
1041 |
+
value is 0 (1 for the <code class="code">csv</code> writer).
|
1042 |
+
</p>
|
1043 |
+
</dd>
|
1044 |
+
<dt><samp class="option">escape, e</samp></dt>
|
1045 |
+
<dd><p>Set the escape mode to use, default to "c" ("csv" for the <code class="code">csv</code>
|
1046 |
+
writer).
|
1047 |
+
</p>
|
1048 |
+
<p>It can assume one of the following values:
|
1049 |
+
</p><dl class="table">
|
1050 |
+
<dt><samp class="option">c</samp></dt>
|
1051 |
+
<dd><p>Perform C-like escaping. Strings containing a newline (‘<samp class="samp">\n</samp>’), carriage
|
1052 |
+
return (‘<samp class="samp">\r</samp>’), a tab (‘<samp class="samp">\t</samp>’), a form feed (‘<samp class="samp">\f</samp>’), the escaping
|
1053 |
+
character (‘<samp class="samp">\</samp>’) or the item separator character <var class="var">SEP</var> are escaped
|
1054 |
+
using C-like fashioned escaping, so that a newline is converted to the
|
1055 |
+
sequence ‘<samp class="samp">\n</samp>’, a carriage return to ‘<samp class="samp">\r</samp>’, ‘<samp class="samp">\</samp>’ to ‘<samp class="samp">\\</samp>’ and
|
1056 |
+
the separator <var class="var">SEP</var> is converted to ‘<samp class="samp">\<var class="var">SEP</var></samp>’.
|
1057 |
+
</p>
|
1058 |
+
</dd>
|
1059 |
+
<dt><samp class="option">csv</samp></dt>
|
1060 |
+
<dd><p>Perform CSV-like escaping, as described in RFC4180. Strings
|
1061 |
+
containing a newline (‘<samp class="samp">\n</samp>’), a carriage return (‘<samp class="samp">\r</samp>’), a double quote
|
1062 |
+
(‘<samp class="samp">"</samp>’), or <var class="var">SEP</var> are enclosed in double-quotes.
|
1063 |
+
</p>
|
1064 |
+
</dd>
|
1065 |
+
<dt><samp class="option">none</samp></dt>
|
1066 |
+
<dd><p>Perform no escaping.
|
1067 |
+
</p></dd>
|
1068 |
+
</dl>
|
1069 |
+
|
1070 |
+
</dd>
|
1071 |
+
<dt><samp class="option">print_section, p</samp></dt>
|
1072 |
+
<dd><p>Print the section name at the beginning of each line if the value is
|
1073 |
+
<code class="code">1</code>, disable it with value set to <code class="code">0</code>. Default value is
|
1074 |
+
<code class="code">1</code>.
|
1075 |
+
</p>
|
1076 |
+
</dd>
|
1077 |
+
</dl>
|
1078 |
+
|
1079 |
+
</div>
|
1080 |
+
<div class="section-level-extent" id="flat">
|
1081 |
+
<h3 class="section">4.3 flat</h3>
|
1082 |
+
<p>Flat format.
|
1083 |
+
</p>
|
1084 |
+
<p>A free-form output where each line contains an explicit key=value, such as
|
1085 |
+
"streams.stream.3.tags.foo=bar". The output is shell escaped, so it can be
|
1086 |
+
directly embedded in sh scripts as long as the separator character is an
|
1087 |
+
alphanumeric character or an underscore (see <var class="var">sep_char</var> option).
|
1088 |
+
</p>
|
1089 |
+
<p>The description of the accepted options follows.
|
1090 |
+
</p>
|
1091 |
+
<dl class="table">
|
1092 |
+
<dt><samp class="option">sep_char, s</samp></dt>
|
1093 |
+
<dd><p>Separator character used to separate the chapter, the section name, IDs and
|
1094 |
+
potential tags in the printed field key.
|
1095 |
+
</p>
|
1096 |
+
<p>Default value is ‘<samp class="samp">.</samp>’.
|
1097 |
+
</p>
|
1098 |
+
</dd>
|
1099 |
+
<dt><samp class="option">hierarchical, h</samp></dt>
|
1100 |
+
<dd><p>Specify if the section name specification should be hierarchical. If
|
1101 |
+
set to 1, and if there is more than one section in the current
|
1102 |
+
chapter, the section name will be prefixed by the name of the
|
1103 |
+
chapter. A value of 0 will disable this behavior.
|
1104 |
+
</p>
|
1105 |
+
<p>Default value is 1.
|
1106 |
+
</p></dd>
|
1107 |
+
</dl>
|
1108 |
+
|
1109 |
+
</div>
|
1110 |
+
<div class="section-level-extent" id="ini">
|
1111 |
+
<h3 class="section">4.4 ini</h3>
|
1112 |
+
<p>INI format output.
|
1113 |
+
</p>
|
1114 |
+
<p>Print output in an INI based format.
|
1115 |
+
</p>
|
1116 |
+
<p>The following conventions are adopted:
|
1117 |
+
</p>
|
1118 |
+
<ul class="itemize mark-bullet">
|
1119 |
+
<li>all key and values are UTF-8
|
1120 |
+
</li><li>‘<samp class="samp">.</samp>’ is the subgroup separator
|
1121 |
+
</li><li>newline, ‘<samp class="samp">\t</samp>’, ‘<samp class="samp">\f</samp>’, ‘<samp class="samp">\b</samp>’ and the following characters are
|
1122 |
+
escaped
|
1123 |
+
</li><li>‘<samp class="samp">\</samp>’ is the escape character
|
1124 |
+
</li><li>‘<samp class="samp">#</samp>’ is the comment indicator
|
1125 |
+
</li><li>‘<samp class="samp">=</samp>’ is the key/value separator
|
1126 |
+
</li><li>‘<samp class="samp">:</samp>’ is not used but usually parsed as key/value separator
|
1127 |
+
</li></ul>
|
1128 |
+
|
1129 |
+
<p>This writer accepts options as a list of <var class="var">key</var>=<var class="var">value</var> pairs,
|
1130 |
+
separated by ‘<samp class="samp">:</samp>’.
|
1131 |
+
</p>
|
1132 |
+
<p>The description of the accepted options follows.
|
1133 |
+
</p>
|
1134 |
+
<dl class="table">
|
1135 |
+
<dt><samp class="option">hierarchical, h</samp></dt>
|
1136 |
+
<dd><p>Specify if the section name specification should be hierarchical. If
|
1137 |
+
set to 1, and if there is more than one section in the current
|
1138 |
+
chapter, the section name will be prefixed by the name of the
|
1139 |
+
chapter. A value of 0 will disable this behavior.
|
1140 |
+
</p>
|
1141 |
+
<p>Default value is 1.
|
1142 |
+
</p></dd>
|
1143 |
+
</dl>
|
1144 |
+
|
1145 |
+
</div>
|
1146 |
+
<div class="section-level-extent" id="json">
|
1147 |
+
<h3 class="section">4.5 json</h3>
|
1148 |
+
<p>JSON based format.
|
1149 |
+
</p>
|
1150 |
+
<p>Each section is printed using JSON notation.
|
1151 |
+
</p>
|
1152 |
+
<p>The description of the accepted options follows.
|
1153 |
+
</p>
|
1154 |
+
<dl class="table">
|
1155 |
+
<dt><samp class="option">compact, c</samp></dt>
|
1156 |
+
<dd><p>If set to 1 enable compact output, that is each section will be
|
1157 |
+
printed on a single line. Default value is 0.
|
1158 |
+
</p></dd>
|
1159 |
+
</dl>
|
1160 |
+
|
1161 |
+
<p>For more information about JSON, see <a class="url" href="http://www.json.org/">http://www.json.org/</a>.
|
1162 |
+
</p>
|
1163 |
+
</div>
|
1164 |
+
<div class="section-level-extent" id="xml">
|
1165 |
+
<h3 class="section">4.6 xml</h3>
|
1166 |
+
<p>XML based format.
|
1167 |
+
</p>
|
1168 |
+
<p>The XML output is described in the XML schema description file
|
1169 |
+
<samp class="file">ffprobe.xsd</samp> installed in the FFmpeg datadir.
|
1170 |
+
</p>
|
1171 |
+
<p>An updated version of the schema can be retrieved at the url
|
1172 |
+
<a class="url" href="http://www.ffmpeg.org/schema/ffprobe.xsd">http://www.ffmpeg.org/schema/ffprobe.xsd</a>, which redirects to the
|
1173 |
+
latest schema committed into the FFmpeg development source code tree.
|
1174 |
+
</p>
|
1175 |
+
<p>Note that the output issued will be compliant to the
|
1176 |
+
<samp class="file">ffprobe.xsd</samp> schema only when no special global output options
|
1177 |
+
(<samp class="option">unit</samp>, <samp class="option">prefix</samp>, <samp class="option">byte_binary_prefix</samp>,
|
1178 |
+
<samp class="option">sexagesimal</samp> etc.) are specified.
|
1179 |
+
</p>
|
1180 |
+
<p>The description of the accepted options follows.
|
1181 |
+
</p>
|
1182 |
+
<dl class="table">
|
1183 |
+
<dt><samp class="option">fully_qualified, q</samp></dt>
|
1184 |
+
<dd><p>If set to 1 specify if the output should be fully qualified. Default
|
1185 |
+
value is 0.
|
1186 |
+
This is required for generating an XML file which can be validated
|
1187 |
+
through an XSD file.
|
1188 |
+
</p>
|
1189 |
+
</dd>
|
1190 |
+
<dt><samp class="option">xsd_strict, x</samp></dt>
|
1191 |
+
<dd><p>If set to 1 perform more checks for ensuring that the output is XSD
|
1192 |
+
compliant. Default value is 0.
|
1193 |
+
This option automatically sets <samp class="option">fully_qualified</samp> to 1.
|
1194 |
+
</p></dd>
|
1195 |
+
</dl>
|
1196 |
+
|
1197 |
+
<p>For more information about the XML format, see
|
1198 |
+
<a class="url" href="https://www.w3.org/XML/">https://www.w3.org/XML/</a>.
|
1199 |
+
</p>
|
1200 |
+
</div>
|
1201 |
+
</div>
|
1202 |
+
<div class="chapter-level-extent" id="Timecode">
|
1203 |
+
<h2 class="chapter">5 Timecode</h2>
|
1204 |
+
|
1205 |
+
<p><code class="command">ffprobe</code> supports Timecode extraction:
|
1206 |
+
</p>
|
1207 |
+
<ul class="itemize mark-bullet">
|
1208 |
+
<li>MPEG1/2 timecode is extracted from the GOP, and is available in the video
|
1209 |
+
stream details (<samp class="option">-show_streams</samp>, see <var class="var">timecode</var>).
|
1210 |
+
|
1211 |
+
</li><li>MOV timecode is extracted from tmcd track, so is available in the tmcd
|
1212 |
+
stream metadata (<samp class="option">-show_streams</samp>, see <var class="var">TAG:timecode</var>).
|
1213 |
+
|
1214 |
+
</li><li>DV, GXF and AVI timecodes are available in format metadata
|
1215 |
+
(<samp class="option">-show_format</samp>, see <var class="var">TAG:timecode</var>).
|
1216 |
+
|
1217 |
+
</li></ul>
|
1218 |
+
|
1219 |
+
|
1220 |
+
</div>
|
1221 |
+
<div class="chapter-level-extent" id="See-Also">
|
1222 |
+
<h2 class="chapter">6 See Also</h2>
|
1223 |
+
|
1224 |
+
<p><a class="url" href="ffprobe-all.html">ffprobe-all</a>,
|
1225 |
+
<a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>,
|
1226 |
+
<a class="url" href="ffmpeg-utils.html">ffmpeg-utils</a>,
|
1227 |
+
<a class="url" href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
1228 |
+
<a class="url" href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
1229 |
+
<a class="url" href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
|
1230 |
+
<a class="url" href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
|
1231 |
+
<a class="url" href="ffmpeg-formats.html">ffmpeg-formats</a>,
|
1232 |
+
<a class="url" href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
1233 |
+
<a class="url" href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
1234 |
+
<a class="url" href="ffmpeg-filters.html">ffmpeg-filters</a>
|
1235 |
+
</p>
|
1236 |
+
|
1237 |
+
</div>
|
1238 |
+
<div class="chapter-level-extent" id="Authors">
|
1239 |
+
<h2 class="chapter">7 Authors</h2>
|
1240 |
+
|
1241 |
+
<p>The FFmpeg developers.
|
1242 |
+
</p>
|
1243 |
+
<p>For details about the authorship, see the Git history of the project
|
1244 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
1245 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
1246 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
1247 |
+
</p>
|
1248 |
+
<p>Maintainers for the specific components are listed in the file
|
1249 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
1250 |
+
</p>
|
1251 |
+
|
1252 |
+
</div>
|
1253 |
+
</div>
|
1254 |
+
|
1255 |
+
|
1256 |
+
|
1257 |
+
</body>
|
1258 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/general.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
mm_avh_working_space/bin/ffmpeg/doc/git-howto.html
ADDED
@@ -0,0 +1,624 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Using Git to develop FFmpeg</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Using Git to develop FFmpeg">
|
9 |
+
<meta name="keywords" content="Using Git to develop FFmpeg">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
<div class="top-level-extent" id="SEC_Top">
|
32 |
+
|
33 |
+
|
34 |
+
<div class="element-contents" id="SEC_Contents">
|
35 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
36 |
+
|
37 |
+
<div class="contents">
|
38 |
+
|
39 |
+
<ul class="toc-numbered-mark">
|
40 |
+
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
41 |
+
<li><a id="toc-Basics-Usage" href="#Basics-Usage">2 Basics Usage</a>
|
42 |
+
<ul class="toc-numbered-mark">
|
43 |
+
<li><a id="toc-Get-Git" href="#Get-Git">2.1 Get Git</a></li>
|
44 |
+
<li><a id="toc-Cloning-the-source-tree" href="#Cloning-the-source-tree">2.2 Cloning the source tree</a></li>
|
45 |
+
<li><a id="toc-Updating-the-source-tree-to-the-latest-revision-1" href="#Updating-the-source-tree-to-the-latest-revision-1">2.3 Updating the source tree to the latest revision</a></li>
|
46 |
+
<li><a id="toc-Rebasing-your-local-branches" href="#Rebasing-your-local-branches">2.4 Rebasing your local branches</a></li>
|
47 |
+
<li><a id="toc-Adding_002fremoving-files_002fdirectories" href="#Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></li>
|
48 |
+
<li><a id="toc-Showing-modifications" href="#Showing-modifications">2.6 Showing modifications</a></li>
|
49 |
+
<li><a id="toc-Inspecting-the-changelog" href="#Inspecting-the-changelog">2.7 Inspecting the changelog</a></li>
|
50 |
+
<li><a id="toc-Checking-source-tree-status" href="#Checking-source-tree-status">2.8 Checking source tree status</a></li>
|
51 |
+
<li><a id="toc-Committing" href="#Committing">2.9 Committing</a></li>
|
52 |
+
<li><a id="toc-Writing-a-commit-message" href="#Writing-a-commit-message">2.10 Writing a commit message</a></li>
|
53 |
+
<li><a id="toc-Preparing-a-patchset" href="#Preparing-a-patchset">2.11 Preparing a patchset</a></li>
|
54 |
+
<li><a id="toc-Sending-patches-for-review" href="#Sending-patches-for-review">2.12 Sending patches for review</a></li>
|
55 |
+
<li><a id="toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.13 Renaming/moving/copying files or contents of files</a></li>
|
56 |
+
</ul></li>
|
57 |
+
<li><a id="toc-Git-configuration" href="#Git-configuration">3 Git configuration</a>
|
58 |
+
<ul class="toc-numbered-mark">
|
59 |
+
<li><a id="toc-Personal-Git-installation" href="#Personal-Git-installation">3.1 Personal Git installation</a></li>
|
60 |
+
<li><a id="toc-Repository-configuration" href="#Repository-configuration">3.2 Repository configuration</a></li>
|
61 |
+
</ul></li>
|
62 |
+
<li><a id="toc-FFmpeg-specific" href="#FFmpeg-specific">4 FFmpeg specific</a>
|
63 |
+
<ul class="toc-numbered-mark">
|
64 |
+
<li><a id="toc-Reverting-broken-commits" href="#Reverting-broken-commits">4.1 Reverting broken commits</a></li>
|
65 |
+
<li><a id="toc-Pushing-changes-to-remote-trees" href="#Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></li>
|
66 |
+
<li><a id="toc-Finding-a-specific-svn-revision" href="#Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></li>
|
67 |
+
</ul></li>
|
68 |
+
<li><a id="toc-gpg-key-generation" href="#gpg-key-generation">5 gpg key generation</a></li>
|
69 |
+
<li><a id="toc-Pre_002dpush-checklist" href="#Pre_002dpush-checklist">6 Pre-push checklist</a></li>
|
70 |
+
<li><a id="toc-Server-Issues" href="#Server-Issues">7 Server Issues</a></li>
|
71 |
+
</ul>
|
72 |
+
</div>
|
73 |
+
</div>
|
74 |
+
<div class="chapter-level-extent" id="Introduction">
|
75 |
+
<h2 class="chapter">1 Introduction</h2>
|
76 |
+
|
77 |
+
<p>This document aims in giving some quick references on a set of useful Git
|
78 |
+
commands. You should always use the extensive and detailed documentation
|
79 |
+
provided directly by Git:
|
80 |
+
</p>
|
81 |
+
<div class="example">
|
82 |
+
<pre class="example-preformatted">git --help
|
83 |
+
man git
|
84 |
+
</pre></div>
|
85 |
+
|
86 |
+
<p>shows you the available subcommands,
|
87 |
+
</p>
|
88 |
+
<div class="example">
|
89 |
+
<pre class="example-preformatted">git <command> --help
|
90 |
+
man git-<command>
|
91 |
+
</pre></div>
|
92 |
+
|
93 |
+
<p>shows information about the subcommand <command>.
|
94 |
+
</p>
|
95 |
+
<p>Additional information could be found on the
|
96 |
+
<a class="url" href="http://gitref.org">Git Reference</a> website.
|
97 |
+
</p>
|
98 |
+
<p>For more information about the Git project, visit the
|
99 |
+
<a class="url" href="http://git-scm.com/">Git website</a>.
|
100 |
+
</p>
|
101 |
+
<p>Consult these resources whenever you have problems, they are quite exhaustive.
|
102 |
+
</p>
|
103 |
+
<p>What follows now is a basic introduction to Git and some FFmpeg-specific
|
104 |
+
guidelines to ease the contribution to the project.
|
105 |
+
</p>
|
106 |
+
</div>
|
107 |
+
<div class="chapter-level-extent" id="Basics-Usage">
|
108 |
+
<h2 class="chapter">2 Basics Usage</h2>
|
109 |
+
|
110 |
+
<ul class="mini-toc">
|
111 |
+
<li><a href="#Get-Git" accesskey="1">Get Git</a></li>
|
112 |
+
<li><a href="#Cloning-the-source-tree" accesskey="2">Cloning the source tree</a></li>
|
113 |
+
<li><a href="#Updating-the-source-tree-to-the-latest-revision-1" accesskey="3">Updating the source tree to the latest revision</a></li>
|
114 |
+
<li><a href="#Rebasing-your-local-branches" accesskey="4">Rebasing your local branches</a></li>
|
115 |
+
<li><a href="#Adding_002fremoving-files_002fdirectories" accesskey="5">Adding/removing files/directories</a></li>
|
116 |
+
<li><a href="#Showing-modifications" accesskey="6">Showing modifications</a></li>
|
117 |
+
<li><a href="#Inspecting-the-changelog" accesskey="7">Inspecting the changelog</a></li>
|
118 |
+
<li><a href="#Checking-source-tree-status" accesskey="8">Checking source tree status</a></li>
|
119 |
+
<li><a href="#Committing" accesskey="9">Committing</a></li>
|
120 |
+
<li><a href="#Writing-a-commit-message">Writing a commit message</a></li>
|
121 |
+
<li><a href="#Preparing-a-patchset">Preparing a patchset</a></li>
|
122 |
+
<li><a href="#Sending-patches-for-review">Sending patches for review</a></li>
|
123 |
+
<li><a href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">Renaming/moving/copying files or contents of files</a></li>
|
124 |
+
</ul>
|
125 |
+
<div class="section-level-extent" id="Get-Git">
|
126 |
+
<h3 class="section">2.1 Get Git</h3>
|
127 |
+
|
128 |
+
<p>You can get Git from <a class="url" href="http://git-scm.com/">http://git-scm.com/</a>
|
129 |
+
Most distribution and operating system provide a package for it.
|
130 |
+
</p>
|
131 |
+
|
132 |
+
</div>
|
133 |
+
<div class="section-level-extent" id="Cloning-the-source-tree">
|
134 |
+
<h3 class="section">2.2 Cloning the source tree</h3>
|
135 |
+
|
136 |
+
<div class="example">
|
137 |
+
<pre class="example-preformatted">git clone https://git.ffmpeg.org/ffmpeg.git <target>
|
138 |
+
</pre></div>
|
139 |
+
|
140 |
+
<p>This will put the FFmpeg sources into the directory <var class="var"><target></var>.
|
141 |
+
</p>
|
142 |
+
<div class="example">
|
143 |
+
<pre class="example-preformatted">git clone [email protected]:ffmpeg <target>
|
144 |
+
</pre></div>
|
145 |
+
|
146 |
+
<p>This will put the FFmpeg sources into the directory <var class="var"><target></var> and let
|
147 |
+
you push back your changes to the remote repository.
|
148 |
+
</p>
|
149 |
+
<div class="example">
|
150 |
+
<pre class="example-preformatted">git clone [email protected]:ffmpeg-web <target>
|
151 |
+
</pre></div>
|
152 |
+
|
153 |
+
<p>This will put the source of the FFmpeg website into the directory
|
154 |
+
<var class="var"><target></var> and let you push back your changes to the remote repository.
|
155 |
+
(Note that <var class="var">gil</var> stands for GItoLite and is not a typo of <var class="var">git</var>.)
|
156 |
+
</p>
|
157 |
+
<p>If you don’t have write-access to the ffmpeg-web repository, you can
|
158 |
+
create patches after making a read-only ffmpeg-web clone:
|
159 |
+
</p>
|
160 |
+
<div class="example">
|
161 |
+
<pre class="example-preformatted">git clone git://ffmpeg.org/ffmpeg-web <target>
|
162 |
+
</pre></div>
|
163 |
+
|
164 |
+
<p>Make sure that you do not have Windows line endings in your checkouts,
|
165 |
+
otherwise you may experience spurious compilation failures. One way to
|
166 |
+
achieve this is to run
|
167 |
+
</p>
|
168 |
+
<div class="example">
|
169 |
+
<pre class="example-preformatted">git config --global core.autocrlf false
|
170 |
+
</pre></div>
|
171 |
+
|
172 |
+
|
173 |
+
<a class="anchor" id="Updating-the-source-tree-to-the-latest-revision"></a></div>
|
174 |
+
<div class="section-level-extent" id="Updating-the-source-tree-to-the-latest-revision-1">
|
175 |
+
<h3 class="section">2.3 Updating the source tree to the latest revision</h3>
|
176 |
+
|
177 |
+
<div class="example">
|
178 |
+
<pre class="example-preformatted">git pull (--rebase)
|
179 |
+
</pre></div>
|
180 |
+
|
181 |
+
<p>pulls in the latest changes from the tracked branch. The tracked branch
|
182 |
+
can be remote. By default the master branch tracks the branch master in
|
183 |
+
the remote origin.
|
184 |
+
</p>
|
185 |
+
<div class="float">
|
186 |
+
<p><code class="command">--rebase</code> (see below) is recommended.
|
187 |
+
</p><div class="type-number-float"><p><strong class="strong">IMPORTANT
|
188 |
+
</strong></p></div></div>
|
189 |
+
</div>
|
190 |
+
<div class="section-level-extent" id="Rebasing-your-local-branches">
|
191 |
+
<h3 class="section">2.4 Rebasing your local branches</h3>
|
192 |
+
|
193 |
+
<div class="example">
|
194 |
+
<pre class="example-preformatted">git pull --rebase
|
195 |
+
</pre></div>
|
196 |
+
|
197 |
+
<p>fetches the changes from the main repository and replays your local commits
|
198 |
+
over it. This is required to keep all your local changes at the top of
|
199 |
+
FFmpeg’s master tree. The master tree will reject pushes with merge commits.
|
200 |
+
</p>
|
201 |
+
|
202 |
+
</div>
|
203 |
+
<div class="section-level-extent" id="Adding_002fremoving-files_002fdirectories">
|
204 |
+
<h3 class="section">2.5 Adding/removing files/directories</h3>
|
205 |
+
|
206 |
+
<div class="example">
|
207 |
+
<pre class="example-preformatted">git add [-A] <filename/dirname>
|
208 |
+
git rm [-r] <filename/dirname>
|
209 |
+
</pre></div>
|
210 |
+
|
211 |
+
<p>Git needs to get notified of all changes you make to your working
|
212 |
+
directory that makes files appear or disappear.
|
213 |
+
Line moves across files are automatically tracked.
|
214 |
+
</p>
|
215 |
+
|
216 |
+
</div>
|
217 |
+
<div class="section-level-extent" id="Showing-modifications">
|
218 |
+
<h3 class="section">2.6 Showing modifications</h3>
|
219 |
+
|
220 |
+
<div class="example">
|
221 |
+
<pre class="example-preformatted">git diff <filename(s)>
|
222 |
+
</pre></div>
|
223 |
+
|
224 |
+
<p>will show all local modifications in your working directory as unified diff.
|
225 |
+
</p>
|
226 |
+
|
227 |
+
</div>
|
228 |
+
<div class="section-level-extent" id="Inspecting-the-changelog">
|
229 |
+
<h3 class="section">2.7 Inspecting the changelog</h3>
|
230 |
+
|
231 |
+
<div class="example">
|
232 |
+
<pre class="example-preformatted">git log <filename(s)>
|
233 |
+
</pre></div>
|
234 |
+
|
235 |
+
<p>You may also use the graphical tools like <code class="command">gitview</code> or <code class="command">gitk</code>
|
236 |
+
or the web interface available at <a class="url" href="http://source.ffmpeg.org/">http://source.ffmpeg.org/</a>.
|
237 |
+
</p>
|
238 |
+
</div>
|
239 |
+
<div class="section-level-extent" id="Checking-source-tree-status">
|
240 |
+
<h3 class="section">2.8 Checking source tree status</h3>
|
241 |
+
|
242 |
+
<div class="example">
|
243 |
+
<pre class="example-preformatted">git status
|
244 |
+
</pre></div>
|
245 |
+
|
246 |
+
<p>detects all the changes you made and lists what actions will be taken in case
|
247 |
+
of a commit (additions, modifications, deletions, etc.).
|
248 |
+
</p>
|
249 |
+
|
250 |
+
</div>
|
251 |
+
<div class="section-level-extent" id="Committing">
|
252 |
+
<h3 class="section">2.9 Committing</h3>
|
253 |
+
|
254 |
+
<div class="example">
|
255 |
+
<pre class="example-preformatted">git diff --check
|
256 |
+
</pre></div>
|
257 |
+
|
258 |
+
<p>to double check your changes before committing them to avoid trouble later
|
259 |
+
on. All experienced developers do this on each and every commit, no matter
|
260 |
+
how small.
|
261 |
+
</p>
|
262 |
+
<p>Every one of them has been saved from looking like a fool by this many times.
|
263 |
+
It’s very easy for stray debug output or cosmetic modifications to slip in,
|
264 |
+
please avoid problems through this extra level of scrutiny.
|
265 |
+
</p>
|
266 |
+
<p>For cosmetics-only commits you should get (almost) empty output from
|
267 |
+
</p>
|
268 |
+
<div class="example">
|
269 |
+
<pre class="example-preformatted">git diff -w -b <filename(s)>
|
270 |
+
</pre></div>
|
271 |
+
|
272 |
+
<p>Also check the output of
|
273 |
+
</p>
|
274 |
+
<div class="example">
|
275 |
+
<pre class="example-preformatted">git status
|
276 |
+
</pre></div>
|
277 |
+
|
278 |
+
<p>to make sure you don’t have untracked files or deletions.
|
279 |
+
</p>
|
280 |
+
<div class="example">
|
281 |
+
<pre class="example-preformatted">git add [-i|-p|-A] <filenames/dirnames>
|
282 |
+
</pre></div>
|
283 |
+
|
284 |
+
<p>Make sure you have told Git your name, email address and GPG key
|
285 |
+
</p>
|
286 |
+
<div class="example">
|
287 |
+
<pre class="example-preformatted">git config --global user.name "My Name"
|
288 |
+
git config --global user.email [email protected]
|
289 |
+
git config --global user.signingkey ABCDEF0123245
|
290 |
+
</pre></div>
|
291 |
+
|
292 |
+
<p>Enable signing all commits or use -S
|
293 |
+
</p>
|
294 |
+
<div class="example">
|
295 |
+
<pre class="example-preformatted">git config --global commit.gpgsign true
|
296 |
+
</pre></div>
|
297 |
+
|
298 |
+
<p>Use <samp class="option">--global</samp> to set the global configuration for all your Git checkouts.
|
299 |
+
</p>
|
300 |
+
<p>Git will select the changes to the files for commit. Optionally you can use
|
301 |
+
the interactive or the patch mode to select hunk by hunk what should be
|
302 |
+
added to the commit.
|
303 |
+
</p>
|
304 |
+
|
305 |
+
<div class="example">
|
306 |
+
<pre class="example-preformatted">git commit
|
307 |
+
</pre></div>
|
308 |
+
|
309 |
+
<p>Git will commit the selected changes to your current local branch.
|
310 |
+
</p>
|
311 |
+
<p>You will be prompted for a log message in an editor, which is either
|
312 |
+
set in your personal configuration file through
|
313 |
+
</p>
|
314 |
+
<div class="example">
|
315 |
+
<pre class="example-preformatted">git config --global core.editor
|
316 |
+
</pre></div>
|
317 |
+
|
318 |
+
<p>or set by one of the following environment variables:
|
319 |
+
<var class="var">GIT_EDITOR</var>, <var class="var">VISUAL</var> or <var class="var">EDITOR</var>.
|
320 |
+
</p>
|
321 |
+
</div>
|
322 |
+
<div class="section-level-extent" id="Writing-a-commit-message">
|
323 |
+
<h3 class="section">2.10 Writing a commit message</h3>
|
324 |
+
|
325 |
+
<p>Log messages should be concise but descriptive.
|
326 |
+
</p>
|
327 |
+
<p>The first line must contain the context, a colon and a very short
|
328 |
+
summary of what the commit does. Details can be added, if necessary,
|
329 |
+
separated by an empty line. These details should not exceed 60-72 characters
|
330 |
+
per line, except when containing code.
|
331 |
+
</p>
|
332 |
+
<p>Example of a good commit message:
|
333 |
+
</p>
|
334 |
+
<div class="example">
|
335 |
+
<pre class="example-preformatted">avcodec/cbs: add a helper to read extradata within packet side data
|
336 |
+
|
337 |
+
Using ff_cbs_read() on the raw buffer will not parse it as extradata,
|
338 |
+
resulting in parsing errors for example when handling ISOBMFF avcC.
|
339 |
+
This helper works around that.
|
340 |
+
</pre></div>
|
341 |
+
|
342 |
+
<div class="example">
|
343 |
+
<pre class="example-preformatted">ptr might be NULL
|
344 |
+
</pre></div>
|
345 |
+
|
346 |
+
<p>If the summary on the first line is not enough, in the body of the message,
|
347 |
+
explain why you made a change, what you did will be obvious from the changes
|
348 |
+
themselves most of the time. Saying just "bug fix" or "10l" is bad. Remember
|
349 |
+
that people of varying skill levels look at and educate themselves while
|
350 |
+
reading through your code. Don’t include filenames in log messages except in
|
351 |
+
the context, Git provides that information.
|
352 |
+
</p>
|
353 |
+
<p>If the commit fixes a registered issue, state it in a separate line of the
|
354 |
+
body: <code class="code">Fix Trac ticket #42.</code>
|
355 |
+
</p>
|
356 |
+
<p>The first line will be used to name
|
357 |
+
the patch by <code class="command">git format-patch</code>.
|
358 |
+
</p>
|
359 |
+
<p>Common mistakes for the first line, as seen in <code class="command">git log --oneline</code>
|
360 |
+
include: missing context at the beginning; description of what the code did
|
361 |
+
before the patch; line too long or wrapped to the second line.
|
362 |
+
</p>
|
363 |
+
</div>
|
364 |
+
<div class="section-level-extent" id="Preparing-a-patchset">
|
365 |
+
<h3 class="section">2.11 Preparing a patchset</h3>
|
366 |
+
|
367 |
+
<div class="example">
|
368 |
+
<pre class="example-preformatted">git format-patch <commit> [-o directory]
|
369 |
+
</pre></div>
|
370 |
+
|
371 |
+
<p>will generate a set of patches for each commit between <var class="var"><commit></var> and
|
372 |
+
current <var class="var">HEAD</var>. E.g.
|
373 |
+
</p>
|
374 |
+
<div class="example">
|
375 |
+
<pre class="example-preformatted">git format-patch origin/master
|
376 |
+
</pre></div>
|
377 |
+
|
378 |
+
<p>will generate patches for all commits on current branch which are not
|
379 |
+
present in upstream.
|
380 |
+
A useful shortcut is also
|
381 |
+
</p>
|
382 |
+
<div class="example">
|
383 |
+
<pre class="example-preformatted">git format-patch -n
|
384 |
+
</pre></div>
|
385 |
+
|
386 |
+
<p>which will generate patches from last <var class="var">n</var> commits.
|
387 |
+
By default the patches are created in the current directory.
|
388 |
+
</p>
|
389 |
+
</div>
|
390 |
+
<div class="section-level-extent" id="Sending-patches-for-review">
|
391 |
+
<h3 class="section">2.12 Sending patches for review</h3>
|
392 |
+
|
393 |
+
<div class="example">
|
394 |
+
<pre class="example-preformatted">git send-email <commit list|directory>
|
395 |
+
</pre></div>
|
396 |
+
|
397 |
+
<p>will send the patches created by <code class="command">git format-patch</code> or directly
|
398 |
+
generates them. All the email fields can be configured in the global/local
|
399 |
+
configuration or overridden by command line.
|
400 |
+
Note that this tool must often be installed separately (e.g. <var class="var">git-email</var>
|
401 |
+
package on Debian-based distros).
|
402 |
+
</p>
|
403 |
+
|
404 |
+
</div>
|
405 |
+
<div class="section-level-extent" id="Renaming_002fmoving_002fcopying-files-or-contents-of-files">
|
406 |
+
<h3 class="section">2.13 Renaming/moving/copying files or contents of files</h3>
|
407 |
+
|
408 |
+
<p>Git automatically tracks such changes, making those normal commits.
|
409 |
+
</p>
|
410 |
+
<div class="example">
|
411 |
+
<pre class="example-preformatted">mv/cp path/file otherpath/otherfile
|
412 |
+
git add [-A] .
|
413 |
+
git commit
|
414 |
+
</pre></div>
|
415 |
+
|
416 |
+
|
417 |
+
</div>
|
418 |
+
</div>
|
419 |
+
<div class="chapter-level-extent" id="Git-configuration">
|
420 |
+
<h2 class="chapter">3 Git configuration</h2>
|
421 |
+
|
422 |
+
<p>In order to simplify a few workflows, it is advisable to configure both
|
423 |
+
your personal Git installation and your local FFmpeg repository.
|
424 |
+
</p>
|
425 |
+
<ul class="mini-toc">
|
426 |
+
<li><a href="#Personal-Git-installation" accesskey="1">Personal Git installation</a></li>
|
427 |
+
<li><a href="#Repository-configuration" accesskey="2">Repository configuration</a></li>
|
428 |
+
</ul>
|
429 |
+
<div class="section-level-extent" id="Personal-Git-installation">
|
430 |
+
<h3 class="section">3.1 Personal Git installation</h3>
|
431 |
+
|
432 |
+
<p>Add the following to your <samp class="file">~/.gitconfig</samp> to help <code class="command">git send-email</code>
|
433 |
+
and <code class="command">git format-patch</code> detect renames:
|
434 |
+
</p>
|
435 |
+
<div class="example">
|
436 |
+
<pre class="example-preformatted">[diff]
|
437 |
+
renames = copy
|
438 |
+
</pre></div>
|
439 |
+
|
440 |
+
</div>
|
441 |
+
<div class="section-level-extent" id="Repository-configuration">
|
442 |
+
<h3 class="section">3.2 Repository configuration</h3>
|
443 |
+
|
444 |
+
<p>In order to have <code class="command">git send-email</code> automatically send patches
|
445 |
+
to the ffmpeg-devel mailing list, add the following stanza
|
446 |
+
to <samp class="file">/path/to/ffmpeg/repository/.git/config</samp>:
|
447 |
+
</p>
|
448 |
+
<div class="example">
|
449 |
+
<pre class="example-preformatted">[sendemail]
|
450 |
+
to = [email protected]
|
451 |
+
</pre></div>
|
452 |
+
|
453 |
+
</div>
|
454 |
+
</div>
|
455 |
+
<div class="chapter-level-extent" id="FFmpeg-specific">
|
456 |
+
<h2 class="chapter">4 FFmpeg specific</h2>
|
457 |
+
|
458 |
+
<ul class="mini-toc">
|
459 |
+
<li><a href="#Reverting-broken-commits" accesskey="1">Reverting broken commits</a></li>
|
460 |
+
<li><a href="#Pushing-changes-to-remote-trees" accesskey="2">Pushing changes to remote trees</a></li>
|
461 |
+
<li><a href="#Finding-a-specific-svn-revision" accesskey="3">Finding a specific svn revision</a></li>
|
462 |
+
</ul>
|
463 |
+
<div class="section-level-extent" id="Reverting-broken-commits">
|
464 |
+
<h3 class="section">4.1 Reverting broken commits</h3>
|
465 |
+
|
466 |
+
<div class="example">
|
467 |
+
<pre class="example-preformatted">git reset <commit>
|
468 |
+
</pre></div>
|
469 |
+
|
470 |
+
<p><code class="command">git reset</code> will uncommit the changes till <var class="var"><commit></var> rewriting
|
471 |
+
the current branch history.
|
472 |
+
</p>
|
473 |
+
<div class="example">
|
474 |
+
<pre class="example-preformatted">git commit --amend
|
475 |
+
</pre></div>
|
476 |
+
|
477 |
+
<p>allows one to amend the last commit details quickly.
|
478 |
+
</p>
|
479 |
+
<div class="example">
|
480 |
+
<pre class="example-preformatted">git rebase -i origin/master
|
481 |
+
</pre></div>
|
482 |
+
|
483 |
+
<p>will replay local commits over the main repository allowing to edit, merge
|
484 |
+
or remove some of them in the process.
|
485 |
+
</p>
|
486 |
+
<div class="float">
|
487 |
+
<p><code class="command">git reset</code>, <code class="command">git commit --amend</code> and <code class="command">git rebase</code>
|
488 |
+
rewrite history, so you should use them ONLY on your local or topic branches.
|
489 |
+
The main repository will reject those changes.
|
490 |
+
</p><div class="type-number-float"><p><strong class="strong">NOTE
|
491 |
+
</strong></p></div></div>
|
492 |
+
<div class="example">
|
493 |
+
<pre class="example-preformatted">git revert <commit>
|
494 |
+
</pre></div>
|
495 |
+
|
496 |
+
<p><code class="command">git revert</code> will generate a revert commit. This will not make the
|
497 |
+
faulty commit disappear from the history.
|
498 |
+
</p>
|
499 |
+
</div>
|
500 |
+
<div class="section-level-extent" id="Pushing-changes-to-remote-trees">
|
501 |
+
<h3 class="section">4.2 Pushing changes to remote trees</h3>
|
502 |
+
|
503 |
+
<div class="example">
|
504 |
+
<pre class="example-preformatted">git push origin master --dry-run
|
505 |
+
</pre></div>
|
506 |
+
|
507 |
+
<p>Will simulate a push of the local master branch to the default remote
|
508 |
+
(<var class="var">origin</var>). And list which branches and ranges or commits would have been
|
509 |
+
pushed.
|
510 |
+
Git will prevent you from pushing changes if the local and remote trees are
|
511 |
+
out of sync. Refer to <a class="ref" href="#Updating-the-source-tree-to-the-latest-revision">Updating the source tree to the latest revision</a>.
|
512 |
+
</p>
|
513 |
+
<div class="example">
|
514 |
+
<pre class="example-preformatted">git remote add <name> <url>
|
515 |
+
</pre></div>
|
516 |
+
|
517 |
+
<p>Will add additional remote with a name reference, it is useful if you want
|
518 |
+
to push your local branch for review on a remote host.
|
519 |
+
</p>
|
520 |
+
<div class="example">
|
521 |
+
<pre class="example-preformatted">git push <remote> <refspec>
|
522 |
+
</pre></div>
|
523 |
+
|
524 |
+
<p>Will push the changes to the <var class="var"><remote></var> repository.
|
525 |
+
Omitting <var class="var"><refspec></var> makes <code class="command">git push</code> update all the remote
|
526 |
+
branches matching the local ones.
|
527 |
+
</p>
|
528 |
+
</div>
|
529 |
+
<div class="section-level-extent" id="Finding-a-specific-svn-revision">
|
530 |
+
<h3 class="section">4.3 Finding a specific svn revision</h3>
|
531 |
+
|
532 |
+
<p>Since version 1.7.1 Git supports ‘<samp class="samp">:/foo</samp>’ syntax for specifying commits
|
533 |
+
based on a regular expression. see man gitrevisions
|
534 |
+
</p>
|
535 |
+
<div class="example">
|
536 |
+
<pre class="example-preformatted">git show :/'as revision 23456'
|
537 |
+
</pre></div>
|
538 |
+
|
539 |
+
<p>will show the svn changeset ‘<samp class="samp">r23456</samp>’. With older Git versions searching in
|
540 |
+
the <code class="command">git log</code> output is the easiest option (especially if a pager with
|
541 |
+
search capabilities is used).
|
542 |
+
</p>
|
543 |
+
<p>This commit can be checked out with
|
544 |
+
</p>
|
545 |
+
<div class="example">
|
546 |
+
<pre class="example-preformatted">git checkout -b svn_23456 :/'as revision 23456'
|
547 |
+
</pre></div>
|
548 |
+
|
549 |
+
<p>or for Git < 1.7.1 with
|
550 |
+
</p>
|
551 |
+
<div class="example">
|
552 |
+
<pre class="example-preformatted">git checkout -b svn_23456 $SHA1
|
553 |
+
</pre></div>
|
554 |
+
|
555 |
+
<p>where <var class="var">$SHA1</var> is the commit hash from the <code class="command">git log</code> output.
|
556 |
+
</p>
|
557 |
+
|
558 |
+
</div>
|
559 |
+
</div>
|
560 |
+
<div class="chapter-level-extent" id="gpg-key-generation">
|
561 |
+
<h2 class="chapter">5 gpg key generation</h2>
|
562 |
+
|
563 |
+
<p>If you have no gpg key yet, we recommend that you create a ed25519 based key as it
|
564 |
+
is small, fast and secure. Especially it results in small signatures in git.
|
565 |
+
</p>
|
566 |
+
<div class="example">
|
567 |
+
<pre class="example-preformatted">gpg --default-new-key-algo "ed25519/cert,sign+cv25519/encr" --quick-generate-key "[email protected]"
|
568 |
+
</pre></div>
|
569 |
+
|
570 |
+
<p>When generating a key, make sure the email specified matches the email used in git as some sites like
|
571 |
+
github consider mismatches a reason to declare such commits unverified. After generating a key you
|
572 |
+
can add it to the MAINTAINER file and upload it to a keyserver.
|
573 |
+
</p>
|
574 |
+
</div>
|
575 |
+
<div class="chapter-level-extent" id="Pre_002dpush-checklist">
|
576 |
+
<h2 class="chapter">6 Pre-push checklist</h2>
|
577 |
+
|
578 |
+
<p>Once you have a set of commits that you feel are ready for pushing,
|
579 |
+
work through the following checklist to doublecheck everything is in
|
580 |
+
proper order. This list tries to be exhaustive. In case you are just
|
581 |
+
pushing a typo in a comment, some of the steps may be unnecessary.
|
582 |
+
Apply your common sense, but if in doubt, err on the side of caution.
|
583 |
+
</p>
|
584 |
+
<p>First, make sure that the commits and branches you are going to push
|
585 |
+
match what you want pushed and that nothing is missing, extraneous or
|
586 |
+
wrong. You can see what will be pushed by running the git push command
|
587 |
+
with <samp class="option">--dry-run</samp> first. And then inspecting the commits listed with
|
588 |
+
<code class="command">git log -p 1234567..987654</code>. The <code class="command">git status</code> command
|
589 |
+
may help in finding local changes that have been forgotten to be added.
|
590 |
+
</p>
|
591 |
+
<p>Next let the code pass through a full run of our test suite.
|
592 |
+
</p>
|
593 |
+
<ul class="itemize mark-bullet">
|
594 |
+
<li><code class="command">make distclean</code>
|
595 |
+
</li><li><code class="command">/path/to/ffmpeg/configure</code>
|
596 |
+
</li><li><code class="command">make fate</code>
|
597 |
+
</li><li>if fate fails due to missing samples run <code class="command">make fate-rsync</code> and retry
|
598 |
+
</li></ul>
|
599 |
+
|
600 |
+
<p>Make sure all your changes have been checked before pushing them, the
|
601 |
+
test suite only checks against regressions and that only to some extend. It does
|
602 |
+
obviously not check newly added features/code to be working unless you have
|
603 |
+
added a test for that (which is recommended).
|
604 |
+
</p>
|
605 |
+
<p>Also note that every single commit should pass the test suite, not just
|
606 |
+
the result of a series of patches.
|
607 |
+
</p>
|
608 |
+
<p>Once everything passed, push the changes to your public ffmpeg clone and post a
|
609 |
+
merge request to ffmpeg-devel. You can also push them directly but this is not
|
610 |
+
recommended.
|
611 |
+
</p>
|
612 |
+
</div>
|
613 |
+
<div class="chapter-level-extent" id="Server-Issues">
|
614 |
+
<h2 class="chapter">7 Server Issues</h2>
|
615 |
+
|
616 |
+
<p>Contact the project admins at <a class="email" href="mailto:[email protected]">[email protected]</a> if you have technical
|
617 |
+
problems with the Git server.
|
618 |
+
</p></div>
|
619 |
+
</div>
|
620 |
+
|
621 |
+
|
622 |
+
|
623 |
+
</body>
|
624 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libavcodec.html
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libavcodec Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libavcodec Documentation">
|
9 |
+
<meta name="keywords" content="Libavcodec Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
39 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="chapter-level-extent" id="Description">
|
44 |
+
<h2 class="chapter">1 Description</h2>
|
45 |
+
|
46 |
+
<p>The libavcodec library provides a generic encoding/decoding framework
|
47 |
+
and contains multiple decoders and encoders for audio, video and
|
48 |
+
subtitle streams, and several bitstream filters.
|
49 |
+
</p>
|
50 |
+
<p>The shared architecture provides various services ranging from bit
|
51 |
+
stream I/O to DSP optimizations, and makes it suitable for
|
52 |
+
implementing robust and fast codecs as well as for experimentation.
|
53 |
+
</p>
|
54 |
+
|
55 |
+
</div>
|
56 |
+
<div class="chapter-level-extent" id="See-Also">
|
57 |
+
<h2 class="chapter">2 See Also</h2>
|
58 |
+
|
59 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
60 |
+
<a class="url" href="ffmpeg-codecs.html">ffmpeg-codecs</a>, <a class="url" href="ffmpeg-bitstream-filters.html">bitstream-filters</a>,
|
61 |
+
<a class="url" href="libavutil.html">libavutil</a>
|
62 |
+
</p>
|
63 |
+
|
64 |
+
</div>
|
65 |
+
<div class="chapter-level-extent" id="Authors">
|
66 |
+
<h2 class="chapter">3 Authors</h2>
|
67 |
+
|
68 |
+
<p>The FFmpeg developers.
|
69 |
+
</p>
|
70 |
+
<p>For details about the authorship, see the Git history of the project
|
71 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
72 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
73 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
74 |
+
</p>
|
75 |
+
<p>Maintainers for the specific components are listed in the file
|
76 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
77 |
+
</p>
|
78 |
+
|
79 |
+
</div>
|
80 |
+
</div>
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
</body>
|
85 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libavdevice.html
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libavdevice Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libavdevice Documentation">
|
9 |
+
<meta name="keywords" content="Libavdevice Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
39 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="chapter-level-extent" id="Description">
|
44 |
+
<h2 class="chapter">1 Description</h2>
|
45 |
+
|
46 |
+
<p>The libavdevice library provides a generic framework for grabbing from
|
47 |
+
and rendering to many common multimedia input/output devices, and
|
48 |
+
supports several input and output devices, including Video4Linux2,
|
49 |
+
VfW, DShow, and ALSA.
|
50 |
+
</p>
|
51 |
+
|
52 |
+
</div>
|
53 |
+
<div class="chapter-level-extent" id="See-Also">
|
54 |
+
<h2 class="chapter">2 See Also</h2>
|
55 |
+
|
56 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
57 |
+
<a class="url" href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
58 |
+
<a class="url" href="libavutil.html">libavutil</a>, <a class="url" href="libavcodec.html">libavcodec</a>, <a class="url" href="libavformat.html">libavformat</a>
|
59 |
+
</p>
|
60 |
+
|
61 |
+
</div>
|
62 |
+
<div class="chapter-level-extent" id="Authors">
|
63 |
+
<h2 class="chapter">3 Authors</h2>
|
64 |
+
|
65 |
+
<p>The FFmpeg developers.
|
66 |
+
</p>
|
67 |
+
<p>For details about the authorship, see the Git history of the project
|
68 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
69 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
70 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
71 |
+
</p>
|
72 |
+
<p>Maintainers for the specific components are listed in the file
|
73 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
74 |
+
</p>
|
75 |
+
|
76 |
+
</div>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
|
80 |
+
|
81 |
+
</body>
|
82 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libavfilter.html
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libavfilter Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libavfilter Documentation">
|
9 |
+
<meta name="keywords" content="Libavfilter Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
39 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="chapter-level-extent" id="Description">
|
44 |
+
<h2 class="chapter">1 Description</h2>
|
45 |
+
|
46 |
+
<p>The libavfilter library provides a generic audio/video filtering
|
47 |
+
framework containing several filters, sources and sinks.
|
48 |
+
</p>
|
49 |
+
|
50 |
+
</div>
|
51 |
+
<div class="chapter-level-extent" id="See-Also">
|
52 |
+
<h2 class="chapter">2 See Also</h2>
|
53 |
+
|
54 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
55 |
+
<a class="url" href="ffmpeg-filters.html">ffmpeg-filters</a>,
|
56 |
+
<a class="url" href="libavutil.html">libavutil</a>, <a class="url" href="libswscale.html">libswscale</a>, <a class="url" href="libswresample.html">libswresample</a>,
|
57 |
+
<a class="url" href="libavcodec.html">libavcodec</a>, <a class="url" href="libavformat.html">libavformat</a>, <a class="url" href="libavdevice.html">libavdevice</a>
|
58 |
+
</p>
|
59 |
+
|
60 |
+
</div>
|
61 |
+
<div class="chapter-level-extent" id="Authors">
|
62 |
+
<h2 class="chapter">3 Authors</h2>
|
63 |
+
|
64 |
+
<p>The FFmpeg developers.
|
65 |
+
</p>
|
66 |
+
<p>For details about the authorship, see the Git history of the project
|
67 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
68 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
69 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
70 |
+
</p>
|
71 |
+
<p>Maintainers for the specific components are listed in the file
|
72 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
73 |
+
</p>
|
74 |
+
|
75 |
+
</div>
|
76 |
+
</div>
|
77 |
+
|
78 |
+
|
79 |
+
|
80 |
+
</body>
|
81 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libavformat.html
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libavformat Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libavformat Documentation">
|
9 |
+
<meta name="keywords" content="Libavformat Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
39 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="chapter-level-extent" id="Description">
|
44 |
+
<h2 class="chapter">1 Description</h2>
|
45 |
+
|
46 |
+
<p>The libavformat library provides a generic framework for multiplexing
|
47 |
+
and demultiplexing (muxing and demuxing) audio, video and subtitle
|
48 |
+
streams. It encompasses multiple muxers and demuxers for multimedia
|
49 |
+
container formats.
|
50 |
+
</p>
|
51 |
+
<p>It also supports several input and output protocols to access a media
|
52 |
+
resource.
|
53 |
+
</p>
|
54 |
+
|
55 |
+
</div>
|
56 |
+
<div class="chapter-level-extent" id="See-Also">
|
57 |
+
<h2 class="chapter">2 See Also</h2>
|
58 |
+
|
59 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
60 |
+
<a class="url" href="ffmpeg-formats.html">ffmpeg-formats</a>, <a class="url" href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
61 |
+
<a class="url" href="libavutil.html">libavutil</a>, <a class="url" href="libavcodec.html">libavcodec</a>
|
62 |
+
</p>
|
63 |
+
|
64 |
+
</div>
|
65 |
+
<div class="chapter-level-extent" id="Authors">
|
66 |
+
<h2 class="chapter">3 Authors</h2>
|
67 |
+
|
68 |
+
<p>The FFmpeg developers.
|
69 |
+
</p>
|
70 |
+
<p>For details about the authorship, see the Git history of the project
|
71 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
72 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
73 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
74 |
+
</p>
|
75 |
+
<p>Maintainers for the specific components are listed in the file
|
76 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
77 |
+
</p>
|
78 |
+
|
79 |
+
</div>
|
80 |
+
</div>
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
</body>
|
85 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libavutil.html
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libavutil Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libavutil Documentation">
|
9 |
+
<meta name="keywords" content="Libavutil Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.toc-numbered-mark {list-style: none}
|
19 |
+
-->
|
20 |
+
</style>
|
21 |
+
|
22 |
+
|
23 |
+
</head>
|
24 |
+
|
25 |
+
<body lang="en">
|
26 |
+
|
27 |
+
|
28 |
+
<div class="top-level-extent" id="SEC_Top">
|
29 |
+
|
30 |
+
|
31 |
+
<div class="element-contents" id="SEC_Contents">
|
32 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
33 |
+
|
34 |
+
<div class="contents">
|
35 |
+
|
36 |
+
<ul class="toc-numbered-mark">
|
37 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
38 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
39 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
40 |
+
</ul>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
<div class="chapter-level-extent" id="Description">
|
44 |
+
<h2 class="chapter">1 Description</h2>
|
45 |
+
|
46 |
+
<p>The libavutil library is a utility library to aid portable
|
47 |
+
multimedia programming. It contains safe portable string functions,
|
48 |
+
random number generators, data structures, additional mathematics
|
49 |
+
functions, cryptography and multimedia related functionality (like
|
50 |
+
enumerations for pixel and sample formats). It is not a library for
|
51 |
+
code needed by both libavcodec and libavformat.
|
52 |
+
</p>
|
53 |
+
<p>The goals for this library is to be:
|
54 |
+
</p>
|
55 |
+
<dl class="table">
|
56 |
+
<dt><strong class="strong">Modular</strong></dt>
|
57 |
+
<dd><p>It should have few interdependencies and the possibility of disabling individual
|
58 |
+
parts during <code class="command">./configure</code>.
|
59 |
+
</p>
|
60 |
+
</dd>
|
61 |
+
<dt><strong class="strong">Small</strong></dt>
|
62 |
+
<dd><p>Both sources and objects should be small.
|
63 |
+
</p>
|
64 |
+
</dd>
|
65 |
+
<dt><strong class="strong">Efficient</strong></dt>
|
66 |
+
<dd><p>It should have low CPU and memory usage.
|
67 |
+
</p>
|
68 |
+
</dd>
|
69 |
+
<dt><strong class="strong">Useful</strong></dt>
|
70 |
+
<dd><p>It should avoid useless features that almost no one needs.
|
71 |
+
</p></dd>
|
72 |
+
</dl>
|
73 |
+
|
74 |
+
|
75 |
+
</div>
|
76 |
+
<div class="chapter-level-extent" id="See-Also">
|
77 |
+
<h2 class="chapter">2 See Also</h2>
|
78 |
+
|
79 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
80 |
+
<a class="url" href="ffmpeg-utils.html">ffmpeg-utils</a>
|
81 |
+
</p>
|
82 |
+
|
83 |
+
</div>
|
84 |
+
<div class="chapter-level-extent" id="Authors">
|
85 |
+
<h2 class="chapter">3 Authors</h2>
|
86 |
+
|
87 |
+
<p>The FFmpeg developers.
|
88 |
+
</p>
|
89 |
+
<p>For details about the authorship, see the Git history of the project
|
90 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
91 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
92 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
93 |
+
</p>
|
94 |
+
<p>Maintainers for the specific components are listed in the file
|
95 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
96 |
+
</p>
|
97 |
+
|
98 |
+
</div>
|
99 |
+
</div>
|
100 |
+
|
101 |
+
|
102 |
+
|
103 |
+
</body>
|
104 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libswresample.html
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libswresample Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libswresample Documentation">
|
9 |
+
<meta name="keywords" content="Libswresample Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.mark-bullet {list-style-type: disc}
|
19 |
+
ul.toc-numbered-mark {list-style: none}
|
20 |
+
-->
|
21 |
+
</style>
|
22 |
+
|
23 |
+
|
24 |
+
</head>
|
25 |
+
|
26 |
+
<body lang="en">
|
27 |
+
|
28 |
+
|
29 |
+
<div class="top-level-extent" id="SEC_Top">
|
30 |
+
|
31 |
+
|
32 |
+
<div class="element-contents" id="SEC_Contents">
|
33 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
34 |
+
|
35 |
+
<div class="contents">
|
36 |
+
|
37 |
+
<ul class="toc-numbered-mark">
|
38 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
39 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
40 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
41 |
+
</ul>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
<div class="chapter-level-extent" id="Description">
|
45 |
+
<h2 class="chapter">1 Description</h2>
|
46 |
+
|
47 |
+
<p>The libswresample library performs highly optimized audio resampling,
|
48 |
+
rematrixing and sample format conversion operations.
|
49 |
+
</p>
|
50 |
+
<p>Specifically, this library performs the following conversions:
|
51 |
+
</p>
|
52 |
+
<ul class="itemize mark-bullet">
|
53 |
+
<li><em class="emph">Resampling</em>: is the process of changing the audio rate, for
|
54 |
+
example from a high sample rate of 44100Hz to 8000Hz. Audio
|
55 |
+
conversion from high to low sample rate is a lossy process. Several
|
56 |
+
resampling options and algorithms are available.
|
57 |
+
|
58 |
+
</li><li><em class="emph">Format conversion</em>: is the process of converting the type of
|
59 |
+
samples, for example from 16-bit signed samples to unsigned 8-bit or
|
60 |
+
float samples. It also handles packing conversion, when passing from
|
61 |
+
packed layout (all samples belonging to distinct channels interleaved
|
62 |
+
in the same buffer), to planar layout (all samples belonging to the
|
63 |
+
same channel stored in a dedicated buffer or "plane").
|
64 |
+
|
65 |
+
</li><li><em class="emph">Rematrixing</em>: is the process of changing the channel layout, for
|
66 |
+
example from stereo to mono. When the input channels cannot be mapped
|
67 |
+
to the output streams, the process is lossy, since it involves
|
68 |
+
different gain factors and mixing.
|
69 |
+
</li></ul>
|
70 |
+
|
71 |
+
<p>Various other audio conversions (e.g. stretching and padding) are
|
72 |
+
enabled through dedicated options.
|
73 |
+
</p>
|
74 |
+
|
75 |
+
</div>
|
76 |
+
<div class="chapter-level-extent" id="See-Also">
|
77 |
+
<h2 class="chapter">2 See Also</h2>
|
78 |
+
|
79 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
80 |
+
<a class="url" href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
81 |
+
<a class="url" href="libavutil.html">libavutil</a>
|
82 |
+
</p>
|
83 |
+
|
84 |
+
</div>
|
85 |
+
<div class="chapter-level-extent" id="Authors">
|
86 |
+
<h2 class="chapter">3 Authors</h2>
|
87 |
+
|
88 |
+
<p>The FFmpeg developers.
|
89 |
+
</p>
|
90 |
+
<p>For details about the authorship, see the Git history of the project
|
91 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
92 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
93 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
94 |
+
</p>
|
95 |
+
<p>Maintainers for the specific components are listed in the file
|
96 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
97 |
+
</p>
|
98 |
+
|
99 |
+
</div>
|
100 |
+
</div>
|
101 |
+
|
102 |
+
|
103 |
+
|
104 |
+
</body>
|
105 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/libswscale.html
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Libswscale Documentation</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Libswscale Documentation">
|
9 |
+
<meta name="keywords" content="Libswscale Documentation">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.mark-bullet {list-style-type: disc}
|
19 |
+
ul.toc-numbered-mark {list-style: none}
|
20 |
+
-->
|
21 |
+
</style>
|
22 |
+
|
23 |
+
|
24 |
+
</head>
|
25 |
+
|
26 |
+
<body lang="en">
|
27 |
+
|
28 |
+
|
29 |
+
<div class="top-level-extent" id="SEC_Top">
|
30 |
+
|
31 |
+
|
32 |
+
<div class="element-contents" id="SEC_Contents">
|
33 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
34 |
+
|
35 |
+
<div class="contents">
|
36 |
+
|
37 |
+
<ul class="toc-numbered-mark">
|
38 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
39 |
+
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
40 |
+
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
41 |
+
</ul>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
<div class="chapter-level-extent" id="Description">
|
45 |
+
<h2 class="chapter">1 Description</h2>
|
46 |
+
|
47 |
+
<p>The libswscale library performs highly optimized image scaling and
|
48 |
+
colorspace and pixel format conversion operations.
|
49 |
+
</p>
|
50 |
+
<p>Specifically, this library performs the following conversions:
|
51 |
+
</p>
|
52 |
+
<ul class="itemize mark-bullet">
|
53 |
+
<li><em class="emph">Rescaling</em>: is the process of changing the video size. Several
|
54 |
+
rescaling options and algorithms are available. This is usually a
|
55 |
+
lossy process.
|
56 |
+
|
57 |
+
</li><li><em class="emph">Pixel format conversion</em>: is the process of converting the image
|
58 |
+
format and colorspace of the image, for example from planar YUV420P to
|
59 |
+
RGB24 packed. It also handles packing conversion, that is converts
|
60 |
+
from packed layout (all pixels belonging to distinct planes
|
61 |
+
interleaved in the same buffer), to planar layout (all samples
|
62 |
+
belonging to the same plane stored in a dedicated buffer or "plane").
|
63 |
+
|
64 |
+
<p>This is usually a lossy process in case the source and destination
|
65 |
+
colorspaces differ.
|
66 |
+
</p></li></ul>
|
67 |
+
|
68 |
+
|
69 |
+
</div>
|
70 |
+
<div class="chapter-level-extent" id="See-Also">
|
71 |
+
<h2 class="chapter">2 See Also</h2>
|
72 |
+
|
73 |
+
<p><a class="url" href="ffmpeg.html">ffmpeg</a>, <a class="url" href="ffplay.html">ffplay</a>, <a class="url" href="ffprobe.html">ffprobe</a>,
|
74 |
+
<a class="url" href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
75 |
+
<a class="url" href="libavutil.html">libavutil</a>
|
76 |
+
</p>
|
77 |
+
|
78 |
+
</div>
|
79 |
+
<div class="chapter-level-extent" id="Authors">
|
80 |
+
<h2 class="chapter">3 Authors</h2>
|
81 |
+
|
82 |
+
<p>The FFmpeg developers.
|
83 |
+
</p>
|
84 |
+
<p>For details about the authorship, see the Git history of the project
|
85 |
+
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
|
86 |
+
<code class="command">git log</code> in the FFmpeg source directory, or browsing the
|
87 |
+
online repository at <a class="url" href="https://git.ffmpeg.org/ffmpeg">https://git.ffmpeg.org/ffmpeg</a>.
|
88 |
+
</p>
|
89 |
+
<p>Maintainers for the specific components are listed in the file
|
90 |
+
<samp class="file">MAINTAINERS</samp> in the source code tree.
|
91 |
+
</p>
|
92 |
+
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
|
96 |
+
|
97 |
+
|
98 |
+
</body>
|
99 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/mailing-list-faq.html
ADDED
@@ -0,0 +1,524 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>FFmpeg Mailing List FAQ</title>
|
7 |
+
|
8 |
+
<meta name="description" content="FFmpeg Mailing List FAQ">
|
9 |
+
<meta name="keywords" content="FFmpeg Mailing List FAQ">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
ul.mark-bullet {list-style-type: disc}
|
19 |
+
ul.toc-numbered-mark {list-style: none}
|
20 |
+
-->
|
21 |
+
</style>
|
22 |
+
|
23 |
+
|
24 |
+
</head>
|
25 |
+
|
26 |
+
<body lang="en">
|
27 |
+
|
28 |
+
|
29 |
+
<div class="top-level-extent" id="SEC_Top">
|
30 |
+
|
31 |
+
|
32 |
+
<div class="element-contents" id="SEC_Contents">
|
33 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
34 |
+
|
35 |
+
<div class="contents">
|
36 |
+
|
37 |
+
<ul class="toc-numbered-mark">
|
38 |
+
<li><a id="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
39 |
+
<ul class="toc-numbered-mark">
|
40 |
+
<li><a id="toc-What-is-a-mailing-list_003f" href="#What-is-a-mailing-list_003f">1.1 What is a mailing list?</a></li>
|
41 |
+
<li><a id="toc-What-type-of-questions-can-I-ask_003f" href="#What-type-of-questions-can-I-ask_003f">1.2 What type of questions can I ask?</a></li>
|
42 |
+
<li><a id="toc-How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1">1.3 How do I ask a question or send a message to a mailing list?</a></li>
|
43 |
+
</ul></li>
|
44 |
+
<li><a id="toc-Subscribing-_002f-Unsubscribing" href="#Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a>
|
45 |
+
<ul class="toc-numbered-mark">
|
46 |
+
<li><a id="toc-How-do-I-subscribe_003f-1" href="#How-do-I-subscribe_003f-1">2.1 How do I subscribe?</a></li>
|
47 |
+
<li><a id="toc-How-do-I-unsubscribe_003f" href="#How-do-I-unsubscribe_003f">2.2 How do I unsubscribe?</a></li>
|
48 |
+
</ul></li>
|
49 |
+
<li><a id="toc-Moderation-Queue" href="#Moderation-Queue">3 Moderation Queue</a>
|
50 |
+
<ul class="toc-numbered-mark">
|
51 |
+
<li><a id="toc-Why-is-my-message-awaiting-moderator-approval_003f-1" href="#Why-is-my-message-awaiting-moderator-approval_003f-1">3.1 Why is my message awaiting moderator approval?</a></li>
|
52 |
+
<li><a id="toc-How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" href="#How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f">3.2 How long does it take for my message in the moderation queue to be approved?</a></li>
|
53 |
+
<li><a id="toc-How-do-I-delete-my-message-in-the-moderation-queue_003f-1" href="#How-do-I-delete-my-message-in-the-moderation-queue_003f-1">3.3 How do I delete my message in the moderation queue?</a></li>
|
54 |
+
</ul></li>
|
55 |
+
<li><a id="toc-Archives" href="#Archives">4 Archives</a>
|
56 |
+
<ul class="toc-numbered-mark">
|
57 |
+
<li><a id="toc-Where-are-the-archives_003f-1" href="#Where-are-the-archives_003f-1">4.1 Where are the archives?</a></li>
|
58 |
+
<li><a id="toc-How-do-I-reply-to-a-message-in-the-archives_003f" href="#How-do-I-reply-to-a-message-in-the-archives_003f">4.2 How do I reply to a message in the archives?</a></li>
|
59 |
+
<li><a id="toc-How-do-I-search-the-archives_003f" href="#How-do-I-search-the-archives_003f">4.3 How do I search the archives?</a></li>
|
60 |
+
</ul></li>
|
61 |
+
<li><a id="toc-Other" href="#Other">5 Other</a>
|
62 |
+
<ul class="toc-numbered-mark">
|
63 |
+
<li><a id="toc-Is-there-an-alternative-to-the-mailing-list_003f" href="#Is-there-an-alternative-to-the-mailing-list_003f">5.1 Is there an alternative to the mailing list?</a></li>
|
64 |
+
<li><a id="toc-What-is-top_002dposting_003f-1" href="#What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></li>
|
65 |
+
<li><a id="toc-What-is-the-message-size-limit_003f-1" href="#What-is-the-message-size-limit_003f-1">5.3 What is the message size limit?</a></li>
|
66 |
+
<li><a id="toc-Where-can-I-upload-sample-files_003f" href="#Where-can-I-upload-sample-files_003f">5.4 Where can I upload sample files?</a></li>
|
67 |
+
<li><a id="toc-Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" href="#Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f">5.5 Will I receive spam if I send and/or subscribe to a mailing list?</a></li>
|
68 |
+
<li><a id="toc-How-do-I-filter-mailing-list-messages_003f" href="#How-do-I-filter-mailing-list-messages_003f">5.6 How do I filter mailing list messages?</a></li>
|
69 |
+
<li><a id="toc-How-do-I-disable-mail-delivery-without-unsubscribing_003f-1" href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f-1">5.7 How do I disable mail delivery without unsubscribing?</a></li>
|
70 |
+
<li><a id="toc-Why-is-the-mailing-list-munging-my-address_003f-1" href="#Why-is-the-mailing-list-munging-my-address_003f-1">5.8 Why is the mailing list munging my address?</a></li>
|
71 |
+
</ul></li>
|
72 |
+
<li><a id="toc-Rules-and-Etiquette" href="#Rules-and-Etiquette">6 Rules and Etiquette</a>
|
73 |
+
<ul class="toc-numbered-mark">
|
74 |
+
<li><a id="toc-What-are-the-rules-and-the-proper-etiquette_003f" href="#What-are-the-rules-and-the-proper-etiquette_003f">6.1 What are the rules and the proper etiquette?</a></li>
|
75 |
+
</ul></li>
|
76 |
+
<li><a id="toc-Help" href="#Help">7 Help</a>
|
77 |
+
<ul class="toc-numbered-mark">
|
78 |
+
<li><a id="toc-Why-am-I-not-receiving-any-messages_003f" href="#Why-am-I-not-receiving-any-messages_003f">7.1 Why am I not receiving any messages?</a></li>
|
79 |
+
<li><a id="toc-Why-are-my-sent-messages-not-showing-up_003f" href="#Why-are-my-sent-messages-not-showing-up_003f">7.2 Why are my sent messages not showing up?</a></li>
|
80 |
+
<li><a id="toc-Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1" href="#Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1">7.3 Why do I keep getting unsubscribed from ffmpeg-devel?</a></li>
|
81 |
+
<li><a id="toc-Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1">7.4 Who do I contact if I have a problem with the mailing list?</a></li>
|
82 |
+
</ul></li>
|
83 |
+
</ul>
|
84 |
+
</div>
|
85 |
+
</div>
|
86 |
+
<div class="chapter-level-extent" id="General-Questions">
|
87 |
+
<h2 class="chapter">1 General Questions</h2>
|
88 |
+
|
89 |
+
<ul class="mini-toc">
|
90 |
+
<li><a href="#What-is-a-mailing-list_003f" accesskey="1">What is a mailing list?</a></li>
|
91 |
+
<li><a href="#What-type-of-questions-can-I-ask_003f" accesskey="2">What type of questions can I ask?</a></li>
|
92 |
+
<li><a href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" accesskey="3">How do I ask a question or send a message to a mailing list?</a></li>
|
93 |
+
</ul>
|
94 |
+
<div class="section-level-extent" id="What-is-a-mailing-list_003f">
|
95 |
+
<h3 class="section">1.1 What is a mailing list?</h3>
|
96 |
+
|
97 |
+
<p>A mailing list is not much different than emailing someone, but the
|
98 |
+
main difference is that your message is received by everyone who
|
99 |
+
subscribes to the list. It is somewhat like a forum but in email form.
|
100 |
+
</p>
|
101 |
+
<p>See the <a class="url" href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/">ffmpeg-user archives</a>
|
102 |
+
for examples.
|
103 |
+
</p>
|
104 |
+
</div>
|
105 |
+
<div class="section-level-extent" id="What-type-of-questions-can-I-ask_003f">
|
106 |
+
<h3 class="section">1.2 What type of questions can I ask?</h3>
|
107 |
+
|
108 |
+
<ul class="itemize mark-bullet">
|
109 |
+
<li><a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user</a>:
|
110 |
+
For questions involving unscripted usage or compilation of the FFmpeg
|
111 |
+
command-line tools (<code class="command">ffmpeg</code>, <code class="command">ffprobe</code>, <code class="command">ffplay</code>).
|
112 |
+
|
113 |
+
</li><li><a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/libav-user/">libav-user</a>:
|
114 |
+
For questions involving the FFmpeg libav* libraries (libavcodec,
|
115 |
+
libavformat, libavfilter, etc).
|
116 |
+
|
117 |
+
</li><li><a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel/">ffmpeg-devel</a>:
|
118 |
+
For discussions involving the development of FFmpeg and for submitting
|
119 |
+
patches. User questions should be asked at ffmpeg-user or libav-user.
|
120 |
+
</li></ul>
|
121 |
+
|
122 |
+
<p>To report a bug see <a class="url" href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>.
|
123 |
+
</p>
|
124 |
+
<p>We cannot provide help for scripts and/or third-party tools.
|
125 |
+
</p>
|
126 |
+
<a class="anchor" id="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f"></a></div>
|
127 |
+
<div class="section-level-extent" id="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1">
|
128 |
+
<h3 class="section">1.3 How do I ask a question or send a message to a mailing list?</h3>
|
129 |
+
|
130 |
+
<p>First you must <a class="ref" href="#How-do-I-subscribe_003f">subscribe</a>. Then all you have to do is
|
131 |
+
send an email:
|
132 |
+
</p>
|
133 |
+
<ul class="itemize mark-bullet">
|
134 |
+
<li>Email <a class="email" href="mailto:[email protected]">[email protected]</a> to send a message to the
|
135 |
+
ffmpeg-user mailing list.
|
136 |
+
|
137 |
+
</li><li>Email <a class="email" href="mailto:[email protected]">[email protected]</a> to send a message to the
|
138 |
+
libav-user mailing list.
|
139 |
+
|
140 |
+
</li><li>Email <a class="email" href="mailto:[email protected]">[email protected]</a> to send a message to the
|
141 |
+
ffmpeg-devel mailing list.
|
142 |
+
</li></ul>
|
143 |
+
|
144 |
+
</div>
|
145 |
+
</div>
|
146 |
+
<div class="chapter-level-extent" id="Subscribing-_002f-Unsubscribing">
|
147 |
+
<h2 class="chapter">2 Subscribing / Unsubscribing</h2>
|
148 |
+
|
149 |
+
<a class="anchor" id="How-do-I-subscribe_003f"></a><ul class="mini-toc">
|
150 |
+
<li><a href="#How-do-I-subscribe_003f-1" accesskey="1">How do I subscribe?</a></li>
|
151 |
+
<li><a href="#How-do-I-unsubscribe_003f" accesskey="2">How do I unsubscribe?</a></li>
|
152 |
+
</ul>
|
153 |
+
<div class="section-level-extent" id="How-do-I-subscribe_003f-1">
|
154 |
+
<h3 class="section">2.1 How do I subscribe?</h3>
|
155 |
+
|
156 |
+
<p>Email <a class="email" href="mailto:[email protected]">[email protected]</a> with the subject
|
157 |
+
<em class="emph">subscribe</em>.
|
158 |
+
</p>
|
159 |
+
<p>Or visit the <a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>
|
160 |
+
and refer to the <em class="emph">Subscribing to ffmpeg-user</em> section.
|
161 |
+
</p>
|
162 |
+
<p>The process is the same for the other mailing lists.
|
163 |
+
</p>
|
164 |
+
</div>
|
165 |
+
<div class="section-level-extent" id="How-do-I-unsubscribe_003f">
|
166 |
+
<h3 class="section">2.2 How do I unsubscribe?</h3>
|
167 |
+
|
168 |
+
<p>Email <a class="email" href="mailto:[email protected]">[email protected]</a> with subject <em class="emph">unsubscribe</em>.
|
169 |
+
</p>
|
170 |
+
<p>Or visit the <a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>,
|
171 |
+
scroll to bottom of page, enter your email address in the box, and click
|
172 |
+
the <em class="emph">Unsubscribe or edit options</em> button.
|
173 |
+
</p>
|
174 |
+
<p>The process is the same for the other mailing lists.
|
175 |
+
</p>
|
176 |
+
<p>Please avoid asking a mailing list admin to unsubscribe you unless you
|
177 |
+
are absolutely unable to do so by yourself. See <a class="ref" href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f">Who do I contact if I have a problem with the mailing list?</a>
|
178 |
+
</p>
|
179 |
+
<p>Note that it is possible to temporarily halt message delivery (vacation mode).
|
180 |
+
See <a class="ref" href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f">How do I disable mail delivery without unsubscribing?</a>
|
181 |
+
</p>
|
182 |
+
</div>
|
183 |
+
</div>
|
184 |
+
<div class="chapter-level-extent" id="Moderation-Queue">
|
185 |
+
<h2 class="chapter">3 Moderation Queue</h2>
|
186 |
+
<a class="anchor" id="Why-is-my-message-awaiting-moderator-approval_003f"></a><ul class="mini-toc">
|
187 |
+
<li><a href="#Why-is-my-message-awaiting-moderator-approval_003f-1" accesskey="1">Why is my message awaiting moderator approval?</a></li>
|
188 |
+
<li><a href="#How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" accesskey="2">How long does it take for my message in the moderation queue to be approved?</a></li>
|
189 |
+
<li><a href="#How-do-I-delete-my-message-in-the-moderation-queue_003f-1" accesskey="3">How do I delete my message in the moderation queue?</a></li>
|
190 |
+
</ul>
|
191 |
+
<div class="section-level-extent" id="Why-is-my-message-awaiting-moderator-approval_003f-1">
|
192 |
+
<h3 class="section">3.1 Why is my message awaiting moderator approval?</h3>
|
193 |
+
|
194 |
+
<p>Some messages are automatically held in the <em class="emph">moderation queue</em> and
|
195 |
+
must be manually approved by a mailing list admin:
|
196 |
+
</p>
|
197 |
+
<p>These are:
|
198 |
+
</p>
|
199 |
+
<ul class="itemize mark-bullet">
|
200 |
+
<li>Messages that exceed the <a class="ref" href="#What-is-the-message-size-limit_003f">message size limit</a>.
|
201 |
+
|
202 |
+
</li><li>Messages from users whose accounts have been set with the <em class="emph">moderation flag</em>
|
203 |
+
(very rarely occurs, but may if a user repeatedly ignores the rules
|
204 |
+
or is abusive towards others).
|
205 |
+
</li></ul>
|
206 |
+
|
207 |
+
</div>
|
208 |
+
<div class="section-level-extent" id="How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f">
|
209 |
+
<h3 class="section">3.2 How long does it take for my message in the moderation queue to be approved?</h3>
|
210 |
+
|
211 |
+
<p>The queue is not checked on a regular basis. You can ask on the
|
212 |
+
<code class="t">#ffmpeg-devel</code> IRC channel on Libera Chat for someone to approve your message.
|
213 |
+
</p>
|
214 |
+
<a class="anchor" id="How-do-I-delete-my-message-in-the-moderation-queue_003f"></a></div>
|
215 |
+
<div class="section-level-extent" id="How-do-I-delete-my-message-in-the-moderation-queue_003f-1">
|
216 |
+
<h3 class="section">3.3 How do I delete my message in the moderation queue?</h3>
|
217 |
+
|
218 |
+
<p>You should have received an email with the subject <em class="emph">Your message to <mailing list name> awaits moderator approval</em>.
|
219 |
+
A link is in the message that will allow you to delete your message
|
220 |
+
unless a mailing list admin already approved or rejected it.
|
221 |
+
</p>
|
222 |
+
</div>
|
223 |
+
</div>
|
224 |
+
<div class="chapter-level-extent" id="Archives">
|
225 |
+
<h2 class="chapter">4 Archives</h2>
|
226 |
+
|
227 |
+
<a class="anchor" id="Where-are-the-archives_003f"></a><ul class="mini-toc">
|
228 |
+
<li><a href="#Where-are-the-archives_003f-1" accesskey="1">Where are the archives?</a></li>
|
229 |
+
<li><a href="#How-do-I-reply-to-a-message-in-the-archives_003f" accesskey="2">How do I reply to a message in the archives?</a></li>
|
230 |
+
<li><a href="#How-do-I-search-the-archives_003f" accesskey="3">How do I search the archives?</a></li>
|
231 |
+
</ul>
|
232 |
+
<div class="section-level-extent" id="Where-are-the-archives_003f-1">
|
233 |
+
<h3 class="section">4.1 Where are the archives?</h3>
|
234 |
+
|
235 |
+
<p>See the <em class="emph">Archives</em> section on the <a class="url" href="https://ffmpeg.org/contact.html">FFmpeg Contact</a>
|
236 |
+
page for links to all FFmpeg mailing list archives.
|
237 |
+
</p>
|
238 |
+
<p>Note that the archives are split by month. Discussions that span
|
239 |
+
several months will be split into separate months in the archives.
|
240 |
+
</p>
|
241 |
+
</div>
|
242 |
+
<div class="section-level-extent" id="How-do-I-reply-to-a-message-in-the-archives_003f">
|
243 |
+
<h3 class="section">4.2 How do I reply to a message in the archives?</h3>
|
244 |
+
|
245 |
+
<p>Click the email link at the top of the message just under the subject
|
246 |
+
title. The link will provide the proper headers to keep the message
|
247 |
+
within the thread.
|
248 |
+
</p>
|
249 |
+
<p>Note that you must be subscribed to send a message to the ffmpeg-user or
|
250 |
+
libav-user mailing lists.
|
251 |
+
</p>
|
252 |
+
</div>
|
253 |
+
<div class="section-level-extent" id="How-do-I-search-the-archives_003f">
|
254 |
+
<h3 class="section">4.3 How do I search the archives?</h3>
|
255 |
+
|
256 |
+
<p>Perform a site search using your favorite search engine. Example:
|
257 |
+
</p>
|
258 |
+
<p><code class="t">site:lists.ffmpeg.org/pipermail/ffmpeg-user/ "search term"</code>
|
259 |
+
</p>
|
260 |
+
</div>
|
261 |
+
</div>
|
262 |
+
<div class="chapter-level-extent" id="Other">
|
263 |
+
<h2 class="chapter">5 Other</h2>
|
264 |
+
|
265 |
+
<ul class="mini-toc">
|
266 |
+
<li><a href="#Is-there-an-alternative-to-the-mailing-list_003f" accesskey="1">Is there an alternative to the mailing list?</a></li>
|
267 |
+
<li><a href="#What-is-top_002dposting_003f-1" accesskey="2">What is top-posting?</a></li>
|
268 |
+
<li><a href="#What-is-the-message-size-limit_003f-1" accesskey="3">What is the message size limit?</a></li>
|
269 |
+
<li><a href="#Where-can-I-upload-sample-files_003f" accesskey="4">Where can I upload sample files?</a></li>
|
270 |
+
<li><a href="#Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" accesskey="5">Will I receive spam if I send and/or subscribe to a mailing list?</a></li>
|
271 |
+
<li><a href="#How-do-I-filter-mailing-list-messages_003f" accesskey="6">How do I filter mailing list messages?</a></li>
|
272 |
+
<li><a href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f-1" accesskey="7">How do I disable mail delivery without unsubscribing?</a></li>
|
273 |
+
<li><a href="#Why-is-the-mailing-list-munging-my-address_003f-1" accesskey="8">Why is the mailing list munging my address?</a></li>
|
274 |
+
</ul>
|
275 |
+
<div class="section-level-extent" id="Is-there-an-alternative-to-the-mailing-list_003f">
|
276 |
+
<h3 class="section">5.1 Is there an alternative to the mailing list?</h3>
|
277 |
+
|
278 |
+
<p>You can ask for help in the official <code class="t">#ffmpeg</code> IRC channel on Libera Chat.
|
279 |
+
</p>
|
280 |
+
<p>Some users prefer the third-party <a class="url" href="http://www.ffmpeg-archive.org/">Nabble</a>
|
281 |
+
interface which presents the mailing lists in a typical forum layout.
|
282 |
+
</p>
|
283 |
+
<p>There are also numerous third-party help sites such as
|
284 |
+
<a class="url" href="https://superuser.com/tags/ffmpeg">Super User</a> and
|
285 |
+
<a class="url" href="https://www.reddit.com/r/ffmpeg/">r/ffmpeg on reddit</a>.
|
286 |
+
</p>
|
287 |
+
<a class="anchor" id="What-is-top_002dposting_003f"></a></div>
|
288 |
+
<div class="section-level-extent" id="What-is-top_002dposting_003f-1">
|
289 |
+
<h3 class="section">5.2 What is top-posting?</h3>
|
290 |
+
|
291 |
+
<p>See <a class="url" href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">https://en.wikipedia.org/wiki/Posting_style#Top-posting</a>.
|
292 |
+
</p>
|
293 |
+
<p>Instead, use trimmed interleaved/inline replies (<a class="url" href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/2017-April/035849.html">example</a>).
|
294 |
+
</p>
|
295 |
+
<a class="anchor" id="What-is-the-message-size-limit_003f"></a></div>
|
296 |
+
<div class="section-level-extent" id="What-is-the-message-size-limit_003f-1">
|
297 |
+
<h3 class="section">5.3 What is the message size limit?</h3>
|
298 |
+
|
299 |
+
<p>The message size limit is 1000 kilobytes. Please provide links to larger files
|
300 |
+
instead of attaching them.
|
301 |
+
</p>
|
302 |
+
</div>
|
303 |
+
<div class="section-level-extent" id="Where-can-I-upload-sample-files_003f">
|
304 |
+
<h3 class="section">5.4 Where can I upload sample files?</h3>
|
305 |
+
|
306 |
+
<p>Anywhere that is not too annoying for us to use.
|
307 |
+
</p>
|
308 |
+
<p>Google Drive and Dropbox are acceptable if you need a file host, and
|
309 |
+
<a class="url" href="https://0x0.st/">0x0.st</a> is good for files under 256 MiB.
|
310 |
+
</p>
|
311 |
+
<p>Small, short samples are preferred if possible.
|
312 |
+
</p>
|
313 |
+
</div>
|
314 |
+
<div class="section-level-extent" id="Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f">
|
315 |
+
<h3 class="section">5.5 Will I receive spam if I send and/or subscribe to a mailing list?</h3>
|
316 |
+
|
317 |
+
<p>Highly unlikely.
|
318 |
+
</p>
|
319 |
+
<ul class="itemize mark-bullet">
|
320 |
+
<li>The list of subscribed users is not public.
|
321 |
+
|
322 |
+
</li><li>Email addresses in the archives are obfuscated.
|
323 |
+
|
324 |
+
</li><li>Several unique test email accounts were utilized and none have yet
|
325 |
+
received any spam.
|
326 |
+
</li></ul>
|
327 |
+
|
328 |
+
<p>However, you may see a spam in the mailing lists on rare occasions:
|
329 |
+
</p>
|
330 |
+
<ul class="itemize mark-bullet">
|
331 |
+
<li>Spam in the moderation queue may be accidentally approved due to human
|
332 |
+
error.
|
333 |
+
|
334 |
+
</li><li>There have been a few messages from subscribed users who had their own
|
335 |
+
email addresses hacked and spam messages from (or appearing to be from)
|
336 |
+
the hacked account were sent to their contacts (a mailing list being a
|
337 |
+
contact in these cases).
|
338 |
+
|
339 |
+
</li><li>If you are subscribed to the bug tracker mailing list (ffmpeg-trac) you
|
340 |
+
may see the occasional spam as a false bug report, but we take measures
|
341 |
+
to try to prevent this.
|
342 |
+
</li></ul>
|
343 |
+
|
344 |
+
</div>
|
345 |
+
<div class="section-level-extent" id="How-do-I-filter-mailing-list-messages_003f">
|
346 |
+
<h3 class="section">5.6 How do I filter mailing list messages?</h3>
|
347 |
+
|
348 |
+
<p>Use the <em class="emph">List-Id</em>. For example, the ffmpeg-user mailing list is
|
349 |
+
<code class="t">ffmpeg-user.ffmpeg.org</code>. You can view the List-Id in the raw message
|
350 |
+
or headers.
|
351 |
+
</p>
|
352 |
+
<p>You can then filter the mailing list messages to their own folder.
|
353 |
+
</p>
|
354 |
+
<a class="anchor" id="How-do-I-disable-mail-delivery-without-unsubscribing_003f"></a></div>
|
355 |
+
<div class="section-level-extent" id="How-do-I-disable-mail-delivery-without-unsubscribing_003f-1">
|
356 |
+
<h3 class="section">5.7 How do I disable mail delivery without unsubscribing?</h3>
|
357 |
+
|
358 |
+
<p>Sometimes you may want to temporarily stop receiving all mailing list
|
359 |
+
messages. This "vacation mode" is simple to do:
|
360 |
+
</p>
|
361 |
+
<ol class="enumerate">
|
362 |
+
<li> Go to the <a class="url" href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>
|
363 |
+
|
364 |
+
</li><li> Enter your email address in the box at very bottom of the page and click the
|
365 |
+
<em class="emph">Unsubscribe or edit options</em> box.
|
366 |
+
|
367 |
+
</li><li> Enter your password and click the <em class="emph">Log in</em> button.
|
368 |
+
|
369 |
+
</li><li> Look for the <em class="emph">Mail delivery</em> option. Here you can disable/enable mail
|
370 |
+
delivery. If you check <em class="emph">Set globally</em> it will apply your choice to all
|
371 |
+
other FFmpeg mailing lists you are subscribed to.
|
372 |
+
</li></ol>
|
373 |
+
|
374 |
+
<p>Alternatively, from your subscribed address, send a message to <a class="email" href="mailto:[email protected]">[email protected]</a>
|
375 |
+
with the subject <em class="emph">set delivery off</em>. To re-enable mail delivery send a
|
376 |
+
message to <a class="email" href="mailto:[email protected]">[email protected]</a> with the subject
|
377 |
+
<em class="emph">set delivery on</em>.
|
378 |
+
</p>
|
379 |
+
<a class="anchor" id="Why-is-the-mailing-list-munging-my-address_003f"></a></div>
|
380 |
+
<div class="section-level-extent" id="Why-is-the-mailing-list-munging-my-address_003f-1">
|
381 |
+
<h3 class="section">5.8 Why is the mailing list munging my address?</h3>
|
382 |
+
|
383 |
+
<p>This is due to subscribers that use an email service with a DMARC reject policy
|
384 |
+
which adds difficulties to mailing list operators.
|
385 |
+
</p>
|
386 |
+
<p>The mailing list must re-write (munge) the <em class="emph">From:</em> header for such users;
|
387 |
+
otherwise their email service will reject and bounce the message resulting in
|
388 |
+
automatic unsubscribing from the mailing list.
|
389 |
+
</p>
|
390 |
+
<p>When sending a message these users will see <em class="emph">via <mailing list name></em>
|
391 |
+
added to their name and the <em class="emph">From:</em> address munged to the address of
|
392 |
+
the particular mailing list.
|
393 |
+
</p>
|
394 |
+
<p>If you want to avoid this then please use a different email service.
|
395 |
+
</p>
|
396 |
+
<p>Note that ffmpeg-devel does not apply any munging as it causes issues with
|
397 |
+
patch authorship. As a result users with an email service with a DMARC reject
|
398 |
+
policy may be automatically unsubscribed due to rejected and bounced messages.
|
399 |
+
</p>
|
400 |
+
</div>
|
401 |
+
</div>
|
402 |
+
<div class="chapter-level-extent" id="Rules-and-Etiquette">
|
403 |
+
<h2 class="chapter">6 Rules and Etiquette</h2>
|
404 |
+
|
405 |
+
<ul class="mini-toc">
|
406 |
+
<li><a href="#What-are-the-rules-and-the-proper-etiquette_003f" accesskey="1">What are the rules and the proper etiquette?</a></li>
|
407 |
+
</ul>
|
408 |
+
<div class="section-level-extent" id="What-are-the-rules-and-the-proper-etiquette_003f">
|
409 |
+
<h3 class="section">6.1 What are the rules and the proper etiquette?</h3>
|
410 |
+
|
411 |
+
<p>There may seem to be many things to remember, but we want to help and
|
412 |
+
following these guidelines will allow you to get answers more quickly
|
413 |
+
and help avoid getting ignored.
|
414 |
+
</p>
|
415 |
+
<ul class="itemize mark-bullet">
|
416 |
+
<li>Always show your actual, unscripted <code class="command">ffmpeg</code> command and the
|
417 |
+
complete, uncut console output from your command.
|
418 |
+
|
419 |
+
</li><li>Use the most simple and minimal command that still shows the issue you
|
420 |
+
are encountering.
|
421 |
+
|
422 |
+
</li><li>Provide all necessary information so others can attempt to duplicate
|
423 |
+
your issue. This includes the actual command, complete uncut console
|
424 |
+
output, and any inputs that are required to duplicate the issue.
|
425 |
+
|
426 |
+
</li><li>Use the latest <code class="command">ffmpeg</code> build you can get. See the <a class="url" href="https://ffmpeg.org/download.html">FFmpeg Download</a>
|
427 |
+
page for links to recent builds for Linux, macOS, and Windows. Or
|
428 |
+
compile from the current git master branch.
|
429 |
+
|
430 |
+
</li><li>Avoid <a class="url" href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">top-posting</a>.
|
431 |
+
Also see <a class="ref" href="#What-is-top_002dposting_003f">What is top-posting?</a>
|
432 |
+
|
433 |
+
</li><li>Avoid hijacking threads. Thread hijacking is replying to a message and
|
434 |
+
changing the subject line to something unrelated to the original thread.
|
435 |
+
Most email clients will still show the renamed message under the
|
436 |
+
original thread. This can be confusing and these types of messages are
|
437 |
+
often ignored.
|
438 |
+
|
439 |
+
</li><li>Do not send screenshots. Copy and paste console text instead of making
|
440 |
+
screenshots of the text.
|
441 |
+
|
442 |
+
</li><li>Avoid sending email disclaimers and legalese if possible as this is a
|
443 |
+
public list.
|
444 |
+
|
445 |
+
</li><li>Avoid using the <code class="code">-loglevel debug</code>, <code class="code">-loglevel quiet</code>, and
|
446 |
+
<code class="command">-hide_banner</code> options unless requested to do so.
|
447 |
+
|
448 |
+
</li><li>If you attach files avoid compressing small files. Uncompressed is
|
449 |
+
preferred.
|
450 |
+
|
451 |
+
</li><li>Please do not send HTML-only messages. The mailing list will ignore the
|
452 |
+
HTML component of your message. Most mail clients will automatically
|
453 |
+
include a text component: this is what the mailing list will use.
|
454 |
+
|
455 |
+
</li><li>Configuring your mail client to break lines after 70 or so characters is
|
456 |
+
recommended.
|
457 |
+
|
458 |
+
</li><li>Avoid sending the same message to multiple mailing lists.
|
459 |
+
|
460 |
+
</li><li>Please follow our <a class="url" href="https://ffmpeg.org/community.html#Code-of-conduct">Code of Conduct</a>.
|
461 |
+
</li></ul>
|
462 |
+
|
463 |
+
</div>
|
464 |
+
</div>
|
465 |
+
<div class="chapter-level-extent" id="Help">
|
466 |
+
<h2 class="chapter">7 Help</h2>
|
467 |
+
|
468 |
+
<ul class="mini-toc">
|
469 |
+
<li><a href="#Why-am-I-not-receiving-any-messages_003f" accesskey="1">Why am I not receiving any messages?</a></li>
|
470 |
+
<li><a href="#Why-are-my-sent-messages-not-showing-up_003f" accesskey="2">Why are my sent messages not showing up?</a></li>
|
471 |
+
<li><a href="#Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1" accesskey="3">Why do I keep getting unsubscribed from ffmpeg-devel?</a></li>
|
472 |
+
<li><a href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" accesskey="4">Who do I contact if I have a problem with the mailing list?</a></li>
|
473 |
+
</ul>
|
474 |
+
<div class="section-level-extent" id="Why-am-I-not-receiving-any-messages_003f">
|
475 |
+
<h3 class="section">7.1 Why am I not receiving any messages?</h3>
|
476 |
+
|
477 |
+
<p>Some email providers have blacklists or spam filters that block or mark
|
478 |
+
the mailing list messages as false positives. Unfortunately, the user is
|
479 |
+
often not aware of this and is often out of their control.
|
480 |
+
</p>
|
481 |
+
<p>When possible we attempt to notify the provider to be removed from the
|
482 |
+
blacklists or filters.
|
483 |
+
</p>
|
484 |
+
</div>
|
485 |
+
<div class="section-level-extent" id="Why-are-my-sent-messages-not-showing-up_003f">
|
486 |
+
<h3 class="section">7.2 Why are my sent messages not showing up?</h3>
|
487 |
+
|
488 |
+
<p>Excluding <a class="ref" href="#Why-is-my-message-awaiting-moderator-approval_003f">messages that are held in the moderation queue</a>
|
489 |
+
there are a few other reasons why your messages may fail to appear:
|
490 |
+
</p>
|
491 |
+
<ul class="itemize mark-bullet">
|
492 |
+
<li>HTML-only messages are ignored by the mailing lists. Most mail clients
|
493 |
+
automatically include a text component alongside HTML email: this is what
|
494 |
+
the mailing list will use. If it does not then consider your client to be
|
495 |
+
broken, because sending a text component along with the HTML component to
|
496 |
+
form a multi-part message is recommended by email standards.
|
497 |
+
|
498 |
+
</li><li>Check your spam folder.
|
499 |
+
</li></ul>
|
500 |
+
|
501 |
+
<a class="anchor" id="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f"></a></div>
|
502 |
+
<div class="section-level-extent" id="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1">
|
503 |
+
<h3 class="section">7.3 Why do I keep getting unsubscribed from ffmpeg-devel?</h3>
|
504 |
+
|
505 |
+
<p>Users with an email service that has a DMARC reject or quarantine policy may be
|
506 |
+
automatically unsubscribed from the ffmpeg-devel mailing list due to the mailing
|
507 |
+
list messages being continuously rejected and bounced back.
|
508 |
+
</p>
|
509 |
+
<p>Consider using a different email service.
|
510 |
+
</p>
|
511 |
+
<a class="anchor" id="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f"></a></div>
|
512 |
+
<div class="section-level-extent" id="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1">
|
513 |
+
<h3 class="section">7.4 Who do I contact if I have a problem with the mailing list?</h3>
|
514 |
+
|
515 |
+
<p>Send a message to <a class="email" href="mailto:[email protected]">[email protected]</a>.
|
516 |
+
</p>
|
517 |
+
</div>
|
518 |
+
</div>
|
519 |
+
</div>
|
520 |
+
|
521 |
+
|
522 |
+
|
523 |
+
</body>
|
524 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/nut.html
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>NUT</title>
|
7 |
+
|
8 |
+
<meta name="description" content="NUT">
|
9 |
+
<meta name="keywords" content="NUT">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.toc-numbered-mark {list-style: none}
|
20 |
+
-->
|
21 |
+
</style>
|
22 |
+
|
23 |
+
|
24 |
+
</head>
|
25 |
+
|
26 |
+
<body lang="en">
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
40 |
+
<li><a id="toc-Modes" href="#Modes">2 Modes</a>
|
41 |
+
<ul class="toc-numbered-mark">
|
42 |
+
<li><a id="toc-BROADCAST" href="#BROADCAST">2.1 BROADCAST</a></li>
|
43 |
+
<li><a id="toc-PIPE" href="#PIPE">2.2 PIPE</a></li>
|
44 |
+
</ul></li>
|
45 |
+
<li><a id="toc-Container_002dspecific-codec-tags" href="#Container_002dspecific-codec-tags">3 Container-specific codec tags</a>
|
46 |
+
<ul class="toc-numbered-mark">
|
47 |
+
<li><a id="toc-Generic-raw-YUVA-formats" href="#Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></li>
|
48 |
+
<li><a id="toc-Raw-Audio" href="#Raw-Audio">3.2 Raw Audio</a></li>
|
49 |
+
<li><a id="toc-Subtitles" href="#Subtitles">3.3 Subtitles</a></li>
|
50 |
+
<li><a id="toc-Raw-Data" href="#Raw-Data">3.4 Raw Data</a></li>
|
51 |
+
<li><a id="toc-Codecs" href="#Codecs">3.5 Codecs</a></li>
|
52 |
+
</ul></li>
|
53 |
+
</ul>
|
54 |
+
</div>
|
55 |
+
</div>
|
56 |
+
<div class="chapter-level-extent" id="Description">
|
57 |
+
<h2 class="chapter">1 Description</h2>
|
58 |
+
<p>NUT is a low overhead generic container format. It stores audio, video,
|
59 |
+
subtitle and user-defined streams in a simple, yet efficient, way.
|
60 |
+
</p>
|
61 |
+
<p>It was created by a group of FFmpeg and MPlayer developers in 2003
|
62 |
+
and was finalized in 2008.
|
63 |
+
</p>
|
64 |
+
<p>The official nut specification is at svn://svn.mplayerhq.hu/nut
|
65 |
+
In case of any differences between this text and the official specification,
|
66 |
+
the official specification shall prevail.
|
67 |
+
</p>
|
68 |
+
</div>
|
69 |
+
<div class="chapter-level-extent" id="Modes">
|
70 |
+
<h2 class="chapter">2 Modes</h2>
|
71 |
+
<p>NUT has some variants signaled by using the flags field in its main header.
|
72 |
+
</p>
|
73 |
+
<table class="multitable">
|
74 |
+
<tbody><tr><td width="40%">BROADCAST</td><td width="40%">Extend the syncpoint to report the sender wallclock</td></tr>
|
75 |
+
<tr><td width="40%">PIPE</td><td width="40%">Omit completely the syncpoint</td></tr>
|
76 |
+
</tbody>
|
77 |
+
</table>
|
78 |
+
|
79 |
+
<ul class="mini-toc">
|
80 |
+
<li><a href="#BROADCAST" accesskey="1">BROADCAST</a></li>
|
81 |
+
<li><a href="#PIPE" accesskey="2">PIPE</a></li>
|
82 |
+
</ul>
|
83 |
+
<div class="section-level-extent" id="BROADCAST">
|
84 |
+
<h3 class="section">2.1 BROADCAST</h3>
|
85 |
+
|
86 |
+
<p>The BROADCAST variant provides a secondary time reference to facilitate
|
87 |
+
detecting endpoint latency and network delays.
|
88 |
+
It assumes all the endpoint clocks are synchronized.
|
89 |
+
To be used in real-time scenarios.
|
90 |
+
</p>
|
91 |
+
</div>
|
92 |
+
<div class="section-level-extent" id="PIPE">
|
93 |
+
<h3 class="section">2.2 PIPE</h3>
|
94 |
+
|
95 |
+
<p>The PIPE variant assumes NUT is used as non-seekable intermediate container,
|
96 |
+
by not using syncpoint removes unneeded overhead and reduces the overall
|
97 |
+
memory usage.
|
98 |
+
</p>
|
99 |
+
</div>
|
100 |
+
</div>
|
101 |
+
<div class="chapter-level-extent" id="Container_002dspecific-codec-tags">
|
102 |
+
<h2 class="chapter">3 Container-specific codec tags</h2>
|
103 |
+
|
104 |
+
<ul class="mini-toc">
|
105 |
+
<li><a href="#Generic-raw-YUVA-formats" accesskey="1">Generic raw YUVA formats</a></li>
|
106 |
+
<li><a href="#Raw-Audio" accesskey="2">Raw Audio</a></li>
|
107 |
+
<li><a href="#Subtitles" accesskey="3">Subtitles</a></li>
|
108 |
+
<li><a href="#Raw-Data" accesskey="4">Raw Data</a></li>
|
109 |
+
<li><a href="#Codecs" accesskey="5">Codecs</a></li>
|
110 |
+
</ul>
|
111 |
+
<div class="section-level-extent" id="Generic-raw-YUVA-formats">
|
112 |
+
<h3 class="section">3.1 Generic raw YUVA formats</h3>
|
113 |
+
|
114 |
+
<p>Since many exotic planar YUVA pixel formats are not considered by
|
115 |
+
the AVI/QuickTime FourCC lists, the following scheme is adopted for
|
116 |
+
representing them.
|
117 |
+
</p>
|
118 |
+
<p>The first two bytes can contain the values:
|
119 |
+
Y1 = only Y
|
120 |
+
Y2 = Y+A
|
121 |
+
Y3 = YUV
|
122 |
+
Y4 = YUVA
|
123 |
+
</p>
|
124 |
+
<p>The third byte represents the width and height chroma subsampling
|
125 |
+
values for the UV planes, that is the amount to shift the luma
|
126 |
+
width/height right to find the chroma width/height.
|
127 |
+
</p>
|
128 |
+
<p>The fourth byte is the number of bits used (8, 16, ...).
|
129 |
+
</p>
|
130 |
+
<p>If the order of bytes is inverted, that means that each component has
|
131 |
+
to be read big-endian.
|
132 |
+
</p>
|
133 |
+
</div>
|
134 |
+
<div class="section-level-extent" id="Raw-Audio">
|
135 |
+
<h3 class="section">3.2 Raw Audio</h3>
|
136 |
+
|
137 |
+
<table class="multitable">
|
138 |
+
<tbody><tr><td width="40%">ALAW</td><td width="40%">A-LAW</td></tr>
|
139 |
+
<tr><td width="40%">ULAW</td><td width="40%">MU-LAW</td></tr>
|
140 |
+
<tr><td width="40%">P<type><interleaving><bits></td><td width="40%">little-endian PCM</td></tr>
|
141 |
+
<tr><td width="40%"><bits><interleaving><type>P</td><td width="40%">big-endian PCM</td></tr>
|
142 |
+
</tbody>
|
143 |
+
</table>
|
144 |
+
|
145 |
+
<p><type> is S for signed integer, U for unsigned integer, F for IEEE float
|
146 |
+
<interleaving> is D for default, P is for planar.
|
147 |
+
<bits> is 8/16/24/32
|
148 |
+
</p>
|
149 |
+
<div class="example">
|
150 |
+
<pre class="example-preformatted">PFD[32] would for example be signed 32 bit little-endian IEEE float
|
151 |
+
</pre></div>
|
152 |
+
|
153 |
+
</div>
|
154 |
+
<div class="section-level-extent" id="Subtitles">
|
155 |
+
<h3 class="section">3.3 Subtitles</h3>
|
156 |
+
|
157 |
+
<table class="multitable">
|
158 |
+
<tbody><tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
159 |
+
<tr><td width="40%">SSA[0]</td><td width="40%">SubStation Alpha</td></tr>
|
160 |
+
<tr><td width="40%">DVDS</td><td width="40%">DVD subtitles</td></tr>
|
161 |
+
<tr><td width="40%">DVBS</td><td width="40%">DVB subtitles</td></tr>
|
162 |
+
</tbody>
|
163 |
+
</table>
|
164 |
+
|
165 |
+
</div>
|
166 |
+
<div class="section-level-extent" id="Raw-Data">
|
167 |
+
<h3 class="section">3.4 Raw Data</h3>
|
168 |
+
|
169 |
+
<table class="multitable">
|
170 |
+
<tbody><tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
171 |
+
</tbody>
|
172 |
+
</table>
|
173 |
+
|
174 |
+
</div>
|
175 |
+
<div class="section-level-extent" id="Codecs">
|
176 |
+
<h3 class="section">3.5 Codecs</h3>
|
177 |
+
|
178 |
+
<table class="multitable">
|
179 |
+
<tbody><tr><td width="40%">3IV1</td><td width="40%">non-compliant MPEG-4 generated by old 3ivx</td></tr>
|
180 |
+
<tr><td width="40%">ASV1</td><td width="40%">Asus Video</td></tr>
|
181 |
+
<tr><td width="40%">ASV2</td><td width="40%">Asus Video 2</td></tr>
|
182 |
+
<tr><td width="40%">CVID</td><td width="40%">Cinepak</td></tr>
|
183 |
+
<tr><td width="40%">CYUV</td><td width="40%">Creative YUV</td></tr>
|
184 |
+
<tr><td width="40%">DIVX</td><td width="40%">non-compliant MPEG-4 generated by old DivX</td></tr>
|
185 |
+
<tr><td width="40%">DUCK</td><td width="40%">Truemotion 1</td></tr>
|
186 |
+
<tr><td width="40%">FFV1</td><td width="40%">FFmpeg video 1</td></tr>
|
187 |
+
<tr><td width="40%">FFVH</td><td width="40%">FFmpeg Huffyuv</td></tr>
|
188 |
+
<tr><td width="40%">H261</td><td width="40%">ITU H.261</td></tr>
|
189 |
+
<tr><td width="40%">H262</td><td width="40%">ITU H.262</td></tr>
|
190 |
+
<tr><td width="40%">H263</td><td width="40%">ITU H.263</td></tr>
|
191 |
+
<tr><td width="40%">H264</td><td width="40%">ITU H.264</td></tr>
|
192 |
+
<tr><td width="40%">HFYU</td><td width="40%">Huffyuv</td></tr>
|
193 |
+
<tr><td width="40%">I263</td><td width="40%">Intel H.263</td></tr>
|
194 |
+
<tr><td width="40%">IV31</td><td width="40%">Indeo 3.1</td></tr>
|
195 |
+
<tr><td width="40%">IV32</td><td width="40%">Indeo 3.2</td></tr>
|
196 |
+
<tr><td width="40%">IV50</td><td width="40%">Indeo 5.0</td></tr>
|
197 |
+
<tr><td width="40%">LJPG</td><td width="40%">ITU JPEG (lossless)</td></tr>
|
198 |
+
<tr><td width="40%">MJLS</td><td width="40%">ITU JPEG-LS</td></tr>
|
199 |
+
<tr><td width="40%">MJPG</td><td width="40%">ITU JPEG</td></tr>
|
200 |
+
<tr><td width="40%">MPG4</td><td width="40%">MS MPEG-4v1 (not ISO MPEG-4)</td></tr>
|
201 |
+
<tr><td width="40%">MP42</td><td width="40%">MS MPEG-4v2</td></tr>
|
202 |
+
<tr><td width="40%">MP43</td><td width="40%">MS MPEG-4v3</td></tr>
|
203 |
+
<tr><td width="40%">MP4V</td><td width="40%">ISO MPEG-4 Part 2 Video (from old encoders)</td></tr>
|
204 |
+
<tr><td width="40%">mpg1</td><td width="40%">ISO MPEG-1 Video</td></tr>
|
205 |
+
<tr><td width="40%">mpg2</td><td width="40%">ISO MPEG-2 Video</td></tr>
|
206 |
+
<tr><td width="40%">MRLE</td><td width="40%">MS RLE</td></tr>
|
207 |
+
<tr><td width="40%">MSVC</td><td width="40%">MS Video 1</td></tr>
|
208 |
+
<tr><td width="40%">RT21</td><td width="40%">Indeo 2.1</td></tr>
|
209 |
+
<tr><td width="40%">RV10</td><td width="40%">RealVideo 1.0</td></tr>
|
210 |
+
<tr><td width="40%">RV20</td><td width="40%">RealVideo 2.0</td></tr>
|
211 |
+
<tr><td width="40%">RV30</td><td width="40%">RealVideo 3.0</td></tr>
|
212 |
+
<tr><td width="40%">RV40</td><td width="40%">RealVideo 4.0</td></tr>
|
213 |
+
<tr><td width="40%">SNOW</td><td width="40%">FFmpeg Snow</td></tr>
|
214 |
+
<tr><td width="40%">SVQ1</td><td width="40%">Sorenson Video 1</td></tr>
|
215 |
+
<tr><td width="40%">SVQ3</td><td width="40%">Sorenson Video 3</td></tr>
|
216 |
+
<tr><td width="40%">theo</td><td width="40%">Xiph Theora</td></tr>
|
217 |
+
<tr><td width="40%">TM20</td><td width="40%">Truemotion 2.0</td></tr>
|
218 |
+
<tr><td width="40%">UMP4</td><td width="40%">non-compliant MPEG-4 generated by UB Video MPEG-4</td></tr>
|
219 |
+
<tr><td width="40%">VCR1</td><td width="40%">ATI VCR1</td></tr>
|
220 |
+
<tr><td width="40%">VP30</td><td width="40%">VP 3.0</td></tr>
|
221 |
+
<tr><td width="40%">VP31</td><td width="40%">VP 3.1</td></tr>
|
222 |
+
<tr><td width="40%">VP50</td><td width="40%">VP 5.0</td></tr>
|
223 |
+
<tr><td width="40%">VP60</td><td width="40%">VP 6.0</td></tr>
|
224 |
+
<tr><td width="40%">VP61</td><td width="40%">VP 6.1</td></tr>
|
225 |
+
<tr><td width="40%">VP62</td><td width="40%">VP 6.2</td></tr>
|
226 |
+
<tr><td width="40%">VP70</td><td width="40%">VP 7.0</td></tr>
|
227 |
+
<tr><td width="40%">WMV1</td><td width="40%">MS WMV7</td></tr>
|
228 |
+
<tr><td width="40%">WMV2</td><td width="40%">MS WMV8</td></tr>
|
229 |
+
<tr><td width="40%">WMV3</td><td width="40%">MS WMV9</td></tr>
|
230 |
+
<tr><td width="40%">WV1F</td><td width="40%">non-compliant MPEG-4 generated by ?</td></tr>
|
231 |
+
<tr><td width="40%">WVC1</td><td width="40%">VC-1</td></tr>
|
232 |
+
<tr><td width="40%">XVID</td><td width="40%">non-compliant MPEG-4 generated by old Xvid</td></tr>
|
233 |
+
<tr><td width="40%">XVIX</td><td width="40%">non-compliant MPEG-4 generated by old Xvid with interlacing bug</td></tr>
|
234 |
+
</tbody>
|
235 |
+
</table>
|
236 |
+
|
237 |
+
</div>
|
238 |
+
</div>
|
239 |
+
</div>
|
240 |
+
|
241 |
+
|
242 |
+
|
243 |
+
</body>
|
244 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/platform.html
ADDED
@@ -0,0 +1,434 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<!-- Created by GNU Texinfo 7.0.1, https://www.gnu.org/software/texinfo/ -->
|
4 |
+
<head>
|
5 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
6 |
+
<title>Platform Specific Information</title>
|
7 |
+
|
8 |
+
<meta name="description" content="Platform Specific Information">
|
9 |
+
<meta name="keywords" content="Platform Specific Information">
|
10 |
+
<meta name="resource-type" content="document">
|
11 |
+
<meta name="distribution" content="global">
|
12 |
+
<meta name="Generator" content="makeinfo">
|
13 |
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
14 |
+
|
15 |
+
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
|
16 |
+
<style type="text/css">
|
17 |
+
<!--
|
18 |
+
div.example {margin-left: 3.2em}
|
19 |
+
ul.mark-bullet {list-style-type: disc}
|
20 |
+
ul.toc-numbered-mark {list-style: none}
|
21 |
+
-->
|
22 |
+
</style>
|
23 |
+
|
24 |
+
|
25 |
+
</head>
|
26 |
+
|
27 |
+
<body lang="en">
|
28 |
+
|
29 |
+
|
30 |
+
<div class="top-level-extent" id="SEC_Top">
|
31 |
+
|
32 |
+
|
33 |
+
<div class="element-contents" id="SEC_Contents">
|
34 |
+
<h2 class="contents-heading">Table of Contents</h2>
|
35 |
+
|
36 |
+
<div class="contents">
|
37 |
+
|
38 |
+
<ul class="toc-numbered-mark">
|
39 |
+
<li><a id="toc-Unix_002dlike" href="#Unix_002dlike">1 Unix-like</a>
|
40 |
+
<ul class="toc-numbered-mark">
|
41 |
+
<li><a id="toc-Advanced-linking-configuration" href="#Advanced-linking-configuration">1.1 Advanced linking configuration</a></li>
|
42 |
+
<li><a id="toc-BSD" href="#BSD">1.2 BSD</a></li>
|
43 |
+
<li><a id="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">1.3 (Open)Solaris</a></li>
|
44 |
+
<li><a id="toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029" href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.4 Darwin (Mac OS X, iPhone)</a></li>
|
45 |
+
</ul></li>
|
46 |
+
<li><a id="toc-DOS" href="#DOS">2 DOS</a></li>
|
47 |
+
<li><a id="toc-OS_002f2" href="#OS_002f2">3 OS/2</a></li>
|
48 |
+
<li><a id="toc-Windows" href="#Windows">4 Windows</a>
|
49 |
+
<ul class="toc-numbered-mark">
|
50 |
+
<li><a id="toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a>
|
51 |
+
<ul class="toc-numbered-mark">
|
52 |
+
<li><a id="toc-Native-Windows-compilation-using-MSYS2" href="#Native-Windows-compilation-using-MSYS2">4.1.1 Native Windows compilation using MSYS2</a></li>
|
53 |
+
</ul></li>
|
54 |
+
<li><a id="toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a>
|
55 |
+
<ul class="toc-numbered-mark">
|
56 |
+
<li><a id="toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></li>
|
57 |
+
</ul></li>
|
58 |
+
<li><a id="toc-Cross-compilation-for-Windows-with-Linux-1" href="#Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></li>
|
59 |
+
<li><a id="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></li>
|
60 |
+
<li><a id="toc-Crosscompilation-for-Windows-under-Cygwin" href="#Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></li>
|
61 |
+
</ul></li>
|
62 |
+
</ul>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
<div class="chapter-level-extent" id="Unix_002dlike">
|
66 |
+
<h2 class="chapter">1 Unix-like</h2>
|
67 |
+
|
68 |
+
<p>Some parts of FFmpeg cannot be built with version 2.15 of the GNU
|
69 |
+
assembler which is still provided by a few AMD64 distributions. To
|
70 |
+
make sure your compiler really uses the required version of gas
|
71 |
+
after a binutils upgrade, run:
|
72 |
+
</p>
|
73 |
+
<div class="example">
|
74 |
+
<pre class="example-preformatted">$(gcc -print-prog-name=as) --version
|
75 |
+
</pre></div>
|
76 |
+
|
77 |
+
<p>If not, then you should install a different compiler that has no
|
78 |
+
hard-coded path to gas. In the worst case pass <code class="code">--disable-asm</code>
|
79 |
+
to configure.
|
80 |
+
</p>
|
81 |
+
<ul class="mini-toc">
|
82 |
+
<li><a href="#Advanced-linking-configuration" accesskey="1">Advanced linking configuration</a></li>
|
83 |
+
<li><a href="#BSD" accesskey="2">BSD</a></li>
|
84 |
+
<li><a href="#g_t_0028Open_0029Solaris" accesskey="3">(Open)Solaris</a></li>
|
85 |
+
<li><a href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029" accesskey="4">Darwin (Mac OS X, iPhone)</a></li>
|
86 |
+
</ul>
|
87 |
+
<div class="section-level-extent" id="Advanced-linking-configuration">
|
88 |
+
<h3 class="section">1.1 Advanced linking configuration</h3>
|
89 |
+
|
90 |
+
<p>If you compiled FFmpeg libraries statically and you want to use them to
|
91 |
+
build your own shared library, you may need to force PIC support (with
|
92 |
+
<code class="code">--enable-pic</code> during FFmpeg configure) and add the following option
|
93 |
+
to your project LDFLAGS:
|
94 |
+
</p>
|
95 |
+
<div class="example">
|
96 |
+
<pre class="example-preformatted">-Wl,-Bsymbolic
|
97 |
+
</pre></div>
|
98 |
+
|
99 |
+
<p>If your target platform requires position independent binaries, you should
|
100 |
+
pass the correct linking flag (e.g. <code class="code">-pie</code>) to <code class="code">--extra-ldexeflags</code>.
|
101 |
+
</p>
|
102 |
+
</div>
|
103 |
+
<div class="section-level-extent" id="BSD">
|
104 |
+
<h3 class="section">1.2 BSD</h3>
|
105 |
+
|
106 |
+
<p>BSD make will not build FFmpeg, you need to install and use GNU Make
|
107 |
+
(<code class="command">gmake</code>).
|
108 |
+
</p>
|
109 |
+
</div>
|
110 |
+
<div class="section-level-extent" id="g_t_0028Open_0029Solaris">
|
111 |
+
<h3 class="section">1.3 (Open)Solaris</h3>
|
112 |
+
|
113 |
+
<p>GNU Make is required to build FFmpeg, so you have to invoke (<code class="command">gmake</code>),
|
114 |
+
standard Solaris Make will not work. When building with a non-c99 front-end
|
115 |
+
(gcc, generic suncc) add either <code class="code">--extra-libs=/usr/lib/values-xpg6.o</code>
|
116 |
+
or <code class="code">--extra-libs=/usr/lib/64/values-xpg6.o</code> to the configure options
|
117 |
+
since the libc is not c99-compliant by default. The probes performed by
|
118 |
+
configure may raise an exception leading to the death of configure itself
|
119 |
+
due to a bug in the system shell. Simply invoke a different shell such as
|
120 |
+
bash directly to work around this:
|
121 |
+
</p>
|
122 |
+
<div class="example">
|
123 |
+
<pre class="example-preformatted">bash ./configure
|
124 |
+
</pre></div>
|
125 |
+
|
126 |
+
<a class="anchor" id="Darwin"></a></div>
|
127 |
+
<div class="section-level-extent" id="Darwin-_0028Mac-OS-X_002c-iPhone_0029">
|
128 |
+
<h3 class="section">1.4 Darwin (Mac OS X, iPhone)</h3>
|
129 |
+
|
130 |
+
<p>The toolchain provided with Xcode is sufficient to build the basic
|
131 |
+
unaccelerated code.
|
132 |
+
</p>
|
133 |
+
<p>Mac OS X on PowerPC or ARM (iPhone) requires a preprocessor from
|
134 |
+
<a class="url" href="https://github.com/FFmpeg/gas-preprocessor">https://github.com/FFmpeg/gas-preprocessor</a> or
|
135 |
+
<a class="url" href="https://github.com/yuvi/gas-preprocessor">https://github.com/yuvi/gas-preprocessor</a>(currently outdated) to build the optimized
|
136 |
+
assembly functions. Put the Perl script somewhere
|
137 |
+
in your PATH, FFmpeg’s configure will pick it up automatically.
|
138 |
+
</p>
|
139 |
+
<p>Mac OS X on amd64 and x86 requires <code class="command">nasm</code> to build most of the
|
140 |
+
optimized assembly functions. <a class="uref" href="http://www.finkproject.org/">Fink</a>,
|
141 |
+
<a class="uref" href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>,
|
142 |
+
<a class="uref" href="https://mxcl.github.com/homebrew/">Homebrew</a>
|
143 |
+
or <a class="uref" href="http://www.macports.org">MacPorts</a> can easily provide it.
|
144 |
+
</p>
|
145 |
+
|
146 |
+
</div>
|
147 |
+
</div>
|
148 |
+
<div class="chapter-level-extent" id="DOS">
|
149 |
+
<h2 class="chapter">2 DOS</h2>
|
150 |
+
|
151 |
+
<p>Using a cross-compiler is preferred for various reasons.
|
152 |
+
<a class="url" href="http://www.delorie.com/howto/djgpp/linux-x-djgpp.html">http://www.delorie.com/howto/djgpp/linux-x-djgpp.html</a>
|
153 |
+
</p>
|
154 |
+
|
155 |
+
</div>
|
156 |
+
<div class="chapter-level-extent" id="OS_002f2">
|
157 |
+
<h2 class="chapter">3 OS/2</h2>
|
158 |
+
|
159 |
+
<p>For information about compiling FFmpeg on OS/2 see
|
160 |
+
<a class="url" href="http://www.edm2.com/index.php/FFmpeg">http://www.edm2.com/index.php/FFmpeg</a>.
|
161 |
+
</p>
|
162 |
+
|
163 |
+
</div>
|
164 |
+
<div class="chapter-level-extent" id="Windows">
|
165 |
+
<h2 class="chapter">4 Windows</h2>
|
166 |
+
|
167 |
+
<ul class="mini-toc">
|
168 |
+
<li><a href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" accesskey="1">Native Windows compilation using MinGW or MinGW-w64</a></li>
|
169 |
+
<li><a href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" accesskey="2">Microsoft Visual C++ or Intel C++ Compiler for Windows</a></li>
|
170 |
+
<li><a href="#Cross-compilation-for-Windows-with-Linux-1" accesskey="3">Cross compilation for Windows with Linux</a></li>
|
171 |
+
<li><a href="#Compilation-under-Cygwin" accesskey="4">Compilation under Cygwin</a></li>
|
172 |
+
<li><a href="#Crosscompilation-for-Windows-under-Cygwin" accesskey="5">Crosscompilation for Windows under Cygwin</a></li>
|
173 |
+
</ul>
|
174 |
+
<div class="section-level-extent" id="Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">
|
175 |
+
<h3 class="section">4.1 Native Windows compilation using MinGW or MinGW-w64</h3>
|
176 |
+
|
177 |
+
<p>FFmpeg can be built to run natively on Windows using the MinGW-w64
|
178 |
+
toolchain. Install the latest versions of MSYS2 and MinGW-w64 from
|
179 |
+
<a class="url" href="http://msys2.github.io/">http://msys2.github.io/</a> and/or <a class="url" href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>.
|
180 |
+
You can find detailed installation instructions in the download section and
|
181 |
+
the FAQ.
|
182 |
+
</p>
|
183 |
+
<p>Notes:
|
184 |
+
</p>
|
185 |
+
<ul class="itemize mark-bullet">
|
186 |
+
<li>Building for the MSYS environment is discouraged, MSYS2 provides a full
|
187 |
+
MinGW-w64 environment through <samp class="file">mingw64_shell.bat</samp> or
|
188 |
+
<samp class="file">mingw32_shell.bat</samp> that should be used instead of the environment
|
189 |
+
provided by <samp class="file">msys2_shell.bat</samp>.
|
190 |
+
|
191 |
+
</li><li>Building using MSYS2 can be sped up by disabling implicit rules in the
|
192 |
+
Makefile by calling <code class="code">make -r</code> instead of plain <code class="code">make</code>. This
|
193 |
+
speed up is close to non-existent for normal one-off builds and is only
|
194 |
+
noticeable when running make for a second time (for example during
|
195 |
+
<code class="code">make install</code>).
|
196 |
+
|
197 |
+
</li><li>In order to compile FFplay, you must have the MinGW development library
|
198 |
+
of <a class="uref" href="http://www.libsdl.org/">SDL</a> and <code class="code">pkg-config</code> installed.
|
199 |
+
|
200 |
+
</li><li>By using <code class="code">./configure --enable-shared</code> when configuring FFmpeg,
|
201 |
+
you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
|
202 |
+
libavformat) as DLLs.
|
203 |
+
|
204 |
+
</li></ul>
|
205 |
+
|
206 |
+
<ul class="mini-toc">
|
207 |
+
<li><a href="#Native-Windows-compilation-using-MSYS2" accesskey="1">Native Windows compilation using MSYS2</a></li>
|
208 |
+
</ul>
|
209 |
+
<div class="subsection-level-extent" id="Native-Windows-compilation-using-MSYS2">
|
210 |
+
<h4 class="subsection">4.1.1 Native Windows compilation using MSYS2</h4>
|
211 |
+
|
212 |
+
<p>The MSYS2 MinGW-w64 environment provides ready to use toolchains and dependencies
|
213 |
+
through <code class="command">pacman</code>.
|
214 |
+
</p>
|
215 |
+
<p>Make sure to use <samp class="file">mingw64_shell.bat</samp> or <samp class="file">mingw32_shell.bat</samp> to have
|
216 |
+
the correct MinGW-w64 environment. The default install provides shortcuts to
|
217 |
+
them under <code class="command">MinGW-w64 Win64 Shell</code> and <code class="command">MinGW-w64 Win32 Shell</code>.
|
218 |
+
</p>
|
219 |
+
<div class="example">
|
220 |
+
<pre class="example-preformatted"># normal msys2 packages
|
221 |
+
pacman -S make pkgconf diffutils
|
222 |
+
|
223 |
+
# mingw-w64 packages and toolchains
|
224 |
+
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
|
225 |
+
</pre></div>
|
226 |
+
|
227 |
+
<p>To target 32 bits replace <code class="code">x86_64</code> with <code class="code">i686</code> in the command above.
|
228 |
+
</p>
|
229 |
+
</div>
|
230 |
+
</div>
|
231 |
+
<div class="section-level-extent" id="Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">
|
232 |
+
<h3 class="section">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</h3>
|
233 |
+
|
234 |
+
<p>FFmpeg can be built with MSVC 2013 or later.
|
235 |
+
</p>
|
236 |
+
<p>You will need the following prerequisites:
|
237 |
+
</p>
|
238 |
+
<ul class="itemize mark-bullet">
|
239 |
+
<li><a class="uref" href="http://msys2.github.io/">MSYS2</a>
|
240 |
+
</li><li><a class="uref" href="http://www.nasm.us/">NASM</a>
|
241 |
+
(Also available via MSYS2’s package manager.)
|
242 |
+
</li></ul>
|
243 |
+
|
244 |
+
<p>To set up a proper environment in MSYS2, you need to run <code class="code">msys_shell.bat</code> from
|
245 |
+
the Visual Studio or Intel Compiler command prompt.
|
246 |
+
</p>
|
247 |
+
<p>Place <code class="code">yasm.exe</code> somewhere in your <code class="code">PATH</code>.
|
248 |
+
</p>
|
249 |
+
<p>Next, make sure any other headers and libs you want to use, such as zlib, are
|
250 |
+
located in a spot that the compiler can see. Do so by modifying the <code class="code">LIB</code>
|
251 |
+
and <code class="code">INCLUDE</code> environment variables to include the <strong class="strong">Windows-style</strong>
|
252 |
+
paths to these directories. Alternatively, you can try to use the
|
253 |
+
<code class="code">--extra-cflags</code>/<code class="code">--extra-ldflags</code> configure options.
|
254 |
+
</p>
|
255 |
+
<p>Finally, run:
|
256 |
+
</p>
|
257 |
+
<div class="example">
|
258 |
+
<pre class="example-preformatted">For MSVC:
|
259 |
+
./configure --toolchain=msvc
|
260 |
+
|
261 |
+
For ICL:
|
262 |
+
./configure --toolchain=icl
|
263 |
+
|
264 |
+
make
|
265 |
+
make install
|
266 |
+
</pre></div>
|
267 |
+
|
268 |
+
<p>If you wish to compile shared libraries, add <code class="code">--enable-shared</code> to your
|
269 |
+
configure options. Note that due to the way MSVC and ICL handle DLL imports and
|
270 |
+
exports, you cannot compile static and shared libraries at the same time, and
|
271 |
+
enabling shared libraries will automatically disable the static ones.
|
272 |
+
</p>
|
273 |
+
<p>Notes:
|
274 |
+
</p>
|
275 |
+
<ul class="itemize mark-bullet">
|
276 |
+
<li>If you wish to build with zlib support, you will have to grab a compatible
|
277 |
+
zlib binary from somewhere, with an MSVC import lib, or if you wish to link
|
278 |
+
statically, you can follow the instructions below to build a compatible
|
279 |
+
<code class="code">zlib.lib</code> with MSVC. Regardless of which method you use, you must still
|
280 |
+
follow step 3, or compilation will fail.
|
281 |
+
<ol class="enumerate">
|
282 |
+
<li> Grab the <a class="uref" href="http://zlib.net/">zlib sources</a>.
|
283 |
+
</li><li> Edit <code class="code">win32/Makefile.msc</code> so that it uses -MT instead of -MD, since
|
284 |
+
this is how FFmpeg is built as well.
|
285 |
+
</li><li> Edit <code class="code">zconf.h</code> and remove its inclusion of <code class="code">unistd.h</code>. This gets
|
286 |
+
erroneously included when building FFmpeg.
|
287 |
+
</li><li> Run <code class="code">nmake -f win32/Makefile.msc</code>.
|
288 |
+
</li><li> Move <code class="code">zlib.lib</code>, <code class="code">zconf.h</code>, and <code class="code">zlib.h</code> to somewhere MSVC
|
289 |
+
can see.
|
290 |
+
</li></ol>
|
291 |
+
|
292 |
+
</li><li>FFmpeg has been tested with the following on i686 and x86_64:
|
293 |
+
<ul class="itemize mark-bullet">
|
294 |
+
<li>Visual Studio 2013 Pro and Express
|
295 |
+
</li><li>Intel Composer XE 2013
|
296 |
+
</li><li>Intel Composer XE 2013 SP1
|
297 |
+
</li></ul>
|
298 |
+
<p>Anything else is not officially supported.
|
299 |
+
</p>
|
300 |
+
</li></ul>
|
301 |
+
|
302 |
+
<ul class="mini-toc">
|
303 |
+
<li><a href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" accesskey="1">Linking to FFmpeg with Microsoft Visual C++</a></li>
|
304 |
+
</ul>
|
305 |
+
<div class="subsection-level-extent" id="Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">
|
306 |
+
<h4 class="subsection">4.2.1 Linking to FFmpeg with Microsoft Visual C++</h4>
|
307 |
+
|
308 |
+
<p>If you plan to link with MSVC-built static libraries, you will need
|
309 |
+
to make sure you have <code class="code">Runtime Library</code> set to
|
310 |
+
<code class="code">Multi-threaded (/MT)</code> in your project’s settings.
|
311 |
+
</p>
|
312 |
+
<p>You will need to define <code class="code">inline</code> to something MSVC understands:
|
313 |
+
</p><div class="example">
|
314 |
+
<pre class="example-preformatted">#define inline __inline
|
315 |
+
</pre></div>
|
316 |
+
|
317 |
+
<p>Also note, that as stated in <strong class="strong">Microsoft Visual C++</strong>, you will need
|
318 |
+
an MSVC-compatible <a class="uref" href="http://code.google.com/p/msinttypes/">inttypes.h</a>.
|
319 |
+
</p>
|
320 |
+
<p>If you plan on using import libraries created by dlltool, you must
|
321 |
+
set <code class="code">References</code> to <code class="code">No (/OPT:NOREF)</code> under the linker optimization
|
322 |
+
settings, otherwise the resulting binaries will fail during runtime.
|
323 |
+
This is not required when using import libraries generated by <code class="code">lib.exe</code>.
|
324 |
+
This issue is reported upstream at
|
325 |
+
<a class="url" href="http://sourceware.org/bugzilla/show_bug.cgi?id=12633">http://sourceware.org/bugzilla/show_bug.cgi?id=12633</a>.
|
326 |
+
</p>
|
327 |
+
<p>To create import libraries that work with the <code class="code">/OPT:REF</code> option
|
328 |
+
(which is enabled by default in Release mode), follow these steps:
|
329 |
+
</p>
|
330 |
+
<ol class="enumerate">
|
331 |
+
<li> Open the <em class="emph">Visual Studio Command Prompt</em>.
|
332 |
+
|
333 |
+
<p>Alternatively, in a normal command line prompt, call <samp class="file">vcvars32.bat</samp>
|
334 |
+
which sets up the environment variables for the Visual C++ tools
|
335 |
+
(the standard location for this file is something like
|
336 |
+
<samp class="file">C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</samp>).
|
337 |
+
</p>
|
338 |
+
</li><li> Enter the <samp class="file">bin</samp> directory where the created LIB and DLL files
|
339 |
+
are stored.
|
340 |
+
|
341 |
+
</li><li> Generate new import libraries with <code class="command">lib.exe</code>:
|
342 |
+
|
343 |
+
<div class="example">
|
344 |
+
<pre class="example-preformatted">lib /machine:i386 /def:..\lib\foo-version.def /out:foo.lib
|
345 |
+
</pre></div>
|
346 |
+
|
347 |
+
<p>Replace <code class="code">foo-version</code> and <code class="code">foo</code> with the respective library names.
|
348 |
+
</p>
|
349 |
+
</li></ol>
|
350 |
+
|
351 |
+
<a class="anchor" id="Cross-compilation-for-Windows-with-Linux"></a></div>
|
352 |
+
</div>
|
353 |
+
<div class="section-level-extent" id="Cross-compilation-for-Windows-with-Linux-1">
|
354 |
+
<h3 class="section">4.3 Cross compilation for Windows with Linux</h3>
|
355 |
+
|
356 |
+
<p>You must use the MinGW cross compilation tools available at
|
357 |
+
<a class="url" href="http://www.mingw.org/">http://www.mingw.org/</a>.
|
358 |
+
</p>
|
359 |
+
<p>Then configure FFmpeg with the following options:
|
360 |
+
</p><div class="example">
|
361 |
+
<pre class="example-preformatted">./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
|
362 |
+
</pre></div>
|
363 |
+
<p>(you can change the cross-prefix according to the prefix chosen for the
|
364 |
+
MinGW tools).
|
365 |
+
</p>
|
366 |
+
<p>Then you can easily test FFmpeg with <a class="uref" href="http://www.winehq.com/">Wine</a>.
|
367 |
+
</p>
|
368 |
+
</div>
|
369 |
+
<div class="section-level-extent" id="Compilation-under-Cygwin">
|
370 |
+
<h3 class="section">4.4 Compilation under Cygwin</h3>
|
371 |
+
|
372 |
+
<p>Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
|
373 |
+
llrint() in its C library.
|
374 |
+
</p>
|
375 |
+
<p>Install your Cygwin with all the "Base" packages, plus the
|
376 |
+
following "Devel" ones:
|
377 |
+
</p><div class="example">
|
378 |
+
<pre class="example-preformatted">binutils, gcc4-core, make, git, mingw-runtime, texinfo
|
379 |
+
</pre></div>
|
380 |
+
|
381 |
+
<p>In order to run FATE you will also need the following "Utils" packages:
|
382 |
+
</p><div class="example">
|
383 |
+
<pre class="example-preformatted">diffutils
|
384 |
+
</pre></div>
|
385 |
+
|
386 |
+
<p>If you want to build FFmpeg with additional libraries, download Cygwin
|
387 |
+
"Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
|
388 |
+
</p><div class="example">
|
389 |
+
<pre class="example-preformatted">libogg-devel, libvorbis-devel
|
390 |
+
</pre></div>
|
391 |
+
|
392 |
+
<p>These library packages are only available from
|
393 |
+
<a class="uref" href="http://sourceware.org/cygwinports/">Cygwin Ports</a>:
|
394 |
+
</p>
|
395 |
+
<div class="example">
|
396 |
+
<pre class="example-preformatted">yasm, libSDL-devel, libgsm-devel, libmp3lame-devel,
|
397 |
+
speex-devel, libtheora-devel, libxvidcore-devel
|
398 |
+
</pre></div>
|
399 |
+
|
400 |
+
<p>The recommendation for x264 is to build it from source, as it evolves too
|
401 |
+
quickly for Cygwin Ports to be up to date.
|
402 |
+
</p>
|
403 |
+
</div>
|
404 |
+
<div class="section-level-extent" id="Crosscompilation-for-Windows-under-Cygwin">
|
405 |
+
<h3 class="section">4.5 Crosscompilation for Windows under Cygwin</h3>
|
406 |
+
|
407 |
+
<p>With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
|
408 |
+
</p>
|
409 |
+
<p>Just install your Cygwin as explained before, plus these additional
|
410 |
+
"Devel" packages:
|
411 |
+
</p><div class="example">
|
412 |
+
<pre class="example-preformatted">gcc-mingw-core, mingw-runtime, mingw-zlib
|
413 |
+
</pre></div>
|
414 |
+
|
415 |
+
<p>and add some special flags to your configure invocation.
|
416 |
+
</p>
|
417 |
+
<p>For a static build run
|
418 |
+
</p><div class="example">
|
419 |
+
<pre class="example-preformatted">./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
420 |
+
</pre></div>
|
421 |
+
|
422 |
+
<p>and for a build with shared libraries
|
423 |
+
</p><div class="example">
|
424 |
+
<pre class="example-preformatted">./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
425 |
+
</pre></div>
|
426 |
+
|
427 |
+
</div>
|
428 |
+
</div>
|
429 |
+
</div>
|
430 |
+
|
431 |
+
|
432 |
+
|
433 |
+
</body>
|
434 |
+
</html>
|
mm_avh_working_space/bin/ffmpeg/doc/style.min.css
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
The MIT License (MIT)
|
3 |
+
|
4 |
+
Copyright (c) 2014 Barbara Lepage <[email protected]>
|
5 |
+
|
6 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7 |
+
of this software and associated documentation files (the "Software"), to deal
|
8 |
+
in the Software without restriction, including without limitation the rights
|
9 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10 |
+
copies of the Software, and to permit persons to whom the Software is
|
11 |
+
furnished to do so, subject to the following conditions:
|
12 |
+
|
13 |
+
The above copyright notice and this permission notice shall be included in all
|
14 |
+
copies or substantial portions of the Software.
|
15 |
+
|
16 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22 |
+
SOFTWARE.
|
23 |
+
*/body{background-color:#313131;color:#e6e6e6;text-align:justify}body, h1, h2, h3, h4, h5, h6{font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans","Helvetica Neue",Helvetica,Verdana,Tahoma,sans-serif}a{color:#4cae4c}a strong{color:#e6e6e6}a:hover{color:#7fc77f}a:hover strong{color:#4cae4c}main{width:100% ! important;min-height:600px;margin:auto}h1, h2, h3, h4{font-weight:bold;text-align:left}h1, h2, h3{color:#bebebe}h1 strong, h2 strong, h3 strong{color:#e6e6e6}h4, h5, h6{color:#3c8b3c}h1{border-bottom:4px #bebebe solid;padding:20px 2%}h3{border-bottom:2px #bebebe solid;padding:15px 1%}h4{border-bottom:1px solid #e6e6e6;padding:10px 0;margin:20px 0;color:#e6e6e6}.list-group .list-group-item{background-color:#3e3e3e;border-color:black}.list-group.list-group-big .list-group-item{padding:25px}.list-group a.list-group-item{color:#7fc77f}.list-group a.list-group-item:hover{background-color:#313131;color:#4cae4c}.well{background-color:#242424;border-color:black;color:#bebebe}.well strong{color:#e6e6e6}.well code{background-color:#313131}.well hr{border-color:#3c8b3c}.well h3{margin:5px 0 15px 0;border:0;padding:0}.well a{color:#4cae4c}.well a.btn{color:white}.well small{display:block;padding:0 10px;font-style:italic}.well.example{padding-top:40px;margin-bottom:130px}.well.example pre{margin:50px;margin-bottom:30px;font-size:1.5em}.well.example .btn{margin-right:50px;margin-bottom:20px}.well.well-with-icon{min-height:136px}.well.well-with-icon .pull-right,.well.well-with-icon .pull-left{background-color:#4cae4c;color:#e6e6e6;padding:10px;border-radius:5px;margin:5px}.well.well-with-icon .pull-right{margin-left:20px}.well.well-with-icon .pull-left{margin-right:20px}a.well{display:block}a.well:hover{text-decoration:none;opacity:0.8}.info, .warning{margin:10px;padding:10px;background-color:#3e3e3e;color:#e6e6e6}.info code, .warning code{background-color:#313131}.info{border-left:10px #4cae4c solid}.warning{border-left:10px #ae4c4c solid}.with-icon{padding:30px}.with-icon .pull-left{padding-right:30px}.with-icon .pull-right{padding-left:30px}dd{margin-left:20px}code{background-color:#242424;color:#7fc77f;display:inline-block;margin:5px}.table{margin:20px 0;border-radius:4px}.table th,.table td,.table tr{border:1px solid #171717}.table tr th{background-color:#3e3e3e;border-bottom:2px solid #e6e6e6}.table tr:nth-child(odd){background-color:#242424}#sidebar-wrapper, .navbar{background-color:#171717;overflow-x:hidden}#sidebar-wrapper .sidebar-brand img,#sidebar-wrapper .navbar-brand img, .navbar .sidebar-brand img, .navbar .navbar-brand img{opacity:0.6;margin-right:8px}#sidebar-wrapper .sidebar-brand:hover,#sidebar-wrapper .navbar-brand:hover, .navbar .sidebar-brand:hover, .navbar .navbar-brand:hover{color:#fff}#sidebar-wrapper .sidebar-brand:hover img,#sidebar-wrapper .navbar-brand:hover img, .navbar .sidebar-brand:hover img, .navbar .navbar-brand:hover img{opacity:1}#sidebar-wrapper .sidebar-nav li ul, .navbar .sidebar-nav li ul{list-style-type:none;padding:0}#sidebar-wrapper .sidebar-nav li ul li, .navbar .sidebar-nav li ul li{line-height:20px}#sidebar-wrapper .sidebar-nav li ul li a, .navbar .sidebar-nav li ul li a{padding-left:20px}.content-header{height:auto;background-color:#242424}.content-header h1{color:#e6e6e6;display:block;margin:0;margin-bottom:20px;line-height:normal;border-bottom:none}#download h4, #index h4{margin-top:180px}#download h4.first, #index h4.first{margin-top:20px}#download h4.first small, #index h4.first small{color:inherit;font-size:1em}#download .btn-download-wrapper, #index .btn-download-wrapper{text-align:center;margin:160px auto}#download .btn-download-wrapper .btn, #index .btn-download-wrapper .btn{font-size:3em;padding:3%;display:inline-block;margin-bottom:5px}#download .btn-download-wrapper small, #index .btn-download-wrapper small{display:block;font-size:0.4em}#download h2.description, #index h2.description{color:#e6e6e6;font-size:2em;font-weight:bold;margin:120px 50px;line-height:2em}#download h2.description .label, #index h2.description .label{font-size:0.5em}#download .btn-download-wrapper{margin:40px auto}#download .os-selector{text-align:center;color:#e6e6e6;margin:30px 0}#download .os-selector a.btn-build{color:#e6e6e6;display:block;padding:20px;border-radius:2px}#download .os-selector .btn-build[href="#build-linux"]{background-color:#e43}#download .os-selector .btn-build[href="#build-linux"]:hover{color:#e43;background-color:#e6e6e6}#download .os-selector .btn-build[href="#build-windows"]{background-color:#06a}#download .os-selector .btn-build[href="#build-windows"]:hover{color:#06a;background-color:#e6e6e6}#download .os-selector .btn-build[href="#build-mac"]{background-color:darkgrey}#download .os-selector .btn-build[href="#build-mac"]:hover{color:darkgrey;background-color:#e6e6e6}#download .os-selector .tab-content{margin-top:20px}#download .os-selector #build-linux h3{color:#e43}#download .os-selector #build-windows h3{color:#06a}#download .os-selector #build-mac h3{color:darkgrey}footer{background-color:#242424;border-top:1px #101010 solid;padding:20px 0%}footer a{display:block}footer img[alt="FFmpeg"]{width:50%;display:block;margin:auto}
|