Spaces:
Runtime error
Runtime error
Pranjal12345
commited on
Commit
•
b86f76f
1
Parent(s):
cc62117
Upload 8017 files
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- bin/ffmpeg/.mailmap +24 -0
- bin/ffmpeg/.travis.yml +30 -0
- bin/ffmpeg/CONTRIBUTING.md +4 -0
- bin/ffmpeg/COPYING.GPLv2 +339 -0
- bin/ffmpeg/COPYING.GPLv3 +674 -0
- bin/ffmpeg/COPYING.LGPLv2.1 +502 -0
- bin/ffmpeg/COPYING.LGPLv3 +165 -0
- bin/ffmpeg/CREDITS +6 -0
- bin/ffmpeg/Changelog +2070 -0
- bin/ffmpeg/INSTALL.md +17 -0
- bin/ffmpeg/LICENSE.md +129 -0
- bin/ffmpeg/MAINTAINERS +643 -0
- bin/ffmpeg/Makefile +198 -0
- bin/ffmpeg/README.md +46 -0
- bin/ffmpeg/RELEASE +1 -0
- bin/ffmpeg/RELEASE_NOTES +15 -0
- bin/ffmpeg/VERSION +1 -0
- bin/ffmpeg/compat/aix/math.h +31 -0
- bin/ffmpeg/compat/atomics/dummy/stdatomic.h +176 -0
- bin/ffmpeg/compat/atomics/gcc/stdatomic.h +173 -0
- bin/ffmpeg/compat/atomics/pthread/stdatomic.c +39 -0
- bin/ffmpeg/compat/atomics/pthread/stdatomic.h +197 -0
- bin/ffmpeg/compat/atomics/suncc/stdatomic.h +186 -0
- bin/ffmpeg/compat/atomics/win32/stdatomic.h +181 -0
- bin/ffmpeg/compat/cuda/cuda_runtime.h +192 -0
- bin/ffmpeg/compat/cuda/dynlink_loader.h +33 -0
- bin/ffmpeg/compat/dispatch_semaphore/semaphore.h +42 -0
- bin/ffmpeg/compat/djgpp/math.c +47 -0
- bin/ffmpeg/compat/djgpp/math.h +25 -0
- bin/ffmpeg/compat/float/float.h +35 -0
- bin/ffmpeg/compat/float/limits.h +22 -0
- bin/ffmpeg/compat/getopt.c +84 -0
- bin/ffmpeg/compat/msvcrt/snprintf.c +71 -0
- bin/ffmpeg/compat/msvcrt/snprintf.h +38 -0
- bin/ffmpeg/compat/os2threads.h +229 -0
- bin/ffmpeg/compat/solaris/make_sunver.pl +352 -0
- bin/ffmpeg/compat/strtod.c +93 -0
- bin/ffmpeg/compat/va_copy.h +34 -0
- bin/ffmpeg/compat/w32dlfcn.h +150 -0
- bin/ffmpeg/compat/w32pthreads.h +191 -0
- bin/ffmpeg/compat/windows/makedef +129 -0
- bin/ffmpeg/compat/windows/mslink +9 -0
- bin/ffmpeg/compat/windows/mswindres +32 -0
- bin/ffmpeg/configure +0 -0
- bin/ffmpeg/doc/APIchanges +0 -0
- bin/ffmpeg/doc/Doxyfile +0 -0
- bin/ffmpeg/doc/Makefile +157 -0
- bin/ffmpeg/doc/authors.texi +11 -0
- bin/ffmpeg/doc/bitstream_filters.texi +949 -0
- bin/ffmpeg/doc/bootstrap.min.css +0 -0
bin/ffmpeg/.mailmap
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 |
+
rcombs <[email protected]> <[email protected]>
|
22 | |
23 | |
24 |
bin/ffmpeg/.travis.yml
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
language: c
|
2 |
+
sudo: false
|
3 |
+
os:
|
4 |
+
- linux
|
5 |
+
- osx
|
6 |
+
addons:
|
7 |
+
apt:
|
8 |
+
packages:
|
9 |
+
- nasm
|
10 |
+
- diffutils
|
11 |
+
compiler:
|
12 |
+
- clang
|
13 |
+
- gcc
|
14 |
+
matrix:
|
15 |
+
exclude:
|
16 |
+
- os: osx
|
17 |
+
compiler: gcc
|
18 |
+
cache:
|
19 |
+
directories:
|
20 |
+
- ffmpeg-samples
|
21 |
+
before_install:
|
22 |
+
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; fi
|
23 |
+
install:
|
24 |
+
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install nasm; fi
|
25 |
+
script:
|
26 |
+
- mkdir -p ffmpeg-samples
|
27 |
+
- ./configure --samples=ffmpeg-samples --cc=$CC
|
28 |
+
- make -j 8
|
29 |
+
- make fate-rsync
|
30 |
+
- make check -j 8
|
bin/ffmpeg/CONTRIBUTING.md
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Note to Github users
|
2 |
+
Patches should be submitted to the [ffmpeg-devel mailing list](https://ffmpeg.org/mailman/listinfo/ffmpeg-devel) using `git format-patch` or `git send-email`. Github pull requests should be avoided because they are not part of our review process and **will be ignored**.
|
3 |
+
|
4 |
+
See [https://ffmpeg.org/developer.html#Contributing](https://ffmpeg.org/developer.html#Contributing) for more information.
|
bin/ffmpeg/COPYING.GPLv2
ADDED
@@ -0,0 +1,339 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU GENERAL PUBLIC LICENSE
|
2 |
+
Version 2, June 1991
|
3 |
+
|
4 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
7 |
+
of this license document, but changing it is not allowed.
|
8 |
+
|
9 |
+
Preamble
|
10 |
+
|
11 |
+
The licenses for most software are designed to take away your
|
12 |
+
freedom to share and change it. By contrast, the GNU General Public
|
13 |
+
License is intended to guarantee your freedom to share and change free
|
14 |
+
software--to make sure the software is free for all its users. This
|
15 |
+
General Public License applies to most of the Free Software
|
16 |
+
Foundation's software and to any other program whose authors commit to
|
17 |
+
using it. (Some other Free Software Foundation software is covered by
|
18 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
+
your programs, too.
|
20 |
+
|
21 |
+
When we speak of free software, we are referring to freedom, not
|
22 |
+
price. Our General Public Licenses are designed to make sure that you
|
23 |
+
have the freedom to distribute copies of free software (and charge for
|
24 |
+
this service if you wish), that you receive source code or can get it
|
25 |
+
if you want it, that you can change the software or use pieces of it
|
26 |
+
in new free programs; and that you know you can do these things.
|
27 |
+
|
28 |
+
To protect your rights, we need to make restrictions that forbid
|
29 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
+
These restrictions translate to certain responsibilities for you if you
|
31 |
+
distribute copies of the software, or if you modify it.
|
32 |
+
|
33 |
+
For example, if you distribute copies of such a program, whether
|
34 |
+
gratis or for a fee, you must give the recipients all the rights that
|
35 |
+
you have. You must make sure that they, too, receive or can get the
|
36 |
+
source code. And you must show them these terms so they know their
|
37 |
+
rights.
|
38 |
+
|
39 |
+
We protect your rights with two steps: (1) copyright the software, and
|
40 |
+
(2) offer you this license which gives you legal permission to copy,
|
41 |
+
distribute and/or modify the software.
|
42 |
+
|
43 |
+
Also, for each author's protection and ours, we want to make certain
|
44 |
+
that everyone understands that there is no warranty for this free
|
45 |
+
software. If the software is modified by someone else and passed on, we
|
46 |
+
want its recipients to know that what they have is not the original, so
|
47 |
+
that any problems introduced by others will not reflect on the original
|
48 |
+
authors' reputations.
|
49 |
+
|
50 |
+
Finally, any free program is threatened constantly by software
|
51 |
+
patents. We wish to avoid the danger that redistributors of a free
|
52 |
+
program will individually obtain patent licenses, in effect making the
|
53 |
+
program proprietary. To prevent this, we have made it clear that any
|
54 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
+
|
56 |
+
The precise terms and conditions for copying, distribution and
|
57 |
+
modification follow.
|
58 |
+
|
59 |
+
GNU GENERAL PUBLIC LICENSE
|
60 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
+
|
62 |
+
0. This License applies to any program or other work which contains
|
63 |
+
a notice placed by the copyright holder saying it may be distributed
|
64 |
+
under the terms of this General Public License. The "Program", below,
|
65 |
+
refers to any such program or work, and a "work based on the Program"
|
66 |
+
means either the Program or any derivative work under copyright law:
|
67 |
+
that is to say, a work containing the Program or a portion of it,
|
68 |
+
either verbatim or with modifications and/or translated into another
|
69 |
+
language. (Hereinafter, translation is included without limitation in
|
70 |
+
the term "modification".) Each licensee is addressed as "you".
|
71 |
+
|
72 |
+
Activities other than copying, distribution and modification are not
|
73 |
+
covered by this License; they are outside its scope. The act of
|
74 |
+
running the Program is not restricted, and the output from the Program
|
75 |
+
is covered only if its contents constitute a work based on the
|
76 |
+
Program (independent of having been made by running the Program).
|
77 |
+
Whether that is true depends on what the Program does.
|
78 |
+
|
79 |
+
1. You may copy and distribute verbatim copies of the Program's
|
80 |
+
source code as you receive it, in any medium, provided that you
|
81 |
+
conspicuously and appropriately publish on each copy an appropriate
|
82 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
+
notices that refer to this License and to the absence of any warranty;
|
84 |
+
and give any other recipients of the Program a copy of this License
|
85 |
+
along with the Program.
|
86 |
+
|
87 |
+
You may charge a fee for the physical act of transferring a copy, and
|
88 |
+
you may at your option offer warranty protection in exchange for a fee.
|
89 |
+
|
90 |
+
2. You may modify your copy or copies of the Program or any portion
|
91 |
+
of it, thus forming a work based on the Program, and copy and
|
92 |
+
distribute such modifications or work under the terms of Section 1
|
93 |
+
above, provided that you also meet all of these conditions:
|
94 |
+
|
95 |
+
a) You must cause the modified files to carry prominent notices
|
96 |
+
stating that you changed the files and the date of any change.
|
97 |
+
|
98 |
+
b) You must cause any work that you distribute or publish, that in
|
99 |
+
whole or in part contains or is derived from the Program or any
|
100 |
+
part thereof, to be licensed as a whole at no charge to all third
|
101 |
+
parties under the terms of this License.
|
102 |
+
|
103 |
+
c) If the modified program normally reads commands interactively
|
104 |
+
when run, you must cause it, when started running for such
|
105 |
+
interactive use in the most ordinary way, to print or display an
|
106 |
+
announcement including an appropriate copyright notice and a
|
107 |
+
notice that there is no warranty (or else, saying that you provide
|
108 |
+
a warranty) and that users may redistribute the program under
|
109 |
+
these conditions, and telling the user how to view a copy of this
|
110 |
+
License. (Exception: if the Program itself is interactive but
|
111 |
+
does not normally print such an announcement, your work based on
|
112 |
+
the Program is not required to print an announcement.)
|
113 |
+
|
114 |
+
These requirements apply to the modified work as a whole. If
|
115 |
+
identifiable sections of that work are not derived from the Program,
|
116 |
+
and can be reasonably considered independent and separate works in
|
117 |
+
themselves, then this License, and its terms, do not apply to those
|
118 |
+
sections when you distribute them as separate works. But when you
|
119 |
+
distribute the same sections as part of a whole which is a work based
|
120 |
+
on the Program, the distribution of the whole must be on the terms of
|
121 |
+
this License, whose permissions for other licensees extend to the
|
122 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
+
|
124 |
+
Thus, it is not the intent of this section to claim rights or contest
|
125 |
+
your rights to work written entirely by you; rather, the intent is to
|
126 |
+
exercise the right to control the distribution of derivative or
|
127 |
+
collective works based on the Program.
|
128 |
+
|
129 |
+
In addition, mere aggregation of another work not based on the Program
|
130 |
+
with the Program (or with a work based on the Program) on a volume of
|
131 |
+
a storage or distribution medium does not bring the other work under
|
132 |
+
the scope of this License.
|
133 |
+
|
134 |
+
3. You may copy and distribute the Program (or a work based on it,
|
135 |
+
under Section 2) in object code or executable form under the terms of
|
136 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
+
|
138 |
+
a) Accompany it with the complete corresponding machine-readable
|
139 |
+
source code, which must be distributed under the terms of Sections
|
140 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
+
|
142 |
+
b) Accompany it with a written offer, valid for at least three
|
143 |
+
years, to give any third party, for a charge no more than your
|
144 |
+
cost of physically performing source distribution, a complete
|
145 |
+
machine-readable copy of the corresponding source code, to be
|
146 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
+
customarily used for software interchange; or,
|
148 |
+
|
149 |
+
c) Accompany it with the information you received as to the offer
|
150 |
+
to distribute corresponding source code. (This alternative is
|
151 |
+
allowed only for noncommercial distribution and only if you
|
152 |
+
received the program in object code or executable form with such
|
153 |
+
an offer, in accord with Subsection b above.)
|
154 |
+
|
155 |
+
The source code for a work means the preferred form of the work for
|
156 |
+
making modifications to it. For an executable work, complete source
|
157 |
+
code means all the source code for all modules it contains, plus any
|
158 |
+
associated interface definition files, plus the scripts used to
|
159 |
+
control compilation and installation of the executable. However, as a
|
160 |
+
special exception, the source code distributed need not include
|
161 |
+
anything that is normally distributed (in either source or binary
|
162 |
+
form) with the major components (compiler, kernel, and so on) of the
|
163 |
+
operating system on which the executable runs, unless that component
|
164 |
+
itself accompanies the executable.
|
165 |
+
|
166 |
+
If distribution of executable or object code is made by offering
|
167 |
+
access to copy from a designated place, then offering equivalent
|
168 |
+
access to copy the source code from the same place counts as
|
169 |
+
distribution of the source code, even though third parties are not
|
170 |
+
compelled to copy the source along with the object code.
|
171 |
+
|
172 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
+
except as expressly provided under this License. Any attempt
|
174 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
+
void, and will automatically terminate your rights under this License.
|
176 |
+
However, parties who have received copies, or rights, from you under
|
177 |
+
this License will not have their licenses terminated so long as such
|
178 |
+
parties remain in full compliance.
|
179 |
+
|
180 |
+
5. You are not required to accept this License, since you have not
|
181 |
+
signed it. However, nothing else grants you permission to modify or
|
182 |
+
distribute the Program or its derivative works. These actions are
|
183 |
+
prohibited by law if you do not accept this License. Therefore, by
|
184 |
+
modifying or distributing the Program (or any work based on the
|
185 |
+
Program), you indicate your acceptance of this License to do so, and
|
186 |
+
all its terms and conditions for copying, distributing or modifying
|
187 |
+
the Program or works based on it.
|
188 |
+
|
189 |
+
6. Each time you redistribute the Program (or any work based on the
|
190 |
+
Program), the recipient automatically receives a license from the
|
191 |
+
original licensor to copy, distribute or modify the Program subject to
|
192 |
+
these terms and conditions. You may not impose any further
|
193 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
+
You are not responsible for enforcing compliance by third parties to
|
195 |
+
this License.
|
196 |
+
|
197 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
+
infringement or for any other reason (not limited to patent issues),
|
199 |
+
conditions are imposed on you (whether by court order, agreement or
|
200 |
+
otherwise) that contradict the conditions of this License, they do not
|
201 |
+
excuse you from the conditions of this License. If you cannot
|
202 |
+
distribute so as to satisfy simultaneously your obligations under this
|
203 |
+
License and any other pertinent obligations, then as a consequence you
|
204 |
+
may not distribute the Program at all. For example, if a patent
|
205 |
+
license would not permit royalty-free redistribution of the Program by
|
206 |
+
all those who receive copies directly or indirectly through you, then
|
207 |
+
the only way you could satisfy both it and this License would be to
|
208 |
+
refrain entirely from distribution of the Program.
|
209 |
+
|
210 |
+
If any portion of this section is held invalid or unenforceable under
|
211 |
+
any particular circumstance, the balance of the section is intended to
|
212 |
+
apply and the section as a whole is intended to apply in other
|
213 |
+
circumstances.
|
214 |
+
|
215 |
+
It is not the purpose of this section to induce you to infringe any
|
216 |
+
patents or other property right claims or to contest validity of any
|
217 |
+
such claims; this section has the sole purpose of protecting the
|
218 |
+
integrity of the free software distribution system, which is
|
219 |
+
implemented by public license practices. Many people have made
|
220 |
+
generous contributions to the wide range of software distributed
|
221 |
+
through that system in reliance on consistent application of that
|
222 |
+
system; it is up to the author/donor to decide if he or she is willing
|
223 |
+
to distribute software through any other system and a licensee cannot
|
224 |
+
impose that choice.
|
225 |
+
|
226 |
+
This section is intended to make thoroughly clear what is believed to
|
227 |
+
be a consequence of the rest of this License.
|
228 |
+
|
229 |
+
8. If the distribution and/or use of the Program is restricted in
|
230 |
+
certain countries either by patents or by copyrighted interfaces, the
|
231 |
+
original copyright holder who places the Program under this License
|
232 |
+
may add an explicit geographical distribution limitation excluding
|
233 |
+
those countries, so that distribution is permitted only in or among
|
234 |
+
countries not thus excluded. In such case, this License incorporates
|
235 |
+
the limitation as if written in the body of this License.
|
236 |
+
|
237 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
+
of the General Public License from time to time. Such new versions will
|
239 |
+
be similar in spirit to the present version, but may differ in detail to
|
240 |
+
address new problems or concerns.
|
241 |
+
|
242 |
+
Each version is given a distinguishing version number. If the Program
|
243 |
+
specifies a version number of this License which applies to it and "any
|
244 |
+
later version", you have the option of following the terms and conditions
|
245 |
+
either of that version or of any later version published by the Free
|
246 |
+
Software Foundation. If the Program does not specify a version number of
|
247 |
+
this License, you may choose any version ever published by the Free Software
|
248 |
+
Foundation.
|
249 |
+
|
250 |
+
10. If you wish to incorporate parts of the Program into other free
|
251 |
+
programs whose distribution conditions are different, write to the author
|
252 |
+
to ask for permission. For software which is copyrighted by the Free
|
253 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
+
make exceptions for this. Our decision will be guided by the two goals
|
255 |
+
of preserving the free status of all derivatives of our free software and
|
256 |
+
of promoting the sharing and reuse of software generally.
|
257 |
+
|
258 |
+
NO WARRANTY
|
259 |
+
|
260 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
+
REPAIR OR CORRECTION.
|
269 |
+
|
270 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
+
POSSIBILITY OF SUCH DAMAGES.
|
279 |
+
|
280 |
+
END OF TERMS AND CONDITIONS
|
281 |
+
|
282 |
+
How to Apply These Terms to Your New Programs
|
283 |
+
|
284 |
+
If you develop a new program, and you want it to be of the greatest
|
285 |
+
possible use to the public, the best way to achieve this is to make it
|
286 |
+
free software which everyone can redistribute and change under these terms.
|
287 |
+
|
288 |
+
To do so, attach the following notices to the program. It is safest
|
289 |
+
to attach them to the start of each source file to most effectively
|
290 |
+
convey the exclusion of warranty; and each file should have at least
|
291 |
+
the "copyright" line and a pointer to where the full notice is found.
|
292 |
+
|
293 |
+
<one line to give the program's name and a brief idea of what it does.>
|
294 |
+
Copyright (C) <year> <name of author>
|
295 |
+
|
296 |
+
This program is free software; you can redistribute it and/or modify
|
297 |
+
it under the terms of the GNU General Public License as published by
|
298 |
+
the Free Software Foundation; either version 2 of the License, or
|
299 |
+
(at your option) any later version.
|
300 |
+
|
301 |
+
This program is distributed in the hope that it will be useful,
|
302 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
+
GNU General Public License for more details.
|
305 |
+
|
306 |
+
You should have received a copy of the GNU General Public License along
|
307 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
+
|
310 |
+
Also add information on how to contact you by electronic and paper mail.
|
311 |
+
|
312 |
+
If the program is interactive, make it output a short notice like this
|
313 |
+
when it starts in an interactive mode:
|
314 |
+
|
315 |
+
Gnomovision version 69, Copyright (C) year name of author
|
316 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
+
This is free software, and you are welcome to redistribute it
|
318 |
+
under certain conditions; type `show c' for details.
|
319 |
+
|
320 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
+
parts of the General Public License. Of course, the commands you use may
|
322 |
+
be called something other than `show w' and `show c'; they could even be
|
323 |
+
mouse-clicks or menu items--whatever suits your program.
|
324 |
+
|
325 |
+
You should also get your employer (if you work as a programmer) or your
|
326 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
+
necessary. Here is a sample; alter the names:
|
328 |
+
|
329 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
+
|
332 |
+
<signature of Ty Coon>, 1 April 1989
|
333 |
+
Ty Coon, President of Vice
|
334 |
+
|
335 |
+
This General Public License does not permit incorporating your program into
|
336 |
+
proprietary programs. If your program is a subroutine library, you may
|
337 |
+
consider it more useful to permit linking proprietary applications with the
|
338 |
+
library. If this is what you want to do, use the GNU Lesser General
|
339 |
+
Public License instead of this License.
|
bin/ffmpeg/COPYING.GPLv3
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>.
|
bin/ffmpeg/COPYING.LGPLv2.1
ADDED
@@ -0,0 +1,502 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU LESSER GENERAL PUBLIC LICENSE
|
2 |
+
Version 2.1, February 1999
|
3 |
+
|
4 |
+
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
7 |
+
of this license document, but changing it is not allowed.
|
8 |
+
|
9 |
+
[This is the first released version of the Lesser GPL. It also counts
|
10 |
+
as the successor of the GNU Library Public License, version 2, hence
|
11 |
+
the version number 2.1.]
|
12 |
+
|
13 |
+
Preamble
|
14 |
+
|
15 |
+
The licenses for most software are designed to take away your
|
16 |
+
freedom to share and change it. By contrast, the GNU General Public
|
17 |
+
Licenses are intended to guarantee your freedom to share and change
|
18 |
+
free software--to make sure the software is free for all its users.
|
19 |
+
|
20 |
+
This license, the Lesser General Public License, applies to some
|
21 |
+
specially designated software packages--typically libraries--of the
|
22 |
+
Free Software Foundation and other authors who decide to use it. You
|
23 |
+
can use it too, but we suggest you first think carefully about whether
|
24 |
+
this license or the ordinary General Public License is the better
|
25 |
+
strategy to use in any particular case, based on the explanations below.
|
26 |
+
|
27 |
+
When we speak of free software, we are referring to freedom of use,
|
28 |
+
not price. Our General Public Licenses are designed to make sure that
|
29 |
+
you have the freedom to distribute copies of free software (and charge
|
30 |
+
for this service if you wish); that you receive source code or can get
|
31 |
+
it if you want it; that you can change the software and use pieces of
|
32 |
+
it in new free programs; and that you are informed that you can do
|
33 |
+
these things.
|
34 |
+
|
35 |
+
To protect your rights, we need to make restrictions that forbid
|
36 |
+
distributors to deny you these rights or to ask you to surrender these
|
37 |
+
rights. These restrictions translate to certain responsibilities for
|
38 |
+
you if you distribute copies of the library or if you modify it.
|
39 |
+
|
40 |
+
For example, if you distribute copies of the library, whether gratis
|
41 |
+
or for a fee, you must give the recipients all the rights that we gave
|
42 |
+
you. You must make sure that they, too, receive or can get the source
|
43 |
+
code. If you link other code with the library, you must provide
|
44 |
+
complete object files to the recipients, so that they can relink them
|
45 |
+
with the library after making changes to the library and recompiling
|
46 |
+
it. And you must show them these terms so they know their rights.
|
47 |
+
|
48 |
+
We protect your rights with a two-step method: (1) we copyright the
|
49 |
+
library, and (2) we offer you this license, which gives you legal
|
50 |
+
permission to copy, distribute and/or modify the library.
|
51 |
+
|
52 |
+
To protect each distributor, we want to make it very clear that
|
53 |
+
there is no warranty for the free library. Also, if the library is
|
54 |
+
modified by someone else and passed on, the recipients should know
|
55 |
+
that what they have is not the original version, so that the original
|
56 |
+
author's reputation will not be affected by problems that might be
|
57 |
+
introduced by others.
|
58 |
+
|
59 |
+
Finally, software patents pose a constant threat to the existence of
|
60 |
+
any free program. We wish to make sure that a company cannot
|
61 |
+
effectively restrict the users of a free program by obtaining a
|
62 |
+
restrictive license from a patent holder. Therefore, we insist that
|
63 |
+
any patent license obtained for a version of the library must be
|
64 |
+
consistent with the full freedom of use specified in this license.
|
65 |
+
|
66 |
+
Most GNU software, including some libraries, is covered by the
|
67 |
+
ordinary GNU General Public License. This license, the GNU Lesser
|
68 |
+
General Public License, applies to certain designated libraries, and
|
69 |
+
is quite different from the ordinary General Public License. We use
|
70 |
+
this license for certain libraries in order to permit linking those
|
71 |
+
libraries into non-free programs.
|
72 |
+
|
73 |
+
When a program is linked with a library, whether statically or using
|
74 |
+
a shared library, the combination of the two is legally speaking a
|
75 |
+
combined work, a derivative of the original library. The ordinary
|
76 |
+
General Public License therefore permits such linking only if the
|
77 |
+
entire combination fits its criteria of freedom. The Lesser General
|
78 |
+
Public License permits more lax criteria for linking other code with
|
79 |
+
the library.
|
80 |
+
|
81 |
+
We call this license the "Lesser" General Public License because it
|
82 |
+
does Less to protect the user's freedom than the ordinary General
|
83 |
+
Public License. It also provides other free software developers Less
|
84 |
+
of an advantage over competing non-free programs. These disadvantages
|
85 |
+
are the reason we use the ordinary General Public License for many
|
86 |
+
libraries. However, the Lesser license provides advantages in certain
|
87 |
+
special circumstances.
|
88 |
+
|
89 |
+
For example, on rare occasions, there may be a special need to
|
90 |
+
encourage the widest possible use of a certain library, so that it becomes
|
91 |
+
a de-facto standard. To achieve this, non-free programs must be
|
92 |
+
allowed to use the library. A more frequent case is that a free
|
93 |
+
library does the same job as widely used non-free libraries. In this
|
94 |
+
case, there is little to gain by limiting the free library to free
|
95 |
+
software only, so we use the Lesser General Public License.
|
96 |
+
|
97 |
+
In other cases, permission to use a particular library in non-free
|
98 |
+
programs enables a greater number of people to use a large body of
|
99 |
+
free software. For example, permission to use the GNU C Library in
|
100 |
+
non-free programs enables many more people to use the whole GNU
|
101 |
+
operating system, as well as its variant, the GNU/Linux operating
|
102 |
+
system.
|
103 |
+
|
104 |
+
Although the Lesser General Public License is Less protective of the
|
105 |
+
users' freedom, it does ensure that the user of a program that is
|
106 |
+
linked with the Library has the freedom and the wherewithal to run
|
107 |
+
that program using a modified version of the Library.
|
108 |
+
|
109 |
+
The precise terms and conditions for copying, distribution and
|
110 |
+
modification follow. Pay close attention to the difference between a
|
111 |
+
"work based on the library" and a "work that uses the library". The
|
112 |
+
former contains code derived from the library, whereas the latter must
|
113 |
+
be combined with the library in order to run.
|
114 |
+
|
115 |
+
GNU LESSER GENERAL PUBLIC LICENSE
|
116 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
117 |
+
|
118 |
+
0. This License Agreement applies to any software library or other
|
119 |
+
program which contains a notice placed by the copyright holder or
|
120 |
+
other authorized party saying it may be distributed under the terms of
|
121 |
+
this Lesser General Public License (also called "this License").
|
122 |
+
Each licensee is addressed as "you".
|
123 |
+
|
124 |
+
A "library" means a collection of software functions and/or data
|
125 |
+
prepared so as to be conveniently linked with application programs
|
126 |
+
(which use some of those functions and data) to form executables.
|
127 |
+
|
128 |
+
The "Library", below, refers to any such software library or work
|
129 |
+
which has been distributed under these terms. A "work based on the
|
130 |
+
Library" means either the Library or any derivative work under
|
131 |
+
copyright law: that is to say, a work containing the Library or a
|
132 |
+
portion of it, either verbatim or with modifications and/or translated
|
133 |
+
straightforwardly into another language. (Hereinafter, translation is
|
134 |
+
included without limitation in the term "modification".)
|
135 |
+
|
136 |
+
"Source code" for a work means the preferred form of the work for
|
137 |
+
making modifications to it. For a library, complete source code means
|
138 |
+
all the source code for all modules it contains, plus any associated
|
139 |
+
interface definition files, plus the scripts used to control compilation
|
140 |
+
and installation of the library.
|
141 |
+
|
142 |
+
Activities other than copying, distribution and modification are not
|
143 |
+
covered by this License; they are outside its scope. The act of
|
144 |
+
running a program using the Library is not restricted, and output from
|
145 |
+
such a program is covered only if its contents constitute a work based
|
146 |
+
on the Library (independent of the use of the Library in a tool for
|
147 |
+
writing it). Whether that is true depends on what the Library does
|
148 |
+
and what the program that uses the Library does.
|
149 |
+
|
150 |
+
1. You may copy and distribute verbatim copies of the Library's
|
151 |
+
complete source code as you receive it, in any medium, provided that
|
152 |
+
you conspicuously and appropriately publish on each copy an
|
153 |
+
appropriate copyright notice and disclaimer of warranty; keep intact
|
154 |
+
all the notices that refer to this License and to the absence of any
|
155 |
+
warranty; and distribute a copy of this License along with the
|
156 |
+
Library.
|
157 |
+
|
158 |
+
You may charge a fee for the physical act of transferring a copy,
|
159 |
+
and you may at your option offer warranty protection in exchange for a
|
160 |
+
fee.
|
161 |
+
|
162 |
+
2. You may modify your copy or copies of the Library or any portion
|
163 |
+
of it, thus forming a work based on the Library, and copy and
|
164 |
+
distribute such modifications or work under the terms of Section 1
|
165 |
+
above, provided that you also meet all of these conditions:
|
166 |
+
|
167 |
+
a) The modified work must itself be a software library.
|
168 |
+
|
169 |
+
b) You must cause the files modified to carry prominent notices
|
170 |
+
stating that you changed the files and the date of any change.
|
171 |
+
|
172 |
+
c) You must cause the whole of the work to be licensed at no
|
173 |
+
charge to all third parties under the terms of this License.
|
174 |
+
|
175 |
+
d) If a facility in the modified Library refers to a function or a
|
176 |
+
table of data to be supplied by an application program that uses
|
177 |
+
the facility, other than as an argument passed when the facility
|
178 |
+
is invoked, then you must make a good faith effort to ensure that,
|
179 |
+
in the event an application does not supply such function or
|
180 |
+
table, the facility still operates, and performs whatever part of
|
181 |
+
its purpose remains meaningful.
|
182 |
+
|
183 |
+
(For example, a function in a library to compute square roots has
|
184 |
+
a purpose that is entirely well-defined independent of the
|
185 |
+
application. Therefore, Subsection 2d requires that any
|
186 |
+
application-supplied function or table used by this function must
|
187 |
+
be optional: if the application does not supply it, the square
|
188 |
+
root function must still compute square roots.)
|
189 |
+
|
190 |
+
These requirements apply to the modified work as a whole. If
|
191 |
+
identifiable sections of that work are not derived from the Library,
|
192 |
+
and can be reasonably considered independent and separate works in
|
193 |
+
themselves, then this License, and its terms, do not apply to those
|
194 |
+
sections when you distribute them as separate works. But when you
|
195 |
+
distribute the same sections as part of a whole which is a work based
|
196 |
+
on the Library, the distribution of the whole must be on the terms of
|
197 |
+
this License, whose permissions for other licensees extend to the
|
198 |
+
entire whole, and thus to each and every part regardless of who wrote
|
199 |
+
it.
|
200 |
+
|
201 |
+
Thus, it is not the intent of this section to claim rights or contest
|
202 |
+
your rights to work written entirely by you; rather, the intent is to
|
203 |
+
exercise the right to control the distribution of derivative or
|
204 |
+
collective works based on the Library.
|
205 |
+
|
206 |
+
In addition, mere aggregation of another work not based on the Library
|
207 |
+
with the Library (or with a work based on the Library) on a volume of
|
208 |
+
a storage or distribution medium does not bring the other work under
|
209 |
+
the scope of this License.
|
210 |
+
|
211 |
+
3. You may opt to apply the terms of the ordinary GNU General Public
|
212 |
+
License instead of this License to a given copy of the Library. To do
|
213 |
+
this, you must alter all the notices that refer to this License, so
|
214 |
+
that they refer to the ordinary GNU General Public License, version 2,
|
215 |
+
instead of to this License. (If a newer version than version 2 of the
|
216 |
+
ordinary GNU General Public License has appeared, then you can specify
|
217 |
+
that version instead if you wish.) Do not make any other change in
|
218 |
+
these notices.
|
219 |
+
|
220 |
+
Once this change is made in a given copy, it is irreversible for
|
221 |
+
that copy, so the ordinary GNU General Public License applies to all
|
222 |
+
subsequent copies and derivative works made from that copy.
|
223 |
+
|
224 |
+
This option is useful when you wish to copy part of the code of
|
225 |
+
the Library into a program that is not a library.
|
226 |
+
|
227 |
+
4. You may copy and distribute the Library (or a portion or
|
228 |
+
derivative of it, under Section 2) in object code or executable form
|
229 |
+
under the terms of Sections 1 and 2 above provided that you accompany
|
230 |
+
it with the complete corresponding machine-readable source code, which
|
231 |
+
must be distributed under the terms of Sections 1 and 2 above on a
|
232 |
+
medium customarily used for software interchange.
|
233 |
+
|
234 |
+
If distribution of object code is made by offering access to copy
|
235 |
+
from a designated place, then offering equivalent access to copy the
|
236 |
+
source code from the same place satisfies the requirement to
|
237 |
+
distribute the source code, even though third parties are not
|
238 |
+
compelled to copy the source along with the object code.
|
239 |
+
|
240 |
+
5. A program that contains no derivative of any portion of the
|
241 |
+
Library, but is designed to work with the Library by being compiled or
|
242 |
+
linked with it, is called a "work that uses the Library". Such a
|
243 |
+
work, in isolation, is not a derivative work of the Library, and
|
244 |
+
therefore falls outside the scope of this License.
|
245 |
+
|
246 |
+
However, linking a "work that uses the Library" with the Library
|
247 |
+
creates an executable that is a derivative of the Library (because it
|
248 |
+
contains portions of the Library), rather than a "work that uses the
|
249 |
+
library". The executable is therefore covered by this License.
|
250 |
+
Section 6 states terms for distribution of such executables.
|
251 |
+
|
252 |
+
When a "work that uses the Library" uses material from a header file
|
253 |
+
that is part of the Library, the object code for the work may be a
|
254 |
+
derivative work of the Library even though the source code is not.
|
255 |
+
Whether this is true is especially significant if the work can be
|
256 |
+
linked without the Library, or if the work is itself a library. The
|
257 |
+
threshold for this to be true is not precisely defined by law.
|
258 |
+
|
259 |
+
If such an object file uses only numerical parameters, data
|
260 |
+
structure layouts and accessors, and small macros and small inline
|
261 |
+
functions (ten lines or less in length), then the use of the object
|
262 |
+
file is unrestricted, regardless of whether it is legally a derivative
|
263 |
+
work. (Executables containing this object code plus portions of the
|
264 |
+
Library will still fall under Section 6.)
|
265 |
+
|
266 |
+
Otherwise, if the work is a derivative of the Library, you may
|
267 |
+
distribute the object code for the work under the terms of Section 6.
|
268 |
+
Any executables containing that work also fall under Section 6,
|
269 |
+
whether or not they are linked directly with the Library itself.
|
270 |
+
|
271 |
+
6. As an exception to the Sections above, you may also combine or
|
272 |
+
link a "work that uses the Library" with the Library to produce a
|
273 |
+
work containing portions of the Library, and distribute that work
|
274 |
+
under terms of your choice, provided that the terms permit
|
275 |
+
modification of the work for the customer's own use and reverse
|
276 |
+
engineering for debugging such modifications.
|
277 |
+
|
278 |
+
You must give prominent notice with each copy of the work that the
|
279 |
+
Library is used in it and that the Library and its use are covered by
|
280 |
+
this License. You must supply a copy of this License. If the work
|
281 |
+
during execution displays copyright notices, you must include the
|
282 |
+
copyright notice for the Library among them, as well as a reference
|
283 |
+
directing the user to the copy of this License. Also, you must do one
|
284 |
+
of these things:
|
285 |
+
|
286 |
+
a) Accompany the work with the complete corresponding
|
287 |
+
machine-readable source code for the Library including whatever
|
288 |
+
changes were used in the work (which must be distributed under
|
289 |
+
Sections 1 and 2 above); and, if the work is an executable linked
|
290 |
+
with the Library, with the complete machine-readable "work that
|
291 |
+
uses the Library", as object code and/or source code, so that the
|
292 |
+
user can modify the Library and then relink to produce a modified
|
293 |
+
executable containing the modified Library. (It is understood
|
294 |
+
that the user who changes the contents of definitions files in the
|
295 |
+
Library will not necessarily be able to recompile the application
|
296 |
+
to use the modified definitions.)
|
297 |
+
|
298 |
+
b) Use a suitable shared library mechanism for linking with the
|
299 |
+
Library. A suitable mechanism is one that (1) uses at run time a
|
300 |
+
copy of the library already present on the user's computer system,
|
301 |
+
rather than copying library functions into the executable, and (2)
|
302 |
+
will operate properly with a modified version of the library, if
|
303 |
+
the user installs one, as long as the modified version is
|
304 |
+
interface-compatible with the version that the work was made with.
|
305 |
+
|
306 |
+
c) Accompany the work with a written offer, valid for at
|
307 |
+
least three years, to give the same user the materials
|
308 |
+
specified in Subsection 6a, above, for a charge no more
|
309 |
+
than the cost of performing this distribution.
|
310 |
+
|
311 |
+
d) If distribution of the work is made by offering access to copy
|
312 |
+
from a designated place, offer equivalent access to copy the above
|
313 |
+
specified materials from the same place.
|
314 |
+
|
315 |
+
e) Verify that the user has already received a copy of these
|
316 |
+
materials or that you have already sent this user a copy.
|
317 |
+
|
318 |
+
For an executable, the required form of the "work that uses the
|
319 |
+
Library" must include any data and utility programs needed for
|
320 |
+
reproducing the executable from it. However, as a special exception,
|
321 |
+
the materials to be distributed need not include anything that is
|
322 |
+
normally distributed (in either source or binary form) with the major
|
323 |
+
components (compiler, kernel, and so on) of the operating system on
|
324 |
+
which the executable runs, unless that component itself accompanies
|
325 |
+
the executable.
|
326 |
+
|
327 |
+
It may happen that this requirement contradicts the license
|
328 |
+
restrictions of other proprietary libraries that do not normally
|
329 |
+
accompany the operating system. Such a contradiction means you cannot
|
330 |
+
use both them and the Library together in an executable that you
|
331 |
+
distribute.
|
332 |
+
|
333 |
+
7. You may place library facilities that are a work based on the
|
334 |
+
Library side-by-side in a single library together with other library
|
335 |
+
facilities not covered by this License, and distribute such a combined
|
336 |
+
library, provided that the separate distribution of the work based on
|
337 |
+
the Library and of the other library facilities is otherwise
|
338 |
+
permitted, and provided that you do these two things:
|
339 |
+
|
340 |
+
a) Accompany the combined library with a copy of the same work
|
341 |
+
based on the Library, uncombined with any other library
|
342 |
+
facilities. This must be distributed under the terms of the
|
343 |
+
Sections above.
|
344 |
+
|
345 |
+
b) Give prominent notice with the combined library of the fact
|
346 |
+
that part of it is a work based on the Library, and explaining
|
347 |
+
where to find the accompanying uncombined form of the same work.
|
348 |
+
|
349 |
+
8. You may not copy, modify, sublicense, link with, or distribute
|
350 |
+
the Library except as expressly provided under this License. Any
|
351 |
+
attempt otherwise to copy, modify, sublicense, link with, or
|
352 |
+
distribute the Library is void, and will automatically terminate your
|
353 |
+
rights under this License. However, parties who have received copies,
|
354 |
+
or rights, from you under this License will not have their licenses
|
355 |
+
terminated so long as such parties remain in full compliance.
|
356 |
+
|
357 |
+
9. You are not required to accept this License, since you have not
|
358 |
+
signed it. However, nothing else grants you permission to modify or
|
359 |
+
distribute the Library or its derivative works. These actions are
|
360 |
+
prohibited by law if you do not accept this License. Therefore, by
|
361 |
+
modifying or distributing the Library (or any work based on the
|
362 |
+
Library), you indicate your acceptance of this License to do so, and
|
363 |
+
all its terms and conditions for copying, distributing or modifying
|
364 |
+
the Library or works based on it.
|
365 |
+
|
366 |
+
10. Each time you redistribute the Library (or any work based on the
|
367 |
+
Library), the recipient automatically receives a license from the
|
368 |
+
original licensor to copy, distribute, link with or modify the Library
|
369 |
+
subject to these terms and conditions. You may not impose any further
|
370 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
371 |
+
You are not responsible for enforcing compliance by third parties with
|
372 |
+
this License.
|
373 |
+
|
374 |
+
11. If, as a consequence of a court judgment or allegation of patent
|
375 |
+
infringement or for any other reason (not limited to patent issues),
|
376 |
+
conditions are imposed on you (whether by court order, agreement or
|
377 |
+
otherwise) that contradict the conditions of this License, they do not
|
378 |
+
excuse you from the conditions of this License. If you cannot
|
379 |
+
distribute so as to satisfy simultaneously your obligations under this
|
380 |
+
License and any other pertinent obligations, then as a consequence you
|
381 |
+
may not distribute the Library at all. For example, if a patent
|
382 |
+
license would not permit royalty-free redistribution of the Library by
|
383 |
+
all those who receive copies directly or indirectly through you, then
|
384 |
+
the only way you could satisfy both it and this License would be to
|
385 |
+
refrain entirely from distribution of the Library.
|
386 |
+
|
387 |
+
If any portion of this section is held invalid or unenforceable under any
|
388 |
+
particular circumstance, the balance of the section is intended to apply,
|
389 |
+
and the section as a whole is intended to apply in other circumstances.
|
390 |
+
|
391 |
+
It is not the purpose of this section to induce you to infringe any
|
392 |
+
patents or other property right claims or to contest validity of any
|
393 |
+
such claims; this section has the sole purpose of protecting the
|
394 |
+
integrity of the free software distribution system which is
|
395 |
+
implemented by public license practices. Many people have made
|
396 |
+
generous contributions to the wide range of software distributed
|
397 |
+
through that system in reliance on consistent application of that
|
398 |
+
system; it is up to the author/donor to decide if he or she is willing
|
399 |
+
to distribute software through any other system and a licensee cannot
|
400 |
+
impose that choice.
|
401 |
+
|
402 |
+
This section is intended to make thoroughly clear what is believed to
|
403 |
+
be a consequence of the rest of this License.
|
404 |
+
|
405 |
+
12. If the distribution and/or use of the Library is restricted in
|
406 |
+
certain countries either by patents or by copyrighted interfaces, the
|
407 |
+
original copyright holder who places the Library under this License may add
|
408 |
+
an explicit geographical distribution limitation excluding those countries,
|
409 |
+
so that distribution is permitted only in or among countries not thus
|
410 |
+
excluded. In such case, this License incorporates the limitation as if
|
411 |
+
written in the body of this License.
|
412 |
+
|
413 |
+
13. The Free Software Foundation may publish revised and/or new
|
414 |
+
versions of the Lesser General Public License from time to time.
|
415 |
+
Such new versions will be similar in spirit to the present version,
|
416 |
+
but may differ in detail to address new problems or concerns.
|
417 |
+
|
418 |
+
Each version is given a distinguishing version number. If the Library
|
419 |
+
specifies a version number of this License which applies to it and
|
420 |
+
"any later version", you have the option of following the terms and
|
421 |
+
conditions either of that version or of any later version published by
|
422 |
+
the Free Software Foundation. If the Library does not specify a
|
423 |
+
license version number, you may choose any version ever published by
|
424 |
+
the Free Software Foundation.
|
425 |
+
|
426 |
+
14. If you wish to incorporate parts of the Library into other free
|
427 |
+
programs whose distribution conditions are incompatible with these,
|
428 |
+
write to the author to ask for permission. For software which is
|
429 |
+
copyrighted by the Free Software Foundation, write to the Free
|
430 |
+
Software Foundation; we sometimes make exceptions for this. Our
|
431 |
+
decision will be guided by the two goals of preserving the free status
|
432 |
+
of all derivatives of our free software and of promoting the sharing
|
433 |
+
and reuse of software generally.
|
434 |
+
|
435 |
+
NO WARRANTY
|
436 |
+
|
437 |
+
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
438 |
+
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
439 |
+
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
440 |
+
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
441 |
+
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
442 |
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
443 |
+
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
444 |
+
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
445 |
+
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
446 |
+
|
447 |
+
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
448 |
+
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
449 |
+
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
450 |
+
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
451 |
+
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
452 |
+
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
453 |
+
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
454 |
+
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
455 |
+
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
456 |
+
DAMAGES.
|
457 |
+
|
458 |
+
END OF TERMS AND CONDITIONS
|
459 |
+
|
460 |
+
How to Apply These Terms to Your New Libraries
|
461 |
+
|
462 |
+
If you develop a new library, and you want it to be of the greatest
|
463 |
+
possible use to the public, we recommend making it free software that
|
464 |
+
everyone can redistribute and change. You can do so by permitting
|
465 |
+
redistribution under these terms (or, alternatively, under the terms of the
|
466 |
+
ordinary General Public License).
|
467 |
+
|
468 |
+
To apply these terms, attach the following notices to the library. It is
|
469 |
+
safest to attach them to the start of each source file to most effectively
|
470 |
+
convey the exclusion of warranty; and each file should have at least the
|
471 |
+
"copyright" line and a pointer to where the full notice is found.
|
472 |
+
|
473 |
+
<one line to give the library's name and a brief idea of what it does.>
|
474 |
+
Copyright (C) <year> <name of author>
|
475 |
+
|
476 |
+
This library is free software; you can redistribute it and/or
|
477 |
+
modify it under the terms of the GNU Lesser General Public
|
478 |
+
License as published by the Free Software Foundation; either
|
479 |
+
version 2.1 of the License, or (at your option) any later version.
|
480 |
+
|
481 |
+
This library is distributed in the hope that it will be useful,
|
482 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
483 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
484 |
+
Lesser General Public License for more details.
|
485 |
+
|
486 |
+
You should have received a copy of the GNU Lesser General Public
|
487 |
+
License along with this library; if not, write to the Free Software
|
488 |
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
489 |
+
|
490 |
+
Also add information on how to contact you by electronic and paper mail.
|
491 |
+
|
492 |
+
You should also get your employer (if you work as a programmer) or your
|
493 |
+
school, if any, to sign a "copyright disclaimer" for the library, if
|
494 |
+
necessary. Here is a sample; alter the names:
|
495 |
+
|
496 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
497 |
+
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
498 |
+
|
499 |
+
<signature of Ty Coon>, 1 April 1990
|
500 |
+
Ty Coon, President of Vice
|
501 |
+
|
502 |
+
That's all there is to it!
|
bin/ffmpeg/COPYING.LGPLv3
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU LESSER 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 |
+
|
9 |
+
This version of the GNU Lesser General Public License incorporates
|
10 |
+
the terms and conditions of version 3 of the GNU General Public
|
11 |
+
License, supplemented by the additional permissions listed below.
|
12 |
+
|
13 |
+
0. Additional Definitions.
|
14 |
+
|
15 |
+
As used herein, "this License" refers to version 3 of the GNU Lesser
|
16 |
+
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
17 |
+
General Public License.
|
18 |
+
|
19 |
+
"The Library" refers to a covered work governed by this License,
|
20 |
+
other than an Application or a Combined Work as defined below.
|
21 |
+
|
22 |
+
An "Application" is any work that makes use of an interface provided
|
23 |
+
by the Library, but which is not otherwise based on the Library.
|
24 |
+
Defining a subclass of a class defined by the Library is deemed a mode
|
25 |
+
of using an interface provided by the Library.
|
26 |
+
|
27 |
+
A "Combined Work" is a work produced by combining or linking an
|
28 |
+
Application with the Library. The particular version of the Library
|
29 |
+
with which the Combined Work was made is also called the "Linked
|
30 |
+
Version".
|
31 |
+
|
32 |
+
The "Minimal Corresponding Source" for a Combined Work means the
|
33 |
+
Corresponding Source for the Combined Work, excluding any source code
|
34 |
+
for portions of the Combined Work that, considered in isolation, are
|
35 |
+
based on the Application, and not on the Linked Version.
|
36 |
+
|
37 |
+
The "Corresponding Application Code" for a Combined Work means the
|
38 |
+
object code and/or source code for the Application, including any data
|
39 |
+
and utility programs needed for reproducing the Combined Work from the
|
40 |
+
Application, but excluding the System Libraries of the Combined Work.
|
41 |
+
|
42 |
+
1. Exception to Section 3 of the GNU GPL.
|
43 |
+
|
44 |
+
You may convey a covered work under sections 3 and 4 of this License
|
45 |
+
without being bound by section 3 of the GNU GPL.
|
46 |
+
|
47 |
+
2. Conveying Modified Versions.
|
48 |
+
|
49 |
+
If you modify a copy of the Library, and, in your modifications, a
|
50 |
+
facility refers to a function or data to be supplied by an Application
|
51 |
+
that uses the facility (other than as an argument passed when the
|
52 |
+
facility is invoked), then you may convey a copy of the modified
|
53 |
+
version:
|
54 |
+
|
55 |
+
a) under this License, provided that you make a good faith effort to
|
56 |
+
ensure that, in the event an Application does not supply the
|
57 |
+
function or data, the facility still operates, and performs
|
58 |
+
whatever part of its purpose remains meaningful, or
|
59 |
+
|
60 |
+
b) under the GNU GPL, with none of the additional permissions of
|
61 |
+
this License applicable to that copy.
|
62 |
+
|
63 |
+
3. Object Code Incorporating Material from Library Header Files.
|
64 |
+
|
65 |
+
The object code form of an Application may incorporate material from
|
66 |
+
a header file that is part of the Library. You may convey such object
|
67 |
+
code under terms of your choice, provided that, if the incorporated
|
68 |
+
material is not limited to numerical parameters, data structure
|
69 |
+
layouts and accessors, or small macros, inline functions and templates
|
70 |
+
(ten or fewer lines in length), you do both of the following:
|
71 |
+
|
72 |
+
a) Give prominent notice with each copy of the object code that the
|
73 |
+
Library is used in it and that the Library and its use are
|
74 |
+
covered by this License.
|
75 |
+
|
76 |
+
b) Accompany the object code with a copy of the GNU GPL and this license
|
77 |
+
document.
|
78 |
+
|
79 |
+
4. Combined Works.
|
80 |
+
|
81 |
+
You may convey a Combined Work under terms of your choice that,
|
82 |
+
taken together, effectively do not restrict modification of the
|
83 |
+
portions of the Library contained in the Combined Work and reverse
|
84 |
+
engineering for debugging such modifications, if you also do each of
|
85 |
+
the following:
|
86 |
+
|
87 |
+
a) Give prominent notice with each copy of the Combined Work that
|
88 |
+
the Library is used in it and that the Library and its use are
|
89 |
+
covered by this License.
|
90 |
+
|
91 |
+
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
92 |
+
document.
|
93 |
+
|
94 |
+
c) For a Combined Work that displays copyright notices during
|
95 |
+
execution, include the copyright notice for the Library among
|
96 |
+
these notices, as well as a reference directing the user to the
|
97 |
+
copies of the GNU GPL and this license document.
|
98 |
+
|
99 |
+
d) Do one of the following:
|
100 |
+
|
101 |
+
0) Convey the Minimal Corresponding Source under the terms of this
|
102 |
+
License, and the Corresponding Application Code in a form
|
103 |
+
suitable for, and under terms that permit, the user to
|
104 |
+
recombine or relink the Application with a modified version of
|
105 |
+
the Linked Version to produce a modified Combined Work, in the
|
106 |
+
manner specified by section 6 of the GNU GPL for conveying
|
107 |
+
Corresponding Source.
|
108 |
+
|
109 |
+
1) Use a suitable shared library mechanism for linking with the
|
110 |
+
Library. A suitable mechanism is one that (a) uses at run time
|
111 |
+
a copy of the Library already present on the user's computer
|
112 |
+
system, and (b) will operate properly with a modified version
|
113 |
+
of the Library that is interface-compatible with the Linked
|
114 |
+
Version.
|
115 |
+
|
116 |
+
e) Provide Installation Information, but only if you would otherwise
|
117 |
+
be required to provide such information under section 6 of the
|
118 |
+
GNU GPL, and only to the extent that such information is
|
119 |
+
necessary to install and execute a modified version of the
|
120 |
+
Combined Work produced by recombining or relinking the
|
121 |
+
Application with a modified version of the Linked Version. (If
|
122 |
+
you use option 4d0, the Installation Information must accompany
|
123 |
+
the Minimal Corresponding Source and Corresponding Application
|
124 |
+
Code. If you use option 4d1, you must provide the Installation
|
125 |
+
Information in the manner specified by section 6 of the GNU GPL
|
126 |
+
for conveying Corresponding Source.)
|
127 |
+
|
128 |
+
5. Combined Libraries.
|
129 |
+
|
130 |
+
You may place library facilities that are a work based on the
|
131 |
+
Library side by side in a single library together with other library
|
132 |
+
facilities that are not Applications and are not covered by this
|
133 |
+
License, and convey such a combined library under terms of your
|
134 |
+
choice, if you do both of the following:
|
135 |
+
|
136 |
+
a) Accompany the combined library with a copy of the same work based
|
137 |
+
on the Library, uncombined with any other library facilities,
|
138 |
+
conveyed under the terms of this License.
|
139 |
+
|
140 |
+
b) Give prominent notice with the combined library that part of it
|
141 |
+
is a work based on the Library, and explaining where to find the
|
142 |
+
accompanying uncombined form of the same work.
|
143 |
+
|
144 |
+
6. Revised Versions of the GNU Lesser General Public License.
|
145 |
+
|
146 |
+
The Free Software Foundation may publish revised and/or new versions
|
147 |
+
of the GNU Lesser General Public License from time to time. Such new
|
148 |
+
versions will be similar in spirit to the present version, but may
|
149 |
+
differ in detail to address new problems or concerns.
|
150 |
+
|
151 |
+
Each version is given a distinguishing version number. If the
|
152 |
+
Library as you received it specifies that a certain numbered version
|
153 |
+
of the GNU Lesser General Public License "or any later version"
|
154 |
+
applies to it, you have the option of following the terms and
|
155 |
+
conditions either of that published version or of any later version
|
156 |
+
published by the Free Software Foundation. If the Library as you
|
157 |
+
received it does not specify a version number of the GNU Lesser
|
158 |
+
General Public License, you may choose any version of the GNU Lesser
|
159 |
+
General Public License ever published by the Free Software Foundation.
|
160 |
+
|
161 |
+
If the Library as you received it specifies that a proxy can decide
|
162 |
+
whether future versions of the GNU Lesser General Public License shall
|
163 |
+
apply, that proxy's public statement of acceptance of any version is
|
164 |
+
permanent authorization for you to choose that version for the
|
165 |
+
Library.
|
bin/ffmpeg/CREDITS
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
See the Git history of the project (git://source.ffmpeg.org/ffmpeg) to
|
2 |
+
get the names of people who have contributed to FFmpeg.
|
3 |
+
|
4 |
+
To check the log, you can type the command "git log" in the FFmpeg
|
5 |
+
source directory, or browse the online repository at
|
6 |
+
http://source.ffmpeg.org.
|
bin/ffmpeg/Changelog
ADDED
@@ -0,0 +1,2070 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Entries are sorted chronologically from oldest to youngest within each release,
|
2 |
+
releases are sorted from youngest to oldest.
|
3 |
+
|
4 |
+
version 6.0:
|
5 |
+
- Radiance HDR image support
|
6 |
+
- ddagrab (Desktop Duplication) video capture filter
|
7 |
+
- ffmpeg -shortest_buf_duration option
|
8 |
+
- ffmpeg now requires threading to be built
|
9 |
+
- ffmpeg now runs every muxer in a separate thread
|
10 |
+
- Add new mode to cropdetect filter to detect crop-area based on motion vectors and edges
|
11 |
+
- VAAPI decoding and encoding for 10/12bit 422, 10/12bit 444 HEVC and VP9
|
12 |
+
- WBMP (Wireless Application Protocol Bitmap) image format
|
13 |
+
- a3dscope filter
|
14 |
+
- bonk decoder and demuxer
|
15 |
+
- Micronas SC-4 audio decoder
|
16 |
+
- LAF demuxer
|
17 |
+
- APAC decoder and demuxer
|
18 |
+
- Media 100i decoders
|
19 |
+
- DTS to PTS reorder bsf
|
20 |
+
- ViewQuest VQC decoder
|
21 |
+
- backgroundkey filter
|
22 |
+
- nvenc AV1 encoding support
|
23 |
+
- MediaCodec decoder via NDKMediaCodec
|
24 |
+
- MediaCodec encoder
|
25 |
+
- oneVPL support for QSV
|
26 |
+
- QSV AV1 encoder
|
27 |
+
- QSV decoding and encoding for 10/12bit 422, 10/12bit 444 HEVC and VP9
|
28 |
+
- showcwt multimedia filter
|
29 |
+
- corr video filter
|
30 |
+
- adrc audio filter
|
31 |
+
- afdelaysrc audio filter
|
32 |
+
- WADY DPCM decoder and demuxer
|
33 |
+
- CBD2 DPCM decoder
|
34 |
+
- ssim360 video filter
|
35 |
+
- ffmpeg CLI new options: -stats_enc_pre[_fmt], -stats_enc_post[_fmt],
|
36 |
+
-stats_mux_pre[_fmt]
|
37 |
+
- hstack_vaapi, vstack_vaapi and xstack_vaapi filters
|
38 |
+
- XMD ADPCM decoder and demuxer
|
39 |
+
- media100 to mjpegb bsf
|
40 |
+
- ffmpeg CLI new option: -fix_sub_duration_heartbeat
|
41 |
+
- WavArc decoder and demuxer
|
42 |
+
- CrystalHD decoders deprecated
|
43 |
+
- SDNS demuxer
|
44 |
+
- RKA decoder and demuxer
|
45 |
+
- filtergraph syntax in ffmpeg CLI now supports passing file contents
|
46 |
+
as option values, by prefixing option name with '/'
|
47 |
+
- hstack_qsv, vstack_qsv and xstack_qsv filters
|
48 |
+
|
49 |
+
|
50 |
+
version 5.1:
|
51 |
+
- add ipfs/ipns gateway support
|
52 |
+
- dialogue enhance audio filter
|
53 |
+
- dropped obsolete XvMC hwaccel
|
54 |
+
- pcm-bluray encoder
|
55 |
+
- DFPWM audio encoder/decoder and raw muxer/demuxer
|
56 |
+
- SITI filter
|
57 |
+
- Vizrt Binary Image encoder/decoder
|
58 |
+
- avsynctest source filter
|
59 |
+
- feedback video filter
|
60 |
+
- pixelize video filter
|
61 |
+
- colormap video filter
|
62 |
+
- colorchart video source filter
|
63 |
+
- multiply video filter
|
64 |
+
- PGS subtitle frame merge bitstream filter
|
65 |
+
- blurdetect filter
|
66 |
+
- tiltshelf audio filter
|
67 |
+
- QOI image format support
|
68 |
+
- ffprobe -o option
|
69 |
+
- virtualbass audio filter
|
70 |
+
- VDPAU AV1 hwaccel
|
71 |
+
- PHM image format support
|
72 |
+
- remap_opencl filter
|
73 |
+
- added chromakey_cuda filter
|
74 |
+
- added bilateral_cuda filter
|
75 |
+
|
76 |
+
|
77 |
+
version 5.0:
|
78 |
+
- ADPCM IMA Westwood encoder
|
79 |
+
- Westwood AUD muxer
|
80 |
+
- ADPCM IMA Acorn Replay decoder
|
81 |
+
- Argonaut Games CVG demuxer
|
82 |
+
- Argonaut Games CVG muxer
|
83 |
+
- Concatf protocol
|
84 |
+
- afwtdn audio filter
|
85 |
+
- audio and video segment filters
|
86 |
+
- Apple Graphics (SMC) encoder
|
87 |
+
- hsvkey and hsvhold video filters
|
88 |
+
- adecorrelate audio filter
|
89 |
+
- atilt audio filter
|
90 |
+
- grayworld video filter
|
91 |
+
- AV1 Low overhead bitstream format muxer
|
92 |
+
- swscale slice threading
|
93 |
+
- MSN Siren decoder
|
94 |
+
- scharr video filter
|
95 |
+
- apsyclip audio filter
|
96 |
+
- morpho video filter
|
97 |
+
- amr parser
|
98 |
+
- (a)latency filters
|
99 |
+
- GEM Raster image decoder
|
100 |
+
- asdr audio filter
|
101 |
+
- speex decoder
|
102 |
+
- limitdiff video filter
|
103 |
+
- xcorrelate video filter
|
104 |
+
- varblur video filter
|
105 |
+
- huesaturation video filter
|
106 |
+
- colorspectrum source video filter
|
107 |
+
- RTP packetizer for uncompressed video (RFC 4175)
|
108 |
+
- bitpacked encoder
|
109 |
+
- VideoToolbox VP9 hwaccel
|
110 |
+
- VideoToolbox ProRes hwaccel
|
111 |
+
- support loongarch.
|
112 |
+
- aspectralstats audio filter
|
113 |
+
- adynamicsmooth audio filter
|
114 |
+
- libplacebo filter
|
115 |
+
- vflip_vulkan, hflip_vulkan and flip_vulkan filters
|
116 |
+
- adynamicequalizer audio filter
|
117 |
+
- yadif_videotoolbox filter
|
118 |
+
- VideoToolbox ProRes encoder
|
119 |
+
- anlmf audio filter
|
120 |
+
- IMF demuxer (experimental)
|
121 |
+
|
122 |
+
|
123 |
+
version 4.4:
|
124 |
+
- AudioToolbox output device
|
125 |
+
- MacCaption demuxer
|
126 |
+
- PGX decoder
|
127 |
+
- chromanr video filter
|
128 |
+
- VDPAU accelerated HEVC 10/12bit decoding
|
129 |
+
- ADPCM IMA Ubisoft APM encoder
|
130 |
+
- Rayman 2 APM muxer
|
131 |
+
- AV1 encoding support SVT-AV1
|
132 |
+
- Cineform HD encoder
|
133 |
+
- ADPCM Argonaut Games encoder
|
134 |
+
- Argonaut Games ASF muxer
|
135 |
+
- AV1 Low overhead bitstream format demuxer
|
136 |
+
- RPZA video encoder
|
137 |
+
- ADPCM IMA MOFLEX decoder
|
138 |
+
- MobiClip FastAudio decoder
|
139 |
+
- MobiClip video decoder
|
140 |
+
- MOFLEX demuxer
|
141 |
+
- MODS demuxer
|
142 |
+
- PhotoCD decoder
|
143 |
+
- MCA demuxer
|
144 |
+
- AV1 decoder (Hardware acceleration used only)
|
145 |
+
- SVS demuxer
|
146 |
+
- Argonaut Games BRP demuxer
|
147 |
+
- DAT demuxer
|
148 |
+
- aax demuxer
|
149 |
+
- IPU decoder, parser and demuxer
|
150 |
+
- Intel QSV-accelerated AV1 decoding
|
151 |
+
- Argonaut Games Video decoder
|
152 |
+
- libwavpack encoder removed
|
153 |
+
- ACE demuxer
|
154 |
+
- AVS3 demuxer
|
155 |
+
- AVS3 video decoder via libuavs3d
|
156 |
+
- Cintel RAW decoder
|
157 |
+
- VDPAU accelerated VP9 10/12bit decoding
|
158 |
+
- afreqshift and aphaseshift filters
|
159 |
+
- High Voltage Software ADPCM encoder
|
160 |
+
- LEGO Racers ALP (.tun & .pcm) muxer
|
161 |
+
- AV1 VAAPI decoder
|
162 |
+
- adenorm filter
|
163 |
+
- ADPCM IMA AMV encoder
|
164 |
+
- AMV muxer
|
165 |
+
- NVDEC AV1 hwaccel
|
166 |
+
- DXVA2/D3D11VA hardware accelerated AV1 decoding
|
167 |
+
- speechnorm filter
|
168 |
+
- SpeedHQ encoder
|
169 |
+
- asupercut filter
|
170 |
+
- asubcut filter
|
171 |
+
- Microsoft Paint (MSP) version 2 decoder
|
172 |
+
- Microsoft Paint (MSP) demuxer
|
173 |
+
- AV1 monochrome encoding support via libaom >= 2.0.1
|
174 |
+
- asuperpass and asuperstop filter
|
175 |
+
- shufflepixels filter
|
176 |
+
- tmidequalizer filter
|
177 |
+
- estdif filter
|
178 |
+
- epx filter
|
179 |
+
- Dolby E parser
|
180 |
+
- shear filter
|
181 |
+
- kirsch filter
|
182 |
+
- colortemperature filter
|
183 |
+
- colorcontrast filter
|
184 |
+
- PFM encoder
|
185 |
+
- colorcorrect filter
|
186 |
+
- binka demuxer
|
187 |
+
- XBM parser
|
188 |
+
- xbm_pipe demuxer
|
189 |
+
- colorize filter
|
190 |
+
- CRI parser
|
191 |
+
- aexciter audio filter
|
192 |
+
- exposure video filter
|
193 |
+
- monochrome video filter
|
194 |
+
- setts bitstream filter
|
195 |
+
- vif video filter
|
196 |
+
- OpenEXR image encoder
|
197 |
+
- Simbiosis IMX decoder
|
198 |
+
- Simbiosis IMX demuxer
|
199 |
+
- Digital Pictures SGA demuxer and decoders
|
200 |
+
- TTML subtitle encoder and muxer
|
201 |
+
- identity video filter
|
202 |
+
- msad video filter
|
203 |
+
- gophers protocol
|
204 |
+
- RIST protocol via librist
|
205 |
+
|
206 |
+
|
207 |
+
version 4.3:
|
208 |
+
- v360 filter
|
209 |
+
- Intel QSV-accelerated MJPEG decoding
|
210 |
+
- Intel QSV-accelerated VP9 decoding
|
211 |
+
- Support for TrueHD in mp4
|
212 |
+
- Support AMD AMF encoder on Linux (via Vulkan)
|
213 |
+
- IMM5 video decoder
|
214 |
+
- ZeroMQ protocol
|
215 |
+
- support Sipro ACELP.KELVIN decoding
|
216 |
+
- streamhash muxer
|
217 |
+
- sierpinski video source
|
218 |
+
- scroll video filter
|
219 |
+
- photosensitivity filter
|
220 |
+
- anlms filter
|
221 |
+
- arnndn filter
|
222 |
+
- bilateral filter
|
223 |
+
- maskedmin and maskedmax filters
|
224 |
+
- VDPAU VP9 hwaccel
|
225 |
+
- median filter
|
226 |
+
- QSV-accelerated VP9 encoding
|
227 |
+
- AV1 encoding support via librav1e
|
228 |
+
- AV1 frame merge bitstream filter
|
229 |
+
- AV1 Annex B demuxer
|
230 |
+
- axcorrelate filter
|
231 |
+
- mvdv decoder
|
232 |
+
- mvha decoder
|
233 |
+
- MPEG-H 3D Audio support in mp4
|
234 |
+
- thistogram filter
|
235 |
+
- freezeframes filter
|
236 |
+
- Argonaut Games ADPCM decoder
|
237 |
+
- Argonaut Games ASF demuxer
|
238 |
+
- xfade video filter
|
239 |
+
- xfade_opencl filter
|
240 |
+
- afirsrc audio filter source
|
241 |
+
- pad_opencl filter
|
242 |
+
- Simon & Schuster Interactive ADPCM decoder
|
243 |
+
- Real War KVAG demuxer
|
244 |
+
- CDToons video decoder
|
245 |
+
- siren audio decoder
|
246 |
+
- Rayman 2 ADPCM decoder
|
247 |
+
- Rayman 2 APM demuxer
|
248 |
+
- cas video filter
|
249 |
+
- High Voltage Software ADPCM decoder
|
250 |
+
- LEGO Racers ALP (.tun & .pcm) demuxer
|
251 |
+
- AMQP 0-9-1 protocol (RabbitMQ)
|
252 |
+
- Vulkan support
|
253 |
+
- avgblur_vulkan, overlay_vulkan, scale_vulkan and chromaber_vulkan filters
|
254 |
+
- ADPCM IMA MTF decoder
|
255 |
+
- FWSE demuxer
|
256 |
+
- DERF DPCM decoder
|
257 |
+
- DERF demuxer
|
258 |
+
- CRI HCA decoder
|
259 |
+
- CRI HCA demuxer
|
260 |
+
- overlay_cuda filter
|
261 |
+
- switch from AvxSynth to AviSynth+ on Linux
|
262 |
+
- mv30 decoder
|
263 |
+
- Expanded styling support for 3GPP Timed Text Subtitles (movtext)
|
264 |
+
- WebP parser
|
265 |
+
- tmedian filter
|
266 |
+
- maskedthreshold filter
|
267 |
+
- Support for muxing pcm and pgs in m2ts
|
268 |
+
- Cunning Developments ADPCM decoder
|
269 |
+
- asubboost filter
|
270 |
+
- Pro Pinball Series Soundbank demuxer
|
271 |
+
- pcm_rechunk bitstream filter
|
272 |
+
- scdet filter
|
273 |
+
- NotchLC decoder
|
274 |
+
- gradients source video filter
|
275 |
+
- MediaFoundation encoder wrapper
|
276 |
+
- untile filter
|
277 |
+
- Simon & Schuster Interactive ADPCM encoder
|
278 |
+
- PFM decoder
|
279 |
+
- dblur video filter
|
280 |
+
- Real War KVAG muxer
|
281 |
+
|
282 |
+
|
283 |
+
version 4.2:
|
284 |
+
- tpad filter
|
285 |
+
- AV1 decoding support through libdav1d
|
286 |
+
- dedot filter
|
287 |
+
- chromashift and rgbashift filters
|
288 |
+
- freezedetect filter
|
289 |
+
- truehd_core bitstream filter
|
290 |
+
- dhav demuxer
|
291 |
+
- PCM-DVD encoder
|
292 |
+
- GIF parser
|
293 |
+
- vividas demuxer
|
294 |
+
- hymt decoder
|
295 |
+
- anlmdn filter
|
296 |
+
- maskfun filter
|
297 |
+
- hcom demuxer and decoder
|
298 |
+
- ARBC decoder
|
299 |
+
- libaribb24 based ARIB STD-B24 caption support (profiles A and C)
|
300 |
+
- Support decoding of HEVC 4:4:4 content in nvdec and cuviddec
|
301 |
+
- removed libndi-newtek
|
302 |
+
- agm decoder
|
303 |
+
- KUX demuxer
|
304 |
+
- AV1 frame split bitstream filter
|
305 |
+
- lscr decoder
|
306 |
+
- lagfun filter
|
307 |
+
- asoftclip filter
|
308 |
+
- Support decoding of HEVC 4:4:4 content in vdpau
|
309 |
+
- colorhold filter
|
310 |
+
- xmedian filter
|
311 |
+
- asr filter
|
312 |
+
- showspatial multimedia filter
|
313 |
+
- VP4 video decoder
|
314 |
+
- IFV demuxer
|
315 |
+
- derain filter
|
316 |
+
- deesser filter
|
317 |
+
- mov muxer writes tracks with unspecified language instead of English by default
|
318 |
+
- add support for using clang to compile CUDA kernels
|
319 |
+
|
320 |
+
|
321 |
+
version 4.1:
|
322 |
+
- deblock filter
|
323 |
+
- tmix filter
|
324 |
+
- amplify filter
|
325 |
+
- fftdnoiz filter
|
326 |
+
- aderivative and aintegral audio filters
|
327 |
+
- pal75bars and pal100bars video filter sources
|
328 |
+
- support mbedTLS based TLS
|
329 |
+
- adeclick filter
|
330 |
+
- adeclip filter
|
331 |
+
- libtensorflow backend for DNN based filters like srcnn
|
332 |
+
- vc1 decoder is now bit-exact
|
333 |
+
- ATRAC9 decoder
|
334 |
+
- lensfun wrapper filter
|
335 |
+
- colorconstancy filter
|
336 |
+
- AVS2 video decoder via libdavs2
|
337 |
+
- IMM4 video decoder
|
338 |
+
- Brooktree ProSumer video decoder
|
339 |
+
- MatchWare Screen Capture Codec decoder
|
340 |
+
- WinCam Motion Video decoder
|
341 |
+
- 1D LUT filter (lut1d)
|
342 |
+
- RemotelyAnywhere Screen Capture decoder
|
343 |
+
- cue and acue filters
|
344 |
+
- support for AV1 in MP4
|
345 |
+
- transpose_npp filter
|
346 |
+
- AVS2 video encoder via libxavs2
|
347 |
+
- amultiply filter
|
348 |
+
- Block-Matching 3d (bm3d) denoising filter
|
349 |
+
- acrossover filter
|
350 |
+
- ilbc decoder
|
351 |
+
- audio denoiser as afftdn filter
|
352 |
+
- AV1 parser
|
353 |
+
- SER demuxer
|
354 |
+
- sinc audio filter source
|
355 |
+
- chromahold filter
|
356 |
+
- setparams filter
|
357 |
+
- vibrance filter
|
358 |
+
- decoding S12M timecode in h264
|
359 |
+
- xstack filter
|
360 |
+
- pcm vidc decoder and encoder
|
361 |
+
- (a)graphmonitor filter
|
362 |
+
- yadif_cuda filter
|
363 |
+
|
364 |
+
|
365 |
+
version 4.0:
|
366 |
+
- Bitstream filters for editing metadata in H.264, HEVC and MPEG-2 streams
|
367 |
+
- Dropped support for OpenJPEG versions 2.0 and below. Using OpenJPEG now
|
368 |
+
requires 2.1 (or later) and pkg-config.
|
369 |
+
- VDA dropped (use VideoToolbox instead)
|
370 |
+
- MagicYUV encoder
|
371 |
+
- Raw AMR-NB and AMR-WB demuxers
|
372 |
+
- TiVo ty/ty+ demuxer
|
373 |
+
- Intel QSV-accelerated MJPEG encoding
|
374 |
+
- PCE support for extended channel layouts in the AAC encoder
|
375 |
+
- native aptX and aptX HD encoder and decoder
|
376 |
+
- Raw aptX and aptX HD muxer and demuxer
|
377 |
+
- NVIDIA NVDEC-accelerated H.264, HEVC, MJPEG, MPEG-1/2/4, VC1, VP8/9 hwaccel decoding
|
378 |
+
- Intel QSV-accelerated overlay filter
|
379 |
+
- mcompand audio filter
|
380 |
+
- acontrast audio filter
|
381 |
+
- OpenCL overlay filter
|
382 |
+
- video mix filter
|
383 |
+
- video normalize filter
|
384 |
+
- audio lv2 wrapper filter
|
385 |
+
- VAAPI MJPEG and VP8 decoding
|
386 |
+
- AMD AMF H.264 and HEVC encoders
|
387 |
+
- video fillborders filter
|
388 |
+
- video setrange filter
|
389 |
+
- nsp demuxer
|
390 |
+
- support LibreSSL (via libtls)
|
391 |
+
- AVX-512/ZMM support added
|
392 |
+
- Dropped support for building for Windows XP. The minimum supported Windows
|
393 |
+
version is Windows Vista.
|
394 |
+
- deconvolve video filter
|
395 |
+
- entropy video filter
|
396 |
+
- hilbert audio filter source
|
397 |
+
- aiir audio filter
|
398 |
+
- aiff: add support for CD-ROM XA ADPCM
|
399 |
+
- Removed the ffserver program
|
400 |
+
- Removed the ffmenc and ffmdec muxer and demuxer
|
401 |
+
- VideoToolbox HEVC encoder and hwaccel
|
402 |
+
- VAAPI-accelerated ProcAmp (color balance), denoise and sharpness filters
|
403 |
+
- Add android_camera indev
|
404 |
+
- codec2 en/decoding via libcodec2
|
405 |
+
- muxer/demuxer for raw codec2 files and .c2 files
|
406 |
+
- Moved nvidia codec headers into an external repository.
|
407 |
+
They can be found at http://git.videolan.org/?p=ffmpeg/nv-codec-headers.git
|
408 |
+
- native SBC encoder and decoder
|
409 |
+
- drmeter audio filter
|
410 |
+
- hapqa_extract bitstream filter
|
411 |
+
- filter_units bitstream filter
|
412 |
+
- AV1 Support through libaom
|
413 |
+
- E-AC-3 dependent frames support
|
414 |
+
- bitstream filter for extracting E-AC-3 core
|
415 |
+
- Haivision SRT protocol via libsrt
|
416 |
+
- segafilm muxer
|
417 |
+
- vfrdet filter
|
418 |
+
- SRCNN filter
|
419 |
+
|
420 |
+
|
421 |
+
version 3.4:
|
422 |
+
- deflicker video filter
|
423 |
+
- doubleweave video filter
|
424 |
+
- lumakey video filter
|
425 |
+
- pixscope video filter
|
426 |
+
- oscilloscope video filter
|
427 |
+
- config.log and other configuration files moved into ffbuild/ directory
|
428 |
+
- update cuvid/nvenc headers to Video Codec SDK 8.0.14
|
429 |
+
- afir audio filter
|
430 |
+
- scale_cuda CUDA based video scale filter
|
431 |
+
- librsvg support for svg rasterization
|
432 |
+
- crossfeed audio filter
|
433 |
+
- spec compliant VP9 muxing support in MP4
|
434 |
+
- remove the libnut muxer/demuxer wrappers
|
435 |
+
- remove the libschroedinger encoder/decoder wrappers
|
436 |
+
- surround audio filter
|
437 |
+
- sofalizer filter switched to libmysofa
|
438 |
+
- Gremlin Digital Video demuxer and decoder
|
439 |
+
- headphone audio filter
|
440 |
+
- superequalizer audio filter
|
441 |
+
- roberts video filter
|
442 |
+
- The x86 assembler default switched from yasm to nasm, pass
|
443 |
+
--x86asmexe=yasm to configure to restore the old behavior.
|
444 |
+
- additional frame format support for Interplay MVE movies
|
445 |
+
- support for decoding through D3D11VA in ffmpeg
|
446 |
+
- limiter video filter
|
447 |
+
- libvmaf video filter
|
448 |
+
- Dolby E decoder and SMPTE 337M demuxer
|
449 |
+
- unpremultiply video filter
|
450 |
+
- tlut2 video filter
|
451 |
+
- floodfill video filter
|
452 |
+
- pseudocolor video filter
|
453 |
+
- raw G.726 muxer and demuxer, left- and right-justified
|
454 |
+
- NewTek NDI input/output device
|
455 |
+
- Some video filters with several inputs now use a common set of options:
|
456 |
+
blend, libvmaf, lut3d, overlay, psnr, ssim.
|
457 |
+
They must always be used by name.
|
458 |
+
- FITS demuxer and decoder
|
459 |
+
- FITS muxer and encoder
|
460 |
+
- add --disable-autodetect build switch
|
461 |
+
- drop deprecated qtkit input device (use avfoundation instead)
|
462 |
+
- despill video filter
|
463 |
+
- haas audio filter
|
464 |
+
- SUP/PGS subtitle muxer
|
465 |
+
- convolve video filter
|
466 |
+
- VP9 tile threading support
|
467 |
+
- KMS screen grabber
|
468 |
+
- CUDA thumbnail filter
|
469 |
+
- V4L2 mem2mem HW assisted codecs
|
470 |
+
- Rockchip MPP hardware decoding
|
471 |
+
- vmafmotion video filter
|
472 |
+
- use MIME type "G726" for little-endian G.726, "AAL2-G726" for big-endian G.726
|
473 |
+
|
474 |
+
|
475 |
+
version 3.3:
|
476 |
+
- CrystalHD decoder moved to new decode API
|
477 |
+
- add internal ebur128 library, remove external libebur128 dependency
|
478 |
+
- Pro-MPEG CoP #3-R2 FEC protocol
|
479 |
+
- premultiply video filter
|
480 |
+
- Support for spherical videos
|
481 |
+
- configure now fails if autodetect-libraries are requested but not found
|
482 |
+
- PSD Decoder
|
483 |
+
- 16.8 floating point pcm decoder
|
484 |
+
- 24.0 floating point pcm decoder
|
485 |
+
- Apple Pixlet decoder
|
486 |
+
- QDMC audio decoder
|
487 |
+
- NewTek SpeedHQ decoder
|
488 |
+
- MIDI Sample Dump Standard demuxer
|
489 |
+
- readeia608 filter
|
490 |
+
- Sample Dump eXchange demuxer
|
491 |
+
- abitscope multimedia filter
|
492 |
+
- Scenarist Closed Captions demuxer and muxer
|
493 |
+
- threshold filter
|
494 |
+
- midequalizer filter
|
495 |
+
- Optimal Huffman tables for (M)JPEG encoding
|
496 |
+
- VAAPI-accelerated MPEG-2 and VP8 encoding
|
497 |
+
- FM Screen Capture Codec decoder
|
498 |
+
- native Opus encoder
|
499 |
+
- ScreenPressor decoder
|
500 |
+
- incomplete ClearVideo decoder
|
501 |
+
- Intel QSV video scaling and deinterlacing filters
|
502 |
+
- Support MOV with multiple sample description tables
|
503 |
+
- XPM decoder
|
504 |
+
- Removed the legacy X11 screen grabber, use XCB instead
|
505 |
+
- MPEG-7 Video Signature filter
|
506 |
+
- Removed asyncts filter (use af_aresample instead)
|
507 |
+
- Intel QSV-accelerated VP8 video decoding
|
508 |
+
- VAAPI-accelerated deinterlacing
|
509 |
+
|
510 |
+
|
511 |
+
version 3.2:
|
512 |
+
- libopenmpt demuxer
|
513 |
+
- tee protocol
|
514 |
+
- Changed metadata print option to accept general urls
|
515 |
+
- Alias muxer for Ogg Video (.ogv)
|
516 |
+
- VP8 in Ogg muxing
|
517 |
+
- curves filter doesn't automatically insert points at x=0 and x=1 anymore
|
518 |
+
- 16-bit support in curves filter and selectivecolor filter
|
519 |
+
- OpenH264 decoder wrapper
|
520 |
+
- MediaCodec H.264/HEVC/MPEG-4/VP8/VP9 hwaccel
|
521 |
+
- True Audio (TTA) muxer
|
522 |
+
- crystalizer audio filter
|
523 |
+
- acrusher audio filter
|
524 |
+
- bitplanenoise video filter
|
525 |
+
- floating point support in als decoder
|
526 |
+
- fifo muxer
|
527 |
+
- maskedclamp filter
|
528 |
+
- hysteresis filter
|
529 |
+
- lut2 filter
|
530 |
+
- yuvtestsrc filter
|
531 |
+
- CUDA CUVID H.263/VP8/VP9/10 bit HEVC (Dithered) Decoding
|
532 |
+
- vaguedenoiser filter
|
533 |
+
- added threads option per filter instance
|
534 |
+
- weave filter
|
535 |
+
- gblur filter
|
536 |
+
- avgblur filter
|
537 |
+
- sobel and prewitt filter
|
538 |
+
- MediaCodec HEVC/MPEG-4/VP8/VP9 decoding
|
539 |
+
- Meridian Lossless Packing (MLP) / TrueHD encoder
|
540 |
+
- Non-Local Means (nlmeans) denoising filter
|
541 |
+
- sdl2 output device and ffplay support
|
542 |
+
- sdl1 output device and sdl1 support removed
|
543 |
+
- extended mov edit list support
|
544 |
+
- libfaac encoder removed
|
545 |
+
- Matroska muxer now writes CRC32 elements by default in all Level 1 elements
|
546 |
+
- sidedata video and asidedata audio filter
|
547 |
+
- Changed mapping of rtp MIME type G726 to codec g726le.
|
548 |
+
- spec compliant VAAPI/DXVA2 VC-1 decoding of slices in frame-coded images
|
549 |
+
|
550 |
+
|
551 |
+
version 3.1:
|
552 |
+
- DXVA2-accelerated HEVC Main10 decoding
|
553 |
+
- fieldhint filter
|
554 |
+
- loop video filter and aloop audio filter
|
555 |
+
- Bob Weaver deinterlacing filter
|
556 |
+
- firequalizer filter
|
557 |
+
- datascope filter
|
558 |
+
- bench and abench filters
|
559 |
+
- ciescope filter
|
560 |
+
- protocol blacklisting API
|
561 |
+
- MediaCodec H264 decoding
|
562 |
+
- VC-2 HQ RTP payload format (draft v1) depacketizer and packetizer
|
563 |
+
- VP9 RTP payload format (draft v2) packetizer
|
564 |
+
- AudioToolbox audio decoders
|
565 |
+
- AudioToolbox audio encoders
|
566 |
+
- coreimage filter (GPU based image filtering on OSX)
|
567 |
+
- libdcadec removed
|
568 |
+
- bitstream filter for extracting DTS core
|
569 |
+
- ADPCM IMA DAT4 decoder
|
570 |
+
- musx demuxer
|
571 |
+
- aix demuxer
|
572 |
+
- remap filter
|
573 |
+
- hash and framehash muxers
|
574 |
+
- colorspace filter
|
575 |
+
- hdcd filter
|
576 |
+
- readvitc filter
|
577 |
+
- VAAPI-accelerated format conversion and scaling
|
578 |
+
- libnpp/CUDA-accelerated format conversion and scaling
|
579 |
+
- Duck TrueMotion 2.0 Real Time decoder
|
580 |
+
- Wideband Single-bit Data (WSD) demuxer
|
581 |
+
- VAAPI-accelerated H.264/HEVC/MJPEG encoding
|
582 |
+
- DTS Express (LBR) decoder
|
583 |
+
- Generic OpenMAX IL encoder with support for Raspberry Pi
|
584 |
+
- IFF ANIM demuxer & decoder
|
585 |
+
- Direct Stream Transfer (DST) decoder
|
586 |
+
- loudnorm filter
|
587 |
+
- MTAF demuxer and decoder
|
588 |
+
- MagicYUV decoder
|
589 |
+
- OpenExr improvements (tile data and B44/B44A support)
|
590 |
+
- BitJazz SheerVideo decoder
|
591 |
+
- CUDA CUVID H264/HEVC decoder
|
592 |
+
- 10-bit depth support in native utvideo decoder
|
593 |
+
- libutvideo wrapper removed
|
594 |
+
- YUY2 Lossless Codec decoder
|
595 |
+
- VideoToolbox H.264 encoder
|
596 |
+
|
597 |
+
|
598 |
+
version 3.0:
|
599 |
+
- Common Encryption (CENC) MP4 encoding and decoding support
|
600 |
+
- DXV decoding
|
601 |
+
- extrastereo filter
|
602 |
+
- ocr filter
|
603 |
+
- alimiter filter
|
604 |
+
- stereowiden filter
|
605 |
+
- stereotools filter
|
606 |
+
- rubberband filter
|
607 |
+
- tremolo filter
|
608 |
+
- agate filter
|
609 |
+
- chromakey filter
|
610 |
+
- maskedmerge filter
|
611 |
+
- Screenpresso SPV1 decoding
|
612 |
+
- chromaprint fingerprinting muxer
|
613 |
+
- ffplay dynamic volume control
|
614 |
+
- displace filter
|
615 |
+
- selectivecolor filter
|
616 |
+
- extensive native AAC encoder improvements and removal of experimental flag
|
617 |
+
- ADPCM PSX decoder
|
618 |
+
- 3dostr, dcstr, fsb, genh, vag, xvag, ads, msf, svag & vpk demuxer
|
619 |
+
- zscale filter
|
620 |
+
- wve demuxer
|
621 |
+
- zero-copy Intel QSV transcoding in ffmpeg
|
622 |
+
- shuffleframes filter
|
623 |
+
- SDX2 DPCM decoder
|
624 |
+
- vibrato filter
|
625 |
+
- innoHeim/Rsupport Screen Capture Codec decoder
|
626 |
+
- ADPCM AICA decoder
|
627 |
+
- Interplay ACM demuxer and audio decoder
|
628 |
+
- XMA1 & XMA2 decoder
|
629 |
+
- realtime filter
|
630 |
+
- anoisesrc audio filter source
|
631 |
+
- IVR demuxer
|
632 |
+
- compensationdelay filter
|
633 |
+
- acompressor filter
|
634 |
+
- support encoding 16-bit RLE SGI images
|
635 |
+
- apulsator filter
|
636 |
+
- sidechaingate audio filter
|
637 |
+
- mipsdspr1 option has been renamed to mipsdsp
|
638 |
+
- aemphasis filter
|
639 |
+
- mips32r5 option has been removed
|
640 |
+
- mips64r6 option has been removed
|
641 |
+
- DXVA2-accelerated VP9 decoding
|
642 |
+
- SOFAlizer: virtual binaural acoustics filter
|
643 |
+
- VAAPI VP9 hwaccel
|
644 |
+
- audio high-order multiband parametric equalizer
|
645 |
+
- automatic bitstream filtering
|
646 |
+
- showspectrumpic filter
|
647 |
+
- libstagefright support removed
|
648 |
+
- spectrumsynth filter
|
649 |
+
- ahistogram filter
|
650 |
+
- only seek with the right mouse button in ffplay
|
651 |
+
- toggle full screen when double-clicking with the left mouse button in ffplay
|
652 |
+
- afftfilt filter
|
653 |
+
- convolution filter
|
654 |
+
- libquvi support removed
|
655 |
+
- support for dvaudio in wav and avi
|
656 |
+
- libaacplus and libvo-aacenc support removed
|
657 |
+
- Cineform HD decoder
|
658 |
+
- new DCA decoder with full support for DTS-HD extensions
|
659 |
+
- significant performance improvements in Windows Television (WTV) demuxer
|
660 |
+
- nnedi deinterlacer
|
661 |
+
- streamselect video and astreamselect audio filter
|
662 |
+
- swaprect filter
|
663 |
+
- metadata video and ametadata audio filter
|
664 |
+
- SMPTE VC-2 HQ profile support for the Dirac decoder
|
665 |
+
- SMPTE VC-2 native encoder supporting the HQ profile
|
666 |
+
|
667 |
+
|
668 |
+
version 2.8:
|
669 |
+
- colorkey video filter
|
670 |
+
- BFSTM/BCSTM demuxer
|
671 |
+
- little-endian ADPCM_THP decoder
|
672 |
+
- Hap decoder and encoder
|
673 |
+
- DirectDraw Surface image/texture decoder
|
674 |
+
- ssim filter
|
675 |
+
- optional new ASF demuxer
|
676 |
+
- showvolume filter
|
677 |
+
- Many improvements to the JPEG 2000 decoder
|
678 |
+
- Go2Meeting decoding support
|
679 |
+
- adrawgraph audio and drawgraph video filter
|
680 |
+
- removegrain video filter
|
681 |
+
- Intel QSV-accelerated MPEG-2 video and HEVC encoding
|
682 |
+
- Intel QSV-accelerated MPEG-2 video and HEVC decoding
|
683 |
+
- Intel QSV-accelerated VC-1 video decoding
|
684 |
+
- libkvazaar HEVC encoder
|
685 |
+
- erosion, dilation, deflate and inflate video filters
|
686 |
+
- Dynamic Audio Normalizer as dynaudnorm filter
|
687 |
+
- Reverse video and areverse audio filter
|
688 |
+
- Random filter
|
689 |
+
- deband filter
|
690 |
+
- AAC fixed-point decoding
|
691 |
+
- sidechaincompress audio filter
|
692 |
+
- bitstream filter for converting HEVC from MP4 to Annex B
|
693 |
+
- acrossfade audio filter
|
694 |
+
- allyuv and allrgb video sources
|
695 |
+
- atadenoise video filter
|
696 |
+
- OS X VideoToolbox support
|
697 |
+
- aphasemeter filter
|
698 |
+
- showfreqs filter
|
699 |
+
- vectorscope filter
|
700 |
+
- waveform filter
|
701 |
+
- hstack and vstack filter
|
702 |
+
- Support DNx100 (1440x1080@8)
|
703 |
+
- VAAPI hevc hwaccel
|
704 |
+
- VDPAU hevc hwaccel
|
705 |
+
- framerate filter
|
706 |
+
- Switched default encoders for webm to VP9 and Opus
|
707 |
+
- Removed experimental flag from the JPEG 2000 encoder
|
708 |
+
|
709 |
+
|
710 |
+
version 2.7:
|
711 |
+
- FFT video filter
|
712 |
+
- TDSC decoder
|
713 |
+
- DTS lossless extension (XLL) decoding (not lossless, disabled by default)
|
714 |
+
- showwavespic filter
|
715 |
+
- DTS decoding through libdcadec
|
716 |
+
- Drop support for nvenc API before 5.0
|
717 |
+
- nvenc HEVC encoder
|
718 |
+
- Detelecine filter
|
719 |
+
- Intel QSV-accelerated H.264 encoding
|
720 |
+
- MMAL-accelerated H.264 decoding
|
721 |
+
- basic APNG encoder and muxer with default extension "apng"
|
722 |
+
- unpack DivX-style packed B-frames in MPEG-4 bitstream filter
|
723 |
+
- WebM Live Chunk Muxer
|
724 |
+
- nvenc level and tier options
|
725 |
+
- chorus filter
|
726 |
+
- Canopus HQ/HQA decoder
|
727 |
+
- Automatically rotate videos based on metadata in ffmpeg
|
728 |
+
- improved Quickdraw compatibility
|
729 |
+
- VP9 high bit-depth and extended colorspaces decoding support
|
730 |
+
- WebPAnimEncoder API when available for encoding and muxing WebP
|
731 |
+
- Direct3D11-accelerated decoding
|
732 |
+
- Support Secure Transport
|
733 |
+
- Multipart JPEG demuxer
|
734 |
+
|
735 |
+
|
736 |
+
version 2.6:
|
737 |
+
- nvenc encoder
|
738 |
+
- 10bit spp filter
|
739 |
+
- colorlevels filter
|
740 |
+
- RIFX format for *.wav files
|
741 |
+
- RTP/mpegts muxer
|
742 |
+
- non continuous cache protocol support
|
743 |
+
- tblend filter
|
744 |
+
- cropdetect support for non 8bpp, absolute (if limit >= 1) and relative (if limit < 1.0) threshold
|
745 |
+
- Camellia symmetric block cipher
|
746 |
+
- OpenH264 encoder wrapper
|
747 |
+
- VOC seeking support
|
748 |
+
- Closed caption Decoder
|
749 |
+
- fspp, uspp, pp7 MPlayer postprocessing filters ported to native filters
|
750 |
+
- showpalette filter
|
751 |
+
- Twofish symmetric block cipher
|
752 |
+
- Support DNx100 (960x720@8)
|
753 |
+
- eq2 filter ported from libmpcodecs as eq filter
|
754 |
+
- removed libmpcodecs
|
755 |
+
- Changed default DNxHD colour range in QuickTime .mov derivatives to mpeg range
|
756 |
+
- ported softpulldown filter from libmpcodecs as repeatfields filter
|
757 |
+
- dcshift filter
|
758 |
+
- RTP depacketizer for loss tolerant payload format for MP3 audio (RFC 5219)
|
759 |
+
- RTP depacketizer for AC3 payload format (RFC 4184)
|
760 |
+
- palettegen and paletteuse filters
|
761 |
+
- VP9 RTP payload format (draft 0) experimental depacketizer
|
762 |
+
- RTP depacketizer for DV (RFC 6469)
|
763 |
+
- DXVA2-accelerated HEVC decoding
|
764 |
+
- AAC ELD 480 decoding
|
765 |
+
- Intel QSV-accelerated H.264 decoding
|
766 |
+
- DSS SP decoder and DSS demuxer
|
767 |
+
- Fix stsd atom corruption in DNxHD QuickTimes
|
768 |
+
- Canopus HQX decoder
|
769 |
+
- RTP depacketization of T.140 text (RFC 4103)
|
770 |
+
- Port MIPS optimizations to 64-bit
|
771 |
+
|
772 |
+
|
773 |
+
version 2.5:
|
774 |
+
- HEVC/H.265 RTP payload format (draft v6) packetizer
|
775 |
+
- SUP/PGS subtitle demuxer
|
776 |
+
- ffprobe -show_pixel_formats option
|
777 |
+
- CAST128 symmetric block cipher, ECB mode
|
778 |
+
- STL subtitle demuxer and decoder
|
779 |
+
- libutvideo YUV 4:2:2 10bit support
|
780 |
+
- XCB-based screen-grabber
|
781 |
+
- UDP-Lite support (RFC 3828)
|
782 |
+
- xBR scaling filter
|
783 |
+
- AVFoundation screen capturing support
|
784 |
+
- ffserver supports codec private options
|
785 |
+
- creating DASH compatible fragmented MP4, MPEG-DASH segmenting muxer
|
786 |
+
- WebP muxer with animated WebP support
|
787 |
+
- zygoaudio decoding support
|
788 |
+
- APNG demuxer
|
789 |
+
- postproc visualization support
|
790 |
+
|
791 |
+
|
792 |
+
version 2.4:
|
793 |
+
- Icecast protocol
|
794 |
+
- ported lenscorrection filter from frei0r filter
|
795 |
+
- large optimizations in dctdnoiz to make it usable
|
796 |
+
- ICY metadata are now requested by default with the HTTP protocol
|
797 |
+
- support for using metadata in stream specifiers in fftools
|
798 |
+
- LZMA compression support in TIFF decoder
|
799 |
+
- H.261 RTP payload format (RFC 4587) depacketizer and experimental packetizer
|
800 |
+
- HEVC/H.265 RTP payload format (draft v6) depacketizer
|
801 |
+
- added codecview filter to visualize information exported by some codecs
|
802 |
+
- Matroska 3D support thorugh side data
|
803 |
+
- HTML generation using texi2html is deprecated in favor of makeinfo/texi2any
|
804 |
+
- silenceremove filter
|
805 |
+
|
806 |
+
|
807 |
+
version 2.3:
|
808 |
+
- AC3 fixed-point decoding
|
809 |
+
- shuffleplanes filter
|
810 |
+
- subfile protocol
|
811 |
+
- Phantom Cine demuxer
|
812 |
+
- replaygain data export
|
813 |
+
- VP7 video decoder
|
814 |
+
- Alias PIX image encoder and decoder
|
815 |
+
- Improvements to the BRender PIX image decoder
|
816 |
+
- Improvements to the XBM decoder
|
817 |
+
- QTKit input device
|
818 |
+
- improvements to OpenEXR image decoder
|
819 |
+
- support decoding 16-bit RLE SGI images
|
820 |
+
- GDI screen grabbing for Windows
|
821 |
+
- alternative rendition support for HTTP Live Streaming
|
822 |
+
- AVFoundation input device
|
823 |
+
- Direct Stream Digital (DSD) decoder
|
824 |
+
- Magic Lantern Video (MLV) demuxer
|
825 |
+
- On2 AVC (Audio for Video) decoder
|
826 |
+
- support for decoding through DXVA2 in ffmpeg
|
827 |
+
- libbs2b-based stereo-to-binaural audio filter
|
828 |
+
- libx264 reference frames count limiting depending on level
|
829 |
+
- native Opus decoder
|
830 |
+
- display matrix export and rotation API
|
831 |
+
- WebVTT encoder
|
832 |
+
- showcqt multimedia filter
|
833 |
+
- zoompan filter
|
834 |
+
- signalstats filter
|
835 |
+
- hqx filter (hq2x, hq3x, hq4x)
|
836 |
+
- flanger filter
|
837 |
+
- Image format auto-detection
|
838 |
+
- LRC demuxer and muxer
|
839 |
+
- Samba protocol (via libsmbclient)
|
840 |
+
- WebM DASH Manifest muxer
|
841 |
+
- libfribidi support in drawtext
|
842 |
+
|
843 |
+
|
844 |
+
version 2.2:
|
845 |
+
|
846 |
+
- HNM version 4 demuxer and video decoder
|
847 |
+
- Live HDS muxer
|
848 |
+
- setsar/setdar filters now support variables in ratio expressions
|
849 |
+
- elbg filter
|
850 |
+
- string validation in ffprobe
|
851 |
+
- support for decoding through VDPAU in ffmpeg (the -hwaccel option)
|
852 |
+
- complete Voxware MetaSound decoder
|
853 |
+
- remove mp3_header_compress bitstream filter
|
854 |
+
- Windows resource files for shared libraries
|
855 |
+
- aeval filter
|
856 |
+
- stereoscopic 3d metadata handling
|
857 |
+
- WebP encoding via libwebp
|
858 |
+
- ATRAC3+ decoder
|
859 |
+
- VP8 in Ogg demuxing
|
860 |
+
- side & metadata support in NUT
|
861 |
+
- framepack filter
|
862 |
+
- XYZ12 rawvideo support in NUT
|
863 |
+
- Exif metadata support in WebP decoder
|
864 |
+
- OpenGL device
|
865 |
+
- Use metadata_header_padding to control padding in ID3 tags (currently used in
|
866 |
+
MP3, AIFF, and OMA files), FLAC header, and the AVI "junk" block.
|
867 |
+
- Mirillis FIC video decoder
|
868 |
+
- Support DNx444
|
869 |
+
- libx265 encoder
|
870 |
+
- dejudder filter
|
871 |
+
- Autodetect VDA like all other hardware accelerations
|
872 |
+
- aliases and defaults for Ogg subtypes (opus, spx)
|
873 |
+
|
874 |
+
|
875 |
+
version 2.1:
|
876 |
+
|
877 |
+
- aecho filter
|
878 |
+
- perspective filter ported from libmpcodecs
|
879 |
+
- ffprobe -show_programs option
|
880 |
+
- compand filter
|
881 |
+
- RTMP seek support
|
882 |
+
- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate
|
883 |
+
even when used as an input option. Previous behavior can be restored with
|
884 |
+
the -noaccurate_seek option.
|
885 |
+
- ffmpeg -t option can now be used for inputs, to limit the duration of
|
886 |
+
data read from an input file
|
887 |
+
- incomplete Voxware MetaSound decoder
|
888 |
+
- read EXIF metadata from JPEG
|
889 |
+
- DVB teletext decoder
|
890 |
+
- phase filter ported from libmpcodecs
|
891 |
+
- w3fdif filter
|
892 |
+
- Opus support in Matroska
|
893 |
+
- FFV1 version 1.3 is stable and no longer experimental
|
894 |
+
- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support
|
895 |
+
- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be
|
896 |
+
more consistent with other muxers.
|
897 |
+
- adelay filter
|
898 |
+
- pullup filter ported from libmpcodecs
|
899 |
+
- ffprobe -read_intervals option
|
900 |
+
- Lossless and alpha support for WebP decoder
|
901 |
+
- Error Resilient AAC syntax (ER AAC LC) decoding
|
902 |
+
- Low Delay AAC (ER AAC LD) decoding
|
903 |
+
- mux chapters in ASF files
|
904 |
+
- SFTP protocol (via libssh)
|
905 |
+
- libx264: add ability to encode in YUVJ422P and YUVJ444P
|
906 |
+
- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does
|
907 |
+
- make decoding alpha optional for prores, ffv1 and vp6 by setting
|
908 |
+
the skip_alpha flag.
|
909 |
+
- ladspa wrapper filter
|
910 |
+
- native VP9 decoder
|
911 |
+
- dpx parser
|
912 |
+
- max_error_rate parameter in ffmpeg
|
913 |
+
- PulseAudio output device
|
914 |
+
- ReplayGain scanner
|
915 |
+
- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
|
916 |
+
- Linux framebuffer output device
|
917 |
+
- HEVC decoder
|
918 |
+
- raw HEVC, HEVC in MOV/MP4, HEVC in Matroska, HEVC in MPEG-TS demuxing
|
919 |
+
- mergeplanes filter
|
920 |
+
|
921 |
+
|
922 |
+
version 2.0:
|
923 |
+
|
924 |
+
- curves filter
|
925 |
+
- reference-counting for AVFrame and AVPacket data
|
926 |
+
- ffmpeg now fails when input options are used for output file
|
927 |
+
or vice versa
|
928 |
+
- support for Monkey's Audio versions from 3.93
|
929 |
+
- perms and aperms filters
|
930 |
+
- audio filtering support in ffplay
|
931 |
+
- 10% faster aac encoding on x86 and MIPS
|
932 |
+
- sine audio filter source
|
933 |
+
- WebP demuxing and decoding support
|
934 |
+
- ffmpeg options -filter_script and -filter_complex_script, which allow a
|
935 |
+
filtergraph description to be read from a file
|
936 |
+
- OpenCL support
|
937 |
+
- audio phaser filter
|
938 |
+
- separatefields filter
|
939 |
+
- libquvi demuxer
|
940 |
+
- uniform options syntax across all filters
|
941 |
+
- telecine filter
|
942 |
+
- interlace filter
|
943 |
+
- smptehdbars source
|
944 |
+
- inverse telecine filters (fieldmatch and decimate)
|
945 |
+
- colorbalance filter
|
946 |
+
- colorchannelmixer filter
|
947 |
+
- The matroska demuxer can now output proper verbatim ASS packets. It will
|
948 |
+
become the default at the next libavformat major bump.
|
949 |
+
- decent native animated GIF encoding
|
950 |
+
- asetrate filter
|
951 |
+
- interleave filter
|
952 |
+
- timeline editing with filters
|
953 |
+
- vidstabdetect and vidstabtransform filters for video stabilization using
|
954 |
+
the vid.stab library
|
955 |
+
- astats filter
|
956 |
+
- trim and atrim filters
|
957 |
+
- ffmpeg -t and -ss (output-only) options are now sample-accurate when
|
958 |
+
transcoding audio
|
959 |
+
- Matroska muxer can now put the index at the beginning of the file.
|
960 |
+
- extractplanes filter
|
961 |
+
- avectorscope filter
|
962 |
+
- ADPCM DTK decoder
|
963 |
+
- ADP demuxer
|
964 |
+
- RSD demuxer
|
965 |
+
- RedSpark demuxer
|
966 |
+
- ADPCM IMA Radical decoder
|
967 |
+
- zmq filters
|
968 |
+
- DCT denoiser filter (dctdnoiz)
|
969 |
+
- Wavelet denoiser filter ported from libmpcodecs as owdenoise (formerly "ow")
|
970 |
+
- Apple Intermediate Codec decoder
|
971 |
+
- Escape 130 video decoder
|
972 |
+
- FTP protocol support
|
973 |
+
- V4L2 output device
|
974 |
+
- 3D LUT filter (lut3d)
|
975 |
+
- SMPTE 302M audio encoder
|
976 |
+
- support for slice multithreading in libavfilter
|
977 |
+
- Hald CLUT support (generation and filtering)
|
978 |
+
- VC-1 interlaced B-frame support
|
979 |
+
- support for WavPack muxing (raw and in Matroska)
|
980 |
+
- XVideo output device
|
981 |
+
- vignette filter
|
982 |
+
- True Audio (TTA) encoder
|
983 |
+
- Go2Webinar decoder
|
984 |
+
- mcdeint filter ported from libmpcodecs
|
985 |
+
- sab filter ported from libmpcodecs
|
986 |
+
- ffprobe -show_chapters option
|
987 |
+
- WavPack encoding through libwavpack
|
988 |
+
- rotate filter
|
989 |
+
- spp filter ported from libmpcodecs
|
990 |
+
- libgme support
|
991 |
+
- psnr filter
|
992 |
+
|
993 |
+
|
994 |
+
version 1.2:
|
995 |
+
|
996 |
+
- VDPAU hardware acceleration through normal hwaccel
|
997 |
+
- SRTP support
|
998 |
+
- Error diffusion dither in Swscale
|
999 |
+
- Chained Ogg support
|
1000 |
+
- Theora Midstream reconfiguration support
|
1001 |
+
- EVRC decoder
|
1002 |
+
- audio fade filter
|
1003 |
+
- filtering audio with unknown channel layout
|
1004 |
+
- allpass, bass, bandpass, bandreject, biquad, equalizer, highpass, lowpass
|
1005 |
+
and treble audio filter
|
1006 |
+
- improved showspectrum filter, with multichannel support and sox-like colors
|
1007 |
+
- histogram filter
|
1008 |
+
- tee muxer
|
1009 |
+
- il filter ported from libmpcodecs
|
1010 |
+
- support ID3v2 tags in ASF files
|
1011 |
+
- encrypted TTA stream decoding support
|
1012 |
+
- RF64 support in WAV muxer
|
1013 |
+
- noise filter ported from libmpcodecs
|
1014 |
+
- Subtitles character encoding conversion
|
1015 |
+
- blend filter
|
1016 |
+
- stereo3d filter ported from libmpcodecs
|
1017 |
+
|
1018 |
+
|
1019 |
+
version 1.1:
|
1020 |
+
|
1021 |
+
- stream disposition information printing in ffprobe
|
1022 |
+
- filter for loudness analysis following EBU R128
|
1023 |
+
- Opus encoder using libopus
|
1024 |
+
- ffprobe -select_streams option
|
1025 |
+
- Pinnacle TARGA CineWave YUV16 decoder
|
1026 |
+
- TAK demuxer, decoder and parser
|
1027 |
+
- DTS-HD demuxer
|
1028 |
+
- remove -same_quant, it hasn't worked for years
|
1029 |
+
- FFM2 support
|
1030 |
+
- X-Face image encoder and decoder
|
1031 |
+
- 24-bit FLAC encoding
|
1032 |
+
- multi-channel ALAC encoding up to 7.1
|
1033 |
+
- metadata (INFO tag) support in WAV muxer
|
1034 |
+
- subtitles raw text decoder
|
1035 |
+
- support for building DLLs using MSVC
|
1036 |
+
- LVF demuxer
|
1037 |
+
- ffescape tool
|
1038 |
+
- metadata (info chunk) support in CAF muxer
|
1039 |
+
- field filter ported from libmpcodecs
|
1040 |
+
- AVR demuxer
|
1041 |
+
- geq filter ported from libmpcodecs
|
1042 |
+
- remove ffserver daemon mode
|
1043 |
+
- AST muxer/demuxer
|
1044 |
+
- new expansion syntax for drawtext
|
1045 |
+
- BRender PIX image decoder
|
1046 |
+
- ffprobe -show_entries option
|
1047 |
+
- ffprobe -sections option
|
1048 |
+
- ADPCM IMA Dialogic decoder
|
1049 |
+
- BRSTM demuxer
|
1050 |
+
- animated GIF decoder and demuxer
|
1051 |
+
- PVF demuxer
|
1052 |
+
- subtitles filter
|
1053 |
+
- IRCAM muxer/demuxer
|
1054 |
+
- Paris Audio File demuxer
|
1055 |
+
- Virtual concatenation demuxer
|
1056 |
+
- VobSub demuxer
|
1057 |
+
- JSON captions for TED talks decoding support
|
1058 |
+
- SOX Resampler support in libswresample
|
1059 |
+
- aselect filter
|
1060 |
+
- SGI RLE 8-bit / Silicon Graphics RLE 8-bit video decoder
|
1061 |
+
- Silicon Graphics Motion Video Compressor 1 & 2 decoder
|
1062 |
+
- Silicon Graphics Movie demuxer
|
1063 |
+
- apad filter
|
1064 |
+
- Resolution & pixel format change support with multithreading for H.264
|
1065 |
+
- documentation split into per-component manuals
|
1066 |
+
- pp (postproc) filter ported from MPlayer
|
1067 |
+
- NIST Sphere demuxer
|
1068 |
+
- MPL2, VPlayer, MPlayer, AQTitle, PJS and SubViewer v1 subtitles demuxers and decoders
|
1069 |
+
- Sony Wave64 muxer
|
1070 |
+
- adobe and limelight publisher authentication in RTMP
|
1071 |
+
- data: URI scheme
|
1072 |
+
- support building on the Plan 9 operating system
|
1073 |
+
- kerndeint filter ported from MPlayer
|
1074 |
+
- histeq filter ported from VirtualDub
|
1075 |
+
- Megalux Frame demuxer
|
1076 |
+
- 012v decoder
|
1077 |
+
- Improved AVC Intra decoding support
|
1078 |
+
|
1079 |
+
|
1080 |
+
version 1.0:
|
1081 |
+
|
1082 |
+
- INI and flat output in ffprobe
|
1083 |
+
- Scene detection in libavfilter
|
1084 |
+
- Indeo Audio decoder
|
1085 |
+
- channelsplit audio filter
|
1086 |
+
- setnsamples audio filter
|
1087 |
+
- atempo filter
|
1088 |
+
- ffprobe -show_data option
|
1089 |
+
- RTMPT protocol support
|
1090 |
+
- iLBC encoding/decoding via libilbc
|
1091 |
+
- Microsoft Screen 1 decoder
|
1092 |
+
- join audio filter
|
1093 |
+
- audio channel mapping filter
|
1094 |
+
- Microsoft ATC Screen decoder
|
1095 |
+
- RTSP listen mode
|
1096 |
+
- TechSmith Screen Codec 2 decoder
|
1097 |
+
- AAC encoding via libfdk-aac
|
1098 |
+
- Microsoft Expression Encoder Screen decoder
|
1099 |
+
- RTMPS protocol support
|
1100 |
+
- RTMPTS protocol support
|
1101 |
+
- RTMPE protocol support
|
1102 |
+
- RTMPTE protocol support
|
1103 |
+
- showwaves and showspectrum filter
|
1104 |
+
- LucasArts SMUSH SANM playback support
|
1105 |
+
- LucasArts SMUSH VIMA audio decoder (ADPCM)
|
1106 |
+
- LucasArts SMUSH demuxer
|
1107 |
+
- SAMI, RealText and SubViewer demuxers and decoders
|
1108 |
+
- Heart Of Darkness PAF playback support
|
1109 |
+
- iec61883 device
|
1110 |
+
- asettb filter
|
1111 |
+
- new option: -progress
|
1112 |
+
- 3GPP Timed Text encoder/decoder
|
1113 |
+
- GeoTIFF decoder support
|
1114 |
+
- ffmpeg -(no)stdin option
|
1115 |
+
- Opus decoder using libopus
|
1116 |
+
- caca output device using libcaca
|
1117 |
+
- alphaextract and alphamerge filters
|
1118 |
+
- concat filter
|
1119 |
+
- flite filter
|
1120 |
+
- Canopus Lossless Codec decoder
|
1121 |
+
- bitmap subtitles in filters (experimental and temporary)
|
1122 |
+
- MP2 encoding via TwoLAME
|
1123 |
+
- bmp parser
|
1124 |
+
- smptebars source
|
1125 |
+
- asetpts filter
|
1126 |
+
- hue filter
|
1127 |
+
- ICO muxer
|
1128 |
+
- SubRip encoder and decoder without embedded timing
|
1129 |
+
- edge detection filter
|
1130 |
+
- framestep filter
|
1131 |
+
- ffmpeg -shortest option is now per-output file
|
1132 |
+
-pass and -passlogfile are now per-output stream
|
1133 |
+
- volume measurement filter
|
1134 |
+
- Ut Video encoder
|
1135 |
+
- Microsoft Screen 2 decoder
|
1136 |
+
- smartblur filter ported from MPlayer
|
1137 |
+
- CPiA decoder
|
1138 |
+
- decimate filter ported from MPlayer
|
1139 |
+
- RTP depacketization of JPEG
|
1140 |
+
- Smooth Streaming live segmenter muxer
|
1141 |
+
- F4V muxer
|
1142 |
+
- sendcmd and asendcmd filters
|
1143 |
+
- WebVTT demuxer and decoder (simple tags supported)
|
1144 |
+
- RTP packetization of JPEG
|
1145 |
+
- faststart option in the MOV/MP4 muxer
|
1146 |
+
- support for building with MSVC
|
1147 |
+
|
1148 |
+
|
1149 |
+
version 0.11:
|
1150 |
+
|
1151 |
+
- Fixes: CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777,
|
1152 |
+
CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785,
|
1153 |
+
CVE-2012-2786, CVE-2012-2787, CVE-2012-2788, CVE-2012-2789, CVE-2012-2790,
|
1154 |
+
CVE-2012-2791, CVE-2012-2792, CVE-2012-2793, CVE-2012-2794, CVE-2012-2795,
|
1155 |
+
CVE-2012-2796, CVE-2012-2797, CVE-2012-2798, CVE-2012-2799, CVE-2012-2800,
|
1156 |
+
CVE-2012-2801, CVE-2012-2802, CVE-2012-2803, CVE-2012-2804,
|
1157 |
+
- v408 Quicktime and Microsoft AYUV Uncompressed 4:4:4:4 encoder and decoder
|
1158 |
+
- setfield filter
|
1159 |
+
- CDXL demuxer and decoder
|
1160 |
+
- Apple ProRes encoder
|
1161 |
+
- ffprobe -count_packets and -count_frames options
|
1162 |
+
- Sun Rasterfile Encoder
|
1163 |
+
- ID3v2 attached pictures reading and writing
|
1164 |
+
- WMA Lossless decoder
|
1165 |
+
- bluray protocol
|
1166 |
+
- blackdetect filter
|
1167 |
+
- libutvideo encoder wrapper (--enable-libutvideo)
|
1168 |
+
- swapuv filter
|
1169 |
+
- bbox filter
|
1170 |
+
- XBM encoder and decoder
|
1171 |
+
- RealAudio Lossless decoder
|
1172 |
+
- ZeroCodec decoder
|
1173 |
+
- tile video filter
|
1174 |
+
- Metal Gear Solid: The Twin Snakes demuxer
|
1175 |
+
- OpenEXR image decoder
|
1176 |
+
- removelogo filter
|
1177 |
+
- drop support for ffmpeg without libavfilter
|
1178 |
+
- drawtext video filter: fontconfig support
|
1179 |
+
- ffmpeg -benchmark_all option
|
1180 |
+
- super2xsai filter ported from libmpcodecs
|
1181 |
+
- add libavresample audio conversion library for compatibility
|
1182 |
+
- MicroDVD decoder
|
1183 |
+
- Avid Meridien (AVUI) encoder and decoder
|
1184 |
+
- accept + prefix to -pix_fmt option to disable automatic conversions.
|
1185 |
+
- complete audio filtering in libavfilter and ffmpeg
|
1186 |
+
- add fps filter
|
1187 |
+
- vorbis parser
|
1188 |
+
- png parser
|
1189 |
+
- audio mix filter
|
1190 |
+
- ffv1: support (draft) version 1.3
|
1191 |
+
|
1192 |
+
|
1193 |
+
version 0.10:
|
1194 |
+
|
1195 |
+
- Fixes: CVE-2011-3929, CVE-2011-3934, CVE-2011-3935, CVE-2011-3936,
|
1196 |
+
CVE-2011-3937, CVE-2011-3940, CVE-2011-3941, CVE-2011-3944,
|
1197 |
+
CVE-2011-3945, CVE-2011-3946, CVE-2011-3947, CVE-2011-3949,
|
1198 |
+
CVE-2011-3950, CVE-2011-3951, CVE-2011-3952
|
1199 |
+
- v410 Quicktime Uncompressed 4:4:4 10-bit encoder and decoder
|
1200 |
+
- SBaGen (SBG) binaural beats script demuxer
|
1201 |
+
- OpenMG Audio muxer
|
1202 |
+
- Timecode extraction in DV and MOV
|
1203 |
+
- thumbnail video filter
|
1204 |
+
- XML output in ffprobe
|
1205 |
+
- asplit audio filter
|
1206 |
+
- tinterlace video filter
|
1207 |
+
- astreamsync audio filter
|
1208 |
+
- amerge audio filter
|
1209 |
+
- ISMV (Smooth Streaming) muxer
|
1210 |
+
- GSM audio parser
|
1211 |
+
- SMJPEG muxer
|
1212 |
+
- XWD encoder and decoder
|
1213 |
+
- Automatic thread count based on detection number of (available) CPU cores
|
1214 |
+
- y41p Brooktree Uncompressed 4:1:1 12-bit encoder and decoder
|
1215 |
+
- ffprobe -show_error option
|
1216 |
+
- Avid 1:1 10-bit RGB Packer codec
|
1217 |
+
- v308 Quicktime Uncompressed 4:4:4 encoder and decoder
|
1218 |
+
- yuv4 libquicktime packed 4:2:0 encoder and decoder
|
1219 |
+
- ffprobe -show_frames option
|
1220 |
+
- silencedetect audio filter
|
1221 |
+
- ffprobe -show_program_version, -show_library_versions, -show_versions options
|
1222 |
+
- rv34: frame-level multi-threading
|
1223 |
+
- optimized iMDCT transform on x86 using SSE for for mpegaudiodec
|
1224 |
+
- Improved PGS subtitle decoder
|
1225 |
+
- dumpgraph option to lavfi device
|
1226 |
+
- r210 and r10k encoders
|
1227 |
+
- ffwavesynth decoder
|
1228 |
+
- aviocat tool
|
1229 |
+
- ffeval tool
|
1230 |
+
- support encoding and decoding 4-channel SGI images
|
1231 |
+
|
1232 |
+
|
1233 |
+
version 0.9:
|
1234 |
+
|
1235 |
+
- openal input device added
|
1236 |
+
- boxblur filter added
|
1237 |
+
- BWF muxer
|
1238 |
+
- Flash Screen Video 2 decoder
|
1239 |
+
- lavfi input device added
|
1240 |
+
- added avconv, which is almost the same for now, except
|
1241 |
+
for a few incompatible changes in the options, which will hopefully make them
|
1242 |
+
easier to use. The changes are:
|
1243 |
+
* The options placement is now strictly enforced! While in theory the
|
1244 |
+
options for ffmpeg should be given in [input options] -i INPUT [output
|
1245 |
+
options] OUTPUT order, in practice it was possible to give output options
|
1246 |
+
before the -i and it mostly worked. Except when it didn't - the behavior was
|
1247 |
+
a bit inconsistent. In avconv, it is not possible to mix input and output
|
1248 |
+
options. All non-global options are reset after an input or output filename.
|
1249 |
+
* All per-file options are now truly per-file - they apply only to the next
|
1250 |
+
input or output file and specifying different values for different files
|
1251 |
+
will now work properly (notably -ss and -t options).
|
1252 |
+
* All per-stream options are now truly per-stream - it is possible to
|
1253 |
+
specify which stream(s) should a given option apply to. See the Stream
|
1254 |
+
specifiers section in the avconv manual for details.
|
1255 |
+
* In ffmpeg some options (like -newvideo/-newaudio/...) are irregular in the
|
1256 |
+
sense that they're specified after the output filename instead of before,
|
1257 |
+
like all other options. In avconv this irregularity is removed, all options
|
1258 |
+
apply to the next input or output file.
|
1259 |
+
* -newvideo/-newaudio/-newsubtitle options were removed. Not only were they
|
1260 |
+
irregular and highly confusing, they were also redundant. In avconv the -map
|
1261 |
+
option will create new streams in the output file and map input streams to
|
1262 |
+
them. E.g. avconv -i INPUT -map 0 OUTPUT will create an output stream for
|
1263 |
+
each stream in the first input file.
|
1264 |
+
* The -map option now has slightly different and more powerful syntax:
|
1265 |
+
+ Colons (':') are used to separate file index/stream type/stream index
|
1266 |
+
instead of dots. Comma (',') is used to separate the sync stream instead
|
1267 |
+
of colon.. This is done for consistency with other options.
|
1268 |
+
+ It's possible to specify stream type. E.g. -map 0:a:2 creates an
|
1269 |
+
output stream from the third input audio stream.
|
1270 |
+
+ Omitting the stream index now maps all the streams of the given type,
|
1271 |
+
not just the first. E.g. -map 0:s creates output streams for all the
|
1272 |
+
subtitle streams in the first input file.
|
1273 |
+
+ Since -map can now match multiple streams, negative mappings were
|
1274 |
+
introduced. Negative mappings disable some streams from an already
|
1275 |
+
defined map. E.g. '-map 0 -map -0:a:1' means 'create output streams for
|
1276 |
+
all the stream in the first input file, except for the second audio
|
1277 |
+
stream'.
|
1278 |
+
* There is a new option -c (or -codec) for choosing the decoder/encoder to
|
1279 |
+
use, which makes it possible to precisely specify target stream(s) consistently with
|
1280 |
+
other options. E.g. -c:v lib264 sets the codec for all video streams, -c:a:0
|
1281 |
+
libvorbis sets the codec for the first audio stream and -c copy copies all
|
1282 |
+
the streams without reencoding. Old -vcodec/-acodec/-scodec options are now
|
1283 |
+
aliases to -c:v/a/s
|
1284 |
+
* It is now possible to precisely specify which stream should an AVOption
|
1285 |
+
apply to. E.g. -b:v:0 2M sets the bitrate for the first video stream, while
|
1286 |
+
-b:a 128k sets the bitrate for all audio streams. Note that the old -ab 128k
|
1287 |
+
syntax is deprecated and will stop working soon.
|
1288 |
+
* -map_chapters now takes only an input file index and applies to the next
|
1289 |
+
output file. This is consistent with how all the other options work.
|
1290 |
+
* -map_metadata now takes only an input metadata specifier and applies to
|
1291 |
+
the next output file. Output metadata specifier is now part of the option
|
1292 |
+
name, similarly to the AVOptions/map/codec feature above.
|
1293 |
+
* -metadata can now be used to set metadata on streams and chapters, e.g.
|
1294 |
+
-metadata:s:1 language=eng sets the language of the first stream to 'eng'.
|
1295 |
+
This made -vlang/-alang/-slang options redundant, so they were removed.
|
1296 |
+
* -qscale option now uses stream specifiers and applies to all streams, not
|
1297 |
+
just video. I.e. plain -qscale number would now apply to all streams. To get
|
1298 |
+
the old behavior, use -qscale:v. Also there is now a shortcut -q for -qscale
|
1299 |
+
and -aq is now an alias for -q:a.
|
1300 |
+
* -vbsf/-absf/-sbsf options were removed and replaced by a -bsf option which
|
1301 |
+
uses stream specifiers. Use -bsf:v/a/s instead of the old options.
|
1302 |
+
* -itsscale option now uses stream specifiers, so its argument is only the
|
1303 |
+
scale parameter.
|
1304 |
+
* -intra option was removed, use -g 0 for the same effect.
|
1305 |
+
* -psnr option was removed, use -flags +psnr for the same effect.
|
1306 |
+
* -vf option is now an alias to the new -filter option, which uses stream specifiers.
|
1307 |
+
* -vframes/-aframes/-dframes options are now aliases to the new -frames option.
|
1308 |
+
* -vtag/-atag/-stag options are now aliases to the new -tag option.
|
1309 |
+
- XMV demuxer
|
1310 |
+
- LOAS demuxer
|
1311 |
+
- ashowinfo filter added
|
1312 |
+
- Windows Media Image decoder
|
1313 |
+
- amovie source added
|
1314 |
+
- LATM muxer/demuxer
|
1315 |
+
- Speex encoder via libspeex
|
1316 |
+
- JSON output in ffprobe
|
1317 |
+
- WTV muxer
|
1318 |
+
- Optional C++ Support (needed for libstagefright)
|
1319 |
+
- H.264 Decoding on Android via Stagefright
|
1320 |
+
- Prores decoder
|
1321 |
+
- BIN/XBIN/ADF/IDF text file decoder
|
1322 |
+
- aconvert audio filter added
|
1323 |
+
- audio support to lavfi input device added
|
1324 |
+
- libcdio-paranoia input device for audio CD grabbing
|
1325 |
+
- Apple ProRes decoder
|
1326 |
+
- CELT in Ogg demuxing
|
1327 |
+
- G.723.1 demuxer and decoder
|
1328 |
+
- libmodplug support (--enable-libmodplug)
|
1329 |
+
- VC-1 interlaced decoding
|
1330 |
+
- libutvideo wrapper (--enable-libutvideo)
|
1331 |
+
- aevalsrc audio source added
|
1332 |
+
- Ut Video decoder
|
1333 |
+
- Speex encoding via libspeex
|
1334 |
+
- 4:2:2 H.264 decoding support
|
1335 |
+
- 4:2:2 and 4:4:4 H.264 encoding with libx264
|
1336 |
+
- Pulseaudio input device
|
1337 |
+
- Prores encoder
|
1338 |
+
- Video Decoder Acceleration (VDA) HWAccel module.
|
1339 |
+
- replacement Indeo 3 decoder
|
1340 |
+
- new ffmpeg option: -map_channel
|
1341 |
+
- volume audio filter added
|
1342 |
+
- earwax audio filter added
|
1343 |
+
- libv4l2 support (--enable-libv4l2)
|
1344 |
+
- TLS/SSL and HTTPS protocol support
|
1345 |
+
- AVOptions API rewritten and documented
|
1346 |
+
- most of CODEC_FLAG2_*, some CODEC_FLAG_* and many codec-specific fields in
|
1347 |
+
AVCodecContext deprecated. Codec private options should be used instead.
|
1348 |
+
- Properly working defaults in libx264 wrapper, support for native presets.
|
1349 |
+
- Encrypted OMA files support
|
1350 |
+
- Discworld II BMV decoding support
|
1351 |
+
- VBLE Decoder
|
1352 |
+
- OS X Video Decoder Acceleration (VDA) support
|
1353 |
+
- compact and csv output in ffprobe
|
1354 |
+
- pan audio filter
|
1355 |
+
- IFF Amiga Continuous Bitmap (ACBM) decoder
|
1356 |
+
- ass filter
|
1357 |
+
- CRI ADX audio format muxer and demuxer
|
1358 |
+
- Playstation Portable PMP format demuxer
|
1359 |
+
- Microsoft Windows ICO demuxer
|
1360 |
+
- life source
|
1361 |
+
- PCM format support in OMA demuxer
|
1362 |
+
- CLJR encoder
|
1363 |
+
- new option: -report
|
1364 |
+
- Dxtory capture format decoder
|
1365 |
+
- cellauto source
|
1366 |
+
- Simple segmenting muxer
|
1367 |
+
- Indeo 4 decoder
|
1368 |
+
- SMJPEG demuxer
|
1369 |
+
|
1370 |
+
|
1371 |
+
version 0.8:
|
1372 |
+
|
1373 |
+
- many many things we forgot because we rather write code than changelogs
|
1374 |
+
- WebM support in Matroska de/muxer
|
1375 |
+
- low overhead Ogg muxing
|
1376 |
+
- MMS-TCP support
|
1377 |
+
- VP8 de/encoding via libvpx
|
1378 |
+
- Demuxer for On2's IVF format
|
1379 |
+
- Pictor/PC Paint decoder
|
1380 |
+
- HE-AAC v2 decoder
|
1381 |
+
- HE-AAC v2 encoding with libaacplus
|
1382 |
+
- libfaad2 wrapper removed
|
1383 |
+
- DTS-ES extension (XCh) decoding support
|
1384 |
+
- native VP8 decoder
|
1385 |
+
- RTSP tunneling over HTTP
|
1386 |
+
- RTP depacketization of SVQ3
|
1387 |
+
- -strict inofficial replaced by -strict unofficial
|
1388 |
+
- ffplay -exitonkeydown and -exitonmousedown options added
|
1389 |
+
- native GSM / GSM MS decoder
|
1390 |
+
- RTP depacketization of QDM2
|
1391 |
+
- ANSI/ASCII art playback system
|
1392 |
+
- Lego Mindstorms RSO de/muxer
|
1393 |
+
- libavcore added (and subsequently removed)
|
1394 |
+
- SubRip subtitle file muxer and demuxer
|
1395 |
+
- Chinese AVS encoding via libxavs
|
1396 |
+
- ffprobe -show_packets option added
|
1397 |
+
- RTP packetization of Theora and Vorbis
|
1398 |
+
- RTP depacketization of MP4A-LATM
|
1399 |
+
- RTP packetization and depacketization of VP8
|
1400 |
+
- hflip filter
|
1401 |
+
- Apple HTTP Live Streaming demuxer
|
1402 |
+
- a64 codec
|
1403 |
+
- MMS-HTTP support
|
1404 |
+
- G.722 ADPCM audio encoder/decoder
|
1405 |
+
- R10k video decoder
|
1406 |
+
- ocv_smooth filter
|
1407 |
+
- frei0r wrapper filter
|
1408 |
+
- change crop filter syntax to width:height:x:y
|
1409 |
+
- make the crop filter accept parametric expressions
|
1410 |
+
- make ffprobe accept AVFormatContext options
|
1411 |
+
- yadif filter
|
1412 |
+
- blackframe filter
|
1413 |
+
- Demuxer for Leitch/Harris' VR native stream format (LXF)
|
1414 |
+
- RTP depacketization of the X-QT QuickTime format
|
1415 |
+
- SAP (Session Announcement Protocol, RFC 2974) muxer and demuxer
|
1416 |
+
- cropdetect filter
|
1417 |
+
- ffmpeg -crop* options removed
|
1418 |
+
- transpose filter added
|
1419 |
+
- ffmpeg -force_key_frames option added
|
1420 |
+
- demuxer for receiving raw rtp:// URLs without an SDP description
|
1421 |
+
- single stream LATM/LOAS decoder
|
1422 |
+
- setpts filter added
|
1423 |
+
- Win64 support for optimized x86 assembly functions
|
1424 |
+
- MJPEG/AVI1 to JPEG/JFIF bitstream filter
|
1425 |
+
- ASS subtitle encoder and decoder
|
1426 |
+
- IEC 61937 encapsulation for E-AC-3, TrueHD, DTS-HD (for HDMI passthrough)
|
1427 |
+
- overlay filter added
|
1428 |
+
- rename aspect filter to setdar, and pixelaspect to setsar
|
1429 |
+
- IEC 61937 demuxer
|
1430 |
+
- Mobotix .mxg demuxer
|
1431 |
+
- frei0r source added
|
1432 |
+
- hqdn3d filter added
|
1433 |
+
- RTP depacketization of QCELP
|
1434 |
+
- FLAC parser added
|
1435 |
+
- gradfun filter added
|
1436 |
+
- AMR-WB decoder
|
1437 |
+
- replace the ocv_smooth filter with a more generic ocv filter
|
1438 |
+
- Windows Televison (WTV) demuxer
|
1439 |
+
- FFmpeg metadata format muxer and demuxer
|
1440 |
+
- SubRip (srt) subtitle encoder and decoder
|
1441 |
+
- floating-point AC-3 encoder added
|
1442 |
+
- Lagarith decoder
|
1443 |
+
- ffmpeg -copytb option added
|
1444 |
+
- IVF muxer added
|
1445 |
+
- Wing Commander IV movies decoder added
|
1446 |
+
- movie source added
|
1447 |
+
- Bink version 'b' audio and video decoder
|
1448 |
+
- Bitmap Brothers JV playback system
|
1449 |
+
- Apple HTTP Live Streaming protocol handler
|
1450 |
+
- sndio support for playback and record
|
1451 |
+
- Linux framebuffer input device added
|
1452 |
+
- Chronomaster DFA decoder
|
1453 |
+
- DPX image encoder
|
1454 |
+
- MicroDVD subtitle file muxer and demuxer
|
1455 |
+
- Playstation Portable PMP format demuxer
|
1456 |
+
- fieldorder video filter added
|
1457 |
+
- AAC encoding via libvo-aacenc
|
1458 |
+
- AMR-WB encoding via libvo-amrwbenc
|
1459 |
+
- xWMA demuxer
|
1460 |
+
- Mobotix MxPEG decoder
|
1461 |
+
- VP8 frame-multithreading
|
1462 |
+
- NEON optimizations for VP8
|
1463 |
+
- Lots of deprecated API cruft removed
|
1464 |
+
- fft and imdct optimizations for AVX (Sandy Bridge) processors
|
1465 |
+
- showinfo filter added
|
1466 |
+
- SMPTE 302M AES3 audio decoder
|
1467 |
+
- Apple Core Audio Format muxer
|
1468 |
+
- 9 bits and 10 bits per sample support in the H.264 decoder
|
1469 |
+
- 9 bits and 10 bits FFV1 encoding / decoding
|
1470 |
+
- split filter added
|
1471 |
+
- select filter added
|
1472 |
+
- sdl output device added
|
1473 |
+
- libmpcodecs video filter support (3 times as many filters than before)
|
1474 |
+
- mpeg2 aspect ratio dection fixed
|
1475 |
+
- libxvid aspect pickiness fixed
|
1476 |
+
- Frame multithreaded decoding
|
1477 |
+
- E-AC-3 audio encoder
|
1478 |
+
- ac3enc: add channel coupling support
|
1479 |
+
- floating-point sample format support to the ac3, eac3, dca, aac, and vorbis decoders.
|
1480 |
+
- H264/MPEG frame-level multi-threading
|
1481 |
+
- All av_metadata_* functions renamed to av_dict_* and moved to libavutil
|
1482 |
+
- 4:4:4 H.264 decoding support
|
1483 |
+
- 10-bit H.264 optimizations for x86
|
1484 |
+
- lut, lutrgb, and lutyuv filters added
|
1485 |
+
- buffersink libavfilter sink added
|
1486 |
+
- Bump libswscale for recently reported ABI break
|
1487 |
+
- New J2K encoder (via OpenJPEG)
|
1488 |
+
|
1489 |
+
|
1490 |
+
version 0.7:
|
1491 |
+
|
1492 |
+
- all the changes for 0.8, but keeping API/ABI compatibility with the 0.6 release
|
1493 |
+
|
1494 |
+
|
1495 |
+
version 0.6:
|
1496 |
+
|
1497 |
+
- PB-frame decoding for H.263
|
1498 |
+
- deprecated vhook subsystem removed
|
1499 |
+
- deprecated old scaler removed
|
1500 |
+
- VQF demuxer
|
1501 |
+
- Alpha channel scaler
|
1502 |
+
- PCX encoder
|
1503 |
+
- RTP packetization of H.263
|
1504 |
+
- RTP packetization of AMR
|
1505 |
+
- RTP depacketization of Vorbis
|
1506 |
+
- CorePNG decoding support
|
1507 |
+
- Cook multichannel decoding support
|
1508 |
+
- introduced avlanguage helpers in libavformat
|
1509 |
+
- 8088flex TMV demuxer and decoder
|
1510 |
+
- per-stream language-tags extraction in asfdec
|
1511 |
+
- V210 decoder and encoder
|
1512 |
+
- remaining GPL parts in AC-3 decoder converted to LGPL
|
1513 |
+
- QCP demuxer
|
1514 |
+
- SoX native format muxer and demuxer
|
1515 |
+
- AMR-NB decoding/encoding, AMR-WB decoding via OpenCORE libraries
|
1516 |
+
- DPX image decoder
|
1517 |
+
- Electronic Arts Madcow decoder
|
1518 |
+
- DivX (XSUB) subtitle encoder
|
1519 |
+
- nonfree libamr support for AMR-NB/WB decoding/encoding removed
|
1520 |
+
- experimental AAC encoder
|
1521 |
+
- RTP depacketization of ASF and RTSP from WMS servers
|
1522 |
+
- RTMP support in libavformat
|
1523 |
+
- noX handling for OPT_BOOL X options
|
1524 |
+
- Wave64 demuxer
|
1525 |
+
- IEC-61937 compatible Muxer
|
1526 |
+
- TwinVQ decoder
|
1527 |
+
- Bluray (PGS) subtitle decoder
|
1528 |
+
- LPCM support in MPEG-TS (HDMV RID as found on Blu-ray disks)
|
1529 |
+
- WMA Pro decoder
|
1530 |
+
- Core Audio Format demuxer
|
1531 |
+
- ATRAC1 decoder
|
1532 |
+
- MD STUDIO audio demuxer
|
1533 |
+
- RF64 support in WAV demuxer
|
1534 |
+
- MPEG-4 Audio Lossless Coding (ALS) decoder
|
1535 |
+
- -formats option split into -formats, -codecs, -bsfs, and -protocols
|
1536 |
+
- IV8 demuxer
|
1537 |
+
- CDG demuxer and decoder
|
1538 |
+
- R210 decoder
|
1539 |
+
- Auravision Aura 1 and 2 decoders
|
1540 |
+
- Deluxe Paint Animation playback system
|
1541 |
+
- SIPR decoder
|
1542 |
+
- Adobe Filmstrip muxer and demuxer
|
1543 |
+
- RTP depacketization of H.263
|
1544 |
+
- Bink demuxer and audio/video decoders
|
1545 |
+
- enable symbol versioning by default for linkers that support it
|
1546 |
+
- IFF PBM/ILBM bitmap decoder
|
1547 |
+
- concat protocol
|
1548 |
+
- Indeo 5 decoder
|
1549 |
+
- RTP depacketization of AMR
|
1550 |
+
- WMA Voice decoder
|
1551 |
+
- ffprobe tool
|
1552 |
+
- AMR-NB decoder
|
1553 |
+
- RTSP muxer
|
1554 |
+
- HE-AAC v1 decoder
|
1555 |
+
- Kega Game Video (KGV1) decoder
|
1556 |
+
- VorbisComment writing for FLAC, Ogg FLAC and Ogg Speex files
|
1557 |
+
- RTP depacketization of Theora
|
1558 |
+
- HTTP Digest authentication
|
1559 |
+
- RTMP/RTMPT/RTMPS/RTMPE/RTMPTE protocol support via librtmp
|
1560 |
+
- Psygnosis YOP demuxer and video decoder
|
1561 |
+
- spectral extension support in the E-AC-3 decoder
|
1562 |
+
- unsharp video filter
|
1563 |
+
- RTP hinting in the mov/3gp/mp4 muxer
|
1564 |
+
- Dirac in Ogg demuxing
|
1565 |
+
- seek to keyframes in Ogg
|
1566 |
+
- 4:2:2 and 4:4:4 Theora decoding
|
1567 |
+
- 35% faster VP3/Theora decoding
|
1568 |
+
- faster AAC decoding
|
1569 |
+
- faster H.264 decoding
|
1570 |
+
- RealAudio 1.0 (14.4K) encoder
|
1571 |
+
|
1572 |
+
|
1573 |
+
version 0.5:
|
1574 |
+
|
1575 |
+
- DV50 AKA DVCPRO50 encoder, decoder, muxer and demuxer
|
1576 |
+
- TechSmith Camtasia (TSCC) video decoder
|
1577 |
+
- IBM Ultimotion (ULTI) video decoder
|
1578 |
+
- Sierra Online audio file demuxer and decoder
|
1579 |
+
- Apple QuickDraw (qdrw) video decoder
|
1580 |
+
- Creative ADPCM audio decoder (16 bits as well as 8 bits schemes)
|
1581 |
+
- Electronic Arts Multimedia (WVE/UV2/etc.) file demuxer
|
1582 |
+
- Miro VideoXL (VIXL) video decoder
|
1583 |
+
- H.261 video encoder
|
1584 |
+
- QPEG video decoder
|
1585 |
+
- Nullsoft Video (NSV) file demuxer
|
1586 |
+
- Shorten audio decoder
|
1587 |
+
- LOCO video decoder
|
1588 |
+
- Apple Lossless Audio Codec (ALAC) decoder
|
1589 |
+
- Winnov WNV1 video decoder
|
1590 |
+
- Autodesk Animator Studio Codec (AASC) decoder
|
1591 |
+
- Indeo 2 video decoder
|
1592 |
+
- Fraps FPS1 video decoder
|
1593 |
+
- Snow video encoder/decoder
|
1594 |
+
- Sonic audio encoder/decoder
|
1595 |
+
- Vorbis audio decoder
|
1596 |
+
- Macromedia ADPCM decoder
|
1597 |
+
- Duck TrueMotion 2 video decoder
|
1598 |
+
- support for decoding FLX and DTA extensions in FLIC files
|
1599 |
+
- H.264 custom quantization matrices support
|
1600 |
+
- ffserver fixed, it should now be usable again
|
1601 |
+
- QDM2 audio decoder
|
1602 |
+
- Real Cooker audio decoder
|
1603 |
+
- TrueSpeech audio decoder
|
1604 |
+
- WMA2 audio decoder fixed, now all files should play correctly
|
1605 |
+
- RealAudio 14.4 and 28.8 decoders fixed
|
1606 |
+
- JPEG-LS decoder
|
1607 |
+
- build system improvements
|
1608 |
+
- tabs and trailing whitespace removed from the codebase
|
1609 |
+
- CamStudio video decoder
|
1610 |
+
- AIFF/AIFF-C audio format, encoding and decoding
|
1611 |
+
- ADTS AAC file reading and writing
|
1612 |
+
- Creative VOC file reading and writing
|
1613 |
+
- American Laser Games multimedia (*.mm) playback system
|
1614 |
+
- Zip Motion Blocks Video decoder
|
1615 |
+
- improved Theora/VP3 decoder
|
1616 |
+
- True Audio (TTA) decoder
|
1617 |
+
- AVS demuxer and video decoder
|
1618 |
+
- JPEG-LS encoder
|
1619 |
+
- Smacker demuxer and decoder
|
1620 |
+
- NuppelVideo/MythTV demuxer and RTjpeg decoder
|
1621 |
+
- KMVC decoder
|
1622 |
+
- MPEG-2 intra VLC support
|
1623 |
+
- MPEG-2 4:2:2 encoder
|
1624 |
+
- Flash Screen Video decoder
|
1625 |
+
- GXF demuxer
|
1626 |
+
- Chinese AVS decoder
|
1627 |
+
- GXF muxer
|
1628 |
+
- MXF demuxer
|
1629 |
+
- VC-1/WMV3/WMV9 video decoder
|
1630 |
+
- MacIntel support
|
1631 |
+
- AviSynth support
|
1632 |
+
- VMware video decoder
|
1633 |
+
- VP5 video decoder
|
1634 |
+
- VP6 video decoder
|
1635 |
+
- WavPack lossless audio decoder
|
1636 |
+
- Targa (.TGA) picture decoder
|
1637 |
+
- Vorbis audio encoder
|
1638 |
+
- Delphine Software .cin demuxer/audio and video decoder
|
1639 |
+
- Tiertex .seq demuxer/video decoder
|
1640 |
+
- MTV demuxer
|
1641 |
+
- TIFF picture encoder and decoder
|
1642 |
+
- GIF picture decoder
|
1643 |
+
- Intel Music Coder decoder
|
1644 |
+
- Zip Motion Blocks Video encoder
|
1645 |
+
- Musepack decoder
|
1646 |
+
- Flash Screen Video encoder
|
1647 |
+
- Theora encoding via libtheora
|
1648 |
+
- BMP encoder
|
1649 |
+
- WMA encoder
|
1650 |
+
- GSM-MS encoder and decoder
|
1651 |
+
- DCA decoder
|
1652 |
+
- DXA demuxer and decoder
|
1653 |
+
- DNxHD decoder
|
1654 |
+
- Gamecube movie (.THP) playback system
|
1655 |
+
- Blackfin optimizations
|
1656 |
+
- Interplay C93 demuxer and video decoder
|
1657 |
+
- Bethsoft VID demuxer and video decoder
|
1658 |
+
- CRYO APC demuxer
|
1659 |
+
- ATRAC3 decoder
|
1660 |
+
- V.Flash PTX decoder
|
1661 |
+
- RoQ muxer, RoQ audio encoder
|
1662 |
+
- Renderware TXD demuxer and decoder
|
1663 |
+
- extern C declarations for C++ removed from headers
|
1664 |
+
- sws_flags command line option
|
1665 |
+
- codebook generator
|
1666 |
+
- RoQ video encoder
|
1667 |
+
- QTRLE encoder
|
1668 |
+
- OS/2 support removed and restored again
|
1669 |
+
- AC-3 decoder
|
1670 |
+
- NUT muxer
|
1671 |
+
- additional SPARC (VIS) optimizations
|
1672 |
+
- Matroska muxer
|
1673 |
+
- slice-based parallel H.264 decoding
|
1674 |
+
- Monkey's Audio demuxer and decoder
|
1675 |
+
- AMV audio and video decoder
|
1676 |
+
- DNxHD encoder
|
1677 |
+
- H.264 PAFF decoding
|
1678 |
+
- Nellymoser ASAO decoder
|
1679 |
+
- Beam Software SIFF demuxer and decoder
|
1680 |
+
- libvorbis Vorbis decoding removed in favor of native decoder
|
1681 |
+
- IntraX8 (J-Frame) subdecoder for WMV2 and VC-1
|
1682 |
+
- Ogg (Theora, Vorbis and FLAC) muxer
|
1683 |
+
- The "device" muxers and demuxers are now in a new libavdevice library
|
1684 |
+
- PC Paintbrush PCX decoder
|
1685 |
+
- Sun Rasterfile decoder
|
1686 |
+
- TechnoTrend PVA demuxer
|
1687 |
+
- Linux Media Labs MPEG-4 (LMLM4) demuxer
|
1688 |
+
- AVM2 (Flash 9) SWF muxer
|
1689 |
+
- QT variant of IMA ADPCM encoder
|
1690 |
+
- VFW grabber
|
1691 |
+
- iPod/iPhone compatible mp4 muxer
|
1692 |
+
- Mimic decoder
|
1693 |
+
- MSN TCP Webcam stream demuxer
|
1694 |
+
- RL2 demuxer / decoder
|
1695 |
+
- IFF demuxer
|
1696 |
+
- 8SVX audio decoder
|
1697 |
+
- non-recursive Makefiles
|
1698 |
+
- BFI demuxer
|
1699 |
+
- MAXIS EA XA (.xa) demuxer / decoder
|
1700 |
+
- BFI video decoder
|
1701 |
+
- OMA demuxer
|
1702 |
+
- MLP/TrueHD decoder
|
1703 |
+
- Electronic Arts CMV decoder
|
1704 |
+
- Motion Pixels Video decoder
|
1705 |
+
- Motion Pixels MVI demuxer
|
1706 |
+
- removed animated GIF decoder/demuxer
|
1707 |
+
- D-Cinema audio muxer
|
1708 |
+
- Electronic Arts TGV decoder
|
1709 |
+
- Apple Lossless Audio Codec (ALAC) encoder
|
1710 |
+
- AAC decoder
|
1711 |
+
- floating point PCM encoder/decoder
|
1712 |
+
- MXF muxer
|
1713 |
+
- DV100 AKA DVCPRO HD decoder and demuxer
|
1714 |
+
- E-AC-3 support added to AC-3 decoder
|
1715 |
+
- Nellymoser ASAO encoder
|
1716 |
+
- ASS and SSA demuxer and muxer
|
1717 |
+
- liba52 wrapper removed
|
1718 |
+
- SVQ3 watermark decoding support
|
1719 |
+
- Speex decoding via libspeex
|
1720 |
+
- Electronic Arts TGQ decoder
|
1721 |
+
- RV40 decoder
|
1722 |
+
- QCELP / PureVoice decoder
|
1723 |
+
- RV30 decoder
|
1724 |
+
- hybrid WavPack support
|
1725 |
+
- R3D REDCODE demuxer
|
1726 |
+
- ALSA support for playback and record
|
1727 |
+
- Electronic Arts TQI decoder
|
1728 |
+
- OpenJPEG based JPEG 2000 decoder
|
1729 |
+
- NC (NC4600) camera file demuxer
|
1730 |
+
- Gopher client support
|
1731 |
+
- MXF D-10 muxer
|
1732 |
+
- generic metadata API
|
1733 |
+
- flash ScreenVideo2 encoder
|
1734 |
+
|
1735 |
+
|
1736 |
+
version 0.4.9-pre1:
|
1737 |
+
|
1738 |
+
- DV encoder, DV muxer
|
1739 |
+
- Microsoft RLE video decoder
|
1740 |
+
- Microsoft Video-1 decoder
|
1741 |
+
- Apple Animation (RLE) decoder
|
1742 |
+
- Apple Graphics (SMC) decoder
|
1743 |
+
- Apple Video (RPZA) decoder
|
1744 |
+
- Cinepak decoder
|
1745 |
+
- Sega FILM (CPK) file demuxer
|
1746 |
+
- Westwood multimedia support (VQA & AUD files)
|
1747 |
+
- Id Quake II CIN playback support
|
1748 |
+
- 8BPS video decoder
|
1749 |
+
- FLIC playback support
|
1750 |
+
- RealVideo 2.0 (RV20) decoder
|
1751 |
+
- Duck TrueMotion v1 (DUCK) video decoder
|
1752 |
+
- Sierra VMD demuxer and video decoder
|
1753 |
+
- MSZH and ZLIB decoder support
|
1754 |
+
- SVQ1 video encoder
|
1755 |
+
- AMR-WB support
|
1756 |
+
- PPC optimizations
|
1757 |
+
- rate distortion optimal cbp support
|
1758 |
+
- rate distorted optimal ac prediction for MPEG-4
|
1759 |
+
- rate distorted optimal lambda->qp support
|
1760 |
+
- AAC encoding with libfaac
|
1761 |
+
- Sunplus JPEG codec (SP5X) support
|
1762 |
+
- use Lagrange multiplier instead of QP for ratecontrol
|
1763 |
+
- Theora/VP3 decoding support
|
1764 |
+
- XA and ADX ADPCM codecs
|
1765 |
+
- export MPEG-2 active display area / pan scan
|
1766 |
+
- Add support for configuring with IBM XLC
|
1767 |
+
- floating point AAN DCT
|
1768 |
+
- initial support for zygo video (not complete)
|
1769 |
+
- RGB ffv1 support
|
1770 |
+
- new audio/video parser API
|
1771 |
+
- av_log() system
|
1772 |
+
- av_read_frame() and av_seek_frame() support
|
1773 |
+
- missing last frame fixes
|
1774 |
+
- seek by mouse in ffplay
|
1775 |
+
- noise reduction of DCT coefficients
|
1776 |
+
- H.263 OBMC & 4MV support
|
1777 |
+
- H.263 alternative inter vlc support
|
1778 |
+
- H.263 loop filter
|
1779 |
+
- H.263 slice structured mode
|
1780 |
+
- interlaced DCT support for MPEG-2 encoding
|
1781 |
+
- stuffing to stay above min_bitrate
|
1782 |
+
- MB type & QP visualization
|
1783 |
+
- frame stepping for ffplay
|
1784 |
+
- interlaced motion estimation
|
1785 |
+
- alternate scantable support
|
1786 |
+
- SVCD scan offset support
|
1787 |
+
- closed GOP support
|
1788 |
+
- SSE2 FDCT
|
1789 |
+
- quantizer noise shaping
|
1790 |
+
- G.726 ADPCM audio codec
|
1791 |
+
- MS ADPCM encoding
|
1792 |
+
- multithreaded/SMP motion estimation
|
1793 |
+
- multithreaded/SMP encoding for MPEG-1/MPEG-2/MPEG-4/H.263
|
1794 |
+
- multithreaded/SMP decoding for MPEG-2
|
1795 |
+
- FLAC decoder
|
1796 |
+
- Metrowerks CodeWarrior suppport
|
1797 |
+
- H.263+ custom pcf support
|
1798 |
+
- nicer output for 'ffmpeg -formats'
|
1799 |
+
- Matroska demuxer
|
1800 |
+
- SGI image format, encoding and decoding
|
1801 |
+
- H.264 loop filter support
|
1802 |
+
- H.264 CABAC support
|
1803 |
+
- nicer looking arrows for the motion vector visualization
|
1804 |
+
- improved VCD support
|
1805 |
+
- audio timestamp drift compensation
|
1806 |
+
- MPEG-2 YUV 422/444 support
|
1807 |
+
- polyphase kaiser windowed sinc and blackman nuttall windowed sinc audio resample
|
1808 |
+
- better image scaling
|
1809 |
+
- H.261 support
|
1810 |
+
- correctly interleave packets during encoding
|
1811 |
+
- VIS optimized motion compensation
|
1812 |
+
- intra_dc_precision>0 encoding support
|
1813 |
+
- support reuse of motion vectors/MB types/field select values of the source video
|
1814 |
+
- more accurate deblock filter
|
1815 |
+
- padding support
|
1816 |
+
- many optimizations and bugfixes
|
1817 |
+
- FunCom ISS audio file demuxer and according ADPCM decoding
|
1818 |
+
|
1819 |
+
|
1820 |
+
version 0.4.8:
|
1821 |
+
|
1822 |
+
- MPEG-2 video encoding (Michael)
|
1823 |
+
- Id RoQ playback subsystem (Mike Melanson and Tim Ferguson)
|
1824 |
+
- Wing Commander III Movie (.mve) file playback subsystem (Mike Melanson
|
1825 |
+
and Mario Brito)
|
1826 |
+
- Xan DPCM audio decoder (Mario Brito)
|
1827 |
+
- Interplay MVE playback subsystem (Mike Melanson)
|
1828 |
+
- Duck DK3 and DK4 ADPCM audio decoders (Mike Melanson)
|
1829 |
+
|
1830 |
+
|
1831 |
+
version 0.4.7:
|
1832 |
+
|
1833 |
+
- RealAudio 1.0 (14_4) and 2.0 (28_8) native decoders. Author unknown, code from mplayerhq
|
1834 |
+
(originally from public domain player for Amiga at http://www.honeypot.net/audio)
|
1835 |
+
- current version now also compiles with older GCC (Fabrice)
|
1836 |
+
- 4X multimedia playback system including 4xm file demuxer (Mike
|
1837 |
+
Melanson), and 4X video and audio codecs (Michael)
|
1838 |
+
- Creative YUV (CYUV) decoder (Mike Melanson)
|
1839 |
+
- FFV1 codec (our very simple lossless intra only codec, compresses much better
|
1840 |
+
than HuffYUV) (Michael)
|
1841 |
+
- ASV1 (Asus), H.264, Intel indeo3 codecs have been added (various)
|
1842 |
+
- tiny PNG encoder and decoder, tiny GIF decoder, PAM decoder (PPM with
|
1843 |
+
alpha support), JPEG YUV colorspace support. (Fabrice Bellard)
|
1844 |
+
- ffplay has been replaced with a newer version which uses SDL (optionally)
|
1845 |
+
for multiplatform support (Fabrice)
|
1846 |
+
- Sorenson Version 3 codec (SVQ3) support has been added (decoding only) - donated
|
1847 |
+
by anonymous
|
1848 |
+
- AMR format has been added (Johannes Carlsson)
|
1849 |
+
- 3GP support has been added (Johannes Carlsson)
|
1850 |
+
- VP3 codec has been added (Mike Melanson)
|
1851 |
+
- more MPEG-1/2 fixes
|
1852 |
+
- better multiplatform support, MS Visual Studio fixes (various)
|
1853 |
+
- AltiVec optimizations (Magnus Damn and others)
|
1854 |
+
- SH4 processor support has been added (BERO)
|
1855 |
+
- new public interfaces (avcodec_get_pix_fmt) (Roman Shaposhnick)
|
1856 |
+
- VOB streaming support (Brian Foley)
|
1857 |
+
- better MP3 autodetection (Andriy Rysin)
|
1858 |
+
- qpel encoding (Michael)
|
1859 |
+
- 4mv+b frames encoding finally fixed (Michael)
|
1860 |
+
- chroma ME (Michael)
|
1861 |
+
- 5 comparison functions for ME (Michael)
|
1862 |
+
- B-frame encoding speedup (Michael)
|
1863 |
+
- WMV2 codec (unfinished - Michael)
|
1864 |
+
- user specified diamond size for EPZS (Michael)
|
1865 |
+
- Playstation STR playback subsystem, still experimental (Mike and Michael)
|
1866 |
+
- ASV2 codec (Michael)
|
1867 |
+
- CLJR decoder (Alex)
|
1868 |
+
|
1869 |
+
.. And lots more new enhancements and fixes.
|
1870 |
+
|
1871 |
+
|
1872 |
+
version 0.4.6:
|
1873 |
+
|
1874 |
+
- completely new integer only MPEG audio layer 1/2/3 decoder rewritten
|
1875 |
+
from scratch
|
1876 |
+
- Recoded DCT and motion vector search with gcc (no longer depends on nasm)
|
1877 |
+
- fix quantization bug in AC3 encoder
|
1878 |
+
- added PCM codecs and format. Corrected WAV/AVI/ASF PCM issues
|
1879 |
+
- added prototype ffplay program
|
1880 |
+
- added GOB header parsing on H.263/H.263+ decoder (Juanjo)
|
1881 |
+
- bug fix on MCBPC tables of H.263 (Juanjo)
|
1882 |
+
- bug fix on DC coefficients of H.263 (Juanjo)
|
1883 |
+
- added Advanced Prediction Mode on H.263/H.263+ decoder (Juanjo)
|
1884 |
+
- now we can decode H.263 streams found in QuickTime files (Juanjo)
|
1885 |
+
- now we can decode H.263 streams found in VIVO v1 files(Juanjo)
|
1886 |
+
- preliminary RTP "friendly" mode for H.263/H.263+ coding. (Juanjo)
|
1887 |
+
- added GOB header for H.263/H.263+ coding on RTP mode (Juanjo)
|
1888 |
+
- now H.263 picture size is returned on the first decoded frame (Juanjo)
|
1889 |
+
- added first regression tests
|
1890 |
+
- added MPEG-2 TS demuxer
|
1891 |
+
- new demux API for libav
|
1892 |
+
- more accurate and faster IDCT (Michael)
|
1893 |
+
- faster and entropy-controlled motion search (Michael)
|
1894 |
+
- two pass video encoding (Michael)
|
1895 |
+
- new video rate control (Michael)
|
1896 |
+
- added MSMPEG4V1, MSMPEGV2 and WMV1 support (Michael)
|
1897 |
+
- great performance improvement of video encoders and decoders (Michael)
|
1898 |
+
- new and faster bit readers and vlc parsers (Michael)
|
1899 |
+
- high quality encoding mode: tries all macroblock/VLC types (Michael)
|
1900 |
+
- added DV video decoder
|
1901 |
+
- preliminary RTP/RTSP support in ffserver and libavformat
|
1902 |
+
- H.263+ AIC decoding/encoding support (Juanjo)
|
1903 |
+
- VCD MPEG-PS mode (Juanjo)
|
1904 |
+
- PSNR stuff (Juanjo)
|
1905 |
+
- simple stats output (Juanjo)
|
1906 |
+
- 16-bit and 15-bit RGB/BGR/GBR support (Bisqwit)
|
1907 |
+
|
1908 |
+
|
1909 |
+
version 0.4.5:
|
1910 |
+
|
1911 |
+
- some header fixes (Zdenek Kabelac <kabi at informatics.muni.cz>)
|
1912 |
+
- many MMX optimizations (Nick Kurshev <nickols_k at mail.ru>)
|
1913 |
+
- added configure system (actually a small shell script)
|
1914 |
+
- added MPEG audio layer 1/2/3 decoding using LGPL'ed mpglib by
|
1915 |
+
Michael Hipp (temporary solution - waiting for integer only
|
1916 |
+
decoder)
|
1917 |
+
- fixed VIDIOCSYNC interrupt
|
1918 |
+
- added Intel H.263 decoding support ('I263' AVI fourCC)
|
1919 |
+
- added Real Video 1.0 decoding (needs further testing)
|
1920 |
+
- simplified image formats again. Added PGM format (=grey
|
1921 |
+
pgm). Renamed old PGM to PGMYUV.
|
1922 |
+
- fixed msmpeg4 slice issues (tell me if you still find problems)
|
1923 |
+
- fixed OpenDivX bugs with newer versions (added VOL header decoding)
|
1924 |
+
- added support for MPlayer interface
|
1925 |
+
- added macroblock skip optimization
|
1926 |
+
- added MJPEG decoder
|
1927 |
+
- added mmx/mmxext IDCT from libmpeg2
|
1928 |
+
- added pgmyuvpipe, ppm, and ppm_pipe formats (original patch by Celer
|
1929 |
+
<celer at shell.scrypt.net>)
|
1930 |
+
- added pixel format conversion layer (e.g. for MJPEG or PPM)
|
1931 |
+
- added deinterlacing option
|
1932 |
+
- MPEG-1/2 fixes
|
1933 |
+
- MPEG-4 vol header fixes (Jonathan Marsden <snmjbm at pacbell.net>)
|
1934 |
+
- ARM optimizations (Lionel Ulmer <lionel.ulmer at free.fr>).
|
1935 |
+
- Windows porting of file converter
|
1936 |
+
- added MJPEG raw format (input/output)
|
1937 |
+
- added JPEG image format support (input/output)
|
1938 |
+
|
1939 |
+
|
1940 |
+
version 0.4.4:
|
1941 |
+
|
1942 |
+
- fixed some std header definitions (Bjorn Lindgren
|
1943 |
+
<bjorn.e.lindgren at telia.com>).
|
1944 |
+
- added MPEG demuxer (MPEG-1 and 2 compatible).
|
1945 |
+
- added ASF demuxer
|
1946 |
+
- added prototype RM demuxer
|
1947 |
+
- added AC3 decoding (done with libac3 by Aaron Holtzman)
|
1948 |
+
- added decoding codec parameter guessing (.e.g. for MPEG, because the
|
1949 |
+
header does not include them)
|
1950 |
+
- fixed header generation in MPEG-1, AVI and ASF muxer: wmplayer can now
|
1951 |
+
play them (only tested video)
|
1952 |
+
- fixed H.263 white bug
|
1953 |
+
- fixed phase rounding in img resample filter
|
1954 |
+
- add MMX code for polyphase img resample filter
|
1955 |
+
- added CPU autodetection
|
1956 |
+
- added generic title/author/copyright/comment string handling (ASF and RM
|
1957 |
+
use them)
|
1958 |
+
- added SWF demux to extract MP3 track (not usable yet because no MP3
|
1959 |
+
decoder)
|
1960 |
+
- added fractional frame rate support
|
1961 |
+
- codecs are no longer searched by read_header() (should fix ffserver
|
1962 |
+
segfault)
|
1963 |
+
|
1964 |
+
|
1965 |
+
version 0.4.3:
|
1966 |
+
|
1967 |
+
- BGR24 patch (initial patch by Jeroen Vreeken <pe1rxq at amsat.org>)
|
1968 |
+
- fixed raw yuv output
|
1969 |
+
- added motion rounding support in MPEG-4
|
1970 |
+
- fixed motion bug rounding in MSMPEG4
|
1971 |
+
- added B-frame handling in video core
|
1972 |
+
- added full MPEG-1 decoding support
|
1973 |
+
- added partial (frame only) MPEG-2 support
|
1974 |
+
- changed the FOURCC code for H.263 to "U263" to be able to see the
|
1975 |
+
+AVI/H.263 file with the UB Video H.263+ decoder. MPlayer works with
|
1976 |
+
this +codec ;) (JuanJo).
|
1977 |
+
- Halfpel motion estimation after MB type selection (JuanJo)
|
1978 |
+
- added pgm and .Y.U.V output format
|
1979 |
+
- suppressed 'img:' protocol. Simply use: /tmp/test%d.[pgm|Y] as input or
|
1980 |
+
output.
|
1981 |
+
- added pgmpipe I/O format (original patch from Martin Aumueller
|
1982 |
+
<lists at reserv.at>, but changed completely since we use a format
|
1983 |
+
instead of a protocol)
|
1984 |
+
|
1985 |
+
|
1986 |
+
version 0.4.2:
|
1987 |
+
|
1988 |
+
- added H.263/MPEG-4/MSMPEG4 decoding support. MPEG-4 decoding support
|
1989 |
+
(for OpenDivX) is almost complete: 8x8 MVs and rounding are
|
1990 |
+
missing. MSMPEG4 support is complete.
|
1991 |
+
- added prototype MPEG-1 decoder. Only I- and P-frames handled yet (it
|
1992 |
+
can decode ffmpeg MPEGs :-)).
|
1993 |
+
- added libavcodec API documentation (see apiexample.c).
|
1994 |
+
- fixed image polyphase bug (the bottom of some images could be
|
1995 |
+
greenish)
|
1996 |
+
- added support for non clipped motion vectors (decoding only)
|
1997 |
+
and image sizes non-multiple of 16
|
1998 |
+
- added support for AC prediction (decoding only)
|
1999 |
+
- added file overwrite confirmation (can be disabled with -y)
|
2000 |
+
- added custom size picture to H.263 using H.263+ (Juanjo)
|
2001 |
+
|
2002 |
+
|
2003 |
+
version 0.4.1:
|
2004 |
+
|
2005 |
+
- added MSMPEG4 (aka DivX) compatible encoder. Changed default codec
|
2006 |
+
of AVI and ASF to DIV3.
|
2007 |
+
- added -me option to set motion estimation method
|
2008 |
+
(default=log). suppressed redundant -hq option.
|
2009 |
+
- added options -acodec and -vcodec to force a given codec (useful for
|
2010 |
+
AVI for example)
|
2011 |
+
- fixed -an option
|
2012 |
+
- improved dct_quantize speed
|
2013 |
+
- factorized some motion estimation code
|
2014 |
+
|
2015 |
+
|
2016 |
+
version 0.4.0:
|
2017 |
+
|
2018 |
+
- removing grab code from ffserver and moved it to ffmpeg. Added
|
2019 |
+
multistream support to ffmpeg.
|
2020 |
+
- added timeshifting support for live feeds (option ?date=xxx in the
|
2021 |
+
URL)
|
2022 |
+
- added high quality image resize code with polyphase filter (need
|
2023 |
+
mmx/see optimization). Enable multiple image size support in ffserver.
|
2024 |
+
- added multi live feed support in ffserver
|
2025 |
+
- suppressed master feature from ffserver (it should be done with an
|
2026 |
+
external program which opens the .ffm url and writes it to another
|
2027 |
+
ffserver)
|
2028 |
+
- added preliminary support for video stream parsing (WAV and AVI half
|
2029 |
+
done). Added proper support for audio/video file conversion in
|
2030 |
+
ffmpeg.
|
2031 |
+
- added preliminary support for video file sending from ffserver
|
2032 |
+
- redesigning I/O subsystem: now using URL based input and output
|
2033 |
+
(see avio.h)
|
2034 |
+
- added WAV format support
|
2035 |
+
- added "tty user interface" to ffmpeg to stop grabbing gracefully
|
2036 |
+
- added MMX/SSE optimizations to SAD (Sums of Absolutes Differences)
|
2037 |
+
(Juan J. Sierralta P. a.k.a. "Juanjo" <juanjo at atmlab.utfsm.cl>)
|
2038 |
+
- added MMX DCT from mpeg2_movie 1.5 (Juanjo)
|
2039 |
+
- added new motion estimation algorithms, log and phods (Juanjo)
|
2040 |
+
- changed directories: libav for format handling, libavcodec for
|
2041 |
+
codecs
|
2042 |
+
|
2043 |
+
|
2044 |
+
version 0.3.4:
|
2045 |
+
|
2046 |
+
- added stereo in MPEG audio encoder
|
2047 |
+
|
2048 |
+
|
2049 |
+
version 0.3.3:
|
2050 |
+
|
2051 |
+
- added 'high quality' mode which use motion vectors. It can be used in
|
2052 |
+
real time at low resolution.
|
2053 |
+
- fixed rounding problems which caused quality problems at high
|
2054 |
+
bitrates and large GOP size
|
2055 |
+
|
2056 |
+
|
2057 |
+
version 0.3.2: small fixes
|
2058 |
+
|
2059 |
+
- ASF fixes
|
2060 |
+
- put_seek bug fix
|
2061 |
+
|
2062 |
+
|
2063 |
+
version 0.3.1: added avi/divx support
|
2064 |
+
|
2065 |
+
- added AVI support
|
2066 |
+
- added MPEG-4 codec compatible with OpenDivX. It is based on the H.263 codec
|
2067 |
+
- added sound for flash format (not tested)
|
2068 |
+
|
2069 |
+
|
2070 |
+
version 0.3: initial public release
|
bin/ffmpeg/INSTALL.md
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## Installing FFmpeg
|
2 |
+
|
3 |
+
1. Type `./configure` to create the configuration. A list of configure
|
4 |
+
options is printed by running `configure --help`.
|
5 |
+
|
6 |
+
`configure` can be launched from a directory different from the FFmpeg
|
7 |
+
sources to build the objects out of tree. To do this, use an absolute
|
8 |
+
path when launching `configure`, e.g. `/ffmpegdir/ffmpeg/configure`.
|
9 |
+
|
10 |
+
2. Then type `make` to build FFmpeg. GNU Make 3.81 or later is required.
|
11 |
+
|
12 |
+
3. Type `make install` to install all binaries and libraries you built.
|
13 |
+
|
14 |
+
NOTICE
|
15 |
+
------
|
16 |
+
|
17 |
+
- Non system dependencies (e.g. libx264, libvpx) are disabled by default.
|
bin/ffmpeg/LICENSE.md
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# License
|
2 |
+
|
3 |
+
Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
|
4 |
+
or later (LGPL v2.1+). Read the file `COPYING.LGPLv2.1` for details. Some other
|
5 |
+
files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
|
6 |
+
FFmpeg.
|
7 |
+
|
8 |
+
Some optional parts of FFmpeg are licensed under the GNU General Public License
|
9 |
+
version 2 or later (GPL v2+). See the file `COPYING.GPLv2` for details. None of
|
10 |
+
these parts are used by default, you have to explicitly pass `--enable-gpl` to
|
11 |
+
configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
|
12 |
+
|
13 |
+
Specifically, the GPL parts of FFmpeg are:
|
14 |
+
|
15 |
+
- libpostproc
|
16 |
+
- optional x86 optimization in the files
|
17 |
+
- `libavcodec/x86/flac_dsp_gpl.asm`
|
18 |
+
- `libavcodec/x86/idct_mmx.c`
|
19 |
+
- `libavfilter/x86/vf_removegrain.asm`
|
20 |
+
- the following building and testing tools
|
21 |
+
- `compat/solaris/make_sunver.pl`
|
22 |
+
- `doc/t2h.pm`
|
23 |
+
- `doc/texi2pod.pl`
|
24 |
+
- `libswresample/tests/swresample.c`
|
25 |
+
- `tests/checkasm/*`
|
26 |
+
- `tests/tiny_ssim.c`
|
27 |
+
- the following filters in libavfilter:
|
28 |
+
- `signature_lookup.c`
|
29 |
+
- `vf_blackframe.c`
|
30 |
+
- `vf_boxblur.c`
|
31 |
+
- `vf_colormatrix.c`
|
32 |
+
- `vf_cover_rect.c`
|
33 |
+
- `vf_cropdetect.c`
|
34 |
+
- `vf_delogo.c`
|
35 |
+
- `vf_eq.c`
|
36 |
+
- `vf_find_rect.c`
|
37 |
+
- `vf_fspp.c`
|
38 |
+
- `vf_histeq.c`
|
39 |
+
- `vf_hqdn3d.c`
|
40 |
+
- `vf_kerndeint.c`
|
41 |
+
- `vf_lensfun.c` (GPL version 3 or later)
|
42 |
+
- `vf_mcdeint.c`
|
43 |
+
- `vf_mpdecimate.c`
|
44 |
+
- `vf_nnedi.c`
|
45 |
+
- `vf_owdenoise.c`
|
46 |
+
- `vf_perspective.c`
|
47 |
+
- `vf_phase.c`
|
48 |
+
- `vf_pp.c`
|
49 |
+
- `vf_pp7.c`
|
50 |
+
- `vf_pullup.c`
|
51 |
+
- `vf_repeatfields.c`
|
52 |
+
- `vf_sab.c`
|
53 |
+
- `vf_signature.c`
|
54 |
+
- `vf_smartblur.c`
|
55 |
+
- `vf_spp.c`
|
56 |
+
- `vf_stereo3d.c`
|
57 |
+
- `vf_super2xsai.c`
|
58 |
+
- `vf_tinterlace.c`
|
59 |
+
- `vf_uspp.c`
|
60 |
+
- `vf_vaguedenoiser.c`
|
61 |
+
- `vsrc_mptestsrc.c`
|
62 |
+
|
63 |
+
Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
|
64 |
+
the configure parameter `--enable-version3` will activate this licensing option
|
65 |
+
for you. Read the file `COPYING.LGPLv3` or, if you have enabled GPL parts,
|
66 |
+
`COPYING.GPLv3` to learn the exact legal terms that apply in this case.
|
67 |
+
|
68 |
+
There are a handful of files under other licensing terms, namely:
|
69 |
+
|
70 |
+
* The files `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and
|
71 |
+
`libavcodec/jrevdct.c` are taken from libjpeg, see the top of the files for
|
72 |
+
licensing details. Specifically note that you must credit the IJG in the
|
73 |
+
documentation accompanying your program if you only distribute executables.
|
74 |
+
You must also indicate any changes including additions and deletions to
|
75 |
+
those three files in the documentation.
|
76 |
+
* `tests/reference.pnm` is under the expat license.
|
77 |
+
|
78 |
+
|
79 |
+
## External libraries
|
80 |
+
|
81 |
+
FFmpeg can be combined with a number of external libraries, which sometimes
|
82 |
+
affect the licensing of binaries resulting from the combination.
|
83 |
+
|
84 |
+
### Compatible libraries
|
85 |
+
|
86 |
+
The following libraries are under GPL version 2:
|
87 |
+
- avisynth
|
88 |
+
- frei0r
|
89 |
+
- libcdio
|
90 |
+
- libdavs2
|
91 |
+
- librubberband
|
92 |
+
- libvidstab
|
93 |
+
- libx264
|
94 |
+
- libx265
|
95 |
+
- libxavs
|
96 |
+
- libxavs2
|
97 |
+
- libxvid
|
98 |
+
|
99 |
+
When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by
|
100 |
+
passing `--enable-gpl` to configure.
|
101 |
+
|
102 |
+
The following libraries are under LGPL version 3:
|
103 |
+
- gmp
|
104 |
+
- libaribb24
|
105 |
+
- liblensfun
|
106 |
+
|
107 |
+
When combining them with FFmpeg, use the configure option `--enable-version3` to
|
108 |
+
upgrade FFmpeg to the LGPL v3.
|
109 |
+
|
110 |
+
The VMAF, mbedTLS, RK MPI, OpenCORE and VisualOn libraries are under the Apache License
|
111 |
+
2.0. That license is incompatible with the LGPL v2.1 and the GPL v2, but not with
|
112 |
+
version 3 of those licenses. So to combine these libraries with FFmpeg, the
|
113 |
+
license version needs to be upgraded by passing `--enable-version3` to configure.
|
114 |
+
|
115 |
+
The smbclient library is under the GPL v3, to combine it with FFmpeg,
|
116 |
+
the options `--enable-gpl` and `--enable-version3` have to be passed to
|
117 |
+
configure to upgrade FFmpeg to the GPL v3.
|
118 |
+
|
119 |
+
### Incompatible libraries
|
120 |
+
|
121 |
+
There are certain libraries you can combine with FFmpeg whose licenses are not
|
122 |
+
compatible with the GPL and/or the LGPL. If you wish to enable these
|
123 |
+
libraries, even in circumstances that their license may be incompatible, pass
|
124 |
+
`--enable-nonfree` to configure. This will cause the resulting binary to be
|
125 |
+
unredistributable.
|
126 |
+
|
127 |
+
The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are
|
128 |
+
incompatible with the GPLv2 and v3. To the best of our knowledge, they are
|
129 |
+
compatible with the LGPL.
|
bin/ffmpeg/MAINTAINERS
ADDED
@@ -0,0 +1,643 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FFmpeg maintainers
|
2 |
+
==================
|
3 |
+
|
4 |
+
Below is a list of the people maintaining different parts of the
|
5 |
+
FFmpeg code.
|
6 |
+
|
7 |
+
Please try to keep entries where you are the maintainer up to date!
|
8 |
+
|
9 |
+
Names in () mean that the maintainer currently has no time to maintain the code.
|
10 |
+
A (CC <address>) after the name means that the maintainer prefers to be CC-ed on
|
11 |
+
patches and related discussions.
|
12 |
+
|
13 |
+
|
14 |
+
Applications
|
15 |
+
============
|
16 |
+
|
17 |
+
ffmpeg:
|
18 |
+
ffmpeg.c Michael Niedermayer, Anton Khirnov
|
19 |
+
|
20 |
+
ffplay:
|
21 |
+
ffplay.c Marton Balint
|
22 |
+
|
23 |
+
ffprobe:
|
24 |
+
ffprobe.c Stefano Sabatini
|
25 |
+
|
26 |
+
Commandline utility code:
|
27 |
+
cmdutils.c, cmdutils.h Michael Niedermayer
|
28 |
+
|
29 |
+
QuickTime faststart:
|
30 |
+
tools/qt-faststart.c Baptiste Coudurier
|
31 |
+
|
32 |
+
|
33 |
+
Miscellaneous Areas
|
34 |
+
===================
|
35 |
+
|
36 |
+
documentation Stefano Sabatini, Mike Melanson, Timothy Gu, Gyan Doshi
|
37 |
+
project server day to day operations Árpád Gereöffy, Michael Niedermayer, Reimar Doeffinger, Alexander Strasser, Nikolay Aleksandrov
|
38 |
+
project server emergencies Árpád Gereöffy, Reimar Doeffinger, Alexander Strasser, Nikolay Aleksandrov
|
39 |
+
presets Robert Swain
|
40 |
+
metadata subsystem Aurelien Jacobs
|
41 |
+
release management Michael Niedermayer
|
42 |
+
API tests Ludmila Glinskih
|
43 |
+
|
44 |
+
|
45 |
+
Communication
|
46 |
+
=============
|
47 |
+
|
48 |
+
website Deby Barbara Lepage
|
49 |
+
fate.ffmpeg.org Timothy Gu
|
50 |
+
Trac bug tracker Alexander Strasser, Michael Niedermayer, Carl Eugen Hoyos
|
51 |
+
Patchwork Andriy Gelman
|
52 |
+
mailing lists Baptiste Coudurier
|
53 |
+
Twitter Reynaldo H. Verdejo Pinochet
|
54 |
+
Launchpad Timothy Gu
|
55 |
+
ffmpeg-security Andreas Cadhalpun, Carl Eugen Hoyos, Clément Bœsch, Michael Niedermayer, Reimar Doeffinger, rcombs, wm4
|
56 |
+
|
57 |
+
|
58 |
+
libavutil
|
59 |
+
=========
|
60 |
+
|
61 |
+
External Interfaces:
|
62 |
+
libavutil/avutil.h Michael Niedermayer
|
63 |
+
Internal Interfaces:
|
64 |
+
libavutil/common.h Michael Niedermayer
|
65 |
+
|
66 |
+
Other:
|
67 |
+
aes_ctr.c, aes_ctr.h Eran Kornblau
|
68 |
+
bprint Nicolas George
|
69 |
+
bswap.h
|
70 |
+
des Reimar Doeffinger
|
71 |
+
dynarray.h Nicolas George
|
72 |
+
eval.c, eval.h Michael Niedermayer
|
73 |
+
float_dsp Loren Merritt
|
74 |
+
hash Reimar Doeffinger
|
75 |
+
hwcontext_cuda* Timo Rothenpieler
|
76 |
+
hwcontext_vulkan* Lynne
|
77 |
+
intfloat* Michael Niedermayer
|
78 |
+
integer.c, integer.h Michael Niedermayer
|
79 |
+
lzo Reimar Doeffinger
|
80 |
+
mathematics.c, mathematics.h Michael Niedermayer
|
81 |
+
mem.c, mem.h Michael Niedermayer
|
82 |
+
opencl.c, opencl.h Wei Gao
|
83 |
+
opt.c, opt.h Michael Niedermayer
|
84 |
+
rational.c, rational.h Michael Niedermayer
|
85 |
+
rc4 Reimar Doeffinger
|
86 |
+
ripemd.c, ripemd.h James Almer
|
87 |
+
tx* Lynne
|
88 |
+
|
89 |
+
|
90 |
+
libavcodec
|
91 |
+
==========
|
92 |
+
|
93 |
+
Generic Parts:
|
94 |
+
External Interfaces:
|
95 |
+
avcodec.h Michael Niedermayer
|
96 |
+
utility code:
|
97 |
+
utils.c Michael Niedermayer
|
98 |
+
audio and video frame extraction:
|
99 |
+
parser.c Michael Niedermayer
|
100 |
+
bitstream reading:
|
101 |
+
bitstream.c, bitstream.h Michael Niedermayer
|
102 |
+
CABAC:
|
103 |
+
cabac.h, cabac.c Michael Niedermayer
|
104 |
+
codec names:
|
105 |
+
codec_names.sh Nicolas George
|
106 |
+
DSP utilities:
|
107 |
+
dsputils.c, dsputils.h Michael Niedermayer
|
108 |
+
entropy coding:
|
109 |
+
rangecoder.c, rangecoder.h Michael Niedermayer
|
110 |
+
lzw.* Michael Niedermayer
|
111 |
+
floating point AAN DCT:
|
112 |
+
faandct.c, faandct.h Michael Niedermayer
|
113 |
+
Golomb coding:
|
114 |
+
golomb.c, golomb.h Michael Niedermayer
|
115 |
+
motion estimation:
|
116 |
+
motion* Michael Niedermayer
|
117 |
+
rate control:
|
118 |
+
ratecontrol.c Michael Niedermayer
|
119 |
+
simple IDCT:
|
120 |
+
simple_idct.c, simple_idct.h Michael Niedermayer
|
121 |
+
postprocessing:
|
122 |
+
libpostproc/* Michael Niedermayer
|
123 |
+
table generation:
|
124 |
+
tableprint.c, tableprint.h Reimar Doeffinger
|
125 |
+
fixed point FFT:
|
126 |
+
fft* Zeljko Lukac
|
127 |
+
Text Subtitles Clément Bœsch
|
128 |
+
|
129 |
+
Codecs:
|
130 |
+
4xm.c Michael Niedermayer
|
131 |
+
8bps.c Roberto Togni
|
132 |
+
8svx.c Jaikrishnan Menon
|
133 |
+
aacenc*, aaccoder.c Rostislav Pehlivanov
|
134 |
+
adpcm.c Zane van Iperen
|
135 |
+
alacenc.c Jaikrishnan Menon
|
136 |
+
alsdec.c Thilo Borgmann, Umair Khan
|
137 |
+
amfenc* Dmitrii Ovchinnikov
|
138 |
+
aptx.c Aurelien Jacobs
|
139 |
+
ass* Aurelien Jacobs
|
140 |
+
asv* Michael Niedermayer
|
141 |
+
atrac3plus* Maxim Poliakovski
|
142 |
+
audiotoolbox* rcombs
|
143 |
+
avs2* Huiwen Ren
|
144 |
+
bgmc.c, bgmc.h Thilo Borgmann
|
145 |
+
binkaudio.c Peter Ross
|
146 |
+
cavs* Stefan Gehrer
|
147 |
+
cdxl.c Paul B Mahol
|
148 |
+
celp_filters.* Vitor Sessak
|
149 |
+
cinepak.c Roberto Togni
|
150 |
+
cinepakenc.c Rl / Aetey G.T. AB
|
151 |
+
ccaption_dec.c Anshul Maheshwari, Aman Gupta
|
152 |
+
cljr Alex Beregszaszi
|
153 |
+
cpia.c Stephan Hilb
|
154 |
+
cscd.c Reimar Doeffinger
|
155 |
+
cuviddec.c Timo Rothenpieler
|
156 |
+
dca* foo86
|
157 |
+
dfpwm* Jack Bruienne
|
158 |
+
dirac* Rostislav Pehlivanov
|
159 |
+
dnxhd* Baptiste Coudurier
|
160 |
+
dolby_e* foo86
|
161 |
+
dpcm.c Mike Melanson
|
162 |
+
dss_sp.c Oleksij Rempel
|
163 |
+
dv.c Roman Shaposhnik
|
164 |
+
dvbsubdec.c Anshul Maheshwari
|
165 |
+
eacmv*, eaidct*, eat* Peter Ross
|
166 |
+
evrc* Paul B Mahol
|
167 |
+
exif.c, exif.h Thilo Borgmann
|
168 |
+
ffv1* Michael Niedermayer
|
169 |
+
ffwavesynth.c Nicolas George
|
170 |
+
fifo.c Jan Sebechlebsky
|
171 |
+
flicvideo.c Mike Melanson
|
172 |
+
g722.c Martin Storsjo
|
173 |
+
g726.c Roman Shaposhnik
|
174 |
+
gifdec.c Baptiste Coudurier
|
175 |
+
h261* Michael Niedermayer
|
176 |
+
h263* Michael Niedermayer
|
177 |
+
h264* Loren Merritt, Michael Niedermayer
|
178 |
+
hap* Tom Butterworth
|
179 |
+
huffyuv* Michael Niedermayer
|
180 |
+
idcinvideo.c Mike Melanson
|
181 |
+
interplayvideo.c Mike Melanson
|
182 |
+
jni*, ffjni* Matthieu Bouron
|
183 |
+
jpeg2000* Nicolas Bertrand
|
184 |
+
jvdec.c Peter Ross
|
185 |
+
lcl*.c Roberto Togni, Reimar Doeffinger
|
186 |
+
libcelt_dec.c Nicolas George
|
187 |
+
libcodec2.c Tomas Härdin
|
188 |
+
libdirac* David Conrad
|
189 |
+
libdavs2.c Huiwen Ren
|
190 |
+
libjxl*.c, libjxl.h Leo Izen
|
191 |
+
libgsm.c Michel Bardiaux
|
192 |
+
libkvazaar.c Arttu Ylä-Outinen
|
193 |
+
libopenh264enc.c Martin Storsjo, Linjie Fu
|
194 |
+
libopenjpeg.c Jaikrishnan Menon
|
195 |
+
libopenjpegenc.c Michael Bradshaw
|
196 |
+
libtheoraenc.c David Conrad
|
197 |
+
libvorbis.c David Conrad
|
198 |
+
libvpx* James Zern
|
199 |
+
libxavs.c Stefan Gehrer
|
200 |
+
libxavs2.c Huiwen Ren
|
201 |
+
libzvbi-teletextdec.c Marton Balint
|
202 |
+
lzo.h, lzo.c Reimar Doeffinger
|
203 |
+
mdec.c Michael Niedermayer
|
204 |
+
mimic.c Ramiro Polla
|
205 |
+
mjpeg*.c Michael Niedermayer
|
206 |
+
mlp* Ramiro Polla, Jai Luthra
|
207 |
+
mmvideo.c Peter Ross
|
208 |
+
mpeg12.c, mpeg12data.h Michael Niedermayer
|
209 |
+
mpegvideo.c, mpegvideo.h Michael Niedermayer
|
210 |
+
mqc* Nicolas Bertrand
|
211 |
+
msmpeg4.c, msmpeg4data.h Michael Niedermayer
|
212 |
+
msrle.c Mike Melanson
|
213 |
+
msvideo1.c Mike Melanson
|
214 |
+
nuv.c Reimar Doeffinger
|
215 |
+
nvdec*, nvenc* Timo Rothenpieler
|
216 |
+
omx.c Martin Storsjo, Aman Gupta
|
217 |
+
opus* Rostislav Pehlivanov
|
218 |
+
paf.* Paul B Mahol
|
219 |
+
pcx.c Ivo van Poorten
|
220 |
+
pgssubdec.c Reimar Doeffinger
|
221 |
+
ptx.c Ivo van Poorten
|
222 |
+
qcelp* Reynaldo H. Verdejo Pinochet
|
223 |
+
qdm2.c, qdm2data.h Roberto Togni
|
224 |
+
qsv* Mark Thompson, Zhong Li, Haihao Xiang
|
225 |
+
qtrle.c Mike Melanson
|
226 |
+
ra144.c, ra144.h, ra288.c, ra288.h Roberto Togni
|
227 |
+
resample2.c Michael Niedermayer
|
228 |
+
rl2.c Sascha Sommer
|
229 |
+
rpza.c Roberto Togni
|
230 |
+
rtjpeg.c, rtjpeg.h Reimar Doeffinger
|
231 |
+
rv10.c Michael Niedermayer
|
232 |
+
s3tc* Ivo van Poorten
|
233 |
+
smc.c Mike Melanson
|
234 |
+
snow* Michael Niedermayer, Loren Merritt
|
235 |
+
sonic.c Alex Beregszaszi
|
236 |
+
speedhq.c Steinar H. Gunderson
|
237 |
+
srt* Aurelien Jacobs
|
238 |
+
sunrast.c Ivo van Poorten
|
239 |
+
svq3.c Michael Niedermayer
|
240 |
+
tak* Paul B Mahol
|
241 |
+
truemotion1* Mike Melanson
|
242 |
+
tta.c Alex Beregszaszi, Jaikrishnan Menon
|
243 |
+
ttaenc.c Paul B Mahol
|
244 |
+
txd.c Ivo van Poorten
|
245 |
+
v4l2_* Jorge Ramirez-Ortiz
|
246 |
+
vc2* Rostislav Pehlivanov
|
247 |
+
vcr1.c Michael Niedermayer
|
248 |
+
videotoolboxenc.c Rick Kern, Aman Gupta
|
249 |
+
vima.c Paul B Mahol
|
250 |
+
vorbisdec.c Denes Balatoni, David Conrad
|
251 |
+
vorbisenc.c Oded Shimon
|
252 |
+
vp3* Mike Melanson
|
253 |
+
vp5 Aurelien Jacobs
|
254 |
+
vp6 Aurelien Jacobs
|
255 |
+
vp8 David Conrad, Ronald Bultje
|
256 |
+
vp9 Ronald Bultje
|
257 |
+
vqavideo.c Mike Melanson
|
258 |
+
wmaprodec.c Sascha Sommer
|
259 |
+
wmavoice.c Ronald S. Bultje
|
260 |
+
wmv2.c Michael Niedermayer
|
261 |
+
xan.c Mike Melanson
|
262 |
+
xbm* Paul B Mahol
|
263 |
+
xface Stefano Sabatini
|
264 |
+
xwd* Paul B Mahol
|
265 |
+
|
266 |
+
Hardware acceleration:
|
267 |
+
dxva2* Hendrik Leppkes, Laurent Aimar, Steve Lhomme
|
268 |
+
d3d11va* Steve Lhomme
|
269 |
+
mediacodec* Matthieu Bouron, Aman Gupta
|
270 |
+
vaapi* Haihao Xiang
|
271 |
+
vaapi_encode* Mark Thompson, Haihao Xiang
|
272 |
+
vdpau* Philip Langdale, Carl Eugen Hoyos
|
273 |
+
videotoolbox* Rick Kern, Aman Gupta
|
274 |
+
|
275 |
+
|
276 |
+
libavdevice
|
277 |
+
===========
|
278 |
+
External Interface:
|
279 |
+
libavdevice/avdevice.h
|
280 |
+
|
281 |
+
|
282 |
+
avfoundation.m Thilo Borgmann
|
283 |
+
android_camera.c Felix Matouschek
|
284 |
+
decklink* Marton Balint
|
285 |
+
dshow.c Roger Pack (CC [email protected])
|
286 |
+
fbdev_enc.c Lukasz Marek
|
287 |
+
gdigrab.c Roger Pack (CC [email protected])
|
288 |
+
iec61883.c Georg Lippitsch
|
289 |
+
lavfi Stefano Sabatini
|
290 |
+
libdc1394.c Roman Shaposhnik
|
291 |
+
opengl_enc.c Lukasz Marek
|
292 |
+
pulse_audio_enc.c Lukasz Marek
|
293 |
+
sdl Stefano Sabatini
|
294 |
+
sdl2.c Josh de Kock
|
295 |
+
v4l2.c Giorgio Vazzana
|
296 |
+
vfwcap.c Ramiro Polla
|
297 |
+
xv.c Lukasz Marek
|
298 |
+
|
299 |
+
libavfilter
|
300 |
+
===========
|
301 |
+
|
302 |
+
Generic parts:
|
303 |
+
graphdump.c Nicolas George
|
304 |
+
|
305 |
+
motion_estimation.c Davinder Singh
|
306 |
+
|
307 |
+
Filters:
|
308 |
+
f_drawgraph.c Paul B Mahol
|
309 |
+
af_adelay.c Paul B Mahol
|
310 |
+
af_aecho.c Paul B Mahol
|
311 |
+
af_afade.c Paul B Mahol
|
312 |
+
af_amerge.c Nicolas George
|
313 |
+
af_aphaser.c Paul B Mahol
|
314 |
+
af_aresample.c Michael Niedermayer
|
315 |
+
af_astats.c Paul B Mahol
|
316 |
+
af_atempo.c Pavel Koshevoy
|
317 |
+
af_biquads.c Paul B Mahol
|
318 |
+
af_chorus.c Paul B Mahol
|
319 |
+
af_compand.c Paul B Mahol
|
320 |
+
af_firequalizer.c Muhammad Faiz
|
321 |
+
af_hdcd.c Burt P.
|
322 |
+
af_ladspa.c Paul B Mahol
|
323 |
+
af_loudnorm.c Kyle Swanson
|
324 |
+
af_pan.c Nicolas George
|
325 |
+
af_sidechaincompress.c Paul B Mahol
|
326 |
+
af_silenceremove.c Paul B Mahol
|
327 |
+
avf_aphasemeter.c Paul B Mahol
|
328 |
+
avf_avectorscope.c Paul B Mahol
|
329 |
+
avf_showcqt.c Muhammad Faiz
|
330 |
+
vf_blend.c Paul B Mahol
|
331 |
+
vf_bwdif Thomas Mundt (CC <[email protected]>)
|
332 |
+
vf_chromakey.c Timo Rothenpieler
|
333 |
+
vf_colorchannelmixer.c Paul B Mahol
|
334 |
+
vf_colorconstancy.c Mina Sami (CC <[email protected]>)
|
335 |
+
vf_colorbalance.c Paul B Mahol
|
336 |
+
vf_colorkey.c Timo Rothenpieler
|
337 |
+
vf_colorlevels.c Paul B Mahol
|
338 |
+
vf_coreimage.m Thilo Borgmann
|
339 |
+
vf_deband.c Paul B Mahol
|
340 |
+
vf_dejudder.c Nicholas Robbins
|
341 |
+
vf_delogo.c Jean Delvare (CC <[email protected]>)
|
342 |
+
vf_drawbox.c/drawgrid Andrey Utkin
|
343 |
+
vf_extractplanes.c Paul B Mahol
|
344 |
+
vf_histogram.c Paul B Mahol
|
345 |
+
vf_hqx.c Clément Bœsch
|
346 |
+
vf_idet.c Pascal Massimino
|
347 |
+
vf_il.c Paul B Mahol
|
348 |
+
vf_(t)interlace Thomas Mundt (CC <[email protected]>)
|
349 |
+
vf_lenscorrection.c Daniel Oberhoff
|
350 |
+
vf_libplacebo.c Niklas Haas
|
351 |
+
vf_mergeplanes.c Paul B Mahol
|
352 |
+
vf_mestimate.c Davinder Singh
|
353 |
+
vf_minterpolate.c Davinder Singh
|
354 |
+
vf_neighbor.c Paul B Mahol
|
355 |
+
vf_psnr.c Paul B Mahol
|
356 |
+
vf_random.c Paul B Mahol
|
357 |
+
vf_readvitc.c Tobias Rapp (CC t.rapp at noa-archive dot com)
|
358 |
+
vf_scale.c Michael Niedermayer
|
359 |
+
vf_separatefields.c Paul B Mahol
|
360 |
+
vf_ssim.c Paul B Mahol
|
361 |
+
vf_stereo3d.c Paul B Mahol
|
362 |
+
vf_telecine.c Paul B Mahol
|
363 |
+
vf_tonemap_opencl.c Ruiling Song
|
364 |
+
vf_yadif.c Michael Niedermayer
|
365 |
+
vf_zoompan.c Paul B Mahol
|
366 |
+
|
367 |
+
Sources:
|
368 |
+
vsrc_mandelbrot.c Michael Niedermayer
|
369 |
+
|
370 |
+
dnn Yejun Guo
|
371 |
+
|
372 |
+
libavformat
|
373 |
+
===========
|
374 |
+
|
375 |
+
Generic parts:
|
376 |
+
External Interface:
|
377 |
+
libavformat/avformat.h Michael Niedermayer
|
378 |
+
Utility Code:
|
379 |
+
libavformat/utils.c Michael Niedermayer
|
380 |
+
Text Subtitles Clément Bœsch
|
381 |
+
|
382 |
+
|
383 |
+
Muxers/Demuxers:
|
384 |
+
4xm.c Mike Melanson
|
385 |
+
aadec.c Vesselin Bontchev (vesselin.bontchev at yandex dot com)
|
386 |
+
adtsenc.c Robert Swain
|
387 |
+
afc.c Paul B Mahol
|
388 |
+
aiffdec.c Baptiste Coudurier, Matthieu Bouron
|
389 |
+
aiffenc.c Baptiste Coudurier, Matthieu Bouron
|
390 |
+
alp.c Zane van Iperen
|
391 |
+
amvenc.c Zane van Iperen
|
392 |
+
apm.c Zane van Iperen
|
393 |
+
apngdec.c Benoit Fouet
|
394 |
+
argo_asf.c Zane van Iperen
|
395 |
+
argo_brp.c Zane van Iperen
|
396 |
+
argo_cvg.c Zane van Iperen
|
397 |
+
ass* Aurelien Jacobs
|
398 |
+
astdec.c Paul B Mahol
|
399 |
+
astenc.c James Almer
|
400 |
+
avi* Michael Niedermayer
|
401 |
+
avisynth.c Stephen Hutchinson
|
402 |
+
avr.c Paul B Mahol
|
403 |
+
bink.c Peter Ross
|
404 |
+
boadec.c Michael Niedermayer
|
405 |
+
brstm.c Paul B Mahol
|
406 |
+
caf* Peter Ross
|
407 |
+
cdxl.c Paul B Mahol
|
408 |
+
codec2.c Tomas Härdin
|
409 |
+
crc.c Michael Niedermayer
|
410 |
+
dashdec.c Steven Liu
|
411 |
+
dashenc.c Karthick Jeyapal
|
412 |
+
daud.c Reimar Doeffinger
|
413 |
+
dfpwmdec.c Jack Bruienne
|
414 |
+
dss.c Oleksij Rempel
|
415 |
+
dtsdec.c foo86
|
416 |
+
dtshddec.c Paul B Mahol
|
417 |
+
dv.c Roman Shaposhnik
|
418 |
+
electronicarts.c Peter Ross
|
419 |
+
epafdec.c Paul B Mahol
|
420 |
+
ffm* Baptiste Coudurier
|
421 |
+
flic.c Mike Melanson
|
422 |
+
flvdec.c Michael Niedermayer
|
423 |
+
flvenc.c Michael Niedermayer, Steven Liu
|
424 |
+
gxf.c Reimar Doeffinger
|
425 |
+
gxfenc.c Baptiste Coudurier
|
426 |
+
hlsenc.c Christian Suloway, Steven Liu
|
427 |
+
idcin.c Mike Melanson
|
428 |
+
idroqdec.c Mike Melanson
|
429 |
+
iff.c Jaikrishnan Menon
|
430 |
+
imf* Pierre-Anthony Lemieux
|
431 |
+
img2*.c Michael Niedermayer
|
432 |
+
ipmovie.c Mike Melanson
|
433 |
+
ircam* Paul B Mahol
|
434 |
+
iss.c Stefan Gehrer
|
435 |
+
jpegxl_probe.* Leo Izen
|
436 |
+
jvdec.c Peter Ross
|
437 |
+
kvag.c Zane van Iperen
|
438 |
+
libmodplug.c Clément Bœsch
|
439 |
+
libopenmpt.c Josh de Kock
|
440 |
+
lmlm4.c Ivo van Poorten
|
441 |
+
lvfdec.c Paul B Mahol
|
442 |
+
lxfdec.c Tomas Härdin
|
443 |
+
matroska.c Aurelien Jacobs, Andreas Rheinhardt
|
444 |
+
matroskadec.c Aurelien Jacobs, Andreas Rheinhardt
|
445 |
+
matroskaenc.c David Conrad, Andreas Rheinhardt
|
446 |
+
matroska subtitles (matroskaenc.c) John Peebles
|
447 |
+
metadata* Aurelien Jacobs
|
448 |
+
mgsts.c Paul B Mahol
|
449 |
+
microdvd* Aurelien Jacobs
|
450 |
+
mm.c Peter Ross
|
451 |
+
mov.c Baptiste Coudurier
|
452 |
+
movenc.c Baptiste Coudurier, Matthieu Bouron
|
453 |
+
movenccenc.c Eran Kornblau
|
454 |
+
mpeg.c Michael Niedermayer
|
455 |
+
mpegenc.c Michael Niedermayer
|
456 |
+
mpegts.c Marton Balint
|
457 |
+
mpegtsenc.c Baptiste Coudurier
|
458 |
+
msnwc_tcp.c Ramiro Polla
|
459 |
+
mtv.c Reynaldo H. Verdejo Pinochet
|
460 |
+
mxf* Baptiste Coudurier, Tomas Härdin
|
461 |
+
nistspheredec.c Paul B Mahol
|
462 |
+
nsvdec.c Francois Revol
|
463 |
+
nut* Michael Niedermayer
|
464 |
+
nuv.c Reimar Doeffinger
|
465 |
+
oggdec.c, oggdec.h David Conrad
|
466 |
+
oggenc.c Baptiste Coudurier
|
467 |
+
oggparse*.c David Conrad
|
468 |
+
oma.c Maxim Poliakovski
|
469 |
+
paf.c Paul B Mahol
|
470 |
+
pp_bnk.c Zane van Iperen
|
471 |
+
psxstr.c Mike Melanson
|
472 |
+
pva.c Ivo van Poorten
|
473 |
+
pvfdec.c Paul B Mahol
|
474 |
+
r3d.c Baptiste Coudurier
|
475 |
+
raw.c Michael Niedermayer
|
476 |
+
rdt.c Ronald S. Bultje
|
477 |
+
rl2.c Sascha Sommer
|
478 |
+
rmdec.c, rmenc.c Ronald S. Bultje
|
479 |
+
rtp.c, rtpenc.c Martin Storsjo
|
480 |
+
rtpdec_ac3.* Gilles Chanteperdrix
|
481 |
+
rtpdec_dv.* Thomas Volkert
|
482 |
+
rtpdec_h261.*, rtpenc_h261.* Thomas Volkert
|
483 |
+
rtpdec_hevc.*, rtpenc_hevc.* Thomas Volkert
|
484 |
+
rtpdec_mpa_robust.* Gilles Chanteperdrix
|
485 |
+
rtpdec_asf.* Ronald S. Bultje
|
486 |
+
rtpdec_vc2hq.*, rtpenc_vc2hq.* Thomas Volkert
|
487 |
+
rtpdec_vp9.c Thomas Volkert
|
488 |
+
rtpenc_mpv.*, rtpenc_aac.* Martin Storsjo
|
489 |
+
s337m.c foo86
|
490 |
+
sbgdec.c Nicolas George
|
491 |
+
sdp.c Martin Storsjo
|
492 |
+
segafilm.c Mike Melanson
|
493 |
+
segment.c Stefano Sabatini
|
494 |
+
smjpeg* Paul B Mahol
|
495 |
+
spdif* Anssi Hannula
|
496 |
+
srtdec.c Aurelien Jacobs
|
497 |
+
swf.c Baptiste Coudurier
|
498 |
+
takdec.c Paul B Mahol
|
499 |
+
tta.c Alex Beregszaszi
|
500 |
+
txd.c Ivo van Poorten
|
501 |
+
voc.c Aurelien Jacobs
|
502 |
+
wav.c Michael Niedermayer
|
503 |
+
wc3movie.c Mike Melanson
|
504 |
+
webm dash (matroskaenc.c) Vignesh Venkatasubramanian
|
505 |
+
webvtt* Matthew J Heaney
|
506 |
+
westwood.c Mike Melanson
|
507 |
+
wtv.c Peter Ross
|
508 |
+
wvenc.c Paul B Mahol
|
509 |
+
|
510 |
+
Protocols:
|
511 |
+
async.c Zhang Rui
|
512 |
+
bluray.c Petri Hintukainen
|
513 |
+
ftp.c Lukasz Marek
|
514 |
+
http.c Ronald S. Bultje
|
515 |
+
libsrt.c Zhao Zhili
|
516 |
+
libssh.c Lukasz Marek
|
517 |
+
libzmq.c Andriy Gelman
|
518 |
+
mms*.c Ronald S. Bultje
|
519 |
+
udp.c Luca Abeni
|
520 |
+
icecast.c Marvin Scholz
|
521 |
+
|
522 |
+
|
523 |
+
libswresample
|
524 |
+
=============
|
525 |
+
|
526 |
+
Generic parts:
|
527 |
+
audioconvert.c Michael Niedermayer
|
528 |
+
dither.c Michael Niedermayer
|
529 |
+
rematrix*.c Michael Niedermayer
|
530 |
+
swresample*.c Michael Niedermayer
|
531 |
+
|
532 |
+
Resamplers:
|
533 |
+
resample*.c Michael Niedermayer
|
534 |
+
soxr_resample.c Rob Sykes
|
535 |
+
|
536 |
+
|
537 |
+
Operating systems / CPU architectures
|
538 |
+
=====================================
|
539 |
+
|
540 |
+
Alpha Falk Hueffner
|
541 |
+
MIPS Manojkumar Bhosale, Shiyou Yin
|
542 |
+
LoongArch Shiyou Yin
|
543 |
+
Mac OS X / PowerPC Romain Dolbeau, Guillaume Poirier
|
544 |
+
Amiga / PowerPC Colin Ward
|
545 |
+
Linux / PowerPC Lauri Kasanen
|
546 |
+
Windows MinGW Alex Beregszaszi, Ramiro Polla
|
547 |
+
Windows Cygwin Victor Paesa
|
548 |
+
Windows MSVC Matthew Oliver, Hendrik Leppkes
|
549 |
+
Windows ICL Matthew Oliver
|
550 |
+
ADI/Blackfin DSP Marc Hoffman
|
551 |
+
Sparc Roman Shaposhnik
|
552 |
+
OS/2 KO Myung-Hun
|
553 |
+
|
554 |
+
|
555 |
+
Developers with git write access who are currently not maintaining any specific part
|
556 |
+
====================================================================================
|
557 |
+
Alex Converse
|
558 |
+
Andreas Cadhalpun
|
559 |
+
Anuradha Suraparaju
|
560 |
+
Ben Littler
|
561 |
+
Benjamin Larsson
|
562 |
+
Bobby Bingham
|
563 |
+
Daniel Verkamp
|
564 |
+
Derek Buitenhuis
|
565 |
+
Ganesh Ajjanagadde
|
566 |
+
Henrik Gramner
|
567 |
+
Ivan Uskov
|
568 |
+
James Darnley
|
569 |
+
Jan Ekström
|
570 |
+
Joakim Plate
|
571 |
+
Jun Zhao
|
572 |
+
Kieran Kunhya
|
573 |
+
Kirill Gavrilov
|
574 |
+
Limin Wang
|
575 |
+
Martin Storsjö
|
576 |
+
Panagiotis Issaris
|
577 |
+
Pedro Arthur
|
578 |
+
Sebastien Zwickert
|
579 |
+
Vittorio Giovara
|
580 |
+
wm4
|
581 |
+
(this list is incomplete)
|
582 |
+
|
583 |
+
|
584 |
+
Releases
|
585 |
+
========
|
586 |
+
|
587 |
+
2.8 Michael Niedermayer
|
588 |
+
2.7 Michael Niedermayer
|
589 |
+
2.6 Michael Niedermayer
|
590 |
+
2.5 Michael Niedermayer
|
591 |
+
|
592 |
+
If you want to maintain an older release, please contact us
|
593 |
+
|
594 |
+
|
595 |
+
GnuPG Fingerprints and IRC nicknames of maintainers and contributors
|
596 |
+
====================================================================
|
597 |
+
|
598 |
+
IRC nicknames are in parentheses. These apply
|
599 |
+
to the IRC channels listed on the website.
|
600 |
+
|
601 |
+
Alexander Strasser 1C96 78B7 83CB 8AA7 9AF5 D1EB A7D8 A57B A876 E58F
|
602 |
+
Anssi Hannula 1A92 FF42 2DD9 8D2E 8AF7 65A9 4278 C520 513D F3CB
|
603 |
+
Ash Hughes 694D 43D2 D180 C7C7 6421 ABD3 A641 D0B7 623D 6029
|
604 |
+
Attila Kinali 11F0 F9A6 A1D2 11F6 C745 D10C 6520 BCDD F2DF E765
|
605 |
+
Baptiste Coudurier 8D77 134D 20CC 9220 201F C5DB 0AC9 325C 5C1A BAAA
|
606 |
+
Ben Littler 3EE3 3723 E560 3214 A8CD 4DEB 2CDB FCE7 768C 8D2C
|
607 |
+
Benoit Fouet B22A 4F4F 43EF 636B BB66 FCDC 0023 AE1E 2985 49C8
|
608 |
+
Clément Bœsch 52D0 3A82 D445 F194 DB8B 2B16 87EE 2CB8 F4B8 FCF9
|
609 |
+
Daniel Verkamp 78A6 07ED 782C 653E C628 B8B9 F0EB 8DD8 2F0E 21C7
|
610 |
+
FFmpeg release signing key FCF9 86EA 15E6 E293 A564 4F10 B432 2F04 D676 58D8
|
611 |
+
Ganesh Ajjanagadde C96A 848E 97C3 CEA2 AB72 5CE4 45F9 6A2D 3C36 FB1B
|
612 |
+
Gwenole Beauchesne 2E63 B3A6 3E44 37E2 017D 2704 53C7 6266 B153 99C4
|
613 |
+
Haihao Xiang (haihao) 1F0C 31E8 B4FE F7A4 4DC1 DC99 E0F5 76D4 76FC 437F
|
614 |
+
Jaikrishnan Menon 61A1 F09F 01C9 2D45 78E1 C862 25DC 8831 AF70 D368
|
615 |
+
James Almer 7751 2E8C FD94 A169 57E6 9A7A 1463 01AD 7376 59E0
|
616 |
+
Jean Delvare 7CA6 9F44 60F1 BDC4 1FD2 C858 A552 6B9B B3CD 4E6A
|
617 |
+
Leo Izen (thebombzen) B6FD 3CFC 7ACF 83FC 9137 6945 5A71 C331 FD2F A19A
|
618 |
+
Loren Merritt ABD9 08F4 C920 3F65 D8BE 35D7 1540 DAA7 060F 56DE
|
619 |
+
Lynne FE50 139C 6805 72CA FD52 1F8D A2FE A5F0 3F03 4464
|
620 |
+
Michael Niedermayer 9FF2 128B 147E F673 0BAD F133 611E C787 040B 0FAB
|
621 |
+
DD1E C9E8 DE08 5C62 9B3E 1846 B18E 8928 B394 8D64
|
622 |
+
Nicolas George 24CE 01CE 9ACC 5CEB 74D8 8D9D B063 D997 36E5 4C93
|
623 |
+
Niklas Haas (haasn) 1DDB 8076 B14D 5B48 32FC 99D9 EB52 DA9C 02BA 6FB4
|
624 |
+
Nikolay Aleksandrov 8978 1D8C FB71 588E 4B27 EAA8 C4F0 B5FC E011 13B1
|
625 |
+
Panagiotis Issaris 6571 13A3 33D9 3726 F728 AA98 F643 B12E ECF3 E029
|
626 |
+
Peter Ross A907 E02F A6E5 0CD2 34CD 20D2 6760 79C5 AC40 DD6B
|
627 |
+
Philip Langdale 5DC5 8D66 5FBA 3A43 18EC 045E F8D6 B194 6A75 682E
|
628 |
+
Pierre-Anthony Lemieux (pal) F4B3 9492 E6F2 E4AF AEC8 46CB 698F A1F0 F8D4 EED4
|
629 |
+
Ramiro Polla 7859 C65B 751B 1179 792E DAE8 8E95 8B2F 9B6C 5700
|
630 |
+
Reimar Doeffinger C61D 16E5 9E2C D10C 8958 38A4 0899 A2B9 06D4 D9C7
|
631 |
+
Reinhard Tartler 9300 5DC2 7E87 6C37 ED7B CA9A 9808 3544 9453 48A4
|
632 |
+
Reynaldo H. Verdejo Pinochet 6E27 CD34 170C C78E 4D4F 5F40 C18E 077F 3114 452A
|
633 |
+
Robert Swain EE7A 56EA 4A81 A7B5 2001 A521 67FA 362D A2FC 3E71
|
634 |
+
Sascha Sommer 38A0 F88B 868E 9D3A 97D4 D6A0 E823 706F 1E07 0D3C
|
635 |
+
Stefano Sabatini 0D0B AD6B 5330 BBAD D3D6 6A0C 719C 2839 FC43 2D5F
|
636 |
+
Steinar H. Gunderson C2E9 004F F028 C18E 4EAD DB83 7F61 7561 7797 8F76
|
637 |
+
Stephan Hilb 4F38 0B3A 5F39 B99B F505 E562 8D5C 5554 4E17 8863
|
638 |
+
Thilo Borgmann (thilo) CE1D B7F4 4D20 FC3A DD9F FE5A 257C 5B8F 1D20 B92F
|
639 |
+
Tiancheng "Timothy" Gu 9456 AFC0 814A 8139 E994 8351 7FE6 B095 B582 B0D4
|
640 |
+
Tim Nicholson 38CF DB09 3ED0 F607 8B67 6CED 0C0B FC44 8B0B FC83
|
641 |
+
Tomas Härdin (thardin) A79D 4E3D F38F 763F 91F5 8B33 A01E 8AE0 41BB 2551
|
642 |
+
Wei Gao 4269 7741 857A 0E60 9EC5 08D2 4744 4EFA 62C1 87B9
|
643 |
+
Zane van Iperen (zane) 61AE D40F 368B 6F26 9DAE 3892 6861 6B2D 8AC4 DCC5
|
bin/ffmpeg/Makefile
ADDED
@@ -0,0 +1,198 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MAIN_MAKEFILE=1
|
2 |
+
include ffbuild/config.mak
|
3 |
+
|
4 |
+
vpath %.c $(SRC_PATH)
|
5 |
+
vpath %.cpp $(SRC_PATH)
|
6 |
+
vpath %.h $(SRC_PATH)
|
7 |
+
vpath %.inc $(SRC_PATH)
|
8 |
+
vpath %.m $(SRC_PATH)
|
9 |
+
vpath %.S $(SRC_PATH)
|
10 |
+
vpath %.asm $(SRC_PATH)
|
11 |
+
vpath %.rc $(SRC_PATH)
|
12 |
+
vpath %.v $(SRC_PATH)
|
13 |
+
vpath %.texi $(SRC_PATH)
|
14 |
+
vpath %.cu $(SRC_PATH)
|
15 |
+
vpath %.ptx $(SRC_PATH)
|
16 |
+
vpath %.metal $(SRC_PATH)
|
17 |
+
vpath %/fate_config.sh.template $(SRC_PATH)
|
18 |
+
|
19 |
+
TESTTOOLS = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch
|
20 |
+
HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options
|
21 |
+
|
22 |
+
ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
|
23 |
+
|
24 |
+
# $(FFLIBS-yes) needs to be in linking order
|
25 |
+
FFLIBS-$(CONFIG_AVDEVICE) += avdevice
|
26 |
+
FFLIBS-$(CONFIG_AVFILTER) += avfilter
|
27 |
+
FFLIBS-$(CONFIG_AVFORMAT) += avformat
|
28 |
+
FFLIBS-$(CONFIG_AVCODEC) += avcodec
|
29 |
+
FFLIBS-$(CONFIG_POSTPROC) += postproc
|
30 |
+
FFLIBS-$(CONFIG_SWRESAMPLE) += swresample
|
31 |
+
FFLIBS-$(CONFIG_SWSCALE) += swscale
|
32 |
+
|
33 |
+
FFLIBS := avutil
|
34 |
+
|
35 |
+
DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd
|
36 |
+
|
37 |
+
SKIPHEADERS = compat/w32pthreads.h
|
38 |
+
|
39 |
+
# first so "all" becomes default target
|
40 |
+
all: all-yes
|
41 |
+
|
42 |
+
include $(SRC_PATH)/tools/Makefile
|
43 |
+
include $(SRC_PATH)/ffbuild/common.mak
|
44 |
+
|
45 |
+
FF_EXTRALIBS := $(FFEXTRALIBS)
|
46 |
+
FF_DEP_LIBS := $(DEP_LIBS)
|
47 |
+
FF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS)
|
48 |
+
|
49 |
+
$(TOOLS): %$(EXESUF): %.o
|
50 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(EXTRALIBS-$(*F)) $(EXTRALIBS) $(ELIBS)
|
51 |
+
|
52 |
+
target_dec_%_fuzzer$(EXESUF): target_dec_%_fuzzer.o $(FF_DEP_LIBS)
|
53 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
|
54 |
+
|
55 |
+
tools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS)
|
56 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
|
57 |
+
|
58 |
+
target_dem_%_fuzzer$(EXESUF): target_dem_%_fuzzer.o $(FF_DEP_LIBS)
|
59 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
|
60 |
+
|
61 |
+
tools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS)
|
62 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
|
63 |
+
|
64 |
+
tools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS)
|
65 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
|
66 |
+
|
67 |
+
|
68 |
+
tools/enum_options$(EXESUF): ELIBS = $(FF_EXTRALIBS)
|
69 |
+
tools/enum_options$(EXESUF): $(FF_DEP_LIBS)
|
70 |
+
tools/scale_slice_test$(EXESUF): $(FF_DEP_LIBS)
|
71 |
+
tools/scale_slice_test$(EXESUF): ELIBS = $(FF_EXTRALIBS)
|
72 |
+
tools/sofa2wavs$(EXESUF): ELIBS = $(FF_EXTRALIBS)
|
73 |
+
tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS)
|
74 |
+
tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS)
|
75 |
+
tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
|
76 |
+
tools/target_dem_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
|
77 |
+
|
78 |
+
CONFIGURABLE_COMPONENTS = \
|
79 |
+
$(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) \
|
80 |
+
$(SRC_PATH)/libavcodec/bitstream_filters.c \
|
81 |
+
$(SRC_PATH)/libavcodec/hwaccels.h \
|
82 |
+
$(SRC_PATH)/libavcodec/parsers.c \
|
83 |
+
$(SRC_PATH)/libavformat/protocols.c \
|
84 |
+
|
85 |
+
config_components.h: ffbuild/.config
|
86 |
+
ffbuild/.config: $(CONFIGURABLE_COMPONENTS)
|
87 |
+
@-tput bold 2>/dev/null
|
88 |
+
@-printf '\nWARNING: $(?) newer than config_components.h, rerun configure\n\n'
|
89 |
+
@-tput sgr0 2>/dev/null
|
90 |
+
|
91 |
+
SUBDIR_VARS := CLEANFILES FFLIBS HOSTPROGS TESTPROGS TOOLS \
|
92 |
+
HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \
|
93 |
+
ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \
|
94 |
+
ALTIVEC-OBJS VSX-OBJS RVV-OBJS MMX-OBJS X86ASM-OBJS \
|
95 |
+
MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSP-OBJS MSA-OBJS \
|
96 |
+
MMI-OBJS LSX-OBJS LASX-OBJS OBJS SLIBOBJS SHLIBOBJS \
|
97 |
+
STLIBOBJS HOSTOBJS TESTOBJS
|
98 |
+
|
99 |
+
define RESET
|
100 |
+
$(1) :=
|
101 |
+
$(1)-yes :=
|
102 |
+
endef
|
103 |
+
|
104 |
+
define DOSUBDIR
|
105 |
+
$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
|
106 |
+
SUBDIR := $(1)/
|
107 |
+
include $(SRC_PATH)/$(1)/Makefile
|
108 |
+
-include $(SRC_PATH)/$(1)/$(ARCH)/Makefile
|
109 |
+
-include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile
|
110 |
+
include $(SRC_PATH)/ffbuild/library.mak
|
111 |
+
endef
|
112 |
+
|
113 |
+
$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
|
114 |
+
|
115 |
+
include $(SRC_PATH)/fftools/Makefile
|
116 |
+
include $(SRC_PATH)/doc/Makefile
|
117 |
+
include $(SRC_PATH)/doc/examples/Makefile
|
118 |
+
|
119 |
+
$(ALLFFLIBS:%=lib%/version.o): libavutil/ffversion.h
|
120 |
+
|
121 |
+
$(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
|
122 |
+
ifeq ($(STRIPTYPE),direct)
|
123 |
+
$(STRIP) -o $@ $<
|
124 |
+
else
|
125 |
+
$(RM) $@
|
126 |
+
$(CP) $< $@
|
127 |
+
$(STRIP) $@
|
128 |
+
endif
|
129 |
+
|
130 |
+
%$(PROGSSUF)_g$(EXESUF): $(FF_DEP_LIBS)
|
131 |
+
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS)
|
132 |
+
|
133 |
+
VERSION_SH = $(SRC_PATH)/ffbuild/version.sh
|
134 |
+
GIT_LOG = $(SRC_PATH)/.git/logs/HEAD
|
135 |
+
|
136 |
+
.version: $(wildcard $(GIT_LOG)) $(VERSION_SH) ffbuild/config.mak
|
137 |
+
.version: M=@
|
138 |
+
|
139 |
+
libavutil/ffversion.h .version:
|
140 |
+
$(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION)
|
141 |
+
$(Q)touch .version
|
142 |
+
|
143 |
+
# force version.sh to run whenever version might have changed
|
144 |
+
-include .version
|
145 |
+
|
146 |
+
install: install-libs install-headers
|
147 |
+
|
148 |
+
install-libs: install-libs-yes
|
149 |
+
|
150 |
+
install-data: $(DATA_FILES)
|
151 |
+
$(Q)mkdir -p "$(DATADIR)"
|
152 |
+
$(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"
|
153 |
+
|
154 |
+
uninstall: uninstall-data uninstall-headers uninstall-libs uninstall-pkgconfig
|
155 |
+
|
156 |
+
uninstall-data:
|
157 |
+
$(RM) -r "$(DATADIR)"
|
158 |
+
|
159 |
+
clean::
|
160 |
+
$(RM) $(CLEANSUFFIXES)
|
161 |
+
$(RM) $(addprefix compat/,$(CLEANSUFFIXES)) $(addprefix compat/*/,$(CLEANSUFFIXES)) $(addprefix compat/*/*/,$(CLEANSUFFIXES))
|
162 |
+
$(RM) -r coverage-html
|
163 |
+
$(RM) -rf coverage.info coverage.info.in lcov
|
164 |
+
|
165 |
+
distclean:: clean
|
166 |
+
$(RM) .version config.asm config.h config_components.h mapfile \
|
167 |
+
ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
|
168 |
+
version.h libavutil/ffversion.h libavcodec/codec_names.h \
|
169 |
+
libavcodec/bsf_list.c libavformat/protocol_list.c \
|
170 |
+
libavcodec/codec_list.c libavcodec/parser_list.c \
|
171 |
+
libavfilter/filter_list.c libavdevice/indev_list.c libavdevice/outdev_list.c \
|
172 |
+
libavformat/muxer_list.c libavformat/demuxer_list.c
|
173 |
+
ifeq ($(SRC_LINK),src)
|
174 |
+
$(RM) src
|
175 |
+
endif
|
176 |
+
$(RM) -rf doc/examples/pc-uninstalled
|
177 |
+
|
178 |
+
config:
|
179 |
+
$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
|
180 |
+
|
181 |
+
build: all alltools examples testprogs
|
182 |
+
check: all alltools examples testprogs fate
|
183 |
+
|
184 |
+
include $(SRC_PATH)/tests/Makefile
|
185 |
+
|
186 |
+
$(sort $(OUTDIRS)):
|
187 |
+
$(Q)mkdir -p $@
|
188 |
+
|
189 |
+
# Dummy rule to stop make trying to rebuild removed or renamed headers
|
190 |
+
%.h:
|
191 |
+
@:
|
192 |
+
|
193 |
+
# Disable suffix rules. Most of the builtin rules are suffix rules,
|
194 |
+
# so this saves some time on slow systems.
|
195 |
+
.SUFFIXES:
|
196 |
+
|
197 |
+
.PHONY: all all-yes alltools build check config testprogs
|
198 |
+
.PHONY: *clean install* uninstall*
|
bin/ffmpeg/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
FFmpeg README
|
2 |
+
=============
|
3 |
+
|
4 |
+
FFmpeg is a collection of libraries and tools to process multimedia content
|
5 |
+
such as audio, video, subtitles and related metadata.
|
6 |
+
|
7 |
+
## Libraries
|
8 |
+
|
9 |
+
* `libavcodec` provides implementation of a wider range of codecs.
|
10 |
+
* `libavformat` implements streaming protocols, container formats and basic I/O access.
|
11 |
+
* `libavutil` includes hashers, decompressors and miscellaneous utility functions.
|
12 |
+
* `libavfilter` provides means to alter decoded audio and video through a directed graph of connected filters.
|
13 |
+
* `libavdevice` provides an abstraction to access capture and playback devices.
|
14 |
+
* `libswresample` implements audio mixing and resampling routines.
|
15 |
+
* `libswscale` implements color conversion and scaling routines.
|
16 |
+
|
17 |
+
## Tools
|
18 |
+
|
19 |
+
* [ffmpeg](https://ffmpeg.org/ffmpeg.html) is a command line toolbox to
|
20 |
+
manipulate, convert and stream multimedia content.
|
21 |
+
* [ffplay](https://ffmpeg.org/ffplay.html) is a minimalistic multimedia player.
|
22 |
+
* [ffprobe](https://ffmpeg.org/ffprobe.html) is a simple analysis tool to inspect
|
23 |
+
multimedia content.
|
24 |
+
* Additional small tools such as `aviocat`, `ismindex` and `qt-faststart`.
|
25 |
+
|
26 |
+
## Documentation
|
27 |
+
|
28 |
+
The offline documentation is available in the **doc/** directory.
|
29 |
+
|
30 |
+
The online documentation is available in the main [website](https://ffmpeg.org)
|
31 |
+
and in the [wiki](https://trac.ffmpeg.org).
|
32 |
+
|
33 |
+
### Examples
|
34 |
+
|
35 |
+
Coding examples are available in the **doc/examples** directory.
|
36 |
+
|
37 |
+
## License
|
38 |
+
|
39 |
+
FFmpeg codebase is mainly LGPL-licensed with optional components licensed under
|
40 |
+
GPL. Please refer to the LICENSE file for detailed information.
|
41 |
+
|
42 |
+
## Contributing
|
43 |
+
|
44 |
+
Patches should be submitted to the ffmpeg-devel mailing list using
|
45 |
+
`git format-patch` or `git send-email`. Github pull requests should be
|
46 |
+
avoided because they are not part of our review process and will be ignored.
|
bin/ffmpeg/RELEASE
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
6.0
|
bin/ffmpeg/RELEASE_NOTES
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
┌────────────────────────────────────────────┐
|
3 |
+
│ RELEASE NOTES for FFmpeg 6.0 "Von Neumann" │
|
4 |
+
└────────────────────────────────────────────┘
|
5 |
+
|
6 |
+
The FFmpeg Project proudly presents FFmpeg 6.0 "Von Neumann", about 6
|
7 |
+
months after the release of FFmpeg 5.1.
|
8 |
+
|
9 |
+
A complete Changelog is available at the root of the project, and the
|
10 |
+
complete Git history on https://git.ffmpeg.org/gitweb/ffmpeg.git
|
11 |
+
|
12 |
+
We hope you will like this release as much as we enjoyed working on it, and
|
13 |
+
as usual, if you have any questions about it, or any FFmpeg related topic,
|
14 |
+
feel free to join us on the #ffmpeg IRC channel (on irc.libera.chat) or ask
|
15 |
+
on the mailing-lists.
|
bin/ffmpeg/VERSION
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
6.0
|
bin/ffmpeg/compat/aix/math.h
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Work around the class() function in AIX math.h clashing with
|
3 |
+
* identifiers named "class".
|
4 |
+
*
|
5 |
+
* This file is part of FFmpeg.
|
6 |
+
*
|
7 |
+
* FFmpeg is free software; you can redistribute it and/or
|
8 |
+
* modify it under the terms of the GNU Lesser General Public
|
9 |
+
* License as published by the Free Software Foundation; either
|
10 |
+
* version 2.1 of the License, or (at your option) any later version.
|
11 |
+
*
|
12 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
+
* Lesser General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU Lesser General Public
|
18 |
+
* License along with FFmpeg; if not, write to the Free Software
|
19 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
#ifndef COMPAT_AIX_MATH_H
|
23 |
+
#define COMPAT_AIX_MATH_H
|
24 |
+
|
25 |
+
#define class class_in_math_h_causes_problems
|
26 |
+
|
27 |
+
#include_next <math.h>
|
28 |
+
|
29 |
+
#undef class
|
30 |
+
|
31 |
+
#endif /* COMPAT_AIX_MATH_H */
|
bin/ffmpeg/compat/atomics/dummy/stdatomic.h
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
/*
|
20 |
+
* based on vlc_atomic.h from VLC
|
21 |
+
* Copyright (C) 2010 Rémi Denis-Courmont
|
22 |
+
*/
|
23 |
+
|
24 |
+
#ifndef COMPAT_ATOMICS_DUMMY_STDATOMIC_H
|
25 |
+
#define COMPAT_ATOMICS_DUMMY_STDATOMIC_H
|
26 |
+
|
27 |
+
#include <stdint.h>
|
28 |
+
|
29 |
+
#define ATOMIC_FLAG_INIT 0
|
30 |
+
|
31 |
+
#define ATOMIC_VAR_INIT(value) (value)
|
32 |
+
|
33 |
+
#define atomic_init(obj, value) \
|
34 |
+
do { \
|
35 |
+
*(obj) = (value); \
|
36 |
+
} while(0)
|
37 |
+
|
38 |
+
#define kill_dependency(y) ((void)0)
|
39 |
+
|
40 |
+
#define atomic_thread_fence(order) \
|
41 |
+
((void)0)
|
42 |
+
|
43 |
+
#define atomic_signal_fence(order) \
|
44 |
+
((void)0)
|
45 |
+
|
46 |
+
#define atomic_is_lock_free(obj) 0
|
47 |
+
|
48 |
+
typedef intptr_t atomic_flag;
|
49 |
+
typedef intptr_t atomic_bool;
|
50 |
+
typedef intptr_t atomic_char;
|
51 |
+
typedef intptr_t atomic_schar;
|
52 |
+
typedef intptr_t atomic_uchar;
|
53 |
+
typedef intptr_t atomic_short;
|
54 |
+
typedef intptr_t atomic_ushort;
|
55 |
+
typedef intptr_t atomic_int;
|
56 |
+
typedef intptr_t atomic_uint;
|
57 |
+
typedef intptr_t atomic_long;
|
58 |
+
typedef intptr_t atomic_ulong;
|
59 |
+
typedef intptr_t atomic_llong;
|
60 |
+
typedef intptr_t atomic_ullong;
|
61 |
+
typedef intptr_t atomic_wchar_t;
|
62 |
+
typedef intptr_t atomic_int_least8_t;
|
63 |
+
typedef intptr_t atomic_uint_least8_t;
|
64 |
+
typedef intptr_t atomic_int_least16_t;
|
65 |
+
typedef intptr_t atomic_uint_least16_t;
|
66 |
+
typedef intptr_t atomic_int_least32_t;
|
67 |
+
typedef intptr_t atomic_uint_least32_t;
|
68 |
+
typedef intptr_t atomic_int_least64_t;
|
69 |
+
typedef intptr_t atomic_uint_least64_t;
|
70 |
+
typedef intptr_t atomic_int_fast8_t;
|
71 |
+
typedef intptr_t atomic_uint_fast8_t;
|
72 |
+
typedef intptr_t atomic_int_fast16_t;
|
73 |
+
typedef intptr_t atomic_uint_fast16_t;
|
74 |
+
typedef intptr_t atomic_int_fast32_t;
|
75 |
+
typedef intptr_t atomic_uint_fast32_t;
|
76 |
+
typedef intptr_t atomic_int_fast64_t;
|
77 |
+
typedef intptr_t atomic_uint_fast64_t;
|
78 |
+
typedef intptr_t atomic_intptr_t;
|
79 |
+
typedef intptr_t atomic_uintptr_t;
|
80 |
+
typedef intptr_t atomic_size_t;
|
81 |
+
typedef intptr_t atomic_ptrdiff_t;
|
82 |
+
typedef intptr_t atomic_intmax_t;
|
83 |
+
typedef intptr_t atomic_uintmax_t;
|
84 |
+
|
85 |
+
#define atomic_store(object, desired) \
|
86 |
+
do { \
|
87 |
+
*(object) = (desired); \
|
88 |
+
} while (0)
|
89 |
+
|
90 |
+
#define atomic_store_explicit(object, desired, order) \
|
91 |
+
atomic_store(object, desired)
|
92 |
+
|
93 |
+
#define atomic_load(object) \
|
94 |
+
(*(object))
|
95 |
+
|
96 |
+
#define atomic_load_explicit(object, order) \
|
97 |
+
atomic_load(object)
|
98 |
+
|
99 |
+
static inline intptr_t atomic_exchange(intptr_t *object, intptr_t desired)
|
100 |
+
{
|
101 |
+
intptr_t ret = *object;
|
102 |
+
*object = desired;
|
103 |
+
return ret;
|
104 |
+
}
|
105 |
+
|
106 |
+
#define atomic_exchange_explicit(object, desired, order) \
|
107 |
+
atomic_exchange(object, desired)
|
108 |
+
|
109 |
+
static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
|
110 |
+
intptr_t desired)
|
111 |
+
{
|
112 |
+
int ret;
|
113 |
+
if (*object == *expected) {
|
114 |
+
*object = desired;
|
115 |
+
ret = 1;
|
116 |
+
} else {
|
117 |
+
*expected = *object;
|
118 |
+
ret = 0;
|
119 |
+
}
|
120 |
+
return ret;
|
121 |
+
}
|
122 |
+
|
123 |
+
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
|
124 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
125 |
+
|
126 |
+
#define atomic_compare_exchange_weak(object, expected, desired) \
|
127 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
128 |
+
|
129 |
+
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
|
130 |
+
atomic_compare_exchange_weak(object, expected, desired)
|
131 |
+
|
132 |
+
#define FETCH_MODIFY(opname, op) \
|
133 |
+
static inline intptr_t atomic_fetch_ ## opname(intptr_t *object, intptr_t operand) \
|
134 |
+
{ \
|
135 |
+
intptr_t ret; \
|
136 |
+
ret = *object; \
|
137 |
+
*object = *object op operand; \
|
138 |
+
return ret; \
|
139 |
+
}
|
140 |
+
|
141 |
+
FETCH_MODIFY(add, +)
|
142 |
+
FETCH_MODIFY(sub, -)
|
143 |
+
FETCH_MODIFY(or, |)
|
144 |
+
FETCH_MODIFY(xor, ^)
|
145 |
+
FETCH_MODIFY(and, &)
|
146 |
+
|
147 |
+
#undef FETCH_MODIFY
|
148 |
+
|
149 |
+
#define atomic_fetch_add_explicit(object, operand, order) \
|
150 |
+
atomic_fetch_add(object, operand)
|
151 |
+
|
152 |
+
#define atomic_fetch_sub_explicit(object, operand, order) \
|
153 |
+
atomic_fetch_sub(object, operand)
|
154 |
+
|
155 |
+
#define atomic_fetch_or_explicit(object, operand, order) \
|
156 |
+
atomic_fetch_or(object, operand)
|
157 |
+
|
158 |
+
#define atomic_fetch_xor_explicit(object, operand, order) \
|
159 |
+
atomic_fetch_xor(object, operand)
|
160 |
+
|
161 |
+
#define atomic_fetch_and_explicit(object, operand, order) \
|
162 |
+
atomic_fetch_and(object, operand)
|
163 |
+
|
164 |
+
#define atomic_flag_test_and_set(object) \
|
165 |
+
atomic_exchange(object, 1)
|
166 |
+
|
167 |
+
#define atomic_flag_test_and_set_explicit(object, order) \
|
168 |
+
atomic_flag_test_and_set(object)
|
169 |
+
|
170 |
+
#define atomic_flag_clear(object) \
|
171 |
+
atomic_store(object, 0)
|
172 |
+
|
173 |
+
#define atomic_flag_clear_explicit(object, order) \
|
174 |
+
atomic_flag_clear(object)
|
175 |
+
|
176 |
+
#endif /* COMPAT_ATOMICS_DUMMY_STDATOMIC_H */
|
bin/ffmpeg/compat/atomics/gcc/stdatomic.h
ADDED
@@ -0,0 +1,173 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
/*
|
20 |
+
* based on vlc_atomic.h from VLC
|
21 |
+
* Copyright (C) 2010 Rémi Denis-Courmont
|
22 |
+
*/
|
23 |
+
|
24 |
+
#ifndef COMPAT_ATOMICS_GCC_STDATOMIC_H
|
25 |
+
#define COMPAT_ATOMICS_GCC_STDATOMIC_H
|
26 |
+
|
27 |
+
#include <stddef.h>
|
28 |
+
#include <stdint.h>
|
29 |
+
|
30 |
+
#define ATOMIC_FLAG_INIT 0
|
31 |
+
|
32 |
+
#define ATOMIC_VAR_INIT(value) (value)
|
33 |
+
|
34 |
+
#define atomic_init(obj, value) \
|
35 |
+
do { \
|
36 |
+
*(obj) = (value); \
|
37 |
+
} while(0)
|
38 |
+
|
39 |
+
#define kill_dependency(y) ((void)0)
|
40 |
+
|
41 |
+
#define atomic_thread_fence(order) \
|
42 |
+
__sync_synchronize()
|
43 |
+
|
44 |
+
#define atomic_signal_fence(order) \
|
45 |
+
((void)0)
|
46 |
+
|
47 |
+
#define atomic_is_lock_free(obj) 0
|
48 |
+
|
49 |
+
typedef _Bool atomic_flag;
|
50 |
+
typedef _Bool atomic_bool;
|
51 |
+
typedef char atomic_char;
|
52 |
+
typedef signed char atomic_schar;
|
53 |
+
typedef unsigned char atomic_uchar;
|
54 |
+
typedef short atomic_short;
|
55 |
+
typedef unsigned short atomic_ushort;
|
56 |
+
typedef int atomic_int;
|
57 |
+
typedef unsigned int atomic_uint;
|
58 |
+
typedef long atomic_long;
|
59 |
+
typedef unsigned long atomic_ulong;
|
60 |
+
typedef long long atomic_llong;
|
61 |
+
typedef unsigned long long atomic_ullong;
|
62 |
+
typedef wchar_t atomic_wchar_t;
|
63 |
+
typedef int_least8_t atomic_int_least8_t;
|
64 |
+
typedef uint_least8_t atomic_uint_least8_t;
|
65 |
+
typedef int_least16_t atomic_int_least16_t;
|
66 |
+
typedef uint_least16_t atomic_uint_least16_t;
|
67 |
+
typedef int_least32_t atomic_int_least32_t;
|
68 |
+
typedef uint_least32_t atomic_uint_least32_t;
|
69 |
+
typedef int_least64_t atomic_int_least64_t;
|
70 |
+
typedef uint_least64_t atomic_uint_least64_t;
|
71 |
+
typedef int_fast8_t atomic_int_fast8_t;
|
72 |
+
typedef uint_fast8_t atomic_uint_fast8_t;
|
73 |
+
typedef int_fast16_t atomic_int_fast16_t;
|
74 |
+
typedef uint_fast16_t atomic_uint_fast16_t;
|
75 |
+
typedef int_fast32_t atomic_int_fast32_t;
|
76 |
+
typedef uint_fast32_t atomic_uint_fast32_t;
|
77 |
+
typedef int_fast64_t atomic_int_fast64_t;
|
78 |
+
typedef uint_fast64_t atomic_uint_fast64_t;
|
79 |
+
typedef intptr_t atomic_intptr_t;
|
80 |
+
typedef uintptr_t atomic_uintptr_t;
|
81 |
+
typedef size_t atomic_size_t;
|
82 |
+
typedef ptrdiff_t atomic_ptrdiff_t;
|
83 |
+
typedef intmax_t atomic_intmax_t;
|
84 |
+
typedef uintmax_t atomic_uintmax_t;
|
85 |
+
|
86 |
+
#define atomic_store(object, desired) \
|
87 |
+
do { \
|
88 |
+
*(object) = (desired); \
|
89 |
+
__sync_synchronize(); \
|
90 |
+
} while (0)
|
91 |
+
|
92 |
+
#define atomic_store_explicit(object, desired, order) \
|
93 |
+
atomic_store(object, desired)
|
94 |
+
|
95 |
+
#define atomic_load(object) \
|
96 |
+
(__sync_synchronize(), *(object))
|
97 |
+
|
98 |
+
#define atomic_load_explicit(object, order) \
|
99 |
+
atomic_load(object)
|
100 |
+
|
101 |
+
#define atomic_exchange(object, desired) \
|
102 |
+
({ \
|
103 |
+
__typeof__(object) _obj = (object); \
|
104 |
+
__typeof__(*object) _old; \
|
105 |
+
do \
|
106 |
+
_old = atomic_load(_obj); \
|
107 |
+
while (!__sync_bool_compare_and_swap(_obj, _old, (desired))); \
|
108 |
+
_old; \
|
109 |
+
})
|
110 |
+
|
111 |
+
#define atomic_exchange_explicit(object, desired, order) \
|
112 |
+
atomic_exchange(object, desired)
|
113 |
+
|
114 |
+
#define atomic_compare_exchange_strong(object, expected, desired) \
|
115 |
+
({ \
|
116 |
+
__typeof__(object) _exp = (expected); \
|
117 |
+
__typeof__(*object) _old = *_exp; \
|
118 |
+
*_exp = __sync_val_compare_and_swap((object), _old, (desired)); \
|
119 |
+
*_exp == _old; \
|
120 |
+
})
|
121 |
+
|
122 |
+
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
|
123 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
124 |
+
|
125 |
+
#define atomic_compare_exchange_weak(object, expected, desired) \
|
126 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
127 |
+
|
128 |
+
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
|
129 |
+
atomic_compare_exchange_weak(object, expected, desired)
|
130 |
+
|
131 |
+
#define atomic_fetch_add(object, operand) \
|
132 |
+
__sync_fetch_and_add(object, operand)
|
133 |
+
|
134 |
+
#define atomic_fetch_add_explicit(object, operand, order) \
|
135 |
+
atomic_fetch_add(object, operand)
|
136 |
+
|
137 |
+
#define atomic_fetch_sub(object, operand) \
|
138 |
+
__sync_fetch_and_sub(object, operand)
|
139 |
+
|
140 |
+
#define atomic_fetch_sub_explicit(object, operand, order) \
|
141 |
+
atomic_fetch_sub(object, operand)
|
142 |
+
|
143 |
+
#define atomic_fetch_or(object, operand) \
|
144 |
+
__sync_fetch_and_or(object, operand)
|
145 |
+
|
146 |
+
#define atomic_fetch_or_explicit(object, operand, order) \
|
147 |
+
atomic_fetch_or(object, operand)
|
148 |
+
|
149 |
+
#define atomic_fetch_xor(object, operand) \
|
150 |
+
__sync_fetch_and_xor(object, operand)
|
151 |
+
|
152 |
+
#define atomic_fetch_xor_explicit(object, operand, order) \
|
153 |
+
atomic_fetch_xor(object, operand)
|
154 |
+
|
155 |
+
#define atomic_fetch_and(object, operand) \
|
156 |
+
__sync_fetch_and_and(object, operand)
|
157 |
+
|
158 |
+
#define atomic_fetch_and_explicit(object, operand, order) \
|
159 |
+
atomic_fetch_and(object, operand)
|
160 |
+
|
161 |
+
#define atomic_flag_test_and_set(object) \
|
162 |
+
atomic_exchange(object, 1)
|
163 |
+
|
164 |
+
#define atomic_flag_test_and_set_explicit(object, order) \
|
165 |
+
atomic_flag_test_and_set(object)
|
166 |
+
|
167 |
+
#define atomic_flag_clear(object) \
|
168 |
+
atomic_store(object, 0)
|
169 |
+
|
170 |
+
#define atomic_flag_clear_explicit(object, order) \
|
171 |
+
atomic_flag_clear(object)
|
172 |
+
|
173 |
+
#endif /* COMPAT_ATOMICS_GCC_STDATOMIC_H */
|
bin/ffmpeg/compat/atomics/pthread/stdatomic.c
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
/*
|
20 |
+
* based on vlc_atomic.h from VLC
|
21 |
+
* Copyright (C) 2010 Rémi Denis-Courmont
|
22 |
+
*/
|
23 |
+
|
24 |
+
#include <pthread.h>
|
25 |
+
#include <stdint.h>
|
26 |
+
|
27 |
+
#include "stdatomic.h"
|
28 |
+
|
29 |
+
static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER;
|
30 |
+
|
31 |
+
void avpriv_atomic_lock(void)
|
32 |
+
{
|
33 |
+
pthread_mutex_lock(&atomic_lock);
|
34 |
+
}
|
35 |
+
|
36 |
+
void avpriv_atomic_unlock(void)
|
37 |
+
{
|
38 |
+
pthread_mutex_unlock(&atomic_lock);
|
39 |
+
}
|
bin/ffmpeg/compat/atomics/pthread/stdatomic.h
ADDED
@@ -0,0 +1,197 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
/*
|
20 |
+
* based on vlc_atomic.h from VLC
|
21 |
+
* Copyright (C) 2010 Rémi Denis-Courmont
|
22 |
+
*/
|
23 |
+
|
24 |
+
#ifndef COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
|
25 |
+
#define COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
|
26 |
+
|
27 |
+
#include <stdint.h>
|
28 |
+
|
29 |
+
#define ATOMIC_FLAG_INIT 0
|
30 |
+
|
31 |
+
#define ATOMIC_VAR_INIT(value) (value)
|
32 |
+
|
33 |
+
#define atomic_init(obj, value) \
|
34 |
+
do { \
|
35 |
+
*(obj) = (value); \
|
36 |
+
} while(0)
|
37 |
+
|
38 |
+
#define kill_dependency(y) ((void)0)
|
39 |
+
|
40 |
+
#define atomic_signal_fence(order) \
|
41 |
+
((void)0)
|
42 |
+
|
43 |
+
#define atomic_is_lock_free(obj) 0
|
44 |
+
|
45 |
+
typedef intptr_t atomic_flag;
|
46 |
+
typedef intptr_t atomic_bool;
|
47 |
+
typedef intptr_t atomic_char;
|
48 |
+
typedef intptr_t atomic_schar;
|
49 |
+
typedef intptr_t atomic_uchar;
|
50 |
+
typedef intptr_t atomic_short;
|
51 |
+
typedef intptr_t atomic_ushort;
|
52 |
+
typedef intptr_t atomic_int;
|
53 |
+
typedef intptr_t atomic_uint;
|
54 |
+
typedef intptr_t atomic_long;
|
55 |
+
typedef intptr_t atomic_ulong;
|
56 |
+
typedef intptr_t atomic_llong;
|
57 |
+
typedef intptr_t atomic_ullong;
|
58 |
+
typedef intptr_t atomic_wchar_t;
|
59 |
+
typedef intptr_t atomic_int_least8_t;
|
60 |
+
typedef intptr_t atomic_uint_least8_t;
|
61 |
+
typedef intptr_t atomic_int_least16_t;
|
62 |
+
typedef intptr_t atomic_uint_least16_t;
|
63 |
+
typedef intptr_t atomic_int_least32_t;
|
64 |
+
typedef intptr_t atomic_uint_least32_t;
|
65 |
+
typedef intptr_t atomic_int_least64_t;
|
66 |
+
typedef intptr_t atomic_uint_least64_t;
|
67 |
+
typedef intptr_t atomic_int_fast8_t;
|
68 |
+
typedef intptr_t atomic_uint_fast8_t;
|
69 |
+
typedef intptr_t atomic_int_fast16_t;
|
70 |
+
typedef intptr_t atomic_uint_fast16_t;
|
71 |
+
typedef intptr_t atomic_int_fast32_t;
|
72 |
+
typedef intptr_t atomic_uint_fast32_t;
|
73 |
+
typedef intptr_t atomic_int_fast64_t;
|
74 |
+
typedef intptr_t atomic_uint_fast64_t;
|
75 |
+
typedef intptr_t atomic_intptr_t;
|
76 |
+
typedef intptr_t atomic_uintptr_t;
|
77 |
+
typedef intptr_t atomic_size_t;
|
78 |
+
typedef intptr_t atomic_ptrdiff_t;
|
79 |
+
typedef intptr_t atomic_intmax_t;
|
80 |
+
typedef intptr_t atomic_uintmax_t;
|
81 |
+
|
82 |
+
void avpriv_atomic_lock(void);
|
83 |
+
void avpriv_atomic_unlock(void);
|
84 |
+
|
85 |
+
static inline void atomic_thread_fence(int order)
|
86 |
+
{
|
87 |
+
avpriv_atomic_lock();
|
88 |
+
avpriv_atomic_unlock();
|
89 |
+
}
|
90 |
+
|
91 |
+
static inline void atomic_store(intptr_t *object, intptr_t desired)
|
92 |
+
{
|
93 |
+
avpriv_atomic_lock();
|
94 |
+
*object = desired;
|
95 |
+
avpriv_atomic_unlock();
|
96 |
+
}
|
97 |
+
|
98 |
+
#define atomic_store_explicit(object, desired, order) \
|
99 |
+
atomic_store(object, desired)
|
100 |
+
|
101 |
+
static inline intptr_t atomic_load(intptr_t *object)
|
102 |
+
{
|
103 |
+
intptr_t ret;
|
104 |
+
avpriv_atomic_lock();
|
105 |
+
ret = *object;
|
106 |
+
avpriv_atomic_unlock();
|
107 |
+
return ret;
|
108 |
+
}
|
109 |
+
|
110 |
+
#define atomic_load_explicit(object, order) \
|
111 |
+
atomic_load(object)
|
112 |
+
|
113 |
+
static inline intptr_t atomic_exchange(intptr_t *object, intptr_t desired)
|
114 |
+
{
|
115 |
+
intptr_t ret;
|
116 |
+
avpriv_atomic_lock();
|
117 |
+
ret = *object;
|
118 |
+
*object = desired;
|
119 |
+
avpriv_atomic_unlock();
|
120 |
+
return ret;
|
121 |
+
}
|
122 |
+
|
123 |
+
#define atomic_exchange_explicit(object, desired, order) \
|
124 |
+
atomic_exchange(object, desired)
|
125 |
+
|
126 |
+
static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
|
127 |
+
intptr_t desired)
|
128 |
+
{
|
129 |
+
int ret;
|
130 |
+
avpriv_atomic_lock();
|
131 |
+
if (*object == *expected) {
|
132 |
+
ret = 1;
|
133 |
+
*object = desired;
|
134 |
+
} else {
|
135 |
+
ret = 0;
|
136 |
+
*expected = *object;
|
137 |
+
}
|
138 |
+
avpriv_atomic_unlock();
|
139 |
+
return ret;
|
140 |
+
}
|
141 |
+
|
142 |
+
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
|
143 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
144 |
+
|
145 |
+
#define atomic_compare_exchange_weak(object, expected, desired) \
|
146 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
147 |
+
|
148 |
+
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
|
149 |
+
atomic_compare_exchange_weak(object, expected, desired)
|
150 |
+
|
151 |
+
#define FETCH_MODIFY(opname, op) \
|
152 |
+
static inline intptr_t atomic_fetch_ ## opname(intptr_t *object, intptr_t operand) \
|
153 |
+
{ \
|
154 |
+
intptr_t ret; \
|
155 |
+
avpriv_atomic_lock(); \
|
156 |
+
ret = *object; \
|
157 |
+
*object = *object op operand; \
|
158 |
+
avpriv_atomic_unlock(); \
|
159 |
+
return ret; \
|
160 |
+
}
|
161 |
+
|
162 |
+
FETCH_MODIFY(add, +)
|
163 |
+
FETCH_MODIFY(sub, -)
|
164 |
+
FETCH_MODIFY(or, |)
|
165 |
+
FETCH_MODIFY(xor, ^)
|
166 |
+
FETCH_MODIFY(and, &)
|
167 |
+
|
168 |
+
#undef FETCH_MODIFY
|
169 |
+
|
170 |
+
#define atomic_fetch_add_explicit(object, operand, order) \
|
171 |
+
atomic_fetch_add(object, operand)
|
172 |
+
|
173 |
+
#define atomic_fetch_sub_explicit(object, operand, order) \
|
174 |
+
atomic_fetch_sub(object, operand)
|
175 |
+
|
176 |
+
#define atomic_fetch_or_explicit(object, operand, order) \
|
177 |
+
atomic_fetch_or(object, operand)
|
178 |
+
|
179 |
+
#define atomic_fetch_xor_explicit(object, operand, order) \
|
180 |
+
atomic_fetch_xor(object, operand)
|
181 |
+
|
182 |
+
#define atomic_fetch_and_explicit(object, operand, order) \
|
183 |
+
atomic_fetch_and(object, operand)
|
184 |
+
|
185 |
+
#define atomic_flag_test_and_set(object) \
|
186 |
+
atomic_exchange(object, 1)
|
187 |
+
|
188 |
+
#define atomic_flag_test_and_set_explicit(object, order) \
|
189 |
+
atomic_flag_test_and_set(object)
|
190 |
+
|
191 |
+
#define atomic_flag_clear(object) \
|
192 |
+
atomic_store(object, 0)
|
193 |
+
|
194 |
+
#define atomic_flag_clear_explicit(object, order) \
|
195 |
+
atomic_flag_clear(object)
|
196 |
+
|
197 |
+
#endif /* COMPAT_ATOMICS_PTHREAD_STDATOMIC_H */
|
bin/ffmpeg/compat/atomics/suncc/stdatomic.h
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#ifndef COMPAT_ATOMICS_SUNCC_STDATOMIC_H
|
20 |
+
#define COMPAT_ATOMICS_SUNCC_STDATOMIC_H
|
21 |
+
|
22 |
+
#include <atomic.h>
|
23 |
+
#include <mbarrier.h>
|
24 |
+
#include <stddef.h>
|
25 |
+
#include <stdint.h>
|
26 |
+
|
27 |
+
#define ATOMIC_FLAG_INIT 0
|
28 |
+
|
29 |
+
#define ATOMIC_VAR_INIT(value) (value)
|
30 |
+
|
31 |
+
#define atomic_init(obj, value) \
|
32 |
+
do { \
|
33 |
+
*(obj) = (value); \
|
34 |
+
} while(0)
|
35 |
+
|
36 |
+
#define kill_dependency(y) ((void)0)
|
37 |
+
|
38 |
+
#define atomic_thread_fence(order) \
|
39 |
+
__machine_rw_barrier();
|
40 |
+
|
41 |
+
#define atomic_signal_fence(order) \
|
42 |
+
((void)0)
|
43 |
+
|
44 |
+
#define atomic_is_lock_free(obj) 0
|
45 |
+
|
46 |
+
typedef intptr_t atomic_flag;
|
47 |
+
typedef intptr_t atomic_bool;
|
48 |
+
typedef intptr_t atomic_char;
|
49 |
+
typedef intptr_t atomic_schar;
|
50 |
+
typedef intptr_t atomic_uchar;
|
51 |
+
typedef intptr_t atomic_short;
|
52 |
+
typedef intptr_t atomic_ushort;
|
53 |
+
typedef intptr_t atomic_int;
|
54 |
+
typedef intptr_t atomic_uint;
|
55 |
+
typedef intptr_t atomic_long;
|
56 |
+
typedef intptr_t atomic_ulong;
|
57 |
+
typedef intptr_t atomic_llong;
|
58 |
+
typedef intptr_t atomic_ullong;
|
59 |
+
typedef intptr_t atomic_wchar_t;
|
60 |
+
typedef intptr_t atomic_int_least8_t;
|
61 |
+
typedef intptr_t atomic_uint_least8_t;
|
62 |
+
typedef intptr_t atomic_int_least16_t;
|
63 |
+
typedef intptr_t atomic_uint_least16_t;
|
64 |
+
typedef intptr_t atomic_int_least32_t;
|
65 |
+
typedef intptr_t atomic_uint_least32_t;
|
66 |
+
typedef intptr_t atomic_int_least64_t;
|
67 |
+
typedef intptr_t atomic_uint_least64_t;
|
68 |
+
typedef intptr_t atomic_int_fast8_t;
|
69 |
+
typedef intptr_t atomic_uint_fast8_t;
|
70 |
+
typedef intptr_t atomic_int_fast16_t;
|
71 |
+
typedef intptr_t atomic_uint_fast16_t;
|
72 |
+
typedef intptr_t atomic_int_fast32_t;
|
73 |
+
typedef intptr_t atomic_uint_fast32_t;
|
74 |
+
typedef intptr_t atomic_int_fast64_t;
|
75 |
+
typedef intptr_t atomic_uint_fast64_t;
|
76 |
+
typedef intptr_t atomic_intptr_t;
|
77 |
+
typedef intptr_t atomic_uintptr_t;
|
78 |
+
typedef intptr_t atomic_size_t;
|
79 |
+
typedef intptr_t atomic_ptrdiff_t;
|
80 |
+
typedef intptr_t atomic_intmax_t;
|
81 |
+
typedef intptr_t atomic_uintmax_t;
|
82 |
+
|
83 |
+
static inline void atomic_store(intptr_t *object, intptr_t desired)
|
84 |
+
{
|
85 |
+
*object = desired;
|
86 |
+
__machine_rw_barrier();
|
87 |
+
}
|
88 |
+
|
89 |
+
#define atomic_store_explicit(object, desired, order) \
|
90 |
+
atomic_store(object, desired)
|
91 |
+
|
92 |
+
static inline intptr_t atomic_load(intptr_t *object)
|
93 |
+
{
|
94 |
+
__machine_rw_barrier();
|
95 |
+
return *object;
|
96 |
+
}
|
97 |
+
|
98 |
+
#define atomic_load_explicit(object, order) \
|
99 |
+
atomic_load(object)
|
100 |
+
|
101 |
+
#define atomic_exchange(object, desired) \
|
102 |
+
atomic_swap_ptr(object, desired)
|
103 |
+
|
104 |
+
#define atomic_exchange_explicit(object, desired, order) \
|
105 |
+
atomic_exchange(object, desired)
|
106 |
+
|
107 |
+
static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
|
108 |
+
intptr_t desired)
|
109 |
+
{
|
110 |
+
intptr_t old = *expected;
|
111 |
+
*expected = (intptr_t)atomic_cas_ptr(object, (void *)old, (void *)desired);
|
112 |
+
return *expected == old;
|
113 |
+
}
|
114 |
+
|
115 |
+
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
|
116 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
117 |
+
|
118 |
+
#define atomic_compare_exchange_weak(object, expected, desired) \
|
119 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
120 |
+
|
121 |
+
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
|
122 |
+
atomic_compare_exchange_weak(object, expected, desired)
|
123 |
+
|
124 |
+
static inline intptr_t atomic_fetch_add(intptr_t *object, intptr_t operand)
|
125 |
+
{
|
126 |
+
return atomic_add_ptr_nv(object, operand) - operand;
|
127 |
+
}
|
128 |
+
|
129 |
+
#define atomic_fetch_sub(object, operand) \
|
130 |
+
atomic_fetch_add(object, -(operand))
|
131 |
+
|
132 |
+
static inline intptr_t atomic_fetch_or(intptr_t *object, intptr_t operand)
|
133 |
+
{
|
134 |
+
intptr_t old;
|
135 |
+
do {
|
136 |
+
old = atomic_load(object);
|
137 |
+
} while (!atomic_compare_exchange_strong(object, old, old | operand));
|
138 |
+
return old;
|
139 |
+
}
|
140 |
+
|
141 |
+
static inline intptr_t atomic_fetch_xor(intptr_t *object, intptr_t operand)
|
142 |
+
{
|
143 |
+
intptr_t old;
|
144 |
+
do {
|
145 |
+
old = atomic_load(object);
|
146 |
+
} while (!atomic_compare_exchange_strong(object, old, old ^ operand));
|
147 |
+
return old;
|
148 |
+
}
|
149 |
+
|
150 |
+
static inline intptr_t atomic_fetch_and(intptr_t *object, intptr_t operand)
|
151 |
+
{
|
152 |
+
intptr_t old;
|
153 |
+
do {
|
154 |
+
old = atomic_load(object);
|
155 |
+
} while (!atomic_compare_exchange_strong(object, old, old & operand));
|
156 |
+
return old;
|
157 |
+
}
|
158 |
+
|
159 |
+
#define atomic_fetch_add_explicit(object, operand, order) \
|
160 |
+
atomic_fetch_add(object, operand)
|
161 |
+
|
162 |
+
#define atomic_fetch_sub_explicit(object, operand, order) \
|
163 |
+
atomic_fetch_sub(object, operand)
|
164 |
+
|
165 |
+
#define atomic_fetch_or_explicit(object, operand, order) \
|
166 |
+
atomic_fetch_or(object, operand)
|
167 |
+
|
168 |
+
#define atomic_fetch_xor_explicit(object, operand, order) \
|
169 |
+
atomic_fetch_xor(object, operand)
|
170 |
+
|
171 |
+
#define atomic_fetch_and_explicit(object, operand, order) \
|
172 |
+
atomic_fetch_and(object, operand)
|
173 |
+
|
174 |
+
#define atomic_flag_test_and_set(object) \
|
175 |
+
atomic_exchange(object, 1)
|
176 |
+
|
177 |
+
#define atomic_flag_test_and_set_explicit(object, order) \
|
178 |
+
atomic_flag_test_and_set(object)
|
179 |
+
|
180 |
+
#define atomic_flag_clear(object) \
|
181 |
+
atomic_store(object, 0)
|
182 |
+
|
183 |
+
#define atomic_flag_clear_explicit(object, order) \
|
184 |
+
atomic_flag_clear(object)
|
185 |
+
|
186 |
+
#endif /* COMPAT_ATOMICS_SUNCC_STDATOMIC_H */
|
bin/ffmpeg/compat/atomics/win32/stdatomic.h
ADDED
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#ifndef COMPAT_ATOMICS_WIN32_STDATOMIC_H
|
20 |
+
#define COMPAT_ATOMICS_WIN32_STDATOMIC_H
|
21 |
+
|
22 |
+
#define WIN32_LEAN_AND_MEAN
|
23 |
+
#include <stddef.h>
|
24 |
+
#include <stdint.h>
|
25 |
+
#include <windows.h>
|
26 |
+
|
27 |
+
#define ATOMIC_FLAG_INIT 0
|
28 |
+
|
29 |
+
#define ATOMIC_VAR_INIT(value) (value)
|
30 |
+
|
31 |
+
#define atomic_init(obj, value) \
|
32 |
+
do { \
|
33 |
+
*(obj) = (value); \
|
34 |
+
} while(0)
|
35 |
+
|
36 |
+
#define kill_dependency(y) ((void)0)
|
37 |
+
|
38 |
+
#define atomic_thread_fence(order) \
|
39 |
+
MemoryBarrier();
|
40 |
+
|
41 |
+
#define atomic_signal_fence(order) \
|
42 |
+
((void)0)
|
43 |
+
|
44 |
+
#define atomic_is_lock_free(obj) 0
|
45 |
+
|
46 |
+
typedef intptr_t atomic_flag;
|
47 |
+
typedef intptr_t atomic_bool;
|
48 |
+
typedef intptr_t atomic_char;
|
49 |
+
typedef intptr_t atomic_schar;
|
50 |
+
typedef intptr_t atomic_uchar;
|
51 |
+
typedef intptr_t atomic_short;
|
52 |
+
typedef intptr_t atomic_ushort;
|
53 |
+
typedef intptr_t atomic_int;
|
54 |
+
typedef intptr_t atomic_uint;
|
55 |
+
typedef intptr_t atomic_long;
|
56 |
+
typedef intptr_t atomic_ulong;
|
57 |
+
typedef intptr_t atomic_llong;
|
58 |
+
typedef intptr_t atomic_ullong;
|
59 |
+
typedef intptr_t atomic_wchar_t;
|
60 |
+
typedef intptr_t atomic_int_least8_t;
|
61 |
+
typedef intptr_t atomic_uint_least8_t;
|
62 |
+
typedef intptr_t atomic_int_least16_t;
|
63 |
+
typedef intptr_t atomic_uint_least16_t;
|
64 |
+
typedef intptr_t atomic_int_least32_t;
|
65 |
+
typedef intptr_t atomic_uint_least32_t;
|
66 |
+
typedef intptr_t atomic_int_least64_t;
|
67 |
+
typedef intptr_t atomic_uint_least64_t;
|
68 |
+
typedef intptr_t atomic_int_fast8_t;
|
69 |
+
typedef intptr_t atomic_uint_fast8_t;
|
70 |
+
typedef intptr_t atomic_int_fast16_t;
|
71 |
+
typedef intptr_t atomic_uint_fast16_t;
|
72 |
+
typedef intptr_t atomic_int_fast32_t;
|
73 |
+
typedef intptr_t atomic_uint_fast32_t;
|
74 |
+
typedef intptr_t atomic_int_fast64_t;
|
75 |
+
typedef intptr_t atomic_uint_fast64_t;
|
76 |
+
typedef intptr_t atomic_intptr_t;
|
77 |
+
typedef intptr_t atomic_uintptr_t;
|
78 |
+
typedef intptr_t atomic_size_t;
|
79 |
+
typedef intptr_t atomic_ptrdiff_t;
|
80 |
+
typedef intptr_t atomic_intmax_t;
|
81 |
+
typedef intptr_t atomic_uintmax_t;
|
82 |
+
|
83 |
+
#define atomic_store(object, desired) \
|
84 |
+
do { \
|
85 |
+
*(object) = (desired); \
|
86 |
+
MemoryBarrier(); \
|
87 |
+
} while (0)
|
88 |
+
|
89 |
+
#define atomic_store_explicit(object, desired, order) \
|
90 |
+
atomic_store(object, desired)
|
91 |
+
|
92 |
+
#define atomic_load(object) \
|
93 |
+
(MemoryBarrier(), *(object))
|
94 |
+
|
95 |
+
#define atomic_load_explicit(object, order) \
|
96 |
+
atomic_load(object)
|
97 |
+
|
98 |
+
#define atomic_exchange(object, desired) \
|
99 |
+
InterlockedExchangePointer((PVOID volatile *)object, (PVOID)desired)
|
100 |
+
|
101 |
+
#define atomic_exchange_explicit(object, desired, order) \
|
102 |
+
atomic_exchange(object, desired)
|
103 |
+
|
104 |
+
static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
|
105 |
+
intptr_t desired)
|
106 |
+
{
|
107 |
+
intptr_t old = *expected;
|
108 |
+
*expected = (intptr_t)InterlockedCompareExchangePointer(
|
109 |
+
(PVOID *)object, (PVOID)desired, (PVOID)old);
|
110 |
+
return *expected == old;
|
111 |
+
}
|
112 |
+
|
113 |
+
#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
|
114 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
115 |
+
|
116 |
+
#define atomic_compare_exchange_weak(object, expected, desired) \
|
117 |
+
atomic_compare_exchange_strong(object, expected, desired)
|
118 |
+
|
119 |
+
#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
|
120 |
+
atomic_compare_exchange_weak(object, expected, desired)
|
121 |
+
|
122 |
+
#ifdef _WIN64
|
123 |
+
#define atomic_fetch_add(object, operand) \
|
124 |
+
InterlockedExchangeAdd64(object, operand)
|
125 |
+
|
126 |
+
#define atomic_fetch_sub(object, operand) \
|
127 |
+
InterlockedExchangeAdd64(object, -(operand))
|
128 |
+
|
129 |
+
#define atomic_fetch_or(object, operand) \
|
130 |
+
InterlockedOr64(object, operand)
|
131 |
+
|
132 |
+
#define atomic_fetch_xor(object, operand) \
|
133 |
+
InterlockedXor64(object, operand)
|
134 |
+
|
135 |
+
#define atomic_fetch_and(object, operand) \
|
136 |
+
InterlockedAnd64(object, operand)
|
137 |
+
#else
|
138 |
+
#define atomic_fetch_add(object, operand) \
|
139 |
+
InterlockedExchangeAdd(object, operand)
|
140 |
+
|
141 |
+
#define atomic_fetch_sub(object, operand) \
|
142 |
+
InterlockedExchangeAdd(object, -(operand))
|
143 |
+
|
144 |
+
#define atomic_fetch_or(object, operand) \
|
145 |
+
InterlockedOr(object, operand)
|
146 |
+
|
147 |
+
#define atomic_fetch_xor(object, operand) \
|
148 |
+
InterlockedXor(object, operand)
|
149 |
+
|
150 |
+
#define atomic_fetch_and(object, operand) \
|
151 |
+
InterlockedAnd(object, operand)
|
152 |
+
#endif /* _WIN64 */
|
153 |
+
|
154 |
+
#define atomic_fetch_add_explicit(object, operand, order) \
|
155 |
+
atomic_fetch_add(object, operand)
|
156 |
+
|
157 |
+
#define atomic_fetch_sub_explicit(object, operand, order) \
|
158 |
+
atomic_fetch_sub(object, operand)
|
159 |
+
|
160 |
+
#define atomic_fetch_or_explicit(object, operand, order) \
|
161 |
+
atomic_fetch_or(object, operand)
|
162 |
+
|
163 |
+
#define atomic_fetch_xor_explicit(object, operand, order) \
|
164 |
+
atomic_fetch_xor(object, operand)
|
165 |
+
|
166 |
+
#define atomic_fetch_and_explicit(object, operand, order) \
|
167 |
+
atomic_fetch_and(object, operand)
|
168 |
+
|
169 |
+
#define atomic_flag_test_and_set(object) \
|
170 |
+
atomic_exchange(object, 1)
|
171 |
+
|
172 |
+
#define atomic_flag_test_and_set_explicit(object, order) \
|
173 |
+
atomic_flag_test_and_set(object)
|
174 |
+
|
175 |
+
#define atomic_flag_clear(object) \
|
176 |
+
atomic_store(object, 0)
|
177 |
+
|
178 |
+
#define atomic_flag_clear_explicit(object, order) \
|
179 |
+
atomic_flag_clear(object)
|
180 |
+
|
181 |
+
#endif /* COMPAT_ATOMICS_WIN32_STDATOMIC_H */
|
bin/ffmpeg/compat/cuda/cuda_runtime.h
ADDED
@@ -0,0 +1,192 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Minimum CUDA compatibility definitions header
|
3 |
+
*
|
4 |
+
* Copyright (c) 2019 rcombs
|
5 |
+
*
|
6 |
+
* This file is part of FFmpeg.
|
7 |
+
*
|
8 |
+
* FFmpeg is free software; you can redistribute it and/or
|
9 |
+
* modify it under the terms of the GNU Lesser General Public
|
10 |
+
* License as published by the Free Software Foundation; either
|
11 |
+
* version 2.1 of the License, or (at your option) any later version.
|
12 |
+
*
|
13 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
14 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16 |
+
* Lesser General Public License for more details.
|
17 |
+
*
|
18 |
+
* You should have received a copy of the GNU Lesser General Public
|
19 |
+
* License along with FFmpeg; if not, write to the Free Software
|
20 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
21 |
+
*/
|
22 |
+
|
23 |
+
#ifndef COMPAT_CUDA_CUDA_RUNTIME_H
|
24 |
+
#define COMPAT_CUDA_CUDA_RUNTIME_H
|
25 |
+
|
26 |
+
// Common macros
|
27 |
+
#define __global__ __attribute__((global))
|
28 |
+
#define __device__ __attribute__((device))
|
29 |
+
#define __device_builtin__ __attribute__((device_builtin))
|
30 |
+
#define __align__(N) __attribute__((aligned(N)))
|
31 |
+
#define __inline__ __inline__ __attribute__((always_inline))
|
32 |
+
|
33 |
+
#define max(a, b) ((a) > (b) ? (a) : (b))
|
34 |
+
#define min(a, b) ((a) < (b) ? (a) : (b))
|
35 |
+
#define abs(x) ((x) < 0 ? -(x) : (x))
|
36 |
+
|
37 |
+
#define atomicAdd(a, b) (__atomic_fetch_add(a, b, __ATOMIC_SEQ_CST))
|
38 |
+
|
39 |
+
// Basic typedefs
|
40 |
+
typedef __device_builtin__ unsigned long long cudaTextureObject_t;
|
41 |
+
|
42 |
+
typedef struct __device_builtin__ __align__(2) uchar2
|
43 |
+
{
|
44 |
+
unsigned char x, y;
|
45 |
+
} uchar2;
|
46 |
+
|
47 |
+
typedef struct __device_builtin__ __align__(4) ushort2
|
48 |
+
{
|
49 |
+
unsigned short x, y;
|
50 |
+
} ushort2;
|
51 |
+
|
52 |
+
typedef struct __device_builtin__ __align__(8) float2
|
53 |
+
{
|
54 |
+
float x, y;
|
55 |
+
} float2;
|
56 |
+
|
57 |
+
typedef struct __device_builtin__ __align__(8) int2
|
58 |
+
{
|
59 |
+
int x, y;
|
60 |
+
} int2;
|
61 |
+
|
62 |
+
typedef struct __device_builtin__ uint3
|
63 |
+
{
|
64 |
+
unsigned int x, y, z;
|
65 |
+
} uint3;
|
66 |
+
|
67 |
+
typedef struct uint3 dim3;
|
68 |
+
|
69 |
+
typedef struct __device_builtin__ __align__(4) uchar4
|
70 |
+
{
|
71 |
+
unsigned char x, y, z, w;
|
72 |
+
} uchar4;
|
73 |
+
|
74 |
+
typedef struct __device_builtin__ __align__(8) ushort4
|
75 |
+
{
|
76 |
+
unsigned short x, y, z, w;
|
77 |
+
} ushort4;
|
78 |
+
|
79 |
+
typedef struct __device_builtin__ __align__(16) int4
|
80 |
+
{
|
81 |
+
int x, y, z, w;
|
82 |
+
} int4;
|
83 |
+
|
84 |
+
typedef struct __device_builtin__ __align__(16) float4
|
85 |
+
{
|
86 |
+
float x, y, z, w;
|
87 |
+
} float4;
|
88 |
+
|
89 |
+
// Accessors for special registers
|
90 |
+
#define GETCOMP(reg, comp) \
|
91 |
+
asm("mov.u32 %0, %%" #reg "." #comp ";" : "=r"(tmp)); \
|
92 |
+
ret.comp = tmp;
|
93 |
+
|
94 |
+
#define GET(name, reg) static inline __device__ uint3 name() {\
|
95 |
+
uint3 ret; \
|
96 |
+
unsigned tmp; \
|
97 |
+
GETCOMP(reg, x) \
|
98 |
+
GETCOMP(reg, y) \
|
99 |
+
GETCOMP(reg, z) \
|
100 |
+
return ret; \
|
101 |
+
}
|
102 |
+
|
103 |
+
GET(getBlockIdx, ctaid)
|
104 |
+
GET(getBlockDim, ntid)
|
105 |
+
GET(getThreadIdx, tid)
|
106 |
+
|
107 |
+
// Instead of externs for these registers, we turn access to them into calls into trivial ASM
|
108 |
+
#define blockIdx (getBlockIdx())
|
109 |
+
#define blockDim (getBlockDim())
|
110 |
+
#define threadIdx (getThreadIdx())
|
111 |
+
|
112 |
+
// Basic initializers (simple macros rather than inline functions)
|
113 |
+
#define make_int2(a, b) ((int2){.x = a, .y = b})
|
114 |
+
#define make_uchar2(a, b) ((uchar2){.x = a, .y = b})
|
115 |
+
#define make_ushort2(a, b) ((ushort2){.x = a, .y = b})
|
116 |
+
#define make_float2(a, b) ((float2){.x = a, .y = b})
|
117 |
+
#define make_int4(a, b, c, d) ((int4){.x = a, .y = b, .z = c, .w = d})
|
118 |
+
#define make_uchar4(a, b, c, d) ((uchar4){.x = a, .y = b, .z = c, .w = d})
|
119 |
+
#define make_ushort4(a, b, c, d) ((ushort4){.x = a, .y = b, .z = c, .w = d})
|
120 |
+
#define make_float4(a, b, c, d) ((float4){.x = a, .y = b, .z = c, .w = d})
|
121 |
+
|
122 |
+
// Conversions from the tex instruction's 4-register output to various types
|
123 |
+
#define TEX2D(type, ret) static inline __device__ void conv(type* out, unsigned a, unsigned b, unsigned c, unsigned d) {*out = (ret);}
|
124 |
+
|
125 |
+
TEX2D(unsigned char, a & 0xFF)
|
126 |
+
TEX2D(unsigned short, a & 0xFFFF)
|
127 |
+
TEX2D(float, a)
|
128 |
+
TEX2D(uchar2, make_uchar2(a & 0xFF, b & 0xFF))
|
129 |
+
TEX2D(ushort2, make_ushort2(a & 0xFFFF, b & 0xFFFF))
|
130 |
+
TEX2D(float2, make_float2(a, b))
|
131 |
+
TEX2D(uchar4, make_uchar4(a & 0xFF, b & 0xFF, c & 0xFF, d & 0xFF))
|
132 |
+
TEX2D(ushort4, make_ushort4(a & 0xFFFF, b & 0xFFFF, c & 0xFFFF, d & 0xFFFF))
|
133 |
+
TEX2D(float4, make_float4(a, b, c, d))
|
134 |
+
|
135 |
+
// Template calling tex instruction and converting the output to the selected type
|
136 |
+
template<typename T>
|
137 |
+
inline __device__ T tex2D(cudaTextureObject_t texObject, float x, float y)
|
138 |
+
{
|
139 |
+
T ret;
|
140 |
+
unsigned ret1, ret2, ret3, ret4;
|
141 |
+
asm("tex.2d.v4.u32.f32 {%0, %1, %2, %3}, [%4, {%5, %6}];" :
|
142 |
+
"=r"(ret1), "=r"(ret2), "=r"(ret3), "=r"(ret4) :
|
143 |
+
"l"(texObject), "f"(x), "f"(y));
|
144 |
+
conv(&ret, ret1, ret2, ret3, ret4);
|
145 |
+
return ret;
|
146 |
+
}
|
147 |
+
|
148 |
+
template<>
|
149 |
+
inline __device__ float4 tex2D<float4>(cudaTextureObject_t texObject, float x, float y)
|
150 |
+
{
|
151 |
+
float4 ret;
|
152 |
+
asm("tex.2d.v4.f32.f32 {%0, %1, %2, %3}, [%4, {%5, %6}];" :
|
153 |
+
"=r"(ret.x), "=r"(ret.y), "=r"(ret.z), "=r"(ret.w) :
|
154 |
+
"l"(texObject), "f"(x), "f"(y));
|
155 |
+
return ret;
|
156 |
+
}
|
157 |
+
|
158 |
+
template<>
|
159 |
+
inline __device__ float tex2D<float>(cudaTextureObject_t texObject, float x, float y)
|
160 |
+
{
|
161 |
+
return tex2D<float4>(texObject, x, y).x;
|
162 |
+
}
|
163 |
+
|
164 |
+
template<>
|
165 |
+
inline __device__ float2 tex2D<float2>(cudaTextureObject_t texObject, float x, float y)
|
166 |
+
{
|
167 |
+
float4 ret = tex2D<float4>(texObject, x, y);
|
168 |
+
return make_float2(ret.x, ret.y);
|
169 |
+
}
|
170 |
+
|
171 |
+
// Math helper functions
|
172 |
+
static inline __device__ float floorf(float a) { return __builtin_floorf(a); }
|
173 |
+
static inline __device__ float floor(float a) { return __builtin_floorf(a); }
|
174 |
+
static inline __device__ double floor(double a) { return __builtin_floor(a); }
|
175 |
+
static inline __device__ float ceilf(float a) { return __builtin_ceilf(a); }
|
176 |
+
static inline __device__ float ceil(float a) { return __builtin_ceilf(a); }
|
177 |
+
static inline __device__ double ceil(double a) { return __builtin_ceil(a); }
|
178 |
+
static inline __device__ float truncf(float a) { return __builtin_truncf(a); }
|
179 |
+
static inline __device__ float trunc(float a) { return __builtin_truncf(a); }
|
180 |
+
static inline __device__ double trunc(double a) { return __builtin_trunc(a); }
|
181 |
+
static inline __device__ float fabsf(float a) { return __builtin_fabsf(a); }
|
182 |
+
static inline __device__ float fabs(float a) { return __builtin_fabsf(a); }
|
183 |
+
static inline __device__ double fabs(double a) { return __builtin_fabs(a); }
|
184 |
+
static inline __device__ float sqrtf(float a) { return __builtin_sqrtf(a); }
|
185 |
+
|
186 |
+
static inline __device__ float __saturatef(float a) { return __nvvm_saturate_f(a); }
|
187 |
+
static inline __device__ float __sinf(float a) { return __nvvm_sin_approx_f(a); }
|
188 |
+
static inline __device__ float __cosf(float a) { return __nvvm_cos_approx_f(a); }
|
189 |
+
static inline __device__ float __expf(float a) { return __nvvm_ex2_approx_f(a * (float)__builtin_log2(__builtin_exp(1))); }
|
190 |
+
static inline __device__ float __powf(float a, float b) { return __nvvm_ex2_approx_f(__nvvm_lg2_approx_f(a) * b); }
|
191 |
+
|
192 |
+
#endif /* COMPAT_CUDA_CUDA_RUNTIME_H */
|
bin/ffmpeg/compat/cuda/dynlink_loader.h
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#ifndef COMPAT_CUDA_DYNLINK_LOADER_H
|
20 |
+
#define COMPAT_CUDA_DYNLINK_LOADER_H
|
21 |
+
|
22 |
+
#include "libavutil/log.h"
|
23 |
+
#include "compat/w32dlfcn.h"
|
24 |
+
|
25 |
+
#define FFNV_LOAD_FUNC(path) dlopen((path), RTLD_LAZY)
|
26 |
+
#define FFNV_SYM_FUNC(lib, sym) dlsym((lib), (sym))
|
27 |
+
#define FFNV_FREE_FUNC(lib) dlclose(lib)
|
28 |
+
#define FFNV_LOG_FUNC(logctx, msg, ...) av_log(logctx, AV_LOG_ERROR, msg, __VA_ARGS__)
|
29 |
+
#define FFNV_DEBUG_LOG_FUNC(logctx, msg, ...) av_log(logctx, AV_LOG_DEBUG, msg, __VA_ARGS__)
|
30 |
+
|
31 |
+
#include <ffnvcodec/dynlink_loader.h>
|
32 |
+
|
33 |
+
#endif /* COMPAT_CUDA_DYNLINK_LOADER_H */
|
bin/ffmpeg/compat/dispatch_semaphore/semaphore.h
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#ifndef COMPAT_DISPATCH_SEMAPHORE_SEMAPHORE_H
|
20 |
+
#define COMPAT_DISPATCH_SEMAPHORE_SEMAPHORE_H
|
21 |
+
|
22 |
+
#include <dispatch/dispatch.h>
|
23 |
+
#include <errno.h>
|
24 |
+
|
25 |
+
#define sem_t dispatch_semaphore_t
|
26 |
+
#define sem_post(psem) dispatch_semaphore_signal(*psem)
|
27 |
+
#define sem_wait(psem) dispatch_semaphore_wait(*psem, DISPATCH_TIME_FOREVER)
|
28 |
+
#define sem_timedwait(psem, val) dispatch_semaphore_wait(*psem, dispatch_walltime(val, 0))
|
29 |
+
#define sem_destroy(psem) dispatch_release(*psem)
|
30 |
+
|
31 |
+
static inline int compat_sem_init(dispatch_semaphore_t *psem,
|
32 |
+
int unused, int val)
|
33 |
+
{
|
34 |
+
int ret = !!(*psem = dispatch_semaphore_create(val)) - 1;
|
35 |
+
if (ret < 0)
|
36 |
+
errno = ENOMEM;
|
37 |
+
return ret;
|
38 |
+
}
|
39 |
+
|
40 |
+
#define sem_init compat_sem_init
|
41 |
+
|
42 |
+
#endif /* COMPAT_DISPATCH_SEMAPHORE_SEMAPHORE_H */
|
bin/ffmpeg/compat/djgpp/math.c
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#include <math.h>
|
20 |
+
|
21 |
+
#define FUN(name, type, op) \
|
22 |
+
type name(type x, type y) \
|
23 |
+
{ \
|
24 |
+
if (fpclassify(x) == FP_NAN) return y; \
|
25 |
+
if (fpclassify(y) == FP_NAN) return x; \
|
26 |
+
return x op y ? x : y; \
|
27 |
+
}
|
28 |
+
|
29 |
+
FUN(fmin, double, <)
|
30 |
+
FUN(fmax, double, >)
|
31 |
+
FUN(fminf, float, <)
|
32 |
+
FUN(fmaxf, float, >)
|
33 |
+
|
34 |
+
long double fmodl(long double x, long double y)
|
35 |
+
{
|
36 |
+
return fmod(x, y);
|
37 |
+
}
|
38 |
+
|
39 |
+
long double scalbnl(long double x, int exp)
|
40 |
+
{
|
41 |
+
return scalbn(x, exp);
|
42 |
+
}
|
43 |
+
|
44 |
+
long double copysignl(long double x, long double y)
|
45 |
+
{
|
46 |
+
return copysign(x, y);
|
47 |
+
}
|
bin/ffmpeg/compat/djgpp/math.h
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
double fmin(double, double);
|
20 |
+
double fmax(double, double);
|
21 |
+
float fminf(float, float);
|
22 |
+
float fmaxf(float, float);
|
23 |
+
long double fmodl(long double, long double);
|
24 |
+
long double scalbnl(long double, int);
|
25 |
+
long double copysignl(long double, long double);
|
bin/ffmpeg/compat/float/float.h
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Work around broken floating point limits on some systems.
|
3 |
+
*
|
4 |
+
* This file is part of FFmpeg.
|
5 |
+
*
|
6 |
+
* FFmpeg is free software; you can redistribute it and/or
|
7 |
+
* modify it under the terms of the GNU Lesser General Public
|
8 |
+
* License as published by the Free Software Foundation; either
|
9 |
+
* version 2.1 of the License, or (at your option) any later version.
|
10 |
+
*
|
11 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
12 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 |
+
* Lesser General Public License for more details.
|
15 |
+
*
|
16 |
+
* You should have received a copy of the GNU Lesser General Public
|
17 |
+
* License along with FFmpeg; if not, write to the Free Software
|
18 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19 |
+
*/
|
20 |
+
|
21 |
+
#include_next <float.h>
|
22 |
+
|
23 |
+
#ifdef FLT_MAX
|
24 |
+
#undef FLT_MAX
|
25 |
+
#define FLT_MAX 3.40282346638528859812e+38F
|
26 |
+
|
27 |
+
#undef FLT_MIN
|
28 |
+
#define FLT_MIN 1.17549435082228750797e-38F
|
29 |
+
|
30 |
+
#undef DBL_MAX
|
31 |
+
#define DBL_MAX ((double)1.79769313486231570815e+308L)
|
32 |
+
|
33 |
+
#undef DBL_MIN
|
34 |
+
#define DBL_MIN ((double)2.22507385850720138309e-308L)
|
35 |
+
#endif
|
bin/ffmpeg/compat/float/limits.h
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Work around broken floating point limits on some systems.
|
3 |
+
*
|
4 |
+
* This file is part of FFmpeg.
|
5 |
+
*
|
6 |
+
* FFmpeg is free software; you can redistribute it and/or
|
7 |
+
* modify it under the terms of the GNU Lesser General Public
|
8 |
+
* License as published by the Free Software Foundation; either
|
9 |
+
* version 2.1 of the License, or (at your option) any later version.
|
10 |
+
*
|
11 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
12 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 |
+
* Lesser General Public License for more details.
|
15 |
+
*
|
16 |
+
* You should have received a copy of the GNU Lesser General Public
|
17 |
+
* License along with FFmpeg; if not, write to the Free Software
|
18 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19 |
+
*/
|
20 |
+
|
21 |
+
#include_next <limits.h>
|
22 |
+
#include <float.h>
|
bin/ffmpeg/compat/getopt.c
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
/*
|
20 |
+
* This file was copied from the following newsgroup posting:
|
21 |
+
*
|
22 |
+
* Newsgroups: mod.std.unix
|
23 |
+
* Subject: public domain AT&T getopt source
|
24 |
+
* Date: 3 Nov 85 19:34:15 GMT
|
25 |
+
*
|
26 |
+
* Here's something you've all been waiting for: the AT&T public domain
|
27 |
+
* source for getopt(3). It is the code which was given out at the 1985
|
28 |
+
* UNIFORUM conference in Dallas. I obtained it by electronic mail
|
29 |
+
* directly from AT&T. The people there assure me that it is indeed
|
30 |
+
* in the public domain.
|
31 |
+
*/
|
32 |
+
|
33 |
+
#include <stdio.h>
|
34 |
+
#include <string.h>
|
35 |
+
|
36 |
+
static int opterr = 1;
|
37 |
+
static int optind = 1;
|
38 |
+
static int optopt;
|
39 |
+
static char *optarg;
|
40 |
+
|
41 |
+
static int getopt(int argc, char *argv[], char *opts)
|
42 |
+
{
|
43 |
+
static int sp = 1;
|
44 |
+
int c;
|
45 |
+
char *cp;
|
46 |
+
|
47 |
+
if (sp == 1) {
|
48 |
+
if (optind >= argc ||
|
49 |
+
argv[optind][0] != '-' || argv[optind][1] == '\0')
|
50 |
+
return EOF;
|
51 |
+
else if (!strcmp(argv[optind], "--")) {
|
52 |
+
optind++;
|
53 |
+
return EOF;
|
54 |
+
}
|
55 |
+
}
|
56 |
+
optopt = c = argv[optind][sp];
|
57 |
+
if (c == ':' || !(cp = strchr(opts, c))) {
|
58 |
+
fprintf(stderr, ": illegal option -- %c\n", c);
|
59 |
+
if (argv[optind][++sp] == '\0') {
|
60 |
+
optind++;
|
61 |
+
sp = 1;
|
62 |
+
}
|
63 |
+
return '?';
|
64 |
+
}
|
65 |
+
if (*++cp == ':') {
|
66 |
+
if (argv[optind][sp+1] != '\0')
|
67 |
+
optarg = &argv[optind++][sp+1];
|
68 |
+
else if(++optind >= argc) {
|
69 |
+
fprintf(stderr, ": option requires an argument -- %c\n", c);
|
70 |
+
sp = 1;
|
71 |
+
return '?';
|
72 |
+
} else
|
73 |
+
optarg = argv[optind++];
|
74 |
+
sp = 1;
|
75 |
+
} else {
|
76 |
+
if (argv[optind][++sp] == '\0') {
|
77 |
+
sp = 1;
|
78 |
+
optind++;
|
79 |
+
}
|
80 |
+
optarg = NULL;
|
81 |
+
}
|
82 |
+
|
83 |
+
return c;
|
84 |
+
}
|
bin/ffmpeg/compat/msvcrt/snprintf.c
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* C99-compatible snprintf() and vsnprintf() implementations
|
3 |
+
* Copyright (c) 2012 Ronald S. Bultje <[email protected]>
|
4 |
+
*
|
5 |
+
* This file is part of FFmpeg.
|
6 |
+
*
|
7 |
+
* FFmpeg is free software; you can redistribute it and/or
|
8 |
+
* modify it under the terms of the GNU Lesser General Public
|
9 |
+
* License as published by the Free Software Foundation; either
|
10 |
+
* version 2.1 of the License, or (at your option) any later version.
|
11 |
+
*
|
12 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
+
* Lesser General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU Lesser General Public
|
18 |
+
* License along with FFmpeg; if not, write to the Free Software
|
19 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
#include <stdio.h>
|
23 |
+
#include <stdarg.h>
|
24 |
+
#include <limits.h>
|
25 |
+
#include <string.h>
|
26 |
+
|
27 |
+
#include "compat/va_copy.h"
|
28 |
+
#include "libavutil/error.h"
|
29 |
+
|
30 |
+
#if defined(__MINGW32__)
|
31 |
+
#define EOVERFLOW EFBIG
|
32 |
+
#endif
|
33 |
+
|
34 |
+
int avpriv_snprintf(char *s, size_t n, const char *fmt, ...)
|
35 |
+
{
|
36 |
+
va_list ap;
|
37 |
+
int ret;
|
38 |
+
|
39 |
+
va_start(ap, fmt);
|
40 |
+
ret = avpriv_vsnprintf(s, n, fmt, ap);
|
41 |
+
va_end(ap);
|
42 |
+
|
43 |
+
return ret;
|
44 |
+
}
|
45 |
+
|
46 |
+
int avpriv_vsnprintf(char *s, size_t n, const char *fmt,
|
47 |
+
va_list ap)
|
48 |
+
{
|
49 |
+
int ret;
|
50 |
+
va_list ap_copy;
|
51 |
+
|
52 |
+
if (n == 0)
|
53 |
+
return _vscprintf(fmt, ap);
|
54 |
+
else if (n > INT_MAX)
|
55 |
+
return AVERROR(EOVERFLOW);
|
56 |
+
|
57 |
+
/* we use n - 1 here because if the buffer is not big enough, the MS
|
58 |
+
* runtime libraries don't add a terminating zero at the end. MSDN
|
59 |
+
* recommends to provide _snprintf/_vsnprintf() a buffer size that
|
60 |
+
* is one less than the actual buffer, and zero it before calling
|
61 |
+
* _snprintf/_vsnprintf() to workaround this problem.
|
62 |
+
* See https://web.archive.org/web/20151214111935/http://msdn.microsoft.com/en-us/library/1kt27hek(v=vs.80).aspx */
|
63 |
+
memset(s, 0, n);
|
64 |
+
va_copy(ap_copy, ap);
|
65 |
+
ret = _vsnprintf(s, n - 1, fmt, ap_copy);
|
66 |
+
va_end(ap_copy);
|
67 |
+
if (ret == -1)
|
68 |
+
ret = _vscprintf(fmt, ap);
|
69 |
+
|
70 |
+
return ret;
|
71 |
+
}
|
bin/ffmpeg/compat/msvcrt/snprintf.h
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* C99-compatible snprintf() and vsnprintf() implementations
|
3 |
+
* Copyright (c) 2012 Ronald S. Bultje <[email protected]>
|
4 |
+
*
|
5 |
+
* This file is part of FFmpeg.
|
6 |
+
*
|
7 |
+
* FFmpeg is free software; you can redistribute it and/or
|
8 |
+
* modify it under the terms of the GNU Lesser General Public
|
9 |
+
* License as published by the Free Software Foundation; either
|
10 |
+
* version 2.1 of the License, or (at your option) any later version.
|
11 |
+
*
|
12 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
+
* Lesser General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU Lesser General Public
|
18 |
+
* License along with FFmpeg; if not, write to the Free Software
|
19 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
#ifndef COMPAT_MSVCRT_SNPRINTF_H
|
23 |
+
#define COMPAT_MSVCRT_SNPRINTF_H
|
24 |
+
|
25 |
+
#include <stdarg.h>
|
26 |
+
#include <stdio.h>
|
27 |
+
|
28 |
+
int avpriv_snprintf(char *s, size_t n, const char *fmt, ...);
|
29 |
+
int avpriv_vsnprintf(char *s, size_t n, const char *fmt, va_list ap);
|
30 |
+
|
31 |
+
#undef snprintf
|
32 |
+
#undef _snprintf
|
33 |
+
#undef vsnprintf
|
34 |
+
#define snprintf avpriv_snprintf
|
35 |
+
#define _snprintf avpriv_snprintf
|
36 |
+
#define vsnprintf avpriv_vsnprintf
|
37 |
+
|
38 |
+
#endif /* COMPAT_MSVCRT_SNPRINTF_H */
|
bin/ffmpeg/compat/os2threads.h
ADDED
@@ -0,0 +1,229 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Copyright (c) 2011-2017 KO Myung-Hun <[email protected]>
|
3 |
+
*
|
4 |
+
* This file is part of FFmpeg.
|
5 |
+
*
|
6 |
+
* FFmpeg is free software; you can redistribute it and/or
|
7 |
+
* modify it under the terms of the GNU Lesser General Public
|
8 |
+
* License as published by the Free Software Foundation; either
|
9 |
+
* version 2.1 of the License, or (at your option) any later version.
|
10 |
+
*
|
11 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
12 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
14 |
+
* Lesser General Public License for more details.
|
15 |
+
*
|
16 |
+
* You should have received a copy of the GNU Lesser General Public
|
17 |
+
* License along with FFmpeg; if not, write to the Free Software
|
18 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
19 |
+
*/
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @file
|
23 |
+
* os2threads to pthreads wrapper
|
24 |
+
*/
|
25 |
+
|
26 |
+
#ifndef COMPAT_OS2THREADS_H
|
27 |
+
#define COMPAT_OS2THREADS_H
|
28 |
+
|
29 |
+
#define INCL_DOS
|
30 |
+
#define INCL_DOSERRORS
|
31 |
+
#include <os2.h>
|
32 |
+
|
33 |
+
#undef __STRICT_ANSI__ /* for _beginthread() */
|
34 |
+
#include <stdlib.h>
|
35 |
+
#include <time.h>
|
36 |
+
|
37 |
+
#include <sys/builtin.h>
|
38 |
+
#include <sys/fmutex.h>
|
39 |
+
|
40 |
+
#include "libavutil/attributes.h"
|
41 |
+
#include "libavutil/common.h"
|
42 |
+
#include "libavutil/time.h"
|
43 |
+
|
44 |
+
typedef struct {
|
45 |
+
TID tid;
|
46 |
+
void *(*start_routine)(void *);
|
47 |
+
void *arg;
|
48 |
+
void *result;
|
49 |
+
} pthread_t;
|
50 |
+
|
51 |
+
typedef void pthread_attr_t;
|
52 |
+
|
53 |
+
typedef _fmutex pthread_mutex_t;
|
54 |
+
typedef void pthread_mutexattr_t;
|
55 |
+
|
56 |
+
#define PTHREAD_MUTEX_INITIALIZER _FMUTEX_INITIALIZER
|
57 |
+
|
58 |
+
typedef struct {
|
59 |
+
HEV event_sem;
|
60 |
+
HEV ack_sem;
|
61 |
+
volatile unsigned wait_count;
|
62 |
+
} pthread_cond_t;
|
63 |
+
|
64 |
+
typedef void pthread_condattr_t;
|
65 |
+
|
66 |
+
typedef struct {
|
67 |
+
volatile int done;
|
68 |
+
_fmutex mtx;
|
69 |
+
} pthread_once_t;
|
70 |
+
|
71 |
+
#define PTHREAD_ONCE_INIT {0, _FMUTEX_INITIALIZER}
|
72 |
+
|
73 |
+
static void thread_entry(void *arg)
|
74 |
+
{
|
75 |
+
pthread_t *thread = arg;
|
76 |
+
|
77 |
+
thread->result = thread->start_routine(thread->arg);
|
78 |
+
}
|
79 |
+
|
80 |
+
static av_always_inline int pthread_create(pthread_t *thread,
|
81 |
+
const pthread_attr_t *attr,
|
82 |
+
void *(*start_routine)(void*),
|
83 |
+
void *arg)
|
84 |
+
{
|
85 |
+
thread->start_routine = start_routine;
|
86 |
+
thread->arg = arg;
|
87 |
+
thread->result = NULL;
|
88 |
+
|
89 |
+
thread->tid = _beginthread(thread_entry, NULL, 1024 * 1024, thread);
|
90 |
+
|
91 |
+
return 0;
|
92 |
+
}
|
93 |
+
|
94 |
+
static av_always_inline int pthread_join(pthread_t thread, void **value_ptr)
|
95 |
+
{
|
96 |
+
DosWaitThread(&thread.tid, DCWW_WAIT);
|
97 |
+
|
98 |
+
if (value_ptr)
|
99 |
+
*value_ptr = thread.result;
|
100 |
+
|
101 |
+
return 0;
|
102 |
+
}
|
103 |
+
|
104 |
+
static av_always_inline int pthread_mutex_init(pthread_mutex_t *mutex,
|
105 |
+
const pthread_mutexattr_t *attr)
|
106 |
+
{
|
107 |
+
_fmutex_create(mutex, 0);
|
108 |
+
|
109 |
+
return 0;
|
110 |
+
}
|
111 |
+
|
112 |
+
static av_always_inline int pthread_mutex_destroy(pthread_mutex_t *mutex)
|
113 |
+
{
|
114 |
+
_fmutex_close(mutex);
|
115 |
+
|
116 |
+
return 0;
|
117 |
+
}
|
118 |
+
|
119 |
+
static av_always_inline int pthread_mutex_lock(pthread_mutex_t *mutex)
|
120 |
+
{
|
121 |
+
_fmutex_request(mutex, 0);
|
122 |
+
|
123 |
+
return 0;
|
124 |
+
}
|
125 |
+
|
126 |
+
static av_always_inline int pthread_mutex_unlock(pthread_mutex_t *mutex)
|
127 |
+
{
|
128 |
+
_fmutex_release(mutex);
|
129 |
+
|
130 |
+
return 0;
|
131 |
+
}
|
132 |
+
|
133 |
+
static av_always_inline int pthread_cond_init(pthread_cond_t *cond,
|
134 |
+
const pthread_condattr_t *attr)
|
135 |
+
{
|
136 |
+
DosCreateEventSem(NULL, &cond->event_sem, DCE_POSTONE, FALSE);
|
137 |
+
DosCreateEventSem(NULL, &cond->ack_sem, DCE_POSTONE, FALSE);
|
138 |
+
|
139 |
+
cond->wait_count = 0;
|
140 |
+
|
141 |
+
return 0;
|
142 |
+
}
|
143 |
+
|
144 |
+
static av_always_inline int pthread_cond_destroy(pthread_cond_t *cond)
|
145 |
+
{
|
146 |
+
DosCloseEventSem(cond->event_sem);
|
147 |
+
DosCloseEventSem(cond->ack_sem);
|
148 |
+
|
149 |
+
return 0;
|
150 |
+
}
|
151 |
+
|
152 |
+
static av_always_inline int pthread_cond_signal(pthread_cond_t *cond)
|
153 |
+
{
|
154 |
+
if (!__atomic_cmpxchg32(&cond->wait_count, 0, 0)) {
|
155 |
+
DosPostEventSem(cond->event_sem);
|
156 |
+
DosWaitEventSem(cond->ack_sem, SEM_INDEFINITE_WAIT);
|
157 |
+
}
|
158 |
+
|
159 |
+
return 0;
|
160 |
+
}
|
161 |
+
|
162 |
+
static av_always_inline int pthread_cond_broadcast(pthread_cond_t *cond)
|
163 |
+
{
|
164 |
+
while (!__atomic_cmpxchg32(&cond->wait_count, 0, 0))
|
165 |
+
pthread_cond_signal(cond);
|
166 |
+
|
167 |
+
return 0;
|
168 |
+
}
|
169 |
+
|
170 |
+
static av_always_inline int pthread_cond_timedwait(pthread_cond_t *cond,
|
171 |
+
pthread_mutex_t *mutex,
|
172 |
+
const struct timespec *abstime)
|
173 |
+
{
|
174 |
+
int64_t abs_milli = abstime->tv_sec * 1000LL + abstime->tv_nsec / 1000000;
|
175 |
+
ULONG t = av_clip64(abs_milli - av_gettime() / 1000, 0, ULONG_MAX);
|
176 |
+
|
177 |
+
__atomic_increment(&cond->wait_count);
|
178 |
+
|
179 |
+
pthread_mutex_unlock(mutex);
|
180 |
+
|
181 |
+
APIRET ret = DosWaitEventSem(cond->event_sem, t);
|
182 |
+
|
183 |
+
__atomic_decrement(&cond->wait_count);
|
184 |
+
|
185 |
+
DosPostEventSem(cond->ack_sem);
|
186 |
+
|
187 |
+
pthread_mutex_lock(mutex);
|
188 |
+
|
189 |
+
return (ret == ERROR_TIMEOUT) ? ETIMEDOUT : 0;
|
190 |
+
}
|
191 |
+
|
192 |
+
static av_always_inline int pthread_cond_wait(pthread_cond_t *cond,
|
193 |
+
pthread_mutex_t *mutex)
|
194 |
+
{
|
195 |
+
__atomic_increment(&cond->wait_count);
|
196 |
+
|
197 |
+
pthread_mutex_unlock(mutex);
|
198 |
+
|
199 |
+
DosWaitEventSem(cond->event_sem, SEM_INDEFINITE_WAIT);
|
200 |
+
|
201 |
+
__atomic_decrement(&cond->wait_count);
|
202 |
+
|
203 |
+
DosPostEventSem(cond->ack_sem);
|
204 |
+
|
205 |
+
pthread_mutex_lock(mutex);
|
206 |
+
|
207 |
+
return 0;
|
208 |
+
}
|
209 |
+
|
210 |
+
static av_always_inline int pthread_once(pthread_once_t *once_control,
|
211 |
+
void (*init_routine)(void))
|
212 |
+
{
|
213 |
+
if (!once_control->done)
|
214 |
+
{
|
215 |
+
_fmutex_request(&once_control->mtx, 0);
|
216 |
+
|
217 |
+
if (!once_control->done)
|
218 |
+
{
|
219 |
+
init_routine();
|
220 |
+
|
221 |
+
once_control->done = 1;
|
222 |
+
}
|
223 |
+
|
224 |
+
_fmutex_release(&once_control->mtx);
|
225 |
+
}
|
226 |
+
|
227 |
+
return 0;
|
228 |
+
}
|
229 |
+
#endif /* COMPAT_OS2THREADS_H */
|
bin/ffmpeg/compat/solaris/make_sunver.pl
ADDED
@@ -0,0 +1,352 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/usr/bin/env perl
|
2 |
+
|
3 |
+
# make_sunver.pl
|
4 |
+
#
|
5 |
+
# Copyright (C) 2010, 2011, 2012, 2013
|
6 |
+
# Free Software Foundation, Inc.
|
7 |
+
#
|
8 |
+
# This file is free software; you can redistribute it and/or modify it
|
9 |
+
# under the terms of the GNU General Public License as published by
|
10 |
+
# the Free Software Foundation; either version 3 of the License, or
|
11 |
+
# (at your option) any later version.
|
12 |
+
#
|
13 |
+
# This program is distributed in the hope that it will be useful, but
|
14 |
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16 |
+
# General Public License for more details.
|
17 |
+
#
|
18 |
+
# You should have received a copy of the GNU General Public License
|
19 |
+
# along with this program; see the file COPYING.GPLv3. If not see
|
20 |
+
# <http://www.gnu.org/licenses/>.
|
21 |
+
|
22 |
+
# This script takes at least two arguments, a GNU style version script and
|
23 |
+
# a list of object and archive files, and generates a corresponding Sun
|
24 |
+
# style version script as follows:
|
25 |
+
#
|
26 |
+
# Each glob pattern, C++ mangled pattern or literal in the input script is
|
27 |
+
# matched against all global symbols in the input objects, emitting those
|
28 |
+
# that matched (or nothing if no match was found).
|
29 |
+
# A comment with the original pattern and its type is left in the output
|
30 |
+
# file to make it easy to understand the matches.
|
31 |
+
#
|
32 |
+
# It uses elfdump when present (native), GNU readelf otherwise.
|
33 |
+
# It depends on the GNU version of c++filt, since it must understand the
|
34 |
+
# GNU mangling style.
|
35 |
+
|
36 |
+
use FileHandle;
|
37 |
+
use IPC::Open2;
|
38 |
+
|
39 |
+
# Enforce C locale.
|
40 |
+
$ENV{'LC_ALL'} = "C";
|
41 |
+
$ENV{'LANG'} = "C";
|
42 |
+
|
43 |
+
# Input version script, GNU style.
|
44 |
+
my $symvers = shift;
|
45 |
+
|
46 |
+
##########
|
47 |
+
# Get all the symbols from the library, match them, and add them to a hash.
|
48 |
+
|
49 |
+
my %sym_hash = ();
|
50 |
+
|
51 |
+
# List of objects and archives to process.
|
52 |
+
my @OBJECTS = ();
|
53 |
+
|
54 |
+
# List of shared objects to omit from processing.
|
55 |
+
my @SHAREDOBJS = ();
|
56 |
+
|
57 |
+
# Filter out those input archives that have corresponding shared objects to
|
58 |
+
# avoid adding all symbols matched in the archive to the output map.
|
59 |
+
foreach $file (@ARGV) {
|
60 |
+
if (($so = $file) =~ s/\.a$/.so/ && -e $so) {
|
61 |
+
printf STDERR "omitted $file -> $so\n";
|
62 |
+
push (@SHAREDOBJS, $so);
|
63 |
+
} else {
|
64 |
+
push (@OBJECTS, $file);
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
# We need to detect and ignore hidden symbols. Solaris nm can only detect
|
69 |
+
# this in the harder to parse default output format, and GNU nm not at all,
|
70 |
+
# so use elfdump -s in the native case and GNU readelf -s otherwise.
|
71 |
+
# GNU objdump -t cannot be used since it produces a variable number of
|
72 |
+
# columns.
|
73 |
+
|
74 |
+
# The path to elfdump.
|
75 |
+
my $elfdump = "/usr/ccs/bin/elfdump";
|
76 |
+
|
77 |
+
if (-f $elfdump) {
|
78 |
+
open ELFDUMP,$elfdump.' -s '.(join ' ',@OBJECTS).'|' or die $!;
|
79 |
+
my $skip_arsym = 0;
|
80 |
+
|
81 |
+
while (<ELFDUMP>) {
|
82 |
+
chomp;
|
83 |
+
|
84 |
+
# Ignore empty lines.
|
85 |
+
if (/^$/) {
|
86 |
+
# End of archive symbol table, stop skipping.
|
87 |
+
$skip_arsym = 0 if $skip_arsym;
|
88 |
+
next;
|
89 |
+
}
|
90 |
+
|
91 |
+
# Keep skipping until end of archive symbol table.
|
92 |
+
next if ($skip_arsym);
|
93 |
+
|
94 |
+
# Ignore object name header for individual objects and archives.
|
95 |
+
next if (/:$/);
|
96 |
+
|
97 |
+
# Ignore table header lines.
|
98 |
+
next if (/^Symbol Table Section:/);
|
99 |
+
next if (/index.*value.*size/);
|
100 |
+
|
101 |
+
# Start of archive symbol table: start skipping.
|
102 |
+
if (/^Symbol Table: \(archive/) {
|
103 |
+
$skip_arsym = 1;
|
104 |
+
next;
|
105 |
+
}
|
106 |
+
|
107 |
+
# Split table.
|
108 |
+
(undef, undef, undef, undef, $bind, $oth, undef, $shndx, $name) = split;
|
109 |
+
|
110 |
+
# Error out for unknown input.
|
111 |
+
die "unknown input line:\n$_" unless defined($bind);
|
112 |
+
|
113 |
+
# Ignore local symbols.
|
114 |
+
next if ($bind eq "LOCL");
|
115 |
+
# Ignore hidden symbols.
|
116 |
+
next if ($oth eq "H");
|
117 |
+
# Ignore undefined symbols.
|
118 |
+
next if ($shndx eq "UNDEF");
|
119 |
+
# Error out for unhandled cases.
|
120 |
+
if ($bind !~ /^(GLOB|WEAK)/ or $oth ne "D") {
|
121 |
+
die "unhandled symbol:\n$_";
|
122 |
+
}
|
123 |
+
|
124 |
+
# Remember symbol.
|
125 |
+
$sym_hash{$name}++;
|
126 |
+
}
|
127 |
+
close ELFDUMP or die "$elfdump error";
|
128 |
+
} else {
|
129 |
+
open READELF, 'readelf -s -W '.(join ' ',@OBJECTS).'|' or die $!;
|
130 |
+
# Process each symbol.
|
131 |
+
while (<READELF>) {
|
132 |
+
chomp;
|
133 |
+
|
134 |
+
# Ignore empty lines.
|
135 |
+
next if (/^$/);
|
136 |
+
|
137 |
+
# Ignore object name header.
|
138 |
+
next if (/^File: .*$/);
|
139 |
+
|
140 |
+
# Ignore table header lines.
|
141 |
+
next if (/^Symbol table.*contains.*:/);
|
142 |
+
next if (/Num:.*Value.*Size/);
|
143 |
+
|
144 |
+
# Split table.
|
145 |
+
(undef, undef, undef, undef, $bind, $vis, $ndx, $name) = split;
|
146 |
+
|
147 |
+
# Error out for unknown input.
|
148 |
+
die "unknown input line:\n$_" unless defined($bind);
|
149 |
+
|
150 |
+
# Ignore local symbols.
|
151 |
+
next if ($bind eq "LOCAL");
|
152 |
+
# Ignore hidden symbols.
|
153 |
+
next if ($vis eq "HIDDEN");
|
154 |
+
# Ignore undefined symbols.
|
155 |
+
next if ($ndx eq "UND");
|
156 |
+
# Error out for unhandled cases.
|
157 |
+
if ($bind !~ /^(GLOBAL|WEAK)/ or $vis ne "DEFAULT") {
|
158 |
+
die "unhandled symbol:\n$_";
|
159 |
+
}
|
160 |
+
|
161 |
+
# Remember symbol.
|
162 |
+
$sym_hash{$name}++;
|
163 |
+
}
|
164 |
+
close READELF or die "readelf error";
|
165 |
+
}
|
166 |
+
|
167 |
+
##########
|
168 |
+
# The various types of glob patterns.
|
169 |
+
#
|
170 |
+
# A glob pattern that is to be applied to the demangled name: 'cxx'.
|
171 |
+
# A glob patterns that applies directly to the name in the .o files: 'glob'.
|
172 |
+
# This pattern is ignored; used for local variables (usually just '*'): 'ign'.
|
173 |
+
|
174 |
+
# The type of the current pattern.
|
175 |
+
my $glob = 'glob';
|
176 |
+
|
177 |
+
# We're currently inside `extern "C++"', which Sun ld doesn't understand.
|
178 |
+
my $in_extern = 0;
|
179 |
+
|
180 |
+
# The c++filt command to use. This *must* be GNU c++filt; the Sun Studio
|
181 |
+
# c++filt doesn't handle the GNU mangling style.
|
182 |
+
my $cxxfilt = $ENV{'CXXFILT'} || "c++filt";
|
183 |
+
|
184 |
+
# The current version name.
|
185 |
+
my $current_version = "";
|
186 |
+
|
187 |
+
# Was there any attempt to match a symbol to this version?
|
188 |
+
my $matches_attempted;
|
189 |
+
|
190 |
+
# The number of versions which matched this symbol.
|
191 |
+
my $matched_symbols;
|
192 |
+
|
193 |
+
open F,$symvers or die $!;
|
194 |
+
|
195 |
+
# Print information about generating this file
|
196 |
+
print "# This file was generated by make_sunver.pl. DO NOT EDIT!\n";
|
197 |
+
print "# It was generated by:\n";
|
198 |
+
printf "# %s %s %s\n", $0, $symvers, (join ' ',@ARGV);
|
199 |
+
printf "# Omitted archives with corresponding shared libraries: %s\n",
|
200 |
+
(join ' ', @SHAREDOBJS) if $#SHAREDOBJS >= 0;
|
201 |
+
print "#\n\n";
|
202 |
+
|
203 |
+
print "\$mapfile_version 2\n";
|
204 |
+
|
205 |
+
while (<F>) {
|
206 |
+
# Lines of the form '};'
|
207 |
+
if (/^([ \t]*)(\}[ \t]*;[ \t]*)$/) {
|
208 |
+
$glob = 'glob';
|
209 |
+
if ($in_extern) {
|
210 |
+
$in_extern--;
|
211 |
+
print "$1##$2\n";
|
212 |
+
} else {
|
213 |
+
print;
|
214 |
+
}
|
215 |
+
next;
|
216 |
+
}
|
217 |
+
|
218 |
+
# Lines of the form '} SOME_VERSION_NAME_1.0;'
|
219 |
+
if (/^[ \t]*\}[ \tA-Z0-9_.a-z]+;[ \t]*$/) {
|
220 |
+
$glob = 'glob';
|
221 |
+
# We tried to match symbols agains this version, but none matched.
|
222 |
+
# Emit dummy hidden symbol to avoid marking this version WEAK.
|
223 |
+
if ($matches_attempted && $matched_symbols == 0) {
|
224 |
+
print " hidden:\n";
|
225 |
+
print " .force_WEAK_off_$current_version = DATA S0x0 V0x0;\n";
|
226 |
+
}
|
227 |
+
print; next;
|
228 |
+
}
|
229 |
+
|
230 |
+
# Comment and blank lines
|
231 |
+
if (/^[ \t]*\#/) { print; next; }
|
232 |
+
if (/^[ \t]*$/) { print; next; }
|
233 |
+
|
234 |
+
# Lines of the form '{'
|
235 |
+
if (/^([ \t]*){$/) {
|
236 |
+
if ($in_extern) {
|
237 |
+
print "$1##{\n";
|
238 |
+
} else {
|
239 |
+
print;
|
240 |
+
}
|
241 |
+
next;
|
242 |
+
}
|
243 |
+
|
244 |
+
# Lines of the form 'SOME_VERSION_NAME_1.1 {'
|
245 |
+
if (/^([A-Z0-9_.]+)[ \t]+{$/) {
|
246 |
+
# Record version name.
|
247 |
+
$current_version = $1;
|
248 |
+
# Reset match attempts, #matched symbols for this version.
|
249 |
+
$matches_attempted = 0;
|
250 |
+
$matched_symbols = 0;
|
251 |
+
print "SYMBOL_VERSION $1 {\n";
|
252 |
+
next;
|
253 |
+
}
|
254 |
+
|
255 |
+
# Ignore 'global:'
|
256 |
+
if (/^[ \t]*global:$/) { print; next; }
|
257 |
+
|
258 |
+
# After 'local:', globs should be ignored, they won't be exported.
|
259 |
+
if (/^[ \t]*local:$/) {
|
260 |
+
$glob = 'ign';
|
261 |
+
print;
|
262 |
+
next;
|
263 |
+
}
|
264 |
+
|
265 |
+
# After 'extern "C++"', globs are C++ patterns
|
266 |
+
if (/^([ \t]*)(extern \"C\+\+\"[ \t]*)$/) {
|
267 |
+
$in_extern++;
|
268 |
+
$glob = 'cxx';
|
269 |
+
# Need to comment, Sun ld cannot handle this.
|
270 |
+
print "$1##$2\n"; next;
|
271 |
+
}
|
272 |
+
|
273 |
+
# Chomp newline now we're done with passing through the input file.
|
274 |
+
chomp;
|
275 |
+
|
276 |
+
# Catch globs. Note that '{}' is not allowed in globs by this script,
|
277 |
+
# so only '*' and '[]' are available.
|
278 |
+
if (/^([ \t]*)([^ \t;{}#]+);?[ \t]*$/) {
|
279 |
+
my $ws = $1;
|
280 |
+
my $ptn = $2;
|
281 |
+
# Turn the glob into a regex by replacing '*' with '.*', '?' with '.'.
|
282 |
+
# Keep $ptn so we can still print the original form.
|
283 |
+
($pattern = $ptn) =~ s/\*/\.\*/g;
|
284 |
+
$pattern =~ s/\?/\./g;
|
285 |
+
|
286 |
+
if ($glob eq 'ign') {
|
287 |
+
# We're in a local: * section; just continue.
|
288 |
+
print "$_\n";
|
289 |
+
next;
|
290 |
+
}
|
291 |
+
|
292 |
+
# Print the glob commented for human readers.
|
293 |
+
print "$ws##$ptn ($glob)\n";
|
294 |
+
# We tried to match a symbol to this version.
|
295 |
+
$matches_attempted++;
|
296 |
+
|
297 |
+
if ($glob eq 'glob') {
|
298 |
+
my %ptn_syms = ();
|
299 |
+
|
300 |
+
# Match ptn against symbols in %sym_hash.
|
301 |
+
foreach my $sym (keys %sym_hash) {
|
302 |
+
# Maybe it matches one of the patterns based on the symbol in
|
303 |
+
# the .o file.
|
304 |
+
$ptn_syms{$sym}++ if ($sym =~ /^$pattern$/);
|
305 |
+
}
|
306 |
+
|
307 |
+
foreach my $sym (sort keys(%ptn_syms)) {
|
308 |
+
$matched_symbols++;
|
309 |
+
print "$ws$sym;\n";
|
310 |
+
}
|
311 |
+
} elsif ($glob eq 'cxx') {
|
312 |
+
my %dem_syms = ();
|
313 |
+
|
314 |
+
# Verify that we're actually using GNU c++filt. Other versions
|
315 |
+
# most likely cannot handle GNU style symbol mangling.
|
316 |
+
my $cxxout = `$cxxfilt --version 2>&1`;
|
317 |
+
$cxxout =~ m/GNU/ or die "$0 requires GNU c++filt to function";
|
318 |
+
|
319 |
+
# Talk to c++filt through a pair of file descriptors.
|
320 |
+
# Need to start a fresh instance per pattern, otherwise the
|
321 |
+
# process grows to 500+ MB.
|
322 |
+
my $pid = open2(*FILTIN, *FILTOUT, $cxxfilt) or die $!;
|
323 |
+
|
324 |
+
# Match ptn against symbols in %sym_hash.
|
325 |
+
foreach my $sym (keys %sym_hash) {
|
326 |
+
# No? Well, maybe its demangled form matches one of those
|
327 |
+
# patterns.
|
328 |
+
printf FILTOUT "%s\n",$sym;
|
329 |
+
my $dem = <FILTIN>;
|
330 |
+
chomp $dem;
|
331 |
+
$dem_syms{$sym}++ if ($dem =~ /^$pattern$/);
|
332 |
+
}
|
333 |
+
|
334 |
+
close FILTOUT or die "c++filt error";
|
335 |
+
close FILTIN or die "c++filt error";
|
336 |
+
# Need to wait for the c++filt process to avoid lots of zombies.
|
337 |
+
waitpid $pid, 0;
|
338 |
+
|
339 |
+
foreach my $sym (sort keys(%dem_syms)) {
|
340 |
+
$matched_symbols++;
|
341 |
+
print "$ws$sym;\n";
|
342 |
+
}
|
343 |
+
} else {
|
344 |
+
# No? Well, then ignore it.
|
345 |
+
}
|
346 |
+
next;
|
347 |
+
}
|
348 |
+
# Important sanity check. This script can't handle lots of formats
|
349 |
+
# that GNU ld can, so be sure to error out if one is seen!
|
350 |
+
die "strange line `$_'";
|
351 |
+
}
|
352 |
+
close F;
|
bin/ffmpeg/compat/strtod.c
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* C99-compatible strtod() implementation
|
3 |
+
* Copyright (c) 2012 Ronald S. Bultje <[email protected]>
|
4 |
+
*
|
5 |
+
* This file is part of FFmpeg.
|
6 |
+
*
|
7 |
+
* FFmpeg is free software; you can redistribute it and/or
|
8 |
+
* modify it under the terms of the GNU Lesser General Public
|
9 |
+
* License as published by the Free Software Foundation; either
|
10 |
+
* version 2.1 of the License, or (at your option) any later version.
|
11 |
+
*
|
12 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
+
* Lesser General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU Lesser General Public
|
18 |
+
* License along with FFmpeg; if not, write to the Free Software
|
19 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
#include <limits.h>
|
23 |
+
#include <stdlib.h>
|
24 |
+
|
25 |
+
#include "libavutil/avstring.h"
|
26 |
+
#include "libavutil/mathematics.h"
|
27 |
+
|
28 |
+
static const char *check_nan_suffix(const char *s)
|
29 |
+
{
|
30 |
+
const char *start = s;
|
31 |
+
|
32 |
+
if (*s++ != '(')
|
33 |
+
return start;
|
34 |
+
|
35 |
+
while ((*s >= 'a' && *s <= 'z') || (*s >= 'A' && *s <= 'Z') ||
|
36 |
+
(*s >= '0' && *s <= '9') || *s == '_')
|
37 |
+
s++;
|
38 |
+
|
39 |
+
return *s == ')' ? s + 1 : start;
|
40 |
+
}
|
41 |
+
|
42 |
+
#undef strtod
|
43 |
+
double strtod(const char *, char **);
|
44 |
+
|
45 |
+
double avpriv_strtod(const char *nptr, char **endptr)
|
46 |
+
{
|
47 |
+
const char *end;
|
48 |
+
double res;
|
49 |
+
|
50 |
+
/* Skip leading spaces */
|
51 |
+
while (av_isspace(*nptr))
|
52 |
+
nptr++;
|
53 |
+
|
54 |
+
if (!av_strncasecmp(nptr, "infinity", 8)) {
|
55 |
+
end = nptr + 8;
|
56 |
+
res = INFINITY;
|
57 |
+
} else if (!av_strncasecmp(nptr, "inf", 3)) {
|
58 |
+
end = nptr + 3;
|
59 |
+
res = INFINITY;
|
60 |
+
} else if (!av_strncasecmp(nptr, "+infinity", 9)) {
|
61 |
+
end = nptr + 9;
|
62 |
+
res = INFINITY;
|
63 |
+
} else if (!av_strncasecmp(nptr, "+inf", 4)) {
|
64 |
+
end = nptr + 4;
|
65 |
+
res = INFINITY;
|
66 |
+
} else if (!av_strncasecmp(nptr, "-infinity", 9)) {
|
67 |
+
end = nptr + 9;
|
68 |
+
res = -INFINITY;
|
69 |
+
} else if (!av_strncasecmp(nptr, "-inf", 4)) {
|
70 |
+
end = nptr + 4;
|
71 |
+
res = -INFINITY;
|
72 |
+
} else if (!av_strncasecmp(nptr, "nan", 3)) {
|
73 |
+
end = check_nan_suffix(nptr + 3);
|
74 |
+
res = NAN;
|
75 |
+
} else if (!av_strncasecmp(nptr, "+nan", 4) ||
|
76 |
+
!av_strncasecmp(nptr, "-nan", 4)) {
|
77 |
+
end = check_nan_suffix(nptr + 4);
|
78 |
+
res = NAN;
|
79 |
+
} else if (!av_strncasecmp(nptr, "0x", 2) ||
|
80 |
+
!av_strncasecmp(nptr, "-0x", 3) ||
|
81 |
+
!av_strncasecmp(nptr, "+0x", 3)) {
|
82 |
+
/* FIXME this doesn't handle exponents, non-integers (float/double)
|
83 |
+
* and numbers too large for long long */
|
84 |
+
res = strtoll(nptr, (char **)&end, 16);
|
85 |
+
} else {
|
86 |
+
res = strtod(nptr, (char **)&end);
|
87 |
+
}
|
88 |
+
|
89 |
+
if (endptr)
|
90 |
+
*endptr = (char *)end;
|
91 |
+
|
92 |
+
return res;
|
93 |
+
}
|
bin/ffmpeg/compat/va_copy.h
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* MSVC Compatible va_copy macro
|
3 |
+
* Copyright (c) 2012 Derek Buitenhuis
|
4 |
+
*
|
5 |
+
* This file is part of FFmpeg.
|
6 |
+
*
|
7 |
+
* FFmpeg is free software; you can redistribute it and/or
|
8 |
+
* modify it under the terms of the GNU Lesser General Public
|
9 |
+
* License as published by the Free Software Foundation; either
|
10 |
+
* version 2.1 of the License, or (at your option) any later version.
|
11 |
+
*
|
12 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
+
* Lesser General Public License for more details.
|
16 |
+
*
|
17 |
+
* You should have received a copy of the GNU Lesser General Public
|
18 |
+
* License along with FFmpeg; if not, write to the Free Software
|
19 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
+
*/
|
21 |
+
|
22 |
+
#ifndef COMPAT_VA_COPY_H
|
23 |
+
#define COMPAT_VA_COPY_H
|
24 |
+
|
25 |
+
#include <stdarg.h>
|
26 |
+
|
27 |
+
#if !defined(va_copy) && defined(_MSC_VER)
|
28 |
+
#define va_copy(dst, src) ((dst) = (src))
|
29 |
+
#endif
|
30 |
+
#if !defined(va_copy) && defined(__GNUC__) && __GNUC__ < 3
|
31 |
+
#define va_copy(dst, src) __va_copy(dst, src)
|
32 |
+
#endif
|
33 |
+
|
34 |
+
#endif /* COMPAT_VA_COPY_H */
|
bin/ffmpeg/compat/w32dlfcn.h
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* This file is part of FFmpeg.
|
3 |
+
*
|
4 |
+
* FFmpeg is free software; you can redistribute it and/or
|
5 |
+
* modify it under the terms of the GNU Lesser General Public
|
6 |
+
* License as published by the Free Software Foundation; either
|
7 |
+
* version 2.1 of the License, or (at your option) any later version.
|
8 |
+
*
|
9 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12 |
+
* Lesser General Public License for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the GNU Lesser General Public
|
15 |
+
* License along with FFmpeg; if not, write to the Free Software
|
16 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
17 |
+
*/
|
18 |
+
|
19 |
+
#ifndef COMPAT_W32DLFCN_H
|
20 |
+
#define COMPAT_W32DLFCN_H
|
21 |
+
|
22 |
+
#ifdef _WIN32
|
23 |
+
#include <stdint.h>
|
24 |
+
|
25 |
+
#include <windows.h>
|
26 |
+
|
27 |
+
#include "config.h"
|
28 |
+
#include "libavutil/macros.h"
|
29 |
+
#include "libavutil/wchar_filename.h"
|
30 |
+
|
31 |
+
static inline wchar_t *get_module_filename(HMODULE module)
|
32 |
+
{
|
33 |
+
wchar_t *path = NULL, *new_path;
|
34 |
+
DWORD path_size = 0, path_len;
|
35 |
+
|
36 |
+
do {
|
37 |
+
path_size = path_size ? FFMIN(2 * path_size, INT16_MAX + 1) : MAX_PATH;
|
38 |
+
new_path = av_realloc_array(path, path_size, sizeof *path);
|
39 |
+
if (!new_path) {
|
40 |
+
av_free(path);
|
41 |
+
return NULL;
|
42 |
+
}
|
43 |
+
path = new_path;
|
44 |
+
// Returns path_size in case of insufficient buffer.
|
45 |
+
// Whether the error is set or not and whether the output
|
46 |
+
// is null-terminated or not depends on the version of Windows.
|
47 |
+
path_len = GetModuleFileNameW(module, path, path_size);
|
48 |
+
} while (path_len && path_size <= INT16_MAX && path_size <= path_len);
|
49 |
+
|
50 |
+
if (!path_len) {
|
51 |
+
av_free(path);
|
52 |
+
return NULL;
|
53 |
+
}
|
54 |
+
return path;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Safe function used to open dynamic libs. This attempts to improve program security
|
59 |
+
* by removing the current directory from the dll search path. Only dll's found in the
|
60 |
+
* executable or system directory are allowed to be loaded.
|
61 |
+
* @param name The dynamic lib name.
|
62 |
+
* @return A handle to the opened lib.
|
63 |
+
*/
|
64 |
+
static inline HMODULE win32_dlopen(const char *name)
|
65 |
+
{
|
66 |
+
wchar_t *name_w;
|
67 |
+
HMODULE module = NULL;
|
68 |
+
if (utf8towchar(name, &name_w))
|
69 |
+
name_w = NULL;
|
70 |
+
#if _WIN32_WINNT < 0x0602
|
71 |
+
// On Win7 and earlier we check if KB2533623 is available
|
72 |
+
if (!GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "SetDefaultDllDirectories")) {
|
73 |
+
wchar_t *path = NULL, *new_path;
|
74 |
+
DWORD pathlen, pathsize, namelen;
|
75 |
+
if (!name_w)
|
76 |
+
goto exit;
|
77 |
+
namelen = wcslen(name_w);
|
78 |
+
// Try local directory first
|
79 |
+
path = get_module_filename(NULL);
|
80 |
+
if (!path)
|
81 |
+
goto exit;
|
82 |
+
new_path = wcsrchr(path, '\\');
|
83 |
+
if (!new_path)
|
84 |
+
goto exit;
|
85 |
+
pathlen = new_path - path;
|
86 |
+
pathsize = pathlen + namelen + 2;
|
87 |
+
new_path = av_realloc_array(path, pathsize, sizeof *path);
|
88 |
+
if (!new_path)
|
89 |
+
goto exit;
|
90 |
+
path = new_path;
|
91 |
+
wcscpy(path + pathlen + 1, name_w);
|
92 |
+
module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
|
93 |
+
if (module == NULL) {
|
94 |
+
// Next try System32 directory
|
95 |
+
pathlen = GetSystemDirectoryW(path, pathsize);
|
96 |
+
if (!pathlen)
|
97 |
+
goto exit;
|
98 |
+
// Buffer is not enough in two cases:
|
99 |
+
// 1. system directory + \ + module name
|
100 |
+
// 2. system directory even without the module name.
|
101 |
+
if (pathlen + namelen + 2 > pathsize) {
|
102 |
+
pathsize = pathlen + namelen + 2;
|
103 |
+
new_path = av_realloc_array(path, pathsize, sizeof *path);
|
104 |
+
if (!new_path)
|
105 |
+
goto exit;
|
106 |
+
path = new_path;
|
107 |
+
// Query again to handle the case #2.
|
108 |
+
pathlen = GetSystemDirectoryW(path, pathsize);
|
109 |
+
if (!pathlen)
|
110 |
+
goto exit;
|
111 |
+
}
|
112 |
+
path[pathlen] = L'\\';
|
113 |
+
wcscpy(path + pathlen + 1, name_w);
|
114 |
+
module = LoadLibraryExW(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
|
115 |
+
}
|
116 |
+
exit:
|
117 |
+
av_free(path);
|
118 |
+
av_free(name_w);
|
119 |
+
return module;
|
120 |
+
}
|
121 |
+
#endif
|
122 |
+
#ifndef LOAD_LIBRARY_SEARCH_APPLICATION_DIR
|
123 |
+
# define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x00000200
|
124 |
+
#endif
|
125 |
+
#ifndef LOAD_LIBRARY_SEARCH_SYSTEM32
|
126 |
+
# define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800
|
127 |
+
#endif
|
128 |
+
#if HAVE_WINRT
|
129 |
+
if (!name_w)
|
130 |
+
return NULL;
|
131 |
+
module = LoadPackagedLibrary(name_w, 0);
|
132 |
+
#else
|
133 |
+
#define LOAD_FLAGS (LOAD_LIBRARY_SEARCH_APPLICATION_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32)
|
134 |
+
/* filename may be be in CP_ACP */
|
135 |
+
if (!name_w)
|
136 |
+
return LoadLibraryExA(name, NULL, LOAD_FLAGS);
|
137 |
+
module = LoadLibraryExW(name_w, NULL, LOAD_FLAGS);
|
138 |
+
#undef LOAD_FLAGS
|
139 |
+
#endif
|
140 |
+
av_free(name_w);
|
141 |
+
return module;
|
142 |
+
}
|
143 |
+
#define dlopen(name, flags) win32_dlopen(name)
|
144 |
+
#define dlclose FreeLibrary
|
145 |
+
#define dlsym GetProcAddress
|
146 |
+
#else
|
147 |
+
#include <dlfcn.h>
|
148 |
+
#endif
|
149 |
+
|
150 |
+
#endif /* COMPAT_W32DLFCN_H */
|
bin/ffmpeg/compat/w32pthreads.h
ADDED
@@ -0,0 +1,191 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* Copyright (C) 2010-2011 x264 project
|
3 |
+
*
|
4 |
+
* Authors: Steven Walters <[email protected]>
|
5 |
+
* Pegasys Inc. <http://www.pegasys-inc.com>
|
6 |
+
*
|
7 |
+
* This file is part of FFmpeg.
|
8 |
+
*
|
9 |
+
* FFmpeg is free software; you can redistribute it and/or
|
10 |
+
* modify it under the terms of the GNU Lesser General Public
|
11 |
+
* License as published by the Free Software Foundation; either
|
12 |
+
* version 2.1 of the License, or (at your option) any later version.
|
13 |
+
*
|
14 |
+
* FFmpeg is distributed in the hope that it will be useful,
|
15 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
17 |
+
* Lesser General Public License for more details.
|
18 |
+
*
|
19 |
+
* You should have received a copy of the GNU Lesser General Public
|
20 |
+
* License along with FFmpeg; if not, write to the Free Software
|
21 |
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
22 |
+
*/
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @file
|
26 |
+
* w32threads to pthreads wrapper
|
27 |
+
*/
|
28 |
+
|
29 |
+
#ifndef COMPAT_W32PTHREADS_H
|
30 |
+
#define COMPAT_W32PTHREADS_H
|
31 |
+
|
32 |
+
/* Build up a pthread-like API using underlying Windows API. Have only static
|
33 |
+
* methods so as to not conflict with a potentially linked in pthread-win32
|
34 |
+
* library.
|
35 |
+
* As most functions here are used without checking return values,
|
36 |
+
* only implement return values as necessary. */
|
37 |
+
|
38 |
+
#define WIN32_LEAN_AND_MEAN
|
39 |
+
#include <windows.h>
|
40 |
+
#include <process.h>
|
41 |
+
#include <time.h>
|
42 |
+
|
43 |
+
#include "libavutil/attributes.h"
|
44 |
+
#include "libavutil/common.h"
|
45 |
+
#include "libavutil/internal.h"
|
46 |
+
#include "libavutil/mem.h"
|
47 |
+
#include "libavutil/time.h"
|
48 |
+
|
49 |
+
typedef struct pthread_t {
|
50 |
+
void *handle;
|
51 |
+
void *(*func)(void* arg);
|
52 |
+
void *arg;
|
53 |
+
void *ret;
|
54 |
+
} pthread_t;
|
55 |
+
|
56 |
+
/* use light weight mutex/condition variable API for Windows Vista and later */
|
57 |
+
typedef SRWLOCK pthread_mutex_t;
|
58 |
+
typedef CONDITION_VARIABLE pthread_cond_t;
|
59 |
+
|
60 |
+
#define PTHREAD_MUTEX_INITIALIZER SRWLOCK_INIT
|
61 |
+
#define PTHREAD_COND_INITIALIZER CONDITION_VARIABLE_INIT
|
62 |
+
|
63 |
+
#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
|
64 |
+
#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
|
65 |
+
|
66 |
+
#define PTHREAD_CANCEL_ENABLE 1
|
67 |
+
#define PTHREAD_CANCEL_DISABLE 0
|
68 |
+
|
69 |
+
static av_unused unsigned __stdcall attribute_align_arg win32thread_worker(void *arg)
|
70 |
+
{
|
71 |
+
pthread_t *h = (pthread_t*)arg;
|
72 |
+
h->ret = h->func(h->arg);
|
73 |
+
return 0;
|
74 |
+
}
|
75 |
+
|
76 |
+
static av_unused int pthread_create(pthread_t *thread, const void *unused_attr,
|
77 |
+
void *(*start_routine)(void*), void *arg)
|
78 |
+
{
|
79 |
+
thread->func = start_routine;
|
80 |
+
thread->arg = arg;
|
81 |
+
#if HAVE_WINRT
|
82 |
+
thread->handle = (void*)CreateThread(NULL, 0, win32thread_worker, thread,
|
83 |
+
0, NULL);
|
84 |
+
#else
|
85 |
+
thread->handle = (void*)_beginthreadex(NULL, 0, win32thread_worker, thread,
|
86 |
+
0, NULL);
|
87 |
+
#endif
|
88 |
+
return !thread->handle;
|
89 |
+
}
|
90 |
+
|
91 |
+
static av_unused int pthread_join(pthread_t thread, void **value_ptr)
|
92 |
+
{
|
93 |
+
DWORD ret = WaitForSingleObject(thread.handle, INFINITE);
|
94 |
+
if (ret != WAIT_OBJECT_0) {
|
95 |
+
if (ret == WAIT_ABANDONED)
|
96 |
+
return EINVAL;
|
97 |
+
else
|
98 |
+
return EDEADLK;
|
99 |
+
}
|
100 |
+
if (value_ptr)
|
101 |
+
*value_ptr = thread.ret;
|
102 |
+
CloseHandle(thread.handle);
|
103 |
+
return 0;
|
104 |
+
}
|
105 |
+
|
106 |
+
static inline int pthread_mutex_init(pthread_mutex_t *m, void* attr)
|
107 |
+
{
|
108 |
+
InitializeSRWLock(m);
|
109 |
+
return 0;
|
110 |
+
}
|
111 |
+
static inline int pthread_mutex_destroy(pthread_mutex_t *m)
|
112 |
+
{
|
113 |
+
/* Unlocked SWR locks use no resources */
|
114 |
+
return 0;
|
115 |
+
}
|
116 |
+
static inline int pthread_mutex_lock(pthread_mutex_t *m)
|
117 |
+
{
|
118 |
+
AcquireSRWLockExclusive(m);
|
119 |
+
return 0;
|
120 |
+
}
|
121 |
+
static inline int pthread_mutex_unlock(pthread_mutex_t *m)
|
122 |
+
{
|
123 |
+
ReleaseSRWLockExclusive(m);
|
124 |
+
return 0;
|
125 |
+
}
|
126 |
+
|
127 |
+
typedef INIT_ONCE pthread_once_t;
|
128 |
+
#define PTHREAD_ONCE_INIT INIT_ONCE_STATIC_INIT
|
129 |
+
|
130 |
+
static av_unused int pthread_once(pthread_once_t *once_control, void (*init_routine)(void))
|
131 |
+
{
|
132 |
+
BOOL pending = FALSE;
|
133 |
+
InitOnceBeginInitialize(once_control, 0, &pending, NULL);
|
134 |
+
if (pending)
|
135 |
+
init_routine();
|
136 |
+
InitOnceComplete(once_control, 0, NULL);
|
137 |
+
return 0;
|
138 |
+
}
|
139 |
+
|
140 |
+
static inline int pthread_cond_init(pthread_cond_t *cond, const void *unused_attr)
|
141 |
+
{
|
142 |
+
InitializeConditionVariable(cond);
|
143 |
+
return 0;
|
144 |
+
}
|
145 |
+
|
146 |
+
/* native condition variables do not destroy */
|
147 |
+
static inline int pthread_cond_destroy(pthread_cond_t *cond)
|
148 |
+
{
|
149 |
+
return 0;
|
150 |
+
}
|
151 |
+
|
152 |
+
static inline int pthread_cond_broadcast(pthread_cond_t *cond)
|
153 |
+
{
|
154 |
+
WakeAllConditionVariable(cond);
|
155 |
+
return 0;
|
156 |
+
}
|
157 |
+
|
158 |
+
static inline int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
|
159 |
+
{
|
160 |
+
SleepConditionVariableSRW(cond, mutex, INFINITE, 0);
|
161 |
+
return 0;
|
162 |
+
}
|
163 |
+
|
164 |
+
static inline int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
165 |
+
const struct timespec *abstime)
|
166 |
+
{
|
167 |
+
int64_t abs_milli = abstime->tv_sec * 1000LL + abstime->tv_nsec / 1000000;
|
168 |
+
DWORD t = av_clip64(abs_milli - av_gettime() / 1000, 0, UINT32_MAX);
|
169 |
+
|
170 |
+
if (!SleepConditionVariableSRW(cond, mutex, t, 0)) {
|
171 |
+
DWORD err = GetLastError();
|
172 |
+
if (err == ERROR_TIMEOUT)
|
173 |
+
return ETIMEDOUT;
|
174 |
+
else
|
175 |
+
return EINVAL;
|
176 |
+
}
|
177 |
+
return 0;
|
178 |
+
}
|
179 |
+
|
180 |
+
static inline int pthread_cond_signal(pthread_cond_t *cond)
|
181 |
+
{
|
182 |
+
WakeConditionVariable(cond);
|
183 |
+
return 0;
|
184 |
+
}
|
185 |
+
|
186 |
+
static inline int pthread_setcancelstate(int state, int *oldstate)
|
187 |
+
{
|
188 |
+
return 0;
|
189 |
+
}
|
190 |
+
|
191 |
+
#endif /* COMPAT_W32PTHREADS_H */
|
bin/ffmpeg/compat/windows/makedef
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
|
3 |
+
# Copyright (c) 2013, Derek Buitenhuis
|
4 |
+
#
|
5 |
+
# Permission to use, copy, modify, and/or distribute this software for any
|
6 |
+
# purpose with or without fee is hereby granted, provided that the above
|
7 |
+
# copyright notice and this permission notice appear in all copies.
|
8 |
+
#
|
9 |
+
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
10 |
+
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
11 |
+
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
12 |
+
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
13 |
+
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
14 |
+
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
15 |
+
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
16 |
+
|
17 |
+
# mktemp isn't POSIX, so supply an implementation
|
18 |
+
mktemp() {
|
19 |
+
echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
|
20 |
+
}
|
21 |
+
|
22 |
+
if [ $# -lt 2 ]; then
|
23 |
+
echo "Usage: makedef <version_script> <objects>" >&2
|
24 |
+
exit 0
|
25 |
+
fi
|
26 |
+
|
27 |
+
vscript=$1
|
28 |
+
shift
|
29 |
+
|
30 |
+
if [ ! -f "$vscript" ]; then
|
31 |
+
echo "Version script does not exist" >&2
|
32 |
+
exit 1
|
33 |
+
fi
|
34 |
+
|
35 |
+
for object in "$@"; do
|
36 |
+
if [ ! -f "$object" ]; then
|
37 |
+
echo "Object does not exist: ${object}" >&2
|
38 |
+
exit 1
|
39 |
+
fi
|
40 |
+
done
|
41 |
+
|
42 |
+
# Create a lib temporarily to dump symbols from.
|
43 |
+
# It's just much easier to do it this way
|
44 |
+
libname=$(mktemp -u "library").lib
|
45 |
+
|
46 |
+
trap 'rm -f -- $libname' EXIT
|
47 |
+
|
48 |
+
if [ -n "$AR" ]; then
|
49 |
+
$AR rcs ${libname} $@ >/dev/null
|
50 |
+
else
|
51 |
+
lib.exe -out:${libname} $@ >/dev/null
|
52 |
+
fi
|
53 |
+
if [ $? != 0 ]; then
|
54 |
+
echo "Could not create temporary library." >&2
|
55 |
+
exit 1
|
56 |
+
fi
|
57 |
+
|
58 |
+
IFS='
|
59 |
+
'
|
60 |
+
|
61 |
+
prefix="$EXTERN_PREFIX"
|
62 |
+
|
63 |
+
started=0
|
64 |
+
regex="none"
|
65 |
+
|
66 |
+
for line in $(cat ${vscript} | tr '\t' ' '); do
|
67 |
+
# We only care about global symbols
|
68 |
+
echo "${line}" | grep -q '^ \+global:'
|
69 |
+
if [ $? = 0 ]; then
|
70 |
+
started=1
|
71 |
+
line=$(echo "${line}" | sed -e 's/^ \{1,\}global: *//')
|
72 |
+
else
|
73 |
+
echo "${line}" | grep -q '^ \+local:'
|
74 |
+
if [ $? = 0 ]; then
|
75 |
+
started=0
|
76 |
+
fi
|
77 |
+
fi
|
78 |
+
|
79 |
+
if [ ${started} = 0 ]; then
|
80 |
+
continue
|
81 |
+
fi
|
82 |
+
|
83 |
+
# Handle multiple symbols on one line
|
84 |
+
IFS=';'
|
85 |
+
|
86 |
+
# Work around stupid expansion to filenames
|
87 |
+
line=$(echo "${line}" | sed -e 's/\*/.\\+/g')
|
88 |
+
for exp in ${line}; do
|
89 |
+
# Remove leading and trailing whitespace
|
90 |
+
exp=$(echo "${exp}" | sed -e 's/^ *//' -e 's/ *$//')
|
91 |
+
|
92 |
+
if [ "${regex}" = "none" ]; then
|
93 |
+
regex="${exp}"
|
94 |
+
else
|
95 |
+
regex="${regex};${exp}"
|
96 |
+
fi
|
97 |
+
done
|
98 |
+
|
99 |
+
IFS='
|
100 |
+
'
|
101 |
+
done
|
102 |
+
|
103 |
+
if [ -n "$NM" ]; then
|
104 |
+
# Use eval, since NM="nm -g"
|
105 |
+
dump=$(eval "$NM --defined-only -g ${libname}" |
|
106 |
+
grep -v : |
|
107 |
+
grep -v ^$ |
|
108 |
+
cut -d' ' -f3 |
|
109 |
+
sed -e "s/^${prefix}//")
|
110 |
+
else
|
111 |
+
dump=$(dumpbin.exe -linkermember:1 ${libname} |
|
112 |
+
sed -e '/public symbols/,$!d' -e '/^ \{1,\}Summary/,$d' -e "s/ \{1,\}${prefix}/ /" -e 's/ \{1,\}/ /g' |
|
113 |
+
tail -n +2 |
|
114 |
+
cut -d' ' -f3)
|
115 |
+
fi
|
116 |
+
|
117 |
+
rm ${libname}
|
118 |
+
|
119 |
+
IFS=';'
|
120 |
+
list=""
|
121 |
+
for exp in ${regex}; do
|
122 |
+
list="${list}"'
|
123 |
+
'$(echo "${dump}" |
|
124 |
+
grep "^${exp}" |
|
125 |
+
sed -e 's/^/ /')
|
126 |
+
done
|
127 |
+
|
128 |
+
echo "EXPORTS"
|
129 |
+
echo "${list}" | sort | uniq | tail -n +2
|
bin/ffmpeg/compat/windows/mslink
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
|
3 |
+
LINK_EXE_PATH=$(dirname "$(command -v cl)")/link
|
4 |
+
if [ -x "$LINK_EXE_PATH" ]; then
|
5 |
+
"$LINK_EXE_PATH" $@
|
6 |
+
else
|
7 |
+
link.exe $@
|
8 |
+
fi
|
9 |
+
exit $?
|
bin/ffmpeg/compat/windows/mswindres
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/sh
|
2 |
+
|
3 |
+
if [ "$1" = "--version" ]; then
|
4 |
+
rc.exe -?
|
5 |
+
exit $?
|
6 |
+
fi
|
7 |
+
|
8 |
+
if [ $# -lt 2 ]; then
|
9 |
+
echo "Usage: mswindres [-I/include/path ...] [-DSOME_DEFINE ...] [-o output.o] input.rc [output.o]" >&2
|
10 |
+
exit 0
|
11 |
+
fi
|
12 |
+
|
13 |
+
EXTRA_OPTS="-nologo"
|
14 |
+
|
15 |
+
while [ $# -gt 2 ]; do
|
16 |
+
case $1 in
|
17 |
+
-D*) EXTRA_OPTS="$EXTRA_OPTS -d$(echo $1 | sed -e "s/^..//" -e "s/ /\\\\ /g")" ;;
|
18 |
+
-I*) EXTRA_OPTS="$EXTRA_OPTS -i$(echo $1 | sed -e "s/^..//" -e "s/ /\\\\ /g")" ;;
|
19 |
+
-o) OPT_OUT="$2"; shift ;;
|
20 |
+
esac
|
21 |
+
shift
|
22 |
+
done
|
23 |
+
|
24 |
+
IN="$1"
|
25 |
+
if [ -z "$OPT_OUT" ]; then
|
26 |
+
OUT="$2"
|
27 |
+
else
|
28 |
+
OUT="$OPT_OUT"
|
29 |
+
fi
|
30 |
+
|
31 |
+
eval set -- $EXTRA_OPTS
|
32 |
+
rc.exe "$@" -fo "$OUT" "$IN"
|
bin/ffmpeg/configure
ADDED
The diff for this file is too large to render.
See raw diff
|
|
bin/ffmpeg/doc/APIchanges
ADDED
The diff for this file is too large to render.
See raw diff
|
|
bin/ffmpeg/doc/Doxyfile
ADDED
The diff for this file is too large to render.
See raw diff
|
|
bin/ffmpeg/doc/Makefile
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
LIBRARIES-$(CONFIG_AVUTIL) += libavutil
|
2 |
+
LIBRARIES-$(CONFIG_SWSCALE) += libswscale
|
3 |
+
LIBRARIES-$(CONFIG_SWRESAMPLE) += libswresample
|
4 |
+
LIBRARIES-$(CONFIG_AVCODEC) += libavcodec
|
5 |
+
LIBRARIES-$(CONFIG_AVFORMAT) += libavformat
|
6 |
+
LIBRARIES-$(CONFIG_AVDEVICE) += libavdevice
|
7 |
+
LIBRARIES-$(CONFIG_AVFILTER) += libavfilter
|
8 |
+
|
9 |
+
COMPONENTS-$(CONFIG_AVUTIL) += ffmpeg-utils
|
10 |
+
COMPONENTS-$(CONFIG_SWSCALE) += ffmpeg-scaler
|
11 |
+
COMPONENTS-$(CONFIG_SWRESAMPLE) += ffmpeg-resampler
|
12 |
+
COMPONENTS-$(CONFIG_AVCODEC) += ffmpeg-codecs ffmpeg-bitstream-filters
|
13 |
+
COMPONENTS-$(CONFIG_AVFORMAT) += ffmpeg-formats ffmpeg-protocols
|
14 |
+
COMPONENTS-$(CONFIG_AVDEVICE) += ffmpeg-devices
|
15 |
+
COMPONENTS-$(CONFIG_AVFILTER) += ffmpeg-filters
|
16 |
+
|
17 |
+
MANPAGES1 = $(AVPROGS-yes:%=doc/%.1) $(AVPROGS-yes:%=doc/%-all.1) $(COMPONENTS-yes:%=doc/%.1)
|
18 |
+
MANPAGES3 = $(LIBRARIES-yes:%=doc/%.3)
|
19 |
+
MANPAGES = $(MANPAGES1) $(MANPAGES3)
|
20 |
+
PODPAGES = $(AVPROGS-yes:%=doc/%.pod) $(AVPROGS-yes:%=doc/%-all.pod) $(COMPONENTS-yes:%=doc/%.pod) $(LIBRARIES-yes:%=doc/%.pod)
|
21 |
+
HTMLPAGES = $(AVPROGS-yes:%=doc/%.html) $(AVPROGS-yes:%=doc/%-all.html) $(COMPONENTS-yes:%=doc/%.html) $(LIBRARIES-yes:%=doc/%.html) \
|
22 |
+
doc/developer.html \
|
23 |
+
doc/faq.html \
|
24 |
+
doc/fate.html \
|
25 |
+
doc/general.html \
|
26 |
+
doc/git-howto.html \
|
27 |
+
doc/mailing-list-faq.html \
|
28 |
+
doc/nut.html \
|
29 |
+
doc/platform.html \
|
30 |
+
$(SRC_PATH)/doc/bootstrap.min.css \
|
31 |
+
$(SRC_PATH)/doc/style.min.css \
|
32 |
+
$(SRC_PATH)/doc/default.css \
|
33 |
+
|
34 |
+
TXTPAGES = doc/fate.txt \
|
35 |
+
|
36 |
+
|
37 |
+
DOCS-$(CONFIG_HTMLPAGES) += $(HTMLPAGES)
|
38 |
+
DOCS-$(CONFIG_PODPAGES) += $(PODPAGES)
|
39 |
+
DOCS-$(CONFIG_MANPAGES) += $(MANPAGES)
|
40 |
+
DOCS-$(CONFIG_TXTPAGES) += $(TXTPAGES)
|
41 |
+
DOCS = $(DOCS-yes)
|
42 |
+
|
43 |
+
all-$(CONFIG_DOC): doc
|
44 |
+
|
45 |
+
doc: documentation
|
46 |
+
|
47 |
+
apidoc: doc/doxy/html
|
48 |
+
documentation: $(DOCS)
|
49 |
+
|
50 |
+
TEXIDEP = perl $(SRC_PATH)/doc/texidep.pl $(SRC_PATH) $< $@ >$(@:%=%.d)
|
51 |
+
|
52 |
+
doc/%.txt: TAG = TXT
|
53 |
+
doc/%.txt: doc/%.texi
|
54 |
+
$(Q)$(TEXIDEP)
|
55 |
+
$(M)makeinfo --force --no-headers -o $@ $< 2>/dev/null
|
56 |
+
|
57 |
+
GENTEXI = format codec
|
58 |
+
GENTEXI := $(GENTEXI:%=doc/avoptions_%.texi)
|
59 |
+
|
60 |
+
$(GENTEXI): TAG = GENTEXI
|
61 |
+
$(GENTEXI): doc/avoptions_%.texi: doc/print_options$(HOSTEXESUF)
|
62 |
+
$(M)doc/print_options $* > $@
|
63 |
+
|
64 |
+
doc/%.html: TAG = HTML
|
65 |
+
doc/%-all.html: TAG = HTML
|
66 |
+
|
67 |
+
ifdef HAVE_MAKEINFO_HTML
|
68 |
+
doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI)
|
69 |
+
$(Q)$(TEXIDEP)
|
70 |
+
$(M)makeinfo --html -I doc --no-split -D config-not-all --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $<
|
71 |
+
|
72 |
+
doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.pm $(GENTEXI)
|
73 |
+
$(Q)$(TEXIDEP)
|
74 |
+
$(M)makeinfo --html -I doc --no-split -D config-all --init-file=$(SRC_PATH)/doc/t2h.pm --output $@ $<
|
75 |
+
else
|
76 |
+
doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI)
|
77 |
+
$(Q)$(TEXIDEP)
|
78 |
+
$(M)texi2html -I doc -monolithic --D=config-not-all --init-file $(SRC_PATH)/doc/t2h.init --output $@ $<
|
79 |
+
|
80 |
+
doc/%-all.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI)
|
81 |
+
$(Q)$(TEXIDEP)
|
82 |
+
$(M)texi2html -I doc -monolithic --D=config-all --init-file $(SRC_PATH)/doc/t2h.init --output $@ $<
|
83 |
+
endif
|
84 |
+
|
85 |
+
doc/%.pod: TAG = POD
|
86 |
+
doc/%.pod: doc/%.texi $(SRC_PATH)/doc/texi2pod.pl $(GENTEXI)
|
87 |
+
$(Q)$(TEXIDEP)
|
88 |
+
$(M)perl $(SRC_PATH)/doc/texi2pod.pl -Dconfig-not-all=yes -Idoc $< $@
|
89 |
+
|
90 |
+
doc/%-all.pod: TAG = POD
|
91 |
+
doc/%-all.pod: doc/%.texi $(SRC_PATH)/doc/texi2pod.pl $(GENTEXI)
|
92 |
+
$(Q)$(TEXIDEP)
|
93 |
+
$(M)perl $(SRC_PATH)/doc/texi2pod.pl -Dconfig-all=yes -Idoc $< $@
|
94 |
+
|
95 |
+
doc/%.1 doc/%.3: TAG = MAN
|
96 |
+
doc/%.1: doc/%.pod $(GENTEXI)
|
97 |
+
$(M)pod2man --section=1 --center=" " --release=" " --date=" " $< > $@
|
98 |
+
doc/%.3: doc/%.pod $(GENTEXI)
|
99 |
+
$(M)pod2man --section=3 --center=" " --release=" " --date=" " $< > $@
|
100 |
+
|
101 |
+
$(DOCS) doc/doxy/html: | doc/
|
102 |
+
|
103 |
+
DOXY_INPUT = $(INSTHEADERS)
|
104 |
+
DOXY_INPUT_DEPS = $(addprefix $(SRC_PATH)/, $(DOXY_INPUT)) ffbuild/config.mak
|
105 |
+
|
106 |
+
doc/doxy/html: TAG = DOXY
|
107 |
+
doc/doxy/html: $(SRC_PATH)/doc/Doxyfile $(SRC_PATH)/doc/doxy-wrapper.sh $(DOXY_INPUT_DEPS)
|
108 |
+
$(M)$(SRC_PATH)/doc/doxy-wrapper.sh $$PWD/doc/doxy $(SRC_PATH) doc/Doxyfile $(DOXYGEN) $(DOXY_INPUT);
|
109 |
+
|
110 |
+
install-doc: install-html install-man
|
111 |
+
|
112 |
+
install-html:
|
113 |
+
|
114 |
+
install-man:
|
115 |
+
|
116 |
+
ifdef CONFIG_HTMLPAGES
|
117 |
+
install-progs-$(CONFIG_DOC): install-html
|
118 |
+
|
119 |
+
install-html: $(HTMLPAGES)
|
120 |
+
$(Q)mkdir -p "$(DOCDIR)"
|
121 |
+
$(INSTALL) -m 644 $(HTMLPAGES) "$(DOCDIR)"
|
122 |
+
endif
|
123 |
+
|
124 |
+
ifdef CONFIG_MANPAGES
|
125 |
+
install-progs-$(CONFIG_DOC): install-man
|
126 |
+
|
127 |
+
install-man: $(MANPAGES)
|
128 |
+
$(Q)mkdir -p "$(MANDIR)/man1"
|
129 |
+
$(INSTALL) -m 644 $(MANPAGES1) "$(MANDIR)/man1"
|
130 |
+
$(Q)mkdir -p "$(MANDIR)/man3"
|
131 |
+
$(INSTALL) -m 644 $(MANPAGES3) "$(MANDIR)/man3"
|
132 |
+
endif
|
133 |
+
|
134 |
+
uninstall: uninstall-doc
|
135 |
+
|
136 |
+
uninstall-doc: uninstall-html uninstall-man
|
137 |
+
|
138 |
+
uninstall-html:
|
139 |
+
$(RM) -r "$(DOCDIR)"
|
140 |
+
|
141 |
+
uninstall-man:
|
142 |
+
$(RM) $(addprefix "$(MANDIR)/man1/",$(AVPROGS-yes:%=%.1) $(AVPROGS-yes:%=%-all.1) $(COMPONENTS-yes:%=%.1))
|
143 |
+
$(RM) $(addprefix "$(MANDIR)/man3/",$(LIBRARIES-yes:%=%.3))
|
144 |
+
|
145 |
+
clean:: docclean
|
146 |
+
|
147 |
+
distclean:: docclean
|
148 |
+
$(RM) doc/config.texi
|
149 |
+
|
150 |
+
docclean::
|
151 |
+
$(RM) $(CLEANSUFFIXES:%=doc/%)
|
152 |
+
$(RM) $(TXTPAGES) doc/*.html doc/*.pod doc/*.1 doc/*.3 doc/avoptions_*.texi
|
153 |
+
$(RM) -r doc/doxy/html
|
154 |
+
|
155 |
+
-include $(wildcard $(DOCS:%=%.d))
|
156 |
+
|
157 |
+
.PHONY: apidoc doc documentation
|
bin/ffmpeg/doc/authors.texi
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@chapter Authors
|
2 |
+
|
3 |
+
The FFmpeg developers.
|
4 |
+
|
5 |
+
For details about the authorship, see the Git history of the project
|
6 |
+
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
7 |
+
@command{git log} in the FFmpeg source directory, or browsing the
|
8 |
+
online repository at @url{http://source.ffmpeg.org}.
|
9 |
+
|
10 |
+
Maintainers for the specific components are listed in the file
|
11 |
+
@file{MAINTAINERS} in the source code tree.
|
bin/ffmpeg/doc/bitstream_filters.texi
ADDED
@@ -0,0 +1,949 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@chapter Bitstream Filters
|
2 |
+
@c man begin BITSTREAM FILTERS
|
3 |
+
|
4 |
+
When you configure your FFmpeg build, all the supported bitstream
|
5 |
+
filters are enabled by default. You can list all available ones using
|
6 |
+
the configure option @code{--list-bsfs}.
|
7 |
+
|
8 |
+
You can disable all the bitstream filters using the configure option
|
9 |
+
@code{--disable-bsfs}, and selectively enable any bitstream filter using
|
10 |
+
the option @code{--enable-bsf=BSF}, or you can disable a particular
|
11 |
+
bitstream filter using the option @code{--disable-bsf=BSF}.
|
12 |
+
|
13 |
+
The option @code{-bsfs} of the ff* tools will display the list of
|
14 |
+
all the supported bitstream filters included in your build.
|
15 |
+
|
16 |
+
The ff* tools have a -bsf option applied per stream, taking a
|
17 |
+
comma-separated list of filters, whose parameters follow the filter
|
18 |
+
name after a '='.
|
19 |
+
|
20 |
+
@example
|
21 |
+
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
|
22 |
+
@end example
|
23 |
+
|
24 |
+
Below is a description of the currently available bitstream filters,
|
25 |
+
with their parameters, if any.
|
26 |
+
|
27 |
+
@section aac_adtstoasc
|
28 |
+
|
29 |
+
Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
|
30 |
+
bitstream.
|
31 |
+
|
32 |
+
This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
33 |
+
ADTS header and removes the ADTS header.
|
34 |
+
|
35 |
+
This filter is required for example when copying an AAC stream from a
|
36 |
+
raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
|
37 |
+
to MOV/MP4 files and related formats such as 3GP or M4A. Please note
|
38 |
+
that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
|
39 |
+
|
40 |
+
@section av1_metadata
|
41 |
+
|
42 |
+
Modify metadata embedded in an AV1 stream.
|
43 |
+
|
44 |
+
@table @option
|
45 |
+
@item td
|
46 |
+
Insert or remove temporal delimiter OBUs in all temporal units of the
|
47 |
+
stream.
|
48 |
+
|
49 |
+
@table @samp
|
50 |
+
@item insert
|
51 |
+
Insert a TD at the beginning of every TU which does not already have one.
|
52 |
+
@item remove
|
53 |
+
Remove the TD from the beginning of every TU which has one.
|
54 |
+
@end table
|
55 |
+
|
56 |
+
@item color_primaries
|
57 |
+
@item transfer_characteristics
|
58 |
+
@item matrix_coefficients
|
59 |
+
Set the color description fields in the stream (see AV1 section 6.4.2).
|
60 |
+
|
61 |
+
@item color_range
|
62 |
+
Set the color range in the stream (see AV1 section 6.4.2; note that
|
63 |
+
this cannot be set for streams using BT.709 primaries, sRGB transfer
|
64 |
+
characteristic and identity (RGB) matrix coefficients).
|
65 |
+
@table @samp
|
66 |
+
@item tv
|
67 |
+
Limited range.
|
68 |
+
@item pc
|
69 |
+
Full range.
|
70 |
+
@end table
|
71 |
+
|
72 |
+
@item chroma_sample_position
|
73 |
+
Set the chroma sample location in the stream (see AV1 section 6.4.2).
|
74 |
+
This can only be set for 4:2:0 streams.
|
75 |
+
|
76 |
+
@table @samp
|
77 |
+
@item vertical
|
78 |
+
Left position (matching the default in MPEG-2 and H.264).
|
79 |
+
@item colocated
|
80 |
+
Top-left position.
|
81 |
+
@end table
|
82 |
+
|
83 |
+
@item tick_rate
|
84 |
+
Set the tick rate (@emph{time_scale / num_units_in_display_tick}) in
|
85 |
+
the timing info in the sequence header.
|
86 |
+
@item num_ticks_per_picture
|
87 |
+
Set the number of ticks in each picture, to indicate that the stream
|
88 |
+
has a fixed framerate. Ignored if @option{tick_rate} is not also set.
|
89 |
+
|
90 |
+
@item delete_padding
|
91 |
+
Deletes Padding OBUs.
|
92 |
+
|
93 |
+
@end table
|
94 |
+
|
95 |
+
@section chomp
|
96 |
+
|
97 |
+
Remove zero padding at the end of a packet.
|
98 |
+
|
99 |
+
@section dca_core
|
100 |
+
|
101 |
+
Extract the core from a DCA/DTS stream, dropping extensions such as
|
102 |
+
DTS-HD.
|
103 |
+
|
104 |
+
@section dump_extra
|
105 |
+
|
106 |
+
Add extradata to the beginning of the filtered packets except when
|
107 |
+
said packets already exactly begin with the extradata that is intended
|
108 |
+
to be added.
|
109 |
+
|
110 |
+
@table @option
|
111 |
+
@item freq
|
112 |
+
The additional argument specifies which packets should be filtered.
|
113 |
+
It accepts the values:
|
114 |
+
@table @samp
|
115 |
+
@item k
|
116 |
+
@item keyframe
|
117 |
+
add extradata to all key packets
|
118 |
+
|
119 |
+
@item e
|
120 |
+
@item all
|
121 |
+
add extradata to all packets
|
122 |
+
@end table
|
123 |
+
@end table
|
124 |
+
|
125 |
+
If not specified it is assumed @samp{k}.
|
126 |
+
|
127 |
+
For example the following @command{ffmpeg} command forces a global
|
128 |
+
header (thus disabling individual packet headers) in the H.264 packets
|
129 |
+
generated by the @code{libx264} encoder, but corrects them by adding
|
130 |
+
the header stored in extradata to the key packets:
|
131 |
+
@example
|
132 |
+
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
133 |
+
@end example
|
134 |
+
|
135 |
+
@section dv_error_marker
|
136 |
+
|
137 |
+
Blocks in DV which are marked as damaged are replaced by blocks of the specified color.
|
138 |
+
|
139 |
+
@table @option
|
140 |
+
@item color
|
141 |
+
The color to replace damaged blocks by
|
142 |
+
@item sta
|
143 |
+
A 16 bit mask which specifies which of the 16 possible error status values are
|
144 |
+
to be replaced by colored blocks. 0xFFFE is the default which replaces all non 0
|
145 |
+
error status values.
|
146 |
+
@table @samp
|
147 |
+
@item ok
|
148 |
+
No error, no concealment
|
149 |
+
@item err
|
150 |
+
Error, No concealment
|
151 |
+
@item res
|
152 |
+
Reserved
|
153 |
+
@item notok
|
154 |
+
Error or concealment
|
155 |
+
@item notres
|
156 |
+
Not reserved
|
157 |
+
@item Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru
|
158 |
+
The specific error status code
|
159 |
+
@end table
|
160 |
+
see page 44-46 or section 5.5 of
|
161 |
+
@url{http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf}
|
162 |
+
|
163 |
+
@end table
|
164 |
+
|
165 |
+
@section eac3_core
|
166 |
+
|
167 |
+
Extract the core from a E-AC-3 stream, dropping extra channels.
|
168 |
+
|
169 |
+
@section extract_extradata
|
170 |
+
|
171 |
+
Extract the in-band extradata.
|
172 |
+
|
173 |
+
Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
|
174 |
+
or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
|
175 |
+
of the bitstream containing the coded frames) or "out of band" (e.g. on the
|
176 |
+
container level). This latter form is called "extradata" in FFmpeg terminology.
|
177 |
+
|
178 |
+
This bitstream filter detects the in-band headers and makes them available as
|
179 |
+
extradata.
|
180 |
+
|
181 |
+
@table @option
|
182 |
+
@item remove
|
183 |
+
When this option is enabled, the long-term headers are removed from the
|
184 |
+
bitstream after extraction.
|
185 |
+
@end table
|
186 |
+
|
187 |
+
@section filter_units
|
188 |
+
|
189 |
+
Remove units with types in or not in a given set from the stream.
|
190 |
+
|
191 |
+
@table @option
|
192 |
+
@item pass_types
|
193 |
+
List of unit types or ranges of unit types to pass through while removing
|
194 |
+
all others. This is specified as a '|'-separated list of unit type values
|
195 |
+
or ranges of values with '-'.
|
196 |
+
|
197 |
+
@item remove_types
|
198 |
+
Identical to @option{pass_types}, except the units in the given set
|
199 |
+
removed and all others passed through.
|
200 |
+
@end table
|
201 |
+
|
202 |
+
Extradata is unchanged by this transformation, but note that if the stream
|
203 |
+
contains inline parameter sets then the output may be unusable if they are
|
204 |
+
removed.
|
205 |
+
|
206 |
+
For example, to remove all non-VCL NAL units from an H.264 stream:
|
207 |
+
@example
|
208 |
+
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
|
209 |
+
@end example
|
210 |
+
|
211 |
+
To remove all AUDs, SEI and filler from an H.265 stream:
|
212 |
+
@example
|
213 |
+
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
|
214 |
+
@end example
|
215 |
+
|
216 |
+
@section hapqa_extract
|
217 |
+
|
218 |
+
Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
|
219 |
+
|
220 |
+
@table @option
|
221 |
+
@item texture
|
222 |
+
Specifies the texture to keep.
|
223 |
+
|
224 |
+
@table @option
|
225 |
+
@item color
|
226 |
+
@item alpha
|
227 |
+
@end table
|
228 |
+
|
229 |
+
@end table
|
230 |
+
|
231 |
+
Convert HAPQA to HAPQ
|
232 |
+
@example
|
233 |
+
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
|
234 |
+
@end example
|
235 |
+
|
236 |
+
Convert HAPQA to HAPAlphaOnly
|
237 |
+
@example
|
238 |
+
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
|
239 |
+
@end example
|
240 |
+
|
241 |
+
@section h264_metadata
|
242 |
+
|
243 |
+
Modify metadata embedded in an H.264 stream.
|
244 |
+
|
245 |
+
@table @option
|
246 |
+
@item aud
|
247 |
+
Insert or remove AUD NAL units in all access units of the stream.
|
248 |
+
|
249 |
+
@table @samp
|
250 |
+
@item pass
|
251 |
+
@item insert
|
252 |
+
@item remove
|
253 |
+
@end table
|
254 |
+
|
255 |
+
Default is pass.
|
256 |
+
|
257 |
+
@item sample_aspect_ratio
|
258 |
+
Set the sample aspect ratio of the stream in the VUI parameters.
|
259 |
+
See H.264 table E-1.
|
260 |
+
|
261 |
+
@item overscan_appropriate_flag
|
262 |
+
Set whether the stream is suitable for display using overscan
|
263 |
+
or not (see H.264 section E.2.1).
|
264 |
+
|
265 |
+
@item video_format
|
266 |
+
@item video_full_range_flag
|
267 |
+
Set the video format in the stream (see H.264 section E.2.1 and
|
268 |
+
table E-2).
|
269 |
+
|
270 |
+
@item colour_primaries
|
271 |
+
@item transfer_characteristics
|
272 |
+
@item matrix_coefficients
|
273 |
+
Set the colour description in the stream (see H.264 section E.2.1
|
274 |
+
and tables E-3, E-4 and E-5).
|
275 |
+
|
276 |
+
@item chroma_sample_loc_type
|
277 |
+
Set the chroma sample location in the stream (see H.264 section
|
278 |
+
E.2.1 and figure E-1).
|
279 |
+
|
280 |
+
@item tick_rate
|
281 |
+
Set the tick rate (time_scale / num_units_in_tick) in the VUI
|
282 |
+
parameters. This is the smallest time unit representable in the
|
283 |
+
stream, and in many cases represents the field rate of the stream
|
284 |
+
(double the frame rate).
|
285 |
+
@item fixed_frame_rate_flag
|
286 |
+
Set whether the stream has fixed framerate - typically this indicates
|
287 |
+
that the framerate is exactly half the tick rate, but the exact
|
288 |
+
meaning is dependent on interlacing and the picture structure (see
|
289 |
+
H.264 section E.2.1 and table E-6).
|
290 |
+
@item zero_new_constraint_set_flags
|
291 |
+
Zero constraint_set4_flag and constraint_set5_flag in the SPS. These
|
292 |
+
bits were reserved in a previous version of the H.264 spec, and thus
|
293 |
+
some hardware decoders require these to be zero. The result of zeroing
|
294 |
+
this is still a valid bitstream.
|
295 |
+
|
296 |
+
@item crop_left
|
297 |
+
@item crop_right
|
298 |
+
@item crop_top
|
299 |
+
@item crop_bottom
|
300 |
+
Set the frame cropping offsets in the SPS. These values will replace
|
301 |
+
the current ones if the stream is already cropped.
|
302 |
+
|
303 |
+
These fields are set in pixels. Note that some sizes may not be
|
304 |
+
representable if the chroma is subsampled or the stream is interlaced
|
305 |
+
(see H.264 section 7.4.2.1.1).
|
306 |
+
|
307 |
+
@item sei_user_data
|
308 |
+
Insert a string as SEI unregistered user data. The argument must
|
309 |
+
be of the form @emph{UUID+string}, where the UUID is as hex digits
|
310 |
+
possibly separated by hyphens, and the string can be anything.
|
311 |
+
|
312 |
+
For example, @samp{086f3693-b7b3-4f2c-9653-21492feee5b8+hello} will
|
313 |
+
insert the string ``hello'' associated with the given UUID.
|
314 |
+
|
315 |
+
@item delete_filler
|
316 |
+
Deletes both filler NAL units and filler SEI messages.
|
317 |
+
|
318 |
+
@item display_orientation
|
319 |
+
Insert, extract or remove Display orientation SEI messages.
|
320 |
+
See H.264 section D.1.27 and D.2.27 for syntax and semantics.
|
321 |
+
|
322 |
+
@table @samp
|
323 |
+
@item pass
|
324 |
+
@item insert
|
325 |
+
@item remove
|
326 |
+
@item extract
|
327 |
+
@end table
|
328 |
+
|
329 |
+
Default is pass.
|
330 |
+
|
331 |
+
Insert mode works in conjunction with @code{rotate} and @code{flip} options.
|
332 |
+
Any pre-existing Display orientation messages will be removed in insert or remove mode.
|
333 |
+
Extract mode attaches the display matrix to the packet as side data.
|
334 |
+
|
335 |
+
@item rotate
|
336 |
+
Set rotation in display orientation SEI (anticlockwise angle in degrees).
|
337 |
+
Range is -360 to +360. Default is NaN.
|
338 |
+
|
339 |
+
@item flip
|
340 |
+
Set flip in display orientation SEI.
|
341 |
+
|
342 |
+
@table @samp
|
343 |
+
@item horizontal
|
344 |
+
@item vertical
|
345 |
+
@end table
|
346 |
+
|
347 |
+
Default is unset.
|
348 |
+
|
349 |
+
@item level
|
350 |
+
Set the level in the SPS. Refer to H.264 section A.3 and tables A-1
|
351 |
+
to A-5.
|
352 |
+
|
353 |
+
The argument must be the name of a level (for example, @samp{4.2}), a
|
354 |
+
level_idc value (for example, @samp{42}), or the special name @samp{auto}
|
355 |
+
indicating that the filter should attempt to guess the level from the
|
356 |
+
input stream properties.
|
357 |
+
|
358 |
+
@end table
|
359 |
+
|
360 |
+
@section h264_mp4toannexb
|
361 |
+
|
362 |
+
Convert an H.264 bitstream from length prefixed mode to start code
|
363 |
+
prefixed mode (as defined in the Annex B of the ITU-T H.264
|
364 |
+
specification).
|
365 |
+
|
366 |
+
This is required by some streaming formats, typically the MPEG-2
|
367 |
+
transport stream format (muxer @code{mpegts}).
|
368 |
+
|
369 |
+
For example to remux an MP4 file containing an H.264 stream to mpegts
|
370 |
+
format with @command{ffmpeg}, you can use the command:
|
371 |
+
|
372 |
+
@example
|
373 |
+
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
374 |
+
@end example
|
375 |
+
|
376 |
+
Please note that this filter is auto-inserted for MPEG-TS (muxer
|
377 |
+
@code{mpegts}) and raw H.264 (muxer @code{h264}) output formats.
|
378 |
+
|
379 |
+
@section h264_redundant_pps
|
380 |
+
|
381 |
+
This applies a specific fixup to some Blu-ray streams which contain
|
382 |
+
redundant PPSs modifying irrelevant parameters of the stream which
|
383 |
+
confuse other transformations which require correct extradata.
|
384 |
+
|
385 |
+
@section hevc_metadata
|
386 |
+
|
387 |
+
Modify metadata embedded in an HEVC stream.
|
388 |
+
|
389 |
+
@table @option
|
390 |
+
@item aud
|
391 |
+
Insert or remove AUD NAL units in all access units of the stream.
|
392 |
+
|
393 |
+
@table @samp
|
394 |
+
@item insert
|
395 |
+
@item remove
|
396 |
+
@end table
|
397 |
+
|
398 |
+
@item sample_aspect_ratio
|
399 |
+
Set the sample aspect ratio in the stream in the VUI parameters.
|
400 |
+
|
401 |
+
@item video_format
|
402 |
+
@item video_full_range_flag
|
403 |
+
Set the video format in the stream (see H.265 section E.3.1 and
|
404 |
+
table E.2).
|
405 |
+
|
406 |
+
@item colour_primaries
|
407 |
+
@item transfer_characteristics
|
408 |
+
@item matrix_coefficients
|
409 |
+
Set the colour description in the stream (see H.265 section E.3.1
|
410 |
+
and tables E.3, E.4 and E.5).
|
411 |
+
|
412 |
+
@item chroma_sample_loc_type
|
413 |
+
Set the chroma sample location in the stream (see H.265 section
|
414 |
+
E.3.1 and figure E.1).
|
415 |
+
|
416 |
+
@item tick_rate
|
417 |
+
Set the tick rate in the VPS and VUI parameters (time_scale /
|
418 |
+
num_units_in_tick). Combined with @option{num_ticks_poc_diff_one}, this can
|
419 |
+
set a constant framerate in the stream. Note that it is likely to be
|
420 |
+
overridden by container parameters when the stream is in a container.
|
421 |
+
|
422 |
+
@item num_ticks_poc_diff_one
|
423 |
+
Set poc_proportional_to_timing_flag in VPS and VUI and use this value
|
424 |
+
to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
|
425 |
+
E.3.1). Ignored if @option{tick_rate} is not also set.
|
426 |
+
|
427 |
+
@item crop_left
|
428 |
+
@item crop_right
|
429 |
+
@item crop_top
|
430 |
+
@item crop_bottom
|
431 |
+
Set the conformance window cropping offsets in the SPS. These values
|
432 |
+
will replace the current ones if the stream is already cropped.
|
433 |
+
|
434 |
+
These fields are set in pixels. Note that some sizes may not be
|
435 |
+
representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
|
436 |
+
|
437 |
+
@item level
|
438 |
+
Set the level in the VPS and SPS. See H.265 section A.4 and tables
|
439 |
+
A.6 and A.7.
|
440 |
+
|
441 |
+
The argument must be the name of a level (for example, @samp{5.1}), a
|
442 |
+
@emph{general_level_idc} value (for example, @samp{153} for level 5.1),
|
443 |
+
or the special name @samp{auto} indicating that the filter should
|
444 |
+
attempt to guess the level from the input stream properties.
|
445 |
+
|
446 |
+
@end table
|
447 |
+
|
448 |
+
@section hevc_mp4toannexb
|
449 |
+
|
450 |
+
Convert an HEVC/H.265 bitstream from length prefixed mode to start code
|
451 |
+
prefixed mode (as defined in the Annex B of the ITU-T H.265
|
452 |
+
specification).
|
453 |
+
|
454 |
+
This is required by some streaming formats, typically the MPEG-2
|
455 |
+
transport stream format (muxer @code{mpegts}).
|
456 |
+
|
457 |
+
For example to remux an MP4 file containing an HEVC stream to mpegts
|
458 |
+
format with @command{ffmpeg}, you can use the command:
|
459 |
+
|
460 |
+
@example
|
461 |
+
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
|
462 |
+
@end example
|
463 |
+
|
464 |
+
Please note that this filter is auto-inserted for MPEG-TS (muxer
|
465 |
+
@code{mpegts}) and raw HEVC/H.265 (muxer @code{h265} or
|
466 |
+
@code{hevc}) output formats.
|
467 |
+
|
468 |
+
@section imxdump
|
469 |
+
|
470 |
+
Modifies the bitstream to fit in MOV and to be usable by the Final Cut
|
471 |
+
Pro decoder. This filter only applies to the mpeg2video codec, and is
|
472 |
+
likely not needed for Final Cut Pro 7 and newer with the appropriate
|
473 |
+
@option{-tag:v}.
|
474 |
+
|
475 |
+
For example, to remux 30 MB/sec NTSC IMX to MOV:
|
476 |
+
|
477 |
+
@example
|
478 |
+
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
|
479 |
+
@end example
|
480 |
+
|
481 |
+
@section mjpeg2jpeg
|
482 |
+
|
483 |
+
Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
|
484 |
+
|
485 |
+
MJPEG is a video codec wherein each video frame is essentially a
|
486 |
+
JPEG image. The individual frames can be extracted without loss,
|
487 |
+
e.g. by
|
488 |
+
|
489 |
+
@example
|
490 |
+
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
491 |
+
@end example
|
492 |
+
|
493 |
+
Unfortunately, these chunks are incomplete JPEG images, because
|
494 |
+
they lack the DHT segment required for decoding. Quoting from
|
495 |
+
@url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}:
|
496 |
+
|
497 |
+
Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
|
498 |
+
commented that "MJPEG, or at least the MJPEG in AVIs having the
|
499 |
+
MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* --
|
500 |
+
Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
|
501 |
+
and it must use basic Huffman encoding, not arithmetic or
|
502 |
+
progressive. . . . You can indeed extract the MJPEG frames and
|
503 |
+
decode them with a regular JPEG decoder, but you have to prepend
|
504 |
+
the DHT segment to them, or else the decoder won't have any idea
|
505 |
+
how to decompress the data. The exact table necessary is given in
|
506 |
+
the OpenDML spec."
|
507 |
+
|
508 |
+
This bitstream filter patches the header of frames extracted from an MJPEG
|
509 |
+
stream (carrying the AVI1 header ID and lacking a DHT segment) to
|
510 |
+
produce fully qualified JPEG images.
|
511 |
+
|
512 |
+
@example
|
513 |
+
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
|
514 |
+
exiftran -i -9 frame*.jpg
|
515 |
+
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
|
516 |
+
@end example
|
517 |
+
|
518 |
+
@section mjpegadump
|
519 |
+
|
520 |
+
Add an MJPEG A header to the bitstream, to enable decoding by
|
521 |
+
Quicktime.
|
522 |
+
|
523 |
+
@anchor{mov2textsub}
|
524 |
+
@section mov2textsub
|
525 |
+
|
526 |
+
Extract a representable text file from MOV subtitles, stripping the
|
527 |
+
metadata header from each subtitle packet.
|
528 |
+
|
529 |
+
See also the @ref{text2movsub} filter.
|
530 |
+
|
531 |
+
@section mp3decomp
|
532 |
+
|
533 |
+
Decompress non-standard compressed MP3 audio headers.
|
534 |
+
|
535 |
+
@section mpeg2_metadata
|
536 |
+
|
537 |
+
Modify metadata embedded in an MPEG-2 stream.
|
538 |
+
|
539 |
+
@table @option
|
540 |
+
@item display_aspect_ratio
|
541 |
+
Set the display aspect ratio in the stream.
|
542 |
+
|
543 |
+
The following fixed values are supported:
|
544 |
+
@table @option
|
545 |
+
@item 4/3
|
546 |
+
@item 16/9
|
547 |
+
@item 221/100
|
548 |
+
@end table
|
549 |
+
Any other value will result in square pixels being signalled instead
|
550 |
+
(see H.262 section 6.3.3 and table 6-3).
|
551 |
+
|
552 |
+
@item frame_rate
|
553 |
+
Set the frame rate in the stream. This is constructed from a table
|
554 |
+
of known values combined with a small multiplier and divisor - if
|
555 |
+
the supplied value is not exactly representable, the nearest
|
556 |
+
representable value will be used instead (see H.262 section 6.3.3
|
557 |
+
and table 6-4).
|
558 |
+
|
559 |
+
@item video_format
|
560 |
+
Set the video format in the stream (see H.262 section 6.3.6 and
|
561 |
+
table 6-6).
|
562 |
+
|
563 |
+
@item colour_primaries
|
564 |
+
@item transfer_characteristics
|
565 |
+
@item matrix_coefficients
|
566 |
+
Set the colour description in the stream (see H.262 section 6.3.6
|
567 |
+
and tables 6-7, 6-8 and 6-9).
|
568 |
+
|
569 |
+
@end table
|
570 |
+
|
571 |
+
@section mpeg4_unpack_bframes
|
572 |
+
|
573 |
+
Unpack DivX-style packed B-frames.
|
574 |
+
|
575 |
+
DivX-style packed B-frames are not valid MPEG-4 and were only a
|
576 |
+
workaround for the broken Video for Windows subsystem.
|
577 |
+
They use more space, can cause minor AV sync issues, require more
|
578 |
+
CPU power to decode (unless the player has some decoded picture queue
|
579 |
+
to compensate the 2,0,2,0 frame per packet style) and cause
|
580 |
+
trouble if copied into a standard container like mp4 or mpeg-ps/ts,
|
581 |
+
because MPEG-4 decoders may not be able to decode them, since they are
|
582 |
+
not valid MPEG-4.
|
583 |
+
|
584 |
+
For example to fix an AVI file containing an MPEG-4 stream with
|
585 |
+
DivX-style packed B-frames using @command{ffmpeg}, you can use the command:
|
586 |
+
|
587 |
+
@example
|
588 |
+
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
|
589 |
+
@end example
|
590 |
+
|
591 |
+
@section noise
|
592 |
+
|
593 |
+
Damages the contents of packets or simply drops them without damaging the
|
594 |
+
container. Can be used for fuzzing or testing error resilience/concealment.
|
595 |
+
|
596 |
+
Parameters:
|
597 |
+
@table @option
|
598 |
+
@item amount
|
599 |
+
Accepts an expression whose evaluation per-packet determines how often bytes in that
|
600 |
+
packet will be modified. A value below 0 will result in a variable frequency.
|
601 |
+
Default is 0 which results in no modification. However, if neither amount nor drop is specified,
|
602 |
+
amount will be set to @var{-1}. See below for accepted variables.
|
603 |
+
@item drop
|
604 |
+
Accepts an expression evaluated per-packet whose value determines whether that packet is dropped.
|
605 |
+
Evaluation to a positive value results in the packet being dropped. Evaluation to a negative
|
606 |
+
value results in a variable chance of it being dropped, roughly inverse in proportion to the magnitude
|
607 |
+
of the value. Default is 0 which results in no drops. See below for accepted variables.
|
608 |
+
@item dropamount
|
609 |
+
Accepts a non-negative integer, which assigns a variable chance of it being dropped, roughly inverse
|
610 |
+
in proportion to the value. Default is 0 which results in no drops. This option is kept for backwards
|
611 |
+
compatibility and is equivalent to setting drop to a negative value with the same magnitude
|
612 |
+
i.e. @code{dropamount=4} is the same as @code{drop=-4}. Ignored if drop is also specified.
|
613 |
+
@end table
|
614 |
+
|
615 |
+
Both @code{amount} and @code{drop} accept expressions containing the following variables:
|
616 |
+
|
617 |
+
@table @samp
|
618 |
+
@item n
|
619 |
+
The index of the packet, starting from zero.
|
620 |
+
@item tb
|
621 |
+
The timebase for packet timestamps.
|
622 |
+
@item pts
|
623 |
+
Packet presentation timestamp.
|
624 |
+
@item dts
|
625 |
+
Packet decoding timestamp.
|
626 |
+
@item nopts
|
627 |
+
Constant representing AV_NOPTS_VALUE.
|
628 |
+
@item startpts
|
629 |
+
First non-AV_NOPTS_VALUE PTS seen in the stream.
|
630 |
+
@item startdts
|
631 |
+
First non-AV_NOPTS_VALUE DTS seen in the stream.
|
632 |
+
@item duration
|
633 |
+
@itemx d
|
634 |
+
Packet duration, in timebase units.
|
635 |
+
@item pos
|
636 |
+
Packet position in input; may be -1 when unknown or not set.
|
637 |
+
@item size
|
638 |
+
Packet size, in bytes.
|
639 |
+
@item key
|
640 |
+
Whether packet is marked as a keyframe.
|
641 |
+
@item state
|
642 |
+
A pseudo random integer, primarily derived from the content of packet payload.
|
643 |
+
@end table
|
644 |
+
|
645 |
+
@subsection Examples
|
646 |
+
Apply modification to every byte but don't drop any packets.
|
647 |
+
@example
|
648 |
+
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
|
649 |
+
@end example
|
650 |
+
|
651 |
+
Drop every video packet not marked as a keyframe after timestamp 30s but do not
|
652 |
+
modify any of the remaining packets.
|
653 |
+
@example
|
654 |
+
ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
|
655 |
+
@end example
|
656 |
+
|
657 |
+
Drop one second of audio every 10 seconds and add some random noise to the rest.
|
658 |
+
@example
|
659 |
+
ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
|
660 |
+
@end example
|
661 |
+
|
662 |
+
@section null
|
663 |
+
This bitstream filter passes the packets through unchanged.
|
664 |
+
|
665 |
+
@section pcm_rechunk
|
666 |
+
|
667 |
+
Repacketize PCM audio to a fixed number of samples per packet or a fixed packet
|
668 |
+
rate per second. This is similar to the @ref{asetnsamples,,asetnsamples audio
|
669 |
+
filter,ffmpeg-filters} but works on audio packets instead of audio frames.
|
670 |
+
|
671 |
+
@table @option
|
672 |
+
@item nb_out_samples, n
|
673 |
+
Set the number of samples per each output audio packet. The number is intended
|
674 |
+
as the number of samples @emph{per each channel}. Default value is 1024.
|
675 |
+
|
676 |
+
@item pad, p
|
677 |
+
If set to 1, the filter will pad the last audio packet with silence, so that it
|
678 |
+
will contain the same number of samples (or roughly the same number of samples,
|
679 |
+
see @option{frame_rate}) as the previous ones. Default value is 1.
|
680 |
+
|
681 |
+
@item frame_rate, r
|
682 |
+
This option makes the filter output a fixed number of packets per second instead
|
683 |
+
of a fixed number of samples per packet. If the audio sample rate is not
|
684 |
+
divisible by the frame rate then the number of samples will not be constant but
|
685 |
+
will vary slightly so that each packet will start as close to the frame
|
686 |
+
boundary as possible. Using this option has precedence over @option{nb_out_samples}.
|
687 |
+
@end table
|
688 |
+
|
689 |
+
You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio
|
690 |
+
for NTSC frame rate using the @option{frame_rate} option.
|
691 |
+
@example
|
692 |
+
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
|
693 |
+
@end example
|
694 |
+
|
695 |
+
@section pgs_frame_merge
|
696 |
+
|
697 |
+
Merge a sequence of PGS Subtitle segments ending with an "end of display set"
|
698 |
+
segment into a single packet.
|
699 |
+
|
700 |
+
This is required by some containers that support PGS subtitles
|
701 |
+
(muxer @code{matroska}).
|
702 |
+
|
703 |
+
@section prores_metadata
|
704 |
+
|
705 |
+
Modify color property metadata embedded in prores stream.
|
706 |
+
|
707 |
+
@table @option
|
708 |
+
@item color_primaries
|
709 |
+
Set the color primaries.
|
710 |
+
Available values are:
|
711 |
+
|
712 |
+
@table @samp
|
713 |
+
@item auto
|
714 |
+
Keep the same color primaries property (default).
|
715 |
+
|
716 |
+
@item unknown
|
717 |
+
@item bt709
|
718 |
+
@item bt470bg
|
719 |
+
BT601 625
|
720 |
+
|
721 |
+
@item smpte170m
|
722 |
+
BT601 525
|
723 |
+
|
724 |
+
@item bt2020
|
725 |
+
@item smpte431
|
726 |
+
DCI P3
|
727 |
+
|
728 |
+
@item smpte432
|
729 |
+
P3 D65
|
730 |
+
|
731 |
+
@end table
|
732 |
+
|
733 |
+
@item transfer_characteristics
|
734 |
+
Set the color transfer.
|
735 |
+
Available values are:
|
736 |
+
|
737 |
+
@table @samp
|
738 |
+
@item auto
|
739 |
+
Keep the same transfer characteristics property (default).
|
740 |
+
|
741 |
+
@item unknown
|
742 |
+
@item bt709
|
743 |
+
BT 601, BT 709, BT 2020
|
744 |
+
@item smpte2084
|
745 |
+
SMPTE ST 2084
|
746 |
+
@item arib-std-b67
|
747 |
+
ARIB STD-B67
|
748 |
+
@end table
|
749 |
+
|
750 |
+
|
751 |
+
@item matrix_coefficients
|
752 |
+
Set the matrix coefficient.
|
753 |
+
Available values are:
|
754 |
+
|
755 |
+
@table @samp
|
756 |
+
@item auto
|
757 |
+
Keep the same colorspace property (default).
|
758 |
+
|
759 |
+
@item unknown
|
760 |
+
@item bt709
|
761 |
+
@item smpte170m
|
762 |
+
BT 601
|
763 |
+
|
764 |
+
@item bt2020nc
|
765 |
+
@end table
|
766 |
+
@end table
|
767 |
+
|
768 |
+
Set Rec709 colorspace for each frame of the file
|
769 |
+
@example
|
770 |
+
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
|
771 |
+
@end example
|
772 |
+
|
773 |
+
Set Hybrid Log-Gamma parameters for each frame of the file
|
774 |
+
@example
|
775 |
+
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
|
776 |
+
@end example
|
777 |
+
|
778 |
+
@section remove_extra
|
779 |
+
|
780 |
+
Remove extradata from packets.
|
781 |
+
|
782 |
+
It accepts the following parameter:
|
783 |
+
@table @option
|
784 |
+
@item freq
|
785 |
+
Set which frame types to remove extradata from.
|
786 |
+
|
787 |
+
@table @samp
|
788 |
+
@item k
|
789 |
+
Remove extradata from non-keyframes only.
|
790 |
+
|
791 |
+
@item keyframe
|
792 |
+
Remove extradata from keyframes only.
|
793 |
+
|
794 |
+
@item e, all
|
795 |
+
Remove extradata from all frames.
|
796 |
+
|
797 |
+
@end table
|
798 |
+
@end table
|
799 |
+
|
800 |
+
@section setts
|
801 |
+
Set PTS and DTS in packets.
|
802 |
+
|
803 |
+
It accepts the following parameters:
|
804 |
+
@table @option
|
805 |
+
@item ts
|
806 |
+
@item pts
|
807 |
+
@item dts
|
808 |
+
Set expressions for PTS, DTS or both.
|
809 |
+
@item duration
|
810 |
+
Set expression for duration.
|
811 |
+
@item time_base
|
812 |
+
Set output time base.
|
813 |
+
@end table
|
814 |
+
|
815 |
+
The expressions are evaluated through the eval API and can contain the following
|
816 |
+
constants:
|
817 |
+
|
818 |
+
@table @option
|
819 |
+
@item N
|
820 |
+
The count of the input packet. Starting from 0.
|
821 |
+
|
822 |
+
@item TS
|
823 |
+
The demux timestamp in input in case of @code{ts} or @code{dts} option or presentation
|
824 |
+
timestamp in case of @code{pts} option.
|
825 |
+
|
826 |
+
@item POS
|
827 |
+
The original position in the file of the packet, or undefined if undefined
|
828 |
+
for the current packet
|
829 |
+
|
830 |
+
@item DTS
|
831 |
+
The demux timestamp in input.
|
832 |
+
|
833 |
+
@item PTS
|
834 |
+
The presentation timestamp in input.
|
835 |
+
|
836 |
+
@item DURATION
|
837 |
+
The duration in input.
|
838 |
+
|
839 |
+
@item STARTDTS
|
840 |
+
The DTS of the first packet.
|
841 |
+
|
842 |
+
@item STARTPTS
|
843 |
+
The PTS of the first packet.
|
844 |
+
|
845 |
+
@item PREV_INDTS
|
846 |
+
The previous input DTS.
|
847 |
+
|
848 |
+
@item PREV_INPTS
|
849 |
+
The previous input PTS.
|
850 |
+
|
851 |
+
@item PREV_INDURATION
|
852 |
+
The previous input duration.
|
853 |
+
|
854 |
+
@item PREV_OUTDTS
|
855 |
+
The previous output DTS.
|
856 |
+
|
857 |
+
@item PREV_OUTPTS
|
858 |
+
The previous output PTS.
|
859 |
+
|
860 |
+
@item PREV_OUTDURATION
|
861 |
+
The previous output duration.
|
862 |
+
|
863 |
+
@item NEXT_DTS
|
864 |
+
The next input DTS.
|
865 |
+
|
866 |
+
@item NEXT_PTS
|
867 |
+
The next input PTS.
|
868 |
+
|
869 |
+
@item NEXT_DURATION
|
870 |
+
The next input duration.
|
871 |
+
|
872 |
+
@item TB
|
873 |
+
The timebase of stream packet belongs.
|
874 |
+
|
875 |
+
@item TB_OUT
|
876 |
+
The output timebase.
|
877 |
+
|
878 |
+
@item SR
|
879 |
+
The sample rate of stream packet belongs.
|
880 |
+
|
881 |
+
@item NOPTS
|
882 |
+
The AV_NOPTS_VALUE constant.
|
883 |
+
@end table
|
884 |
+
|
885 |
+
@anchor{text2movsub}
|
886 |
+
@section text2movsub
|
887 |
+
|
888 |
+
Convert text subtitles to MOV subtitles (as used by the @code{mov_text}
|
889 |
+
codec) with metadata headers.
|
890 |
+
|
891 |
+
See also the @ref{mov2textsub} filter.
|
892 |
+
|
893 |
+
@section trace_headers
|
894 |
+
|
895 |
+
Log trace output containing all syntax elements in the coded stream
|
896 |
+
headers (everything above the level of individual coded blocks).
|
897 |
+
This can be useful for debugging low-level stream issues.
|
898 |
+
|
899 |
+
Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending
|
900 |
+
on the build only a subset of these may be available.
|
901 |
+
|
902 |
+
@section truehd_core
|
903 |
+
|
904 |
+
Extract the core from a TrueHD stream, dropping ATMOS data.
|
905 |
+
|
906 |
+
@section vp9_metadata
|
907 |
+
|
908 |
+
Modify metadata embedded in a VP9 stream.
|
909 |
+
|
910 |
+
@table @option
|
911 |
+
@item color_space
|
912 |
+
Set the color space value in the frame header. Note that any frame
|
913 |
+
set to RGB will be implicitly set to PC range and that RGB is
|
914 |
+
incompatible with profiles 0 and 2.
|
915 |
+
@table @samp
|
916 |
+
@item unknown
|
917 |
+
@item bt601
|
918 |
+
@item bt709
|
919 |
+
@item smpte170
|
920 |
+
@item smpte240
|
921 |
+
@item bt2020
|
922 |
+
@item rgb
|
923 |
+
@end table
|
924 |
+
|
925 |
+
@item color_range
|
926 |
+
Set the color range value in the frame header. Note that any value
|
927 |
+
imposed by the color space will take precedence over this value.
|
928 |
+
@table @samp
|
929 |
+
@item tv
|
930 |
+
@item pc
|
931 |
+
@end table
|
932 |
+
@end table
|
933 |
+
|
934 |
+
@section vp9_superframe
|
935 |
+
|
936 |
+
Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
|
937 |
+
fixes merging of split/segmented VP9 streams where the alt-ref frame
|
938 |
+
was split from its visible counterpart.
|
939 |
+
|
940 |
+
@section vp9_superframe_split
|
941 |
+
|
942 |
+
Split VP9 superframes into single frames.
|
943 |
+
|
944 |
+
@section vp9_raw_reorder
|
945 |
+
|
946 |
+
Given a VP9 stream with correct timestamps but possibly out of order,
|
947 |
+
insert additional show-existing-frame packets to correct the ordering.
|
948 |
+
|
949 |
+
@c man end BITSTREAM FILTERS
|
bin/ffmpeg/doc/bootstrap.min.css
ADDED
The diff for this file is too large to render.
See raw diff
|
|