init
commit
53045c2f0c
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
@ -0,0 +1,773 @@
|
|||||||
|
FFmpeg 64-bit static Windows build from www.gyan.dev
|
||||||
|
|
||||||
|
Version: 2023-01-09-git-13d04e30d7-full_build-www.gyan.dev
|
||||||
|
|
||||||
|
License: GPL v3
|
||||||
|
|
||||||
|
Source Code: https://github.com/FFmpeg/FFmpeg/commit/13d04e30d7
|
||||||
|
|
||||||
|
External Assets
|
||||||
|
frei0r plugins: https://www.gyan.dev/ffmpeg/builds/ffmpeg-frei0r-plugins
|
||||||
|
lensfun database: https://www.gyan.dev/ffmpeg/builds/ffmpeg-lensfun-db
|
||||||
|
|
||||||
|
git-full build configuration:
|
||||||
|
|
||||||
|
ARCH x86 (generic)
|
||||||
|
big-endian no
|
||||||
|
runtime cpu detection yes
|
||||||
|
standalone assembly yes
|
||||||
|
x86 assembler nasm
|
||||||
|
MMX enabled yes
|
||||||
|
MMXEXT enabled yes
|
||||||
|
3DNow! enabled yes
|
||||||
|
3DNow! extended enabled yes
|
||||||
|
SSE enabled yes
|
||||||
|
SSSE3 enabled yes
|
||||||
|
AESNI enabled yes
|
||||||
|
AVX enabled yes
|
||||||
|
AVX2 enabled yes
|
||||||
|
AVX-512 enabled yes
|
||||||
|
AVX-512ICL enabled yes
|
||||||
|
XOP enabled yes
|
||||||
|
FMA3 enabled yes
|
||||||
|
FMA4 enabled yes
|
||||||
|
i686 features enabled yes
|
||||||
|
CMOV is fast yes
|
||||||
|
EBX available yes
|
||||||
|
EBP available yes
|
||||||
|
debug symbols yes
|
||||||
|
strip symbols yes
|
||||||
|
optimize for size no
|
||||||
|
optimizations yes
|
||||||
|
static yes
|
||||||
|
shared no
|
||||||
|
postprocessing support yes
|
||||||
|
network support yes
|
||||||
|
threading support pthreads
|
||||||
|
safe bitstream reader yes
|
||||||
|
texi2html enabled no
|
||||||
|
perl enabled yes
|
||||||
|
pod2man enabled yes
|
||||||
|
makeinfo enabled yes
|
||||||
|
makeinfo supports HTML yes
|
||||||
|
xmllint enabled yes
|
||||||
|
|
||||||
|
External libraries:
|
||||||
|
avisynth libilbc libtheora
|
||||||
|
bzlib libjxl libtwolame
|
||||||
|
chromaprint liblensfun libuavs3d
|
||||||
|
frei0r libmodplug libvidstab
|
||||||
|
gmp libmp3lame libvmaf
|
||||||
|
gnutls libmysofa libvo_amrwbenc
|
||||||
|
iconv libopencore_amrnb libvorbis
|
||||||
|
ladspa libopencore_amrwb libvpx
|
||||||
|
libaom libopenjpeg libwebp
|
||||||
|
libaribb24 libopenmpt libx264
|
||||||
|
libass libopus libx265
|
||||||
|
libbluray libplacebo libxavs2
|
||||||
|
libbs2b librav1e libxml2
|
||||||
|
libcaca librist libxvid
|
||||||
|
libcdio librubberband libzimg
|
||||||
|
libdav1d libshaderc libzmq
|
||||||
|
libdavs2 libshine libzvbi
|
||||||
|
libflite libsnappy lzma
|
||||||
|
libfontconfig libsoxr mediafoundation
|
||||||
|
libfreetype libspeex sdl2
|
||||||
|
libfribidi libsrt zlib
|
||||||
|
libgme libssh
|
||||||
|
libgsm libsvtav1
|
||||||
|
|
||||||
|
External libraries providing hardware acceleration:
|
||||||
|
amf dxva2 nvenc
|
||||||
|
cuda ffnvcodec opencl
|
||||||
|
cuda_llvm libmfx vulkan
|
||||||
|
cuvid libvpl
|
||||||
|
d3d11va nvdec
|
||||||
|
|
||||||
|
Libraries:
|
||||||
|
avcodec avformat swresample
|
||||||
|
avdevice avutil swscale
|
||||||
|
avfilter postproc
|
||||||
|
|
||||||
|
Programs:
|
||||||
|
ffmpeg ffplay ffprobe
|
||||||
|
|
||||||
|
Enabled decoders:
|
||||||
|
aac fraps pcm_u24le
|
||||||
|
aac_fixed frwu pcm_u32be
|
||||||
|
aac_latm ftr pcm_u32le
|
||||||
|
aasc g2m pcm_u8
|
||||||
|
ac3 g723_1 pcm_vidc
|
||||||
|
ac3_fixed g729 pcx
|
||||||
|
acelp_kelvin gdv pfm
|
||||||
|
adpcm_4xm gem pgm
|
||||||
|
adpcm_adx gif pgmyuv
|
||||||
|
adpcm_afc gremlin_dpcm pgssub
|
||||||
|
adpcm_agm gsm pgx
|
||||||
|
adpcm_aica gsm_ms phm
|
||||||
|
adpcm_argo h261 photocd
|
||||||
|
adpcm_ct h263 pictor
|
||||||
|
adpcm_dtk h263i pixlet
|
||||||
|
adpcm_ea h263p pjs
|
||||||
|
adpcm_ea_maxis_xa h264 png
|
||||||
|
adpcm_ea_r1 h264_cuvid ppm
|
||||||
|
adpcm_ea_r2 h264_qsv prores
|
||||||
|
adpcm_ea_r3 hap prosumer
|
||||||
|
adpcm_ea_xas hca psd
|
||||||
|
adpcm_g722 hcom ptx
|
||||||
|
adpcm_g726 hdr qcelp
|
||||||
|
adpcm_g726le hevc qdm2
|
||||||
|
adpcm_ima_acorn hevc_cuvid qdmc
|
||||||
|
adpcm_ima_alp hevc_qsv qdraw
|
||||||
|
adpcm_ima_amv hnm4_video qoi
|
||||||
|
adpcm_ima_apc hq_hqa qpeg
|
||||||
|
adpcm_ima_apm hqx qtrle
|
||||||
|
adpcm_ima_cunning huffyuv r10k
|
||||||
|
adpcm_ima_dat4 hymt r210
|
||||||
|
adpcm_ima_dk3 iac ra_144
|
||||||
|
adpcm_ima_dk4 idcin ra_288
|
||||||
|
adpcm_ima_ea_eacs idf ralf
|
||||||
|
adpcm_ima_ea_sead iff_ilbm rasc
|
||||||
|
adpcm_ima_iss ilbc rawvideo
|
||||||
|
adpcm_ima_moflex imc realtext
|
||||||
|
adpcm_ima_mtf imm4 rl2
|
||||||
|
adpcm_ima_oki imm5 roq
|
||||||
|
adpcm_ima_qt indeo2 roq_dpcm
|
||||||
|
adpcm_ima_rad indeo3 rpza
|
||||||
|
adpcm_ima_smjpeg indeo4 rscc
|
||||||
|
adpcm_ima_ssi indeo5 rv10
|
||||||
|
adpcm_ima_wav interplay_acm rv20
|
||||||
|
adpcm_ima_ws interplay_dpcm rv30
|
||||||
|
adpcm_ms interplay_video rv40
|
||||||
|
adpcm_mtaf ipu s302m
|
||||||
|
adpcm_psx jacosub sami
|
||||||
|
adpcm_sbpro_2 jpeg2000 sanm
|
||||||
|
adpcm_sbpro_3 jpegls sbc
|
||||||
|
adpcm_sbpro_4 jv scpr
|
||||||
|
adpcm_swf kgv1 screenpresso
|
||||||
|
adpcm_thp kmvc sdx2_dpcm
|
||||||
|
adpcm_thp_le lagarith sga
|
||||||
|
adpcm_vima libaom_av1 sgi
|
||||||
|
adpcm_xa libaribb24 sgirle
|
||||||
|
adpcm_yamaha libdav1d sheervideo
|
||||||
|
adpcm_zork libdavs2 shorten
|
||||||
|
agm libgsm simbiosis_imx
|
||||||
|
aic libgsm_ms sipr
|
||||||
|
alac libilbc siren
|
||||||
|
alias_pix libjxl smackaud
|
||||||
|
als libopencore_amrnb smacker
|
||||||
|
amrnb libopencore_amrwb smc
|
||||||
|
amrwb libopenjpeg smvjpeg
|
||||||
|
amv libopus snow
|
||||||
|
anm libspeex sol_dpcm
|
||||||
|
ansi libuavs3d sonic
|
||||||
|
apac libvorbis sp5x
|
||||||
|
ape libvpx_vp8 speedhq
|
||||||
|
apng libvpx_vp9 speex
|
||||||
|
aptx libzvbi_teletext srgc
|
||||||
|
aptx_hd loco srt
|
||||||
|
arbc lscr ssa
|
||||||
|
argo m101 stl
|
||||||
|
ass mace3 subrip
|
||||||
|
asv1 mace6 subviewer
|
||||||
|
asv2 magicyuv subviewer1
|
||||||
|
atrac1 mdec sunrast
|
||||||
|
atrac3 media100 svq1
|
||||||
|
atrac3al metasound svq3
|
||||||
|
atrac3p microdvd tak
|
||||||
|
atrac3pal mimic targa
|
||||||
|
atrac9 misc4 targa_y216
|
||||||
|
aura mjpeg tdsc
|
||||||
|
aura2 mjpeg_cuvid text
|
||||||
|
av1 mjpeg_qsv theora
|
||||||
|
av1_cuvid mjpegb thp
|
||||||
|
av1_qsv mlp tiertexseqvideo
|
||||||
|
avrn mmvideo tiff
|
||||||
|
avrp mobiclip tmv
|
||||||
|
avs motionpixels truehd
|
||||||
|
avui movtext truemotion1
|
||||||
|
ayuv mp1 truemotion2
|
||||||
|
bethsoftvid mp1float truemotion2rt
|
||||||
|
bfi mp2 truespeech
|
||||||
|
bink mp2float tscc
|
||||||
|
binkaudio_dct mp3 tscc2
|
||||||
|
binkaudio_rdft mp3adu tta
|
||||||
|
bintext mp3adufloat twinvq
|
||||||
|
bitpacked mp3float txd
|
||||||
|
bmp mp3on4 ulti
|
||||||
|
bmv_audio mp3on4float utvideo
|
||||||
|
bmv_video mpc7 v210
|
||||||
|
bonk mpc8 v210x
|
||||||
|
brender_pix mpeg1_cuvid v308
|
||||||
|
c93 mpeg1video v408
|
||||||
|
cavs mpeg2_cuvid v410
|
||||||
|
ccaption mpeg2_qsv vb
|
||||||
|
cdgraphics mpeg2video vble
|
||||||
|
cdtoons mpeg4 vbn
|
||||||
|
cdxl mpeg4_cuvid vc1
|
||||||
|
cfhd mpegvideo vc1_cuvid
|
||||||
|
cinepak mpl2 vc1_qsv
|
||||||
|
clearvideo msa1 vc1image
|
||||||
|
cljr mscc vcr1
|
||||||
|
cllc msmpeg4v1 vmdaudio
|
||||||
|
comfortnoise msmpeg4v2 vmdvideo
|
||||||
|
cook msmpeg4v3 vmnc
|
||||||
|
cpia msnsiren vorbis
|
||||||
|
cri msp2 vp3
|
||||||
|
cscd msrle vp4
|
||||||
|
cyuv mss1 vp5
|
||||||
|
dca mss2 vp6
|
||||||
|
dds msvideo1 vp6a
|
||||||
|
derf_dpcm mszh vp6f
|
||||||
|
dfa mts2 vp7
|
||||||
|
dfpwm mv30 vp8
|
||||||
|
dirac mvc1 vp8_cuvid
|
||||||
|
dnxhd mvc2 vp8_qsv
|
||||||
|
dolby_e mvdv vp9
|
||||||
|
dpx mvha vp9_cuvid
|
||||||
|
dsd_lsbf mwsc vp9_qsv
|
||||||
|
dsd_lsbf_planar mxpeg vplayer
|
||||||
|
dsd_msbf nellymoser vqa
|
||||||
|
dsd_msbf_planar notchlc vqc
|
||||||
|
dsicinaudio nuv wavpack
|
||||||
|
dsicinvideo on2avc wbmp
|
||||||
|
dss_sp opus wcmv
|
||||||
|
dst paf_audio webp
|
||||||
|
dvaudio paf_video webvtt
|
||||||
|
dvbsub pam wmalossless
|
||||||
|
dvdsub pbm wmapro
|
||||||
|
dvvideo pcm_alaw wmav1
|
||||||
|
dxa pcm_bluray wmav2
|
||||||
|
dxtory pcm_dvd wmavoice
|
||||||
|
dxv pcm_f16le wmv1
|
||||||
|
eac3 pcm_f24le wmv2
|
||||||
|
eacmv pcm_f32be wmv3
|
||||||
|
eamad pcm_f32le wmv3image
|
||||||
|
eatgq pcm_f64be wnv1
|
||||||
|
eatgv pcm_f64le wrapped_avframe
|
||||||
|
eatqi pcm_lxf ws_snd1
|
||||||
|
eightbps pcm_mulaw xan_dpcm
|
||||||
|
eightsvx_exp pcm_s16be xan_wc3
|
||||||
|
eightsvx_fib pcm_s16be_planar xan_wc4
|
||||||
|
escape124 pcm_s16le xbin
|
||||||
|
escape130 pcm_s16le_planar xbm
|
||||||
|
evrc pcm_s24be xface
|
||||||
|
exr pcm_s24daud xl
|
||||||
|
fastaudio pcm_s24le xma1
|
||||||
|
ffv1 pcm_s24le_planar xma2
|
||||||
|
ffvhuff pcm_s32be xpm
|
||||||
|
ffwavesynth pcm_s32le xsub
|
||||||
|
fic pcm_s32le_planar xwd
|
||||||
|
fits pcm_s64be y41p
|
||||||
|
flac pcm_s64le ylc
|
||||||
|
flashsv pcm_s8 yop
|
||||||
|
flashsv2 pcm_s8_planar yuv4
|
||||||
|
flic pcm_sga zero12v
|
||||||
|
flv pcm_u16be zerocodec
|
||||||
|
fmvc pcm_u16le zlib
|
||||||
|
fourxm pcm_u24be zmbv
|
||||||
|
|
||||||
|
Enabled encoders:
|
||||||
|
a64multi huffyuv pcm_u16le
|
||||||
|
a64multi5 jpeg2000 pcm_u24be
|
||||||
|
aac jpegls pcm_u24le
|
||||||
|
aac_mf libaom_av1 pcm_u32be
|
||||||
|
ac3 libgsm pcm_u32le
|
||||||
|
ac3_fixed libgsm_ms pcm_u8
|
||||||
|
ac3_mf libilbc pcm_vidc
|
||||||
|
adpcm_adx libjxl pcx
|
||||||
|
adpcm_argo libmp3lame pfm
|
||||||
|
adpcm_g722 libopencore_amrnb pgm
|
||||||
|
adpcm_g726 libopenjpeg pgmyuv
|
||||||
|
adpcm_g726le libopus phm
|
||||||
|
adpcm_ima_alp librav1e png
|
||||||
|
adpcm_ima_amv libshine ppm
|
||||||
|
adpcm_ima_apm libspeex prores
|
||||||
|
adpcm_ima_qt libsvtav1 prores_aw
|
||||||
|
adpcm_ima_ssi libtheora prores_ks
|
||||||
|
adpcm_ima_wav libtwolame qoi
|
||||||
|
adpcm_ima_ws libvo_amrwbenc qtrle
|
||||||
|
adpcm_ms libvorbis r10k
|
||||||
|
adpcm_swf libvpx_vp8 r210
|
||||||
|
adpcm_yamaha libvpx_vp9 ra_144
|
||||||
|
alac libwebp rawvideo
|
||||||
|
alias_pix libwebp_anim roq
|
||||||
|
amv libx264 roq_dpcm
|
||||||
|
apng libx264rgb rpza
|
||||||
|
aptx libx265 rv10
|
||||||
|
aptx_hd libxavs2 rv20
|
||||||
|
ass libxvid s302m
|
||||||
|
asv1 ljpeg sbc
|
||||||
|
asv2 magicyuv sgi
|
||||||
|
av1_nvenc mjpeg smc
|
||||||
|
av1_qsv mjpeg_qsv snow
|
||||||
|
avrp mlp sonic
|
||||||
|
avui movtext sonic_ls
|
||||||
|
ayuv mp2 speedhq
|
||||||
|
bitpacked mp2fixed srt
|
||||||
|
bmp mp3_mf ssa
|
||||||
|
cfhd mpeg1video subrip
|
||||||
|
cinepak mpeg2_qsv sunrast
|
||||||
|
cljr mpeg2video svq1
|
||||||
|
comfortnoise mpeg4 targa
|
||||||
|
dca msmpeg4v2 text
|
||||||
|
dfpwm msmpeg4v3 tiff
|
||||||
|
dnxhd msvideo1 truehd
|
||||||
|
dpx nellymoser tta
|
||||||
|
dvbsub opus ttml
|
||||||
|
dvdsub pam utvideo
|
||||||
|
dvvideo pbm v210
|
||||||
|
eac3 pcm_alaw v308
|
||||||
|
exr pcm_bluray v408
|
||||||
|
ffv1 pcm_dvd v410
|
||||||
|
ffvhuff pcm_f32be vbn
|
||||||
|
fits pcm_f32le vc2
|
||||||
|
flac pcm_f64be vorbis
|
||||||
|
flashsv pcm_f64le vp9_qsv
|
||||||
|
flashsv2 pcm_mulaw wavpack
|
||||||
|
flv pcm_s16be wbmp
|
||||||
|
g723_1 pcm_s16be_planar webvtt
|
||||||
|
gif pcm_s16le wmav1
|
||||||
|
h261 pcm_s16le_planar wmav2
|
||||||
|
h263 pcm_s24be wmv1
|
||||||
|
h263p pcm_s24daud wmv2
|
||||||
|
h264_amf pcm_s24le wrapped_avframe
|
||||||
|
h264_mf pcm_s24le_planar xbm
|
||||||
|
h264_nvenc pcm_s32be xface
|
||||||
|
h264_qsv pcm_s32le xsub
|
||||||
|
hap pcm_s32le_planar xwd
|
||||||
|
hdr pcm_s64be y41p
|
||||||
|
hevc_amf pcm_s64le yuv4
|
||||||
|
hevc_mf pcm_s8 zlib
|
||||||
|
hevc_nvenc pcm_s8_planar zmbv
|
||||||
|
hevc_qsv pcm_u16be
|
||||||
|
|
||||||
|
Enabled hwaccels:
|
||||||
|
av1_d3d11va hevc_nvdec vc1_nvdec
|
||||||
|
av1_d3d11va2 mjpeg_nvdec vp8_nvdec
|
||||||
|
av1_dxva2 mpeg1_nvdec vp9_d3d11va
|
||||||
|
av1_nvdec mpeg2_d3d11va vp9_d3d11va2
|
||||||
|
h264_d3d11va mpeg2_d3d11va2 vp9_dxva2
|
||||||
|
h264_d3d11va2 mpeg2_dxva2 vp9_nvdec
|
||||||
|
h264_dxva2 mpeg2_nvdec wmv3_d3d11va
|
||||||
|
h264_nvdec mpeg4_nvdec wmv3_d3d11va2
|
||||||
|
hevc_d3d11va vc1_d3d11va wmv3_dxva2
|
||||||
|
hevc_d3d11va2 vc1_d3d11va2 wmv3_nvdec
|
||||||
|
hevc_dxva2 vc1_dxva2
|
||||||
|
|
||||||
|
Enabled parsers:
|
||||||
|
aac dvdsub opus
|
||||||
|
aac_latm flac png
|
||||||
|
ac3 ftr pnm
|
||||||
|
adx g723_1 qoi
|
||||||
|
amr g729 rv30
|
||||||
|
av1 gif rv40
|
||||||
|
avs2 gsm sbc
|
||||||
|
avs3 h261 sipr
|
||||||
|
bmp h263 tak
|
||||||
|
cavsvideo h264 vc1
|
||||||
|
cook hdr vorbis
|
||||||
|
cri hevc vp3
|
||||||
|
dca ipu vp8
|
||||||
|
dirac jpeg2000 vp9
|
||||||
|
dnxhd misc4 webp
|
||||||
|
dolby_e mjpeg xbm
|
||||||
|
dpx mlp xma
|
||||||
|
dvaudio mpeg4video xwd
|
||||||
|
dvbsub mpegaudio
|
||||||
|
dvd_nav mpegvideo
|
||||||
|
|
||||||
|
Enabled demuxers:
|
||||||
|
aa ico pcm_alaw
|
||||||
|
aac idcin pcm_f32be
|
||||||
|
aax idf pcm_f32le
|
||||||
|
ac3 iff pcm_f64be
|
||||||
|
ace ifv pcm_f64le
|
||||||
|
acm ilbc pcm_mulaw
|
||||||
|
act image2 pcm_s16be
|
||||||
|
adf image2_alias_pix pcm_s16le
|
||||||
|
adp image2_brender_pix pcm_s24be
|
||||||
|
ads image2pipe pcm_s24le
|
||||||
|
adx image_bmp_pipe pcm_s32be
|
||||||
|
aea image_cri_pipe pcm_s32le
|
||||||
|
afc image_dds_pipe pcm_s8
|
||||||
|
aiff image_dpx_pipe pcm_u16be
|
||||||
|
aix image_exr_pipe pcm_u16le
|
||||||
|
alp image_gem_pipe pcm_u24be
|
||||||
|
amr image_gif_pipe pcm_u24le
|
||||||
|
amrnb image_hdr_pipe pcm_u32be
|
||||||
|
amrwb image_j2k_pipe pcm_u32le
|
||||||
|
anm image_jpeg_pipe pcm_u8
|
||||||
|
apac image_jpegls_pipe pcm_vidc
|
||||||
|
apc image_jpegxl_pipe pjs
|
||||||
|
ape image_pam_pipe pmp
|
||||||
|
apm image_pbm_pipe pp_bnk
|
||||||
|
apng image_pcx_pipe pva
|
||||||
|
aptx image_pfm_pipe pvf
|
||||||
|
aptx_hd image_pgm_pipe qcp
|
||||||
|
aqtitle image_pgmyuv_pipe r3d
|
||||||
|
argo_asf image_pgx_pipe rawvideo
|
||||||
|
argo_brp image_phm_pipe realtext
|
||||||
|
argo_cvg image_photocd_pipe redspark
|
||||||
|
asf image_pictor_pipe rl2
|
||||||
|
asf_o image_png_pipe rm
|
||||||
|
ass image_ppm_pipe roq
|
||||||
|
ast image_psd_pipe rpl
|
||||||
|
au image_qdraw_pipe rsd
|
||||||
|
av1 image_qoi_pipe rso
|
||||||
|
avi image_sgi_pipe rtp
|
||||||
|
avisynth image_sunrast_pipe rtsp
|
||||||
|
avr image_svg_pipe s337m
|
||||||
|
avs image_tiff_pipe sami
|
||||||
|
avs2 image_vbn_pipe sap
|
||||||
|
avs3 image_webp_pipe sbc
|
||||||
|
bethsoftvid image_xbm_pipe sbg
|
||||||
|
bfi image_xpm_pipe scc
|
||||||
|
bfstm image_xwd_pipe scd
|
||||||
|
bink imf sdp
|
||||||
|
binka ingenient sdr2
|
||||||
|
bintext ipmovie sds
|
||||||
|
bit ipu sdx
|
||||||
|
bitpacked ircam segafilm
|
||||||
|
bmv iss ser
|
||||||
|
boa iv8 sga
|
||||||
|
bonk ivf shorten
|
||||||
|
brstm ivr siff
|
||||||
|
c93 jacosub simbiosis_imx
|
||||||
|
caf jv sln
|
||||||
|
cavsvideo kux smacker
|
||||||
|
cdg kvag smjpeg
|
||||||
|
cdxl laf smush
|
||||||
|
cine libgme sol
|
||||||
|
codec2 libmodplug sox
|
||||||
|
codec2raw libopenmpt spdif
|
||||||
|
concat live_flv srt
|
||||||
|
dash lmlm4 stl
|
||||||
|
data loas str
|
||||||
|
daud lrc subviewer
|
||||||
|
dcstr luodat subviewer1
|
||||||
|
derf lvf sup
|
||||||
|
dfa lxf svag
|
||||||
|
dfpwm m4v svs
|
||||||
|
dhav matroska swf
|
||||||
|
dirac mca tak
|
||||||
|
dnxhd mcc tedcaptions
|
||||||
|
dsf mgsts thp
|
||||||
|
dsicin microdvd threedostr
|
||||||
|
dss mjpeg tiertexseq
|
||||||
|
dts mjpeg_2000 tmv
|
||||||
|
dtshd mlp truehd
|
||||||
|
dv mlv tta
|
||||||
|
dvbsub mm tty
|
||||||
|
dvbtxt mmf txd
|
||||||
|
dxa mods ty
|
||||||
|
ea moflex v210
|
||||||
|
ea_cdata mov v210x
|
||||||
|
eac3 mp3 vag
|
||||||
|
epaf mpc vc1
|
||||||
|
ffmetadata mpc8 vc1t
|
||||||
|
filmstrip mpegps vividas
|
||||||
|
fits mpegts vivo
|
||||||
|
flac mpegtsraw vmd
|
||||||
|
flic mpegvideo vobsub
|
||||||
|
flv mpjpeg voc
|
||||||
|
fourxm mpl2 vpk
|
||||||
|
frm mpsub vplayer
|
||||||
|
fsb msf vqf
|
||||||
|
fwse msnwc_tcp w64
|
||||||
|
g722 msp wav
|
||||||
|
g723_1 mtaf wc3
|
||||||
|
g726 mtv webm_dash_manifest
|
||||||
|
g726le musx webvtt
|
||||||
|
g729 mv wsaud
|
||||||
|
gdv mvi wsd
|
||||||
|
genh mxf wsvqa
|
||||||
|
gif mxg wtv
|
||||||
|
gsm nc wv
|
||||||
|
gxf nistsphere wve
|
||||||
|
h261 nsp xa
|
||||||
|
h263 nsv xbin
|
||||||
|
h264 nut xmv
|
||||||
|
hca nuv xvag
|
||||||
|
hcom obu xwma
|
||||||
|
hevc ogg yop
|
||||||
|
hls oma yuv4mpegpipe
|
||||||
|
hnm paf
|
||||||
|
|
||||||
|
Enabled muxers:
|
||||||
|
a64 h263 pcm_s24be
|
||||||
|
ac3 h264 pcm_s24le
|
||||||
|
adts hash pcm_s32be
|
||||||
|
adx hds pcm_s32le
|
||||||
|
aiff hevc pcm_s8
|
||||||
|
alp hls pcm_u16be
|
||||||
|
amr ico pcm_u16le
|
||||||
|
amv ilbc pcm_u24be
|
||||||
|
apm image2 pcm_u24le
|
||||||
|
apng image2pipe pcm_u32be
|
||||||
|
aptx ipod pcm_u32le
|
||||||
|
aptx_hd ircam pcm_u8
|
||||||
|
argo_asf ismv pcm_vidc
|
||||||
|
argo_cvg ivf psp
|
||||||
|
asf jacosub rawvideo
|
||||||
|
asf_stream kvag rm
|
||||||
|
ass latm roq
|
||||||
|
ast lrc rso
|
||||||
|
au m4v rtp
|
||||||
|
avi matroska rtp_mpegts
|
||||||
|
avif matroska_audio rtsp
|
||||||
|
avm2 md5 sap
|
||||||
|
avs2 microdvd sbc
|
||||||
|
avs3 mjpeg scc
|
||||||
|
bit mkvtimestamp_v2 segafilm
|
||||||
|
caf mlp segment
|
||||||
|
cavsvideo mmf smjpeg
|
||||||
|
chromaprint mov smoothstreaming
|
||||||
|
codec2 mp2 sox
|
||||||
|
codec2raw mp3 spdif
|
||||||
|
crc mp4 spx
|
||||||
|
dash mpeg1system srt
|
||||||
|
data mpeg1vcd stream_segment
|
||||||
|
daud mpeg1video streamhash
|
||||||
|
dfpwm mpeg2dvd sup
|
||||||
|
dirac mpeg2svcd swf
|
||||||
|
dnxhd mpeg2video tee
|
||||||
|
dts mpeg2vob tg2
|
||||||
|
dv mpegts tgp
|
||||||
|
eac3 mpjpeg truehd
|
||||||
|
f4v mxf tta
|
||||||
|
ffmetadata mxf_d10 ttml
|
||||||
|
fifo mxf_opatom uncodedframecrc
|
||||||
|
fifo_test null vc1
|
||||||
|
filmstrip nut vc1t
|
||||||
|
fits obu voc
|
||||||
|
flac oga w64
|
||||||
|
flv ogg wav
|
||||||
|
framecrc ogv webm
|
||||||
|
framehash oma webm_chunk
|
||||||
|
framemd5 opus webm_dash_manifest
|
||||||
|
g722 pcm_alaw webp
|
||||||
|
g723_1 pcm_f32be webvtt
|
||||||
|
g726 pcm_f32le wsaud
|
||||||
|
g726le pcm_f64be wtv
|
||||||
|
gif pcm_f64le wv
|
||||||
|
gsm pcm_mulaw yuv4mpegpipe
|
||||||
|
gxf pcm_s16be
|
||||||
|
h261 pcm_s16le
|
||||||
|
|
||||||
|
Enabled protocols:
|
||||||
|
async httpproxy rtmpe
|
||||||
|
bluray https rtmps
|
||||||
|
cache icecast rtmpt
|
||||||
|
concat ipfs rtmpte
|
||||||
|
concatf ipns rtmpts
|
||||||
|
crypto librist rtp
|
||||||
|
data libsrt srtp
|
||||||
|
ffrtmpcrypt libssh subfile
|
||||||
|
ffrtmphttp libzmq tcp
|
||||||
|
file md5 tee
|
||||||
|
ftp mmsh tls
|
||||||
|
gopher mmst udp
|
||||||
|
gophers pipe udplite
|
||||||
|
hls prompeg
|
||||||
|
http rtmp
|
||||||
|
|
||||||
|
Enabled filters:
|
||||||
|
a3dscope dctdnoiz pad
|
||||||
|
abench ddagrab pad_opencl
|
||||||
|
abitscope deband pal100bars
|
||||||
|
acompressor deblock pal75bars
|
||||||
|
acontrast decimate palettegen
|
||||||
|
acopy deconvolve paletteuse
|
||||||
|
acrossfade dedot pan
|
||||||
|
acrossover deesser perms
|
||||||
|
acrusher deflate perspective
|
||||||
|
acue deflicker phase
|
||||||
|
addroi deinterlace_qsv photosensitivity
|
||||||
|
adeclick dejudder pixdesctest
|
||||||
|
adeclip delogo pixelize
|
||||||
|
adecorrelate derain pixscope
|
||||||
|
adelay deshake pp
|
||||||
|
adenorm deshake_opencl pp7
|
||||||
|
aderivative despill premultiply
|
||||||
|
adrawgraph detelecine prewitt
|
||||||
|
adrc dialoguenhance prewitt_opencl
|
||||||
|
adynamicequalizer dilation program_opencl
|
||||||
|
adynamicsmooth dilation_opencl pseudocolor
|
||||||
|
aecho displace psnr
|
||||||
|
aemphasis dnn_classify pullup
|
||||||
|
aeval dnn_detect qp
|
||||||
|
aevalsrc dnn_processing random
|
||||||
|
aexciter doubleweave readeia608
|
||||||
|
afade drawbox readvitc
|
||||||
|
afftdn drawgraph realtime
|
||||||
|
afftfilt drawgrid remap
|
||||||
|
afifo drawtext remap_opencl
|
||||||
|
afir drmeter removegrain
|
||||||
|
afirsrc dynaudnorm removelogo
|
||||||
|
aformat earwax repeatfields
|
||||||
|
afreqshift ebur128 replaygain
|
||||||
|
afwtdn edgedetect reverse
|
||||||
|
agate elbg rgbashift
|
||||||
|
agraphmonitor entropy rgbtestsrc
|
||||||
|
ahistogram epx roberts
|
||||||
|
aiir eq roberts_opencl
|
||||||
|
aintegral equalizer rotate
|
||||||
|
ainterleave erosion rubberband
|
||||||
|
alatency erosion_opencl sab
|
||||||
|
alimiter estdif scale
|
||||||
|
allpass exposure scale2ref
|
||||||
|
allrgb extractplanes scale_cuda
|
||||||
|
allyuv extrastereo scale_qsv
|
||||||
|
aloop fade scale_vulkan
|
||||||
|
alphaextract feedback scdet
|
||||||
|
alphamerge fftdnoiz scharr
|
||||||
|
amerge fftfilt scroll
|
||||||
|
ametadata field segment
|
||||||
|
amix fieldhint select
|
||||||
|
amovie fieldmatch selectivecolor
|
||||||
|
amplify fieldorder sendcmd
|
||||||
|
amultiply fifo separatefields
|
||||||
|
anequalizer fillborders setdar
|
||||||
|
anlmdn find_rect setfield
|
||||||
|
anlmf firequalizer setparams
|
||||||
|
anlms flanger setpts
|
||||||
|
anoisesrc flip_vulkan setrange
|
||||||
|
anull flite setsar
|
||||||
|
anullsink floodfill settb
|
||||||
|
anullsrc format shear
|
||||||
|
apad fps showcqt
|
||||||
|
aperms framepack showcwt
|
||||||
|
aphasemeter framerate showfreqs
|
||||||
|
aphaser framestep showinfo
|
||||||
|
aphaseshift freezedetect showpalette
|
||||||
|
apsyclip freezeframes showspatial
|
||||||
|
apulsator frei0r showspectrum
|
||||||
|
arealtime frei0r_src showspectrumpic
|
||||||
|
aresample fspp showvolume
|
||||||
|
areverse gblur showwaves
|
||||||
|
arnndn gblur_vulkan showwavespic
|
||||||
|
asdr geq shuffleframes
|
||||||
|
asegment gradfun shufflepixels
|
||||||
|
aselect gradients shuffleplanes
|
||||||
|
asendcmd graphmonitor sidechaincompress
|
||||||
|
asetnsamples grayworld sidechaingate
|
||||||
|
asetpts greyedge sidedata
|
||||||
|
asetrate guided sierpinski
|
||||||
|
asettb haas signalstats
|
||||||
|
ashowinfo haldclut signature
|
||||||
|
asidedata haldclutsrc silencedetect
|
||||||
|
asoftclip hdcd silenceremove
|
||||||
|
aspectralstats headphone sinc
|
||||||
|
asplit hflip sine
|
||||||
|
ass hflip_vulkan siti
|
||||||
|
astats highpass smartblur
|
||||||
|
astreamselect highshelf smptebars
|
||||||
|
asubboost hilbert smptehdbars
|
||||||
|
asubcut histeq sobel
|
||||||
|
asupercut histogram sobel_opencl
|
||||||
|
asuperpass hqdn3d sofalizer
|
||||||
|
asuperstop hqx spectrumsynth
|
||||||
|
atadenoise hstack speechnorm
|
||||||
|
atempo hsvhold split
|
||||||
|
atilt hsvkey spp
|
||||||
|
atrim hue sr
|
||||||
|
avectorscope huesaturation ssim
|
||||||
|
avgblur hwdownload stereo3d
|
||||||
|
avgblur_opencl hwmap stereotools
|
||||||
|
avgblur_vulkan hwupload stereowiden
|
||||||
|
avsynctest hwupload_cuda streamselect
|
||||||
|
axcorrelate hysteresis subtitles
|
||||||
|
azmq identity super2xsai
|
||||||
|
backgroundkey idet superequalizer
|
||||||
|
bandpass il surround
|
||||||
|
bandreject inflate swaprect
|
||||||
|
bass interlace swapuv
|
||||||
|
bbox interleave tblend
|
||||||
|
bench join telecine
|
||||||
|
bilateral kerndeint testsrc
|
||||||
|
bilateral_cuda kirsch testsrc2
|
||||||
|
biquad ladspa thistogram
|
||||||
|
bitplanenoise lagfun threshold
|
||||||
|
blackdetect latency thumbnail
|
||||||
|
blackframe lenscorrection thumbnail_cuda
|
||||||
|
blend lensfun tile
|
||||||
|
blend_vulkan libplacebo tiltshelf
|
||||||
|
blockdetect libvmaf tinterlace
|
||||||
|
blurdetect life tlut2
|
||||||
|
bm3d limitdiff tmedian
|
||||||
|
boxblur limiter tmidequalizer
|
||||||
|
boxblur_opencl loop tmix
|
||||||
|
bs2b loudnorm tonemap
|
||||||
|
bwdif lowpass tonemap_opencl
|
||||||
|
cas lowshelf tpad
|
||||||
|
cellauto lumakey transpose
|
||||||
|
channelmap lut transpose_opencl
|
||||||
|
channelsplit lut1d transpose_vulkan
|
||||||
|
chorus lut2 treble
|
||||||
|
chromaber_vulkan lut3d tremolo
|
||||||
|
chromahold lutrgb trim
|
||||||
|
chromakey lutyuv unpremultiply
|
||||||
|
chromakey_cuda mandelbrot unsharp
|
||||||
|
chromanr maskedclamp unsharp_opencl
|
||||||
|
chromashift maskedmax untile
|
||||||
|
ciescope maskedmerge v360
|
||||||
|
codecview maskedmin vaguedenoiser
|
||||||
|
color maskedthreshold varblur
|
||||||
|
colorbalance maskfun vectorscope
|
||||||
|
colorchannelmixer mcompand vflip
|
||||||
|
colorchart median vflip_vulkan
|
||||||
|
colorcontrast mergeplanes vfrdet
|
||||||
|
colorcorrect mestimate vibrance
|
||||||
|
colorhold metadata vibrato
|
||||||
|
colorize midequalizer vidstabdetect
|
||||||
|
colorkey minterpolate vidstabtransform
|
||||||
|
colorkey_opencl mix vif
|
||||||
|
colorlevels monochrome vignette
|
||||||
|
colormap morpho virtualbass
|
||||||
|
colormatrix movie vmafmotion
|
||||||
|
colorspace mpdecimate volume
|
||||||
|
colorspace_cuda mptestsrc volumedetect
|
||||||
|
colorspectrum msad vpp_qsv
|
||||||
|
colortemperature multiply vstack
|
||||||
|
compand negate w3fdif
|
||||||
|
compensationdelay nlmeans waveform
|
||||||
|
concat nlmeans_opencl weave
|
||||||
|
convolution nnedi xbr
|
||||||
|
convolution_opencl noformat xcorrelate
|
||||||
|
convolve noise xfade
|
||||||
|
copy normalize xfade_opencl
|
||||||
|
corr null xmedian
|
||||||
|
cover_rect nullsink xstack
|
||||||
|
crop nullsrc yadif
|
||||||
|
cropdetect openclsrc yadif_cuda
|
||||||
|
crossfeed oscilloscope yaepblur
|
||||||
|
crystalizer overlay yuvtestsrc
|
||||||
|
cue overlay_cuda zmq
|
||||||
|
curves overlay_opencl zoompan
|
||||||
|
datascope overlay_qsv zscale
|
||||||
|
dblur overlay_vulkan
|
||||||
|
dcshift owdenoise
|
||||||
|
|
||||||
|
Enabled bsfs:
|
||||||
|
aac_adtstoasc h264_redundant_pps pcm_rechunk
|
||||||
|
av1_frame_merge hapqa_extract pgs_frame_merge
|
||||||
|
av1_frame_split hevc_metadata prores_metadata
|
||||||
|
av1_metadata hevc_mp4toannexb remove_extradata
|
||||||
|
chomp imx_dump_header setts
|
||||||
|
dca_core mjpeg2jpeg text2movsub
|
||||||
|
dts2pts mjpega_dump_header trace_headers
|
||||||
|
dump_extradata mov2textsub truehd_core
|
||||||
|
dv_error_marker mp3_header_decompress vp9_metadata
|
||||||
|
eac3_core mpeg2_metadata vp9_raw_reorder
|
||||||
|
extract_extradata mpeg4_unpack_bframes vp9_superframe
|
||||||
|
filter_units noise vp9_superframe_split
|
||||||
|
h264_metadata null
|
||||||
|
h264_mp4toannexb opus_metadata
|
||||||
|
|
||||||
|
Enabled indevs:
|
||||||
|
dshow lavfi vfwcap
|
||||||
|
gdigrab libcdio
|
||||||
|
|
||||||
|
Enabled outdevs:
|
||||||
|
caca sdl2
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
ffmpeg -i "rtsp://admin:a12345678@10.168.1.3:554/h264/main/av_stream" -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/live/stream3"
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,165 @@
|
|||||||
|
a.summary-letter {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #2D6198;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
color: #884488;
|
||||||
|
}
|
||||||
|
|
||||||
|
#banner {
|
||||||
|
background-color: white;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#banner img {
|
||||||
|
margin-bottom: 1px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#body {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #313131;
|
||||||
|
margin: 0;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
background-color: white;
|
||||||
|
color: #202020;
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 a, h2 a, h3 a, h4 a {
|
||||||
|
text-decoration: inherit;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3, h4 {
|
||||||
|
padding-left: 0.4em;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding-bottom: 0.25em;
|
||||||
|
padding-top: 0.25em;
|
||||||
|
border: 1px solid #6A996A;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
background-color: #7BB37B;
|
||||||
|
color: #151515;
|
||||||
|
font-size: 1.2em;
|
||||||
|
padding-bottom: 0.3em;
|
||||||
|
padding-top: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
color: #313131;
|
||||||
|
font-size: 1.0em;
|
||||||
|
background-color: #ABE3AB;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
color: #313131;
|
||||||
|
font-size: 0.9em;
|
||||||
|
margin-bottom: -6px;
|
||||||
|
background-color: #BBF3BB;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
color: #313131;
|
||||||
|
font-size: 0.8em;
|
||||||
|
margin-bottom: -8px;
|
||||||
|
background-color: #D1FDD1;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navbar {
|
||||||
|
background-color: #738073;
|
||||||
|
border-bottom: 1px solid #5C665C;
|
||||||
|
border-top: 1px solid #5C665C;
|
||||||
|
margin-top: 12px;
|
||||||
|
padding: 0.3em;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navbar a, #navbar_secondary a {
|
||||||
|
color: white;
|
||||||
|
padding: 0.3em;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navbar a:hover, #navbar_secondary a:hover {
|
||||||
|
background-color: #313131;
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navbar_secondary {
|
||||||
|
background-color: #738073;
|
||||||
|
border-bottom: 1px solid #5C665C;
|
||||||
|
border-left: 1px solid #5C665C;
|
||||||
|
border-right: 1px solid #5C665C;
|
||||||
|
padding: 0.3em;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
margin-left: 3em;
|
||||||
|
margin-right: 3em;
|
||||||
|
padding: 0.3em;
|
||||||
|
border: 1px solid #bbb;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dt {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#proj_desc {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repos {
|
||||||
|
margin-left: 1em;
|
||||||
|
margin-right: 1em;
|
||||||
|
border-collapse: collapse;
|
||||||
|
border: solid 1px #6A996A;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repos th {
|
||||||
|
background-color: #7BB37B;
|
||||||
|
border: solid 1px #6A996A;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repos td {
|
||||||
|
padding: 0.2em;
|
||||||
|
border: solid 1px #6A996A;
|
||||||
|
}
|
||||||
@ -0,0 +1,877 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Developer Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Developer Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Contributing-code" href="#Contributing-code">1.1 Contributing code</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Coding-Rules-1" href="#Coding-Rules-1">2 Coding Rules</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-C-language-features" href="#C-language-features">2.1 C language features</a></li>
|
||||||
|
<li><a id="toc-Code-formatting-conventions" href="#Code-formatting-conventions">2.2 Code formatting conventions</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Vim-configuration" href="#Vim-configuration">2.2.1 Vim configuration</a></li>
|
||||||
|
<li><a id="toc-Emacs-configuration" href="#Emacs-configuration">2.2.2 Emacs configuration</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Comments" href="#Comments">2.3 Comments</a></li>
|
||||||
|
<li><a id="toc-Naming-conventions" href="#Naming-conventions">2.4 Naming conventions</a></li>
|
||||||
|
<li><a id="toc-Miscellaneous-conventions" href="#Miscellaneous-conventions">2.5 Miscellaneous conventions</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Development-Policy-1" href="#Development-Policy-1">3 Development Policy</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Patches_002fCommitting" href="#Patches_002fCommitting">3.1 Patches/Committing</a></li>
|
||||||
|
<li><a id="toc-Code" href="#Code">3.2 Code</a></li>
|
||||||
|
<li><a id="toc-Documentation_002fOther" href="#Documentation_002fOther">3.3 Documentation/Other</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Code-of-conduct" href="#Code-of-conduct">4 Code of conduct</a></li>
|
||||||
|
<li><a id="toc-Submitting-patches-1" href="#Submitting-patches-1">5 Submitting patches</a></li>
|
||||||
|
<li><a id="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">6 New codecs or formats checklist</a></li>
|
||||||
|
<li><a id="toc-Patch-submission-checklist" href="#Patch-submission-checklist">7 Patch submission checklist</a></li>
|
||||||
|
<li><a id="toc-Patch-review-process" href="#Patch-review-process">8 Patch review process</a></li>
|
||||||
|
<li><a id="toc-Regression-tests-1" href="#Regression-tests-1">9 Regression tests</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Adding-files-to-the-fate_002dsuite-dataset" href="#Adding-files-to-the-fate_002dsuite-dataset">9.1 Adding files to the fate-suite dataset</a></li>
|
||||||
|
<li><a id="toc-Visualizing-Test-Coverage" href="#Visualizing-Test-Coverage">9.2 Visualizing Test Coverage</a></li>
|
||||||
|
<li><a id="toc-Using-Valgrind" href="#Using-Valgrind">9.3 Using Valgrind</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Release-process-1" href="#Release-process-1">10 Release process</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Criteria-for-Point-Releases-1" href="#Criteria-for-Point-Releases-1">10.1 Criteria for Point Releases</a></li>
|
||||||
|
<li><a id="toc-Release-Checklist" href="#Release-Checklist">10.2 Release Checklist</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Introduction"></a>
|
||||||
|
<h2 class="chapter">1 Introduction<span class="pull-right"><a class="anchor hidden-xs" href="#Introduction" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Introduction" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>This text is concerned with the development <em>of</em> FFmpeg itself. Information
|
||||||
|
on using the FFmpeg libraries in other programs can be found elsewhere, e.g. in:
|
||||||
|
</p><ul>
|
||||||
|
<li> the installed header files
|
||||||
|
</li><li> <a href="http://ffmpeg.org/doxygen/trunk/index.html">the Doxygen documentation</a>
|
||||||
|
generated from the headers
|
||||||
|
</li><li> the examples under <samp>doc/examples</samp>
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>If you modify FFmpeg code for your own use case, you are highly encouraged to
|
||||||
|
<em>submit your changes back to us</em>, using this document as a guide. There are
|
||||||
|
both pragmatic and ideological reasons to do so:
|
||||||
|
</p><ul>
|
||||||
|
<li> Maintaining external changes to keep up with upstream development is
|
||||||
|
time-consuming and error-prone. With your code in the main tree, it will be
|
||||||
|
maintained by FFmpeg developers.
|
||||||
|
</li><li> FFmpeg developers include leading experts in the field who can find bugs or
|
||||||
|
design flaws in your code.
|
||||||
|
</li><li> By supporting the project you find useful you ensure it continues to be
|
||||||
|
maintained and developed.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>For more detailed legal information about the use of FFmpeg in
|
||||||
|
external programs read the <samp>LICENSE</samp> file in the source tree and
|
||||||
|
consult <a href="https://ffmpeg.org/legal.html">https://ffmpeg.org/legal.html</a>.
|
||||||
|
</p>
|
||||||
|
<a name="Contributing-code"></a>
|
||||||
|
<h3 class="section">1.1 Contributing code<span class="pull-right"><a class="anchor hidden-xs" href="#Contributing-code" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Contributing-code" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>All proposed code changes should be submitted for review to
|
||||||
|
<a href="mailto:ffmpeg-devel@ffmpeg.org">the development mailing list</a>, as
|
||||||
|
described in more detail in the <a href="#Submitting-patches">Submitting patches</a> chapter. The code
|
||||||
|
should comply with the <a href="#Development-Policy">Development Policy</a> and follow the <a href="#Coding-Rules">Coding Rules</a>.
|
||||||
|
The developer making the commit and the author are responsible for their changes
|
||||||
|
and should try to fix issues their commit causes.
|
||||||
|
</p>
|
||||||
|
<span id="Coding-Rules"></span><a name="Coding-Rules-1"></a>
|
||||||
|
<h2 class="chapter">2 Coding Rules<span class="pull-right"><a class="anchor hidden-xs" href="#Coding-Rules-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Coding-Rules-1" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="C-language-features"></a>
|
||||||
|
<h3 class="section">2.1 C language features<span class="pull-right"><a class="anchor hidden-xs" href="#C-language-features" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-C-language-features" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>FFmpeg is programmed in the ISO C99 language, extended with:
|
||||||
|
</p><ul>
|
||||||
|
<li> Atomic operations from C11 <samp>stdatomic.h</samp>. They are emulated on
|
||||||
|
architectures/compilers that do not support them, so all FFmpeg-internal code
|
||||||
|
may use atomics without any extra checks. However, <samp>stdatomic.h</samp> must not
|
||||||
|
be included in public headers, so they stay C99-compatible.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>Compiler-specific extensions may be used with good reason, but must not be
|
||||||
|
depended on, i.e. the code must still compile and work with compilers lacking
|
||||||
|
the extension.
|
||||||
|
</p>
|
||||||
|
<p>The following C99 features must not be used anywhere in the codebase:
|
||||||
|
</p><ul>
|
||||||
|
<li> variable-length arrays;
|
||||||
|
|
||||||
|
</li><li> complex numbers;
|
||||||
|
|
||||||
|
</li><li> mixed statements and declarations.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="Code-formatting-conventions"></a>
|
||||||
|
<h3 class="section">2.2 Code formatting conventions<span class="pull-right"><a class="anchor hidden-xs" href="#Code-formatting-conventions" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Code-formatting-conventions" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>There are the following guidelines regarding the indentation in files:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Indent size is 4.
|
||||||
|
|
||||||
|
</li><li> The TAB character is forbidden outside of Makefiles as is any
|
||||||
|
form of trailing whitespace. Commits containing either will be
|
||||||
|
rejected by the git repository.
|
||||||
|
|
||||||
|
</li><li> You should try to limit your code lines to 80 characters; however, do so if
|
||||||
|
and only if this improves readability.
|
||||||
|
|
||||||
|
</li><li> K&R coding style is used.
|
||||||
|
</li></ul>
|
||||||
|
<p>The presentation is one inspired by ’indent -i4 -kr -nut’.
|
||||||
|
</p>
|
||||||
|
<a name="Vim-configuration"></a>
|
||||||
|
<h4 class="subsection">2.2.1 Vim configuration<span class="pull-right"><a class="anchor hidden-xs" href="#Vim-configuration" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Vim-configuration" aria-hidden="true">TOC</a></span></h4>
|
||||||
|
<p>In order to configure Vim to follow FFmpeg formatting conventions, paste
|
||||||
|
the following snippet into your <samp>.vimrc</samp>:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">" indentation rules for FFmpeg: 4 spaces, no tabs
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=4
|
||||||
|
set softtabstop=4
|
||||||
|
set cindent
|
||||||
|
set cinoptions=(0
|
||||||
|
" Allow tabs in Makefiles.
|
||||||
|
autocmd FileType make,automake set noexpandtab shiftwidth=8 softtabstop=8
|
||||||
|
" Trailing whitespace and tabs are forbidden, so highlight them.
|
||||||
|
highlight ForbiddenWhitespace ctermbg=red guibg=red
|
||||||
|
match ForbiddenWhitespace /\s\+$\|\t/
|
||||||
|
" Do not highlight spaces at the end of line while typing on that line.
|
||||||
|
autocmd InsertEnter * match ForbiddenWhitespace /\t\|\s\+\%#\@<!$/
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Emacs-configuration"></a>
|
||||||
|
<h4 class="subsection">2.2.2 Emacs configuration<span class="pull-right"><a class="anchor hidden-xs" href="#Emacs-configuration" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Emacs-configuration" aria-hidden="true">TOC</a></span></h4>
|
||||||
|
<p>For Emacs, add these roughly equivalent lines to your <samp>.emacs.d/init.el</samp>:
|
||||||
|
</p><div class="example lisp">
|
||||||
|
<pre class="lisp">(c-add-style "ffmpeg"
|
||||||
|
'("k&r"
|
||||||
|
(c-basic-offset . 4)
|
||||||
|
(indent-tabs-mode . nil)
|
||||||
|
(show-trailing-whitespace . t)
|
||||||
|
(c-offsets-alist
|
||||||
|
(statement-cont . (c-lineup-assignments +)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq c-default-style "ffmpeg")
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Comments"></a>
|
||||||
|
<h3 class="section">2.3 Comments<span class="pull-right"><a class="anchor hidden-xs" href="#Comments" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Comments" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<p>Use the JavaDoc/Doxygen format (see examples below) so that code documentation
|
||||||
|
can be generated automatically. All nontrivial functions should have a comment
|
||||||
|
above them explaining what the function does, even if it is just one sentence.
|
||||||
|
All structures and their member variables should be documented, too.
|
||||||
|
</p>
|
||||||
|
<p>Avoid Qt-style and similar Doxygen syntax with <code>!</code> in it, i.e. replace
|
||||||
|
<code>//!</code> with <code>///</code> and similar. Also @ syntax should be employed
|
||||||
|
for markup commands, i.e. use <code>@param</code> and not <code>\param</code>.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">/**
|
||||||
|
* @file
|
||||||
|
* MPEG codec.
|
||||||
|
* @author ...
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Summary sentence.
|
||||||
|
* more text ...
|
||||||
|
* ...
|
||||||
|
*/
|
||||||
|
typedef struct Foobar {
|
||||||
|
int var1; /**< var1 description */
|
||||||
|
int var2; ///< var2 description
|
||||||
|
/** var3 description */
|
||||||
|
int var3;
|
||||||
|
} Foobar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Summary sentence.
|
||||||
|
* more text ...
|
||||||
|
* ...
|
||||||
|
* @param my_parameter description of my_parameter
|
||||||
|
* @return return value description
|
||||||
|
*/
|
||||||
|
int myfunc(int my_parameter)
|
||||||
|
...
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Naming-conventions"></a>
|
||||||
|
<h3 class="section">2.4 Naming conventions<span class="pull-right"><a class="anchor hidden-xs" href="#Naming-conventions" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Naming-conventions" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Names of functions, variables, and struct members must be lowercase, using
|
||||||
|
underscores (_) to separate words. For example, ‘<samp>avfilter_get_video_buffer</samp>’
|
||||||
|
is an acceptable function name and ‘<samp>AVFilterGetVideo</samp>’ is not.
|
||||||
|
</p>
|
||||||
|
<p>Struct, union, enum, and typedeffed type names must use CamelCase. All structs
|
||||||
|
and unions should be typedeffed to the same name as the struct/union tag, e.g.
|
||||||
|
<code>typedef struct AVFoo { ... } AVFoo;</code>. Enums are typically not
|
||||||
|
typedeffed.
|
||||||
|
</p>
|
||||||
|
<p>Enumeration constants and macros must be UPPERCASE, except for macros
|
||||||
|
masquerading as functions, which should use the function naming convention.
|
||||||
|
</p>
|
||||||
|
<p>All identifiers in the libraries should be namespaced as follows:
|
||||||
|
</p><ul>
|
||||||
|
<li> No namespacing for identifiers with file and lower scope (e.g. local variables,
|
||||||
|
static functions), and struct and union members,
|
||||||
|
|
||||||
|
</li><li> The <code>ff_</code> prefix must be used for variables and functions visible outside
|
||||||
|
of file scope, but only used internally within a single library, e.g.
|
||||||
|
‘<samp>ff_w64_demuxer</samp>’. This prevents name collisions when FFmpeg is statically
|
||||||
|
linked.
|
||||||
|
|
||||||
|
</li><li> For variables and functions visible outside of file scope, used internally
|
||||||
|
across multiple libraries, use <code>avpriv_</code> as prefix, for example,
|
||||||
|
‘<samp>avpriv_report_missing_feature</samp>’.
|
||||||
|
|
||||||
|
</li><li> All other internal identifiers, like private type or macro names, should be
|
||||||
|
namespaced only to avoid possible internal conflicts. E.g. <code>H264_NAL_SPS</code>
|
||||||
|
vs. <code>HEVC_NAL_SPS</code>.
|
||||||
|
|
||||||
|
</li><li> Each library has its own prefix for public symbols, in addition to the
|
||||||
|
commonly used <code>av_</code> (<code>avformat_</code> for libavformat,
|
||||||
|
<code>avcodec_</code> for libavcodec, <code>swr_</code> for libswresample, etc).
|
||||||
|
Check the existing code and choose names accordingly.
|
||||||
|
|
||||||
|
</li><li> Other public identifiers (struct, union, enum, macro, type names) must use their
|
||||||
|
library’s public prefix (<code>AV</code>, <code>Sws</code>, or <code>Swr</code>).
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>Furthermore, name space reserved for the system should not be invaded.
|
||||||
|
Identifiers ending in <code>_t</code> are reserved by
|
||||||
|
<a href="http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html#tag_02_02_02">POSIX</a>.
|
||||||
|
Also avoid names starting with <code>__</code> or <code>_</code> followed by an uppercase
|
||||||
|
letter as they are reserved by the C standard. Names starting with <code>_</code>
|
||||||
|
are reserved at the file level and may not be used for externally visible
|
||||||
|
symbols. If in doubt, just avoid names starting with <code>_</code> altogether.
|
||||||
|
</p>
|
||||||
|
<a name="Miscellaneous-conventions"></a>
|
||||||
|
<h3 class="section">2.5 Miscellaneous conventions<span class="pull-right"><a class="anchor hidden-xs" href="#Miscellaneous-conventions" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Miscellaneous-conventions" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> fprintf and printf are forbidden in libavformat and libavcodec,
|
||||||
|
please use av_log() instead.
|
||||||
|
|
||||||
|
</li><li> Casts should be used only when necessary. Unneeded parentheses
|
||||||
|
should also be avoided if they don’t make the code easier to understand.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<span id="Development-Policy"></span><a name="Development-Policy-1"></a>
|
||||||
|
<h2 class="chapter">3 Development Policy<span class="pull-right"><a class="anchor hidden-xs" href="#Development-Policy-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Development-Policy-1" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Patches_002fCommitting"></a>
|
||||||
|
<h3 class="section">3.1 Patches/Committing<span class="pull-right"><a class="anchor hidden-xs" href="#Patches_002fCommitting" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Patches_002fCommitting" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<a name="Licenses-for-patches-must-be-compatible-with-FFmpeg_002e"></a>
|
||||||
|
<p>Contributions should be licensed under the
|
||||||
|
<a href="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL 2.1</a>,
|
||||||
|
including an "or any later version" clause, or, if you prefer
|
||||||
|
a gift-style license, the
|
||||||
|
<a href="http://opensource.org/licenses/isc-license.txt">ISC</a> or
|
||||||
|
<a href="http://mit-license.org/">MIT</a> license.
|
||||||
|
<a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL 2</a> including
|
||||||
|
an "or any later version" clause is also acceptable, but LGPL is
|
||||||
|
preferred.
|
||||||
|
If you add a new file, give it a proper license header. Do not copy and
|
||||||
|
paste it from a random place, use an existing file as template.
|
||||||
|
</p>
|
||||||
|
<a name="You-must-not-commit-code-which-breaks-FFmpeg_0021"></a>
|
||||||
|
<p>This means unfinished code which is enabled and breaks compilation,
|
||||||
|
or compiles but does not work/breaks the regression tests. Code which
|
||||||
|
is unfinished but disabled may be permitted under-circumstances, like
|
||||||
|
missing samples or an implementation with a small subset of features.
|
||||||
|
Always check the mailing list for any reviewers with issues and test
|
||||||
|
FATE before you push.
|
||||||
|
</p>
|
||||||
|
<a name="Keep-the-main-commit-message-short-with-an-extended-description-below_002e"></a>
|
||||||
|
<p>The commit message should have a short first line in the form of
|
||||||
|
a ‘<samp>topic: short description</samp>’ as a header, separated by a newline
|
||||||
|
from the body consisting of an explanation of why the change is necessary.
|
||||||
|
If the commit fixes a known bug on the bug tracker, the commit message
|
||||||
|
should include its bug ID. Referring to the issue on the bug tracker does
|
||||||
|
not exempt you from writing an excerpt of the bug in the commit message.
|
||||||
|
</p>
|
||||||
|
<a name="Testing-must-be-adequate-but-not-excessive_002e"></a>
|
||||||
|
<p>If it works for you, others, and passes FATE then it should be OK to commit
|
||||||
|
it, provided it fits the other committing criteria. You should not worry about
|
||||||
|
over-testing things. If your code has problems (portability, triggers
|
||||||
|
compiler bugs, unusual environment etc) they will be reported and eventually
|
||||||
|
fixed.
|
||||||
|
</p>
|
||||||
|
<a name="Do-not-commit-unrelated-changes-together_002e"></a>
|
||||||
|
<p>They should be split them into self-contained pieces. Also do not forget
|
||||||
|
that if part B depends on part A, but A does not depend on B, then A can
|
||||||
|
and should be committed first and separate from B. Keeping changes well
|
||||||
|
split into self-contained parts makes reviewing and understanding them on
|
||||||
|
the commit log mailing list easier. This also helps in case of debugging
|
||||||
|
later on.
|
||||||
|
Also if you have doubts about splitting or not splitting, do not hesitate to
|
||||||
|
ask/discuss it on the developer mailing list.
|
||||||
|
</p>
|
||||||
|
<a name="Ask-before-you-change-the-build-system-_0028configure_002c-etc_0029_002e"></a>
|
||||||
|
<p>Do not commit changes to the build system (Makefiles, configure script)
|
||||||
|
which change behavior, defaults etc, without asking first. The same
|
||||||
|
applies to compiler warning fixes, trivial looking fixes and to code
|
||||||
|
maintained by other developers. We usually have a reason for doing things
|
||||||
|
the way we do. Send your changes as patches to the ffmpeg-devel mailing
|
||||||
|
list, and if the code maintainers say OK, you may commit. This does not
|
||||||
|
apply to files you wrote and/or maintain.
|
||||||
|
</p>
|
||||||
|
<a name="Cosmetic-changes-should-be-kept-in-separate-patches_002e"></a>
|
||||||
|
<p>We refuse source indentation and other cosmetic changes if they are mixed
|
||||||
|
with functional changes, such commits will be rejected and removed. Every
|
||||||
|
developer has his own indentation style, you should not change it. Of course
|
||||||
|
if you (re)write something, you can use your own style, even though we would
|
||||||
|
prefer if the indentation throughout FFmpeg was consistent (Many projects
|
||||||
|
force a given indentation style - we do not.). If you really need to make
|
||||||
|
indentation changes (try to avoid this), separate them strictly from real
|
||||||
|
changes.
|
||||||
|
</p>
|
||||||
|
<p>NOTE: If you had to put if(){ .. } over a large (> 5 lines) chunk of code,
|
||||||
|
then either do NOT change the indentation of the inner part within (do not
|
||||||
|
move it to the right)! or do so in a separate commit
|
||||||
|
</p>
|
||||||
|
<a name="Commit-messages-should-always-be-filled-out-properly_002e"></a>
|
||||||
|
<p>Always fill out the commit log message. Describe in a few lines what you
|
||||||
|
changed and why. You can refer to mailing list postings if you fix a
|
||||||
|
particular bug. Comments such as "fixed!" or "Changed it." are unacceptable.
|
||||||
|
Recommended format:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">area changed: Short 1 line description
|
||||||
|
|
||||||
|
details describing what and why and giving references.
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Credit-the-author-of-the-patch_002e"></a>
|
||||||
|
<p>Make sure the author of the commit is set correctly. (see git commit –author)
|
||||||
|
If you apply a patch, send an
|
||||||
|
answer to ffmpeg-devel (or wherever you got the patch from) saying that
|
||||||
|
you applied the patch.
|
||||||
|
</p>
|
||||||
|
<a name="Complex-patches-should-refer-to-discussion-surrounding-them_002e"></a>
|
||||||
|
<p>When applying patches that have been discussed (at length) on the mailing
|
||||||
|
list, reference the thread in the log message.
|
||||||
|
</p>
|
||||||
|
<a name="Always-wait-long-enough-before-pushing-changes"></a>
|
||||||
|
<p>Do NOT commit to code actively maintained by others without permission.
|
||||||
|
Send a patch to ffmpeg-devel. If no one answers within a reasonable
|
||||||
|
time-frame (12h for build failures and security fixes, 3 days small changes,
|
||||||
|
1 week for big patches) then commit your patch if you think it is OK.
|
||||||
|
Also note, the maintainer can simply ask for more time to review!
|
||||||
|
</p>
|
||||||
|
<a name="Code"></a>
|
||||||
|
<h3 class="section">3.2 Code<span class="pull-right"><a class="anchor hidden-xs" href="#Code" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Code" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<a name="API_002fABI-changes-should-be-discussed-before-they-are-made_002e"></a>
|
||||||
|
<p>Do not change behavior of the programs (renaming options etc) or public
|
||||||
|
API or ABI without first discussing it on the ffmpeg-devel mailing list.
|
||||||
|
Do not remove widely used functionality or features (redundant code can be removed).
|
||||||
|
</p>
|
||||||
|
<a name="Remember-to-check-if-you-need-to-bump-versions-for-libav_002a_002e"></a>
|
||||||
|
<p>Depending on the change, you may need to change the version integer.
|
||||||
|
Incrementing the first component means no backward compatibility to
|
||||||
|
previous versions (e.g. removal of a function from the public API).
|
||||||
|
Incrementing the second component means backward compatible change
|
||||||
|
(e.g. addition of a function to the public API or extension of an
|
||||||
|
existing data structure).
|
||||||
|
Incrementing the third component means a noteworthy binary compatible
|
||||||
|
change (e.g. encoder bug fix that matters for the decoder). The third
|
||||||
|
component always starts at 100 to distinguish FFmpeg from Libav.
|
||||||
|
</p>
|
||||||
|
<a name="Warnings-for-correct-code-may-be-disabled-if-there-is-no-other-option_002e"></a>
|
||||||
|
<p>Compiler warnings indicate potential bugs or code with bad style. If a type of
|
||||||
|
warning always points to correct and clean code, that warning should
|
||||||
|
be disabled, not the code changed.
|
||||||
|
Thus the remaining warnings can either be bugs or correct code.
|
||||||
|
If it is a bug, the bug has to be fixed. If it is not, the code should
|
||||||
|
be changed to not generate a warning unless that causes a slowdown
|
||||||
|
or obfuscates the code.
|
||||||
|
</p>
|
||||||
|
<a name="Check-untrusted-input-properly_002e"></a>
|
||||||
|
<p>Never write to unallocated memory, never write over the end of arrays,
|
||||||
|
always check values read from some untrusted source before using them
|
||||||
|
as array index or other risky things.
|
||||||
|
</p>
|
||||||
|
<a name="Documentation_002fOther"></a>
|
||||||
|
<h3 class="section">3.3 Documentation/Other<span class="pull-right"><a class="anchor hidden-xs" href="#Documentation_002fOther" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Documentation_002fOther" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<a name="Subscribe-to-the-ffmpeg_002ddevel-mailing-list_002e"></a>
|
||||||
|
<p>It is important to be subscribed to the
|
||||||
|
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
||||||
|
mailing list. Almost any non-trivial patch is to be sent there for review.
|
||||||
|
Other developers may have comments about your contribution. We expect you see
|
||||||
|
those comments, and to improve it if requested. (N.B. Experienced committers
|
||||||
|
have other channels, and may sometimes skip review for trivial fixes.) Also,
|
||||||
|
discussion here about bug fixes and FFmpeg improvements by other developers may
|
||||||
|
be helpful information for you. Finally, by being a list subscriber, your
|
||||||
|
contribution will be posted immediately to the list, without the moderation
|
||||||
|
hold which messages from non-subscribers experience.
|
||||||
|
</p>
|
||||||
|
<p>However, it is more important to the project that we receive your patch than
|
||||||
|
that you be subscribed to the ffmpeg-devel list. If you have a patch, and don’t
|
||||||
|
want to subscribe and discuss the patch, then please do send it to the list
|
||||||
|
anyway.
|
||||||
|
</p>
|
||||||
|
<a name="Subscribe-to-the-ffmpeg_002dcvslog-mailing-list_002e"></a>
|
||||||
|
<p>Diffs of all commits are sent to the
|
||||||
|
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-cvslog">ffmpeg-cvslog</a>
|
||||||
|
mailing list. Some developers read this list to review all code base changes
|
||||||
|
from all sources. Subscribing to this list is not mandatory.
|
||||||
|
</p>
|
||||||
|
<a name="Keep-the-documentation-up-to-date_002e"></a>
|
||||||
|
<p>Update the documentation if you change behavior or add features. If you are
|
||||||
|
unsure how best to do this, send a patch to ffmpeg-devel, the documentation
|
||||||
|
maintainer(s) will review and commit your stuff.
|
||||||
|
</p>
|
||||||
|
<a name="Important-discussions-should-be-accessible-to-all_002e"></a>
|
||||||
|
<p>Try to keep important discussions and requests (also) on the public
|
||||||
|
developer mailing list, so that all developers can benefit from them.
|
||||||
|
</p>
|
||||||
|
<a name="Check-your-entries-in-MAINTAINERS_002e"></a>
|
||||||
|
<p>Make sure that no parts of the codebase that you maintain are missing from the
|
||||||
|
<samp>MAINTAINERS</samp> file. If something that you want to maintain is missing add it with
|
||||||
|
your name after it.
|
||||||
|
If at some point you no longer want to maintain some code, then please help in
|
||||||
|
finding a new maintainer and also don’t forget to update the <samp>MAINTAINERS</samp> file.
|
||||||
|
</p>
|
||||||
|
<p>We think our rules are not too hard. If you have comments, contact us.
|
||||||
|
</p>
|
||||||
|
<a name="Code-of-conduct"></a>
|
||||||
|
<h2 class="chapter">4 Code of conduct<span class="pull-right"><a class="anchor hidden-xs" href="#Code-of-conduct" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Code-of-conduct" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Be friendly and respectful towards others and third parties.
|
||||||
|
Treat others the way you yourself want to be treated.
|
||||||
|
</p>
|
||||||
|
<p>Be considerate. Not everyone shares the same viewpoint and priorities as you do.
|
||||||
|
Different opinions and interpretations help the project.
|
||||||
|
Looking at issues from a different perspective assists development.
|
||||||
|
</p>
|
||||||
|
<p>Do not assume malice for things that can be attributed to incompetence. Even if
|
||||||
|
it is malice, it’s rarely good to start with that as initial assumption.
|
||||||
|
</p>
|
||||||
|
<p>Stay friendly even if someone acts contrarily. Everyone has a bad day
|
||||||
|
once in a while.
|
||||||
|
If you yourself have a bad day or are angry then try to take a break and reply
|
||||||
|
once you are calm and without anger if you have to.
|
||||||
|
</p>
|
||||||
|
<p>Try to help other team members and cooperate if you can.
|
||||||
|
</p>
|
||||||
|
<p>The goal of software development is to create technical excellence, not for any
|
||||||
|
individual to be better and "win" against the others. Large software projects
|
||||||
|
are only possible and successful through teamwork.
|
||||||
|
</p>
|
||||||
|
<p>If someone struggles do not put them down. Give them a helping hand
|
||||||
|
instead and point them in the right direction.
|
||||||
|
</p>
|
||||||
|
<p>Finally, keep in mind the immortal words of Bill and Ted,
|
||||||
|
"Be excellent to each other."
|
||||||
|
</p>
|
||||||
|
<span id="Submitting-patches"></span><a name="Submitting-patches-1"></a>
|
||||||
|
<h2 class="chapter">5 Submitting patches<span class="pull-right"><a class="anchor hidden-xs" href="#Submitting-patches-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Submitting-patches-1" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>First, read the <a href="#Coding-Rules">Coding Rules</a> above if you did not yet, in particular
|
||||||
|
the rules regarding patch submission.
|
||||||
|
</p>
|
||||||
|
<p>When you submit your patch, please use <code>git format-patch</code> or
|
||||||
|
<code>git send-email</code>. We cannot read other diffs :-).
|
||||||
|
</p>
|
||||||
|
<p>Also please do not submit a patch which contains several unrelated changes.
|
||||||
|
Split it into separate, self-contained pieces. This does not mean splitting
|
||||||
|
file by file. Instead, make the patch as small as possible while still
|
||||||
|
keeping it as a logical unit that contains an individual change, even
|
||||||
|
if it spans multiple files. This makes reviewing your patches much easier
|
||||||
|
for us and greatly increases your chances of getting your patch applied.
|
||||||
|
</p>
|
||||||
|
<p>Use the patcheck tool of FFmpeg to check your patch.
|
||||||
|
The tool is located in the tools directory.
|
||||||
|
</p>
|
||||||
|
<p>Run the <a href="#Regression-tests">Regression tests</a> before submitting a patch in order to verify
|
||||||
|
it does not cause unexpected problems.
|
||||||
|
</p>
|
||||||
|
<p>It also helps quite a bit if you tell us what the patch does (for example
|
||||||
|
’replaces lrint by lrintf’), and why (for example ’*BSD isn’t C99 compliant
|
||||||
|
and has no lrint()’)
|
||||||
|
</p>
|
||||||
|
<p>Also please if you send several patches, send each patch as a separate mail,
|
||||||
|
do not attach several unrelated patches to the same mail.
|
||||||
|
</p>
|
||||||
|
<p>Patches should be posted to the
|
||||||
|
<a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
|
||||||
|
mailing list. Use <code>git send-email</code> when possible since it will properly
|
||||||
|
send patches without requiring extra care. If you cannot, then send patches
|
||||||
|
as base64-encoded attachments, so your patch is not trashed during
|
||||||
|
transmission. Also ensure the correct mime type is used
|
||||||
|
(text/x-diff or text/x-patch or at least text/plain) and that only one
|
||||||
|
patch is inline or attached per mail.
|
||||||
|
You can check <a href="https://patchwork.ffmpeg.org">https://patchwork.ffmpeg.org</a>, if your patch does not show up, its mime type
|
||||||
|
likely was wrong.
|
||||||
|
</p>
|
||||||
|
<a name="Sending-patches-from-email-clients"></a>
|
||||||
|
<p>Using <code>git send-email</code> might not be desirable for everyone. The
|
||||||
|
following trick allows to send patches via email clients in a safe
|
||||||
|
way. It has been tested with Outlook and Thunderbird (with X-Unsent
|
||||||
|
extension) and might work with other applications.
|
||||||
|
</p>
|
||||||
|
<p>Create your patch like this:
|
||||||
|
</p>
|
||||||
|
<pre class="verbatim">git format-patch -s -o "outputfolder" --add-header "X-Unsent: 1" --suffix .eml --to ffmpeg-devel@ffmpeg.org -1 1a2b3c4d
|
||||||
|
</pre>
|
||||||
|
<p>Now you’ll just need to open the eml file with the email application
|
||||||
|
and execute ’Send’.
|
||||||
|
</p>
|
||||||
|
<a name="Reviews"></a>
|
||||||
|
<p>Your patch will be reviewed on the mailing list. You will likely be asked
|
||||||
|
to make some changes and are expected to send in an improved version that
|
||||||
|
incorporates the requests from the review. This process may go through
|
||||||
|
several iterations. Once your patch is deemed good enough, some developer
|
||||||
|
will pick it up and commit it to the official FFmpeg tree.
|
||||||
|
</p>
|
||||||
|
<p>Give us a few days to react. But if some time passes without reaction,
|
||||||
|
send a reminder by email. Your patch should eventually be dealt with.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="New-codecs-or-formats-checklist"></a>
|
||||||
|
<h2 class="chapter">6 New codecs or formats checklist<span class="pull-right"><a class="anchor hidden-xs" href="#New-codecs-or-formats-checklist" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-New-codecs-or-formats-checklist" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li> Did you use av_cold for codec initialization and close functions?
|
||||||
|
|
||||||
|
</li><li> Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
|
||||||
|
AVInputFormat/AVOutputFormat struct?
|
||||||
|
|
||||||
|
</li><li> Did you bump the minor version number (and reset the micro version
|
||||||
|
number) in <samp>libavcodec/version.h</samp> or <samp>libavformat/version.h</samp>?
|
||||||
|
|
||||||
|
</li><li> Did you register it in <samp>allcodecs.c</samp> or <samp>allformats.c</samp>?
|
||||||
|
|
||||||
|
</li><li> Did you add the AVCodecID to <samp>avcodec.h</samp>?
|
||||||
|
When adding new codec IDs, also add an entry to the codec descriptor
|
||||||
|
list in <samp>libavcodec/codec_desc.c</samp>.
|
||||||
|
|
||||||
|
</li><li> If it has a FourCC, did you add it to <samp>libavformat/riff.c</samp>,
|
||||||
|
even if it is only a decoder?
|
||||||
|
|
||||||
|
</li><li> Did you add a rule to compile the appropriate files in the Makefile?
|
||||||
|
Remember to do this even if you’re just adding a format to a file that is
|
||||||
|
already being compiled by some other rule, like a raw demuxer.
|
||||||
|
|
||||||
|
</li><li> Did you add an entry to the table of supported formats or codecs in
|
||||||
|
<samp>doc/general.texi</samp>?
|
||||||
|
|
||||||
|
</li><li> Did you add an entry in the Changelog?
|
||||||
|
|
||||||
|
</li><li> If it depends on a parser or a library, did you add that dependency in
|
||||||
|
configure?
|
||||||
|
|
||||||
|
</li><li> Did you <code>git add</code> the appropriate files before committing?
|
||||||
|
|
||||||
|
</li><li> Did you make sure it compiles standalone, i.e. with
|
||||||
|
<code>configure --disable-everything --enable-decoder=foo</code>
|
||||||
|
(or <code>--enable-demuxer</code> or whatever your component is)?
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="Patch-submission-checklist"></a>
|
||||||
|
<h2 class="chapter">7 Patch submission checklist<span class="pull-right"><a class="anchor hidden-xs" href="#Patch-submission-checklist" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Patch-submission-checklist" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li> Does <code>make fate</code> pass with the patch applied?
|
||||||
|
|
||||||
|
</li><li> Was the patch generated with git format-patch or send-email?
|
||||||
|
|
||||||
|
</li><li> Did you sign-off your patch? (<code>git commit -s</code>)
|
||||||
|
See <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/process/submitting-patches.rst">Sign your work</a> for the meaning
|
||||||
|
of <em>sign-off</em>.
|
||||||
|
|
||||||
|
</li><li> Did you provide a clear git commit log message?
|
||||||
|
|
||||||
|
</li><li> Is the patch against latest FFmpeg git master branch?
|
||||||
|
|
||||||
|
</li><li> Are you subscribed to ffmpeg-devel?
|
||||||
|
(the list is subscribers only due to spam)
|
||||||
|
|
||||||
|
</li><li> Have you checked that the changes are minimal, so that the same cannot be
|
||||||
|
achieved with a smaller patch and/or simpler final code?
|
||||||
|
|
||||||
|
</li><li> If the change is to speed critical code, did you benchmark it?
|
||||||
|
|
||||||
|
</li><li> If you did any benchmarks, did you provide them in the mail?
|
||||||
|
|
||||||
|
</li><li> Have you checked that the patch does not introduce buffer overflows or
|
||||||
|
other security issues?
|
||||||
|
|
||||||
|
</li><li> Did you test your decoder or demuxer against damaged data? If no, see
|
||||||
|
tools/trasher, the noise bitstream filter, and
|
||||||
|
<a href="http://caca.zoy.org/wiki/zzuf">zzuf</a>. Your decoder or demuxer
|
||||||
|
should not crash, end in a (near) infinite loop, or allocate ridiculous
|
||||||
|
amounts of memory when fed damaged data.
|
||||||
|
|
||||||
|
</li><li> Did you test your decoder or demuxer against sample files?
|
||||||
|
Samples may be obtained at <a href="https://samples.ffmpeg.org">https://samples.ffmpeg.org</a>.
|
||||||
|
|
||||||
|
</li><li> Does the patch not mix functional and cosmetic changes?
|
||||||
|
|
||||||
|
</li><li> Did you add tabs or trailing whitespace to the code? Both are forbidden.
|
||||||
|
|
||||||
|
</li><li> Is the patch attached to the email you send?
|
||||||
|
|
||||||
|
</li><li> Is the mime type of the patch correct? It should be text/x-diff or
|
||||||
|
text/x-patch or at least text/plain and not application/octet-stream.
|
||||||
|
|
||||||
|
</li><li> If the patch fixes a bug, did you provide a verbose analysis of the bug?
|
||||||
|
|
||||||
|
</li><li> If the patch fixes a bug, did you provide enough information, including
|
||||||
|
a sample, so the bug can be reproduced and the fix can be verified?
|
||||||
|
Note please do not attach samples >100k to mails but rather provide a
|
||||||
|
URL, you can upload to <a href="https://streams.videolan.org/upload/">https://streams.videolan.org/upload/</a>.
|
||||||
|
|
||||||
|
</li><li> Did you provide a verbose summary about what the patch does change?
|
||||||
|
|
||||||
|
</li><li> Did you provide a verbose explanation why it changes things like it does?
|
||||||
|
|
||||||
|
</li><li> Did you provide a verbose summary of the user visible advantages and
|
||||||
|
disadvantages if the patch is applied?
|
||||||
|
|
||||||
|
</li><li> Did you provide an example so we can verify the new feature added by the
|
||||||
|
patch easily?
|
||||||
|
|
||||||
|
</li><li> If you added a new file, did you insert a license header? It should be
|
||||||
|
taken from FFmpeg, not randomly copied and pasted from somewhere else.
|
||||||
|
|
||||||
|
</li><li> You should maintain alphabetical order in alphabetically ordered lists as
|
||||||
|
long as doing so does not break API/ABI compatibility.
|
||||||
|
|
||||||
|
</li><li> Lines with similar content should be aligned vertically when doing so
|
||||||
|
improves readability.
|
||||||
|
|
||||||
|
</li><li> Consider adding a regression test for your code.
|
||||||
|
|
||||||
|
</li><li> If you added YASM code please check that things still work with –disable-yasm.
|
||||||
|
|
||||||
|
</li><li> Make sure you check the return values of function and return appropriate
|
||||||
|
error codes. Especially memory allocation functions like <code>av_malloc()</code>
|
||||||
|
are notoriously left unchecked, which is a serious problem.
|
||||||
|
|
||||||
|
</li><li> Test your code with valgrind and or Address Sanitizer to ensure it’s free
|
||||||
|
of leaks, out of array accesses, etc.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<a name="Patch-review-process"></a>
|
||||||
|
<h2 class="chapter">8 Patch review process<span class="pull-right"><a class="anchor hidden-xs" href="#Patch-review-process" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Patch-review-process" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>All patches posted to ffmpeg-devel will be reviewed, unless they contain a
|
||||||
|
clear note that the patch is not for the git master branch.
|
||||||
|
Reviews and comments will be posted as replies to the patch on the
|
||||||
|
mailing list. The patch submitter then has to take care of every comment,
|
||||||
|
that can be by resubmitting a changed patch or by discussion. Resubmitted
|
||||||
|
patches will themselves be reviewed like any other patch. If at some point
|
||||||
|
a patch passes review with no comments then it is approved, that can for
|
||||||
|
simple and small patches happen immediately while large patches will generally
|
||||||
|
have to be changed and reviewed many times before they are approved.
|
||||||
|
After a patch is approved it will be committed to the repository.
|
||||||
|
</p>
|
||||||
|
<p>We will review all submitted patches, but sometimes we are quite busy so
|
||||||
|
especially for large patches this can take several weeks.
|
||||||
|
</p>
|
||||||
|
<p>If you feel that the review process is too slow and you are willing to try to
|
||||||
|
take over maintainership of the area of code you change then just clone
|
||||||
|
git master and maintain the area of code there. We will merge each area from
|
||||||
|
where its best maintained.
|
||||||
|
</p>
|
||||||
|
<p>When resubmitting patches, please do not make any significant changes
|
||||||
|
not related to the comments received during review. Such patches will
|
||||||
|
be rejected. Instead, submit significant changes or new features as
|
||||||
|
separate patches.
|
||||||
|
</p>
|
||||||
|
<p>Everyone is welcome to review patches. Also if you are waiting for your patch
|
||||||
|
to be reviewed, please consider helping to review other patches, that is a great
|
||||||
|
way to get everyone’s patches reviewed sooner.
|
||||||
|
</p>
|
||||||
|
<span id="Regression-tests"></span><a name="Regression-tests-1"></a>
|
||||||
|
<h2 class="chapter">9 Regression tests<span class="pull-right"><a class="anchor hidden-xs" href="#Regression-tests-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Regression-tests-1" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Before submitting a patch (or committing to the repository), you should at least
|
||||||
|
test that you did not break anything.
|
||||||
|
</p>
|
||||||
|
<p>Running ’make fate’ accomplishes this, please see <a href="fate.html">fate.html</a> for details.
|
||||||
|
</p>
|
||||||
|
<p>[Of course, some patches may change the results of the regression tests. In
|
||||||
|
this case, the reference results of the regression tests shall be modified
|
||||||
|
accordingly].
|
||||||
|
</p>
|
||||||
|
<a name="Adding-files-to-the-fate_002dsuite-dataset"></a>
|
||||||
|
<h3 class="section">9.1 Adding files to the fate-suite dataset<span class="pull-right"><a class="anchor hidden-xs" href="#Adding-files-to-the-fate_002dsuite-dataset" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Adding-files-to-the-fate_002dsuite-dataset" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>When there is no muxer or encoder available to generate test media for a
|
||||||
|
specific test then the media has to be included in the fate-suite.
|
||||||
|
First please make sure that the sample file is as small as possible to test the
|
||||||
|
respective decoder or demuxer sufficiently. Large files increase network
|
||||||
|
bandwidth and disk space requirements.
|
||||||
|
Once you have a working fate test and fate sample, provide in the commit
|
||||||
|
message or introductory message for the patch series that you post to
|
||||||
|
the ffmpeg-devel mailing list, a direct link to download the sample media.
|
||||||
|
</p>
|
||||||
|
<a name="Visualizing-Test-Coverage"></a>
|
||||||
|
<h3 class="section">9.2 Visualizing Test Coverage<span class="pull-right"><a class="anchor hidden-xs" href="#Visualizing-Test-Coverage" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Visualizing-Test-Coverage" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The FFmpeg build system allows visualizing the test coverage in an easy
|
||||||
|
manner with the coverage tools <code>gcov</code>/<code>lcov</code>. This involves
|
||||||
|
the following steps:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> Configure to compile with instrumentation enabled:
|
||||||
|
<code>configure --toolchain=gcov</code>.
|
||||||
|
|
||||||
|
</li><li> Run your test case, either manually or via FATE. This can be either
|
||||||
|
the full FATE regression suite, or any arbitrary invocation of any
|
||||||
|
front-end tool provided by FFmpeg, in any combination.
|
||||||
|
|
||||||
|
</li><li> Run <code>make lcov</code> to generate coverage data in HTML format.
|
||||||
|
|
||||||
|
</li><li> View <code>lcov/index.html</code> in your preferred HTML viewer.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<p>You can use the command <code>make lcov-reset</code> to reset the coverage
|
||||||
|
measurements. You will need to rerun <code>make lcov</code> after running a
|
||||||
|
new test.
|
||||||
|
</p>
|
||||||
|
<a name="Using-Valgrind"></a>
|
||||||
|
<h3 class="section">9.3 Using Valgrind<span class="pull-right"><a class="anchor hidden-xs" href="#Using-Valgrind" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Using-Valgrind" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The configure script provides a shortcut for using valgrind to spot bugs
|
||||||
|
related to memory handling. Just add the option
|
||||||
|
<code>--toolchain=valgrind-memcheck</code> or <code>--toolchain=valgrind-massif</code>
|
||||||
|
to your configure line, and reasonable defaults will be set for running
|
||||||
|
FATE under the supervision of either the <strong>memcheck</strong> or the
|
||||||
|
<strong>massif</strong> tool of the valgrind suite.
|
||||||
|
</p>
|
||||||
|
<p>In case you need finer control over how valgrind is invoked, use the
|
||||||
|
<code>--target-exec='valgrind <your_custom_valgrind_options></code> option in
|
||||||
|
your configure line instead.
|
||||||
|
</p>
|
||||||
|
<span id="Release-process"></span><a name="Release-process-1"></a>
|
||||||
|
<h2 class="chapter">10 Release process<span class="pull-right"><a class="anchor hidden-xs" href="#Release-process-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Release-process-1" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>FFmpeg maintains a set of <strong>release branches</strong>, which are the
|
||||||
|
recommended deliverable for system integrators and distributors (such as
|
||||||
|
Linux distributions, etc.). At regular times, a <strong>release
|
||||||
|
manager</strong> prepares, tests and publishes tarballs on the
|
||||||
|
<a href="https://ffmpeg.org">https://ffmpeg.org</a> website.
|
||||||
|
</p>
|
||||||
|
<p>There are two kinds of releases:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> <strong>Major releases</strong> always include the latest and greatest
|
||||||
|
features and functionality.
|
||||||
|
|
||||||
|
</li><li> <strong>Point releases</strong> are cut from <strong>release</strong> branches,
|
||||||
|
which are named <code>release/X</code>, with <code>X</code> being the release
|
||||||
|
version number.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<p>Note that we promise to our users that shared libraries from any FFmpeg
|
||||||
|
release never break programs that have been <strong>compiled</strong> against
|
||||||
|
previous versions of <strong>the same release series</strong> in any case!
|
||||||
|
</p>
|
||||||
|
<p>However, from time to time, we do make API changes that require adaptations
|
||||||
|
in applications. Such changes are only allowed in (new) major releases and
|
||||||
|
require further steps such as bumping library version numbers and/or
|
||||||
|
adjustments to the symbol versioning file. Please discuss such changes
|
||||||
|
on the <strong>ffmpeg-devel</strong> mailing list in time to allow forward planning.
|
||||||
|
</p>
|
||||||
|
<span id="Criteria-for-Point-Releases"></span><a name="Criteria-for-Point-Releases-1"></a>
|
||||||
|
<h3 class="section">10.1 Criteria for Point Releases<span class="pull-right"><a class="anchor hidden-xs" href="#Criteria-for-Point-Releases-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Criteria-for-Point-Releases-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Changes that match the following criteria are valid candidates for
|
||||||
|
inclusion into a point release:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> Fixes a security issue, preferably identified by a <strong>CVE
|
||||||
|
number</strong> issued by <a href="http://cve.mitre.org/">http://cve.mitre.org/</a>.
|
||||||
|
|
||||||
|
</li><li> Fixes a documented bug in <a href="https://trac.ffmpeg.org">https://trac.ffmpeg.org</a>.
|
||||||
|
|
||||||
|
</li><li> Improves the included documentation.
|
||||||
|
|
||||||
|
</li><li> Retains both source code and binary compatibility with previous
|
||||||
|
point releases of the same release branch.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<p>The order for checking the rules is (1 OR 2 OR 3) AND 4.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Release-Checklist"></a>
|
||||||
|
<h3 class="section">10.2 Release Checklist<span class="pull-right"><a class="anchor hidden-xs" href="#Release-Checklist" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Release-Checklist" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The release process involves the following steps:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> Ensure that the <samp>RELEASE</samp> file contains the version number for
|
||||||
|
the upcoming release.
|
||||||
|
|
||||||
|
</li><li> Add the release at <a href="https://trac.ffmpeg.org/admin/ticket/versions">https://trac.ffmpeg.org/admin/ticket/versions</a>.
|
||||||
|
|
||||||
|
</li><li> Announce the intent to do a release to the mailing list.
|
||||||
|
|
||||||
|
</li><li> Make sure all relevant security fixes have been backported. See
|
||||||
|
<a href="https://ffmpeg.org/security.html">https://ffmpeg.org/security.html</a>.
|
||||||
|
|
||||||
|
</li><li> Ensure that the FATE regression suite still passes in the release
|
||||||
|
branch on at least <strong>i386</strong> and <strong>amd64</strong>
|
||||||
|
(cf. <a href="#Regression-tests">Regression tests</a>).
|
||||||
|
|
||||||
|
</li><li> Prepare the release tarballs in <code>bz2</code> and <code>gz</code> formats, and
|
||||||
|
supplementing files that contain <code>gpg</code> signatures
|
||||||
|
|
||||||
|
</li><li> Publish the tarballs at <a href="https://ffmpeg.org/releases">https://ffmpeg.org/releases</a>. Create and
|
||||||
|
push an annotated tag in the form <code>nX</code>, with <code>X</code>
|
||||||
|
containing the version number.
|
||||||
|
|
||||||
|
</li><li> Propose and send a patch to the <strong>ffmpeg-devel</strong> mailing list
|
||||||
|
with a news entry for the website.
|
||||||
|
|
||||||
|
</li><li> Publish the news entry.
|
||||||
|
|
||||||
|
</li><li> Send an announcement to the mailing list.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,345 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
FFmpeg Automated Testing Environment
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
FFmpeg Automated Testing Environment
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="Top"></a>
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||||
|
<li><a id="toc-Using-FATE-from-your-FFmpeg-source-directory" href="#Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></li>
|
||||||
|
<li><a id="toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></li>
|
||||||
|
<li><a id="toc-Uploading-new-samples-to-the-fate-suite" href="#Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></li>
|
||||||
|
<li><a id="toc-FATE-makefile-targets-and-variables" href="#FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Makefile-targets" href="#Makefile-targets">5.1 Makefile targets</a></li>
|
||||||
|
<li><a id="toc-Makefile-variables" href="#Makefile-variables">5.2 Makefile variables</a></li>
|
||||||
|
<li><a id="toc-Examples" href="#Examples">5.3 Examples</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Introduction"></a>
|
||||||
|
<h2 class="chapter">1 Introduction<span class="pull-right"><a class="anchor hidden-xs" href="#Introduction" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Introduction" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>FATE is an extended regression suite on the client-side and a means
|
||||||
|
for results aggregation and presentation on the server-side.
|
||||||
|
</p>
|
||||||
|
<p>The first part of this document explains how you can use FATE from
|
||||||
|
your FFmpeg source directory to test your ffmpeg binary. The second
|
||||||
|
part describes how you can run FATE to submit the results to FFmpeg’s
|
||||||
|
FATE server.
|
||||||
|
</p>
|
||||||
|
<p>In any way you can have a look at the publicly viewable FATE results
|
||||||
|
by visiting this website:
|
||||||
|
</p>
|
||||||
|
<p><a href="http://fate.ffmpeg.org/">http://fate.ffmpeg.org/</a>
|
||||||
|
</p>
|
||||||
|
<p>This is especially recommended for all people contributing source
|
||||||
|
code to FFmpeg, as it can be seen if some test on some platform broke
|
||||||
|
with their recent contribution. This usually happens on the platforms
|
||||||
|
the developers could not test on.
|
||||||
|
</p>
|
||||||
|
<p>The second part of this document describes how you can run FATE to
|
||||||
|
submit your results to FFmpeg’s FATE server. If you want to submit your
|
||||||
|
results be sure to check that your combination of CPU, OS and compiler
|
||||||
|
is not already listed on the above mentioned website.
|
||||||
|
</p>
|
||||||
|
<p>In the third part you can find a comprehensive listing of FATE makefile
|
||||||
|
targets and variables.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Using-FATE-from-your-FFmpeg-source-directory"></a>
|
||||||
|
<h2 class="chapter">2 Using FATE from your FFmpeg source directory<span class="pull-right"><a class="anchor hidden-xs" href="#Using-FATE-from-your-FFmpeg-source-directory" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Using-FATE-from-your-FFmpeg-source-directory" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>If you want to run FATE on your machine you need to have the samples
|
||||||
|
in place. You can get the samples via the build target fate-rsync.
|
||||||
|
Use this command from the top-level source directory:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">make fate-rsync SAMPLES=fate-suite/
|
||||||
|
make fate SAMPLES=fate-suite/
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>The above commands set the samples location by passing a makefile
|
||||||
|
variable via command line. It is also possible to set the samples
|
||||||
|
location at source configuration time by invoking configure with
|
||||||
|
<samp>--samples=<path to the samples directory></samp>. Afterwards you can
|
||||||
|
invoke the makefile targets without setting the <var>SAMPLES</var> makefile
|
||||||
|
variable. This is illustrated by the following commands:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">./configure --samples=fate-suite/
|
||||||
|
make fate-rsync
|
||||||
|
make fate
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Yet another way to tell FATE about the location of the sample
|
||||||
|
directory is by making sure the environment variable FATE_SAMPLES
|
||||||
|
contains the path to your samples directory. This can be achieved
|
||||||
|
by e.g. putting that variable in your shell profile or by setting
|
||||||
|
it in your interactive session.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">FATE_SAMPLES=fate-suite/ make fate
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<div class="info">
|
||||||
|
<p>Do not put a ’~’ character in the samples path to indicate a home
|
||||||
|
directory. Because of shell nuances, this will cause FATE to fail.
|
||||||
|
</p></div>
|
||||||
|
<p>To get the complete list of tests, run the command:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">make fate-list
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>You can specify a subset of tests to run by specifying the
|
||||||
|
corresponding elements from the list with the <code>fate-</code> prefix,
|
||||||
|
e.g. as in:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">make fate-ffprobe_compact fate-ffprobe_xml
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>This makes it easier to run a few tests in case of failure without
|
||||||
|
running the complete test suite.
|
||||||
|
</p>
|
||||||
|
<p>To use a custom wrapper to run the test, pass <samp>--target-exec</samp> to
|
||||||
|
<code>configure</code> or set the <var>TARGET_EXEC</var> Make variable.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Submitting-the-results-to-the-FFmpeg-result-aggregation-server"></a>
|
||||||
|
<h2 class="chapter">3 Submitting the results to the FFmpeg result aggregation server<span class="pull-right"><a class="anchor hidden-xs" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>To submit your results to the server you should run fate through the
|
||||||
|
shell script <samp>tests/fate.sh</samp> from the FFmpeg sources. This script needs
|
||||||
|
to be invoked with a configuration file as its first argument.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">tests/fate.sh /path/to/fate_config
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>A configuration file template with comments describing the individual
|
||||||
|
configuration variables can be found at <samp>doc/fate_config.sh.template</samp>.
|
||||||
|
</p>
|
||||||
|
<p>The mentioned configuration template is also available here:
|
||||||
|
</p><pre class="verbatim">slot= # some unique identifier
|
||||||
|
repo=git://source.ffmpeg.org/ffmpeg.git # the source repository
|
||||||
|
#branch=release/2.6 # the branch to test
|
||||||
|
samples= # path to samples directory
|
||||||
|
workdir= # directory in which to do all the work
|
||||||
|
#fate_recv="ssh -T fate@fate.ffmpeg.org" # command to submit report
|
||||||
|
comment= # optional description
|
||||||
|
build_only= # set to "yes" for a compile-only instance that skips tests
|
||||||
|
ignore_tests=
|
||||||
|
|
||||||
|
# the following are optional and map to configure options
|
||||||
|
arch=
|
||||||
|
cpu=
|
||||||
|
cross_prefix=
|
||||||
|
as=
|
||||||
|
cc=
|
||||||
|
ld=
|
||||||
|
target_os=
|
||||||
|
sysroot=
|
||||||
|
target_exec=
|
||||||
|
target_path=
|
||||||
|
target_samples=
|
||||||
|
extra_cflags=
|
||||||
|
extra_ldflags=
|
||||||
|
extra_libs=
|
||||||
|
extra_conf= # extra configure options not covered above
|
||||||
|
|
||||||
|
#make= # name of GNU make if not 'make'
|
||||||
|
makeopts= # extra options passed to 'make'
|
||||||
|
#makeopts_fate= # extra options passed to 'make' when running tests,
|
||||||
|
# defaulting to makeopts above if this is not set
|
||||||
|
#tar= # command to create a tar archive from its arguments on stdout,
|
||||||
|
# defaults to 'tar c'
|
||||||
|
</pre>
|
||||||
|
<p>Create a configuration that suits your needs, based on the configuration
|
||||||
|
template. The <code>slot</code> configuration variable can be any string that is not
|
||||||
|
yet used, but it is suggested that you name it adhering to the following
|
||||||
|
pattern ‘<samp><var>arch</var>-<var>os</var>-<var>compiler</var>-<var>compiler version</var></samp>’. The
|
||||||
|
configuration file itself will be sourced in a shell script, therefore all
|
||||||
|
shell features may be used. This enables you to setup the environment as you
|
||||||
|
need it for your build.
|
||||||
|
</p>
|
||||||
|
<p>For your first test runs the <code>fate_recv</code> variable should be empty or
|
||||||
|
commented out. This will run everything as normal except that it will omit
|
||||||
|
the submission of the results to the server. The following files should be
|
||||||
|
present in $workdir as specified in the configuration file:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> configure.log
|
||||||
|
</li><li> compile.log
|
||||||
|
</li><li> test.log
|
||||||
|
</li><li> report
|
||||||
|
</li><li> version
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>When you have everything working properly you can create an SSH key pair
|
||||||
|
and send the public key to the FATE server administrator who can be contacted
|
||||||
|
at the email address <a href="mailto:fate-admin@ffmpeg.org">fate-admin@ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Configure your SSH client to use public key authentication with that key
|
||||||
|
when connecting to the FATE server. Also do not forget to check the identity
|
||||||
|
of the server and to accept its host key. This can usually be achieved by
|
||||||
|
running your SSH client manually and killing it after you accepted the key.
|
||||||
|
The FATE server’s fingerprint is:
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span>‘<samp>RSA</samp>’</span></dt>
|
||||||
|
<dd><p>d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>ECDSA</samp>’</span></dt>
|
||||||
|
<dd><p>76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>If you have problems connecting to the FATE server, it may help to try out
|
||||||
|
the <code>ssh</code> command with one or more <samp>-v</samp> options. You should
|
||||||
|
get detailed output concerning your SSH configuration and the authentication
|
||||||
|
process.
|
||||||
|
</p>
|
||||||
|
<p>The only thing left is to automate the execution of the fate.sh script and
|
||||||
|
the synchronisation of the samples directory.
|
||||||
|
</p>
|
||||||
|
<a name="Uploading-new-samples-to-the-fate-suite"></a>
|
||||||
|
<h2 class="chapter">4 Uploading new samples to the fate suite<span class="pull-right"><a class="anchor hidden-xs" href="#Uploading-new-samples-to-the-fate-suite" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Uploading-new-samples-to-the-fate-suite" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>If you need a sample uploaded send a mail to samples-request.
|
||||||
|
</p>
|
||||||
|
<p>This is for developers who have an account on the fate suite server.
|
||||||
|
If you upload new samples, please make sure they are as small as possible,
|
||||||
|
space on each client, network bandwidth and so on benefit from smaller test cases.
|
||||||
|
Also keep in mind older checkouts use existing sample files, that means in
|
||||||
|
practice generally do not replace, remove or overwrite files as it likely would
|
||||||
|
break older checkouts or releases.
|
||||||
|
Also all needed samples for a commit should be uploaded, ideally 24
|
||||||
|
hours, before the push.
|
||||||
|
If you need an account for frequently uploading samples or you wish to help
|
||||||
|
others by doing that send a mail to ffmpeg-devel.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">#First update your local samples copy:
|
||||||
|
rsync -vauL --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X fate-suite.ffmpeg.org:/home/samples/fate-suite/ ~/fate-suite
|
||||||
|
|
||||||
|
#Then do a dry run checking what would be uploaded:
|
||||||
|
rsync -vanL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
||||||
|
|
||||||
|
#Upload the files:
|
||||||
|
rsync -vaL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="FATE-makefile-targets-and-variables"></a>
|
||||||
|
<h2 class="chapter">5 FATE makefile targets and variables<span class="pull-right"><a class="anchor hidden-xs" href="#FATE-makefile-targets-and-variables" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-FATE-makefile-targets-and-variables" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Makefile-targets"></a>
|
||||||
|
<h3 class="section">5.1 Makefile targets<span class="pull-right"><a class="anchor hidden-xs" href="#Makefile-targets" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Makefile-targets" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><samp>fate-rsync</samp></span></dt>
|
||||||
|
<dd><p>Download/synchronize sample files to the configured samples directory.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>fate-list</samp></span></dt>
|
||||||
|
<dd><p>Will list all fate/regression test targets.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>fate</samp></span></dt>
|
||||||
|
<dd><p>Run the FATE test suite (requires the fate-suite dataset).
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="Makefile-variables"></a>
|
||||||
|
<h3 class="section">5.2 Makefile variables<span class="pull-right"><a class="anchor hidden-xs" href="#Makefile-variables" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Makefile-variables" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><code>V</code></span></dt>
|
||||||
|
<dd><p>Verbosity level, can be set to 0, 1 or 2.
|
||||||
|
</p><ul>
|
||||||
|
<li> 0: show just the test arguments
|
||||||
|
</li><li> 1: show just the command used in the test
|
||||||
|
</li><li> 2: show everything
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>SAMPLES</code></span></dt>
|
||||||
|
<dd><p>Specify or override the path to the FATE samples at make time, it has a
|
||||||
|
meaning only while running the regression tests.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>THREADS</code></span></dt>
|
||||||
|
<dd><p>Specify how many threads to use while running regression tests, it is
|
||||||
|
quite useful to detect thread-related regressions.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>THREAD_TYPE</code></span></dt>
|
||||||
|
<dd><p>Specify which threading strategy test, either ‘<samp>slice</samp>’ or ‘<samp>frame</samp>’,
|
||||||
|
by default ‘<samp>slice+frame</samp>’
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>CPUFLAGS</code></span></dt>
|
||||||
|
<dd><p>Specify CPU flags.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>TARGET_EXEC</code></span></dt>
|
||||||
|
<dd><p>Specify or override the wrapper used to run the tests.
|
||||||
|
The <code>TARGET_EXEC</code> option provides a way to run FATE wrapped in
|
||||||
|
<code>valgrind</code>, <code>qemu-user</code> or <code>wine</code> or on remote targets
|
||||||
|
through <code>ssh</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>GEN</code></span></dt>
|
||||||
|
<dd><p>Set to ‘<samp>1</samp>’ to generate the missing or mismatched references.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>HWACCEL</code></span></dt>
|
||||||
|
<dd><p>Specify which hardware acceleration to use while running regression tests,
|
||||||
|
by default ‘<samp>none</samp>’ is used.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><code>KEEP</code></span></dt>
|
||||||
|
<dd><p>Set to ‘<samp>1</samp>’ to keep temp files generated by fate test(s) when test is successful.
|
||||||
|
Default is ‘<samp>0</samp>’, which removes these files. Files are always kept when a test
|
||||||
|
fails.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="Examples"></a>
|
||||||
|
<h3 class="section">5.3 Examples<span class="pull-right"><a class="anchor hidden-xs" href="#Examples" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Examples" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
|
||||||
|
</pre></div>
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,364 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
FFmpeg Resampler Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
FFmpeg Resampler Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-Resampler-Options" href="#Resampler-Options">2 Resampler Options</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg resampler provides a high-level interface to the
|
||||||
|
libswresample library audio resampling utilities. In particular it
|
||||||
|
allows one to perform audio resampling, audio channel layout rematrixing,
|
||||||
|
and convert audio format and packing layout.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Resampler-Options"></a>
|
||||||
|
<h2 class="chapter">2 Resampler Options<span class="pull-right"><a class="anchor hidden-xs" href="#Resampler-Options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Resampler-Options" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The audio resampler supports the following named options.
|
||||||
|
</p>
|
||||||
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
||||||
|
FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
|
||||||
|
by setting the value explicitly in the
|
||||||
|
<code>SwrContext</code> options or using the <samp>libavutil/opt.h</samp> API for
|
||||||
|
programmatic use.
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><samp>ich, in_channel_count</samp></span></dt>
|
||||||
|
<dd><p>Set the number of input channels. Default value is 0. Setting this
|
||||||
|
value is not mandatory if the corresponding channel layout
|
||||||
|
<samp>in_channel_layout</samp> is set.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>och, out_channel_count</samp></span></dt>
|
||||||
|
<dd><p>Set the number of output channels. Default value is 0. Setting this
|
||||||
|
value is not mandatory if the corresponding channel layout
|
||||||
|
<samp>out_channel_layout</samp> is set.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>uch, used_channel_count</samp></span></dt>
|
||||||
|
<dd><p>Set the number of used input channels. Default value is 0. This option is
|
||||||
|
only used for special remapping.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>isr, in_sample_rate</samp></span></dt>
|
||||||
|
<dd><p>Set the input sample rate. Default value is 0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>osr, out_sample_rate</samp></span></dt>
|
||||||
|
<dd><p>Set the output sample rate. Default value is 0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>isf, in_sample_fmt</samp></span></dt>
|
||||||
|
<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>osf, out_sample_fmt</samp></span></dt>
|
||||||
|
<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>tsf, internal_sample_fmt</samp></span></dt>
|
||||||
|
<dd><p>Set the internal sample format. Default value is <code>none</code>.
|
||||||
|
This will automatically be chosen when it is not explicitly set.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>icl, in_channel_layout</samp></span></dt>
|
||||||
|
<dt><span><samp>ocl, out_channel_layout</samp></span></dt>
|
||||||
|
<dd><p>Set the input/output channel layout.
|
||||||
|
</p>
|
||||||
|
<p>See <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)the Channel Layout section in the ffmpeg-utils(1) manual</a>
|
||||||
|
for the required syntax.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>clev, center_mix_level</samp></span></dt>
|
||||||
|
<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
|
||||||
|
in the interval [-32,32].
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>slev, surround_mix_level</samp></span></dt>
|
||||||
|
<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
|
||||||
|
be in the interval [-32,32].
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>lfe_mix_level</samp></span></dt>
|
||||||
|
<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
|
||||||
|
LFE output. It is a value expressed in deciBel, and must
|
||||||
|
be in the interval [-32,32].
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>rmvol, rematrix_volume</samp></span></dt>
|
||||||
|
<dd><p>Set rematrix volume. Default value is 1.0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>rematrix_maxval</samp></span></dt>
|
||||||
|
<dd><p>Set maximum output value for rematrixing.
|
||||||
|
This can be used to prevent clipping vs. preventing volume reduction.
|
||||||
|
A value of 1.0 prevents clipping.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>flags, swr_flags</samp></span></dt>
|
||||||
|
<dd><p>Set flags used by the converter. Default value is 0.
|
||||||
|
</p>
|
||||||
|
<p>It supports the following individual flags:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span><samp>res</samp></span></dt>
|
||||||
|
<dd><p>force resampling, this flag forces resampling to be used even when the
|
||||||
|
input and output sample rates match.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dither_scale</samp></span></dt>
|
||||||
|
<dd><p>Set the dither scale. Default value is 1.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dither_method</samp></span></dt>
|
||||||
|
<dd><p>Set dither method. Default value is 0.
|
||||||
|
</p>
|
||||||
|
<p>Supported values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>rectangular</samp>’</span></dt>
|
||||||
|
<dd><p>select rectangular dither
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>triangular</samp>’</span></dt>
|
||||||
|
<dd><p>select triangular dither
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>triangular_hp</samp>’</span></dt>
|
||||||
|
<dd><p>select triangular dither with high pass
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>lipshitz</samp>’</span></dt>
|
||||||
|
<dd><p>select Lipshitz noise shaping dither.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>shibata</samp>’</span></dt>
|
||||||
|
<dd><p>select Shibata noise shaping dither.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>low_shibata</samp>’</span></dt>
|
||||||
|
<dd><p>select low Shibata noise shaping dither.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>high_shibata</samp>’</span></dt>
|
||||||
|
<dd><p>select high Shibata noise shaping dither.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>f_weighted</samp>’</span></dt>
|
||||||
|
<dd><p>select f-weighted noise shaping dither
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>modified_e_weighted</samp>’</span></dt>
|
||||||
|
<dd><p>select modified-e-weighted noise shaping dither
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>improved_e_weighted</samp>’</span></dt>
|
||||||
|
<dd><p>select improved-e-weighted noise shaping dither
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>resampler</samp></span></dt>
|
||||||
|
<dd><p>Set resampling engine. Default value is swr.
|
||||||
|
</p>
|
||||||
|
<p>Supported values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>swr</samp>’</span></dt>
|
||||||
|
<dd><p>select the native SW Resampler; filter options precision and cheby are not
|
||||||
|
applicable in this case.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>soxr</samp>’</span></dt>
|
||||||
|
<dd><p>select the SoX Resampler (where available); compensation, and filter options
|
||||||
|
filter_size, phase_shift, exact_rational, filter_type & kaiser_beta, are not
|
||||||
|
applicable in this case.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>filter_size</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set resampling filter size, default value is 32.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>phase_shift</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
|
||||||
|
the interval [0,30].
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>linear_interp</samp></span></dt>
|
||||||
|
<dd><p>Use linear interpolation when enabled (the default). Disable it if you want
|
||||||
|
to preserve speed instead of quality when exact_rational fails.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>exact_rational</samp></span></dt>
|
||||||
|
<dd><p>For swr only, when enabled, try to use exact phase_count based on input and
|
||||||
|
output sample rate. However, if it is larger than <code>1 << phase_shift</code>,
|
||||||
|
the phase_count will be <code>1 << phase_shift</code> as fallback. Default is enabled.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>cutoff</samp></span></dt>
|
||||||
|
<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
|
||||||
|
value between 0 and 1. Default value is 0.97 with swr, and 0.91 with soxr
|
||||||
|
(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>precision</samp></span></dt>
|
||||||
|
<dd><p>For soxr only, the precision in bits to which the resampled signal will be
|
||||||
|
calculated. The default value of 20 (which, with suitable dithering, is
|
||||||
|
appropriate for a destination bit-depth of 16) gives SoX’s ’High Quality’; a
|
||||||
|
value of 28 gives SoX’s ’Very High Quality’.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>cheby</samp></span></dt>
|
||||||
|
<dd><p>For soxr only, selects passband rolloff none (Chebyshev) & higher-precision
|
||||||
|
approximation for ’irrational’ ratios. Default value is 0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>async</samp></span></dt>
|
||||||
|
<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
|
||||||
|
squeezing, filling and trimming. Setting this to 1 will enable filling and
|
||||||
|
trimming, larger values represent the maximum amount in samples that the data
|
||||||
|
may be stretched or squeezed for each second.
|
||||||
|
Default value is 0, thus no compensation is applied to make the samples match
|
||||||
|
the audio timestamps.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>first_pts</samp></span></dt>
|
||||||
|
<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
|
||||||
|
This allows for padding/trimming at the start of stream. By default, no
|
||||||
|
assumption is made about the first frame’s expected pts, so no padding or
|
||||||
|
trimming is done. For example, this could be set to 0 to pad the beginning with
|
||||||
|
silence if an audio stream starts after the video stream or to trim any samples
|
||||||
|
with a negative pts due to encoder delay.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>min_comp</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
||||||
|
seconds) to trigger stretching/squeezing/filling or trimming of the
|
||||||
|
data to make it match the timestamps. The default is that
|
||||||
|
stretching/squeezing/filling and trimming is disabled
|
||||||
|
(<samp>min_comp</samp> = <code>FLT_MAX</code>).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>min_hard_comp</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
|
||||||
|
seconds) to trigger adding/dropping samples to make it match the
|
||||||
|
timestamps. This option effectively is a threshold to select between
|
||||||
|
hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
|
||||||
|
all compensation is by default disabled through <samp>min_comp</samp>.
|
||||||
|
The default is 0.1.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>comp_duration</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
|
||||||
|
to make it match the timestamps. Must be a non-negative double float value,
|
||||||
|
default value is 1.0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>max_soft_comp</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
|
||||||
|
match the timestamps. Must be a non-negative double float value, default value
|
||||||
|
is 0.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>matrix_encoding</samp></span></dt>
|
||||||
|
<dd><p>Select matrixed stereo encoding.
|
||||||
|
</p>
|
||||||
|
<p>It accepts the following values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>none</samp>’</span></dt>
|
||||||
|
<dd><p>select none
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>dolby</samp>’</span></dt>
|
||||||
|
<dd><p>select Dolby
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>dplii</samp>’</span></dt>
|
||||||
|
<dd><p>select Dolby Pro Logic II
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>Default value is <code>none</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>filter_type</samp></span></dt>
|
||||||
|
<dd><p>For swr only, select resampling filter type. This only affects resampling
|
||||||
|
operations.
|
||||||
|
</p>
|
||||||
|
<p>It accepts the following values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>cubic</samp>’</span></dt>
|
||||||
|
<dd><p>select cubic
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>blackman_nuttall</samp>’</span></dt>
|
||||||
|
<dd><p>select Blackman Nuttall windowed sinc
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>kaiser</samp>’</span></dt>
|
||||||
|
<dd><p>select Kaiser windowed sinc
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>kaiser_beta</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set Kaiser window beta value. Must be a double float value in the
|
||||||
|
interval [2,16], default value is 9.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>output_sample_bits</samp></span></dt>
|
||||||
|
<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
|
||||||
|
interval [0,64], default value is 0, which means it’s not used.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">3 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="libswresample.html">libswresample</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">4 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,256 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
FFmpeg Scaler Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
FFmpeg Scaler Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-Scaler-Options" href="#Scaler-Options">2 Scaler Options</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg rescaler provides a high-level interface to the libswscale
|
||||||
|
library image conversion utilities. In particular it allows one to perform
|
||||||
|
image rescaling and pixel format conversion.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<span id="scaler_005foptions"></span><a name="Scaler-Options"></a>
|
||||||
|
<h2 class="chapter">2 Scaler Options<span class="pull-right"><a class="anchor hidden-xs" href="#Scaler-Options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Scaler-Options" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The video scaler supports the following named options.
|
||||||
|
</p>
|
||||||
|
<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
|
||||||
|
FFmpeg tools, with a few API-only exceptions noted below.
|
||||||
|
For programmatic use, they can be set explicitly in the
|
||||||
|
<code>SwsContext</code> options or through the <samp>libavutil/opt.h</samp> API.
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dd>
|
||||||
|
<span id="sws_005fflags"></span></dd>
|
||||||
|
<dt><span><samp>sws_flags</samp></span></dt>
|
||||||
|
<dd><p>Set the scaler flags. This is also used to set the scaling
|
||||||
|
algorithm. Only a single algorithm should be selected. Default
|
||||||
|
value is ‘<samp>bicubic</samp>’.
|
||||||
|
</p>
|
||||||
|
<p>It accepts the following values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>fast_bilinear</samp>’</span></dt>
|
||||||
|
<dd><p>Select fast bilinear scaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>bilinear</samp>’</span></dt>
|
||||||
|
<dd><p>Select bilinear scaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>bicubic</samp>’</span></dt>
|
||||||
|
<dd><p>Select bicubic scaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>experimental</samp>’</span></dt>
|
||||||
|
<dd><p>Select experimental scaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>neighbor</samp>’</span></dt>
|
||||||
|
<dd><p>Select nearest neighbor rescaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>area</samp>’</span></dt>
|
||||||
|
<dd><p>Select averaging area rescaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>bicublin</samp>’</span></dt>
|
||||||
|
<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
|
||||||
|
chroma components.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>gauss</samp>’</span></dt>
|
||||||
|
<dd><p>Select Gaussian rescaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>sinc</samp>’</span></dt>
|
||||||
|
<dd><p>Select sinc rescaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>lanczos</samp>’</span></dt>
|
||||||
|
<dd><p>Select Lanczos rescaling algorithm. The default width (alpha) is 3 and can be
|
||||||
|
changed by setting <code>param0</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>spline</samp>’</span></dt>
|
||||||
|
<dd><p>Select natural bicubic spline rescaling algorithm.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>print_info</samp>’</span></dt>
|
||||||
|
<dd><p>Enable printing/debug logging.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>accurate_rnd</samp>’</span></dt>
|
||||||
|
<dd><p>Enable accurate rounding.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>full_chroma_int</samp>’</span></dt>
|
||||||
|
<dd><p>Enable full chroma interpolation.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>full_chroma_inp</samp>’</span></dt>
|
||||||
|
<dd><p>Select full chroma input.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>bitexact</samp>’</span></dt>
|
||||||
|
<dd><p>Enable bitexact output.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>srcw <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set source width.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>srch <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set source height.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dstw <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set destination width.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dsth <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set destination height.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>src_format <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set source pixel format (must be expressed as an integer).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dst_format <var>(API only)</var></samp></span></dt>
|
||||||
|
<dd><p>Set destination pixel format (must be expressed as an integer).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>src_range <var>(boolean)</var></samp></span></dt>
|
||||||
|
<dd><p>If value is set to <code>1</code>, indicates source is full range. Default value is
|
||||||
|
<code>0</code>, which indicates source is limited range.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>dst_range <var>(boolean)</var></samp></span></dt>
|
||||||
|
<dd><p>If value is set to <code>1</code>, enable full range for destination. Default value
|
||||||
|
is <code>0</code>, which enables limited range.
|
||||||
|
</p>
|
||||||
|
<span id="sws_005fparams"></span></dd>
|
||||||
|
<dt><span><samp>param0, param1</samp></span></dt>
|
||||||
|
<dd><p>Set scaling algorithm parameters. The specified values are specific of
|
||||||
|
some scaling algorithms and ignored by others. The specified values
|
||||||
|
are floating point number values.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>sws_dither</samp></span></dt>
|
||||||
|
<dd><p>Set the dithering algorithm. Accepts one of the following
|
||||||
|
values. Default value is ‘<samp>auto</samp>’.
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span>‘<samp>auto</samp>’</span></dt>
|
||||||
|
<dd><p>automatic choice
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>none</samp>’</span></dt>
|
||||||
|
<dd><p>no dithering
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>bayer</samp>’</span></dt>
|
||||||
|
<dd><p>bayer dither
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>ed</samp>’</span></dt>
|
||||||
|
<dd><p>error diffusion dither
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>a_dither</samp>’</span></dt>
|
||||||
|
<dd><p>arithmetic dither, based using addition
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>x_dither</samp>’</span></dt>
|
||||||
|
<dd><p>arithmetic dither, based using xor (more random/less apparent patterning that
|
||||||
|
a_dither).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>alphablend</samp></span></dt>
|
||||||
|
<dd><p>Set the alpha blending to use when the input has alpha but the output does not.
|
||||||
|
Default value is ‘<samp>none</samp>’.
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span>‘<samp>uniform_color</samp>’</span></dt>
|
||||||
|
<dd><p>Blend onto a uniform background color
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>checkerboard</samp>’</span></dt>
|
||||||
|
<dd><p>Blend onto a checkerboard
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>none</samp>’</span></dt>
|
||||||
|
<dd><p>No blending
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">3 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="libswscale.html">libswscale</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">4 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,866 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
ffplay Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
ffplay Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Synopsis" href="#Synopsis">1 Synopsis</a></li>
|
||||||
|
<li><a id="toc-Description" href="#Description">2 Description</a></li>
|
||||||
|
<li><a id="toc-Options" href="#Options">3 Options</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
|
||||||
|
<li><a id="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
|
||||||
|
<li><a id="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
|
||||||
|
<li><a id="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
|
||||||
|
<li><a id="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
|
||||||
|
<li><a id="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">4 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">5 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Synopsis"></a>
|
||||||
|
<h2 class="chapter">1 Synopsis<span class="pull-right"><a class="anchor hidden-xs" href="#Synopsis" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Synopsis" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>ffplay [<var>options</var>] [<samp>input_url</samp>]
|
||||||
|
</p>
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">2 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>FFplay is a very simple and portable media player using the FFmpeg
|
||||||
|
libraries and the SDL library. It is mostly used as a testbed for the
|
||||||
|
various FFmpeg APIs.
|
||||||
|
</p>
|
||||||
|
<a name="Options"></a>
|
||||||
|
<h2 class="chapter">3 Options<span class="pull-right"><a class="anchor hidden-xs" href="#Options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Options" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>All the numerical options, if not specified otherwise, accept a string
|
||||||
|
representing a number as input, which may be followed by one of the SI
|
||||||
|
unit prefixes, for example: ’K’, ’M’, or ’G’.
|
||||||
|
</p>
|
||||||
|
<p>If ’i’ is appended to the SI unit prefix, the complete prefix will be
|
||||||
|
interpreted as a unit prefix for binary multiples, which are based on
|
||||||
|
powers of 1024 instead of powers of 1000. Appending ’B’ to the SI unit
|
||||||
|
prefix multiplies the value by 8. This allows using, for example:
|
||||||
|
’KB’, ’MiB’, ’G’ and ’B’ as number suffixes.
|
||||||
|
</p>
|
||||||
|
<p>Options which do not take arguments are boolean options, and set the
|
||||||
|
corresponding value to true. They can be set to false by prefixing
|
||||||
|
the option name with "no". For example using "-nofoo"
|
||||||
|
will set the boolean option with name "foo" to false.
|
||||||
|
</p>
|
||||||
|
<span id="Stream-specifiers"></span><a name="Stream-specifiers-1"></a>
|
||||||
|
<h3 class="section">3.1 Stream specifiers<span class="pull-right"><a class="anchor hidden-xs" href="#Stream-specifiers-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Stream-specifiers-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
|
||||||
|
are used to precisely specify which stream(s) a given option belongs to.
|
||||||
|
</p>
|
||||||
|
<p>A stream specifier is a string generally appended to the option name and
|
||||||
|
separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
|
||||||
|
<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
|
||||||
|
would select the ac3 codec for the second audio stream.
|
||||||
|
</p>
|
||||||
|
<p>A stream specifier can match several streams, so that the option is applied to all
|
||||||
|
of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
|
||||||
|
streams.
|
||||||
|
</p>
|
||||||
|
<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
|
||||||
|
or <code>-codec: copy</code> would copy all the streams without reencoding.
|
||||||
|
</p>
|
||||||
|
<p>Possible forms of stream specifiers are:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span><samp><var>stream_index</var></samp></span></dt>
|
||||||
|
<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
|
||||||
|
thread count for the second stream to 4. If <var>stream_index</var> is used as an
|
||||||
|
additional stream specifier (see below), then it selects stream number
|
||||||
|
<var>stream_index</var> from the matching streams. Stream numbering is based on the
|
||||||
|
order of the streams as detected by libavformat except when a program ID is
|
||||||
|
also specified. In this case it is based on the ordering of the streams in the
|
||||||
|
program.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp><var>stream_type</var>[:<var>additional_stream_specifier</var>]</samp></span></dt>
|
||||||
|
<dd><p><var>stream_type</var> is one of following: ’v’ or ’V’ for video, ’a’ for audio, ’s’
|
||||||
|
for subtitle, ’d’ for data, and ’t’ for attachments. ’v’ matches all video
|
||||||
|
streams, ’V’ only matches video streams which are not attached pictures, video
|
||||||
|
thumbnails or cover arts. If <var>additional_stream_specifier</var> is used, then
|
||||||
|
it matches streams which both have this type and match the
|
||||||
|
<var>additional_stream_specifier</var>. Otherwise, it matches all streams of the
|
||||||
|
specified type.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>p:<var>program_id</var>[:<var>additional_stream_specifier</var>]</samp></span></dt>
|
||||||
|
<dd><p>Matches streams which are in the program with the id <var>program_id</var>. If
|
||||||
|
<var>additional_stream_specifier</var> is used, then it matches streams which both
|
||||||
|
are part of the program and match the <var>additional_stream_specifier</var>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>#<var>stream_id</var> or i:<var>stream_id</var></samp></span></dt>
|
||||||
|
<dd><p>Match the stream by stream id (e.g. PID in MPEG-TS container).
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>m:<var>key</var>[:<var>value</var>]</samp></span></dt>
|
||||||
|
<dd><p>Matches streams with the metadata tag <var>key</var> having the specified value. If
|
||||||
|
<var>value</var> is not given, matches streams that contain the given tag with any
|
||||||
|
value.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>u</samp></span></dt>
|
||||||
|
<dd><p>Matches streams with usable configuration, the codec must be defined and the
|
||||||
|
essential information such as video dimension or audio sample rate must be present.
|
||||||
|
</p>
|
||||||
|
<p>Note that in <code>ffmpeg</code>, matching by metadata will only work properly for
|
||||||
|
input files.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="Generic-options"></a>
|
||||||
|
<h3 class="section">3.2 Generic options<span class="pull-right"><a class="anchor hidden-xs" href="#Generic-options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Generic-options" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>These options are shared amongst the ff* tools.
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><samp>-L</samp></span></dt>
|
||||||
|
<dd><p>Show license.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-h, -?, -help, --help [<var>arg</var>]</samp></span></dt>
|
||||||
|
<dd><p>Show help. An optional parameter may be specified to print help about a specific
|
||||||
|
item. If no argument is specified, only basic (non advanced) tool
|
||||||
|
options are shown.
|
||||||
|
</p>
|
||||||
|
<p>Possible values of <var>arg</var> are:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span><samp>long</samp></span></dt>
|
||||||
|
<dd><p>Print advanced tool options in addition to the basic tool options.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>full</samp></span></dt>
|
||||||
|
<dd><p>Print complete list of options, including shared and private options
|
||||||
|
for encoders, decoders, demuxers, muxers, filters, etc.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>decoder=<var>decoder_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
|
||||||
|
<samp>-decoders</samp> option to get a list of all decoders.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>encoder=<var>encoder_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
|
||||||
|
<samp>-encoders</samp> option to get a list of all encoders.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>demuxer=<var>demuxer_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
|
||||||
|
<samp>-formats</samp> option to get a list of all demuxers and muxers.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>muxer=<var>muxer_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
|
||||||
|
<samp>-formats</samp> option to get a list of all muxers and demuxers.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>filter=<var>filter_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the filter named <var>filter_name</var>. Use the
|
||||||
|
<samp>-filters</samp> option to get a list of all filters.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>bsf=<var>bitstream_filter_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the bitstream filter named <var>bitstream_filter_name</var>.
|
||||||
|
Use the <samp>-bsfs</samp> option to get a list of all bitstream filters.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>protocol=<var>protocol_name</var></samp></span></dt>
|
||||||
|
<dd><p>Print detailed information about the protocol named <var>protocol_name</var>.
|
||||||
|
Use the <samp>-protocols</samp> option to get a list of all protocols.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-version</samp></span></dt>
|
||||||
|
<dd><p>Show version.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-buildconf</samp></span></dt>
|
||||||
|
<dd><p>Show the build configuration, one option per line.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-formats</samp></span></dt>
|
||||||
|
<dd><p>Show available formats (including devices).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-demuxers</samp></span></dt>
|
||||||
|
<dd><p>Show available demuxers.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-muxers</samp></span></dt>
|
||||||
|
<dd><p>Show available muxers.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-devices</samp></span></dt>
|
||||||
|
<dd><p>Show available devices.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-codecs</samp></span></dt>
|
||||||
|
<dd><p>Show all codecs known to libavcodec.
|
||||||
|
</p>
|
||||||
|
<p>Note that the term ’codec’ is used throughout this documentation as a shortcut
|
||||||
|
for what is more correctly called a media bitstream format.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-decoders</samp></span></dt>
|
||||||
|
<dd><p>Show available decoders.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-encoders</samp></span></dt>
|
||||||
|
<dd><p>Show all available encoders.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-bsfs</samp></span></dt>
|
||||||
|
<dd><p>Show available bitstream filters.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-protocols</samp></span></dt>
|
||||||
|
<dd><p>Show available protocols.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-filters</samp></span></dt>
|
||||||
|
<dd><p>Show available libavfilter filters.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-pix_fmts</samp></span></dt>
|
||||||
|
<dd><p>Show available pixel formats.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-sample_fmts</samp></span></dt>
|
||||||
|
<dd><p>Show available sample formats.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-layouts</samp></span></dt>
|
||||||
|
<dd><p>Show channel names and standard channel layouts.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-dispositions</samp></span></dt>
|
||||||
|
<dd><p>Show stream dispositions.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-colors</samp></span></dt>
|
||||||
|
<dd><p>Show recognized color names.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-sources <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp></span></dt>
|
||||||
|
<dd><p>Show autodetected sources of the input device.
|
||||||
|
Some devices may provide system-dependent source names that cannot be autodetected.
|
||||||
|
The returned list cannot be assumed to be always complete.
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -sources pulse,server=192.168.0.4
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-sinks <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp></span></dt>
|
||||||
|
<dd><p>Show autodetected sinks of the output device.
|
||||||
|
Some devices may provide system-dependent sink names that cannot be autodetected.
|
||||||
|
The returned list cannot be assumed to be always complete.
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -sinks pulse,server=192.168.0.4
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-loglevel [<var>flags</var>+]<var>loglevel</var> | -v [<var>flags</var>+]<var>loglevel</var></samp></span></dt>
|
||||||
|
<dd><p>Set logging level and flags used by the library.
|
||||||
|
</p>
|
||||||
|
<p>The optional <var>flags</var> prefix can consist of the following values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>repeat</samp>’</span></dt>
|
||||||
|
<dd><p>Indicates that repeated log output should not be compressed to the first line
|
||||||
|
and the "Last message repeated n times" line will be omitted.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>level</samp>’</span></dt>
|
||||||
|
<dd><p>Indicates that log output should add a <code>[level]</code> prefix to each message
|
||||||
|
line. This can be used as an alternative to log coloring, e.g. when dumping the
|
||||||
|
log to file.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
<p>Flags can also be used alone by adding a ’+’/’-’ prefix to set/reset a single
|
||||||
|
flag without affecting other <var>flags</var> or changing <var>loglevel</var>. When
|
||||||
|
setting both <var>flags</var> and <var>loglevel</var>, a ’+’ separator is expected
|
||||||
|
between the last <var>flags</var> value and before <var>loglevel</var>.
|
||||||
|
</p>
|
||||||
|
<p><var>loglevel</var> is a string or a number containing one of the following values:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>quiet, -8</samp>’</span></dt>
|
||||||
|
<dd><p>Show nothing at all; be silent.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>panic, 0</samp>’</span></dt>
|
||||||
|
<dd><p>Only show fatal errors which could lead the process to crash, such as
|
||||||
|
an assertion failure. This is not currently used for anything.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>fatal, 8</samp>’</span></dt>
|
||||||
|
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
||||||
|
cannot continue.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>error, 16</samp>’</span></dt>
|
||||||
|
<dd><p>Show all errors, including ones which can be recovered from.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>warning, 24</samp>’</span></dt>
|
||||||
|
<dd><p>Show all warnings and errors. Any message related to possibly
|
||||||
|
incorrect or unexpected events will be shown.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>info, 32</samp>’</span></dt>
|
||||||
|
<dd><p>Show informative messages during processing. This is in addition to
|
||||||
|
warnings and errors. This is the default value.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>verbose, 40</samp>’</span></dt>
|
||||||
|
<dd><p>Same as <code>info</code>, except more verbose.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>debug, 48</samp>’</span></dt>
|
||||||
|
<dd><p>Show everything, including debugging information.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>trace, 56</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>For example to enable repeated log output, add the <code>level</code> prefix, and set
|
||||||
|
<var>loglevel</var> to <code>verbose</code>:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -loglevel repeat+level+verbose -i input output
|
||||||
|
</pre></div>
|
||||||
|
<p>Another example that enables repeated log output without affecting current
|
||||||
|
state of <code>level</code> prefix flag or <var>loglevel</var>:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg [...] -loglevel +repeat
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>By default the program logs to stderr. If coloring is supported by the
|
||||||
|
terminal, colors are used to mark errors and warnings. Log coloring
|
||||||
|
can be disabled setting the environment variable
|
||||||
|
<code>AV_LOG_FORCE_NOCOLOR</code>, or can be forced setting
|
||||||
|
the environment variable <code>AV_LOG_FORCE_COLOR</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-report</samp></span></dt>
|
||||||
|
<dd><p>Dump full command line and log output to a file named
|
||||||
|
<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
|
||||||
|
directory.
|
||||||
|
This file can be useful for bug reports.
|
||||||
|
It also implies <code>-loglevel debug</code>.
|
||||||
|
</p>
|
||||||
|
<p>Setting the environment variable <code>FFREPORT</code> to any value has the
|
||||||
|
same effect. If the value is a ’:’-separated key=value sequence, these
|
||||||
|
options will affect the report; option values must be escaped if they
|
||||||
|
contain special characters or the options delimiter ’:’ (see the
|
||||||
|
“Quoting and escaping” section in the ffmpeg-utils manual).
|
||||||
|
</p>
|
||||||
|
<p>The following options are recognized:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span><samp>file</samp></span></dt>
|
||||||
|
<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
|
||||||
|
of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
|
||||||
|
to a plain <code>%</code>
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>level</samp></span></dt>
|
||||||
|
<dd><p>set the log verbosity level using a numerical value (see <code>-loglevel</code>).
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>For example, to output a report to a file named <samp>ffreport.log</samp>
|
||||||
|
using a log level of <code>32</code> (alias for log level <code>info</code>):
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Errors in parsing the environment variable are not fatal, and will not
|
||||||
|
appear in the report.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-hide_banner</samp></span></dt>
|
||||||
|
<dd><p>Suppress printing banner.
|
||||||
|
</p>
|
||||||
|
<p>All FFmpeg tools will normally show a copyright notice, build options
|
||||||
|
and library versions. This option can be used to suppress printing
|
||||||
|
this information.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-cpuflags flags (<em>global</em>)</samp></span></dt>
|
||||||
|
<dd><p>Allows setting and clearing cpu flags. This option is intended
|
||||||
|
for testing. Do not use it unless you know what you’re doing.
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -cpuflags -sse+mmx ...
|
||||||
|
ffmpeg -cpuflags mmx ...
|
||||||
|
ffmpeg -cpuflags 0 ...
|
||||||
|
</pre></div>
|
||||||
|
<p>Possible flags for this option are:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>x86</samp>’</span></dt>
|
||||||
|
<dd><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>mmx</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>mmxext</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse2slow</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse3</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse3slow</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>ssse3</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>atom</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse4.1</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>sse4.2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>avx</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>avx2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>xop</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>fma3</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>fma4</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>3dnow</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>3dnowext</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>bmi1</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>bmi2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>cmov</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>ARM</samp>’</span></dt>
|
||||||
|
<dd><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>armv5te</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>armv6</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>armv6t2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>vfp</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>vfpv3</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>neon</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>setend</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>AArch64</samp>’</span></dt>
|
||||||
|
<dd><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>armv8</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>vfp</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>neon</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>PowerPC</samp>’</span></dt>
|
||||||
|
<dd><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>altivec</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
<dt><span>‘<samp>Specific Processors</samp>’</span></dt>
|
||||||
|
<dd><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>pentium2</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>pentium3</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>pentium4</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>k6</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>k62</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>athlon</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>athlonxp</samp>’</span></dt>
|
||||||
|
<dt><span>‘<samp>k8</samp>’</span></dt>
|
||||||
|
</dl>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-cpucount <var>count</var> (<em>global</em>)</samp></span></dt>
|
||||||
|
<dd><p>Override detection of CPU count. This option is intended
|
||||||
|
for testing. Do not use it unless you know what you’re doing.
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -cpucount 2
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-max_alloc <var>bytes</var></samp></span></dt>
|
||||||
|
<dd><p>Set the maximum size limit for allocating a block on the heap by ffmpeg’s
|
||||||
|
family of malloc functions. Exercise <strong>extreme caution</strong> when using
|
||||||
|
this option. Don’t use if you do not understand the full consequence of doing so.
|
||||||
|
Default is INT_MAX.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="AVOptions"></a>
|
||||||
|
<h3 class="section">3.3 AVOptions<span class="pull-right"><a class="anchor hidden-xs" href="#AVOptions" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-AVOptions" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>These options are provided directly by the libavformat, libavdevice and
|
||||||
|
libavcodec libraries. To see the list of available AVOptions, use the
|
||||||
|
<samp>-help</samp> option. They are separated into two categories:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span><samp>generic</samp></span></dt>
|
||||||
|
<dd><p>These options can be set for any container, codec or device. Generic options
|
||||||
|
are listed under AVFormatContext options for containers/devices and under
|
||||||
|
AVCodecContext options for codecs.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>private</samp></span></dt>
|
||||||
|
<dd><p>These options are specific to the given container, device or codec. Private
|
||||||
|
options are listed under their corresponding containers/devices/codecs.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
|
||||||
|
an MP3 file, use the <samp>id3v2_version</samp> private option of the MP3
|
||||||
|
muxer:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>All codec AVOptions are per-stream, and thus a stream specifier
|
||||||
|
should be attached to them:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>In the above example, a multichannel audio stream is mapped twice for output.
|
||||||
|
The first instance is encoded with codec ac3 and bitrate 640k.
|
||||||
|
The second instance is downmixed to 2 channels and encoded with codec aac. A bitrate of 128k is specified for it using
|
||||||
|
absolute index of the output stream.
|
||||||
|
</p>
|
||||||
|
<p>Note: the <samp>-nooption</samp> syntax cannot be used for boolean
|
||||||
|
AVOptions, use <samp>-option 0</samp>/<samp>-option 1</samp>.
|
||||||
|
</p>
|
||||||
|
<p>Note: the old undocumented way of specifying per-stream AVOptions by
|
||||||
|
prepending v/a/s to the options name is now obsolete and will be
|
||||||
|
removed soon.
|
||||||
|
</p>
|
||||||
|
<a name="Main-options"></a>
|
||||||
|
<h3 class="section">3.4 Main options<span class="pull-right"><a class="anchor hidden-xs" href="#Main-options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Main-options" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><samp>-x <var>width</var></samp></span></dt>
|
||||||
|
<dd><p>Force displayed width.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-y <var>height</var></samp></span></dt>
|
||||||
|
<dd><p>Force displayed height.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-fs</samp></span></dt>
|
||||||
|
<dd><p>Start in fullscreen mode.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-an</samp></span></dt>
|
||||||
|
<dd><p>Disable audio.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-vn</samp></span></dt>
|
||||||
|
<dd><p>Disable video.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-sn</samp></span></dt>
|
||||||
|
<dd><p>Disable subtitles.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-ss <var>pos</var></samp></span></dt>
|
||||||
|
<dd><p>Seek to <var>pos</var>. Note that in most formats it is not possible to seek
|
||||||
|
exactly, so <code>ffplay</code> will seek to the nearest seek point to
|
||||||
|
<var>pos</var>.
|
||||||
|
</p>
|
||||||
|
<p><var>pos</var> must be a time duration specification,
|
||||||
|
see <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-t <var>duration</var></samp></span></dt>
|
||||||
|
<dd><p>Play <var>duration</var> seconds of audio/video.
|
||||||
|
</p>
|
||||||
|
<p><var>duration</var> must be a time duration specification,
|
||||||
|
see <a data-manual="ffmpeg-utils" href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-bytes</samp></span></dt>
|
||||||
|
<dd><p>Seek by bytes.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-seek_interval</samp></span></dt>
|
||||||
|
<dd><p>Set custom interval, in seconds, for seeking using left/right keys. Default is 10 seconds.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-nodisp</samp></span></dt>
|
||||||
|
<dd><p>Disable graphical display.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-noborder</samp></span></dt>
|
||||||
|
<dd><p>Borderless window.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-alwaysontop</samp></span></dt>
|
||||||
|
<dd><p>Window always on top. Available on: X11 with SDL >= 2.0.5, Windows SDL >= 2.0.6.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-volume</samp></span></dt>
|
||||||
|
<dd><p>Set the startup volume. 0 means silence, 100 means no volume reduction or
|
||||||
|
amplification. Negative values are treated as 0, values above 100 are treated
|
||||||
|
as 100.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-f <var>fmt</var></samp></span></dt>
|
||||||
|
<dd><p>Force format.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-window_title <var>title</var></samp></span></dt>
|
||||||
|
<dd><p>Set window title (default is the input filename).
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-left <var>title</var></samp></span></dt>
|
||||||
|
<dd><p>Set the x position for the left of the window (default is a centered window).
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-top <var>title</var></samp></span></dt>
|
||||||
|
<dd><p>Set the y position for the top of the window (default is a centered window).
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-loop <var>number</var></samp></span></dt>
|
||||||
|
<dd><p>Loops movie playback <number> times. 0 means forever.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-showmode <var>mode</var></samp></span></dt>
|
||||||
|
<dd><p>Set the show mode to use.
|
||||||
|
Available values for <var>mode</var> are:
|
||||||
|
</p><dl compact="compact">
|
||||||
|
<dt><span>‘<samp>0, video</samp>’</span></dt>
|
||||||
|
<dd><p>show video
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>1, waves</samp>’</span></dt>
|
||||||
|
<dd><p>show audio waves
|
||||||
|
</p></dd>
|
||||||
|
<dt><span>‘<samp>2, rdft</samp>’</span></dt>
|
||||||
|
<dd><p>show audio frequency band using RDFT ((Inverse) Real Discrete Fourier Transform)
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<p>Default value is "video", if video is not present or cannot be played
|
||||||
|
"rdft" is automatically selected.
|
||||||
|
</p>
|
||||||
|
<p>You can interactively cycle through the available show modes by
|
||||||
|
pressing the key <tt class="key">w</tt>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-vf <var>filtergraph</var></samp></span></dt>
|
||||||
|
<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
|
||||||
|
filter the video stream.
|
||||||
|
</p>
|
||||||
|
<p><var>filtergraph</var> is a description of the filtergraph to apply to
|
||||||
|
the stream, and must have a single video input and a single video
|
||||||
|
output. In the filtergraph, the input is associated to the label
|
||||||
|
<code>in</code>, and the output to the label <code>out</code>. See the
|
||||||
|
ffmpeg-filters manual for more information about the filtergraph
|
||||||
|
syntax.
|
||||||
|
</p>
|
||||||
|
<p>You can specify this parameter multiple times and cycle through the specified
|
||||||
|
filtergraphs along with the show modes by pressing the key <tt class="key">w</tt>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-af <var>filtergraph</var></samp></span></dt>
|
||||||
|
<dd><p><var>filtergraph</var> is a description of the filtergraph to apply to
|
||||||
|
the input audio.
|
||||||
|
Use the option "-filters" to show all the available filters (including
|
||||||
|
sources and sinks).
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-i <var>input_url</var></samp></span></dt>
|
||||||
|
<dd><p>Read <var>input_url</var>.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="Advanced-options"></a>
|
||||||
|
<h3 class="section">3.5 Advanced options<span class="pull-right"><a class="anchor hidden-xs" href="#Advanced-options" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Advanced-options" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><samp>-stats</samp></span></dt>
|
||||||
|
<dd><p>Print several playback statistics, in particular show the stream
|
||||||
|
duration, the codec parameters, the current position in the stream and
|
||||||
|
the audio/video synchronisation drift. It is shown by default, unless the
|
||||||
|
log level is lower than <code>info</code>. Its display can be forced by manually
|
||||||
|
specifying this option. To disable it, you need to specify <code>-nostats</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-fast</samp></span></dt>
|
||||||
|
<dd><p>Non-spec-compliant optimizations.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-genpts</samp></span></dt>
|
||||||
|
<dd><p>Generate pts.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-sync <var>type</var></samp></span></dt>
|
||||||
|
<dd><p>Set the master clock to audio (<code>type=audio</code>), video
|
||||||
|
(<code>type=video</code>) or external (<code>type=ext</code>). Default is audio. The
|
||||||
|
master clock is used to control audio-video synchronization. Most media
|
||||||
|
players use audio as master clock, but in some cases (streaming or high
|
||||||
|
quality broadcast) it is necessary to change that. This option is mainly
|
||||||
|
used for debugging purposes.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-ast <var>audio_stream_specifier</var></samp></span></dt>
|
||||||
|
<dd><p>Select the desired audio stream using the given stream specifier. The stream
|
||||||
|
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||||
|
is not specified, the "best" audio stream is selected in the program of the
|
||||||
|
already selected video stream.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-vst <var>video_stream_specifier</var></samp></span></dt>
|
||||||
|
<dd><p>Select the desired video stream using the given stream specifier. The stream
|
||||||
|
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||||
|
is not specified, the "best" video stream is selected.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-sst <var>subtitle_stream_specifier</var></samp></span></dt>
|
||||||
|
<dd><p>Select the desired subtitle stream using the given stream specifier. The stream
|
||||||
|
specifiers are described in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. If this option
|
||||||
|
is not specified, the "best" subtitle stream is selected in the program of the
|
||||||
|
already selected video or audio stream.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-autoexit</samp></span></dt>
|
||||||
|
<dd><p>Exit when video is done playing.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-exitonkeydown</samp></span></dt>
|
||||||
|
<dd><p>Exit if any key is pressed.
|
||||||
|
</p></dd>
|
||||||
|
<dt><span><samp>-exitonmousedown</samp></span></dt>
|
||||||
|
<dd><p>Exit if any mouse button is pressed.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-codec:<var>media_specifier</var> <var>codec_name</var></samp></span></dt>
|
||||||
|
<dd><p>Force a specific decoder implementation for the stream identified by
|
||||||
|
<var>media_specifier</var>, which can assume the values <code>a</code> (audio),
|
||||||
|
<code>v</code> (video), and <code>s</code> subtitle.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-acodec <var>codec_name</var></samp></span></dt>
|
||||||
|
<dd><p>Force a specific audio decoder.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-vcodec <var>codec_name</var></samp></span></dt>
|
||||||
|
<dd><p>Force a specific video decoder.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-scodec <var>codec_name</var></samp></span></dt>
|
||||||
|
<dd><p>Force a specific subtitle decoder.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-autorotate</samp></span></dt>
|
||||||
|
<dd><p>Automatically rotate the video according to file metadata. Enabled by
|
||||||
|
default, use <samp>-noautorotate</samp> to disable it.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-framedrop</samp></span></dt>
|
||||||
|
<dd><p>Drop video frames if video is out of sync. Enabled by default if the master
|
||||||
|
clock is not set to video. Use this option to enable frame dropping for all
|
||||||
|
master clock sources, use <samp>-noframedrop</samp> to disable it.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-infbuf</samp></span></dt>
|
||||||
|
<dd><p>Do not limit the input buffer size, read as much data as possible from the
|
||||||
|
input as soon as possible. Enabled by default for realtime streams, where data
|
||||||
|
may be dropped if not read in time. Use this option to enable infinite buffers
|
||||||
|
for all inputs, use <samp>-noinfbuf</samp> to disable it.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><samp>-filter_threads <var>nb_threads</var></samp></span></dt>
|
||||||
|
<dd><p>Defines how many threads are used to process a filter pipeline. Each pipeline
|
||||||
|
will produce a thread pool with this many threads available for parallel
|
||||||
|
processing. The default is 0 which means that the thread count will be
|
||||||
|
determined by the number of available CPUs.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<a name="While-playing"></a>
|
||||||
|
<h3 class="section">3.6 While playing<span class="pull-right"><a class="anchor hidden-xs" href="#While-playing" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-While-playing" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><tt class="key">q, ESC</tt></span></dt>
|
||||||
|
<dd><p>Quit.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">f</tt></span></dt>
|
||||||
|
<dd><p>Toggle full screen.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">p, SPC</tt></span></dt>
|
||||||
|
<dd><p>Pause.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">m</tt></span></dt>
|
||||||
|
<dd><p>Toggle mute.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">9, 0</tt></span></dt>
|
||||||
|
<dt><span><tt class="key">/, *</tt></span></dt>
|
||||||
|
<dd><p>Decrease and increase volume respectively.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">a</tt></span></dt>
|
||||||
|
<dd><p>Cycle audio channel in the current program.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">v</tt></span></dt>
|
||||||
|
<dd><p>Cycle video channel.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">t</tt></span></dt>
|
||||||
|
<dd><p>Cycle subtitle channel in the current program.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">c</tt></span></dt>
|
||||||
|
<dd><p>Cycle program.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">w</tt></span></dt>
|
||||||
|
<dd><p>Cycle video filters or show modes.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">s</tt></span></dt>
|
||||||
|
<dd><p>Step to the next frame.
|
||||||
|
</p>
|
||||||
|
<p>Pause if the stream is not already paused, step to the next video
|
||||||
|
frame, and pause.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">left/right</tt></span></dt>
|
||||||
|
<dd><p>Seek backward/forward 10 seconds.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">down/up</tt></span></dt>
|
||||||
|
<dd><p>Seek backward/forward 1 minute.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">page down/page up</tt></span></dt>
|
||||||
|
<dd><p>Seek to the previous/next chapter.
|
||||||
|
or if there are no chapters
|
||||||
|
Seek backward/forward 10 minutes.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">right mouse click</tt></span></dt>
|
||||||
|
<dd><p>Seek to percentage in file corresponding to fraction of width.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><tt class="key">left mouse double-click</tt></span></dt>
|
||||||
|
<dd><p>Toggle full screen.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">4 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffplay-all.html">ffmpeg-all</a>,
|
||||||
|
<a href="ffmpeg.html">ffmpeg</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
|
||||||
|
<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
||||||
|
<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
||||||
|
<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
|
||||||
|
<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
|
||||||
|
<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
|
||||||
|
<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
||||||
|
<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
||||||
|
<a href="ffmpeg-filters.html">ffmpeg-filters</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">5 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,565 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Using Git to develop FFmpeg
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Using Git to develop FFmpeg
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||||
|
<li><a id="toc-Basics-Usage" href="#Basics-Usage">2 Basics Usage</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Get-Git" href="#Get-Git">2.1 Get Git</a></li>
|
||||||
|
<li><a id="toc-Cloning-the-source-tree" href="#Cloning-the-source-tree">2.2 Cloning the source tree</a></li>
|
||||||
|
<li><a id="toc-Updating-the-source-tree-to-the-latest-revision-1" href="#Updating-the-source-tree-to-the-latest-revision-1">2.3 Updating the source tree to the latest revision</a></li>
|
||||||
|
<li><a id="toc-Rebasing-your-local-branches" href="#Rebasing-your-local-branches">2.4 Rebasing your local branches</a></li>
|
||||||
|
<li><a id="toc-Adding_002fremoving-files_002fdirectories" href="#Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></li>
|
||||||
|
<li><a id="toc-Showing-modifications" href="#Showing-modifications">2.6 Showing modifications</a></li>
|
||||||
|
<li><a id="toc-Inspecting-the-changelog" href="#Inspecting-the-changelog">2.7 Inspecting the changelog</a></li>
|
||||||
|
<li><a id="toc-Checking-source-tree-status" href="#Checking-source-tree-status">2.8 Checking source tree status</a></li>
|
||||||
|
<li><a id="toc-Committing" href="#Committing">2.9 Committing</a></li>
|
||||||
|
<li><a id="toc-Writing-a-commit-message" href="#Writing-a-commit-message">2.10 Writing a commit message</a></li>
|
||||||
|
<li><a id="toc-Preparing-a-patchset" href="#Preparing-a-patchset">2.11 Preparing a patchset</a></li>
|
||||||
|
<li><a id="toc-Sending-patches-for-review" href="#Sending-patches-for-review">2.12 Sending patches for review</a></li>
|
||||||
|
<li><a id="toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.13 Renaming/moving/copying files or contents of files</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Git-configuration" href="#Git-configuration">3 Git configuration</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Personal-Git-installation" href="#Personal-Git-installation">3.1 Personal Git installation</a></li>
|
||||||
|
<li><a id="toc-Repository-configuration" href="#Repository-configuration">3.2 Repository configuration</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-FFmpeg-specific" href="#FFmpeg-specific">4 FFmpeg specific</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Reverting-broken-commits" href="#Reverting-broken-commits">4.1 Reverting broken commits</a></li>
|
||||||
|
<li><a id="toc-Pushing-changes-to-remote-trees" href="#Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></li>
|
||||||
|
<li><a id="toc-Finding-a-specific-svn-revision" href="#Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-gpg-key-generation" href="#gpg-key-generation">5 gpg key generation</a></li>
|
||||||
|
<li><a id="toc-Pre_002dpush-checklist" href="#Pre_002dpush-checklist">6 Pre-push checklist</a></li>
|
||||||
|
<li><a id="toc-Server-Issues" href="#Server-Issues">7 Server Issues</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Introduction"></a>
|
||||||
|
<h2 class="chapter">1 Introduction<span class="pull-right"><a class="anchor hidden-xs" href="#Introduction" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Introduction" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>This document aims in giving some quick references on a set of useful Git
|
||||||
|
commands. You should always use the extensive and detailed documentation
|
||||||
|
provided directly by Git:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git --help
|
||||||
|
man git
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>shows you the available subcommands,
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git <command> --help
|
||||||
|
man git-<command>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>shows information about the subcommand <command>.
|
||||||
|
</p>
|
||||||
|
<p>Additional information could be found on the
|
||||||
|
<a href="http://gitref.org">Git Reference</a> website.
|
||||||
|
</p>
|
||||||
|
<p>For more information about the Git project, visit the
|
||||||
|
<a href="http://git-scm.com/">Git website</a>.
|
||||||
|
</p>
|
||||||
|
<p>Consult these resources whenever you have problems, they are quite exhaustive.
|
||||||
|
</p>
|
||||||
|
<p>What follows now is a basic introduction to Git and some FFmpeg-specific
|
||||||
|
guidelines to ease the contribution to the project.
|
||||||
|
</p>
|
||||||
|
<a name="Basics-Usage"></a>
|
||||||
|
<h2 class="chapter">2 Basics Usage<span class="pull-right"><a class="anchor hidden-xs" href="#Basics-Usage" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Basics-Usage" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Get-Git"></a>
|
||||||
|
<h3 class="section">2.1 Get Git<span class="pull-right"><a class="anchor hidden-xs" href="#Get-Git" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Get-Git" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>You can get Git from <a href="http://git-scm.com/">http://git-scm.com/</a>
|
||||||
|
Most distribution and operating system provide a package for it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Cloning-the-source-tree"></a>
|
||||||
|
<h3 class="section">2.2 Cloning the source tree<span class="pull-right"><a class="anchor hidden-xs" href="#Cloning-the-source-tree" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Cloning-the-source-tree" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git clone git://source.ffmpeg.org/ffmpeg <target>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>This will put the FFmpeg sources into the directory <var><target></var>.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git clone git@source.ffmpeg.org:ffmpeg <target>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>This will put the FFmpeg sources into the directory <var><target></var> and let
|
||||||
|
you push back your changes to the remote repository.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git clone gil@ffmpeg.org:ffmpeg-web <target>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>This will put the source of the FFmpeg website into the directory
|
||||||
|
<var><target></var> and let you push back your changes to the remote repository.
|
||||||
|
(Note that <var>gil</var> stands for GItoLite and is not a typo of <var>git</var>.)
|
||||||
|
</p>
|
||||||
|
<p>If you don’t have write-access to the ffmpeg-web repository, you can
|
||||||
|
create patches after making a read-only ffmpeg-web clone:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git clone git://ffmpeg.org/ffmpeg-web <target>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Make sure that you do not have Windows line endings in your checkouts,
|
||||||
|
otherwise you may experience spurious compilation failures. One way to
|
||||||
|
achieve this is to run
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git config --global core.autocrlf false
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
|
||||||
|
<span id="Updating-the-source-tree-to-the-latest-revision"></span><a name="Updating-the-source-tree-to-the-latest-revision-1"></a>
|
||||||
|
<h3 class="section">2.3 Updating the source tree to the latest revision<span class="pull-right"><a class="anchor hidden-xs" href="#Updating-the-source-tree-to-the-latest-revision-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Updating-the-source-tree-to-the-latest-revision-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git pull (--rebase)
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>pulls in the latest changes from the tracked branch. The tracked branch
|
||||||
|
can be remote. By default the master branch tracks the branch master in
|
||||||
|
the remote origin.
|
||||||
|
</p>
|
||||||
|
<div class="warning">
|
||||||
|
<p><code>--rebase</code> (see below) is recommended.
|
||||||
|
</p></div>
|
||||||
|
<a name="Rebasing-your-local-branches"></a>
|
||||||
|
<h3 class="section">2.4 Rebasing your local branches<span class="pull-right"><a class="anchor hidden-xs" href="#Rebasing-your-local-branches" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Rebasing-your-local-branches" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git pull --rebase
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>fetches the changes from the main repository and replays your local commits
|
||||||
|
over it. This is required to keep all your local changes at the top of
|
||||||
|
FFmpeg’s master tree. The master tree will reject pushes with merge commits.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Adding_002fremoving-files_002fdirectories"></a>
|
||||||
|
<h3 class="section">2.5 Adding/removing files/directories<span class="pull-right"><a class="anchor hidden-xs" href="#Adding_002fremoving-files_002fdirectories" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Adding_002fremoving-files_002fdirectories" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git add [-A] <filename/dirname>
|
||||||
|
git rm [-r] <filename/dirname>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Git needs to get notified of all changes you make to your working
|
||||||
|
directory that makes files appear or disappear.
|
||||||
|
Line moves across files are automatically tracked.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Showing-modifications"></a>
|
||||||
|
<h3 class="section">2.6 Showing modifications<span class="pull-right"><a class="anchor hidden-xs" href="#Showing-modifications" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Showing-modifications" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git diff <filename(s)>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will show all local modifications in your working directory as unified diff.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Inspecting-the-changelog"></a>
|
||||||
|
<h3 class="section">2.7 Inspecting the changelog<span class="pull-right"><a class="anchor hidden-xs" href="#Inspecting-the-changelog" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Inspecting-the-changelog" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git log <filename(s)>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>You may also use the graphical tools like <code>gitview</code> or <code>gitk</code>
|
||||||
|
or the web interface available at <a href="http://source.ffmpeg.org/">http://source.ffmpeg.org/</a>.
|
||||||
|
</p>
|
||||||
|
<a name="Checking-source-tree-status"></a>
|
||||||
|
<h3 class="section">2.8 Checking source tree status<span class="pull-right"><a class="anchor hidden-xs" href="#Checking-source-tree-status" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Checking-source-tree-status" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git status
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>detects all the changes you made and lists what actions will be taken in case
|
||||||
|
of a commit (additions, modifications, deletions, etc.).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Committing"></a>
|
||||||
|
<h3 class="section">2.9 Committing<span class="pull-right"><a class="anchor hidden-xs" href="#Committing" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Committing" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git diff --check
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>to double check your changes before committing them to avoid trouble later
|
||||||
|
on. All experienced developers do this on each and every commit, no matter
|
||||||
|
how small.
|
||||||
|
</p>
|
||||||
|
<p>Every one of them has been saved from looking like a fool by this many times.
|
||||||
|
It’s very easy for stray debug output or cosmetic modifications to slip in,
|
||||||
|
please avoid problems through this extra level of scrutiny.
|
||||||
|
</p>
|
||||||
|
<p>For cosmetics-only commits you should get (almost) empty output from
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git diff -w -b <filename(s)>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Also check the output of
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git status
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>to make sure you don’t have untracked files or deletions.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git add [-i|-p|-A] <filenames/dirnames>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Make sure you have told Git your name, email address and GPG key
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git config --global user.name "My Name"
|
||||||
|
git config --global user.email my@email.invalid
|
||||||
|
git config --global user.signingkey ABCDEF0123245
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Enable signing all commits or use -S
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git config --global commit.gpgsign true
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Use <samp>--global</samp> to set the global configuration for all your Git checkouts.
|
||||||
|
</p>
|
||||||
|
<p>Git will select the changes to the files for commit. Optionally you can use
|
||||||
|
the interactive or the patch mode to select hunk by hunk what should be
|
||||||
|
added to the commit.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git commit
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Git will commit the selected changes to your current local branch.
|
||||||
|
</p>
|
||||||
|
<p>You will be prompted for a log message in an editor, which is either
|
||||||
|
set in your personal configuration file through
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git config --global core.editor
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>or set by one of the following environment variables:
|
||||||
|
<var>GIT_EDITOR</var>, <var>VISUAL</var> or <var>EDITOR</var>.
|
||||||
|
</p>
|
||||||
|
<a name="Writing-a-commit-message"></a>
|
||||||
|
<h3 class="section">2.10 Writing a commit message<span class="pull-right"><a class="anchor hidden-xs" href="#Writing-a-commit-message" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Writing-a-commit-message" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Log messages should be concise but descriptive.
|
||||||
|
</p>
|
||||||
|
<p>The first line must contain the context, a colon and a very short
|
||||||
|
summary of what the commit does. Details can be added, if necessary,
|
||||||
|
separated by an empty line. These details should not exceed 60-72 characters
|
||||||
|
per line, except when containing code.
|
||||||
|
</p>
|
||||||
|
<p>Example of a good commit message:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">avcodec/cbs: add a helper to read extradata within packet side data
|
||||||
|
|
||||||
|
Using ff_cbs_read() on the raw buffer will not parse it as extradata,
|
||||||
|
resulting in parsing errors for example when handling ISOBMFF avcC.
|
||||||
|
This helper works around that.
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">ptr might be NULL
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>If the summary on the first line is not enough, in the body of the message,
|
||||||
|
explain why you made a change, what you did will be obvious from the changes
|
||||||
|
themselves most of the time. Saying just "bug fix" or "10l" is bad. Remember
|
||||||
|
that people of varying skill levels look at and educate themselves while
|
||||||
|
reading through your code. Don’t include filenames in log messages except in
|
||||||
|
the context, Git provides that information.
|
||||||
|
</p>
|
||||||
|
<p>If the commit fixes a registered issue, state it in a separate line of the
|
||||||
|
body: <code>Fix Trac ticket #42.</code>
|
||||||
|
</p>
|
||||||
|
<p>The first line will be used to name
|
||||||
|
the patch by <code>git format-patch</code>.
|
||||||
|
</p>
|
||||||
|
<p>Common mistakes for the first line, as seen in <code>git log --oneline</code>
|
||||||
|
include: missing context at the beginning; description of what the code did
|
||||||
|
before the patch; line too long or wrapped to the second line.
|
||||||
|
</p>
|
||||||
|
<a name="Preparing-a-patchset"></a>
|
||||||
|
<h3 class="section">2.11 Preparing a patchset<span class="pull-right"><a class="anchor hidden-xs" href="#Preparing-a-patchset" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Preparing-a-patchset" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git format-patch <commit> [-o directory]
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will generate a set of patches for each commit between <var><commit></var> and
|
||||||
|
current <var>HEAD</var>. E.g.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git format-patch origin/master
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will generate patches for all commits on current branch which are not
|
||||||
|
present in upstream.
|
||||||
|
A useful shortcut is also
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git format-patch -n
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>which will generate patches from last <var>n</var> commits.
|
||||||
|
By default the patches are created in the current directory.
|
||||||
|
</p>
|
||||||
|
<a name="Sending-patches-for-review"></a>
|
||||||
|
<h3 class="section">2.12 Sending patches for review<span class="pull-right"><a class="anchor hidden-xs" href="#Sending-patches-for-review" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Sending-patches-for-review" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git send-email <commit list|directory>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will send the patches created by <code>git format-patch</code> or directly
|
||||||
|
generates them. All the email fields can be configured in the global/local
|
||||||
|
configuration or overridden by command line.
|
||||||
|
Note that this tool must often be installed separately (e.g. <var>git-email</var>
|
||||||
|
package on Debian-based distros).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Renaming_002fmoving_002fcopying-files-or-contents-of-files"></a>
|
||||||
|
<h3 class="section">2.13 Renaming/moving/copying files or contents of files<span class="pull-right"><a class="anchor hidden-xs" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Git automatically tracks such changes, making those normal commits.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">mv/cp path/file otherpath/otherfile
|
||||||
|
git add [-A] .
|
||||||
|
git commit
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="Git-configuration"></a>
|
||||||
|
<h2 class="chapter">3 Git configuration<span class="pull-right"><a class="anchor hidden-xs" href="#Git-configuration" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Git-configuration" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>In order to simplify a few workflows, it is advisable to configure both
|
||||||
|
your personal Git installation and your local FFmpeg repository.
|
||||||
|
</p>
|
||||||
|
<a name="Personal-Git-installation"></a>
|
||||||
|
<h3 class="section">3.1 Personal Git installation<span class="pull-right"><a class="anchor hidden-xs" href="#Personal-Git-installation" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Personal-Git-installation" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Add the following to your <samp>~/.gitconfig</samp> to help <code>git send-email</code>
|
||||||
|
and <code>git format-patch</code> detect renames:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">[diff]
|
||||||
|
renames = copy
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Repository-configuration"></a>
|
||||||
|
<h3 class="section">3.2 Repository configuration<span class="pull-right"><a class="anchor hidden-xs" href="#Repository-configuration" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Repository-configuration" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>In order to have <code>git send-email</code> automatically send patches
|
||||||
|
to the ffmpeg-devel mailing list, add the following stanza
|
||||||
|
to <samp>/path/to/ffmpeg/repository/.git/config</samp>:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">[sendemail]
|
||||||
|
to = ffmpeg-devel@ffmpeg.org
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="FFmpeg-specific"></a>
|
||||||
|
<h2 class="chapter">4 FFmpeg specific<span class="pull-right"><a class="anchor hidden-xs" href="#FFmpeg-specific" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-FFmpeg-specific" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Reverting-broken-commits"></a>
|
||||||
|
<h3 class="section">4.1 Reverting broken commits<span class="pull-right"><a class="anchor hidden-xs" href="#Reverting-broken-commits" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Reverting-broken-commits" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git reset <commit>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p><code>git reset</code> will uncommit the changes till <var><commit></var> rewriting
|
||||||
|
the current branch history.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git commit --amend
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>allows one to amend the last commit details quickly.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git rebase -i origin/master
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will replay local commits over the main repository allowing to edit, merge
|
||||||
|
or remove some of them in the process.
|
||||||
|
</p>
|
||||||
|
<div class="info">
|
||||||
|
<p><code>git reset</code>, <code>git commit --amend</code> and <code>git rebase</code>
|
||||||
|
rewrite history, so you should use them ONLY on your local or topic branches.
|
||||||
|
The main repository will reject those changes.
|
||||||
|
</p></div>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git revert <commit>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p><code>git revert</code> will generate a revert commit. This will not make the
|
||||||
|
faulty commit disappear from the history.
|
||||||
|
</p>
|
||||||
|
<a name="Pushing-changes-to-remote-trees"></a>
|
||||||
|
<h3 class="section">4.2 Pushing changes to remote trees<span class="pull-right"><a class="anchor hidden-xs" href="#Pushing-changes-to-remote-trees" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Pushing-changes-to-remote-trees" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git push origin master --dry-run
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Will simulate a push of the local master branch to the default remote
|
||||||
|
(<var>origin</var>). And list which branches and ranges or commits would have been
|
||||||
|
pushed.
|
||||||
|
Git will prevent you from pushing changes if the local and remote trees are
|
||||||
|
out of sync. Refer to <a href="#Updating-the-source-tree-to-the-latest-revision">Updating the source tree to the latest revision</a>.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git remote add <name> <url>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Will add additional remote with a name reference, it is useful if you want
|
||||||
|
to push your local branch for review on a remote host.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git push <remote> <refspec>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Will push the changes to the <var><remote></var> repository.
|
||||||
|
Omitting <var><refspec></var> makes <code>git push</code> update all the remote
|
||||||
|
branches matching the local ones.
|
||||||
|
</p>
|
||||||
|
<a name="Finding-a-specific-svn-revision"></a>
|
||||||
|
<h3 class="section">4.3 Finding a specific svn revision<span class="pull-right"><a class="anchor hidden-xs" href="#Finding-a-specific-svn-revision" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Finding-a-specific-svn-revision" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Since version 1.7.1 Git supports ‘<samp>:/foo</samp>’ syntax for specifying commits
|
||||||
|
based on a regular expression. see man gitrevisions
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git show :/'as revision 23456'
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>will show the svn changeset ‘<samp>r23456</samp>’. With older Git versions searching in
|
||||||
|
the <code>git log</code> output is the easiest option (especially if a pager with
|
||||||
|
search capabilities is used).
|
||||||
|
</p>
|
||||||
|
<p>This commit can be checked out with
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git checkout -b svn_23456 :/'as revision 23456'
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>or for Git < 1.7.1 with
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">git checkout -b svn_23456 $SHA1
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>where <var>$SHA1</var> is the commit hash from the <code>git log</code> output.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="gpg-key-generation"></a>
|
||||||
|
<h2 class="chapter">5 gpg key generation<span class="pull-right"><a class="anchor hidden-xs" href="#gpg-key-generation" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-gpg-key-generation" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>If you have no gpg key yet, we recommend that you create a ed25519 based key as it
|
||||||
|
is small, fast and secure. Especially it results in small signatures in git.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">gpg --default-new-key-algo "ed25519/cert,sign+cv25519/encr" --quick-generate-key "human@server.com"
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>When generating a key, make sure the email specified matches the email used in git as some sites like
|
||||||
|
github consider mismatches a reason to declare such commits unverified. After generating a key you
|
||||||
|
can add it to the MAINTAINER file and upload it to a keyserver.
|
||||||
|
</p>
|
||||||
|
<a name="Pre_002dpush-checklist"></a>
|
||||||
|
<h2 class="chapter">6 Pre-push checklist<span class="pull-right"><a class="anchor hidden-xs" href="#Pre_002dpush-checklist" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Pre_002dpush-checklist" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Once you have a set of commits that you feel are ready for pushing,
|
||||||
|
work through the following checklist to doublecheck everything is in
|
||||||
|
proper order. This list tries to be exhaustive. In case you are just
|
||||||
|
pushing a typo in a comment, some of the steps may be unnecessary.
|
||||||
|
Apply your common sense, but if in doubt, err on the side of caution.
|
||||||
|
</p>
|
||||||
|
<p>First, make sure that the commits and branches you are going to push
|
||||||
|
match what you want pushed and that nothing is missing, extraneous or
|
||||||
|
wrong. You can see what will be pushed by running the git push command
|
||||||
|
with <samp>--dry-run</samp> first. And then inspecting the commits listed with
|
||||||
|
<code>git log -p 1234567..987654</code>. The <code>git status</code> command
|
||||||
|
may help in finding local changes that have been forgotten to be added.
|
||||||
|
</p>
|
||||||
|
<p>Next let the code pass through a full run of our test suite.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> <code>make distclean</code>
|
||||||
|
</li><li> <code>/path/to/ffmpeg/configure</code>
|
||||||
|
</li><li> <code>make fate</code>
|
||||||
|
</li><li> if fate fails due to missing samples run <code>make fate-rsync</code> and retry
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>Make sure all your changes have been checked before pushing them, the
|
||||||
|
test suite only checks against regressions and that only to some extend. It does
|
||||||
|
obviously not check newly added features/code to be working unless you have
|
||||||
|
added a test for that (which is recommended).
|
||||||
|
</p>
|
||||||
|
<p>Also note that every single commit should pass the test suite, not just
|
||||||
|
the result of a series of patches.
|
||||||
|
</p>
|
||||||
|
<p>Once everything passed, push the changes to your public ffmpeg clone and post a
|
||||||
|
merge request to ffmpeg-devel. You can also push them directly but this is not
|
||||||
|
recommended.
|
||||||
|
</p>
|
||||||
|
<a name="Server-Issues"></a>
|
||||||
|
<h2 class="chapter">7 Server Issues<span class="pull-right"><a class="anchor hidden-xs" href="#Server-Issues" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Server-Issues" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Contact the project admins at <a href="mailto:root@ffmpeg.org">root@ffmpeg.org</a> if you have technical
|
||||||
|
problems with the Git server.
|
||||||
|
</p> <p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libavcodec Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libavcodec Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libavcodec library provides a generic encoding/decoding framework
|
||||||
|
and contains multiple decoders and encoders for audio, video and
|
||||||
|
subtitle streams, and several bitstream filters.
|
||||||
|
</p>
|
||||||
|
<p>The shared architecture provides various services ranging from bit
|
||||||
|
stream I/O to DSP optimizations, and makes it suitable for
|
||||||
|
implementing robust and fast codecs as well as for experimentation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>, <a href="ffmpeg-bitstream-filters.html">bitstream-filters</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,73 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libavdevice Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libavdevice Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libavdevice library provides a generic framework for grabbing from
|
||||||
|
and rendering to many common multimedia input/output devices, and
|
||||||
|
supports several input and output devices, including Video4Linux2,
|
||||||
|
VfW, DShow, and ALSA.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libavfilter Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libavfilter Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libavfilter library provides a generic audio/video filtering
|
||||||
|
framework containing several filters, sources and sinks.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-filters.html">ffmpeg-filters</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>, <a href="libswscale.html">libswscale</a>, <a href="libswresample.html">libswresample</a>,
|
||||||
|
<a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>, <a href="libavdevice.html">libavdevice</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libavformat Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libavformat Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libavformat library provides a generic framework for multiplexing
|
||||||
|
and demultiplexing (muxing and demuxing) audio, video and subtitle
|
||||||
|
streams. It encompasses multiple muxers and demuxers for multimedia
|
||||||
|
container formats.
|
||||||
|
</p>
|
||||||
|
<p>It also supports several input and output protocols to access a media
|
||||||
|
resource.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-formats.html">ffmpeg-formats</a>, <a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libavutil Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libavutil Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libavutil library is a utility library to aid portable
|
||||||
|
multimedia programming. It contains safe portable string functions,
|
||||||
|
random number generators, data structures, additional mathematics
|
||||||
|
functions, cryptography and multimedia related functionality (like
|
||||||
|
enumerations for pixel and sample formats). It is not a library for
|
||||||
|
code needed by both libavcodec and libavformat.
|
||||||
|
</p>
|
||||||
|
<p>The goals for this library is to be:
|
||||||
|
</p>
|
||||||
|
<dl compact="compact">
|
||||||
|
<dt><span><strong>Modular</strong></span></dt>
|
||||||
|
<dd><p>It should have few interdependencies and the possibility of disabling individual
|
||||||
|
parts during <code>./configure</code>.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><strong>Small</strong></span></dt>
|
||||||
|
<dd><p>Both sources and objects should be small.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><strong>Efficient</strong></span></dt>
|
||||||
|
<dd><p>It should have low CPU and memory usage.
|
||||||
|
</p>
|
||||||
|
</dd>
|
||||||
|
<dt><span><strong>Useful</strong></span></dt>
|
||||||
|
<dd><p>It should avoid useless features that almost no one needs.
|
||||||
|
</p></dd>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-utils.html">ffmpeg-utils</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libswresample Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libswresample Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libswresample library performs highly optimized audio resampling,
|
||||||
|
rematrixing and sample format conversion operations.
|
||||||
|
</p>
|
||||||
|
<p>Specifically, this library performs the following conversions:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> <em>Resampling</em>: is the process of changing the audio rate, for
|
||||||
|
example from a high sample rate of 44100Hz to 8000Hz. Audio
|
||||||
|
conversion from high to low sample rate is a lossy process. Several
|
||||||
|
resampling options and algorithms are available.
|
||||||
|
|
||||||
|
</li><li> <em>Format conversion</em>: is the process of converting the type of
|
||||||
|
samples, for example from 16-bit signed samples to unsigned 8-bit or
|
||||||
|
float samples. It also handles packing conversion, when passing from
|
||||||
|
packed layout (all samples belonging to distinct channels interleaved
|
||||||
|
in the same buffer), to planar layout (all samples belonging to the
|
||||||
|
same channel stored in a dedicated buffer or "plane").
|
||||||
|
|
||||||
|
</li><li> <em>Rematrixing</em>: is the process of changing the channel layout, for
|
||||||
|
example from stereo to mono. When the input channels cannot be mapped
|
||||||
|
to the output streams, the process is lossy, since it involves
|
||||||
|
different gain factors and mixing.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>Various other audio conversions (e.g. stretching and padding) are
|
||||||
|
enabled through dedicated options.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,89 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Libswscale Documentation
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Libswscale Documentation
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||||
|
<li><a id="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The libswscale library performs highly optimized image scaling and
|
||||||
|
colorspace and pixel format conversion operations.
|
||||||
|
</p>
|
||||||
|
<p>Specifically, this library performs the following conversions:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> <em>Rescaling</em>: is the process of changing the video size. Several
|
||||||
|
rescaling options and algorithms are available. This is usually a
|
||||||
|
lossy process.
|
||||||
|
|
||||||
|
</li><li> <em>Pixel format conversion</em>: is the process of converting the image
|
||||||
|
format and colorspace of the image, for example from planar YUV420P to
|
||||||
|
RGB24 packed. It also handles packing conversion, that is converts
|
||||||
|
from packed layout (all pixels belonging to distinct planes
|
||||||
|
interleaved in the same buffer), to planar layout (all samples
|
||||||
|
belonging to the same plane stored in a dedicated buffer or "plane").
|
||||||
|
|
||||||
|
<p>This is usually a lossy process in case the source and destination
|
||||||
|
colorspaces differ.
|
||||||
|
</p></li></ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="See-Also"></a>
|
||||||
|
<h2 class="chapter">2 See Also<span class="pull-right"><a class="anchor hidden-xs" href="#See-Also" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-See-Also" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||||
|
<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
|
||||||
|
<a href="libavutil.html">libavutil</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Authors"></a>
|
||||||
|
<h2 class="chapter">3 Authors<span class="pull-right"><a class="anchor hidden-xs" href="#Authors" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Authors" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>The FFmpeg developers.
|
||||||
|
</p>
|
||||||
|
<p>For details about the authorship, see the Git history of the project
|
||||||
|
(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
||||||
|
<code>git log</code> in the FFmpeg source directory, or browsing the
|
||||||
|
online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p>Maintainers for the specific components are listed in the file
|
||||||
|
<samp>MAINTAINERS</samp> in the source code tree.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,448 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
FFmpeg Mailing List FAQ
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
FFmpeg Mailing List FAQ
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-What-is-a-mailing-list_003f" href="#What-is-a-mailing-list_003f">1.1 What is a mailing list?</a></li>
|
||||||
|
<li><a id="toc-What-type-of-questions-can-I-ask_003f" href="#What-type-of-questions-can-I-ask_003f">1.2 What type of questions can I ask?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1">1.3 How do I ask a question or send a message to a mailing list?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Subscribing-_002f-Unsubscribing" href="#Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-How-do-I-subscribe_003f-1" href="#How-do-I-subscribe_003f-1">2.1 How do I subscribe?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-unsubscribe_003f" href="#How-do-I-unsubscribe_003f">2.2 How do I unsubscribe?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Moderation-Queue" href="#Moderation-Queue">3 Moderation Queue</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Why-is-my-message-awaiting-moderator-approval_003f-1" href="#Why-is-my-message-awaiting-moderator-approval_003f-1">3.1 Why is my message awaiting moderator approval?</a></li>
|
||||||
|
<li><a id="toc-How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" href="#How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f">3.2 How long does it take for my message in the moderation queue to be approved?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-delete-my-message-in-the-moderation-queue_003f-1" href="#How-do-I-delete-my-message-in-the-moderation-queue_003f-1">3.3 How do I delete my message in the moderation queue?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Archives" href="#Archives">4 Archives</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Where-are-the-archives_003f-1" href="#Where-are-the-archives_003f-1">4.1 Where are the archives?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-reply-to-a-message-in-the-archives_003f" href="#How-do-I-reply-to-a-message-in-the-archives_003f">4.2 How do I reply to a message in the archives?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-search-the-archives_003f" href="#How-do-I-search-the-archives_003f">4.3 How do I search the archives?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Other" href="#Other">5 Other</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Is-there-an-alternative-to-the-mailing-list_003f" href="#Is-there-an-alternative-to-the-mailing-list_003f">5.1 Is there an alternative to the mailing list?</a></li>
|
||||||
|
<li><a id="toc-What-is-top_002dposting_003f-1" href="#What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></li>
|
||||||
|
<li><a id="toc-What-is-the-message-size-limit_003f-1" href="#What-is-the-message-size-limit_003f-1">5.3 What is the message size limit?</a></li>
|
||||||
|
<li><a id="toc-Where-can-I-upload-sample-files_003f" href="#Where-can-I-upload-sample-files_003f">5.4 Where can I upload sample files?</a></li>
|
||||||
|
<li><a id="toc-Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" href="#Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f">5.5 Will I receive spam if I send and/or subscribe to a mailing list?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-filter-mailing-list-messages_003f" href="#How-do-I-filter-mailing-list-messages_003f">5.6 How do I filter mailing list messages?</a></li>
|
||||||
|
<li><a id="toc-How-do-I-disable-mail-delivery-without-unsubscribing_003f-1" href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f-1">5.7 How do I disable mail delivery without unsubscribing?</a></li>
|
||||||
|
<li><a id="toc-Why-is-the-mailing-list-munging-my-address_003f-1" href="#Why-is-the-mailing-list-munging-my-address_003f-1">5.8 Why is the mailing list munging my address?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Rules-and-Etiquette" href="#Rules-and-Etiquette">6 Rules and Etiquette</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-What-are-the-rules-and-the-proper-etiquette_003f" href="#What-are-the-rules-and-the-proper-etiquette_003f">6.1 What are the rules and the proper etiquette?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Help" href="#Help">7 Help</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Why-am-I-not-receiving-any-messages_003f" href="#Why-am-I-not-receiving-any-messages_003f">7.1 Why am I not receiving any messages?</a></li>
|
||||||
|
<li><a id="toc-Why-are-my-sent-messages-not-showing-up_003f" href="#Why-are-my-sent-messages-not-showing-up_003f">7.2 Why are my sent messages not showing up?</a></li>
|
||||||
|
<li><a id="toc-Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1" href="#Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1">7.3 Why do I keep getting unsubscribed from ffmpeg-devel?</a></li>
|
||||||
|
<li><a id="toc-Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1">7.4 Who do I contact if I have a problem with the mailing list?</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="General-Questions"></a>
|
||||||
|
<h2 class="chapter">1 General Questions<span class="pull-right"><a class="anchor hidden-xs" href="#General-Questions" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-General-Questions" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="What-is-a-mailing-list_003f"></a>
|
||||||
|
<h3 class="section">1.1 What is a mailing list?<span class="pull-right"><a class="anchor hidden-xs" href="#What-is-a-mailing-list_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-What-is-a-mailing-list_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>A mailing list is not much different than emailing someone, but the
|
||||||
|
main difference is that your message is received by everyone who
|
||||||
|
subscribes to the list. It is somewhat like a forum but in email form.
|
||||||
|
</p>
|
||||||
|
<p>See the <a href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/">ffmpeg-user archives</a>
|
||||||
|
for examples.
|
||||||
|
</p>
|
||||||
|
<a name="What-type-of-questions-can-I-ask_003f"></a>
|
||||||
|
<h3 class="section">1.2 What type of questions can I ask?<span class="pull-right"><a class="anchor hidden-xs" href="#What-type-of-questions-can-I-ask_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-What-type-of-questions-can-I-ask_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li> <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user</a>:
|
||||||
|
For questions involving unscripted usage or compilation of the FFmpeg
|
||||||
|
command-line tools (<code>ffmpeg</code>, <code>ffprobe</code>, <code>ffplay</code>).
|
||||||
|
|
||||||
|
</li><li> <a href="https://lists.ffmpeg.org/mailman/listinfo/libav-user/">libav-user</a>:
|
||||||
|
For questions involving the FFmpeg libav* libraries (libavcodec,
|
||||||
|
libavformat, libavfilter, etc).
|
||||||
|
|
||||||
|
</li><li> <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel/">ffmpeg-devel</a>:
|
||||||
|
For discussions involving the development of FFmpeg and for submitting
|
||||||
|
patches. User questions should be asked at ffmpeg-user or libav-user.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>To report a bug see <a href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>.
|
||||||
|
</p>
|
||||||
|
<p>We cannot provide help for scripts and/or third-party tools.
|
||||||
|
</p>
|
||||||
|
<span id="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f"></span><a name="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1"></a>
|
||||||
|
<h3 class="section">1.3 How do I ask a question or send a message to a mailing list?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>First you must <a href="#How-do-I-subscribe_003f">subscribe</a>. Then all you have to do is
|
||||||
|
send an email:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Email <a href="mailto:ffmpeg-user@ffmpeg.org">ffmpeg-user@ffmpeg.org</a> to send a message to the
|
||||||
|
ffmpeg-user mailing list.
|
||||||
|
|
||||||
|
</li><li> Email <a href="mailto:libav-user@ffmpeg.org">libav-user@ffmpeg.org</a> to send a message to the
|
||||||
|
libav-user mailing list.
|
||||||
|
|
||||||
|
</li><li> Email <a href="mailto:ffmpeg-devel@ffmpeg.org">ffmpeg-devel@ffmpeg.org</a> to send a message to the
|
||||||
|
ffmpeg-devel mailing list.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="Subscribing-_002f-Unsubscribing"></a>
|
||||||
|
<h2 class="chapter">2 Subscribing / Unsubscribing<span class="pull-right"><a class="anchor hidden-xs" href="#Subscribing-_002f-Unsubscribing" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Subscribing-_002f-Unsubscribing" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<span id="How-do-I-subscribe_003f"></span><a name="How-do-I-subscribe_003f-1"></a>
|
||||||
|
<h3 class="section">2.1 How do I subscribe?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-subscribe_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-subscribe_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Email <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a> with the subject
|
||||||
|
<em>subscribe</em>.
|
||||||
|
</p>
|
||||||
|
<p>Or visit the <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>
|
||||||
|
and refer to the <em>Subscribing to ffmpeg-user</em> section.
|
||||||
|
</p>
|
||||||
|
<p>The process is the same for the other mailing lists.
|
||||||
|
</p>
|
||||||
|
<a name="How-do-I-unsubscribe_003f"></a>
|
||||||
|
<h3 class="section">2.2 How do I unsubscribe?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-unsubscribe_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-unsubscribe_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Email <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a> with subject <em>unsubscribe</em>.
|
||||||
|
</p>
|
||||||
|
<p>Or visit the <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>,
|
||||||
|
scroll to bottom of page, enter your email address in the box, and click
|
||||||
|
the <em>Unsubscribe or edit options</em> button.
|
||||||
|
</p>
|
||||||
|
<p>The process is the same for the other mailing lists.
|
||||||
|
</p>
|
||||||
|
<p>Please avoid asking a mailing list admin to unsubscribe you unless you
|
||||||
|
are absolutely unable to do so by yourself. See <a href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f">Who do I contact if I have a problem with the mailing list?</a>
|
||||||
|
</p>
|
||||||
|
<p>Note that it is possible to temporarily halt message delivery (vacation mode).
|
||||||
|
See <a href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f">How do I disable mail delivery without unsubscribing?</a>
|
||||||
|
</p>
|
||||||
|
<a name="Moderation-Queue"></a>
|
||||||
|
<h2 class="chapter">3 Moderation Queue<span class="pull-right"><a class="anchor hidden-xs" href="#Moderation-Queue" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Moderation-Queue" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
<span id="Why-is-my-message-awaiting-moderator-approval_003f"></span><a name="Why-is-my-message-awaiting-moderator-approval_003f-1"></a>
|
||||||
|
<h3 class="section">3.1 Why is my message awaiting moderator approval?<span class="pull-right"><a class="anchor hidden-xs" href="#Why-is-my-message-awaiting-moderator-approval_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Why-is-my-message-awaiting-moderator-approval_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Some messages are automatically held in the <em>moderation queue</em> and
|
||||||
|
must be manually approved by a mailing list admin:
|
||||||
|
</p>
|
||||||
|
<p>These are:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Messages that exceed the <a href="#What-is-the-message-size-limit_003f">message size limit</a>.
|
||||||
|
|
||||||
|
</li><li> Messages from users whose accounts have been set with the <em>moderation flag</em>
|
||||||
|
(very rarely occurs, but may if a user repeatedly ignores the rules
|
||||||
|
or is abusive towards others).
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f"></a>
|
||||||
|
<h3 class="section">3.2 How long does it take for my message in the moderation queue to be approved?<span class="pull-right"><a class="anchor hidden-xs" href="#How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-long-does-it-take-for-my-message-in-the-moderation-queue-to-be-approved_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The queue is not checked on a regular basis. You can ask on the
|
||||||
|
<tt>#ffmpeg-devel</tt> IRC channel on Libera Chat for someone to approve your message.
|
||||||
|
</p>
|
||||||
|
<span id="How-do-I-delete-my-message-in-the-moderation-queue_003f"></span><a name="How-do-I-delete-my-message-in-the-moderation-queue_003f-1"></a>
|
||||||
|
<h3 class="section">3.3 How do I delete my message in the moderation queue?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-delete-my-message-in-the-moderation-queue_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-delete-my-message-in-the-moderation-queue_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>You should have received an email with the subject <em>Your message to <mailing list name> awaits moderator approval</em>.
|
||||||
|
A link is in the message that will allow you to delete your message
|
||||||
|
unless a mailing list admin already approved or rejected it.
|
||||||
|
</p>
|
||||||
|
<a name="Archives"></a>
|
||||||
|
<h2 class="chapter">4 Archives<span class="pull-right"><a class="anchor hidden-xs" href="#Archives" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Archives" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<span id="Where-are-the-archives_003f"></span><a name="Where-are-the-archives_003f-1"></a>
|
||||||
|
<h3 class="section">4.1 Where are the archives?<span class="pull-right"><a class="anchor hidden-xs" href="#Where-are-the-archives_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Where-are-the-archives_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>See the <em>Archives</em> section on the <a href="https://ffmpeg.org/contact.html">FFmpeg Contact</a>
|
||||||
|
page for links to all FFmpeg mailing list archives.
|
||||||
|
</p>
|
||||||
|
<p>Note that the archives are split by month. Discussions that span
|
||||||
|
several months will be split into separate months in the archives.
|
||||||
|
</p>
|
||||||
|
<a name="How-do-I-reply-to-a-message-in-the-archives_003f"></a>
|
||||||
|
<h3 class="section">4.2 How do I reply to a message in the archives?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-reply-to-a-message-in-the-archives_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-reply-to-a-message-in-the-archives_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Click the email link at the top of the message just under the subject
|
||||||
|
title. The link will provide the proper headers to keep the message
|
||||||
|
within the thread.
|
||||||
|
</p>
|
||||||
|
<p>Note that you must be subscribed to send a message to the ffmpeg-user or
|
||||||
|
libav-user mailing lists.
|
||||||
|
</p>
|
||||||
|
<a name="How-do-I-search-the-archives_003f"></a>
|
||||||
|
<h3 class="section">4.3 How do I search the archives?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-search-the-archives_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-search-the-archives_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Perform a site search using your favorite search engine. Example:
|
||||||
|
</p>
|
||||||
|
<p><tt>site:lists.ffmpeg.org/pipermail/ffmpeg-user/ "search term"</tt>
|
||||||
|
</p>
|
||||||
|
<a name="Other"></a>
|
||||||
|
<h2 class="chapter">5 Other<span class="pull-right"><a class="anchor hidden-xs" href="#Other" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Other" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Is-there-an-alternative-to-the-mailing-list_003f"></a>
|
||||||
|
<h3 class="section">5.1 Is there an alternative to the mailing list?<span class="pull-right"><a class="anchor hidden-xs" href="#Is-there-an-alternative-to-the-mailing-list_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Is-there-an-alternative-to-the-mailing-list_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>You can ask for help in the official <tt>#ffmpeg</tt> IRC channel on Libera Chat.
|
||||||
|
</p>
|
||||||
|
<p>Some users prefer the third-party <a href="http://www.ffmpeg-archive.org/">Nabble</a>
|
||||||
|
interface which presents the mailing lists in a typical forum layout.
|
||||||
|
</p>
|
||||||
|
<p>There are also numerous third-party help sites such as
|
||||||
|
<a href="https://superuser.com/tags/ffmpeg">Super User</a> and
|
||||||
|
<a href="https://www.reddit.com/r/ffmpeg/">r/ffmpeg on reddit</a>.
|
||||||
|
</p>
|
||||||
|
<span id="What-is-top_002dposting_003f"></span><a name="What-is-top_002dposting_003f-1"></a>
|
||||||
|
<h3 class="section">5.2 What is top-posting?<span class="pull-right"><a class="anchor hidden-xs" href="#What-is-top_002dposting_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-What-is-top_002dposting_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>See <a href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">https://en.wikipedia.org/wiki/Posting_style#Top-posting</a>.
|
||||||
|
</p>
|
||||||
|
<p>Instead, use trimmed interleaved/inline replies (<a href="https://lists.ffmpeg.org/pipermail/ffmpeg-user/2017-April/035849.html">example</a>).
|
||||||
|
</p>
|
||||||
|
<span id="What-is-the-message-size-limit_003f"></span><a name="What-is-the-message-size-limit_003f-1"></a>
|
||||||
|
<h3 class="section">5.3 What is the message size limit?<span class="pull-right"><a class="anchor hidden-xs" href="#What-is-the-message-size-limit_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-What-is-the-message-size-limit_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The message size limit is 1000 kilobytes. Please provide links to larger files
|
||||||
|
instead of attaching them.
|
||||||
|
</p>
|
||||||
|
<a name="Where-can-I-upload-sample-files_003f"></a>
|
||||||
|
<h3 class="section">5.4 Where can I upload sample files?<span class="pull-right"><a class="anchor hidden-xs" href="#Where-can-I-upload-sample-files_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Where-can-I-upload-sample-files_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Anywhere that is not too annoying for us to use.
|
||||||
|
</p>
|
||||||
|
<p>Google Drive and Dropbox are acceptable if you need a file host, and
|
||||||
|
<a href="https://0x0.st/">0x0.st</a> is good for files under 256 MiB.
|
||||||
|
</p>
|
||||||
|
<p>Small, short samples are preferred if possible.
|
||||||
|
</p>
|
||||||
|
<a name="Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f"></a>
|
||||||
|
<h3 class="section">5.5 Will I receive spam if I send and/or subscribe to a mailing list?<span class="pull-right"><a class="anchor hidden-xs" href="#Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Will-I-receive-spam-if-I-send-and_002for-subscribe-to-a-mailing-list_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Highly unlikely.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> The list of subscribed users is not public.
|
||||||
|
|
||||||
|
</li><li> Email addresses in the archives are obfuscated.
|
||||||
|
|
||||||
|
</li><li> Several unique test email accounts were utilized and none have yet
|
||||||
|
received any spam.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>However, you may see a spam in the mailing lists on rare occasions:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Spam in the moderation queue may be accidentally approved due to human
|
||||||
|
error.
|
||||||
|
|
||||||
|
</li><li> There have been a few messages from subscribed users who had their own
|
||||||
|
email addresses hacked and spam messages from (or appearing to be from)
|
||||||
|
the hacked account were sent to their contacts (a mailing list being a
|
||||||
|
contact in these cases).
|
||||||
|
|
||||||
|
</li><li> If you are subscribed to the bug tracker mailing list (ffmpeg-trac) you
|
||||||
|
may see the occasional spam as a false bug report, but we take measures
|
||||||
|
to try to prevent this.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="How-do-I-filter-mailing-list-messages_003f"></a>
|
||||||
|
<h3 class="section">5.6 How do I filter mailing list messages?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-filter-mailing-list-messages_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-filter-mailing-list-messages_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Use the <em>List-Id</em>. For example, the ffmpeg-user mailing list is
|
||||||
|
<tt>ffmpeg-user.ffmpeg.org</tt>. You can view the List-Id in the raw message
|
||||||
|
or headers.
|
||||||
|
</p>
|
||||||
|
<p>You can then filter the mailing list messages to their own folder.
|
||||||
|
</p>
|
||||||
|
<span id="How-do-I-disable-mail-delivery-without-unsubscribing_003f"></span><a name="How-do-I-disable-mail-delivery-without-unsubscribing_003f-1"></a>
|
||||||
|
<h3 class="section">5.7 How do I disable mail delivery without unsubscribing?<span class="pull-right"><a class="anchor hidden-xs" href="#How-do-I-disable-mail-delivery-without-unsubscribing_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-How-do-I-disable-mail-delivery-without-unsubscribing_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Sometimes you may want to temporarily stop receiving all mailing list
|
||||||
|
messages. This "vacation mode" is simple to do:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> Go to the <a href="https://lists.ffmpeg.org/mailman/listinfo/ffmpeg-user/">ffmpeg-user mailing list info page</a>
|
||||||
|
|
||||||
|
</li><li> Enter your email address in the box at very bottom of the page and click the
|
||||||
|
<em>Unsubscribe or edit options</em> box.
|
||||||
|
|
||||||
|
</li><li> Enter your password and click the <em>Log in</em> button.
|
||||||
|
|
||||||
|
</li><li> Look for the <em>Mail delivery</em> option. Here you can disable/enable mail
|
||||||
|
delivery. If you check <em>Set globally</em> it will apply your choice to all
|
||||||
|
other FFmpeg mailing lists you are subscribed to.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<p>Alternatively, from your subscribed address, send a message to <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a>
|
||||||
|
with the subject <em>set delivery off</em>. To re-enable mail delivery send a
|
||||||
|
message to <a href="mailto:ffmpeg-user-request@ffmpeg.org">ffmpeg-user-request@ffmpeg.org</a> with the subject
|
||||||
|
<em>set delivery on</em>.
|
||||||
|
</p>
|
||||||
|
<span id="Why-is-the-mailing-list-munging-my-address_003f"></span><a name="Why-is-the-mailing-list-munging-my-address_003f-1"></a>
|
||||||
|
<h3 class="section">5.8 Why is the mailing list munging my address?<span class="pull-right"><a class="anchor hidden-xs" href="#Why-is-the-mailing-list-munging-my-address_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Why-is-the-mailing-list-munging-my-address_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>This is due to subscribers that use an email service with a DMARC reject policy
|
||||||
|
which adds difficulties to mailing list operators.
|
||||||
|
</p>
|
||||||
|
<p>The mailing list must re-write (munge) the <em>From:</em> header for such users;
|
||||||
|
otherwise their email service will reject and bounce the message resulting in
|
||||||
|
automatic unsubscribing from the mailing list.
|
||||||
|
</p>
|
||||||
|
<p>When sending a message these users will see <em>via <mailing list name></em>
|
||||||
|
added to their name and the <em>From:</em> address munged to the address of
|
||||||
|
the particular mailing list.
|
||||||
|
</p>
|
||||||
|
<p>If you want to avoid this then please use a different email service.
|
||||||
|
</p>
|
||||||
|
<p>Note that ffmpeg-devel does not apply any munging as it causes issues with
|
||||||
|
patch authorship. As a result users with an email service with a DMARC reject
|
||||||
|
policy may be automatically unsubscribed due to rejected and bounced messages.
|
||||||
|
</p>
|
||||||
|
<a name="Rules-and-Etiquette"></a>
|
||||||
|
<h2 class="chapter">6 Rules and Etiquette<span class="pull-right"><a class="anchor hidden-xs" href="#Rules-and-Etiquette" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Rules-and-Etiquette" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="What-are-the-rules-and-the-proper-etiquette_003f"></a>
|
||||||
|
<h3 class="section">6.1 What are the rules and the proper etiquette?<span class="pull-right"><a class="anchor hidden-xs" href="#What-are-the-rules-and-the-proper-etiquette_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-What-are-the-rules-and-the-proper-etiquette_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>There may seem to be many things to remember, but we want to help and
|
||||||
|
following these guidelines will allow you to get answers more quickly
|
||||||
|
and help avoid getting ignored.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Always show your actual, unscripted <code>ffmpeg</code> command and the
|
||||||
|
complete, uncut console output from your command.
|
||||||
|
|
||||||
|
</li><li> Use the most simple and minimal command that still shows the issue you
|
||||||
|
are encountering.
|
||||||
|
|
||||||
|
</li><li> Provide all necessary information so others can attempt to duplicate
|
||||||
|
your issue. This includes the actual command, complete uncut console
|
||||||
|
output, and any inputs that are required to duplicate the issue.
|
||||||
|
|
||||||
|
</li><li> Use the latest <code>ffmpeg</code> build you can get. See the <a href="https://ffmpeg.org/download.html">FFmpeg Download</a>
|
||||||
|
page for links to recent builds for Linux, macOS, and Windows. Or
|
||||||
|
compile from the current git master branch.
|
||||||
|
|
||||||
|
</li><li> Avoid <a href="https://en.wikipedia.org/wiki/Posting_style#Top-posting">top-posting</a>.
|
||||||
|
Also see <a href="#What-is-top_002dposting_003f">What is top-posting?</a>
|
||||||
|
|
||||||
|
</li><li> Avoid hijacking threads. Thread hijacking is replying to a message and
|
||||||
|
changing the subject line to something unrelated to the original thread.
|
||||||
|
Most email clients will still show the renamed message under the
|
||||||
|
original thread. This can be confusing and these types of messages are
|
||||||
|
often ignored.
|
||||||
|
|
||||||
|
</li><li> Do not send screenshots. Copy and paste console text instead of making
|
||||||
|
screenshots of the text.
|
||||||
|
|
||||||
|
</li><li> Avoid sending email disclaimers and legalese if possible as this is a
|
||||||
|
public list.
|
||||||
|
|
||||||
|
</li><li> Avoid using the <code>-loglevel debug</code>, <code>-loglevel quiet</code>, and
|
||||||
|
<code>-hide_banner</code> options unless requested to do so.
|
||||||
|
|
||||||
|
</li><li> If you attach files avoid compressing small files. Uncompressed is
|
||||||
|
preferred.
|
||||||
|
|
||||||
|
</li><li> Please do not send HTML-only messages. The mailing list will ignore the
|
||||||
|
HTML component of your message. Most mail clients will automatically
|
||||||
|
include a text component: this is what the mailing list will use.
|
||||||
|
|
||||||
|
</li><li> Configuring your mail client to break lines after 70 or so characters is
|
||||||
|
recommended.
|
||||||
|
|
||||||
|
</li><li> Avoid sending the same message to multiple mailing lists.
|
||||||
|
|
||||||
|
</li><li> Please follow our <a href="https://ffmpeg.org/developer.html#Code-of-conduct">Code of Conduct</a>.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="Help"></a>
|
||||||
|
<h2 class="chapter">7 Help<span class="pull-right"><a class="anchor hidden-xs" href="#Help" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Help" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Why-am-I-not-receiving-any-messages_003f"></a>
|
||||||
|
<h3 class="section">7.1 Why am I not receiving any messages?<span class="pull-right"><a class="anchor hidden-xs" href="#Why-am-I-not-receiving-any-messages_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Why-am-I-not-receiving-any-messages_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Some email providers have blacklists or spam filters that block or mark
|
||||||
|
the mailing list messages as false positives. Unfortunately, the user is
|
||||||
|
often not aware of this and is often out of their control.
|
||||||
|
</p>
|
||||||
|
<p>When possible we attempt to notify the provider to be removed from the
|
||||||
|
blacklists or filters.
|
||||||
|
</p>
|
||||||
|
<a name="Why-are-my-sent-messages-not-showing-up_003f"></a>
|
||||||
|
<h3 class="section">7.2 Why are my sent messages not showing up?<span class="pull-right"><a class="anchor hidden-xs" href="#Why-are-my-sent-messages-not-showing-up_003f" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Why-are-my-sent-messages-not-showing-up_003f" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Excluding <a href="#Why-is-my-message-awaiting-moderator-approval_003f">messages that are held in the moderation queue</a>
|
||||||
|
there are a few other reasons why your messages may fail to appear:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> HTML-only messages are ignored by the mailing lists. Most mail clients
|
||||||
|
automatically include a text component alongside HTML email: this is what
|
||||||
|
the mailing list will use. If it does not then consider your client to be
|
||||||
|
broken, because sending a text component along with the HTML component to
|
||||||
|
form a multi-part message is recommended by email standards.
|
||||||
|
|
||||||
|
</li><li> Check your spam folder.
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<span id="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f"></span><a name="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1"></a>
|
||||||
|
<h3 class="section">7.3 Why do I keep getting unsubscribed from ffmpeg-devel?<span class="pull-right"><a class="anchor hidden-xs" href="#Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Users with an email service that has a DMARC reject or quarantine policy may be
|
||||||
|
automatically unsubscribed from the ffmpeg-devel mailing list due to the mailing
|
||||||
|
list messages being continuously rejected and bounced back.
|
||||||
|
</p>
|
||||||
|
<p>Consider using a different email service.
|
||||||
|
</p>
|
||||||
|
<span id="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f"></span><a name="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1"></a>
|
||||||
|
<h3 class="section">7.4 Who do I contact if I have a problem with the mailing list?<span class="pull-right"><a class="anchor hidden-xs" href="#Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Send a message to <a href="mailto:ffmpeg-user-owner@ffmpeg.org">ffmpeg-user-owner@ffmpeg.org</a>.
|
||||||
|
</p>
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,211 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
NUT
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
NUT
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Description" href="#Description">1 Description</a></li>
|
||||||
|
<li><a id="toc-Modes" href="#Modes">2 Modes</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-BROADCAST" href="#BROADCAST">2.1 BROADCAST</a></li>
|
||||||
|
<li><a id="toc-PIPE" href="#PIPE">2.2 PIPE</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Container_002dspecific-codec-tags" href="#Container_002dspecific-codec-tags">3 Container-specific codec tags</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Generic-raw-YUVA-formats" href="#Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></li>
|
||||||
|
<li><a id="toc-Raw-Audio" href="#Raw-Audio">3.2 Raw Audio</a></li>
|
||||||
|
<li><a id="toc-Subtitles" href="#Subtitles">3.3 Subtitles</a></li>
|
||||||
|
<li><a id="toc-Raw-Data" href="#Raw-Data">3.4 Raw Data</a></li>
|
||||||
|
<li><a id="toc-Codecs" href="#Codecs">3.5 Codecs</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Description"></a>
|
||||||
|
<h2 class="chapter">1 Description<span class="pull-right"><a class="anchor hidden-xs" href="#Description" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Description" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
<p>NUT is a low overhead generic container format. It stores audio, video,
|
||||||
|
subtitle and user-defined streams in a simple, yet efficient, way.
|
||||||
|
</p>
|
||||||
|
<p>It was created by a group of FFmpeg and MPlayer developers in 2003
|
||||||
|
and was finalized in 2008.
|
||||||
|
</p>
|
||||||
|
<p>The official nut specification is at svn://svn.mplayerhq.hu/nut
|
||||||
|
In case of any differences between this text and the official specification,
|
||||||
|
the official specification shall prevail.
|
||||||
|
</p>
|
||||||
|
<a name="Modes"></a>
|
||||||
|
<h2 class="chapter">2 Modes<span class="pull-right"><a class="anchor hidden-xs" href="#Modes" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Modes" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
<p>NUT has some variants signaled by using the flags field in its main header.
|
||||||
|
</p>
|
||||||
|
<table>
|
||||||
|
<tr><td width="40%">BROADCAST</td><td width="40%">Extend the syncpoint to report the sender wallclock</td></tr>
|
||||||
|
<tr><td width="40%">PIPE</td><td width="40%">Omit completely the syncpoint</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<a name="BROADCAST"></a>
|
||||||
|
<h3 class="section">2.1 BROADCAST<span class="pull-right"><a class="anchor hidden-xs" href="#BROADCAST" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-BROADCAST" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The BROADCAST variant provides a secondary time reference to facilitate
|
||||||
|
detecting endpoint latency and network delays.
|
||||||
|
It assumes all the endpoint clocks are synchronized.
|
||||||
|
To be used in real-time scenarios.
|
||||||
|
</p>
|
||||||
|
<a name="PIPE"></a>
|
||||||
|
<h3 class="section">2.2 PIPE<span class="pull-right"><a class="anchor hidden-xs" href="#PIPE" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-PIPE" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The PIPE variant assumes NUT is used as non-seekable intermediate container,
|
||||||
|
by not using syncpoint removes unneeded overhead and reduces the overall
|
||||||
|
memory usage.
|
||||||
|
</p>
|
||||||
|
<a name="Container_002dspecific-codec-tags"></a>
|
||||||
|
<h2 class="chapter">3 Container-specific codec tags<span class="pull-right"><a class="anchor hidden-xs" href="#Container_002dspecific-codec-tags" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Container_002dspecific-codec-tags" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<a name="Generic-raw-YUVA-formats"></a>
|
||||||
|
<h3 class="section">3.1 Generic raw YUVA formats<span class="pull-right"><a class="anchor hidden-xs" href="#Generic-raw-YUVA-formats" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Generic-raw-YUVA-formats" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Since many exotic planar YUVA pixel formats are not considered by
|
||||||
|
the AVI/QuickTime FourCC lists, the following scheme is adopted for
|
||||||
|
representing them.
|
||||||
|
</p>
|
||||||
|
<p>The first two bytes can contain the values:
|
||||||
|
Y1 = only Y
|
||||||
|
Y2 = Y+A
|
||||||
|
Y3 = YUV
|
||||||
|
Y4 = YUVA
|
||||||
|
</p>
|
||||||
|
<p>The third byte represents the width and height chroma subsampling
|
||||||
|
values for the UV planes, that is the amount to shift the luma
|
||||||
|
width/height right to find the chroma width/height.
|
||||||
|
</p>
|
||||||
|
<p>The fourth byte is the number of bits used (8, 16, ...).
|
||||||
|
</p>
|
||||||
|
<p>If the order of bytes is inverted, that means that each component has
|
||||||
|
to be read big-endian.
|
||||||
|
</p>
|
||||||
|
<a name="Raw-Audio"></a>
|
||||||
|
<h3 class="section">3.2 Raw Audio<span class="pull-right"><a class="anchor hidden-xs" href="#Raw-Audio" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Raw-Audio" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><td width="40%">ALAW</td><td width="40%">A-LAW</td></tr>
|
||||||
|
<tr><td width="40%">ULAW</td><td width="40%">MU-LAW</td></tr>
|
||||||
|
<tr><td width="40%">P<type><interleaving><bits></td><td width="40%">little-endian PCM</td></tr>
|
||||||
|
<tr><td width="40%"><bits><interleaving><type>P</td><td width="40%">big-endian PCM</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p><type> is S for signed integer, U for unsigned integer, F for IEEE float
|
||||||
|
<interleaving> is D for default, P is for planar.
|
||||||
|
<bits> is 8/16/24/32
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">PFD[32] would for example be signed 32 bit little-endian IEEE float
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<a name="Subtitles"></a>
|
||||||
|
<h3 class="section">3.3 Subtitles<span class="pull-right"><a class="anchor hidden-xs" href="#Subtitles" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Subtitles" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
||||||
|
<tr><td width="40%">SSA[0]</td><td width="40%">SubStation Alpha</td></tr>
|
||||||
|
<tr><td width="40%">DVDS</td><td width="40%">DVD subtitles</td></tr>
|
||||||
|
<tr><td width="40%">DVBS</td><td width="40%">DVB subtitles</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<a name="Raw-Data"></a>
|
||||||
|
<h3 class="section">3.4 Raw Data<span class="pull-right"><a class="anchor hidden-xs" href="#Raw-Data" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Raw-Data" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<a name="Codecs"></a>
|
||||||
|
<h3 class="section">3.5 Codecs<span class="pull-right"><a class="anchor hidden-xs" href="#Codecs" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Codecs" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr><td width="40%">3IV1</td><td width="40%">non-compliant MPEG-4 generated by old 3ivx</td></tr>
|
||||||
|
<tr><td width="40%">ASV1</td><td width="40%">Asus Video</td></tr>
|
||||||
|
<tr><td width="40%">ASV2</td><td width="40%">Asus Video 2</td></tr>
|
||||||
|
<tr><td width="40%">CVID</td><td width="40%">Cinepak</td></tr>
|
||||||
|
<tr><td width="40%">CYUV</td><td width="40%">Creative YUV</td></tr>
|
||||||
|
<tr><td width="40%">DIVX</td><td width="40%">non-compliant MPEG-4 generated by old DivX</td></tr>
|
||||||
|
<tr><td width="40%">DUCK</td><td width="40%">Truemotion 1</td></tr>
|
||||||
|
<tr><td width="40%">FFV1</td><td width="40%">FFmpeg video 1</td></tr>
|
||||||
|
<tr><td width="40%">FFVH</td><td width="40%">FFmpeg Huffyuv</td></tr>
|
||||||
|
<tr><td width="40%">H261</td><td width="40%">ITU H.261</td></tr>
|
||||||
|
<tr><td width="40%">H262</td><td width="40%">ITU H.262</td></tr>
|
||||||
|
<tr><td width="40%">H263</td><td width="40%">ITU H.263</td></tr>
|
||||||
|
<tr><td width="40%">H264</td><td width="40%">ITU H.264</td></tr>
|
||||||
|
<tr><td width="40%">HFYU</td><td width="40%">Huffyuv</td></tr>
|
||||||
|
<tr><td width="40%">I263</td><td width="40%">Intel H.263</td></tr>
|
||||||
|
<tr><td width="40%">IV31</td><td width="40%">Indeo 3.1</td></tr>
|
||||||
|
<tr><td width="40%">IV32</td><td width="40%">Indeo 3.2</td></tr>
|
||||||
|
<tr><td width="40%">IV50</td><td width="40%">Indeo 5.0</td></tr>
|
||||||
|
<tr><td width="40%">LJPG</td><td width="40%">ITU JPEG (lossless)</td></tr>
|
||||||
|
<tr><td width="40%">MJLS</td><td width="40%">ITU JPEG-LS</td></tr>
|
||||||
|
<tr><td width="40%">MJPG</td><td width="40%">ITU JPEG</td></tr>
|
||||||
|
<tr><td width="40%">MPG4</td><td width="40%">MS MPEG-4v1 (not ISO MPEG-4)</td></tr>
|
||||||
|
<tr><td width="40%">MP42</td><td width="40%">MS MPEG-4v2</td></tr>
|
||||||
|
<tr><td width="40%">MP43</td><td width="40%">MS MPEG-4v3</td></tr>
|
||||||
|
<tr><td width="40%">MP4V</td><td width="40%">ISO MPEG-4 Part 2 Video (from old encoders)</td></tr>
|
||||||
|
<tr><td width="40%">mpg1</td><td width="40%">ISO MPEG-1 Video</td></tr>
|
||||||
|
<tr><td width="40%">mpg2</td><td width="40%">ISO MPEG-2 Video</td></tr>
|
||||||
|
<tr><td width="40%">MRLE</td><td width="40%">MS RLE</td></tr>
|
||||||
|
<tr><td width="40%">MSVC</td><td width="40%">MS Video 1</td></tr>
|
||||||
|
<tr><td width="40%">RT21</td><td width="40%">Indeo 2.1</td></tr>
|
||||||
|
<tr><td width="40%">RV10</td><td width="40%">RealVideo 1.0</td></tr>
|
||||||
|
<tr><td width="40%">RV20</td><td width="40%">RealVideo 2.0</td></tr>
|
||||||
|
<tr><td width="40%">RV30</td><td width="40%">RealVideo 3.0</td></tr>
|
||||||
|
<tr><td width="40%">RV40</td><td width="40%">RealVideo 4.0</td></tr>
|
||||||
|
<tr><td width="40%">SNOW</td><td width="40%">FFmpeg Snow</td></tr>
|
||||||
|
<tr><td width="40%">SVQ1</td><td width="40%">Sorenson Video 1</td></tr>
|
||||||
|
<tr><td width="40%">SVQ3</td><td width="40%">Sorenson Video 3</td></tr>
|
||||||
|
<tr><td width="40%">theo</td><td width="40%">Xiph Theora</td></tr>
|
||||||
|
<tr><td width="40%">TM20</td><td width="40%">Truemotion 2.0</td></tr>
|
||||||
|
<tr><td width="40%">UMP4</td><td width="40%">non-compliant MPEG-4 generated by UB Video MPEG-4</td></tr>
|
||||||
|
<tr><td width="40%">VCR1</td><td width="40%">ATI VCR1</td></tr>
|
||||||
|
<tr><td width="40%">VP30</td><td width="40%">VP 3.0</td></tr>
|
||||||
|
<tr><td width="40%">VP31</td><td width="40%">VP 3.1</td></tr>
|
||||||
|
<tr><td width="40%">VP50</td><td width="40%">VP 5.0</td></tr>
|
||||||
|
<tr><td width="40%">VP60</td><td width="40%">VP 6.0</td></tr>
|
||||||
|
<tr><td width="40%">VP61</td><td width="40%">VP 6.1</td></tr>
|
||||||
|
<tr><td width="40%">VP62</td><td width="40%">VP 6.2</td></tr>
|
||||||
|
<tr><td width="40%">VP70</td><td width="40%">VP 7.0</td></tr>
|
||||||
|
<tr><td width="40%">WMV1</td><td width="40%">MS WMV7</td></tr>
|
||||||
|
<tr><td width="40%">WMV2</td><td width="40%">MS WMV8</td></tr>
|
||||||
|
<tr><td width="40%">WMV3</td><td width="40%">MS WMV9</td></tr>
|
||||||
|
<tr><td width="40%">WV1F</td><td width="40%">non-compliant MPEG-4 generated by ?</td></tr>
|
||||||
|
<tr><td width="40%">WVC1</td><td width="40%">VC-1</td></tr>
|
||||||
|
<tr><td width="40%">XVID</td><td width="40%">non-compliant MPEG-4 generated by old Xvid</td></tr>
|
||||||
|
<tr><td width="40%">XVIX</td><td width="40%">non-compliant MPEG-4 generated by old Xvid with interlacing bug</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -0,0 +1,395 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>
|
||||||
|
Platform Specific Information
|
||||||
|
</title>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.min.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<h1>
|
||||||
|
Platform Specific Information
|
||||||
|
</h1>
|
||||||
|
<div align="center">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<a name="SEC_Top"></a>
|
||||||
|
|
||||||
|
<div class="Contents_element" id="SEC_Contents">
|
||||||
|
<h2 class="contents-heading">Table of Contents</h2>
|
||||||
|
|
||||||
|
<div class="contents">
|
||||||
|
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Unix_002dlike" href="#Unix_002dlike">1 Unix-like</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Advanced-linking-configuration" href="#Advanced-linking-configuration">1.1 Advanced linking configuration</a></li>
|
||||||
|
<li><a id="toc-BSD" href="#BSD">1.2 BSD</a></li>
|
||||||
|
<li><a id="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">1.3 (Open)Solaris</a></li>
|
||||||
|
<li><a id="toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029" href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.4 Darwin (Mac OS X, iPhone)</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-DOS" href="#DOS">2 DOS</a></li>
|
||||||
|
<li><a id="toc-OS_002f2" href="#OS_002f2">3 OS/2</a></li>
|
||||||
|
<li><a id="toc-Windows" href="#Windows">4 Windows</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Native-Windows-compilation-using-MSYS2" href="#Native-Windows-compilation-using-MSYS2">4.1.1 Native Windows compilation using MSYS2</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a>
|
||||||
|
<ul class="no-bullet">
|
||||||
|
<li><a id="toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a id="toc-Cross-compilation-for-Windows-with-Linux-1" href="#Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></li>
|
||||||
|
<li><a id="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></li>
|
||||||
|
<li><a id="toc-Crosscompilation-for-Windows-under-Cygwin" href="#Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a name="Unix_002dlike"></a>
|
||||||
|
<h2 class="chapter">1 Unix-like<span class="pull-right"><a class="anchor hidden-xs" href="#Unix_002dlike" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Unix_002dlike" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Some parts of FFmpeg cannot be built with version 2.15 of the GNU
|
||||||
|
assembler which is still provided by a few AMD64 distributions. To
|
||||||
|
make sure your compiler really uses the required version of gas
|
||||||
|
after a binutils upgrade, run:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">$(gcc -print-prog-name=as) --version
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>If not, then you should install a different compiler that has no
|
||||||
|
hard-coded path to gas. In the worst case pass <code>--disable-asm</code>
|
||||||
|
to configure.
|
||||||
|
</p>
|
||||||
|
<a name="Advanced-linking-configuration"></a>
|
||||||
|
<h3 class="section">1.1 Advanced linking configuration<span class="pull-right"><a class="anchor hidden-xs" href="#Advanced-linking-configuration" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Advanced-linking-configuration" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>If you compiled FFmpeg libraries statically and you want to use them to
|
||||||
|
build your own shared library, you may need to force PIC support (with
|
||||||
|
<code>--enable-pic</code> during FFmpeg configure) and add the following option
|
||||||
|
to your project LDFLAGS:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">-Wl,-Bsymbolic
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>If your target platform requires position independent binaries, you should
|
||||||
|
pass the correct linking flag (e.g. <code>-pie</code>) to <code>--extra-ldexeflags</code>.
|
||||||
|
</p>
|
||||||
|
<a name="BSD"></a>
|
||||||
|
<h3 class="section">1.2 BSD<span class="pull-right"><a class="anchor hidden-xs" href="#BSD" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-BSD" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>BSD make will not build FFmpeg, you need to install and use GNU Make
|
||||||
|
(<code>gmake</code>).
|
||||||
|
</p>
|
||||||
|
<a name="g_t_0028Open_0029Solaris"></a>
|
||||||
|
<h3 class="section">1.3 (Open)Solaris<span class="pull-right"><a class="anchor hidden-xs" href="#_0028Open_0029Solaris" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-_0028Open_0029Solaris" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>GNU Make is required to build FFmpeg, so you have to invoke (<code>gmake</code>),
|
||||||
|
standard Solaris Make will not work. When building with a non-c99 front-end
|
||||||
|
(gcc, generic suncc) add either <code>--extra-libs=/usr/lib/values-xpg6.o</code>
|
||||||
|
or <code>--extra-libs=/usr/lib/64/values-xpg6.o</code> to the configure options
|
||||||
|
since the libc is not c99-compliant by default. The probes performed by
|
||||||
|
configure may raise an exception leading to the death of configure itself
|
||||||
|
due to a bug in the system shell. Simply invoke a different shell such as
|
||||||
|
bash directly to work around this:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">bash ./configure
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<span id="Darwin"></span><a name="Darwin-_0028Mac-OS-X_002c-iPhone_0029"></a>
|
||||||
|
<h3 class="section">1.4 Darwin (Mac OS X, iPhone)<span class="pull-right"><a class="anchor hidden-xs" href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>The toolchain provided with Xcode is sufficient to build the basic
|
||||||
|
unaccelerated code.
|
||||||
|
</p>
|
||||||
|
<p>Mac OS X on PowerPC or ARM (iPhone) requires a preprocessor from
|
||||||
|
<a href="https://github.com/FFmpeg/gas-preprocessor">https://github.com/FFmpeg/gas-preprocessor</a> or
|
||||||
|
<a href="https://github.com/yuvi/gas-preprocessor">https://github.com/yuvi/gas-preprocessor</a>(currently outdated) to build the optimized
|
||||||
|
assembly functions. Put the Perl script somewhere
|
||||||
|
in your PATH, FFmpeg’s configure will pick it up automatically.
|
||||||
|
</p>
|
||||||
|
<p>Mac OS X on amd64 and x86 requires <code>nasm</code> to build most of the
|
||||||
|
optimized assembly functions. <a href="http://www.finkproject.org/">Fink</a>,
|
||||||
|
<a href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>,
|
||||||
|
<a href="https://mxcl.github.com/homebrew/">Homebrew</a>
|
||||||
|
or <a href="http://www.macports.org">MacPorts</a> can easily provide it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="DOS"></a>
|
||||||
|
<h2 class="chapter">2 DOS<span class="pull-right"><a class="anchor hidden-xs" href="#DOS" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-DOS" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>Using a cross-compiler is preferred for various reasons.
|
||||||
|
<a href="http://www.delorie.com/howto/djgpp/linux-x-djgpp.html">http://www.delorie.com/howto/djgpp/linux-x-djgpp.html</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="OS_002f2"></a>
|
||||||
|
<h2 class="chapter">3 OS/2<span class="pull-right"><a class="anchor hidden-xs" href="#OS_002f2" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-OS_002f2" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>For information about compiling FFmpeg on OS/2 see
|
||||||
|
<a href="http://www.edm2.com/index.php/FFmpeg">http://www.edm2.com/index.php/FFmpeg</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a name="Windows"></a>
|
||||||
|
<h2 class="chapter">4 Windows<span class="pull-right"><a class="anchor hidden-xs" href="#Windows" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Windows" aria-hidden="true">TOC</a></span></h2>
|
||||||
|
|
||||||
|
<p>To get help and instructions for building FFmpeg under Windows, check out
|
||||||
|
the FFmpeg Windows Help Forum at <a href="http://ffmpeg.zeranoe.com/forum/">http://ffmpeg.zeranoe.com/forum/</a>.
|
||||||
|
</p>
|
||||||
|
<a name="Native-Windows-compilation-using-MinGW-or-MinGW_002dw64"></a>
|
||||||
|
<h3 class="section">4.1 Native Windows compilation using MinGW or MinGW-w64<span class="pull-right"><a class="anchor hidden-xs" href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>FFmpeg can be built to run natively on Windows using the MinGW-w64
|
||||||
|
toolchain. Install the latest versions of MSYS2 and MinGW-w64 from
|
||||||
|
<a href="http://msys2.github.io/">http://msys2.github.io/</a> and/or <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>.
|
||||||
|
You can find detailed installation instructions in the download section and
|
||||||
|
the FAQ.
|
||||||
|
</p>
|
||||||
|
<p>Notes:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> Building for the MSYS environment is discouraged, MSYS2 provides a full
|
||||||
|
MinGW-w64 environment through <samp>mingw64_shell.bat</samp> or
|
||||||
|
<samp>mingw32_shell.bat</samp> that should be used instead of the environment
|
||||||
|
provided by <samp>msys2_shell.bat</samp>.
|
||||||
|
|
||||||
|
</li><li> Building using MSYS2 can be sped up by disabling implicit rules in the
|
||||||
|
Makefile by calling <code>make -r</code> instead of plain <code>make</code>. This
|
||||||
|
speed up is close to non-existent for normal one-off builds and is only
|
||||||
|
noticeable when running make for a second time (for example during
|
||||||
|
<code>make install</code>).
|
||||||
|
|
||||||
|
</li><li> In order to compile FFplay, you must have the MinGW development library
|
||||||
|
of <a href="http://www.libsdl.org/">SDL</a> and <code>pkg-config</code> installed.
|
||||||
|
|
||||||
|
</li><li> By using <code>./configure --enable-shared</code> when configuring FFmpeg,
|
||||||
|
you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
|
||||||
|
libavformat) as DLLs.
|
||||||
|
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="Native-Windows-compilation-using-MSYS2"></a>
|
||||||
|
<h4 class="subsection">4.1.1 Native Windows compilation using MSYS2<span class="pull-right"><a class="anchor hidden-xs" href="#Native-Windows-compilation-using-MSYS2" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Native-Windows-compilation-using-MSYS2" aria-hidden="true">TOC</a></span></h4>
|
||||||
|
|
||||||
|
<p>The MSYS2 MinGW-w64 environment provides ready to use toolchains and dependencies
|
||||||
|
through <code>pacman</code>.
|
||||||
|
</p>
|
||||||
|
<p>Make sure to use <samp>mingw64_shell.bat</samp> or <samp>mingw32_shell.bat</samp> to have
|
||||||
|
the correct MinGW-w64 environment. The default install provides shortcuts to
|
||||||
|
them under <code>MinGW-w64 Win64 Shell</code> and <code>MinGW-w64 Win32 Shell</code>.
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example"># normal msys2 packages
|
||||||
|
pacman -S make pkgconf diffutils
|
||||||
|
|
||||||
|
# mingw-w64 packages and toolchains
|
||||||
|
pacman -S mingw-w64-x86_64-nasm mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>To target 32 bits replace <code>x86_64</code> with <code>i686</code> in the command above.
|
||||||
|
</p>
|
||||||
|
<a name="Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows"></a>
|
||||||
|
<h3 class="section">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows<span class="pull-right"><a class="anchor hidden-xs" href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>FFmpeg can be built with MSVC 2013 or later.
|
||||||
|
</p>
|
||||||
|
<p>You will need the following prerequisites:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> <a href="http://msys2.github.io/">MSYS2</a>
|
||||||
|
</li><li> <a href="http://www.nasm.us/">NASM</a>
|
||||||
|
(Also available via MSYS2’s package manager.)
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<p>To set up a proper environment in MSYS2, you need to run <code>msys_shell.bat</code> from
|
||||||
|
the Visual Studio or Intel Compiler command prompt.
|
||||||
|
</p>
|
||||||
|
<p>Place <code>yasm.exe</code> somewhere in your <code>PATH</code>.
|
||||||
|
</p>
|
||||||
|
<p>Next, make sure any other headers and libs you want to use, such as zlib, are
|
||||||
|
located in a spot that the compiler can see. Do so by modifying the <code>LIB</code>
|
||||||
|
and <code>INCLUDE</code> environment variables to include the <strong>Windows-style</strong>
|
||||||
|
paths to these directories. Alternatively, you can try to use the
|
||||||
|
<code>--extra-cflags</code>/<code>--extra-ldflags</code> configure options.
|
||||||
|
</p>
|
||||||
|
<p>Finally, run:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">For MSVC:
|
||||||
|
./configure --toolchain=msvc
|
||||||
|
|
||||||
|
For ICL:
|
||||||
|
./configure --toolchain=icl
|
||||||
|
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>If you wish to compile shared libraries, add <code>--enable-shared</code> to your
|
||||||
|
configure options. Note that due to the way MSVC and ICL handle DLL imports and
|
||||||
|
exports, you cannot compile static and shared libraries at the same time, and
|
||||||
|
enabling shared libraries will automatically disable the static ones.
|
||||||
|
</p>
|
||||||
|
<p>Notes:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li> If you wish to build with zlib support, you will have to grab a compatible
|
||||||
|
zlib binary from somewhere, with an MSVC import lib, or if you wish to link
|
||||||
|
statically, you can follow the instructions below to build a compatible
|
||||||
|
<code>zlib.lib</code> with MSVC. Regardless of which method you use, you must still
|
||||||
|
follow step 3, or compilation will fail.
|
||||||
|
<ol>
|
||||||
|
<li> Grab the <a href="http://zlib.net/">zlib sources</a>.
|
||||||
|
</li><li> Edit <code>win32/Makefile.msc</code> so that it uses -MT instead of -MD, since
|
||||||
|
this is how FFmpeg is built as well.
|
||||||
|
</li><li> Edit <code>zconf.h</code> and remove its inclusion of <code>unistd.h</code>. This gets
|
||||||
|
erroneously included when building FFmpeg.
|
||||||
|
</li><li> Run <code>nmake -f win32/Makefile.msc</code>.
|
||||||
|
</li><li> Move <code>zlib.lib</code>, <code>zconf.h</code>, and <code>zlib.h</code> to somewhere MSVC
|
||||||
|
can see.
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
</li><li> FFmpeg has been tested with the following on i686 and x86_64:
|
||||||
|
<ul>
|
||||||
|
<li> Visual Studio 2013 Pro and Express
|
||||||
|
</li><li> Intel Composer XE 2013
|
||||||
|
</li><li> Intel Composer XE 2013 SP1
|
||||||
|
</li></ul>
|
||||||
|
<p>Anything else is not officially supported.
|
||||||
|
</p>
|
||||||
|
</li></ul>
|
||||||
|
|
||||||
|
<a name="Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b"></a>
|
||||||
|
<h4 class="subsection">4.2.1 Linking to FFmpeg with Microsoft Visual C++<span class="pull-right"><a class="anchor hidden-xs" href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" aria-hidden="true">TOC</a></span></h4>
|
||||||
|
|
||||||
|
<p>If you plan to link with MSVC-built static libraries, you will need
|
||||||
|
to make sure you have <code>Runtime Library</code> set to
|
||||||
|
<code>Multi-threaded (/MT)</code> in your project’s settings.
|
||||||
|
</p>
|
||||||
|
<p>You will need to define <code>inline</code> to something MSVC understands:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">#define inline __inline
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Also note, that as stated in <strong>Microsoft Visual C++</strong>, you will need
|
||||||
|
an MSVC-compatible <a href="http://code.google.com/p/msinttypes/">inttypes.h</a>.
|
||||||
|
</p>
|
||||||
|
<p>If you plan on using import libraries created by dlltool, you must
|
||||||
|
set <code>References</code> to <code>No (/OPT:NOREF)</code> under the linker optimization
|
||||||
|
settings, otherwise the resulting binaries will fail during runtime.
|
||||||
|
This is not required when using import libraries generated by <code>lib.exe</code>.
|
||||||
|
This issue is reported upstream at
|
||||||
|
<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=12633">http://sourceware.org/bugzilla/show_bug.cgi?id=12633</a>.
|
||||||
|
</p>
|
||||||
|
<p>To create import libraries that work with the <code>/OPT:REF</code> option
|
||||||
|
(which is enabled by default in Release mode), follow these steps:
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li> Open the <em>Visual Studio Command Prompt</em>.
|
||||||
|
|
||||||
|
<p>Alternatively, in a normal command line prompt, call <samp>vcvars32.bat</samp>
|
||||||
|
which sets up the environment variables for the Visual C++ tools
|
||||||
|
(the standard location for this file is something like
|
||||||
|
<samp>C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</samp>).
|
||||||
|
</p>
|
||||||
|
</li><li> Enter the <samp>bin</samp> directory where the created LIB and DLL files
|
||||||
|
are stored.
|
||||||
|
|
||||||
|
</li><li> Generate new import libraries with <code>lib.exe</code>:
|
||||||
|
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">lib /machine:i386 /def:..\lib\foo-version.def /out:foo.lib
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>Replace <code>foo-version</code> and <code>foo</code> with the respective library names.
|
||||||
|
</p>
|
||||||
|
</li></ol>
|
||||||
|
|
||||||
|
<span id="Cross-compilation-for-Windows-with-Linux"></span><a name="Cross-compilation-for-Windows-with-Linux-1"></a>
|
||||||
|
<h3 class="section">4.3 Cross compilation for Windows with Linux<span class="pull-right"><a class="anchor hidden-xs" href="#Cross-compilation-for-Windows-with-Linux-1" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Cross-compilation-for-Windows-with-Linux-1" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>You must use the MinGW cross compilation tools available at
|
||||||
|
<a href="http://www.mingw.org/">http://www.mingw.org/</a>.
|
||||||
|
</p>
|
||||||
|
<p>Then configure FFmpeg with the following options:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
|
||||||
|
</pre></div>
|
||||||
|
<p>(you can change the cross-prefix according to the prefix chosen for the
|
||||||
|
MinGW tools).
|
||||||
|
</p>
|
||||||
|
<p>Then you can easily test FFmpeg with <a href="http://www.winehq.com/">Wine</a>.
|
||||||
|
</p>
|
||||||
|
<a name="Compilation-under-Cygwin"></a>
|
||||||
|
<h3 class="section">4.4 Compilation under Cygwin<span class="pull-right"><a class="anchor hidden-xs" href="#Compilation-under-Cygwin" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Compilation-under-Cygwin" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
|
||||||
|
llrint() in its C library.
|
||||||
|
</p>
|
||||||
|
<p>Install your Cygwin with all the "Base" packages, plus the
|
||||||
|
following "Devel" ones:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">binutils, gcc4-core, make, git, mingw-runtime, texinfo
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>In order to run FATE you will also need the following "Utils" packages:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">diffutils
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>If you want to build FFmpeg with additional libraries, download Cygwin
|
||||||
|
"Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">libogg-devel, libvorbis-devel
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>These library packages are only available from
|
||||||
|
<a href="http://sourceware.org/cygwinports/">Cygwin Ports</a>:
|
||||||
|
</p>
|
||||||
|
<div class="example">
|
||||||
|
<pre class="example">yasm, libSDL-devel, libgsm-devel, libmp3lame-devel,
|
||||||
|
speex-devel, libtheora-devel, libxvidcore-devel
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>The recommendation for x264 is to build it from source, as it evolves too
|
||||||
|
quickly for Cygwin Ports to be up to date.
|
||||||
|
</p>
|
||||||
|
<a name="Crosscompilation-for-Windows-under-Cygwin"></a>
|
||||||
|
<h3 class="section">4.5 Crosscompilation for Windows under Cygwin<span class="pull-right"><a class="anchor hidden-xs" href="#Crosscompilation-for-Windows-under-Cygwin" aria-hidden="true">#</a> <a class="anchor hidden-xs"href="#toc-Crosscompilation-for-Windows-under-Cygwin" aria-hidden="true">TOC</a></span></h3>
|
||||||
|
|
||||||
|
<p>With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
|
||||||
|
</p>
|
||||||
|
<p>Just install your Cygwin as explained before, plus these additional
|
||||||
|
"Devel" packages:
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">gcc-mingw-core, mingw-runtime, mingw-zlib
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>and add some special flags to your configure invocation.
|
||||||
|
</p>
|
||||||
|
<p>For a static build run
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p>and for a build with shared libraries
|
||||||
|
</p><div class="example">
|
||||||
|
<pre class="example">./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
<p style="font-size: small;">
|
||||||
|
This document was generated using <a href="https://www.gnu.org/software/texinfo/"><em>makeinfo</em></a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,19 @@
|
|||||||
|
vcodec=libvpx
|
||||||
|
|
||||||
|
g=120
|
||||||
|
lag-in-frames=16
|
||||||
|
deadline=good
|
||||||
|
cpu-used=0
|
||||||
|
vprofile=1
|
||||||
|
qmax=51
|
||||||
|
qmin=11
|
||||||
|
slices=4
|
||||||
|
b=2M
|
||||||
|
|
||||||
|
#ignored unless using -pass 2
|
||||||
|
maxrate=24M
|
||||||
|
minrate=100k
|
||||||
|
auto-alt-ref=1
|
||||||
|
arnr-maxframes=7
|
||||||
|
arnr-strength=5
|
||||||
|
arnr-type=centered
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
vcodec=libvpx
|
||||||
|
|
||||||
|
g=120
|
||||||
|
lag-in-frames=25
|
||||||
|
deadline=good
|
||||||
|
cpu-used=0
|
||||||
|
vprofile=1
|
||||||
|
qmax=51
|
||||||
|
qmin=11
|
||||||
|
slices=4
|
||||||
|
b=2M
|
||||||
|
|
||||||
|
#ignored unless using -pass 2
|
||||||
|
maxrate=24M
|
||||||
|
minrate=100k
|
||||||
|
auto-alt-ref=1
|
||||||
|
arnr-maxframes=7
|
||||||
|
arnr-strength=5
|
||||||
|
arnr-type=centered
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
vcodec=libvpx
|
||||||
|
|
||||||
|
g=120
|
||||||
|
lag-in-frames=16
|
||||||
|
deadline=good
|
||||||
|
cpu-used=0
|
||||||
|
vprofile=0
|
||||||
|
qmax=63
|
||||||
|
qmin=0
|
||||||
|
b=768k
|
||||||
|
|
||||||
|
#ignored unless using -pass 2
|
||||||
|
maxrate=1.5M
|
||||||
|
minrate=40k
|
||||||
|
auto-alt-ref=1
|
||||||
|
arnr-maxframes=7
|
||||||
|
arnr-strength=5
|
||||||
|
arnr-type=centered
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
vcodec=libvpx
|
||||||
|
|
||||||
|
g=120
|
||||||
|
lag-in-frames=16
|
||||||
|
deadline=good
|
||||||
|
cpu-used=0
|
||||||
|
vprofile=0
|
||||||
|
qmax=51
|
||||||
|
qmin=11
|
||||||
|
slices=4
|
||||||
|
b=2M
|
||||||
|
|
||||||
|
#ignored unless using -pass 2
|
||||||
|
maxrate=24M
|
||||||
|
minrate=100k
|
||||||
|
auto-alt-ref=1
|
||||||
|
arnr-maxframes=7
|
||||||
|
arnr-strength=5
|
||||||
|
arnr-type=centered
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
vcodec=libvpx
|
||||||
|
|
||||||
|
g=120
|
||||||
|
lag-in-frames=25
|
||||||
|
deadline=good
|
||||||
|
cpu-used=0
|
||||||
|
vprofile=0
|
||||||
|
qmax=51
|
||||||
|
qmin=11
|
||||||
|
slices=4
|
||||||
|
b=2M
|
||||||
|
|
||||||
|
#ignored unless using -pass 2
|
||||||
|
maxrate=24M
|
||||||
|
minrate=100k
|
||||||
|
auto-alt-ref=1
|
||||||
|
arnr-maxframes=7
|
||||||
|
arnr-strength=5
|
||||||
|
arnr-type=centered
|
||||||
Loading…
Reference in New Issue