mirror of
https://github.com/guilhermewerner/video-converter
synced 2025-06-16 13:54:22 +00:00
Add FFmpeg binaries
This commit is contained in:
674
ffmpeg/LICENSE.txt
Normal file
674
ffmpeg/LICENSE.txt
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://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 <https://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
|
||||
<https://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
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
118
ffmpeg/README.txt
Normal file
118
ffmpeg/README.txt
Normal file
@ -0,0 +1,118 @@
|
||||
Zeranoe FFmpeg Builds <http://ffmpeg.zeranoe.com/builds/>
|
||||
|
||||
Build: ffmpeg-20200831-4a11a6f-win64-static
|
||||
|
||||
Configuration:
|
||||
--enable-gpl
|
||||
--enable-version3
|
||||
--enable-sdl2
|
||||
--enable-fontconfig
|
||||
--enable-gnutls
|
||||
--enable-iconv
|
||||
--enable-libass
|
||||
--enable-libdav1d
|
||||
--enable-libbluray
|
||||
--enable-libfreetype
|
||||
--enable-libmp3lame
|
||||
--enable-libopencore-amrnb
|
||||
--enable-libopencore-amrwb
|
||||
--enable-libopenjpeg
|
||||
--enable-libopus
|
||||
--enable-libshine
|
||||
--enable-libsnappy
|
||||
--enable-libsoxr
|
||||
--enable-libsrt
|
||||
--enable-libtheora
|
||||
--enable-libtwolame
|
||||
--enable-libvpx
|
||||
--enable-libwavpack
|
||||
--enable-libwebp
|
||||
--enable-libx264
|
||||
--enable-libx265
|
||||
--enable-libxml2
|
||||
--enable-libzimg
|
||||
--enable-lzma
|
||||
--enable-zlib
|
||||
--enable-gmp
|
||||
--enable-libvidstab
|
||||
--enable-libvmaf
|
||||
--enable-libvorbis
|
||||
--enable-libvo-amrwbenc
|
||||
--enable-libmysofa
|
||||
--enable-libspeex
|
||||
--enable-libxvid
|
||||
--enable-libaom
|
||||
--enable-libgsm
|
||||
--enable-librav1e
|
||||
--enable-libsvtav1
|
||||
--disable-w32threads
|
||||
--enable-libmfx
|
||||
--enable-ffnvcodec
|
||||
--enable-cuda-llvm
|
||||
--enable-cuvid
|
||||
--enable-d3d11va
|
||||
--enable-nvenc
|
||||
--enable-nvdec
|
||||
--enable-dxva2
|
||||
--enable-avisynth
|
||||
--enable-libopenmpt
|
||||
--enable-amf
|
||||
|
||||
Libraries:
|
||||
SDL 20200805-9b0de62 <https://libsdl.org>
|
||||
Fontconfig 2.13.92 <http://freedesktop.org/wiki/Software/fontconfig>
|
||||
GnuTLS 3.6.14 <https://gnutls.org/>
|
||||
libiconv 1.16 <http://gnu.org/software/libiconv>
|
||||
libass 20200714-66dba8d <https://github.com/libass/libass>
|
||||
dav1d 20200720-6cf58c8 <https://code.videolan.org/videolan/dav1d>
|
||||
libbluray 20200803-1ec56c7 <https://www.videolan.org/developers/libbluray.html>
|
||||
FreeType 2.10.2 <http://freetype.sourceforge.net>
|
||||
LAME 3.100 <http://lame.sourceforge.net>
|
||||
OpenCORE AMR 20170731-07a5be4 <https://sourceforge.net/projects/opencore-amr>
|
||||
OpenJPEG 20200630-cbee789 <https://github.com/uclouvain/openjpeg>
|
||||
Opus 20200707-484af25 <https://opus-codec.org>
|
||||
shine 20190420-76ea4f0 <https://github.com/savonet/shine>
|
||||
Snappy 1.1.8 <https://github.com/google/snappy>
|
||||
libsoxr 20180224-945b592 <http://sourceforge.net/projects/soxr>
|
||||
SRT 1.4.1 <https://www.srtalliance.org>
|
||||
Theora 20200618-f98989a <http://theora.org>
|
||||
TwoLAME 0.4.0 <http://twolame.org>
|
||||
vpx 20200803-f9ab864 <http://webmproject.org>
|
||||
WavPack 5.3.0 <http://wavpack.com>
|
||||
WebP 20200617-cf2f88b <https://developers.google.com/speed/webp>
|
||||
x264 20200714-db0d417 <https://www.videolan.org/developers/x264.html>
|
||||
x265 20200529-73ca1d7 <https://bitbucket.org/multicoreware/x265/wiki/Home>
|
||||
libxml2 2.9.10 <http://xmlsoft.org>
|
||||
z.lib 20200805-7a89581 <https://github.com/sekrit-twc/zimg>
|
||||
XZ Utils 5.2.5 <http://tukaani.org/xz>
|
||||
zlib 1.2.11 <http://zlib.net>
|
||||
GMP 6.2.0 <https://gmplib.org>
|
||||
vid.stab 20190213-aeabc8d <http://public.hronopik.de/vid.stab>
|
||||
VMAF 20200805-0816041 <https://github.com/Netflix/vmaf>
|
||||
Vorbis 20200720-4a767c9 <http://vorbis.com>
|
||||
VisualOn AMR-WB 20141107-3b3fcd0 <https://sourceforge.net/projects/opencore-amr>
|
||||
libmysofa 20200710-6f4f25e <https://github.com/hoene/libmysofa>
|
||||
Speex 20200716-870ff84 <http://speex.org>
|
||||
Xvid 1.3.7 <https://labs.xvid.com>
|
||||
aom 20200805-96c103d <https://aomedia.googlesource.com/aom>
|
||||
GSM 1.0.19 <http://quut.com/gsm/>
|
||||
rav1e 20200805-f6ac395 <https://github.com/xiph/rav1e>
|
||||
SVT-AV1 20200811-36d98c2 <https://github.com/OpenVisualCloud/SVT-AV1>
|
||||
libmfx 1.32 <https://software.intel.com/en-us/media-sdk>
|
||||
nv-codec-headers 20200701-de0b1bf <https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git>
|
||||
AviSynth+ 20200804-b41c55b <https://github.com/AviSynth/AviSynthPlus>
|
||||
OpenMPT 20200805-0a144d7 <https://openmpt.org>
|
||||
AMF 20200515-802f92e <https://gpuopen.com/gaming-product/advanced-media-framework>
|
||||
|
||||
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/>.
|
BIN
ffmpeg/bin/ffmpeg.exe
Normal file
BIN
ffmpeg/bin/ffmpeg.exe
Normal file
Binary file not shown.
BIN
ffmpeg/bin/ffplay.exe
Normal file
BIN
ffmpeg/bin/ffplay.exe
Normal file
Binary file not shown.
BIN
ffmpeg/bin/ffprobe.exe
Normal file
BIN
ffmpeg/bin/ffprobe.exe
Normal file
Binary file not shown.
5
ffmpeg/doc/bootstrap.min.css
vendored
Normal file
5
ffmpeg/doc/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
165
ffmpeg/doc/default.css
Normal file
165
ffmpeg/doc/default.css
Normal file
@ -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;
|
||||
}
|
979
ffmpeg/doc/developer.html
Normal file
979
ffmpeg/doc/developer.html
Normal file
@ -0,0 +1,979 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Developer Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Developer ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Developer Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Notes-for-external-developers" href="#Notes-for-external-developers">1 Notes for external developers</a></li>
|
||||
<li><a name="toc-Contributing" href="#Contributing">2 Contributing</a></li>
|
||||
<li><a name="toc-Coding-Rules-1" href="#Coding-Rules-1">3 Coding Rules</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Code-formatting-conventions" href="#Code-formatting-conventions">3.1 Code formatting conventions</a></li>
|
||||
<li><a name="toc-Comments" href="#Comments">3.2 Comments</a></li>
|
||||
<li><a name="toc-C-language-features" href="#C-language-features">3.3 C language features</a></li>
|
||||
<li><a name="toc-Naming-conventions" href="#Naming-conventions">3.4 Naming conventions</a></li>
|
||||
<li><a name="toc-Miscellaneous-conventions" href="#Miscellaneous-conventions">3.5 Miscellaneous conventions</a></li>
|
||||
<li><a name="toc-Editor-configuration" href="#Editor-configuration">3.6 Editor configuration</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Development-Policy" href="#Development-Policy">4 Development Policy</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Patches_002fCommitting" href="#Patches_002fCommitting">4.1 Patches/Committing</a></li>
|
||||
<li><a name="toc-Code" href="#Code">4.2 Code</a></li>
|
||||
<li><a name="toc-Documentation_002fOther" href="#Documentation_002fOther">4.3 Documentation/Other</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Code-of-conduct" href="#Code-of-conduct">5 Code of conduct</a></li>
|
||||
<li><a name="toc-Submitting-patches-1" href="#Submitting-patches-1">6 Submitting patches</a></li>
|
||||
<li><a name="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">7 New codecs or formats checklist</a></li>
|
||||
<li><a name="toc-Patch-submission-checklist" href="#Patch-submission-checklist">8 Patch submission checklist</a></li>
|
||||
<li><a name="toc-Patch-review-process" href="#Patch-review-process">9 Patch review process</a></li>
|
||||
<li><a name="toc-Regression-tests-1" href="#Regression-tests-1">10 Regression tests</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Adding-files-to-the-fate_002dsuite-dataset" href="#Adding-files-to-the-fate_002dsuite-dataset">10.1 Adding files to the fate-suite dataset</a></li>
|
||||
<li><a name="toc-Visualizing-Test-Coverage" href="#Visualizing-Test-Coverage">10.2 Visualizing Test Coverage</a></li>
|
||||
<li><a name="toc-Using-Valgrind" href="#Using-Valgrind">10.3 Using Valgrind</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Release-process-1" href="#Release-process-1">11 Release process</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Criteria-for-Point-Releases-1" href="#Criteria-for-Point-Releases-1">11.1 Criteria for Point Releases</a></li>
|
||||
<li><a name="toc-Release-Checklist" href="#Release-Checklist">11.2 Release Checklist</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Notes-for-external-developers"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Notes-for-external-developers">1 Notes for external developers</a></h1>
|
||||
|
||||
<p>This document is mostly useful for internal FFmpeg developers.
|
||||
External developers who need to use the API in their application should
|
||||
refer to the API doxygen documentation in the public headers, and
|
||||
check the examples in ‘<tt>doc/examples</tt>’ and in the source code to
|
||||
see how the public API is employed.
|
||||
</p>
|
||||
<p>You can use the FFmpeg libraries in your commercial program, but you
|
||||
are encouraged to <em>publish any patch you make</em>. In this case the
|
||||
best way to proceed is to send your patches to the ffmpeg-devel
|
||||
mailing list following the guidelines illustrated in the remainder of
|
||||
this document.
|
||||
</p>
|
||||
<p>For more detailed legal information about the use of FFmpeg in
|
||||
external programs read the ‘<tt>LICENSE</tt>’ file in the source tree and
|
||||
consult <a href="https://ffmpeg.org/legal.html">https://ffmpeg.org/legal.html</a>.
|
||||
</p>
|
||||
<a name="Contributing"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Contributing">2 Contributing</a></h1>
|
||||
|
||||
<p>There are 2 ways by which code gets into FFmpeg:
|
||||
</p><ul>
|
||||
<li> Submitting patches to the ffmpeg-devel mailing list.
|
||||
See <a href="#Submitting-patches">Submitting patches</a> for details.
|
||||
</li><li> Directly committing changes to the main tree.
|
||||
</li></ul>
|
||||
|
||||
<p>Whichever way, changes should be reviewed by the maintainer of the code
|
||||
before they are committed. And they should 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>
|
||||
<p><a name="Coding-Rules"></a>
|
||||
</p><a name="Coding-Rules-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Coding-Rules-1">3 Coding Rules</a></h1>
|
||||
|
||||
<a name="Code-formatting-conventions"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Code-formatting-conventions">3.1 Code formatting conventions</a></h2>
|
||||
|
||||
<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>
|
||||
<p>The main priority in FFmpeg is simplicity and small code size in order to
|
||||
minimize the bug count.
|
||||
</p>
|
||||
<a name="Comments"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Comments">3.2 Comments</a></h2>
|
||||
<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="C-language-features"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-C-language-features">3.3 C language features</a></h2>
|
||||
|
||||
<p>FFmpeg is programmed in the ISO C90 language with a few additional
|
||||
features from ISO C99, namely:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
the ‘<samp>inline</samp>’ keyword;
|
||||
|
||||
</li><li>
|
||||
‘<samp>//</samp>’ comments;
|
||||
|
||||
</li><li>
|
||||
designated struct initializers (‘<samp>struct s x = { .i = 17 };</samp>’);
|
||||
|
||||
</li><li>
|
||||
compound literals (‘<samp>x = (struct s) { 17, 23 };</samp>’).
|
||||
|
||||
</li><li>
|
||||
for loops with variable definition (‘<samp>for (int i = 0; i < 8; i++)</samp>’);
|
||||
|
||||
</li><li>
|
||||
Variadic macros (‘<samp>#define ARRAY(nb, ...) (int[nb + 1]){ nb, __VA_ARGS__ }</samp>’);
|
||||
|
||||
</li><li>
|
||||
Implementation defined behavior for signed integers is assumed to match the
|
||||
expected behavior for two’s complement. Non representable values in integer
|
||||
casts are binary truncated. Shift right of signed values uses sign extension.
|
||||
</li></ul>
|
||||
|
||||
<p>These features are supported by all compilers we care about, so we will not
|
||||
accept patches to remove their use unless they absolutely do not impair
|
||||
clarity and performance.
|
||||
</p>
|
||||
<p>All code must compile with recent versions of GCC and a number of other
|
||||
currently supported compilers. To ensure compatibility, please do not use
|
||||
additional C99 features or GCC extensions. Especially watch out for:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
mixing statements and declarations;
|
||||
|
||||
</li><li>
|
||||
‘<samp>long long</samp>’ (use ‘<samp>int64_t</samp>’ instead);
|
||||
|
||||
</li><li>
|
||||
‘<samp>__attribute__</samp>’ not protected by ‘<samp>#ifdef __GNUC__</samp>’ or similar;
|
||||
|
||||
</li><li>
|
||||
GCC statement expressions (‘<samp>(x = ({ int y = 4; y; })</samp>’).
|
||||
</li></ul>
|
||||
|
||||
<a name="Naming-conventions"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Naming-conventions">3.4 Naming conventions</a></h2>
|
||||
<p>All names should be composed with underscores (_), not CamelCase. For example,
|
||||
‘<samp>avfilter_get_video_buffer</samp>’ is an acceptable function name and
|
||||
‘<samp>AVFilterGetVideo</samp>’ is not. The exception from this are type names, like
|
||||
for example structs and enums; they should always be in CamelCase.
|
||||
</p>
|
||||
<p>There are the following conventions for naming variables and functions:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
For local variables no prefix is required.
|
||||
|
||||
</li><li>
|
||||
For file-scope variables and functions declared as <code>static</code>, no prefix
|
||||
is required.
|
||||
|
||||
</li><li>
|
||||
For variables and functions visible outside of file scope, but only used
|
||||
internally by a library, an <code>ff_</code> prefix should be used,
|
||||
e.g. ‘<samp>ff_w64_demuxer</samp>’.
|
||||
|
||||
</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>
|
||||
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.
|
||||
Note that some symbols without these prefixes are also exported for
|
||||
retro-compatibility reasons. These exceptions are declared in the
|
||||
<code>lib<name>/lib<name>.v</code> files.
|
||||
</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>
|
||||
<h2 class="section"><a href="developer.html#toc-Miscellaneous-conventions">3.5 Miscellaneous conventions</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
<a name="Editor-configuration"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Editor-configuration">3.6 Editor configuration</a></h2>
|
||||
<p>In order to configure Vim to follow FFmpeg formatting conventions, paste
|
||||
the following snippet into your ‘<tt>.vimrc</tt>’:
|
||||
</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>
|
||||
|
||||
<p>For Emacs, add these roughly equivalent lines to your ‘<tt>.emacs.d/init.el</tt>’:
|
||||
</p><div class="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="Development-Policy"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Development-Policy">4 Development Policy</a></h1>
|
||||
|
||||
<a name="Patches_002fCommitting"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Patches_002fCommitting">4.1 Patches/Committing</a></h2>
|
||||
<a name="Licenses-for-patches-must-be-compatible-with-FFmpeg_002e"></a>
|
||||
<h3 class="subheading">Licenses for patches must be compatible with FFmpeg.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">You must not commit code which breaks FFmpeg!</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Keep the main commit message short with an extended description below.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Testing must be adequate but not excessive.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Do not commit unrelated changes together.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Ask before you change the build system (configure, etc).</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Cosmetic changes should be kept in separate patches.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Commit messages should always be filled out properly.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Credit the author of the patch.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Complex patches should refer to discussion surrounding them.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Always wait long enough before pushing changes</h3>
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Code">4.2 Code</a></h2>
|
||||
<a name="API_002fABI-changes-should-be-discussed-before-they-are-made_002e"></a>
|
||||
<h3 class="subheading">API/ABI changes should be discussed before they are made.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Remember to check if you need to bump versions for libav*.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Warnings for correct code may be disabled if there is no other option.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Check untrusted input properly.</h3>
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Documentation_002fOther">4.3 Documentation/Other</a></h2>
|
||||
<a name="Subscribe-to-the-ffmpeg_002ddevel-mailing-list_002e"></a>
|
||||
<h3 class="subheading">Subscribe to the ffmpeg-devel mailing list.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Subscribe to the ffmpeg-cvslog mailing list.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Keep the documentation up to date.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Important discussions should be accessible to all.</h3>
|
||||
<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>
|
||||
<h3 class="subheading">Check your entries in MAINTAINERS.</h3>
|
||||
<p>Make sure that no parts of the codebase that you maintain are missing from the
|
||||
‘<tt>MAINTAINERS</tt>’ 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 ‘<tt>MAINTAINERS</tt>’ file.
|
||||
</p>
|
||||
<p>We think our rules are not too hard. If you have comments, contact us.
|
||||
</p>
|
||||
<a name="Code-of-conduct"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Code-of-conduct">5 Code of conduct</a></h1>
|
||||
|
||||
<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>
|
||||
<p><a name="Submitting-patches"></a>
|
||||
</p><a name="Submitting-patches-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Submitting-patches-1">6 Submitting patches</a></h1>
|
||||
|
||||
<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>
|
||||
<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>
|
||||
<h1 class="chapter"><a href="developer.html#toc-New-codecs-or-formats-checklist">7 New codecs or formats checklist</a></h1>
|
||||
|
||||
<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 ‘<tt>libavcodec/version.h</tt>’ or ‘<tt>libavformat/version.h</tt>’?
|
||||
|
||||
</li><li>
|
||||
Did you register it in ‘<tt>allcodecs.c</tt>’ or ‘<tt>allformats.c</tt>’?
|
||||
|
||||
</li><li>
|
||||
Did you add the AVCodecID to ‘<tt>avcodec.h</tt>’?
|
||||
When adding new codec IDs, also add an entry to the codec descriptor
|
||||
list in ‘<tt>libavcodec/codec_desc.c</tt>’.
|
||||
|
||||
</li><li>
|
||||
If it has a FourCC, did you add it to ‘<tt>libavformat/riff.c</tt>’,
|
||||
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
|
||||
‘<tt>doc/general.texi</tt>’?
|
||||
|
||||
</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>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Patch-submission-checklist">8 Patch submission checklist</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Patch-review-process">9 Patch review process</a></h1>
|
||||
|
||||
<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>
|
||||
<p><a name="Regression-tests"></a>
|
||||
</p><a name="Regression-tests-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Regression-tests-1">10 Regression tests</a></h1>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Adding-files-to-the-fate_002dsuite-dataset">10.1 Adding files to the fate-suite dataset</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Visualizing-Test-Coverage">10.2 Visualizing Test Coverage</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Using-Valgrind">10.3 Using Valgrind</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="Release-process"></a>
|
||||
</p><a name="Release-process-1"></a>
|
||||
<h1 class="chapter"><a href="developer.html#toc-Release-process-1">11 Release process</a></h1>
|
||||
|
||||
<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>
|
||||
<p><a name="Criteria-for-Point-Releases"></a>
|
||||
</p><a name="Criteria-for-Point-Releases-1"></a>
|
||||
<h2 class="section"><a href="developer.html#toc-Criteria-for-Point-Releases-1">11.1 Criteria for Point Releases</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="developer.html#toc-Release-Checklist">11.2 Release Checklist</a></h2>
|
||||
|
||||
<p>The release process involves the following steps:
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
Ensure that the ‘<tt>RELEASE</tt>’ 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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
839
ffmpeg/doc/faq.html
Normal file
839
ffmpeg/doc/faq.html
Normal file
@ -0,0 +1,839 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg FAQ: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg FAQ: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg FAQ</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn’t FFmpeg support feature [xyz]?</a></li>
|
||||
<li><a name="toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
|
||||
<li><a name="toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
|
||||
<li><a name="toc-Which-codecs-are-supported-by-Windows_003f" href="#Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Compilation" href="#Compilation">2 Compilation</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027" href="#error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code>error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></li>
|
||||
<li><a name="toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f" href="#I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro’s package manager. Why does <code>configure</code> not see it?</a></li>
|
||||
<li><a name="toc-How-do-I-make-pkg_002dconfig-find-my-libraries_003f" href="#How-do-I-make-pkg_002dconfig-find-my-libraries_003f">2.3 How do I make <code>pkg-config</code> find my libraries?</a></li>
|
||||
<li><a name="toc-How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f" href="#How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">2.4 How do I use <code>pkg-config</code> when cross-compiling?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Usage" href="#Usage">3 Usage</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-ffmpeg-does-not-work_003b-what-is-wrong_003f" href="#ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-single-pictures-into-movies_003f" href="#How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-movie-to-single-pictures_003f" href="#How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></li>
|
||||
<li><a name="toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f" href="#Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></li>
|
||||
<li><a name="toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f" href="#How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></li>
|
||||
<li><a name="toc-_002df-jpeg-doesn_0027t-work_002e" href="#g_t_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn’t work.</a></li>
|
||||
<li><a name="toc-Why-can-I-not-change-the-frame-rate_003f" href="#Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></li>
|
||||
<li><a name="toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f" href="#How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></li>
|
||||
<li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></li>
|
||||
<li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
|
||||
<li><a name="toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f" href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
|
||||
<li><a name="toc-How-can-I-read-DirectShow-files_003f" href="#How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></li>
|
||||
<li><a name="toc-How-can-I-join-video-files_003f" href="#How-can-I-join-video-files_003f">3.13 How can I join video files?</a></li>
|
||||
<li><a name="toc-How-can-I-concatenate-video-files_003f" href="#How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Concatenating-using-the-concat-filter" href="#Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></li>
|
||||
<li><a name="toc-Concatenating-using-the-concat-demuxer" href="#Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></li>
|
||||
<li><a name="toc-Concatenating-using-the-concat-protocol-_0028file-level_0029" href="#Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></li>
|
||||
<li><a name="toc-Concatenating-using-raw-audio-and-video" href="#Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e" href="#Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.15 Using ‘<samp>-f lavfi</samp>’, audio becomes mono for no apparent reason.</a></li>
|
||||
<li><a name="toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f" href="#Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.16 Why does FFmpeg not see the subtitles in my VOB file?</a></li>
|
||||
<li><a name="toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f" href="#Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.17 Why was the <code>ffmpeg</code> ‘<samp>-sameq</samp>’ option removed? What to use instead?</a></li>
|
||||
<li><a name="toc-I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f" href="#I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">3.18 I have a stretched video, why does scaling does not fix it?</a></li>
|
||||
<li><a name="toc-How-do-I-run-ffmpeg-as-a-background-task_003f" href="#How-do-I-run-ffmpeg-as-a-background-task_003f">3.19 How do I run ffmpeg as a background task?</a></li>
|
||||
<li><a name="toc-How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f" href="#How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">3.20 How do I prevent ffmpeg from suspending with a message like <em>suspended (tty output)</em>?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Development" href="#Development">4 Development</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f" href="#Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></li>
|
||||
<li><a name="toc-Can-you-support-my-C-compiler-XXX_003f" href="#Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></li>
|
||||
<li><a name="toc-Is-Microsoft-Visual-C_002b_002b-supported_003f" href="#Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></li>
|
||||
<li><a name="toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f" href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></li>
|
||||
<li><a name="toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f" href="#Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></li>
|
||||
<li><a name="toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></li>
|
||||
<li><a name="toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
|
||||
<li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e" href="#I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></li>
|
||||
<li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" href="#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
|
||||
<li><a name="toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope" href="#I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></li>
|
||||
<li><a name="toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f" href="#I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></li>
|
||||
<li><a name="toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f" href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
|
||||
<li><a name="toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f" href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
|
||||
<li><a name="toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e" href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></li>
|
||||
<li><a name="toc-Why-is-make-fate-not-running-all-tests_003f" href="#Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></li>
|
||||
<li><a name="toc-Why-is-make-fate-not-finding-the-samples_003f" href="#Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="General-Questions"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-General-Questions">1 General Questions</a></h1>
|
||||
|
||||
<a name="Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn’t FFmpeg support feature [xyz]?</a></h2>
|
||||
|
||||
<p>Because no one has taken on that task yet. FFmpeg development is
|
||||
driven by the tasks that are important to the individual developers.
|
||||
If there is a feature that is important to you, the best way to get
|
||||
it implemented is to undertake the task yourself or sponsor a developer.
|
||||
</p>
|
||||
<a name="FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></h2>
|
||||
|
||||
<p>No. Windows DLLs are not portable, bloated and often slow.
|
||||
Moreover FFmpeg strives to support all codecs natively.
|
||||
A DLL loader is not conducive to that goal.
|
||||
</p>
|
||||
<a name="I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></h2>
|
||||
|
||||
<p>Even if ffmpeg can read the container format, it may not support all its
|
||||
codecs. Please consult the supported codec list in the ffmpeg
|
||||
documentation.
|
||||
</p>
|
||||
<a name="Which-codecs-are-supported-by-Windows_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></h2>
|
||||
|
||||
<p>Windows does not support standard formats like MPEG very well, unless you
|
||||
install some additional codecs.
|
||||
</p>
|
||||
<p>The following list of video codecs should work on most Windows systems:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>msmpeg4v2</samp>’</dt>
|
||||
<dd><p>.avi/.asf
|
||||
</p></dd>
|
||||
<dt>‘<samp>msmpeg4</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>wmv1</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>wmv2</samp>’</dt>
|
||||
<dd><p>.asf only
|
||||
</p></dd>
|
||||
<dt>‘<samp>mpeg4</samp>’</dt>
|
||||
<dd><p>Only if you have some MPEG-4 codec like ffdshow or Xvid installed.
|
||||
</p></dd>
|
||||
<dt>‘<samp>mpeg1video</samp>’</dt>
|
||||
<dd><p>.mpg only
|
||||
</p></dd>
|
||||
</dl>
|
||||
<p>Note, ASF files often have .wmv or .wma extensions in Windows. It should also
|
||||
be mentioned that Microsoft claims a patent on the ASF format, and may sue
|
||||
or threaten users who create ASF files with non-Microsoft software. It is
|
||||
strongly advised to avoid ASF where possible.
|
||||
</p>
|
||||
<p>The following list of audio codecs should work on most Windows systems:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>adpcm_ima_wav</samp>’</dt>
|
||||
<dt>‘<samp>adpcm_ms</samp>’</dt>
|
||||
<dt>‘<samp>pcm_s16le</samp>’</dt>
|
||||
<dd><p>always
|
||||
</p></dd>
|
||||
<dt>‘<samp>libmp3lame</samp>’</dt>
|
||||
<dd><p>If some MP3 codec like LAME is installed.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="Compilation"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Compilation">2 Compilation</a></h1>
|
||||
|
||||
<a name="error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code>error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></h2>
|
||||
|
||||
<p>This is a bug in gcc. Do not report it to us. Instead, please report it to
|
||||
the gcc developers. Note that we will not add workarounds for gcc bugs.
|
||||
</p>
|
||||
<p>Also note that (some of) the gcc developers believe this is not a bug or
|
||||
not a bug they should fix:
|
||||
<a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203</a>.
|
||||
Then again, some of them do not know the difference between an undecidable
|
||||
problem and an NP-hard problem...
|
||||
</p>
|
||||
<a name="I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro’s package manager. Why does <code>configure</code> not see it?</a></h2>
|
||||
|
||||
<p>Distributions usually split libraries in several packages. The main package
|
||||
contains the files necessary to run programs using the library. The
|
||||
development package contains the files necessary to build programs using the
|
||||
library. Sometimes, docs and/or data are in a separate package too.
|
||||
</p>
|
||||
<p>To build FFmpeg, you need to install the development package. It is usually
|
||||
called ‘<tt>libfoo-dev</tt>’ or ‘<tt>libfoo-devel</tt>’. You can remove it after the
|
||||
build is finished, but be sure to keep the main package.
|
||||
</p>
|
||||
<a name="How-do-I-make-pkg_002dconfig-find-my-libraries_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-make-pkg_002dconfig-find-my-libraries_003f">2.3 How do I make <code>pkg-config</code> find my libraries?</a></h2>
|
||||
|
||||
<p>Somewhere along with your libraries, there is a ‘<tt>.pc</tt>’ file (or several)
|
||||
in a ‘<tt>pkgconfig</tt>’ directory. You need to set environment variables to
|
||||
point <code>pkg-config</code> to these files.
|
||||
</p>
|
||||
<p>If you need to <em>add</em> directories to <code>pkg-config</code>’s search list
|
||||
(typical use case: library installed separately), add it to
|
||||
<code>$PKG_CONFIG_PATH</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">export PKG_CONFIG_PATH=/opt/x264/lib/pkgconfig:/opt/opus/lib/pkgconfig
|
||||
</pre></div>
|
||||
|
||||
<p>If you need to <em>replace</em> <code>pkg-config</code>’s search list
|
||||
(typical use case: cross-compiling), set it in
|
||||
<code>$PKG_CONFIG_LIBDIR</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">export PKG_CONFIG_LIBDIR=/home/me/cross/usr/lib/pkgconfig:/home/me/cross/usr/local/lib/pkgconfig
|
||||
</pre></div>
|
||||
|
||||
<p>If you need to know the library’s internal dependencies (typical use: static
|
||||
linking), add the <code>--static</code> option to <code>pkg-config</code>:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">./configure --pkg-config-flags=--static
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-use-pkg_002dconfig-when-cross_002dcompiling_003f">2.4 How do I use <code>pkg-config</code> when cross-compiling?</a></h2>
|
||||
|
||||
<p>The best way is to install <code>pkg-config</code> in your cross-compilation
|
||||
environment. It will automatically use the cross-compilation libraries.
|
||||
</p>
|
||||
<p>You can also use <code>pkg-config</code> from the host environment by
|
||||
specifying explicitly <code>--pkg-config=pkg-config</code> to <code>configure</code>.
|
||||
In that case, you must point <code>pkg-config</code> to the correct directories
|
||||
using the <code>PKG_CONFIG_LIBDIR</code>, as explained in the previous entry.
|
||||
</p>
|
||||
<p>As an intermediate solution, you can place in your cross-compilation
|
||||
environment a script that calls the host <code>pkg-config</code> with
|
||||
<code>PKG_CONFIG_LIBDIR</code> set. That script can look like that:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">#!/bin/sh
|
||||
PKG_CONFIG_LIBDIR=/path/to/cross/lib/pkgconfig
|
||||
export PKG_CONFIG_LIBDIR
|
||||
exec /usr/bin/pkg-config "$@"
|
||||
</pre></div>
|
||||
|
||||
<a name="Usage"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Usage">3 Usage</a></h1>
|
||||
|
||||
<a name="ffmpeg-does-not-work_003b-what-is-wrong_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></h2>
|
||||
|
||||
<p>Try a <code>make distclean</code> in the ffmpeg source directory before the build.
|
||||
If this does not help see
|
||||
(<a href="https://ffmpeg.org/bugreports.html">https://ffmpeg.org/bugreports.html</a>).
|
||||
</p>
|
||||
<a name="How-do-I-encode-single-pictures-into-movies_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></h2>
|
||||
|
||||
<p>First, rename your pictures to follow a numerical sequence.
|
||||
For example, img1.jpg, img2.jpg, img3.jpg,...
|
||||
Then you may run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>Notice that ‘<samp>%d</samp>’ is replaced by the image number.
|
||||
</p>
|
||||
<p>‘<tt>img%03d.jpg</tt>’ means the sequence ‘<tt>img001.jpg</tt>’, ‘<tt>img002.jpg</tt>’, etc.
|
||||
</p>
|
||||
<p>Use the ‘<samp>-start_number</samp>’ option to declare a starting number for
|
||||
the sequence. This is useful if your sequence does not start with
|
||||
‘<tt>img001.jpg</tt>’ but is still in a numerical order. The following
|
||||
example will start with ‘<tt>img100.jpg</tt>’:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>If you have large number of pictures to rename, you can use the
|
||||
following command to ease the burden. The command, using the bourne
|
||||
shell syntax, symbolically links all files in the current directory
|
||||
that match <code>*jpg</code> to the ‘<tt>/tmp</tt>’ directory in the sequence of
|
||||
‘<tt>img001.jpg</tt>’, ‘<tt>img002.jpg</tt>’ and so on.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done
|
||||
</pre></div>
|
||||
|
||||
<p>If you want to sequence them by oldest modified first, substitute
|
||||
<code>$(ls -r -t *jpg)</code> in place of <code>*jpg</code>.
|
||||
</p>
|
||||
<p>Then run:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg
|
||||
</pre></div>
|
||||
|
||||
<p>The same logic is used for any image format that ffmpeg reads.
|
||||
</p>
|
||||
<p>You can also use <code>cat</code> to pipe images to ffmpeg:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">cat *.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.mpg
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-encode-movie-to-single-pictures_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></h2>
|
||||
|
||||
<p>Use:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i movie.mpg movie%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<p>The ‘<tt>movie.mpg</tt>’ used as input will be converted to
|
||||
‘<tt>movie1.jpg</tt>’, ‘<tt>movie2.jpg</tt>’, etc...
|
||||
</p>
|
||||
<p>Instead of relying on file format self-recognition, you may also use
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>-c:v ppm</samp>’</dt>
|
||||
<dt>‘<samp>-c:v png</samp>’</dt>
|
||||
<dt>‘<samp>-c:v mjpeg</samp>’</dt>
|
||||
</dl>
|
||||
<p>to force the encoding.
|
||||
</p>
|
||||
<p>Applying that to the previous example:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<p>Beware that there is no "jpeg" codec. Use "mjpeg" instead.
|
||||
</p>
|
||||
<a name="Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></h2>
|
||||
|
||||
<p>For multithreaded MPEG* encoding, the encoded slices must be independent,
|
||||
otherwise thread n would practically have to wait for n-1 to finish, so it’s
|
||||
quite logical that there is a small reduction of quality. This is not a bug.
|
||||
</p>
|
||||
<a name="How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></h2>
|
||||
|
||||
<p>Use ‘<tt>-</tt>’ as file name.
|
||||
</p>
|
||||
<a name="g_t_002df-jpeg-doesn_0027t-work_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn’t work.</a></h2>
|
||||
|
||||
<p>Try ’-f image2 test%d.jpg’.
|
||||
</p>
|
||||
<a name="Why-can-I-not-change-the-frame-rate_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></h2>
|
||||
|
||||
<p>Some codecs, like MPEG-1/2, only allow a small number of fixed frame rates.
|
||||
Choose a different codec with the -c:v command line option.
|
||||
</p>
|
||||
<a name="How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></h2>
|
||||
|
||||
<p>Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4
|
||||
standard (note that there are many other coding formats that use this
|
||||
same standard). Thus, use ’-c:v mpeg4’ to encode in these formats. The
|
||||
default fourcc stored in an MPEG-4-coded file will be ’FMP4’. If you want
|
||||
a different fourcc, use the ’-vtag’ option. E.g., ’-vtag xvid’ will
|
||||
force the fourcc ’xvid’ to be stored as the video fourcc rather than the
|
||||
default.
|
||||
</p>
|
||||
<a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></h2>
|
||||
|
||||
<p>’-mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2’,
|
||||
things to try: ’-bf 2’, ’-mpv_flags qp_rd’, ’-mpv_flags mv0’, ’-mpv_flags skip_rd’.
|
||||
</p>
|
||||
<a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></h2>
|
||||
|
||||
<p>’-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’
|
||||
but beware the ’-g 100’ might cause problems with some decoders.
|
||||
Things to try: ’-bf 2’, ’-mpv_flags qp_rd’, ’-mpv_flags mv0’, ’-mpv_flags skip_rd’.
|
||||
</p>
|
||||
<a name="Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></h2>
|
||||
|
||||
<p>You should use ’-flags +ilme+ildct’ and maybe ’-flags +alt’ for interlaced
|
||||
material, and try ’-top 0/1’ if the result looks really messed-up.
|
||||
</p>
|
||||
<a name="How-can-I-read-DirectShow-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></h2>
|
||||
|
||||
<p>If you have built FFmpeg with <code>./configure --enable-avisynth</code>
|
||||
(only possible on MinGW/Cygwin platforms),
|
||||
then you may use any file that DirectShow can read as input.
|
||||
</p>
|
||||
<p>Just create an "input.avs" text file with this single line ...
|
||||
</p><div class="example">
|
||||
<pre class="example">DirectShowSource("C:\path to your file\yourfile.asf")
|
||||
</pre></div>
|
||||
<p>... and then feed that text file to ffmpeg:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i input.avs
|
||||
</pre></div>
|
||||
|
||||
<p>For ANY other help on AviSynth, please visit the
|
||||
<a href="http://www.avisynth.org/">AviSynth homepage</a>.
|
||||
</p>
|
||||
<a name="How-can-I-join-video-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-join-video-files_003f">3.13 How can I join video files?</a></h2>
|
||||
|
||||
<p>To "join" video files is quite ambiguous. The following list explains the
|
||||
different kinds of "joining" and points out how those are addressed in
|
||||
FFmpeg. To join video files may mean:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
To put them one after the other: this is called to <em>concatenate</em> them
|
||||
(in short: concat) and is addressed
|
||||
<a href="#How-can-I-concatenate-video-files">in this very faq</a>.
|
||||
|
||||
</li><li>
|
||||
To put them together in the same file, to let the user choose between the
|
||||
different versions (example: different audio languages): this is called to
|
||||
<em>multiplex</em> them together (in short: mux), and is done by simply
|
||||
invoking ffmpeg with several ‘<samp>-i</samp>’ options.
|
||||
|
||||
</li><li>
|
||||
For audio, to put all channels together in a single stream (example: two
|
||||
mono streams into one stereo stream): this is sometimes called to
|
||||
<em>merge</em> them, and can be done using the
|
||||
<a href="ffmpeg-filters.html#amerge"><code>amerge</code></a> filter.
|
||||
|
||||
</li><li>
|
||||
For audio, to play one on top of the other: this is called to <em>mix</em>
|
||||
them, and can be done by first merging them into a single stream and then
|
||||
using the <a href="ffmpeg-filters.html#pan"><code>pan</code></a> filter to mix
|
||||
the channels at will.
|
||||
|
||||
</li><li>
|
||||
For video, to display both together, side by side or one on top of a part of
|
||||
the other; it can be done using the
|
||||
<a href="ffmpeg-filters.html#overlay"><code>overlay</code></a> video filter.
|
||||
|
||||
</li></ul>
|
||||
|
||||
<p><a name="How-can-I-concatenate-video-files"></a>
|
||||
</p><a name="How-can-I-concatenate-video-files_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a></h2>
|
||||
|
||||
<p>There are several solutions, depending on the exact circumstances.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-filter"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-filters.html#concat"><code>concat</code></a> filter designed specifically for that, with examples in the
|
||||
documentation. This operation is recommended if you need to re-encode.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-demuxer"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-formats.html#concat"><code>concat</code></a> demuxer which you can use when you want to avoid a re-encode and
|
||||
your format doesn’t support file level concatenation.
|
||||
</p>
|
||||
<a name="Concatenating-using-the-concat-protocol-_0028file-level_0029"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></h3>
|
||||
|
||||
<p>FFmpeg has a <a href="ffmpeg-protocols.html#concat"><code>concat</code></a> protocol designed specifically for that, with examples in the
|
||||
documentation.
|
||||
</p>
|
||||
<p>A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow one to concatenate
|
||||
video by merely concatenating the files containing them.
|
||||
</p>
|
||||
<p>Hence you may concatenate your multimedia files by first transcoding them to
|
||||
these privileged formats, then using the humble <code>cat</code> command (or the
|
||||
equally humble <code>copy</code> under Windows), and finally transcoding back to your
|
||||
format of choice.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
||||
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
||||
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
|
||||
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
||||
</pre></div>
|
||||
|
||||
<p>Additionally, you can use the <code>concat</code> protocol instead of <code>cat</code> or
|
||||
<code>copy</code> which will avoid creation of a potentially huge intermediate file.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
|
||||
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
|
||||
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
|
||||
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
|
||||
</pre></div>
|
||||
|
||||
<p>Note that you may need to escape the character "|" which is special for many
|
||||
shells.
|
||||
</p>
|
||||
<p>Another option is usage of named pipes, should your platform support it:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">mkfifo intermediate1.mpg
|
||||
mkfifo intermediate2.mpg
|
||||
ffmpeg -i input1.avi -qscale:v 1 -y intermediate1.mpg < /dev/null &
|
||||
ffmpeg -i input2.avi -qscale:v 1 -y intermediate2.mpg < /dev/null &
|
||||
cat intermediate1.mpg intermediate2.mpg |\
|
||||
ffmpeg -f mpeg -i - -c:v mpeg4 -c:a libmp3lame output.avi
|
||||
</pre></div>
|
||||
|
||||
<a name="Concatenating-using-raw-audio-and-video"></a>
|
||||
<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></h3>
|
||||
|
||||
<p>Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
|
||||
allow concatenation, and the transcoding step is almost lossless.
|
||||
When using multiple yuv4mpegpipe(s), the first line needs to be discarded
|
||||
from all but the first stream. This can be accomplished by piping through
|
||||
<code>tail</code> as seen below. Note that when piping through <code>tail</code> you
|
||||
must use command grouping, <code>{ ;}</code>, to background properly.
|
||||
</p>
|
||||
<p>For example, let’s say we want to concatenate two FLV files into an
|
||||
output.flv file:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">mkfifo temp1.a
|
||||
mkfifo temp1.v
|
||||
mkfifo temp2.a
|
||||
mkfifo temp2.v
|
||||
mkfifo all.a
|
||||
mkfifo all.v
|
||||
ffmpeg -i input1.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
|
||||
ffmpeg -i input2.flv -vn -f u16le -c:a pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
|
||||
ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
|
||||
{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v ; } &
|
||||
cat temp1.a temp2.a > all.a &
|
||||
cat temp1.v temp2.v > all.v &
|
||||
ffmpeg -f u16le -c:a pcm_s16le -ac 2 -ar 44100 -i all.a \
|
||||
-f yuv4mpegpipe -i all.v \
|
||||
-y output.flv
|
||||
rm temp[12].[av] all.[av]
|
||||
</pre></div>
|
||||
|
||||
<a name="Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.15 Using ‘<samp>-f lavfi</samp>’, audio becomes mono for no apparent reason.</a></h2>
|
||||
|
||||
<p>Use ‘<samp>-dumpgraph -</samp>’ to find out exactly where the channel layout is
|
||||
lost.
|
||||
</p>
|
||||
<p>Most likely, it is through <code>auto-inserted aresample</code>. Try to understand
|
||||
why the converting filter was needed at that place.
|
||||
</p>
|
||||
<p>Just before the output is a likely place, as ‘<samp>-f lavfi</samp>’ currently
|
||||
only support packed S16.
|
||||
</p>
|
||||
<p>Then insert the correct <code>aformat</code> explicitly in the filtergraph,
|
||||
specifying the exact format.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">aformat=sample_fmts=s16:channel_layouts=stereo
|
||||
</pre></div>
|
||||
|
||||
<a name="Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.16 Why does FFmpeg not see the subtitles in my VOB file?</a></h2>
|
||||
|
||||
<p>VOB and a few other formats do not have a global header that describes
|
||||
everything present in the file. Instead, applications are supposed to scan
|
||||
the file to see what it contains. Since VOB files are frequently large, only
|
||||
the beginning is scanned. If the subtitles happen only later in the file,
|
||||
they will not be initially detected.
|
||||
</p>
|
||||
<p>Some applications, including the <code>ffmpeg</code> command-line tool, can only
|
||||
work with streams that were detected during the initial scan; streams that
|
||||
are detected later are ignored.
|
||||
</p>
|
||||
<p>The size of the initial scan is controlled by two options: <code>probesize</code>
|
||||
(default ~5 Mo) and <code>analyzeduration</code> (default 5,000,000 µs = 5 s). For
|
||||
the subtitle stream to be detected, both values must be large enough.
|
||||
</p>
|
||||
<a name="Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.17 Why was the <code>ffmpeg</code> ‘<samp>-sameq</samp>’ option removed? What to use instead?</a></h2>
|
||||
|
||||
<p>The ‘<samp>-sameq</samp>’ option meant "same quantizer", and made sense only in a
|
||||
very limited set of cases. Unfortunately, a lot of people mistook it for
|
||||
"same quality" and used it in places where it did not make sense: it had
|
||||
roughly the expected visible effect, but achieved it in a very inefficient
|
||||
way.
|
||||
</p>
|
||||
<p>Each encoder has its own set of options to set the quality-vs-size balance,
|
||||
use the options for the encoder you are using to set the quality level to a
|
||||
point acceptable for your tastes. The most common options to do that are
|
||||
‘<samp>-qscale</samp>’ and ‘<samp>-qmax</samp>’, but you should peruse the documentation
|
||||
of the encoder you chose.
|
||||
</p>
|
||||
<a name="I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-a-stretched-video_002c-why-does-scaling-does-not-fix-it_003f">3.18 I have a stretched video, why does scaling does not fix it?</a></h2>
|
||||
|
||||
<p>A lot of video codecs and formats can store the <em>aspect ratio</em> of the
|
||||
video: this is the ratio between the width and the height of either the full
|
||||
image (DAR, display aspect ratio) or individual pixels (SAR, sample aspect
|
||||
ratio). For example, EGA screens at resolution 640×350 had 4:3 DAR and 35:48
|
||||
SAR.
|
||||
</p>
|
||||
<p>Most still image processing work with square pixels, i.e. 1:1 SAR, but a lot
|
||||
of video standards, especially from the analogic-numeric transition era, use
|
||||
non-square pixels.
|
||||
</p>
|
||||
<p>Most processing filters in FFmpeg handle the aspect ratio to avoid
|
||||
stretching the image: cropping adjusts the DAR to keep the SAR constant,
|
||||
scaling adjusts the SAR to keep the DAR constant.
|
||||
</p>
|
||||
<p>If you want to stretch, or “unstretch”, the image, you need to override the
|
||||
information with the
|
||||
<a href="ffmpeg-filters.html#setdar_002c-setsar"><code>setdar or setsar filters</code></a>.
|
||||
</p>
|
||||
<p>Do not forget to examine carefully the original video to check whether the
|
||||
stretching comes from the image or from the aspect ratio information.
|
||||
</p>
|
||||
<p>For example, to fix a badly encoded EGA capture, use the following commands,
|
||||
either the first one to upscale to square pixels or the second one to set
|
||||
the correct aspect ratio or the third one to avoid transcoding (may not work
|
||||
depending on the format / codec / player / phase of the moon):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i ega_screen.nut -vf scale=640:480,setsar=1 ega_screen_scaled.nut
|
||||
ffmpeg -i ega_screen.nut -vf setdar=4/3 ega_screen_anamorphic.nut
|
||||
ffmpeg -i ega_screen.nut -aspect 4/3 -c copy ega_screen_overridden.nut
|
||||
</pre></div>
|
||||
|
||||
<p><a name="background-task"></a>
|
||||
</p><a name="How-do-I-run-ffmpeg-as-a-background-task_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-run-ffmpeg-as-a-background-task_003f">3.19 How do I run ffmpeg as a background task?</a></h2>
|
||||
|
||||
<p>ffmpeg normally checks the console input, for entries like "q" to stop
|
||||
and "?" to give help, while performing operations. ffmpeg does not have a way of
|
||||
detecting when it is running as a background task.
|
||||
When it checks the console input, that can cause the process running ffmpeg
|
||||
in the background to suspend.
|
||||
</p>
|
||||
<p>To prevent those input checks, allowing ffmpeg to run as a background task,
|
||||
use the <a href="ffmpeg.html#stdin-option"><code>-nostdin</code> option</a>
|
||||
in the ffmpeg invocation. This is effective whether you run ffmpeg in a shell
|
||||
or invoke ffmpeg in its own process via an operating system API.
|
||||
</p>
|
||||
<p>As an alternative, when you are running ffmpeg in a shell, you can redirect
|
||||
standard input to <code>/dev/null</code> (on Linux and macOS)
|
||||
or <code>NUL</code> (on Windows). You can do this redirect either
|
||||
on the ffmpeg invocation, or from a shell script which calls ffmpeg.
|
||||
</p>
|
||||
<p>For example:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -nostdin -i INPUT OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>or (on Linux, macOS, and other UNIX-like shells):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT OUTPUT </dev/null
|
||||
</pre></div>
|
||||
|
||||
<p>or (on Windows):
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT OUTPUT <NUL
|
||||
</pre></div>
|
||||
|
||||
<a name="How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-prevent-ffmpeg-from-suspending-with-a-message-like-suspended-_0028tty-output_0029_003f">3.20 How do I prevent ffmpeg from suspending with a message like <em>suspended (tty output)</em>?</a></h2>
|
||||
|
||||
<p>If you run ffmpeg in the background, you may find that its process suspends.
|
||||
There may be a message like <em>suspended (tty output)</em>. The question is how
|
||||
to prevent the process from being suspended.
|
||||
</p>
|
||||
<p>For example:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">% ffmpeg -i INPUT OUTPUT &> ~/tmp/log.txt &
|
||||
[1] 93352
|
||||
%
|
||||
[1] + suspended (tty output) ffmpeg -i INPUT OUTPUT &>
|
||||
</pre></div>
|
||||
|
||||
<p>The message "tty output" notwithstanding, the problem here is that
|
||||
ffmpeg normally checks the console input when it runs. The operating system
|
||||
detects this, and suspends the process until you can bring it to the
|
||||
foreground and attend to it.
|
||||
</p>
|
||||
<p>The solution is to use the right techniques to tell ffmpeg not to consult
|
||||
console input. You can use the
|
||||
<a href="ffmpeg.html#stdin-option"><code>-nostdin</code> option</a>,
|
||||
or redirect standard input with <code>< /dev/null</code>.
|
||||
See FAQ
|
||||
<a href="#background-task"><em>How do I run ffmpeg as a background task?</em></a>
|
||||
for details.
|
||||
</p>
|
||||
<a name="Development"></a>
|
||||
<h1 class="chapter"><a href="faq.html#toc-Development">4 Development</a></h1>
|
||||
|
||||
<a name="Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></h2>
|
||||
|
||||
<p>Yes. Check the ‘<tt>doc/examples</tt>’ directory in the source
|
||||
repository, also available online at:
|
||||
<a href="https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples">https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples</a>.
|
||||
</p>
|
||||
<p>Examples are also installed by default, usually in
|
||||
<code>$PREFIX/share/ffmpeg/examples</code>.
|
||||
</p>
|
||||
<p>Also you may read the Developers Guide of the FFmpeg documentation. Alternatively,
|
||||
examine the source code for one of the many open source projects that
|
||||
already incorporate FFmpeg at (<a href="projects.html">projects.html</a>).
|
||||
</p>
|
||||
<a name="Can-you-support-my-C-compiler-XXX_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></h2>
|
||||
|
||||
<p>It depends. If your compiler is C99-compliant, then patches to support
|
||||
it are likely to be welcome if they do not pollute the source code
|
||||
with <code>#ifdef</code>s related to the compiler.
|
||||
</p>
|
||||
<a name="Is-Microsoft-Visual-C_002b_002b-supported_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></h2>
|
||||
|
||||
<p>Yes. Please see the <a href="platform.html">Microsoft Visual C++</a>
|
||||
section in the FFmpeg documentation.
|
||||
</p>
|
||||
<a name="Can-you-add-automake_002c-libtool-or-autoconf-support_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></h2>
|
||||
|
||||
<p>No. These tools are too bloated and they complicate the build.
|
||||
</p>
|
||||
<a name="Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></h2>
|
||||
|
||||
<p>FFmpeg is already organized in a highly modular manner and does not need to
|
||||
be rewritten in a formal object language. Further, many of the developers
|
||||
favor straight C; it works for them. For more arguments on this matter,
|
||||
read <a href="https://web.archive.org/web/20111004021423/http://kernel.org/pub/linux/docs/lkml/#s15">"Programming Religion"</a>.
|
||||
</p>
|
||||
<a name="Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></h2>
|
||||
|
||||
<p>The build process creates <code>ffmpeg_g</code>, <code>ffplay_g</code>, etc. which
|
||||
contain full debug information. Those binaries are stripped to create
|
||||
<code>ffmpeg</code>, <code>ffplay</code>, etc. If you need the debug information, use
|
||||
the *_g versions.
|
||||
</p>
|
||||
<a name="I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></h2>
|
||||
|
||||
<p>Yes, as long as the code is optional and can easily and cleanly be placed
|
||||
under #if CONFIG_GPL without breaking anything. So, for example, a new codec
|
||||
or filter would be OK under GPL while a bug fix to LGPL code would not.
|
||||
</p>
|
||||
<a name="I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I’m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></h2>
|
||||
|
||||
<p>FFmpeg builds static libraries by default. In static libraries, dependencies
|
||||
are not handled. That has two consequences. First, you must specify the
|
||||
libraries in dependency order: <code>-lavdevice</code> must come before
|
||||
<code>-lavformat</code>, <code>-lavutil</code> must come after everything else, etc.
|
||||
Second, external libraries that are used in FFmpeg have to be specified too.
|
||||
</p>
|
||||
<p>An easy way to get the full list of required libraries in dependency order
|
||||
is to use <code>pkg-config</code>.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">c99 -o program program.c $(pkg-config --cflags --libs libavformat libavcodec)
|
||||
</pre></div>
|
||||
|
||||
<p>See ‘<tt>doc/example/Makefile</tt>’ and ‘<tt>doc/example/pc-uninstalled</tt>’ for
|
||||
more details.
|
||||
</p>
|
||||
<a name="I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I’m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></h2>
|
||||
|
||||
<p>FFmpeg is a pure C project, so to use the libraries within your C++ application
|
||||
you need to explicitly state that you are using a C library. You can do this by
|
||||
encompassing your FFmpeg includes using <code>extern "C"</code>.
|
||||
</p>
|
||||
<p>See <a href="http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3">http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3</a>
|
||||
</p>
|
||||
<a name="I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I’m using libavutil from within my C++ application but the compiler complains about ’UINT64_C’ was not declared in this scope</a></h2>
|
||||
|
||||
<p>FFmpeg is a pure C project using C99 math features, in order to enable C++
|
||||
to use them you have to append -D__STDC_CONSTANT_MACROS to your CXXFLAGS
|
||||
</p>
|
||||
<a name="I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></h2>
|
||||
|
||||
<p>You have to create a custom AVIOContext using <code>avio_alloc_context</code>,
|
||||
see ‘<tt>libavformat/aviobuf.c</tt>’ in FFmpeg and ‘<tt>libmpdemux/demux_lavf.c</tt>’ in MPlayer or MPlayer2 sources.
|
||||
</p>
|
||||
<a name="Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></h2>
|
||||
|
||||
<p>see <a href="https://www.ffmpeg.org/~michael/">https://www.ffmpeg.org/~michael/</a>
|
||||
</p>
|
||||
<a name="How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></h2>
|
||||
|
||||
<p>Even if peculiar since it is network oriented, RTP is a container like any
|
||||
other. You have to <em>demux</em> RTP before feeding the payload to libavcodec.
|
||||
In this specific case please look at RFC 4629 to see how it should be done.
|
||||
</p>
|
||||
<a name="AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></h2>
|
||||
|
||||
<p><code>r_frame_rate</code> is NOT the average frame rate, it is the smallest frame rate
|
||||
that can accurately represent all timestamps. So no, it is not
|
||||
wrong if it is larger than the average!
|
||||
For example, if you have mixed 25 and 30 fps content, then <code>r_frame_rate</code>
|
||||
will be 150 (it is the least common multiple).
|
||||
If you are looking for the average frame rate, see <code>AVStream.avg_frame_rate</code>.
|
||||
</p>
|
||||
<a name="Why-is-make-fate-not-running-all-tests_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></h2>
|
||||
|
||||
<p>Make sure you have the fate-suite samples and the <code>SAMPLES</code> Make variable
|
||||
or <code>FATE_SAMPLES</code> environment variable or the <code>--samples</code>
|
||||
<code>configure</code> option is set to the right path.
|
||||
</p>
|
||||
<a name="Why-is-make-fate-not-finding-the-samples_003f"></a>
|
||||
<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></h2>
|
||||
|
||||
<p>Do you happen to have a <code>~</code> character in the samples path to indicate a
|
||||
home directory? The value is used in ways where the shell cannot expand it,
|
||||
causing FATE to not find files. Just replace <code>~</code> by the full path.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
339
ffmpeg/doc/fate.html
Normal file
339
ffmpeg/doc/fate.html
Normal file
@ -0,0 +1,339 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Automated Testing Environment: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Automated Testing Environment: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Automated Testing Environment</h1>
|
||||
<hr>
|
||||
<a name="Top"></a>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||
<li><a name="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 name="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 name="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 name="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 name="toc-Makefile-targets" href="#Makefile-targets">5.1 Makefile targets</a></li>
|
||||
<li><a name="toc-Makefile-variables" href="#Makefile-variables">5.2 Makefile variables</a></li>
|
||||
<li><a name="toc-Examples" href="#Examples">5.3 Examples</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Introduction"></a>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Introduction">1 Introduction</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></h1>
|
||||
|
||||
<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="float alert alert-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 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>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></h1>
|
||||
|
||||
<p>To submit your results to the server you should run fate through the
|
||||
shell script ‘<tt>tests/fate.sh</tt>’ 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 ‘<tt>doc/fate_config.sh.template</tt>’.
|
||||
</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>‘<samp>RSA</samp>’</dt>
|
||||
<dd><p> d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
|
||||
</p></dd>
|
||||
<dt>‘<samp>ECDSA</samp>’</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>
|
||||
<h1 class="chapter"><a href="fate.html#toc-Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="fate.html#toc-FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a></h1>
|
||||
|
||||
<a name="Makefile-targets"></a>
|
||||
<h2 class="section"><a href="fate.html#toc-Makefile-targets">5.1 Makefile targets</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>fate-rsync</samp>’</dt>
|
||||
<dd><p>Download/synchronize sample files to the configured samples directory.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>fate-list</samp>’</dt>
|
||||
<dd><p>Will list all fate/regression test targets.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>fate</samp>’</dt>
|
||||
<dd><p>Run the FATE test suite (requires the fate-suite dataset).
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="Makefile-variables"></a>
|
||||
<h2 class="section"><a href="fate.html#toc-Makefile-variables">5.2 Makefile variables</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt><code>V</code></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><code>SAMPLES</code></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><code>THREADS</code></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><code>THREAD_TYPE</code></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><code>CPUFLAGS</code></dt>
|
||||
<dd><p>Specify CPU flags.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>TARGET_EXEC</code></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><code>GEN</code></dt>
|
||||
<dd><p>Set to ‘<samp>1</samp>’ to generate the missing or mismatched references.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>HWACCEL</code></dt>
|
||||
<dd><p>Specify which hardware acceleration to use while running regression tests,
|
||||
by default ‘<samp>none</samp>’ is used.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><code>KEEP</code></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>
|
||||
<h2 class="section"><a href="fate.html#toc-Examples">5.3 Examples</a></h2>
|
||||
|
||||
<div class="example">
|
||||
<pre class="example">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
|
||||
</pre></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
51872
ffmpeg/doc/ffmpeg-all.html
Normal file
51872
ffmpeg/doc/ffmpeg-all.html
Normal file
File diff suppressed because it is too large
Load Diff
961
ffmpeg/doc/ffmpeg-bitstream-filters.html
Normal file
961
ffmpeg/doc/ffmpeg-bitstream-filters.html
Normal file
@ -0,0 +1,961 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Bitstream Filters Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Bitstream Filters ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Bitstream Filters Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">2 Bitstream Filters</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
|
||||
<li><a name="toc-av1_005fmetadata" href="#av1_005fmetadata">2.2 av1_metadata</a></li>
|
||||
<li><a name="toc-chomp" href="#chomp">2.3 chomp</a></li>
|
||||
<li><a name="toc-dca_005fcore" href="#dca_005fcore">2.4 dca_core</a></li>
|
||||
<li><a name="toc-dump_005fextra" href="#dump_005fextra">2.5 dump_extra</a></li>
|
||||
<li><a name="toc-eac3_005fcore" href="#eac3_005fcore">2.6 eac3_core</a></li>
|
||||
<li><a name="toc-extract_005fextradata" href="#extract_005fextradata">2.7 extract_extradata</a></li>
|
||||
<li><a name="toc-filter_005funits" href="#filter_005funits">2.8 filter_units</a></li>
|
||||
<li><a name="toc-hapqa_005fextract" href="#hapqa_005fextract">2.9 hapqa_extract</a></li>
|
||||
<li><a name="toc-h264_005fmetadata" href="#h264_005fmetadata">2.10 h264_metadata</a></li>
|
||||
<li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.11 h264_mp4toannexb</a></li>
|
||||
<li><a name="toc-h264_005fredundant_005fpps" href="#h264_005fredundant_005fpps">2.12 h264_redundant_pps</a></li>
|
||||
<li><a name="toc-hevc_005fmetadata" href="#hevc_005fmetadata">2.13 hevc_metadata</a></li>
|
||||
<li><a name="toc-hevc_005fmp4toannexb" href="#hevc_005fmp4toannexb">2.14 hevc_mp4toannexb</a></li>
|
||||
<li><a name="toc-imxdump" href="#imxdump">2.15 imxdump</a></li>
|
||||
<li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.16 mjpeg2jpeg</a></li>
|
||||
<li><a name="toc-mjpegadump" href="#mjpegadump">2.17 mjpegadump</a></li>
|
||||
<li><a name="toc-mov2textsub-1" href="#mov2textsub-1">2.18 mov2textsub</a></li>
|
||||
<li><a name="toc-mp3decomp" href="#mp3decomp">2.19 mp3decomp</a></li>
|
||||
<li><a name="toc-mpeg2_005fmetadata" href="#mpeg2_005fmetadata">2.20 mpeg2_metadata</a></li>
|
||||
<li><a name="toc-mpeg4_005funpack_005fbframes" href="#mpeg4_005funpack_005fbframes">2.21 mpeg4_unpack_bframes</a></li>
|
||||
<li><a name="toc-noise" href="#noise">2.22 noise</a></li>
|
||||
<li><a name="toc-null" href="#null">2.23 null</a></li>
|
||||
<li><a name="toc-pcm_005frechunk" href="#pcm_005frechunk">2.24 pcm_rechunk</a></li>
|
||||
<li><a name="toc-prores_005fmetadata" href="#prores_005fmetadata">2.25 prores_metadata</a></li>
|
||||
<li><a name="toc-remove_005fextra" href="#remove_005fextra">2.26 remove_extra</a></li>
|
||||
<li><a name="toc-text2movsub-1" href="#text2movsub-1">2.27 text2movsub</a></li>
|
||||
<li><a name="toc-trace_005fheaders" href="#trace_005fheaders">2.28 trace_headers</a></li>
|
||||
<li><a name="toc-truehd_005fcore" href="#truehd_005fcore">2.29 truehd_core</a></li>
|
||||
<li><a name="toc-vp9_005fmetadata" href="#vp9_005fmetadata">2.30 vp9_metadata</a></li>
|
||||
<li><a name="toc-vp9_005fsuperframe" href="#vp9_005fsuperframe">2.31 vp9_superframe</a></li>
|
||||
<li><a name="toc-vp9_005fsuperframe_005fsplit" href="#vp9_005fsuperframe_005fsplit">2.32 vp9_superframe_split</a></li>
|
||||
<li><a name="toc-vp9_005fraw_005freorder" href="#vp9_005fraw_005freorder">2.33 vp9_raw_reorder</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>This document describes the bitstream filters provided by the
|
||||
libavcodec library.
|
||||
</p>
|
||||
<p>A bitstream filter operates on the encoded stream data, and performs
|
||||
bitstream level modifications without performing decoding.
|
||||
</p>
|
||||
|
||||
<a name="Bitstream-Filters"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Bitstream-Filters">2 Bitstream Filters</a></h1>
|
||||
|
||||
<p>When you configure your FFmpeg build, all the supported bitstream
|
||||
filters are enabled by default. You can list all available ones using
|
||||
the configure option <code>--list-bsfs</code>.
|
||||
</p>
|
||||
<p>You can disable all the bitstream filters using the configure option
|
||||
<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
|
||||
the option <code>--enable-bsf=BSF</code>, or you can disable a particular
|
||||
bitstream filter using the option <code>--disable-bsf=BSF</code>.
|
||||
</p>
|
||||
<p>The option <code>-bsfs</code> of the ff* tools will display the list of
|
||||
all the supported bitstream filters included in your build.
|
||||
</p>
|
||||
<p>The ff* tools have a -bsf option applied per stream, taking a
|
||||
comma-separated list of filters, whose parameters follow the filter
|
||||
name after a ’=’.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>Below is a description of the currently available bitstream filters,
|
||||
with their parameters, if any.
|
||||
</p>
|
||||
<a name="aac_005fadtstoasc"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-aac_005fadtstoasc">2.1 aac_adtstoasc</a></h2>
|
||||
|
||||
<p>Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration
|
||||
bitstream.
|
||||
</p>
|
||||
<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
|
||||
ADTS header and removes the ADTS header.
|
||||
</p>
|
||||
<p>This filter is required for example when copying an AAC stream from a
|
||||
raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or
|
||||
to MOV/MP4 files and related formats such as 3GP or M4A. Please note
|
||||
that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats.
|
||||
</p>
|
||||
<a name="av1_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-av1_005fmetadata">2.2 av1_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an AV1 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>td</samp>’</dt>
|
||||
<dd><p>Insert or remove temporal delimiter OBUs in all temporal units of the
|
||||
stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>insert</samp>’</dt>
|
||||
<dd><p>Insert a TD at the beginning of every TU which does not already have one.
|
||||
</p></dd>
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
<dd><p>Remove the TD from the beginning of every TU which has one.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>color_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the color description fields in the stream (see AV1 section 6.4.2).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>color_range</samp>’</dt>
|
||||
<dd><p>Set the color range in the stream (see AV1 section 6.4.2; note that
|
||||
this cannot be set for streams using BT.709 primaries, sRGB transfer
|
||||
characteristic and identity (RGB) matrix coefficients).
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>tv</samp>’</dt>
|
||||
<dd><p>Limited range.
|
||||
</p></dd>
|
||||
<dt>‘<samp>pc</samp>’</dt>
|
||||
<dd><p>Full range.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>chroma_sample_position</samp>’</dt>
|
||||
<dd><p>Set the chroma sample location in the stream (see AV1 section 6.4.2).
|
||||
This can only be set for 4:2:0 streams.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>vertical</samp>’</dt>
|
||||
<dd><p>Left position (matching the default in MPEG-2 and H.264).
|
||||
</p></dd>
|
||||
<dt>‘<samp>colocated</samp>’</dt>
|
||||
<dd><p>Top-left position.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>tick_rate</samp>’</dt>
|
||||
<dd><p>Set the tick rate (<em>num_units_in_display_tick / time_scale</em>) in
|
||||
the timing info in the sequence header.
|
||||
</p></dd>
|
||||
<dt>‘<samp>num_ticks_per_picture</samp>’</dt>
|
||||
<dd><p>Set the number of ticks in each picture, to indicate that the stream
|
||||
has a fixed framerate. Ignored if ‘<samp>tick_rate</samp>’ is not also set.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>delete_padding</samp>’</dt>
|
||||
<dd><p>Deletes Padding OBUs.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="chomp"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-chomp">2.3 chomp</a></h2>
|
||||
|
||||
<p>Remove zero padding at the end of a packet.
|
||||
</p>
|
||||
<a name="dca_005fcore"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dca_005fcore">2.4 dca_core</a></h2>
|
||||
|
||||
<p>Extract the core from a DCA/DTS stream, dropping extensions such as
|
||||
DTS-HD.
|
||||
</p>
|
||||
<a name="dump_005fextra"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dump_005fextra">2.5 dump_extra</a></h2>
|
||||
|
||||
<p>Add extradata to the beginning of the filtered packets except when
|
||||
said packets already exactly begin with the extradata that is intended
|
||||
to be added.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>freq</samp>’</dt>
|
||||
<dd><p>The additional argument specifies which packets should be filtered.
|
||||
It accepts the values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>k</samp>’</dt>
|
||||
<dt>‘<samp>keyframe</samp>’</dt>
|
||||
<dd><p>add extradata to all key packets
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>e</samp>’</dt>
|
||||
<dt>‘<samp>all</samp>’</dt>
|
||||
<dd><p>add extradata to all packets
|
||||
</p></dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>If not specified it is assumed ‘<samp>k</samp>’.
|
||||
</p>
|
||||
<p>For example the following <code>ffmpeg</code> command forces a global
|
||||
header (thus disabling individual packet headers) in the H.264 packets
|
||||
generated by the <code>libx264</code> encoder, but corrects them by adding
|
||||
the header stored in extradata to the key packets:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
|
||||
</pre></div>
|
||||
|
||||
<a name="eac3_005fcore"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-eac3_005fcore">2.6 eac3_core</a></h2>
|
||||
|
||||
<p>Extract the core from a E-AC-3 stream, dropping extra channels.
|
||||
</p>
|
||||
<a name="extract_005fextradata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-extract_005fextradata">2.7 extract_extradata</a></h2>
|
||||
|
||||
<p>Extract the in-band extradata.
|
||||
</p>
|
||||
<p>Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
|
||||
or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
|
||||
of the bitstream containing the coded frames) or "out of band" (e.g. on the
|
||||
container level). This latter form is called "extradata" in FFmpeg terminology.
|
||||
</p>
|
||||
<p>This bitstream filter detects the in-band headers and makes them available as
|
||||
extradata.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
<dd><p>When this option is enabled, the long-term headers are removed from the
|
||||
bitstream after extraction.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="filter_005funits"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-filter_005funits">2.8 filter_units</a></h2>
|
||||
|
||||
<p>Remove units with types in or not in a given set from the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>pass_types</samp>’</dt>
|
||||
<dd><p>List of unit types or ranges of unit types to pass through while removing
|
||||
all others. This is specified as a ’|’-separated list of unit type values
|
||||
or ranges of values with ’-’.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>remove_types</samp>’</dt>
|
||||
<dd><p>Identical to ‘<samp>pass_types</samp>’, except the units in the given set
|
||||
removed and all others passed through.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>Extradata is unchanged by this transformation, but note that if the stream
|
||||
contains inline parameter sets then the output may be unusable if they are
|
||||
removed.
|
||||
</p>
|
||||
<p>For example, to remove all non-VCL NAL units from an H.264 stream:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<p>To remove all AUDs, SEI and filler from an H.265 stream:
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
|
||||
</pre></div>
|
||||
|
||||
<a name="hapqa_005fextract"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hapqa_005fextract">2.9 hapqa_extract</a></h2>
|
||||
|
||||
<p>Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>texture</samp>’</dt>
|
||||
<dd><p>Specifies the texture to keep.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>color</samp>’</dt>
|
||||
<dt>‘<samp>alpha</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>Convert HAPQA to HAPQ
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
|
||||
</pre></div>
|
||||
|
||||
<p>Convert HAPQA to HAPAlphaOnly
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
|
||||
</pre></div>
|
||||
|
||||
<a name="h264_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmetadata">2.10 h264_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an H.264 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>aud</samp>’</dt>
|
||||
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>insert</samp>’</dt>
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>sample_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the sample aspect ratio of the stream in the VUI parameters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>overscan_appropriate_flag</samp>’</dt>
|
||||
<dd><p>Set whether the stream is suitable for display using overscan
|
||||
or not (see H.264 section E.2.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dt>‘<samp>video_full_range_flag</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.264 section E.2.1 and
|
||||
table E-2).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.264 section E.2.1
|
||||
and tables E-3, E-4 and E-5).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
|
||||
<dd><p>Set the chroma sample location in the stream (see H.264 section
|
||||
E.2.1 and figure E-1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>tick_rate</samp>’</dt>
|
||||
<dd><p>Set the tick rate (num_units_in_tick / time_scale) in the VUI
|
||||
parameters. This is the smallest time unit representable in the
|
||||
stream, and in many cases represents the field rate of the stream
|
||||
(double the frame rate).
|
||||
</p></dd>
|
||||
<dt>‘<samp>fixed_frame_rate_flag</samp>’</dt>
|
||||
<dd><p>Set whether the stream has fixed framerate - typically this indicates
|
||||
that the framerate is exactly half the tick rate, but the exact
|
||||
meaning is dependent on interlacing and the picture structure (see
|
||||
H.264 section E.2.1 and table E-6).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>crop_left</samp>’</dt>
|
||||
<dt>‘<samp>crop_right</samp>’</dt>
|
||||
<dt>‘<samp>crop_top</samp>’</dt>
|
||||
<dt>‘<samp>crop_bottom</samp>’</dt>
|
||||
<dd><p>Set the frame cropping offsets in the SPS. These values will replace
|
||||
the current ones if the stream is already cropped.
|
||||
</p>
|
||||
<p>These fields are set in pixels. Note that some sizes may not be
|
||||
representable if the chroma is subsampled or the stream is interlaced
|
||||
(see H.264 section 7.4.2.1.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>sei_user_data</samp>’</dt>
|
||||
<dd><p>Insert a string as SEI unregistered user data. The argument must
|
||||
be of the form <em>UUID+string</em>, where the UUID is as hex digits
|
||||
possibly separated by hyphens, and the string can be anything.
|
||||
</p>
|
||||
<p>For example, ‘<samp>086f3693-b7b3-4f2c-9653-21492feee5b8+hello</samp>’ will
|
||||
insert the string “hello” associated with the given UUID.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>delete_filler</samp>’</dt>
|
||||
<dd><p>Deletes both filler NAL units and filler SEI messages.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>level</samp>’</dt>
|
||||
<dd><p>Set the level in the SPS. Refer to H.264 section A.3 and tables A-1
|
||||
to A-5.
|
||||
</p>
|
||||
<p>The argument must be the name of a level (for example, ‘<samp>4.2</samp>’), a
|
||||
level_idc value (for example, ‘<samp>42</samp>’), or the special name ‘<samp>auto</samp>’
|
||||
indicating that the filter should attempt to guess the level from the
|
||||
input stream properties.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="h264_005fmp4toannexb"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmp4toannexb">2.11 h264_mp4toannexb</a></h2>
|
||||
|
||||
<p>Convert an H.264 bitstream from length prefixed mode to start code
|
||||
prefixed mode (as defined in the Annex B of the ITU-T H.264
|
||||
specification).
|
||||
</p>
|
||||
<p>This is required by some streaming formats, typically the MPEG-2
|
||||
transport stream format (muxer <code>mpegts</code>).
|
||||
</p>
|
||||
<p>For example to remux an MP4 file containing an H.264 stream to mpegts
|
||||
format with <code>ffmpeg</code>, you can use the command:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
|
||||
</pre></div>
|
||||
|
||||
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
||||
<code>mpegts</code>) and raw H.264 (muxer <code>h264</code>) output formats.
|
||||
</p>
|
||||
<a name="h264_005fredundant_005fpps"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fredundant_005fpps">2.12 h264_redundant_pps</a></h2>
|
||||
|
||||
<p>This applies a specific fixup to some Blu-ray streams which contain
|
||||
redundant PPSs modifying irrelevant parameters of the stream which
|
||||
confuse other transformations which require correct extradata.
|
||||
</p>
|
||||
<p>A new single global PPS is created, and all of the redundant PPSs
|
||||
within the stream are removed.
|
||||
</p>
|
||||
<a name="hevc_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmetadata">2.13 hevc_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an HEVC stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>aud</samp>’</dt>
|
||||
<dd><p>Insert or remove AUD NAL units in all access units of the stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>insert</samp>’</dt>
|
||||
<dt>‘<samp>remove</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>sample_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the sample aspect ratio in the stream in the VUI parameters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dt>‘<samp>video_full_range_flag</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.265 section E.3.1 and
|
||||
table E.2).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.265 section E.3.1
|
||||
and tables E.3, E.4 and E.5).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>chroma_sample_loc_type</samp>’</dt>
|
||||
<dd><p>Set the chroma sample location in the stream (see H.265 section
|
||||
E.3.1 and figure E.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>tick_rate</samp>’</dt>
|
||||
<dd><p>Set the tick rate in the VPS and VUI parameters (num_units_in_tick /
|
||||
time_scale). Combined with ‘<samp>num_ticks_poc_diff_one</samp>’, this can
|
||||
set a constant framerate in the stream. Note that it is likely to be
|
||||
overridden by container parameters when the stream is in a container.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>num_ticks_poc_diff_one</samp>’</dt>
|
||||
<dd><p>Set poc_proportional_to_timing_flag in VPS and VUI and use this value
|
||||
to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
|
||||
E.3.1). Ignored if ‘<samp>tick_rate</samp>’ is not also set.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>crop_left</samp>’</dt>
|
||||
<dt>‘<samp>crop_right</samp>’</dt>
|
||||
<dt>‘<samp>crop_top</samp>’</dt>
|
||||
<dt>‘<samp>crop_bottom</samp>’</dt>
|
||||
<dd><p>Set the conformance window cropping offsets in the SPS. These values
|
||||
will replace the current ones if the stream is already cropped.
|
||||
</p>
|
||||
<p>These fields are set in pixels. Note that some sizes may not be
|
||||
representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>level</samp>’</dt>
|
||||
<dd><p>Set the level in the VPS and SPS. See H.265 section A.4 and tables
|
||||
A.6 and A.7.
|
||||
</p>
|
||||
<p>The argument must be the name of a level (for example, ‘<samp>5.1</samp>’), a
|
||||
<em>general_level_idc</em> value (for example, ‘<samp>153</samp>’ for level 5.1),
|
||||
or the special name ‘<samp>auto</samp>’ indicating that the filter should
|
||||
attempt to guess the level from the input stream properties.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="hevc_005fmp4toannexb"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-hevc_005fmp4toannexb">2.14 hevc_mp4toannexb</a></h2>
|
||||
|
||||
<p>Convert an HEVC/H.265 bitstream from length prefixed mode to start code
|
||||
prefixed mode (as defined in the Annex B of the ITU-T H.265
|
||||
specification).
|
||||
</p>
|
||||
<p>This is required by some streaming formats, typically the MPEG-2
|
||||
transport stream format (muxer <code>mpegts</code>).
|
||||
</p>
|
||||
<p>For example to remux an MP4 file containing an HEVC stream to mpegts
|
||||
format with <code>ffmpeg</code>, you can use the command:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
|
||||
</pre></div>
|
||||
|
||||
<p>Please note that this filter is auto-inserted for MPEG-TS (muxer
|
||||
<code>mpegts</code>) and raw HEVC/H.265 (muxer <code>h265</code> or
|
||||
<code>hevc</code>) output formats.
|
||||
</p>
|
||||
<a name="imxdump"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-imxdump">2.15 imxdump</a></h2>
|
||||
|
||||
<p>Modifies the bitstream to fit in MOV and to be usable by the Final Cut
|
||||
Pro decoder. This filter only applies to the mpeg2video codec, and is
|
||||
likely not needed for Final Cut Pro 7 and newer with the appropriate
|
||||
‘<samp>-tag:v</samp>’.
|
||||
</p>
|
||||
<p>For example, to remux 30 MB/sec NTSC IMX to MOV:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
|
||||
</pre></div>
|
||||
|
||||
<a name="mjpeg2jpeg"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpeg2jpeg">2.16 mjpeg2jpeg</a></h2>
|
||||
|
||||
<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
|
||||
</p>
|
||||
<p>MJPEG is a video codec wherein each video frame is essentially a
|
||||
JPEG image. The individual frames can be extracted without loss,
|
||||
e.g. by
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
|
||||
</pre></div>
|
||||
|
||||
<p>Unfortunately, these chunks are incomplete JPEG images, because
|
||||
they lack the DHT segment required for decoding. Quoting from
|
||||
<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
|
||||
</p>
|
||||
<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
|
||||
commented that "MJPEG, or at least the MJPEG in AVIs having the
|
||||
MJPG fourcc, is restricted JPEG with a fixed – and *omitted* –
|
||||
Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
|
||||
and it must use basic Huffman encoding, not arithmetic or
|
||||
progressive. . . . You can indeed extract the MJPEG frames and
|
||||
decode them with a regular JPEG decoder, but you have to prepend
|
||||
the DHT segment to them, or else the decoder won’t have any idea
|
||||
how to decompress the data. The exact table necessary is given in
|
||||
the OpenDML spec."
|
||||
</p>
|
||||
<p>This bitstream filter patches the header of frames extracted from an MJPEG
|
||||
stream (carrying the AVI1 header ID and lacking a DHT segment) to
|
||||
produce fully qualified JPEG images.
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
|
||||
exiftran -i -9 frame*.jpg
|
||||
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
|
||||
</pre></div>
|
||||
|
||||
<a name="mjpegadump"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpegadump">2.17 mjpegadump</a></h2>
|
||||
|
||||
<p>Add an MJPEG A header to the bitstream, to enable decoding by
|
||||
Quicktime.
|
||||
</p>
|
||||
<p><a name="mov2textsub"></a>
|
||||
</p><a name="mov2textsub-1"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mov2textsub-1">2.18 mov2textsub</a></h2>
|
||||
|
||||
<p>Extract a representable text file from MOV subtitles, stripping the
|
||||
metadata header from each subtitle packet.
|
||||
</p>
|
||||
<p>See also the <a href="#text2movsub">text2movsub</a> filter.
|
||||
</p>
|
||||
<a name="mp3decomp"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mp3decomp">2.19 mp3decomp</a></h2>
|
||||
|
||||
<p>Decompress non-standard compressed MP3 audio headers.
|
||||
</p>
|
||||
<a name="mpeg2_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg2_005fmetadata">2.20 mpeg2_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in an MPEG-2 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>display_aspect_ratio</samp>’</dt>
|
||||
<dd><p>Set the display aspect ratio in the stream.
|
||||
</p>
|
||||
<p>The following fixed values are supported:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>4/3</samp>’</dt>
|
||||
<dt>‘<samp>16/9</samp>’</dt>
|
||||
<dt>‘<samp>221/100</samp>’</dt>
|
||||
</dl>
|
||||
<p>Any other value will result in square pixels being signalled instead
|
||||
(see H.262 section 6.3.3 and table 6-3).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>frame_rate</samp>’</dt>
|
||||
<dd><p>Set the frame rate in the stream. This is constructed from a table
|
||||
of known values combined with a small multiplier and divisor - if
|
||||
the supplied value is not exactly representable, the nearest
|
||||
representable value will be used instead (see H.262 section 6.3.3
|
||||
and table 6-4).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>video_format</samp>’</dt>
|
||||
<dd><p>Set the video format in the stream (see H.262 section 6.3.6 and
|
||||
table 6-6).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>colour_primaries</samp>’</dt>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the colour description in the stream (see H.262 section 6.3.6
|
||||
and tables 6-7, 6-8 and 6-9).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="mpeg4_005funpack_005fbframes"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mpeg4_005funpack_005fbframes">2.21 mpeg4_unpack_bframes</a></h2>
|
||||
|
||||
<p>Unpack DivX-style packed B-frames.
|
||||
</p>
|
||||
<p>DivX-style packed B-frames are not valid MPEG-4 and were only a
|
||||
workaround for the broken Video for Windows subsystem.
|
||||
They use more space, can cause minor AV sync issues, require more
|
||||
CPU power to decode (unless the player has some decoded picture queue
|
||||
to compensate the 2,0,2,0 frame per packet style) and cause
|
||||
trouble if copied into a standard container like mp4 or mpeg-ps/ts,
|
||||
because MPEG-4 decoders may not be able to decode them, since they are
|
||||
not valid MPEG-4.
|
||||
</p>
|
||||
<p>For example to fix an AVI file containing an MPEG-4 stream with
|
||||
DivX-style packed B-frames using <code>ffmpeg</code>, you can use the command:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
|
||||
</pre></div>
|
||||
|
||||
<a name="noise"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-noise">2.22 noise</a></h2>
|
||||
|
||||
<p>Damages the contents of packets or simply drops them without damaging the
|
||||
container. Can be used for fuzzing or testing error resilience/concealment.
|
||||
</p>
|
||||
<p>Parameters:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>amount</samp>’</dt>
|
||||
<dd><p>A numeral string, whose value is related to how often output bytes will
|
||||
be modified. Therefore, values below or equal to 0 are forbidden, and
|
||||
the lower the more frequent bytes will be modified, with 1 meaning
|
||||
every byte is modified.
|
||||
</p></dd>
|
||||
<dt>‘<samp>dropamount</samp>’</dt>
|
||||
<dd><p>A numeral string, whose value is related to how often packets will be dropped.
|
||||
Therefore, values below or equal to 0 are forbidden, and the lower the more
|
||||
frequent packets will be dropped, with 1 meaning every packet is dropped.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>The following example applies the modification to every byte but does not drop
|
||||
any packets.
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv
|
||||
</pre></div>
|
||||
|
||||
<a name="null"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-null">2.23 null</a></h2>
|
||||
<p>This bitstream filter passes the packets through unchanged.
|
||||
</p>
|
||||
<a name="pcm_005frechunk"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-pcm_005frechunk">2.24 pcm_rechunk</a></h2>
|
||||
|
||||
<p>Repacketize PCM audio to a fixed number of samples per packet or a fixed packet
|
||||
rate per second. This is similar to the <a href="ffmpeg-filters.html#asetnsamples">(ffmpeg-filters)asetnsamples audio filter</a> but works on audio packets instead of audio frames.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>nb_out_samples, n</samp>’</dt>
|
||||
<dd><p>Set the number of samples per each output audio packet. The number is intended
|
||||
as the number of samples <em>per each channel</em>. Default value is 1024.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>pad, p</samp>’</dt>
|
||||
<dd><p>If set to 1, the filter will pad the last audio packet with silence, so that it
|
||||
will contain the same number of samples (or roughly the same number of samples,
|
||||
see ‘<samp>frame_rate</samp>’) as the previous ones. Default value is 1.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>frame_rate, r</samp>’</dt>
|
||||
<dd><p>This option makes the filter output a fixed number of packets per second instead
|
||||
of a fixed number of samples per packet. If the audio sample rate is not
|
||||
divisible by the frame rate then the number of samples will not be constant but
|
||||
will vary slightly so that each packet will start as close to the frame
|
||||
boundary as possible. Using this option has precedence over ‘<samp>nb_out_samples</samp>’.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio
|
||||
for NTSC frame rate using the ‘<samp>frame_rate</samp>’ option.
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
|
||||
</pre></div>
|
||||
|
||||
<a name="prores_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-prores_005fmetadata">2.25 prores_metadata</a></h2>
|
||||
|
||||
<p>Modify color property metadata embedded in prores stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>color_primaries</samp>’</dt>
|
||||
<dd><p>Set the color primaries.
|
||||
Available values are:
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>auto</samp>’</dt>
|
||||
<dd><p>Keep the same color primaries property (default).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>unknown</samp>’</dt>
|
||||
<dt>‘<samp>bt709</samp>’</dt>
|
||||
<dt>‘<samp>bt470bg</samp>’</dt>
|
||||
<dd><p>BT601 625
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>smpte170m</samp>’</dt>
|
||||
<dd><p>BT601 525
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bt2020</samp>’</dt>
|
||||
<dt>‘<samp>smpte431</samp>’</dt>
|
||||
<dd><p>DCI P3
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>smpte432</samp>’</dt>
|
||||
<dd><p>P3 D65
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>transfer_characteristics</samp>’</dt>
|
||||
<dd><p>Set the color transfer.
|
||||
Available values are:
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>auto</samp>’</dt>
|
||||
<dd><p>Keep the same transfer characteristics property (default).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>unknown</samp>’</dt>
|
||||
<dt>‘<samp>bt709</samp>’</dt>
|
||||
<dd><p>BT 601, BT 709, BT 2020
|
||||
</p></dd>
|
||||
<dt>‘<samp>smpte2084</samp>’</dt>
|
||||
<dd><p>SMPTE ST 2084
|
||||
</p></dd>
|
||||
<dt>‘<samp>arib-std-b67</samp>’</dt>
|
||||
<dd><p>ARIB STD-B67
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>matrix_coefficients</samp>’</dt>
|
||||
<dd><p>Set the matrix coefficient.
|
||||
Available values are:
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>auto</samp>’</dt>
|
||||
<dd><p>Keep the same colorspace property (default).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>unknown</samp>’</dt>
|
||||
<dt>‘<samp>bt709</samp>’</dt>
|
||||
<dt>‘<samp>smpte170m</samp>’</dt>
|
||||
<dd><p>BT 601
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bt2020nc</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p>Set Rec709 colorspace for each frame of the file
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
|
||||
</pre></div>
|
||||
|
||||
<p>Set Hybrid Log-Gamma parameters for each frame of the file
|
||||
</p><div class="example">
|
||||
<pre class="example">ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
|
||||
</pre></div>
|
||||
|
||||
<a name="remove_005fextra"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-remove_005fextra">2.26 remove_extra</a></h2>
|
||||
|
||||
<p>Remove extradata from packets.
|
||||
</p>
|
||||
<p>It accepts the following parameter:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>freq</samp>’</dt>
|
||||
<dd><p>Set which frame types to remove extradata from.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>k</samp>’</dt>
|
||||
<dd><p>Remove extradata from non-keyframes only.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>keyframe</samp>’</dt>
|
||||
<dd><p>Remove extradata from keyframes only.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>e, all</samp>’</dt>
|
||||
<dd><p>Remove extradata from all frames.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p><a name="text2movsub"></a>
|
||||
</p><a name="text2movsub-1"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-text2movsub-1">2.27 text2movsub</a></h2>
|
||||
|
||||
<p>Convert text subtitles to MOV subtitles (as used by the <code>mov_text</code>
|
||||
codec) with metadata headers.
|
||||
</p>
|
||||
<p>See also the <a href="#mov2textsub">mov2textsub</a> filter.
|
||||
</p>
|
||||
<a name="trace_005fheaders"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-trace_005fheaders">2.28 trace_headers</a></h2>
|
||||
|
||||
<p>Log trace output containing all syntax elements in the coded stream
|
||||
headers (everything above the level of individual coded blocks).
|
||||
This can be useful for debugging low-level stream issues.
|
||||
</p>
|
||||
<p>Supports AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending
|
||||
on the build only a subset of these may be available.
|
||||
</p>
|
||||
<a name="truehd_005fcore"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-truehd_005fcore">2.29 truehd_core</a></h2>
|
||||
|
||||
<p>Extract the core from a TrueHD stream, dropping ATMOS data.
|
||||
</p>
|
||||
<a name="vp9_005fmetadata"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fmetadata">2.30 vp9_metadata</a></h2>
|
||||
|
||||
<p>Modify metadata embedded in a VP9 stream.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>color_space</samp>’</dt>
|
||||
<dd><p>Set the color space value in the frame header. Note that any frame
|
||||
set to RGB will be implicitly set to PC range and that RGB is
|
||||
incompatible with profiles 0 and 2.
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>unknown</samp>’</dt>
|
||||
<dt>‘<samp>bt601</samp>’</dt>
|
||||
<dt>‘<samp>bt709</samp>’</dt>
|
||||
<dt>‘<samp>smpte170</samp>’</dt>
|
||||
<dt>‘<samp>smpte240</samp>’</dt>
|
||||
<dt>‘<samp>bt2020</samp>’</dt>
|
||||
<dt>‘<samp>rgb</samp>’</dt>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>color_range</samp>’</dt>
|
||||
<dd><p>Set the color range value in the frame header. Note that any value
|
||||
imposed by the color space will take precedence over this value.
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>tv</samp>’</dt>
|
||||
<dt>‘<samp>pc</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="vp9_005fsuperframe"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe">2.31 vp9_superframe</a></h2>
|
||||
|
||||
<p>Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This
|
||||
fixes merging of split/segmented VP9 streams where the alt-ref frame
|
||||
was split from its visible counterpart.
|
||||
</p>
|
||||
<a name="vp9_005fsuperframe_005fsplit"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fsuperframe_005fsplit">2.32 vp9_superframe_split</a></h2>
|
||||
|
||||
<p>Split VP9 superframes into single frames.
|
||||
</p>
|
||||
<a name="vp9_005fraw_005freorder"></a>
|
||||
<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-vp9_005fraw_005freorder">2.33 vp9_raw_reorder</a></h2>
|
||||
|
||||
<p>Given a VP9 stream with correct timestamps but possibly out of order,
|
||||
insert additional show-existing-frame packets to correct the ordering.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-See-Also">3 See Also</a></h1>
|
||||
|
||||
<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>,
|
||||
<a href="libavcodec.html">libavcodec</a>
|
||||
</p>
|
||||
|
||||
<a name="Authors"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Authors">4 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
6387
ffmpeg/doc/ffmpeg-codecs.html
Normal file
6387
ffmpeg/doc/ffmpeg-codecs.html
Normal file
File diff suppressed because it is too large
Load Diff
2525
ffmpeg/doc/ffmpeg-devices.html
Normal file
2525
ffmpeg/doc/ffmpeg-devices.html
Normal file
File diff suppressed because it is too large
Load Diff
31073
ffmpeg/doc/ffmpeg-filters.html
Normal file
31073
ffmpeg/doc/ffmpeg-filters.html
Normal file
File diff suppressed because it is too large
Load Diff
4457
ffmpeg/doc/ffmpeg-formats.html
Normal file
4457
ffmpeg/doc/ffmpeg-formats.html
Normal file
File diff suppressed because it is too large
Load Diff
2266
ffmpeg/doc/ffmpeg-protocols.html
Normal file
2266
ffmpeg/doc/ffmpeg-protocols.html
Normal file
File diff suppressed because it is too large
Load Diff
372
ffmpeg/doc/ffmpeg-resampler.html
Normal file
372
ffmpeg/doc/ffmpeg-resampler.html
Normal file
@ -0,0 +1,372 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Resampler Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Resampler ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Resampler Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Resampler-Options" href="#Resampler-Options">2 Resampler Options</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Resampler-Options">2 Resampler Options</a></h1>
|
||||
|
||||
<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 ‘<tt>libavutil/opt.h</tt>’ API for
|
||||
programmatic use.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>ich, in_channel_count</samp>’</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>‘<samp>och, out_channel_count</samp>’</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>‘<samp>uch, used_channel_count</samp>’</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>‘<samp>isr, in_sample_rate</samp>’</dt>
|
||||
<dd><p>Set the input sample rate. Default value is 0.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>osr, out_sample_rate</samp>’</dt>
|
||||
<dd><p>Set the output sample rate. Default value is 0.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>isf, in_sample_fmt</samp>’</dt>
|
||||
<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>osf, out_sample_fmt</samp>’</dt>
|
||||
<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>tsf, internal_sample_fmt</samp>’</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>‘<samp>icl, in_channel_layout</samp>’</dt>
|
||||
<dt>‘<samp>ocl, out_channel_layout</samp>’</dt>
|
||||
<dd><p>Set the input/output channel layout.
|
||||
</p>
|
||||
<p>See <a 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>‘<samp>clev, center_mix_level</samp>’</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>‘<samp>slev, surround_mix_level</samp>’</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>‘<samp>lfe_mix_level</samp>’</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>‘<samp>rmvol, rematrix_volume</samp>’</dt>
|
||||
<dd><p>Set rematrix volume. Default value is 1.0.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>rematrix_maxval</samp>’</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>‘<samp>flags, swr_flags</samp>’</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>‘<samp>res</samp>’</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>‘<samp>dither_scale</samp>’</dt>
|
||||
<dd><p>Set the dither scale. Default value is 1.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>dither_method</samp>’</dt>
|
||||
<dd><p>Set dither method. Default value is 0.
|
||||
</p>
|
||||
<p>Supported values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>rectangular</samp>’</dt>
|
||||
<dd><p>select rectangular dither
|
||||
</p></dd>
|
||||
<dt>‘<samp>triangular</samp>’</dt>
|
||||
<dd><p>select triangular dither
|
||||
</p></dd>
|
||||
<dt>‘<samp>triangular_hp</samp>’</dt>
|
||||
<dd><p>select triangular dither with high pass
|
||||
</p></dd>
|
||||
<dt>‘<samp>lipshitz</samp>’</dt>
|
||||
<dd><p>select Lipshitz noise shaping dither.
|
||||
</p></dd>
|
||||
<dt>‘<samp>shibata</samp>’</dt>
|
||||
<dd><p>select Shibata noise shaping dither.
|
||||
</p></dd>
|
||||
<dt>‘<samp>low_shibata</samp>’</dt>
|
||||
<dd><p>select low Shibata noise shaping dither.
|
||||
</p></dd>
|
||||
<dt>‘<samp>high_shibata</samp>’</dt>
|
||||
<dd><p>select high Shibata noise shaping dither.
|
||||
</p></dd>
|
||||
<dt>‘<samp>f_weighted</samp>’</dt>
|
||||
<dd><p>select f-weighted noise shaping dither
|
||||
</p></dd>
|
||||
<dt>‘<samp>modified_e_weighted</samp>’</dt>
|
||||
<dd><p>select modified-e-weighted noise shaping dither
|
||||
</p></dd>
|
||||
<dt>‘<samp>improved_e_weighted</samp>’</dt>
|
||||
<dd><p>select improved-e-weighted noise shaping dither
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>resampler</samp>’</dt>
|
||||
<dd><p>Set resampling engine. Default value is swr.
|
||||
</p>
|
||||
<p>Supported values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>swr</samp>’</dt>
|
||||
<dd><p>select the native SW Resampler; filter options precision and cheby are not
|
||||
applicable in this case.
|
||||
</p></dd>
|
||||
<dt>‘<samp>soxr</samp>’</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>‘<samp>filter_size</samp>’</dt>
|
||||
<dd><p>For swr only, set resampling filter size, default value is 32.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>phase_shift</samp>’</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>‘<samp>linear_interp</samp>’</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>‘<samp>exact_rational</samp>’</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>‘<samp>cutoff</samp>’</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>‘<samp>precision</samp>’</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>‘<samp>cheby</samp>’</dt>
|
||||
<dd><p>For soxr only, selects passband rolloff none (Chebyshev) & higher-precision
|
||||
approximation for ’irrational’ ratios. Default value is 0.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>async</samp>’</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>‘<samp>first_pts</samp>’</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>‘<samp>min_comp</samp>’</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>‘<samp>min_hard_comp</samp>’</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>‘<samp>comp_duration</samp>’</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>‘<samp>max_soft_comp</samp>’</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>‘<samp>matrix_encoding</samp>’</dt>
|
||||
<dd><p>Select matrixed stereo encoding.
|
||||
</p>
|
||||
<p>It accepts the following values:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>none</samp>’</dt>
|
||||
<dd><p>select none
|
||||
</p></dd>
|
||||
<dt>‘<samp>dolby</samp>’</dt>
|
||||
<dd><p>select Dolby
|
||||
</p></dd>
|
||||
<dt>‘<samp>dplii</samp>’</dt>
|
||||
<dd><p>select Dolby Pro Logic II
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<p>Default value is <code>none</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>filter_type</samp>’</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>‘<samp>cubic</samp>’</dt>
|
||||
<dd><p>select cubic
|
||||
</p></dd>
|
||||
<dt>‘<samp>blackman_nuttall</samp>’</dt>
|
||||
<dd><p>select Blackman Nuttall windowed sinc
|
||||
</p></dd>
|
||||
<dt>‘<samp>kaiser</samp>’</dt>
|
||||
<dd><p>select Kaiser windowed sinc
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>kaiser_beta</samp>’</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>‘<samp>output_sample_bits</samp>’</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>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-See-Also">3 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Authors">4 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
267
ffmpeg/doc/ffmpeg-scaler.html
Normal file
267
ffmpeg/doc/ffmpeg-scaler.html
Normal file
@ -0,0 +1,267 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Scaler Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Scaler ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Scaler Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Scaler-Options" href="#Scaler-Options">2 Scaler Options</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">3 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">4 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
|
||||
<p><a name="scaler_005foptions"></a>
|
||||
</p><a name="Scaler-Options"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Scaler-Options">2 Scaler Options</a></h1>
|
||||
|
||||
<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 ‘<tt>libavutil/opt.h</tt>’ API.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dd>
|
||||
<p><a name="sws_005fflags"></a>
|
||||
</p></dd>
|
||||
<dt>‘<samp>sws_flags</samp>’</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>‘<samp>fast_bilinear</samp>’</dt>
|
||||
<dd><p>Select fast bilinear scaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bilinear</samp>’</dt>
|
||||
<dd><p>Select bilinear scaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bicubic</samp>’</dt>
|
||||
<dd><p>Select bicubic scaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>experimental</samp>’</dt>
|
||||
<dd><p>Select experimental scaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>neighbor</samp>’</dt>
|
||||
<dd><p>Select nearest neighbor rescaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>area</samp>’</dt>
|
||||
<dd><p>Select averaging area rescaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bicublin</samp>’</dt>
|
||||
<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
|
||||
chroma components.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>gauss</samp>’</dt>
|
||||
<dd><p>Select Gaussian rescaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>sinc</samp>’</dt>
|
||||
<dd><p>Select sinc rescaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>lanczos</samp>’</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>‘<samp>spline</samp>’</dt>
|
||||
<dd><p>Select natural bicubic spline rescaling algorithm.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>print_info</samp>’</dt>
|
||||
<dd><p>Enable printing/debug logging.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>accurate_rnd</samp>’</dt>
|
||||
<dd><p>Enable accurate rounding.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>full_chroma_int</samp>’</dt>
|
||||
<dd><p>Enable full chroma interpolation.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>full_chroma_inp</samp>’</dt>
|
||||
<dd><p>Select full chroma input.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bitexact</samp>’</dt>
|
||||
<dd><p>Enable bitexact output.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>srcw <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set source width.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>srch <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set source height.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>dstw <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set destination width.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>dsth <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set destination height.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>src_format <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set source pixel format (must be expressed as an integer).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>dst_format <var>(API only)</var></samp>’</dt>
|
||||
<dd><p>Set destination pixel format (must be expressed as an integer).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>src_range <var>(boolean)</var></samp>’</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>‘<samp>dst_range <var>(boolean)</var></samp>’</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>
|
||||
<p><a name="sws_005fparams"></a>
|
||||
</p></dd>
|
||||
<dt>‘<samp>param0, param1</samp>’</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>‘<samp>sws_dither</samp>’</dt>
|
||||
<dd><p>Set the dithering algorithm. Accepts one of the following
|
||||
values. Default value is ‘<samp>auto</samp>’.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>auto</samp>’</dt>
|
||||
<dd><p>automatic choice
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>none</samp>’</dt>
|
||||
<dd><p>no dithering
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>bayer</samp>’</dt>
|
||||
<dd><p>bayer dither
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>ed</samp>’</dt>
|
||||
<dd><p>error diffusion dither
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>a_dither</samp>’</dt>
|
||||
<dd><p>arithmetic dither, based using addition
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>x_dither</samp>’</dt>
|
||||
<dd><p>arithmetic dither, based using xor (more random/less apparent patterning that
|
||||
a_dither).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
<dt>‘<samp>alphablend</samp>’</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>‘<samp>uniform_color</samp>’</dt>
|
||||
<dd><p>Blend onto a uniform background color
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>checkerboard</samp>’</dt>
|
||||
<dd><p>Blend onto a checkerboard
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>none</samp>’</dt>
|
||||
<dd><p>No blending
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-See-Also">3 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Authors">4 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
1514
ffmpeg/doc/ffmpeg-utils.html
Normal file
1514
ffmpeg/doc/ffmpeg-utils.html
Normal file
File diff suppressed because it is too large
Load Diff
2767
ffmpeg/doc/ffmpeg.html
Normal file
2767
ffmpeg/doc/ffmpeg.html
Normal file
File diff suppressed because it is too large
Load Diff
42074
ffmpeg/doc/ffplay-all.html
Normal file
42074
ffmpeg/doc/ffplay-all.html
Normal file
File diff suppressed because it is too large
Load Diff
865
ffmpeg/doc/ffplay.html
Normal file
865
ffmpeg/doc/ffplay.html
Normal file
@ -0,0 +1,865 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="ffplay Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : ffplay ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">ffplay Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Synopsis" href="#Synopsis">1 Synopsis</a></li>
|
||||
<li><a name="toc-Description" href="#Description">2 Description</a></li>
|
||||
<li><a name="toc-Options" href="#Options">3 Options</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
|
||||
<li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
|
||||
<li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
|
||||
<li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
|
||||
<li><a name="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
|
||||
<li><a name="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">4 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">5 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Synopsis"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Synopsis">1 Synopsis</a></h1>
|
||||
|
||||
<p>ffplay [<var>options</var>] [‘<tt>input_url</tt>’]
|
||||
</p>
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Description">2 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Options">3 Options</a></h1>
|
||||
|
||||
<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>
|
||||
<p><a name="Stream-specifiers"></a>
|
||||
</p><a name="Stream-specifiers-1"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Stream-specifiers-1">3.1 Stream specifiers</a></h2>
|
||||
<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>‘<samp><var>stream_index</var></samp>’</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>‘<samp><var>stream_type</var>[:<var>additional_stream_specifier</var>]</samp>’</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>‘<samp>p:<var>program_id</var>[:<var>additional_stream_specifier</var>]</samp>’</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>‘<samp>#<var>stream_id</var> or i:<var>stream_id</var></samp>’</dt>
|
||||
<dd><p>Match the stream by stream id (e.g. PID in MPEG-TS container).
|
||||
</p></dd>
|
||||
<dt>‘<samp>m:<var>key</var>[:<var>value</var>]</samp>’</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>‘<samp>u</samp>’</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>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Generic-options">3.2 Generic options</a></h2>
|
||||
|
||||
<p>These options are shared amongst the ff* tools.
|
||||
</p>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>-L</samp>’</dt>
|
||||
<dd><p>Show license.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-h, -?, -help, --help [<var>arg</var>]</samp>’</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>‘<samp>long</samp>’</dt>
|
||||
<dd><p>Print advanced tool options in addition to the basic tool options.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>full</samp>’</dt>
|
||||
<dd><p>Print complete list of options, including shared and private options
|
||||
for encoders, decoders, demuxers, muxers, filters, etc.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>decoder=<var>decoder_name</var></samp>’</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>‘<samp>encoder=<var>encoder_name</var></samp>’</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>‘<samp>demuxer=<var>demuxer_name</var></samp>’</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>‘<samp>muxer=<var>muxer_name</var></samp>’</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>‘<samp>filter=<var>filter_name</var></samp>’</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>‘<samp>bsf=<var>bitstream_filter_name</var></samp>’</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>‘<samp>protocol=<var>protocol_name</var></samp>’</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>‘<samp>-version</samp>’</dt>
|
||||
<dd><p>Show version.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-formats</samp>’</dt>
|
||||
<dd><p>Show available formats (including devices).
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-demuxers</samp>’</dt>
|
||||
<dd><p>Show available demuxers.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-muxers</samp>’</dt>
|
||||
<dd><p>Show available muxers.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-devices</samp>’</dt>
|
||||
<dd><p>Show available devices.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-codecs</samp>’</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>‘<samp>-decoders</samp>’</dt>
|
||||
<dd><p>Show available decoders.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-encoders</samp>’</dt>
|
||||
<dd><p>Show all available encoders.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-bsfs</samp>’</dt>
|
||||
<dd><p>Show available bitstream filters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-protocols</samp>’</dt>
|
||||
<dd><p>Show available protocols.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-filters</samp>’</dt>
|
||||
<dd><p>Show available libavfilter filters.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-pix_fmts</samp>’</dt>
|
||||
<dd><p>Show available pixel formats.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-sample_fmts</samp>’</dt>
|
||||
<dd><p>Show available sample formats.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-layouts</samp>’</dt>
|
||||
<dd><p>Show channel names and standard channel layouts.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-colors</samp>’</dt>
|
||||
<dd><p>Show recognized color names.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-sources <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp>’</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>‘<samp>-sinks <var>device</var>[,<var>opt1</var>=<var>val1</var>[,<var>opt2</var>=<var>val2</var>]...]</samp>’</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>‘<samp>-loglevel [<var>flags</var>+]<var>loglevel</var> | -v [<var>flags</var>+]<var>loglevel</var></samp>’</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>‘<samp>repeat</samp>’</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>‘<samp>level</samp>’</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>‘<samp>quiet, -8</samp>’</dt>
|
||||
<dd><p>Show nothing at all; be silent.
|
||||
</p></dd>
|
||||
<dt>‘<samp>panic, 0</samp>’</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>‘<samp>fatal, 8</samp>’</dt>
|
||||
<dd><p>Only show fatal errors. These are errors after which the process absolutely
|
||||
cannot continue.
|
||||
</p></dd>
|
||||
<dt>‘<samp>error, 16</samp>’</dt>
|
||||
<dd><p>Show all errors, including ones which can be recovered from.
|
||||
</p></dd>
|
||||
<dt>‘<samp>warning, 24</samp>’</dt>
|
||||
<dd><p>Show all warnings and errors. Any message related to possibly
|
||||
incorrect or unexpected events will be shown.
|
||||
</p></dd>
|
||||
<dt>‘<samp>info, 32</samp>’</dt>
|
||||
<dd><p>Show informative messages during processing. This is in addition to
|
||||
warnings and errors. This is the default value.
|
||||
</p></dd>
|
||||
<dt>‘<samp>verbose, 40</samp>’</dt>
|
||||
<dd><p>Same as <code>info</code>, except more verbose.
|
||||
</p></dd>
|
||||
<dt>‘<samp>debug, 48</samp>’</dt>
|
||||
<dd><p>Show everything, including debugging information.
|
||||
</p></dd>
|
||||
<dt>‘<samp>trace, 56</samp>’</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>‘<samp>-report</samp>’</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>‘<samp>file</samp>’</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>‘<samp>level</samp>’</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 ‘<tt>ffreport.log</tt>’
|
||||
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>‘<samp>-hide_banner</samp>’</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>‘<samp>-cpuflags flags (<em>global</em>)</samp>’</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>‘<samp>x86</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>mmx</samp>’</dt>
|
||||
<dt>‘<samp>mmxext</samp>’</dt>
|
||||
<dt>‘<samp>sse</samp>’</dt>
|
||||
<dt>‘<samp>sse2</samp>’</dt>
|
||||
<dt>‘<samp>sse2slow</samp>’</dt>
|
||||
<dt>‘<samp>sse3</samp>’</dt>
|
||||
<dt>‘<samp>sse3slow</samp>’</dt>
|
||||
<dt>‘<samp>ssse3</samp>’</dt>
|
||||
<dt>‘<samp>atom</samp>’</dt>
|
||||
<dt>‘<samp>sse4.1</samp>’</dt>
|
||||
<dt>‘<samp>sse4.2</samp>’</dt>
|
||||
<dt>‘<samp>avx</samp>’</dt>
|
||||
<dt>‘<samp>avx2</samp>’</dt>
|
||||
<dt>‘<samp>xop</samp>’</dt>
|
||||
<dt>‘<samp>fma3</samp>’</dt>
|
||||
<dt>‘<samp>fma4</samp>’</dt>
|
||||
<dt>‘<samp>3dnow</samp>’</dt>
|
||||
<dt>‘<samp>3dnowext</samp>’</dt>
|
||||
<dt>‘<samp>bmi1</samp>’</dt>
|
||||
<dt>‘<samp>bmi2</samp>’</dt>
|
||||
<dt>‘<samp>cmov</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt>‘<samp>ARM</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>armv5te</samp>’</dt>
|
||||
<dt>‘<samp>armv6</samp>’</dt>
|
||||
<dt>‘<samp>armv6t2</samp>’</dt>
|
||||
<dt>‘<samp>vfp</samp>’</dt>
|
||||
<dt>‘<samp>vfpv3</samp>’</dt>
|
||||
<dt>‘<samp>neon</samp>’</dt>
|
||||
<dt>‘<samp>setend</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt>‘<samp>AArch64</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>armv8</samp>’</dt>
|
||||
<dt>‘<samp>vfp</samp>’</dt>
|
||||
<dt>‘<samp>neon</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt>‘<samp>PowerPC</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>altivec</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt>‘<samp>Specific Processors</samp>’</dt>
|
||||
<dd><dl compact="compact">
|
||||
<dt>‘<samp>pentium2</samp>’</dt>
|
||||
<dt>‘<samp>pentium3</samp>’</dt>
|
||||
<dt>‘<samp>pentium4</samp>’</dt>
|
||||
<dt>‘<samp>k6</samp>’</dt>
|
||||
<dt>‘<samp>k62</samp>’</dt>
|
||||
<dt>‘<samp>athlon</samp>’</dt>
|
||||
<dt>‘<samp>athlonxp</samp>’</dt>
|
||||
<dt>‘<samp>k8</samp>’</dt>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<a name="AVOptions"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-AVOptions">3.3 AVOptions</a></h2>
|
||||
|
||||
<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>‘<samp>generic</samp>’</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>‘<samp>private</samp>’</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>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Main-options">3.4 Main options</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>-x <var>width</var></samp>’</dt>
|
||||
<dd><p>Force displayed width.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-y <var>height</var></samp>’</dt>
|
||||
<dd><p>Force displayed height.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-s <var>size</var></samp>’</dt>
|
||||
<dd><p>Set frame size (WxH or abbreviation), needed for videos which do
|
||||
not contain a header with the frame size like raw YUV. This option
|
||||
has been deprecated in favor of private options, try -video_size.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-fs</samp>’</dt>
|
||||
<dd><p>Start in fullscreen mode.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-an</samp>’</dt>
|
||||
<dd><p>Disable audio.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-vn</samp>’</dt>
|
||||
<dd><p>Disable video.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-sn</samp>’</dt>
|
||||
<dd><p>Disable subtitles.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-ss <var>pos</var></samp>’</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 href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-t <var>duration</var></samp>’</dt>
|
||||
<dd><p>Play <var>duration</var> seconds of audio/video.
|
||||
</p>
|
||||
<p><var>duration</var> must be a time duration specification,
|
||||
see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)the Time duration section in the ffmpeg-utils(1) manual</a>.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-bytes</samp>’</dt>
|
||||
<dd><p>Seek by bytes.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-seek_interval</samp>’</dt>
|
||||
<dd><p>Set custom interval, in seconds, for seeking using left/right keys. Default is 10 seconds.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-nodisp</samp>’</dt>
|
||||
<dd><p>Disable graphical display.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-noborder</samp>’</dt>
|
||||
<dd><p>Borderless window.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-alwaysontop</samp>’</dt>
|
||||
<dd><p>Window always on top. Available on: X11 with SDL >= 2.0.5, Windows SDL >= 2.0.6.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-volume</samp>’</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>‘<samp>-f <var>fmt</var></samp>’</dt>
|
||||
<dd><p>Force format.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-window_title <var>title</var></samp>’</dt>
|
||||
<dd><p>Set window title (default is the input filename).
|
||||
</p></dd>
|
||||
<dt>‘<samp>-left <var>title</var></samp>’</dt>
|
||||
<dd><p>Set the x position for the left of the window (default is a centered window).
|
||||
</p></dd>
|
||||
<dt>‘<samp>-top <var>title</var></samp>’</dt>
|
||||
<dd><p>Set the y position for the top of the window (default is a centered window).
|
||||
</p></dd>
|
||||
<dt>‘<samp>-loop <var>number</var></samp>’</dt>
|
||||
<dd><p>Loops movie playback <number> times. 0 means forever.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-showmode <var>mode</var></samp>’</dt>
|
||||
<dd><p>Set the show mode to use.
|
||||
Available values for <var>mode</var> are:
|
||||
</p><dl compact="compact">
|
||||
<dt>‘<samp>0, video</samp>’</dt>
|
||||
<dd><p>show video
|
||||
</p></dd>
|
||||
<dt>‘<samp>1, waves</samp>’</dt>
|
||||
<dd><p>show audio waves
|
||||
</p></dd>
|
||||
<dt>‘<samp>2, rdft</samp>’</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 <w>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-vf <var>filtergraph</var></samp>’</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 <w>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-af <var>filtergraph</var></samp>’</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>‘<samp>-i <var>input_url</var></samp>’</dt>
|
||||
<dd><p>Read <var>input_url</var>.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
<a name="Advanced-options"></a>
|
||||
<h2 class="section"><a href="ffplay.html#toc-Advanced-options">3.5 Advanced options</a></h2>
|
||||
<dl compact="compact">
|
||||
<dt>‘<samp>-pix_fmt <var>format</var></samp>’</dt>
|
||||
<dd><p>Set pixel format.
|
||||
This option has been deprecated in favor of private options, try -pixel_format.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-stats</samp>’</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>‘<samp>-fast</samp>’</dt>
|
||||
<dd><p>Non-spec-compliant optimizations.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-genpts</samp>’</dt>
|
||||
<dd><p>Generate pts.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-sync <var>type</var></samp>’</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>‘<samp>-ast <var>audio_stream_specifier</var></samp>’</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>‘<samp>-vst <var>video_stream_specifier</var></samp>’</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>‘<samp>-sst <var>subtitle_stream_specifier</var></samp>’</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>‘<samp>-autoexit</samp>’</dt>
|
||||
<dd><p>Exit when video is done playing.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-exitonkeydown</samp>’</dt>
|
||||
<dd><p>Exit if any key is pressed.
|
||||
</p></dd>
|
||||
<dt>‘<samp>-exitonmousedown</samp>’</dt>
|
||||
<dd><p>Exit if any mouse button is pressed.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-codec:<var>media_specifier</var> <var>codec_name</var></samp>’</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>‘<samp>-acodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific audio decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-vcodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific video decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-scodec <var>codec_name</var></samp>’</dt>
|
||||
<dd><p>Force a specific subtitle decoder.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-autorotate</samp>’</dt>
|
||||
<dd><p>Automatically rotate the video according to file metadata. Enabled by
|
||||
default, use ‘<samp>-noautorotate</samp>’ to disable it.
|
||||
</p>
|
||||
</dd>
|
||||
<dt>‘<samp>-framedrop</samp>’</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>‘<samp>-infbuf</samp>’</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>‘<samp>-filter_threads <var>nb_threads</var></samp>’</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>
|
||||
<h2 class="section"><a href="ffplay.html#toc-While-playing">3.6 While playing</a></h2>
|
||||
|
||||
<dl compact="compact">
|
||||
<dt><q, ESC></dt>
|
||||
<dd><p>Quit.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><f></dt>
|
||||
<dd><p>Toggle full screen.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><p, SPC></dt>
|
||||
<dd><p>Pause.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><m></dt>
|
||||
<dd><p>Toggle mute.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><9, 0></dt>
|
||||
<dd><p>Decrease and increase volume respectively.
|
||||
</p>
|
||||
</dd>
|
||||
<dt></, *></dt>
|
||||
<dd><p>Decrease and increase volume respectively.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><a></dt>
|
||||
<dd><p>Cycle audio channel in the current program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><v></dt>
|
||||
<dd><p>Cycle video channel.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><t></dt>
|
||||
<dd><p>Cycle subtitle channel in the current program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><c></dt>
|
||||
<dd><p>Cycle program.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><w></dt>
|
||||
<dd><p>Cycle video filters or show modes.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><s></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><left/right></dt>
|
||||
<dd><p>Seek backward/forward 10 seconds.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><down/up></dt>
|
||||
<dd><p>Seek backward/forward 1 minute.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><page down/page up></dt>
|
||||
<dd><p>Seek to the previous/next chapter.
|
||||
or if there are no chapters
|
||||
Seek backward/forward 10 minutes.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><right mouse click></dt>
|
||||
<dd><p>Seek to percentage in file corresponding to fraction of width.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><left mouse double-click></dt>
|
||||
<dd><p>Toggle full screen.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-See-Also">4 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="ffplay.html#toc-Authors">5 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
42413
ffmpeg/doc/ffprobe-all.html
Normal file
42413
ffmpeg/doc/ffprobe-all.html
Normal file
File diff suppressed because it is too large
Load Diff
1204
ffmpeg/doc/ffprobe.html
Normal file
1204
ffmpeg/doc/ffprobe.html
Normal file
File diff suppressed because it is too large
Load Diff
1285
ffmpeg/doc/general.html
Normal file
1285
ffmpeg/doc/general.html
Normal file
File diff suppressed because it is too large
Load Diff
519
ffmpeg/doc/git-howto.html
Normal file
519
ffmpeg/doc/git-howto.html
Normal file
@ -0,0 +1,519 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Using Git to develop FFmpeg: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Using Git to develop FFmpeg: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Using Git to develop FFmpeg</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Introduction" href="#Introduction">1 Introduction</a></li>
|
||||
<li><a name="toc-Basics-Usage" href="#Basics-Usage">2 Basics Usage</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Get-Git" href="#Get-Git">2.1 Get Git</a></li>
|
||||
<li><a name="toc-Cloning-the-source-tree" href="#Cloning-the-source-tree">2.2 Cloning the source tree</a></li>
|
||||
<li><a name="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 name="toc-Rebasing-your-local-branches" href="#Rebasing-your-local-branches">2.4 Rebasing your local branches</a></li>
|
||||
<li><a name="toc-Adding_002fremoving-files_002fdirectories" href="#Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></li>
|
||||
<li><a name="toc-Showing-modifications" href="#Showing-modifications">2.6 Showing modifications</a></li>
|
||||
<li><a name="toc-Inspecting-the-changelog" href="#Inspecting-the-changelog">2.7 Inspecting the changelog</a></li>
|
||||
<li><a name="toc-Checking-source-tree-status" href="#Checking-source-tree-status">2.8 Checking source tree status</a></li>
|
||||
<li><a name="toc-Committing" href="#Committing">2.9 Committing</a></li>
|
||||
<li><a name="toc-Preparing-a-patchset" href="#Preparing-a-patchset">2.10 Preparing a patchset</a></li>
|
||||
<li><a name="toc-Sending-patches-for-review" href="#Sending-patches-for-review">2.11 Sending patches for review</a></li>
|
||||
<li><a name="toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Git-configuration" href="#Git-configuration">3 Git configuration</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Personal-Git-installation" href="#Personal-Git-installation">3.1 Personal Git installation</a></li>
|
||||
<li><a name="toc-Repository-configuration" href="#Repository-configuration">3.2 Repository configuration</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-FFmpeg-specific" href="#FFmpeg-specific">4 FFmpeg specific</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Reverting-broken-commits" href="#Reverting-broken-commits">4.1 Reverting broken commits</a></li>
|
||||
<li><a name="toc-Pushing-changes-to-remote-trees" href="#Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></li>
|
||||
<li><a name="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 name="toc-Pre_002dpush-checklist" href="#Pre_002dpush-checklist">5 Pre-push checklist</a></li>
|
||||
<li><a name="toc-Server-Issues" href="#Server-Issues">6 Server Issues</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Introduction"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Introduction">1 Introduction</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Basics-Usage">2 Basics Usage</a></h1>
|
||||
|
||||
<a name="Get-Git"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Get-Git">2.1 Get Git</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Cloning-the-source-tree">2.2 Cloning the source tree</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
<p><a name="Updating-the-source-tree-to-the-latest-revision"></a>
|
||||
</p><a name="Updating-the-source-tree-to-the-latest-revision-1"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Updating-the-source-tree-to-the-latest-revision-1">2.3 Updating the source tree to the latest revision</a></h2>
|
||||
|
||||
<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="float alert alert-warning">
|
||||
<p><code>--rebase</code> (see below) is recommended.
|
||||
</p></div>
|
||||
<a name="Rebasing-your-local-branches"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Rebasing-your-local-branches">2.4 Rebasing your local branches</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Showing-modifications">2.6 Showing modifications</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Inspecting-the-changelog">2.7 Inspecting the changelog</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Checking-source-tree-status">2.8 Checking source tree status</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Committing">2.9 Committing</a></h2>
|
||||
|
||||
<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 and email address
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">git config --global user.name "My Name"
|
||||
git config --global user.email my@email.invalid
|
||||
</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>
|
||||
<p>Log messages should be concise but descriptive. 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, Git provides that information.
|
||||
</p>
|
||||
<p>Possibly make the commit message have a terse, descriptive first line, an
|
||||
empty line and then a full description. The first line will be used to name
|
||||
the patch by <code>git format-patch</code>.
|
||||
</p>
|
||||
<a name="Preparing-a-patchset"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Preparing-a-patchset">2.10 Preparing a patchset</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Sending-patches-for-review">2.11 Sending patches for review</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Git-configuration">3 Git configuration</a></h1>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Personal-Git-installation">3.1 Personal Git installation</a></h2>
|
||||
|
||||
<p>Add the following to your ‘<tt>~/.gitconfig</tt>’ 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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Repository-configuration">3.2 Repository configuration</a></h2>
|
||||
|
||||
<p>In order to have <code>git send-email</code> automatically send patches
|
||||
to the ffmpeg-devel mailing list, add the following stanza
|
||||
to ‘<tt>/path/to/ffmpeg/repository/.git/config</tt>’:
|
||||
</p>
|
||||
<div class="example">
|
||||
<pre class="example">[sendemail]
|
||||
to = ffmpeg-devel@ffmpeg.org
|
||||
</pre></div>
|
||||
|
||||
<a name="FFmpeg-specific"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-FFmpeg-specific">4 FFmpeg specific</a></h1>
|
||||
|
||||
<a name="Reverting-broken-commits"></a>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Reverting-broken-commits">4.1 Reverting broken commits</a></h2>
|
||||
|
||||
<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="float alert alert-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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="git-howto.html#toc-Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></h2>
|
||||
|
||||
<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="Pre_002dpush-checklist"></a>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Pre_002dpush-checklist">5 Pre-push checklist</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="git-howto.html#toc-Server-Issues">6 Server Issues</a></h1>
|
||||
|
||||
<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> </div>
|
||||
</body>
|
||||
</html>
|
||||
|
84
ffmpeg/doc/libavcodec.html
Normal file
84
ffmpeg/doc/libavcodec.html
Normal file
@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavcodec Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavcodec ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavcodec Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavcodec.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
81
ffmpeg/doc/libavdevice.html
Normal file
81
ffmpeg/doc/libavdevice.html
Normal file
@ -0,0 +1,81 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavdevice Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavdevice ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavdevice Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavdevice.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
80
ffmpeg/doc/libavfilter.html
Normal file
80
ffmpeg/doc/libavfilter.html
Normal file
@ -0,0 +1,80 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavfilter Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavfilter ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavfilter Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<p>The libavfilter library provides a generic audio/video filtering
|
||||
framework containing several filters, sources and sinks.
|
||||
</p>
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavfilter.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
84
ffmpeg/doc/libavformat.html
Normal file
84
ffmpeg/doc/libavformat.html
Normal file
@ -0,0 +1,84 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavformat Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavformat ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavformat Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavformat.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
103
ffmpeg/doc/libavutil.html
Normal file
103
ffmpeg/doc/libavutil.html
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libavutil Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libavutil ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libavutil Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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><strong>Modular</strong></dt>
|
||||
<dd><p>It should have few interdependencies and the possibility of disabling individual
|
||||
parts during <code>./configure</code>.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Small</strong></dt>
|
||||
<dd><p>Both sources and objects should be small.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Efficient</strong></dt>
|
||||
<dd><p>It should have low CPU and memory usage.
|
||||
</p>
|
||||
</dd>
|
||||
<dt><strong>Useful</strong></dt>
|
||||
<dd><p>It should avoid useless features that almost no one needs.
|
||||
</p></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<a name="See-Also"></a>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libavutil.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
106
ffmpeg/doc/libswresample.html
Normal file
106
ffmpeg/doc/libswresample.html
Normal file
@ -0,0 +1,106 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libswresample Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libswresample ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libswresample Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libswresample.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
99
ffmpeg/doc/libswscale.html
Normal file
99
ffmpeg/doc/libswscale.html
Normal file
@ -0,0 +1,99 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Libswscale Documentation: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Libswscale ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Libswscale Documentation</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-See-Also" href="#See-Also">2 See Also</a></li>
|
||||
<li><a name="toc-Authors" href="#Authors">3 Authors</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-Description">1 Description</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-See-Also">2 See Also</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="libswscale.html#toc-Authors">3 Authors</a></h1>
|
||||
|
||||
<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
|
||||
‘<tt>MAINTAINERS</tt>’ in the source code tree.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
502
ffmpeg/doc/mailing-list-faq.html
Normal file
502
ffmpeg/doc/mailing-list-faq.html
Normal file
@ -0,0 +1,502 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="FFmpeg Mailing List FAQ: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : FFmpeg Mailing List FAQ: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">FFmpeg Mailing List FAQ</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-General-Questions" href="#General-Questions">1 General Questions</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="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 name="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 name="toc-Subscribing-_002f-Unsubscribing" href="#Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-How-do-I-subscribe_003f-1" href="#How-do-I-subscribe_003f-1">2.1 How do I subscribe?</a></li>
|
||||
<li><a name="toc-How-do-I-unsubscribe_003f" href="#How-do-I-unsubscribe_003f">2.2 How do I unsubscribe?</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Moderation-Queue" href="#Moderation-Queue">3 Moderation Queue</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="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 name="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 name="toc-Archives" href="#Archives">4 Archives</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Where-are-the-archives_003f-1" href="#Where-are-the-archives_003f-1">4.1 Where are the archives?</a></li>
|
||||
<li><a name="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 name="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 name="toc-Other" href="#Other">5 Other</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="toc-What-is-top_002dposting_003f-1" href="#What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></li>
|
||||
<li><a name="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 name="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 name="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 name="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 name="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 name="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 name="toc-Rules-and-Etiquette" href="#Rules-and-Etiquette">6 Rules and Etiquette</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="toc-Help" href="#Help">7 Help</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="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 name="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 name="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>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="General-Questions"></a>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-General-Questions">1 General Questions</a></h1>
|
||||
|
||||
<a name="What-is-a-mailing-list_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-a-mailing-list_003f">1.1 What is a mailing list?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-type-of-questions-can-I-ask_003f">1.2 What type of questions can I ask?</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f"></a>
|
||||
</p><a name="How-do-I-ask-a-question-or-send-a-message-to-a-mailing-list_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-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></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Subscribing-_002f-Unsubscribing">2 Subscribing / Unsubscribing</a></h1>
|
||||
|
||||
<p><a name="How-do-I-subscribe_003f"></a>
|
||||
</p><a name="How-do-I-subscribe_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-subscribe_003f-1">2.1 How do I subscribe?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-unsubscribe_003f">2.2 How do I unsubscribe?</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Moderation-Queue">3 Moderation Queue</a></h1>
|
||||
<p><a name="Why-is-my-message-awaiting-moderator-approval_003f"></a>
|
||||
</p><a name="Why-is-my-message-awaiting-moderator-approval_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-is-my-message-awaiting-moderator-approval_003f-1">3.1 Why is my message awaiting moderator approval?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-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></h2>
|
||||
|
||||
<p>The queue is not checked on a regular basis. You can ask on the
|
||||
<tt>#ffmpeg-devel</tt> IRC channel on Freenode for someone to approve your message.
|
||||
</p>
|
||||
<p><a name="How-do-I-delete-my-message-in-the-moderation-queue_003f"></a>
|
||||
</p><a name="How-do-I-delete-my-message-in-the-moderation-queue_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-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></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Archives">4 Archives</a></h1>
|
||||
|
||||
<p><a name="Where-are-the-archives_003f"></a>
|
||||
</p><a name="Where-are-the-archives_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Where-are-the-archives_003f-1">4.1 Where are the archives?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-reply-to-a-message-in-the-archives_003f">4.2 How do I reply to a message in the archives?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-search-the-archives_003f">4.3 How do I search the archives?</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Other">5 Other</a></h1>
|
||||
|
||||
<a name="Is-there-an-alternative-to-the-mailing-list_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Is-there-an-alternative-to-the-mailing-list_003f">5.1 Is there an alternative to the mailing list?</a></h2>
|
||||
|
||||
<p>You can ask for help in the official <tt>#ffmpeg</tt> IRC channel on Freenode.
|
||||
</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>
|
||||
<p><a name="What-is-top_002dposting_003f"></a>
|
||||
</p><a name="What-is-top_002dposting_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-top_002dposting_003f-1">5.2 What is top-posting?</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="What-is-the-message-size-limit_003f"></a>
|
||||
</p><a name="What-is-the-message-size-limit_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-is-the-message-size-limit_003f-1">5.3 What is the message size limit?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Where-can-I-upload-sample-files_003f">5.4 Where can I upload sample files?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-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></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-filter-mailing-list-messages_003f">5.6 How do I filter mailing list messages?</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="How-do-I-disable-mail-delivery-without-unsubscribing_003f"></a>
|
||||
</p><a name="How-do-I-disable-mail-delivery-without-unsubscribing_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-How-do-I-disable-mail-delivery-without-unsubscribing_003f-1">5.7 How do I disable mail delivery without unsubscribing?</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="Why-is-the-mailing-list-munging-my-address_003f"></a>
|
||||
</p><a name="Why-is-the-mailing-list-munging-my-address_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-is-the-mailing-list-munging-my-address_003f-1">5.8 Why is the mailing list munging my address?</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Rules-and-Etiquette">6 Rules and Etiquette</a></h1>
|
||||
|
||||
<a name="What-are-the-rules-and-the-proper-etiquette_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-What-are-the-rules-and-the-proper-etiquette_003f">6.1 What are the rules and the proper etiquette?</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="mailing-list-faq.html#toc-Help">7 Help</a></h1>
|
||||
|
||||
<a name="Why-am-I-not-receiving-any-messages_003f"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-am-I-not-receiving-any-messages_003f">7.1 Why am I not receiving any messages?</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-are-my-sent-messages-not-showing-up_003f">7.2 Why are my sent messages not showing up?</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
<p><a name="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f"></a>
|
||||
</p><a name="Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-Why-do-I-keep-getting-unsubscribed-from-ffmpeg_002ddevel_003f-1">7.3 Why do I keep getting unsubscribed from ffmpeg-devel?</a></h2>
|
||||
|
||||
<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>
|
||||
<p><a name="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f"></a>
|
||||
</p><a name="Who-do-I-contact-if-I-have-a-problem-with-the-mailing-list_003f-1"></a>
|
||||
<h2 class="section"><a href="mailing-list-faq.html#toc-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></h2>
|
||||
|
||||
<p>Send a message to <a href="mailto:ffmpeg-user-owner@ffmpeg.org">ffmpeg-user-owner@ffmpeg.org</a>.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
219
ffmpeg/doc/nut.html
Normal file
219
ffmpeg/doc/nut.html
Normal file
@ -0,0 +1,219 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="NUT: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : NUT: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">NUT</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Description" href="#Description">1 Description</a></li>
|
||||
<li><a name="toc-Modes" href="#Modes">2 Modes</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-BROADCAST" href="#BROADCAST">2.1 BROADCAST</a></li>
|
||||
<li><a name="toc-PIPE" href="#PIPE">2.2 PIPE</a></li>
|
||||
</ul></li>
|
||||
<li><a name="toc-Container_002dspecific-codec-tags" href="#Container_002dspecific-codec-tags">3 Container-specific codec tags</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Generic-raw-YUVA-formats" href="#Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></li>
|
||||
<li><a name="toc-Raw-Audio" href="#Raw-Audio">3.2 Raw Audio</a></li>
|
||||
<li><a name="toc-Subtitles" href="#Subtitles">3.3 Subtitles</a></li>
|
||||
<li><a name="toc-Raw-Data" href="#Raw-Data">3.4 Raw Data</a></li>
|
||||
<li><a name="toc-Codecs" href="#Codecs">3.5 Codecs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Description"></a>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Description">1 Description</a></h1>
|
||||
<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>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Modes">2 Modes</a></h1>
|
||||
<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>
|
||||
<h2 class="section"><a href="nut.html#toc-BROADCAST">2.1 BROADCAST</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="nut.html#toc-PIPE">2.2 PIPE</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="nut.html#toc-Container_002dspecific-codec-tags">3 Container-specific codec tags</a></h1>
|
||||
|
||||
<a name="Generic-raw-YUVA-formats"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Generic-raw-YUVA-formats">3.1 Generic raw YUVA formats</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="nut.html#toc-Raw-Audio">3.2 Raw Audio</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="nut.html#toc-Subtitles">3.3 Subtitles</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="nut.html#toc-Raw-Data">3.4 Raw Data</a></h2>
|
||||
|
||||
<table>
|
||||
<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
|
||||
</table>
|
||||
|
||||
<a name="Codecs"></a>
|
||||
<h2 class="section"><a href="nut.html#toc-Codecs">3.5 Codecs</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
406
ffmpeg/doc/platform.html
Normal file
406
ffmpeg/doc/platform.html
Normal file
@ -0,0 +1,406 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>FFmpeg documentation</title>
|
||||
<link rel="stylesheet" href="bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="style.min.css" />
|
||||
|
||||
<meta name="description" content="Platform Specific Information: ">
|
||||
<meta name="keywords" content="FFmpeg documentation : Platform Specific Information: ">
|
||||
<meta name="Generator" content="texi2html 5.0">
|
||||
<!-- Created on August 31, 2020 by texi2html 5.0 -->
|
||||
<!--
|
||||
texi2html was written by:
|
||||
Lionel Cons <Lionel.Cons@cern.ch> (original author)
|
||||
Karl Berry <karl@freefriends.org>
|
||||
Olaf Bachmann <obachman@mathematik.uni-kl.de>
|
||||
and many others.
|
||||
Maintained by: Many creative people.
|
||||
Send bugs and suggestions to <texi2html-bug@nongnu.org>
|
||||
|
||||
-->
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1 class="titlefont">Platform Specific Information</h1>
|
||||
<hr>
|
||||
<a name="SEC_Top"></a>
|
||||
|
||||
<a name="SEC_Contents"></a>
|
||||
<h1>Table of Contents</h1>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Unix_002dlike" href="#Unix_002dlike">1 Unix-like</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="toc-Advanced-linking-configuration" href="#Advanced-linking-configuration">1.1 Advanced linking configuration</a></li>
|
||||
<li><a name="toc-BSD" href="#BSD">1.2 BSD</a></li>
|
||||
<li><a name="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">1.3 (Open)Solaris</a></li>
|
||||
<li><a name="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 name="toc-DOS" href="#DOS">2 DOS</a></li>
|
||||
<li><a name="toc-OS_002f2" href="#OS_002f2">3 OS/2</a></li>
|
||||
<li><a name="toc-Windows" href="#Windows">4 Windows</a>
|
||||
<ul class="no-bullet">
|
||||
<li><a name="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 name="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 name="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 name="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 name="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 name="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></li>
|
||||
<li><a name="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>
|
||||
|
||||
|
||||
<hr size="6">
|
||||
<a name="Unix_002dlike"></a>
|
||||
<h1 class="chapter"><a href="platform.html#toc-Unix_002dlike">1 Unix-like</a></h1>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-Advanced-linking-configuration">1.1 Advanced linking configuration</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-BSD">1.2 BSD</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-_0028Open_0029Solaris">1.3 (Open)Solaris</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
<p><a name="Darwin"></a>
|
||||
</p><a name="Darwin-_0028Mac-OS-X_002c-iPhone_0029"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.4 Darwin (Mac OS X, iPhone)</a></h2>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="platform.html#toc-DOS">2 DOS</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="platform.html#toc-OS_002f2">3 OS/2</a></h1>
|
||||
|
||||
<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>
|
||||
<h1 class="chapter"><a href="platform.html#toc-Windows">4 Windows</a></h1>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a></h2>
|
||||
|
||||
<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 ‘<tt>mingw64_shell.bat</tt>’ or
|
||||
‘<tt>mingw32_shell.bat</tt>’ that should be used instead of the environment
|
||||
provided by ‘<tt>msys2_shell.bat</tt>’.
|
||||
|
||||
</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>
|
||||
<h3 class="subsection"><a href="platform.html#toc-Native-Windows-compilation-using-MSYS2">4.1.1 Native Windows compilation using MSYS2</a></h3>
|
||||
|
||||
<p>The MSYS2 MinGW-w64 environment provides ready to use toolchains and dependencies
|
||||
through <code>pacman</code>.
|
||||
</p>
|
||||
<p>Make sure to use ‘<tt>mingw64_shell.bat</tt>’ or ‘<tt>mingw32_shell.bat</tt>’ 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>
|
||||
<h2 class="section"><a href="platform.html#toc-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></h2>
|
||||
|
||||
<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>
|
||||
<h3 class="subsection"><a href="platform.html#toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></h3>
|
||||
|
||||
<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 ‘<tt>vcvars32.bat</tt>’
|
||||
which sets up the environment variables for the Visual C++ tools
|
||||
(the standard location for this file is something like
|
||||
‘<tt>C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</tt>’).
|
||||
</p>
|
||||
</li><li> Enter the ‘<tt>bin</tt>’ 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>
|
||||
|
||||
<p><a name="Cross-compilation-for-Windows-with-Linux"></a>
|
||||
</p><a name="Cross-compilation-for-Windows-with-Linux-1"></a>
|
||||
<h2 class="section"><a href="platform.html#toc-Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></h2>
|
||||
|
||||
<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>
|
||||
<h2 class="section"><a href="platform.html#toc-Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></h2>
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
23
ffmpeg/doc/style.min.css
vendored
Normal file
23
ffmpeg/doc/style.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
394
ffmpeg/presets/ffprobe.xsd
Normal file
394
ffmpeg/presets/ffprobe.xsd
Normal file
@ -0,0 +1,394 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
targetNamespace="http://www.ffmpeg.org/schema/ffprobe"
|
||||
xmlns:ffprobe="http://www.ffmpeg.org/schema/ffprobe">
|
||||
|
||||
<xsd:element name="ffprobe" type="ffprobe:ffprobeType"/>
|
||||
|
||||
<xsd:complexType name="ffprobeType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="program_version" type="ffprobe:programVersionType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="library_versions" type="ffprobe:libraryVersionsType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="pixel_formats" type="ffprobe:pixelFormatsType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="packets" type="ffprobe:packetsType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="frames" type="ffprobe:framesType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="packets_and_frames" type="ffprobe:packetsAndFramesType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="programs" type="ffprobe:programsType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="streams" type="ffprobe:streamsType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="chapters" type="ffprobe:chaptersType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="format" type="ffprobe:formatType" minOccurs="0" maxOccurs="1" />
|
||||
<xsd:element name="error" type="ffprobe:errorType" minOccurs="0" maxOccurs="1" />
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="packetsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="packet" type="ffprobe:packetType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="framesType">
|
||||
<xsd:sequence>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:element name="frame" type="ffprobe:frameType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="subtitle" type="ffprobe:subtitleType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:choice>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="packetsAndFramesType">
|
||||
<xsd:sequence>
|
||||
<xsd:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:element name="packet" type="ffprobe:packetType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="frame" type="ffprobe:frameType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="subtitle" type="ffprobe:subtitleType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:choice>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="packetType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="side_data_list" type="ffprobe:packetSideDataListType" minOccurs="0" maxOccurs="1" />
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="codec_type" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="stream_index" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="pts" type="xsd:long" />
|
||||
<xsd:attribute name="pts_time" type="xsd:float" />
|
||||
<xsd:attribute name="dts" type="xsd:long" />
|
||||
<xsd:attribute name="dts_time" type="xsd:float" />
|
||||
<xsd:attribute name="duration" type="xsd:long" />
|
||||
<xsd:attribute name="duration_time" type="xsd:float" />
|
||||
<xsd:attribute name="convergence_duration" type="xsd:long" />
|
||||
<xsd:attribute name="convergence_duration_time" type="xsd:float" />
|
||||
<xsd:attribute name="size" type="xsd:long" use="required" />
|
||||
<xsd:attribute name="pos" type="xsd:long" />
|
||||
<xsd:attribute name="flags" type="xsd:string" use="required" />
|
||||
<xsd:attribute name="data" type="xsd:string" />
|
||||
<xsd:attribute name="data_hash" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="packetSideDataListType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="side_data" type="ffprobe:packetSideDataType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
<xsd:complexType name="packetSideDataType">
|
||||
<xsd:attribute name="side_data_type" type="xsd:string"/>
|
||||
<xsd:attribute name="side_data_size" type="xsd:int" />
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="frameType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="logs" type="ffprobe:logsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xsd:element name="side_data_list" type="ffprobe:frameSideDataListType" minOccurs="0" maxOccurs="1" />
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="media_type" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="stream_index" type="xsd:int" />
|
||||
<xsd:attribute name="key_frame" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="pts" type="xsd:long" />
|
||||
<xsd:attribute name="pts_time" type="xsd:float"/>
|
||||
<xsd:attribute name="pkt_pts" type="xsd:long" />
|
||||
<xsd:attribute name="pkt_pts_time" type="xsd:float"/>
|
||||
<xsd:attribute name="pkt_dts" type="xsd:long" />
|
||||
<xsd:attribute name="pkt_dts_time" type="xsd:float"/>
|
||||
<xsd:attribute name="best_effort_timestamp" type="xsd:long" />
|
||||
<xsd:attribute name="best_effort_timestamp_time" type="xsd:float" />
|
||||
<xsd:attribute name="pkt_duration" type="xsd:long" />
|
||||
<xsd:attribute name="pkt_duration_time" type="xsd:float"/>
|
||||
<xsd:attribute name="pkt_pos" type="xsd:long" />
|
||||
<xsd:attribute name="pkt_size" type="xsd:int" />
|
||||
|
||||
<!-- audio attributes -->
|
||||
<xsd:attribute name="sample_fmt" type="xsd:string"/>
|
||||
<xsd:attribute name="nb_samples" type="xsd:long" />
|
||||
<xsd:attribute name="channels" type="xsd:int" />
|
||||
<xsd:attribute name="channel_layout" type="xsd:string"/>
|
||||
|
||||
<!-- video attributes -->
|
||||
<xsd:attribute name="width" type="xsd:long" />
|
||||
<xsd:attribute name="height" type="xsd:long" />
|
||||
<xsd:attribute name="pix_fmt" type="xsd:string"/>
|
||||
<xsd:attribute name="sample_aspect_ratio" type="xsd:string"/>
|
||||
<xsd:attribute name="pict_type" type="xsd:string"/>
|
||||
<xsd:attribute name="coded_picture_number" type="xsd:long" />
|
||||
<xsd:attribute name="display_picture_number" type="xsd:long" />
|
||||
<xsd:attribute name="interlaced_frame" type="xsd:int" />
|
||||
<xsd:attribute name="top_field_first" type="xsd:int" />
|
||||
<xsd:attribute name="repeat_pict" type="xsd:int" />
|
||||
<xsd:attribute name="color_range" type="xsd:string"/>
|
||||
<xsd:attribute name="color_space" type="xsd:string"/>
|
||||
<xsd:attribute name="color_primaries" type="xsd:string"/>
|
||||
<xsd:attribute name="color_transfer" type="xsd:string"/>
|
||||
<xsd:attribute name="chroma_location" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="logsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="log" type="ffprobe:logType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
<xsd:complexType name="logType">
|
||||
<xsd:attribute name="context" type="xsd:string"/>
|
||||
<xsd:attribute name="level" type="xsd:int" />
|
||||
<xsd:attribute name="category" type="xsd:int" />
|
||||
<xsd:attribute name="parent_context" type="xsd:string"/>
|
||||
<xsd:attribute name="parent_category" type="xsd:int" />
|
||||
<xsd:attribute name="message" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="frameSideDataListType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="side_data" type="ffprobe:frameSideDataType" minOccurs="1" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
<xsd:complexType name="frameSideDataType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="timecodes" type="ffprobe:frameSideDataTimecodeList" minOccurs="0" maxOccurs="1"/>
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="side_data_type" type="xsd:string"/>
|
||||
<xsd:attribute name="side_data_size" type="xsd:int" />
|
||||
<xsd:attribute name="timecode" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="frameSideDataTimecodeList">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="timecode" type="ffprobe:frameSideDataTimecodeType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="frameSideDataTimecodeType">
|
||||
<xsd:attribute name="value" type="xsd:string"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="subtitleType">
|
||||
<xsd:attribute name="media_type" type="xsd:string" fixed="subtitle" use="required"/>
|
||||
<xsd:attribute name="pts" type="xsd:long" />
|
||||
<xsd:attribute name="pts_time" type="xsd:float"/>
|
||||
<xsd:attribute name="format" type="xsd:int" />
|
||||
<xsd:attribute name="start_display_time" type="xsd:int" />
|
||||
<xsd:attribute name="end_display_time" type="xsd:int" />
|
||||
<xsd:attribute name="num_rects" type="xsd:int" />
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="streamsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="stream" type="ffprobe:streamType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="programsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="program" type="ffprobe:programType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="streamDispositionType">
|
||||
<xsd:attribute name="default" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="dub" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="original" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="comment" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="lyrics" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="karaoke" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="forced" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="hearing_impaired" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="visual_impaired" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="clean_effects" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="attached_pic" type="xsd:int" use="required" />
|
||||
<xsd:attribute name="timed_thumbnails" type="xsd:int" use="required" />
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="streamType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="disposition" type="ffprobe:streamDispositionType" minOccurs="0" maxOccurs="1"/>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="side_data_list" type="ffprobe:packetSideDataListType" minOccurs="0" maxOccurs="1" />
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="index" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="codec_name" type="xsd:string" />
|
||||
<xsd:attribute name="codec_long_name" type="xsd:string" />
|
||||
<xsd:attribute name="profile" type="xsd:string" />
|
||||
<xsd:attribute name="codec_type" type="xsd:string" />
|
||||
<xsd:attribute name="codec_time_base" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="codec_tag" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="codec_tag_string" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="extradata" type="xsd:string" />
|
||||
<xsd:attribute name="extradata_hash" type="xsd:string" />
|
||||
|
||||
<!-- video attributes -->
|
||||
<xsd:attribute name="width" type="xsd:int"/>
|
||||
<xsd:attribute name="height" type="xsd:int"/>
|
||||
<xsd:attribute name="coded_width" type="xsd:int"/>
|
||||
<xsd:attribute name="coded_height" type="xsd:int"/>
|
||||
<xsd:attribute name="closed_captions" type="xsd:boolean"/>
|
||||
<xsd:attribute name="has_b_frames" type="xsd:int"/>
|
||||
<xsd:attribute name="sample_aspect_ratio" type="xsd:string"/>
|
||||
<xsd:attribute name="display_aspect_ratio" type="xsd:string"/>
|
||||
<xsd:attribute name="pix_fmt" type="xsd:string"/>
|
||||
<xsd:attribute name="level" type="xsd:int"/>
|
||||
<xsd:attribute name="color_range" type="xsd:string"/>
|
||||
<xsd:attribute name="color_space" type="xsd:string"/>
|
||||
<xsd:attribute name="color_transfer" type="xsd:string"/>
|
||||
<xsd:attribute name="color_primaries" type="xsd:string"/>
|
||||
<xsd:attribute name="chroma_location" type="xsd:string"/>
|
||||
<xsd:attribute name="field_order" type="xsd:string"/>
|
||||
<xsd:attribute name="timecode" type="xsd:string"/>
|
||||
<xsd:attribute name="refs" type="xsd:int"/>
|
||||
|
||||
<!-- audio attributes -->
|
||||
<xsd:attribute name="sample_fmt" type="xsd:string"/>
|
||||
<xsd:attribute name="sample_rate" type="xsd:int"/>
|
||||
<xsd:attribute name="channels" type="xsd:int"/>
|
||||
<xsd:attribute name="channel_layout" type="xsd:string"/>
|
||||
<xsd:attribute name="bits_per_sample" type="xsd:int"/>
|
||||
|
||||
<xsd:attribute name="id" type="xsd:string"/>
|
||||
<xsd:attribute name="r_frame_rate" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="avg_frame_rate" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="time_base" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="start_pts" type="xsd:long"/>
|
||||
<xsd:attribute name="start_time" type="xsd:float"/>
|
||||
<xsd:attribute name="duration_ts" type="xsd:long"/>
|
||||
<xsd:attribute name="duration" type="xsd:float"/>
|
||||
<xsd:attribute name="bit_rate" type="xsd:int"/>
|
||||
<xsd:attribute name="max_bit_rate" type="xsd:int"/>
|
||||
<xsd:attribute name="bits_per_raw_sample" type="xsd:int"/>
|
||||
<xsd:attribute name="nb_frames" type="xsd:int"/>
|
||||
<xsd:attribute name="nb_read_frames" type="xsd:int"/>
|
||||
<xsd:attribute name="nb_read_packets" type="xsd:int"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="programType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xsd:element name="streams" type="ffprobe:streamsType" minOccurs="0" maxOccurs="1"/>
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="program_id" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="program_num" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="nb_streams" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="start_time" type="xsd:float"/>
|
||||
<xsd:attribute name="start_pts" type="xsd:long"/>
|
||||
<xsd:attribute name="end_time" type="xsd:float"/>
|
||||
<xsd:attribute name="end_pts" type="xsd:long"/>
|
||||
<xsd:attribute name="pmt_pid" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="pcr_pid" type="xsd:int" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="formatType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="filename" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="nb_streams" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="nb_programs" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="format_name" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="format_long_name" type="xsd:string"/>
|
||||
<xsd:attribute name="start_time" type="xsd:float"/>
|
||||
<xsd:attribute name="duration" type="xsd:float"/>
|
||||
<xsd:attribute name="size" type="xsd:long"/>
|
||||
<xsd:attribute name="bit_rate" type="xsd:long"/>
|
||||
<xsd:attribute name="probe_score" type="xsd:int"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="tagType">
|
||||
<xsd:attribute name="key" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="value" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="errorType">
|
||||
<xsd:attribute name="code" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="string" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="programVersionType">
|
||||
<xsd:attribute name="version" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="copyright" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="build_date" type="xsd:string"/>
|
||||
<xsd:attribute name="build_time" type="xsd:string"/>
|
||||
<xsd:attribute name="compiler_ident" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="configuration" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="chaptersType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="chapter" type="ffprobe:chapterType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="chapterType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="id" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="time_base" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="start" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="start_time" type="xsd:float"/>
|
||||
<xsd:attribute name="end" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="end_time" type="xsd:float" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="libraryVersionType">
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="major" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="minor" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="micro" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="version" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="ident" type="xsd:string" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="libraryVersionsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="library_version" type="ffprobe:libraryVersionType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="pixelFormatFlagsType">
|
||||
<xsd:attribute name="big_endian" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="palette" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="bitstream" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="hwaccel" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="planar" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="rgb" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="pseudopal" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="alpha" type="xsd:int" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="pixelFormatComponentType">
|
||||
<xsd:attribute name="index" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="bit_depth" type="xsd:int" use="required"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="pixelFormatComponentsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="component" type="ffprobe:pixelFormatComponentType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="pixelFormatType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="flags" type="ffprobe:pixelFormatFlagsType" minOccurs="0" maxOccurs="1"/>
|
||||
<xsd:element name="components" type="ffprobe:pixelFormatComponentsType" minOccurs="0" maxOccurs="1"/>
|
||||
</xsd:sequence>
|
||||
|
||||
<xsd:attribute name="name" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="nb_components" type="xsd:int" use="required"/>
|
||||
<xsd:attribute name="log2_chroma_w" type="xsd:int"/>
|
||||
<xsd:attribute name="log2_chroma_h" type="xsd:int"/>
|
||||
<xsd:attribute name="bits_per_pixel" type="xsd:int"/>
|
||||
</xsd:complexType>
|
||||
|
||||
<xsd:complexType name="pixelFormatsType">
|
||||
<xsd:sequence>
|
||||
<xsd:element name="pixel_format" type="ffprobe:pixelFormatType" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:schema>
|
19
ffmpeg/presets/libvpx-1080p.ffpreset
Normal file
19
ffmpeg/presets/libvpx-1080p.ffpreset
Normal file
@ -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
|
19
ffmpeg/presets/libvpx-1080p50_60.ffpreset
Normal file
19
ffmpeg/presets/libvpx-1080p50_60.ffpreset
Normal file
@ -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
|
18
ffmpeg/presets/libvpx-360p.ffpreset
Normal file
18
ffmpeg/presets/libvpx-360p.ffpreset
Normal file
@ -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
|
19
ffmpeg/presets/libvpx-720p.ffpreset
Normal file
19
ffmpeg/presets/libvpx-720p.ffpreset
Normal file
@ -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
|
19
ffmpeg/presets/libvpx-720p50_60.ffpreset
Normal file
19
ffmpeg/presets/libvpx-720p50_60.ffpreset
Normal file
@ -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
|
Reference in New Issue
Block a user