mirror of
https://github.com/opencv/opencv.git
synced 2026-07-29 15:23:05 +04:00
Compare commits
148 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2154e6251f | |||
| aea4486cde | |||
| bd2185dbe8 | |||
| 98a8c2170d | |||
| d040791dd9 | |||
| 57ce8ee687 | |||
| e71745a390 | |||
| 8d6d592c0b | |||
| 280012472b | |||
| 94de7d3f3f | |||
| 14a35a8d7b | |||
| f779a85a99 | |||
| 41a35c3c95 | |||
| 14c05d9bcf | |||
| ed349fc3b5 | |||
| d3b14b7111 | |||
| 567949e2c4 | |||
| 574a961cc1 | |||
| b206f9c269 | |||
| 4e85c7dbda | |||
| 7d82a14d1a | |||
| f278dd782d | |||
| baa7a8ca7f | |||
| a2287affb7 | |||
| 38afa582b0 | |||
| 9a1ef7272d | |||
| 5c23d3d96d | |||
| 24b5be04cc | |||
| 7db6c31400 | |||
| 391603e2e8 | |||
| a31ad531f0 | |||
| 8bd792d72b | |||
| 4bc4cdb919 | |||
| cd24a3ec45 | |||
| f296e22580 | |||
| 53f67de6a1 | |||
| 14e70599f2 | |||
| 7cc52490ec | |||
| 11a03c89a4 | |||
| b487ba4d63 | |||
| 4adcfc6215 | |||
| 69f55e9a99 | |||
| 2b689f34f7 | |||
| 1dbd9a5547 | |||
| 48a4493dfa | |||
| 785e77086f | |||
| 403b9b36a4 | |||
| 9d2d0404e5 | |||
| 8771046092 | |||
| b4c468836b | |||
| 341f9f9272 | |||
| ac0e7f6e85 | |||
| 6a964b81d4 | |||
| 00ca5812d5 | |||
| 9a2e0b81e9 | |||
| 42da4bd438 | |||
| 9b71f222ee | |||
| 9289b7be7e | |||
| 43b772846b | |||
| a6de4b522b | |||
| 40853a7917 | |||
| 6414e3fcc8 | |||
| 30e393dfa6 | |||
| 05c98f568f | |||
| 36af349ab4 | |||
| 6d810b13be | |||
| 9638448c81 | |||
| 7f38aa60a2 | |||
| e7c62abbd6 | |||
| 04cbb956bf | |||
| da1f141422 | |||
| 37d76471ac | |||
| 9074e79f7d | |||
| 183be05274 | |||
| 284a9b083e | |||
| f8597ceb8b | |||
| 57344608ea | |||
| 0aaea76621 | |||
| c6b7cfc13c | |||
| a2880a547a | |||
| 9ec6d4a467 | |||
| fea2b6e5dd | |||
| c21cf06c5f | |||
| 4bf7000c5c | |||
| 831857994c | |||
| 2835fe88ac | |||
| f7495e5845 | |||
| 0f0573e722 | |||
| f9782b3a06 | |||
| ef392b0553 | |||
| 86ab189b01 | |||
| 83f25a345d | |||
| ea520d1307 | |||
| 1c41a747f7 | |||
| eb0714da28 | |||
| 8003831f93 | |||
| c10fea8368 | |||
| cf7f189fb2 | |||
| 07b07481ec | |||
| e2219b724e | |||
| 0e3af357d3 | |||
| d758cca902 | |||
| ed977a476a | |||
| 8b6fe3b21f | |||
| 0bd3d6d2aa | |||
| 501033db8b | |||
| 84e4f59704 | |||
| c7840ab126 | |||
| 187f628f5b | |||
| f8d23637e5 | |||
| a3da7951dc | |||
| 3692eb6976 | |||
| 04d484c6ce | |||
| 023f48dcf3 | |||
| 62bedd190e | |||
| 270e130d68 | |||
| 3ae78b1b96 | |||
| f7fec3c1b5 | |||
| 168a6c3751 | |||
| beed941949 | |||
| a927b0e7c2 | |||
| 01daea8227 | |||
| 333371dd8c | |||
| c4bca84bc9 | |||
| 3fa4c8f091 | |||
| fc02f7ff4a | |||
| 9f6cbb507e | |||
| 784e12cc2d | |||
| 19b383b141 | |||
| 79626f0883 | |||
| b60a277e4e | |||
| 0d58749f2e | |||
| 85606acad7 | |||
| 5d3306da85 | |||
| a5b90e3127 | |||
| e5b1454368 | |||
| 65291b6095 | |||
| 6aa396936e | |||
| 8c2246bdc8 | |||
| f6bc96c4fb | |||
| 121b8d2319 | |||
| a5d656f31a | |||
| 9cff09d37e | |||
| cb9681174d | |||
| a971e06177 | |||
| 9a7d86d939 | |||
| 4fa1c641eb | |||
| e5f7a0c65f |
@@ -1,84 +0,0 @@
|
|||||||
* text=auto whitespace=trailing-space,space-before-tab,-indent-with-non-tab,tab-in-indent,tabwidth=4
|
|
||||||
|
|
||||||
.git* text export-ignore
|
|
||||||
|
|
||||||
*.aidl text
|
|
||||||
*.appxmanifest text
|
|
||||||
*.bib text
|
|
||||||
*.c text
|
|
||||||
*.cl text
|
|
||||||
*.conf text
|
|
||||||
*.cpp text
|
|
||||||
*.css_t text
|
|
||||||
*.cu text
|
|
||||||
*.cxx text
|
|
||||||
*.def text
|
|
||||||
*.filelist text
|
|
||||||
*.h text
|
|
||||||
*.hpp text
|
|
||||||
*.htm text
|
|
||||||
*.html text
|
|
||||||
*.hxx text
|
|
||||||
*.i text
|
|
||||||
*.idl text
|
|
||||||
*.java text
|
|
||||||
*.js text
|
|
||||||
*.m text
|
|
||||||
*.mk text
|
|
||||||
*.mm text
|
|
||||||
*.plist text
|
|
||||||
*.properties text
|
|
||||||
*.py text
|
|
||||||
*.qrc text
|
|
||||||
*.qss text
|
|
||||||
*.S text
|
|
||||||
*.sbt text
|
|
||||||
*.scala text
|
|
||||||
*.sty text
|
|
||||||
*.tex text
|
|
||||||
*.txt text
|
|
||||||
*.xaml text
|
|
||||||
|
|
||||||
# reST underlines/overlines can look like conflict markers
|
|
||||||
*.rst text conflict-marker-size=80
|
|
||||||
|
|
||||||
*.cmake text whitespace=tabwidth=2
|
|
||||||
*.cmakein text whitespace=tabwidth=2
|
|
||||||
*.in text whitespace=tabwidth=2
|
|
||||||
CMakeLists.txt text whitespace=tabwidth=2
|
|
||||||
|
|
||||||
*.avi binary
|
|
||||||
*.bmp binary
|
|
||||||
*.exr binary
|
|
||||||
*.ico binary
|
|
||||||
*.jpeg binary
|
|
||||||
*.jpg binary
|
|
||||||
*.png binary
|
|
||||||
|
|
||||||
*.a binary
|
|
||||||
*.so binary
|
|
||||||
*.dll binary
|
|
||||||
*.jar binary
|
|
||||||
|
|
||||||
*.pdf binary
|
|
||||||
*.pbxproj binary
|
|
||||||
*.vec binary
|
|
||||||
*.doc binary
|
|
||||||
*.dia binary
|
|
||||||
|
|
||||||
*.xml -text whitespace=cr-at-eol
|
|
||||||
*.yml -text whitespace=cr-at-eol
|
|
||||||
.project -text whitespace=cr-at-eol merge=union
|
|
||||||
.classpath -text whitespace=cr-at-eol merge=union
|
|
||||||
.cproject -text whitespace=cr-at-eol merge=union
|
|
||||||
org.eclipse.jdt.core.prefs -text whitespace=cr-at-eol merge=union
|
|
||||||
|
|
||||||
*.bat text eol=crlf
|
|
||||||
*.cmd text eol=crlf
|
|
||||||
*.cmd.tmpl text eol=crlf
|
|
||||||
*.dsp text eol=crlf -whitespace
|
|
||||||
*.sln text eol=crlf -whitespace
|
|
||||||
*.vcproj text eol=crlf -whitespace merge=union
|
|
||||||
*.vcxproj text eol=crlf -whitespace merge=union
|
|
||||||
|
|
||||||
*.sh text eol=lf
|
|
||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
*.autosave
|
|
||||||
*.pyc
|
|
||||||
*.user
|
|
||||||
*~
|
|
||||||
.*.swp
|
|
||||||
.DS_Store
|
|
||||||
.sw[a-z]
|
|
||||||
Thumbs.db
|
|
||||||
tags
|
|
||||||
tegra/
|
|
||||||
bin/
|
|
||||||
*.sdf
|
|
||||||
*.opensdf
|
|
||||||
*.obj
|
|
||||||
*.stamp
|
|
||||||
*.depend
|
|
||||||
*.rule
|
|
||||||
*.tmp
|
|
||||||
*/debug
|
|
||||||
*/CMakeFiles
|
|
||||||
CMakeCache.txt
|
|
||||||
*.suo
|
|
||||||
*.log
|
|
||||||
*.tlog
|
|
||||||
build
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[tgit]
|
|
||||||
icon = doc/opencv.ico
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
* -whitespace
|
|
||||||
Vendored
+18
@@ -0,0 +1,18 @@
|
|||||||
|
if(NOT ZLIB_FOUND)
|
||||||
|
add_subdirectory(zlib)
|
||||||
|
endif()
|
||||||
|
if(WITH_JASPER AND NOT JASPER_FOUND)
|
||||||
|
add_subdirectory(libjasper)
|
||||||
|
endif()
|
||||||
|
if(WITH_JPEG AND NOT JPEG_FOUND)
|
||||||
|
add_subdirectory(libjpeg)
|
||||||
|
endif()
|
||||||
|
if(WITH_PNG AND NOT PNG_FOUND)
|
||||||
|
add_subdirectory(libpng)
|
||||||
|
endif()
|
||||||
|
if(WITH_TIFF AND NOT TIFF_FOUND)
|
||||||
|
add_subdirectory(libtiff)
|
||||||
|
endif()
|
||||||
|
if(WIN32)
|
||||||
|
add_subdirectory(ffmpeg)
|
||||||
|
endif()
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
downloads/
|
|
||||||
*.dll
|
|
||||||
ffmpeg_version.cmake
|
|
||||||
Vendored
+20
@@ -0,0 +1,20 @@
|
|||||||
|
project(opencv_ffmpeg)
|
||||||
|
|
||||||
|
if(MSVC64 OR MINGW64)
|
||||||
|
set(FFMPEG_SUFFIX _64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(module_bare_name "opencv_ffmpeg${FFMPEG_SUFFIX}.dll")
|
||||||
|
set(module_name "${CMAKE_CURRENT_SOURCE_DIR}/${module_bare_name}")
|
||||||
|
|
||||||
|
get_target_property(bin_dir opencv_traincascade LOCATION)
|
||||||
|
get_filename_component(bin_dir ${bin_dir} PATH)
|
||||||
|
|
||||||
|
message(STATUS "ffmpeg output dir: ${bin_dir}")
|
||||||
|
|
||||||
|
add_custom_target(opencv_ffmpeg ALL
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
${module_name} ${bin_dir}/${module_bare_name}
|
||||||
|
COMMENT "Copying ${module_name} to the output directory")
|
||||||
|
|
||||||
|
install(FILES ${module_name} DESTINATION bin COMPONENT main)
|
||||||
Vendored
-25
@@ -1,25 +0,0 @@
|
|||||||
# Binary branch name: ffmpeg/master_20150703
|
|
||||||
# Binaries were created for OpenCV: e379ea6ed60b0caad4d4e3eea096e9d850cb8c86
|
|
||||||
set(FFMPEG_BINARIES_COMMIT "8aeefc4efe3215de89d8c7e114ae6f7a6091b8eb")
|
|
||||||
set(FFMPEG_FILE_HASH_BIN32 "89c783eee1c47bfc733f08334ec2e31c")
|
|
||||||
set(FFMPEG_FILE_HASH_BIN64 "35fe6ccdda6d7a04e9056b0d73b98e76")
|
|
||||||
set(FFMPEG_FILE_HASH_CMAKE "8606f947a780071f8fcce8cbf39ceef5")
|
|
||||||
|
|
||||||
set(FFMPEG_DOWNLOAD_URL ${OPENCV_FFMPEG_URL};$ENV{OPENCV_FFMPEG_URL};https://raw.githubusercontent.com/Itseez/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/)
|
|
||||||
|
|
||||||
ocv_download(PACKAGE opencv_ffmpeg.dll
|
|
||||||
HASH ${FFMPEG_FILE_HASH_BIN32}
|
|
||||||
URL ${FFMPEG_DOWNLOAD_URL}
|
|
||||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
|
|
||||||
ocv_download(PACKAGE opencv_ffmpeg_64.dll
|
|
||||||
HASH ${FFMPEG_FILE_HASH_BIN64}
|
|
||||||
URL ${FFMPEG_DOWNLOAD_URL}
|
|
||||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
|
|
||||||
ocv_download(PACKAGE ffmpeg_version.cmake
|
|
||||||
HASH ${FFMPEG_FILE_HASH_CMAKE}
|
|
||||||
URL ${FFMPEG_DOWNLOAD_URL}
|
|
||||||
DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})
|
|
||||||
|
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/ffmpeg_version.cmake)
|
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
#include "cap_ffmpeg_impl.hpp"
|
||||||
Vendored
-520
@@ -1,520 +0,0 @@
|
|||||||
Copyright (C) 2001 Fabrice Bellard
|
|
||||||
|
|
||||||
FFmpeg is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
FFmpeg 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
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with FFmpeg; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
==================================================================================
|
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
Version 2.1, February 1999
|
|
||||||
|
|
||||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
[This is the first released version of the Lesser GPL. It also counts
|
|
||||||
as the successor of the GNU Library Public License, version 2, hence
|
|
||||||
the version number 2.1.]
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The licenses for most software are designed to take away your
|
|
||||||
freedom to share and change it. By contrast, the GNU General Public
|
|
||||||
Licenses are intended to guarantee your freedom to share and change
|
|
||||||
free software--to make sure the software is free for all its users.
|
|
||||||
|
|
||||||
This license, the Lesser General Public License, applies to some
|
|
||||||
specially designated software packages--typically libraries--of the
|
|
||||||
Free Software Foundation and other authors who decide to use it. You
|
|
||||||
can use it too, but we suggest you first think carefully about whether
|
|
||||||
this license or the ordinary General Public License is the better
|
|
||||||
strategy to use in any particular case, based on the explanations below.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom of use,
|
|
||||||
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 this service if you wish); that you receive source code or can get
|
|
||||||
it if you want it; that you can change the software and use pieces of
|
|
||||||
it in new free programs; and that you are informed that you can do
|
|
||||||
these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to make restrictions that forbid
|
|
||||||
distributors to deny you these rights or to ask you to surrender these
|
|
||||||
rights. These restrictions translate to certain responsibilities for
|
|
||||||
you if you distribute copies of the library or if you modify it.
|
|
||||||
|
|
||||||
For example, if you distribute copies of the library, whether gratis
|
|
||||||
or for a fee, you must give the recipients all the rights that we gave
|
|
||||||
you. You must make sure that they, too, receive or can get the source
|
|
||||||
code. If you link other code with the library, you must provide
|
|
||||||
complete object files to the recipients, so that they can relink them
|
|
||||||
with the library after making changes to the library and recompiling
|
|
||||||
it. And you must show them these terms so they know their rights.
|
|
||||||
|
|
||||||
We protect your rights with a two-step method: (1) we copyright the
|
|
||||||
library, and (2) we offer you this license, which gives you legal
|
|
||||||
permission to copy, distribute and/or modify the library.
|
|
||||||
|
|
||||||
To protect each distributor, we want to make it very clear that
|
|
||||||
there is no warranty for the free library. Also, if the library is
|
|
||||||
modified by someone else and passed on, the recipients should know
|
|
||||||
that what they have is not the original version, so that the original
|
|
||||||
author's reputation will not be affected by problems that might be
|
|
||||||
introduced by others.
|
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
|
||||||
any free program. We wish to make sure that a company cannot
|
|
||||||
effectively restrict the users of a free program by obtaining a
|
|
||||||
restrictive license from a patent holder. Therefore, we insist that
|
|
||||||
any patent license obtained for a version of the library must be
|
|
||||||
consistent with the full freedom of use specified in this license.
|
|
||||||
|
|
||||||
Most GNU software, including some libraries, is covered by the
|
|
||||||
ordinary GNU General Public License. This license, the GNU Lesser
|
|
||||||
General Public License, applies to certain designated libraries, and
|
|
||||||
is quite different from the ordinary General Public License. We use
|
|
||||||
this license for certain libraries in order to permit linking those
|
|
||||||
libraries into non-free programs.
|
|
||||||
|
|
||||||
When a program is linked with a library, whether statically or using
|
|
||||||
a shared library, the combination of the two is legally speaking a
|
|
||||||
combined work, a derivative of the original library. The ordinary
|
|
||||||
General Public License therefore permits such linking only if the
|
|
||||||
entire combination fits its criteria of freedom. The Lesser General
|
|
||||||
Public License permits more lax criteria for linking other code with
|
|
||||||
the library.
|
|
||||||
|
|
||||||
We call this license the "Lesser" General Public License because it
|
|
||||||
does Less to protect the user's freedom than the ordinary General
|
|
||||||
Public License. It also provides other free software developers Less
|
|
||||||
of an advantage over competing non-free programs. These disadvantages
|
|
||||||
are the reason we use the ordinary General Public License for many
|
|
||||||
libraries. However, the Lesser license provides advantages in certain
|
|
||||||
special circumstances.
|
|
||||||
|
|
||||||
For example, on rare occasions, there may be a special need to
|
|
||||||
encourage the widest possible use of a certain library, so that it becomes
|
|
||||||
a de-facto standard. To achieve this, non-free programs must be
|
|
||||||
allowed to use the library. A more frequent case is that a free
|
|
||||||
library does the same job as widely used non-free libraries. In this
|
|
||||||
case, there is little to gain by limiting the free library to free
|
|
||||||
software only, so we use the Lesser General Public License.
|
|
||||||
|
|
||||||
In other cases, permission to use a particular library in non-free
|
|
||||||
programs enables a greater number of people to use a large body of
|
|
||||||
free software. For example, permission to use the GNU C Library in
|
|
||||||
non-free programs enables many more people to use the whole GNU
|
|
||||||
operating system, as well as its variant, the GNU/Linux operating
|
|
||||||
system.
|
|
||||||
|
|
||||||
Although the Lesser General Public License is Less protective of the
|
|
||||||
users' freedom, it does ensure that the user of a program that is
|
|
||||||
linked with the Library has the freedom and the wherewithal to run
|
|
||||||
that program using a modified version of the Library.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow. Pay close attention to the difference between a
|
|
||||||
"work based on the library" and a "work that uses the library". The
|
|
||||||
former contains code derived from the library, whereas the latter must
|
|
||||||
be combined with the library in order to run.
|
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
||||||
|
|
||||||
0. This License Agreement applies to any software library or other
|
|
||||||
program which contains a notice placed by the copyright holder or
|
|
||||||
other authorized party saying it may be distributed under the terms of
|
|
||||||
this Lesser General Public License (also called "this License").
|
|
||||||
Each licensee is addressed as "you".
|
|
||||||
|
|
||||||
A "library" means a collection of software functions and/or data
|
|
||||||
prepared so as to be conveniently linked with application programs
|
|
||||||
(which use some of those functions and data) to form executables.
|
|
||||||
|
|
||||||
The "Library", below, refers to any such software library or work
|
|
||||||
which has been distributed under these terms. A "work based on the
|
|
||||||
Library" means either the Library or any derivative work under
|
|
||||||
copyright law: that is to say, a work containing the Library or a
|
|
||||||
portion of it, either verbatim or with modifications and/or translated
|
|
||||||
straightforwardly into another language. (Hereinafter, translation is
|
|
||||||
included without limitation in the term "modification".)
|
|
||||||
|
|
||||||
"Source code" for a work means the preferred form of the work for
|
|
||||||
making modifications to it. For a library, complete source code means
|
|
||||||
all the source code for all modules it contains, plus any associated
|
|
||||||
interface definition files, plus the scripts used to control compilation
|
|
||||||
and installation of the library.
|
|
||||||
|
|
||||||
Activities other than copying, distribution and modification are not
|
|
||||||
covered by this License; they are outside its scope. The act of
|
|
||||||
running a program using the Library is not restricted, and output from
|
|
||||||
such a program is covered only if its contents constitute a work based
|
|
||||||
on the Library (independent of the use of the Library in a tool for
|
|
||||||
writing it). Whether that is true depends on what the Library does
|
|
||||||
and what the program that uses the Library does.
|
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
|
||||||
complete source code as you receive it, in any medium, provided that
|
|
||||||
you conspicuously and appropriately publish on each copy an
|
|
||||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
|
||||||
all the notices that refer to this License and to the absence of any
|
|
||||||
warranty; and distribute a copy of this License along with the
|
|
||||||
Library.
|
|
||||||
|
|
||||||
You may charge a fee for the physical act of transferring a copy,
|
|
||||||
and you may at your option offer warranty protection in exchange for a
|
|
||||||
fee.
|
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
|
||||||
of it, thus forming a work based on the Library, and copy and
|
|
||||||
distribute such modifications or work under the terms of Section 1
|
|
||||||
above, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The modified work must itself be a software library.
|
|
||||||
|
|
||||||
b) You must cause the files modified to carry prominent notices
|
|
||||||
stating that you changed the files and the date of any change.
|
|
||||||
|
|
||||||
c) You must cause the whole of the work to be licensed at no
|
|
||||||
charge to all third parties under the terms of this License.
|
|
||||||
|
|
||||||
d) If a facility in the modified Library refers to a function or a
|
|
||||||
table of data to be supplied by an application program that uses
|
|
||||||
the facility, other than as an argument passed when the facility
|
|
||||||
is invoked, then you must make a good faith effort to ensure that,
|
|
||||||
in the event an application does not supply such function or
|
|
||||||
table, the facility still operates, and performs whatever part of
|
|
||||||
its purpose remains meaningful.
|
|
||||||
|
|
||||||
(For example, a function in a library to compute square roots has
|
|
||||||
a purpose that is entirely well-defined independent of the
|
|
||||||
application. Therefore, Subsection 2d requires that any
|
|
||||||
application-supplied function or table used by this function must
|
|
||||||
be optional: if the application does not supply it, the square
|
|
||||||
root function must still compute square roots.)
|
|
||||||
|
|
||||||
These requirements apply to the modified work as a whole. If
|
|
||||||
identifiable sections of that work are not derived from the Library,
|
|
||||||
and can be reasonably considered independent and separate works in
|
|
||||||
themselves, then this License, and its terms, do not apply to those
|
|
||||||
sections when you distribute them as separate works. But when you
|
|
||||||
distribute the same sections as part of a whole which is a work based
|
|
||||||
on the Library, the distribution of the whole must be on the terms of
|
|
||||||
this License, whose permissions for other licensees extend to the
|
|
||||||
entire whole, and thus to each and every part regardless of who wrote
|
|
||||||
it.
|
|
||||||
|
|
||||||
Thus, it is not the intent of this section to claim rights or contest
|
|
||||||
your rights to work written entirely by you; rather, the intent is to
|
|
||||||
exercise the right to control the distribution of derivative or
|
|
||||||
collective works based on the Library.
|
|
||||||
|
|
||||||
In addition, mere aggregation of another work not based on the Library
|
|
||||||
with the Library (or with a work based on the Library) on a volume of
|
|
||||||
a storage or distribution medium does not bring the other work under
|
|
||||||
the scope of this License.
|
|
||||||
|
|
||||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
|
||||||
License instead of this License to a given copy of the Library. To do
|
|
||||||
this, you must alter all the notices that refer to this License, so
|
|
||||||
that they refer to the ordinary GNU General Public License, version 2,
|
|
||||||
instead of to this License. (If a newer version than version 2 of the
|
|
||||||
ordinary GNU General Public License has appeared, then you can specify
|
|
||||||
that version instead if you wish.) Do not make any other change in
|
|
||||||
these notices.
|
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
|
||||||
subsequent copies and derivative works made from that copy.
|
|
||||||
|
|
||||||
This option is useful when you wish to copy part of the code of
|
|
||||||
the Library into a program that is not a library.
|
|
||||||
|
|
||||||
4. You may copy and distribute the Library (or a portion or
|
|
||||||
derivative of it, under Section 2) in object code or executable form
|
|
||||||
under the terms of Sections 1 and 2 above provided that you accompany
|
|
||||||
it with the complete corresponding machine-readable source code, which
|
|
||||||
must be distributed under the terms of Sections 1 and 2 above on a
|
|
||||||
medium customarily used for software interchange.
|
|
||||||
|
|
||||||
If distribution of object code is made by offering access to copy
|
|
||||||
from a designated place, then offering equivalent access to copy the
|
|
||||||
source code from the same place satisfies the requirement to
|
|
||||||
distribute the source code, even though third parties are not
|
|
||||||
compelled to copy the source along with the object code.
|
|
||||||
|
|
||||||
5. A program that contains no derivative of any portion of the
|
|
||||||
Library, but is designed to work with the Library by being compiled or
|
|
||||||
linked with it, is called a "work that uses the Library". Such a
|
|
||||||
work, in isolation, is not a derivative work of the Library, and
|
|
||||||
therefore falls outside the scope of this License.
|
|
||||||
|
|
||||||
However, linking a "work that uses the Library" with the Library
|
|
||||||
creates an executable that is a derivative of the Library (because it
|
|
||||||
contains portions of the Library), rather than a "work that uses the
|
|
||||||
library". The executable is therefore covered by this License.
|
|
||||||
Section 6 states terms for distribution of such executables.
|
|
||||||
|
|
||||||
When a "work that uses the Library" uses material from a header file
|
|
||||||
that is part of the Library, the object code for the work may be a
|
|
||||||
derivative work of the Library even though the source code is not.
|
|
||||||
Whether this is true is especially significant if the work can be
|
|
||||||
linked without the Library, or if the work is itself a library. The
|
|
||||||
threshold for this to be true is not precisely defined by law.
|
|
||||||
|
|
||||||
If such an object file uses only numerical parameters, data
|
|
||||||
structure layouts and accessors, and small macros and small inline
|
|
||||||
functions (ten lines or less in length), then the use of the object
|
|
||||||
file is unrestricted, regardless of whether it is legally a derivative
|
|
||||||
work. (Executables containing this object code plus portions of the
|
|
||||||
Library will still fall under Section 6.)
|
|
||||||
|
|
||||||
Otherwise, if the work is a derivative of the Library, you may
|
|
||||||
distribute the object code for the work under the terms of Section 6.
|
|
||||||
Any executables containing that work also fall under Section 6,
|
|
||||||
whether or not they are linked directly with the Library itself.
|
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
|
||||||
link a "work that uses the Library" with the Library to produce a
|
|
||||||
work containing portions of the Library, and distribute that work
|
|
||||||
under terms of your choice, provided that the terms permit
|
|
||||||
modification of the work for the customer's own use and reverse
|
|
||||||
engineering for debugging such modifications.
|
|
||||||
|
|
||||||
You must give prominent notice with each copy of the work that the
|
|
||||||
Library is used in it and that the Library and its use are covered by
|
|
||||||
this License. You must supply a copy of this License. If the work
|
|
||||||
during execution displays copyright notices, you must include the
|
|
||||||
copyright notice for the Library among them, as well as a reference
|
|
||||||
directing the user to the copy of this License. Also, you must do one
|
|
||||||
of these things:
|
|
||||||
|
|
||||||
a) Accompany the work with the complete corresponding
|
|
||||||
machine-readable source code for the Library including whatever
|
|
||||||
changes were used in the work (which must be distributed under
|
|
||||||
Sections 1 and 2 above); and, if the work is an executable linked
|
|
||||||
with the Library, with the complete machine-readable "work that
|
|
||||||
uses the Library", as object code and/or source code, so that the
|
|
||||||
user can modify the Library and then relink to produce a modified
|
|
||||||
executable containing the modified Library. (It is understood
|
|
||||||
that the user who changes the contents of definitions files in the
|
|
||||||
Library will not necessarily be able to recompile the application
|
|
||||||
to use the modified definitions.)
|
|
||||||
|
|
||||||
b) Use a suitable shared library mechanism for linking with the
|
|
||||||
Library. A suitable mechanism is one that (1) uses at run time a
|
|
||||||
copy of the library already present on the user's computer system,
|
|
||||||
rather than copying library functions into the executable, and (2)
|
|
||||||
will operate properly with a modified version of the library, if
|
|
||||||
the user installs one, as long as the modified version is
|
|
||||||
interface-compatible with the version that the work was made with.
|
|
||||||
|
|
||||||
c) Accompany the work with a written offer, valid for at
|
|
||||||
least three years, to give the same user the materials
|
|
||||||
specified in Subsection 6a, above, for a charge no more
|
|
||||||
than the cost of performing this distribution.
|
|
||||||
|
|
||||||
d) If distribution of the work is made by offering access to copy
|
|
||||||
from a designated place, offer equivalent access to copy the above
|
|
||||||
specified materials from the same place.
|
|
||||||
|
|
||||||
e) Verify that the user has already received a copy of these
|
|
||||||
materials or that you have already sent this user a copy.
|
|
||||||
|
|
||||||
For an executable, the required form of the "work that uses the
|
|
||||||
Library" must include any data and utility programs needed for
|
|
||||||
reproducing the executable from it. However, as a special exception,
|
|
||||||
the materials to be distributed need not include anything that is
|
|
||||||
normally distributed (in either source or binary form) with the major
|
|
||||||
components (compiler, kernel, and so on) of the operating system on
|
|
||||||
which the executable runs, unless that component itself accompanies
|
|
||||||
the executable.
|
|
||||||
|
|
||||||
It may happen that this requirement contradicts the license
|
|
||||||
restrictions of other proprietary libraries that do not normally
|
|
||||||
accompany the operating system. Such a contradiction means you cannot
|
|
||||||
use both them and the Library together in an executable that you
|
|
||||||
distribute.
|
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
|
||||||
Library side-by-side in a single library together with other library
|
|
||||||
facilities not covered by this License, and distribute such a combined
|
|
||||||
library, provided that the separate distribution of the work based on
|
|
||||||
the Library and of the other library facilities is otherwise
|
|
||||||
permitted, and provided that you do these two things:
|
|
||||||
|
|
||||||
a) Accompany the combined library with a copy of the same work
|
|
||||||
based on the Library, uncombined with any other library
|
|
||||||
facilities. This must be distributed under the terms of the
|
|
||||||
Sections above.
|
|
||||||
|
|
||||||
b) Give prominent notice with the combined library of the fact
|
|
||||||
that part of it is a work based on the Library, and explaining
|
|
||||||
where to find the accompanying uncombined form of the same work.
|
|
||||||
|
|
||||||
8. You may not copy, modify, sublicense, link with, or distribute
|
|
||||||
the Library except as expressly provided under this License. Any
|
|
||||||
attempt otherwise to copy, modify, sublicense, link with, or
|
|
||||||
distribute the Library is void, and will automatically terminate your
|
|
||||||
rights under this License. However, parties who have received copies,
|
|
||||||
or rights, from you under this License will not have their licenses
|
|
||||||
terminated so long as such parties remain in full compliance.
|
|
||||||
|
|
||||||
9. You are not required to accept this License, since you have not
|
|
||||||
signed it. However, nothing else grants you permission to modify or
|
|
||||||
distribute the Library or its derivative works. These actions are
|
|
||||||
prohibited by law if you do not accept this License. Therefore, by
|
|
||||||
modifying or distributing the Library (or any work based on the
|
|
||||||
Library), you indicate your acceptance of this License to do so, and
|
|
||||||
all its terms and conditions for copying, distributing or modifying
|
|
||||||
the Library or works based on it.
|
|
||||||
|
|
||||||
10. Each time you redistribute the Library (or any work based on the
|
|
||||||
Library), the recipient automatically receives a license from the
|
|
||||||
original licensor to copy, distribute, link with or modify the Library
|
|
||||||
subject to these terms and conditions. You may not impose any further
|
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
|
||||||
You are not responsible for enforcing compliance by third parties with
|
|
||||||
this License.
|
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
|
||||||
infringement or for any other reason (not limited to patent issues),
|
|
||||||
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
|
|
||||||
distribute so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you
|
|
||||||
may not distribute the Library at all. For example, if a patent
|
|
||||||
license would not permit royalty-free redistribution of the Library by
|
|
||||||
all those who receive copies directly or indirectly through you, then
|
|
||||||
the only way you could satisfy both it and this License would be to
|
|
||||||
refrain entirely from distribution of the Library.
|
|
||||||
|
|
||||||
If any portion of this section is held invalid or unenforceable under any
|
|
||||||
particular circumstance, the balance of the section is intended to apply,
|
|
||||||
and the section as a whole is intended to apply in other circumstances.
|
|
||||||
|
|
||||||
It is not the purpose of this section to induce you to infringe any
|
|
||||||
patents or other property right claims or to contest validity of any
|
|
||||||
such claims; this section has the sole purpose of protecting the
|
|
||||||
integrity of the free software distribution system which is
|
|
||||||
implemented by public license practices. Many people have made
|
|
||||||
generous contributions to the wide range of software distributed
|
|
||||||
through that system in reliance on consistent application of that
|
|
||||||
system; it is up to the author/donor to decide if he or she is willing
|
|
||||||
to distribute software through any other system and a licensee cannot
|
|
||||||
impose that choice.
|
|
||||||
|
|
||||||
This section is intended to make thoroughly clear what is believed to
|
|
||||||
be a consequence of the rest of this License.
|
|
||||||
|
|
||||||
12. If the distribution and/or use of the Library is restricted in
|
|
||||||
certain countries either by patents or by copyrighted interfaces, the
|
|
||||||
original copyright holder who places the Library under this License may add
|
|
||||||
an explicit geographical distribution limitation excluding those countries,
|
|
||||||
so that distribution is permitted only in or among countries not thus
|
|
||||||
excluded. In such case, this License incorporates the limitation as if
|
|
||||||
written in the body of this License.
|
|
||||||
|
|
||||||
13. The Free Software Foundation may publish revised and/or new
|
|
||||||
versions of the Lesser 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 Library
|
|
||||||
specifies a version number of this License which applies to it and
|
|
||||||
"any later version", you have the option of following the terms and
|
|
||||||
conditions either of that version or of any later version published by
|
|
||||||
the Free Software Foundation. If the Library does not specify a
|
|
||||||
license version number, you may choose any version ever published by
|
|
||||||
the Free Software Foundation.
|
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
|
||||||
programs whose distribution conditions are incompatible with these,
|
|
||||||
write to the author to ask for permission. For software which is
|
|
||||||
copyrighted by the Free Software Foundation, write to the Free
|
|
||||||
Software Foundation; we sometimes make exceptions for this. Our
|
|
||||||
decision will be guided by the two goals of preserving the free status
|
|
||||||
of all derivatives of our free software and of promoting the sharing
|
|
||||||
and reuse of software generally.
|
|
||||||
|
|
||||||
NO WARRANTY
|
|
||||||
|
|
||||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
|
||||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
|
||||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
|
||||||
OTHER PARTIES PROVIDE THE LIBRARY "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
|
|
||||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
|
||||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
|
||||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
|
||||||
AND/OR REDISTRIBUTE THE LIBRARY 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
|
|
||||||
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
|
||||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
||||||
DAMAGES.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
|
||||||
possible use to the public, we recommend making it free software that
|
|
||||||
everyone can redistribute and change. You can do so by permitting
|
|
||||||
redistribution under these terms (or, alternatively, under the terms of the
|
|
||||||
ordinary General Public License).
|
|
||||||
|
|
||||||
To apply these terms, attach the following notices to the library. It is
|
|
||||||
safest to attach them to the start of each source file to most effectively
|
|
||||||
convey 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 library's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Lesser General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library 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
|
|
||||||
Lesser General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
|
||||||
License along with this library; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or your
|
|
||||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
|
||||||
necessary. Here is a sample; alter the names:
|
|
||||||
|
|
||||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
|
||||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
|
||||||
|
|
||||||
<signature of Ty Coon>, 1 April 1990
|
|
||||||
Ty Coon, President of Vice
|
|
||||||
|
|
||||||
That's all there is to it!
|
|
||||||
Vendored
+2
@@ -0,0 +1,2 @@
|
|||||||
|
set path=c:\dev\msys32\bin;%path% & gcc -Wall -shared -o opencv_ffmpeg.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat -lavcodec -lavdevice -lswscale -lavutil -lwsock32
|
||||||
|
set path=c:\dev\msys64\bin;%path% & gcc -m64 -Wall -shared -o opencv_ffmpeg_64.dll -O2 -x c++ -I../include -I../include/ffmpeg_ -I../../modules/highgui/src ffopencv.c -L../lib -lavformat64 -lavcodec64 -lavdevice64 -lswscale64 -lavutil64 -lavcore64 -lwsock32 -lws2_32
|
||||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
+36
-30
@@ -1,38 +1,44 @@
|
|||||||
* On Linux and other Unix flavors OpenCV uses default or user-built ffmpeg/libav libraries.
|
The build script is to be fixed.
|
||||||
If user builds ffmpeg/libav from source and wants OpenCV to stay BSD library, not GPL/LGPL,
|
Right now it assumes that 32-bit MinGW is in the system path and
|
||||||
he/she should use --enabled-shared configure flag and make sure that no GPL components are
|
64-bit mingw is installed to c:\Apps\MinGW64.
|
||||||
enabled (some notable examples are x264 (H264 encoder) and libac3 (Dolby AC3 audio codec)).
|
|
||||||
See https://www.ffmpeg.org/legal.html for details.
|
|
||||||
|
|
||||||
If you want to play very safe and do not want to use FFMPEG at all, regardless of whether it's installed on
|
It is important that gcc is used, not g++!
|
||||||
your system or not, configure and build OpenCV using CMake with WITH_FFMPEG=OFF flag. OpenCV will then use
|
Otherwise the produced DLL will likely be dependent on libgcc_s_dw2-1.dll or similar DLL.
|
||||||
AVFoundation (OSX), GStreamer (Linux) or other available backends supported by opencv_videoio module.
|
While we want to make the DLLs with minimum dependencies: Win32 libraries + msvcrt.dll.
|
||||||
|
|
||||||
There is also our self-contained motion jpeg codec, which you can use without any worries.
|
ffopencv.c is really a C++ source, hence -x c++ is used.
|
||||||
It handles CV_FOURCC('M', 'J', 'P', 'G') streams within an AVI container (".avi").
|
|
||||||
|
|
||||||
* On Windows OpenCV uses pre-built ffmpeg binaries, built with proper flags (without GPL components) and
|
How to update opencv_ffmpeg.dll and opencv_ffmpeg_64.dll when a new version of FFMPEG is release?
|
||||||
wrapped with simple, stable OpenCV-compatible API.
|
|
||||||
The binaries are opencv_ffmpeg.dll (version for 32-bit Windows) and
|
|
||||||
opencv_ffmpeg_64.dll (version for 64-bit Windows).
|
|
||||||
|
|
||||||
See build_win32.txt for the build instructions, if you want to rebuild opencv_ffmpeg*.dll from scratch.
|
1. Install 32-bit MinGW + MSYS from
|
||||||
|
http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get-inst/
|
||||||
|
Let's assume, it's installed in C:\MSYS32.
|
||||||
|
2. Install 64-bit MinGW. http://mingw-w64.sourceforge.net/
|
||||||
|
Let's assume, it's installed in C:\MSYS64
|
||||||
|
3. Copy C:\MSYS32\msys to C:\MSYS64\msys. Edit C:\MSYS64\msys\etc\fstab, change C:\MSYS32 to C:\MSYS64.
|
||||||
|
|
||||||
|
4. Now you have working MSYS32 and MSYS64 environments.
|
||||||
|
Launch, one by one, C:\MSYS32\msys\msys.bat and C:\MSYS64\msys\msys.bat to create your home directories.
|
||||||
|
|
||||||
The pre-built opencv_ffmpeg*.dll is:
|
4. Download ffmpeg-x.y.z.tar.gz (where x.y.z denotes the actual ffmpeg version).
|
||||||
* LGPL library, not BSD libraries.
|
Copy it to C:\MSYS{32|64}\msys\home\<loginname> directory.
|
||||||
* Loaded at runtime by opencv_videoio module.
|
|
||||||
If it succeeds, ffmpeg can be used to decode/encode videos;
|
|
||||||
otherwise, other API is used.
|
|
||||||
|
|
||||||
FFMPEG build contains H264 encoder based on the OpenH264 library, that should be installed separatelly.
|
5. To build 32-bit ffmpeg libraries, run C:\MSYS32\msys\msys.bat and type the following commands:
|
||||||
OpenH264 Video Codec provided by Cisco Systems, Inc.
|
|
||||||
See https://github.com/cisco/openh264/releases for details and OpenH264 license.
|
5.1. tar -xzf ffmpeg-x.y.z.tar.gz
|
||||||
Downloaded binary file can be placed into global system path (System32 or SysWOW64) or near application binaries.
|
5.2. mkdir build
|
||||||
You can also specify location of binary file via OPENH264_LIBRARY_PATH environment variable.
|
5.3. cd build
|
||||||
|
5.4. ../ffmpeg-x.y.z/configure --enable-w32threads
|
||||||
|
5.5. make
|
||||||
|
5.6. make install
|
||||||
|
5.7. cd /local/lib
|
||||||
|
5.8. strip -g *.a
|
||||||
|
|
||||||
|
6. Then repeat the same for 64-bit case. The output libs: libavcodec.a etc. need to be renamed to libavcodec64.a etc.
|
||||||
|
|
||||||
|
7. Then, copy all those libs to <opencv>\3rdparty\lib\, copy the headers to <opencv>\3rdparty\include\ffmpeg_.
|
||||||
|
|
||||||
|
8. Then, go to <opencv>\3rdparty\ffmpeg, edit make.bat
|
||||||
|
(change paths to the actual paths to your msys32 and msys64 distributions) and then run make.bat
|
||||||
|
|
||||||
If LGPL/GPL software can not be supplied with your OpenCV-based product, simply exclude
|
|
||||||
opencv_ffmpeg*.dll from your distribution; OpenCV will stay fully functional except for the ability to
|
|
||||||
decode/encode videos using FFMPEG (though, it may still be able to do that using other API,
|
|
||||||
such as Video for Windows, Windows Media Foundation or our self-contained motion jpeg codec).
|
|
||||||
|
|
||||||
See license.txt for the FFMPEG copyright notice and the licensing terms.
|
|
||||||
|
|||||||
Vendored
+34
@@ -0,0 +1,34 @@
|
|||||||
|
Copyright (c) 2004, Industrial Light & Magic, a division of Lucasfilm
|
||||||
|
Entertainment Company Ltd. Portions contributed and copyright held by
|
||||||
|
others as indicated. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided with
|
||||||
|
the distribution.
|
||||||
|
|
||||||
|
* Neither the name of Industrial Light & Magic nor the names of
|
||||||
|
any other contributors to this software may be used to endorse or
|
||||||
|
promote products derived from this software without specific prior
|
||||||
|
written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||||
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
Vendored
+123
@@ -0,0 +1,123 @@
|
|||||||
|
ABOUT THE OPENEXR LIBRARIES
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
Half is a class that encapsulates our 16-bit floating-point format.
|
||||||
|
|
||||||
|
IlmThread is a thread abstraction library for use with IlmImf. It
|
||||||
|
currently supports pthreads and Windows threads.
|
||||||
|
|
||||||
|
IlmImf is our "EXR" file format for storing 16-bit FP images.
|
||||||
|
|
||||||
|
Imath is a math library. IlmImf only uses a subset of it,
|
||||||
|
but we're releasing the full library because it's easier for us to
|
||||||
|
maintain, and we think it'll be useful to others.
|
||||||
|
|
||||||
|
Iex is an exception-handling library.
|
||||||
|
|
||||||
|
See the IlmImfExamples directory for some code that demonstrates how
|
||||||
|
to use the IlmImf library to read and write OpenEXR files. The doc
|
||||||
|
directory contains some high-level documentation and history about the
|
||||||
|
OpenEXR format.
|
||||||
|
|
||||||
|
If you have questions about using the OpenEXR libraries, you may want
|
||||||
|
to join our developer mailing list. See http://www.openexr.com for
|
||||||
|
details.
|
||||||
|
|
||||||
|
|
||||||
|
LICENSE
|
||||||
|
-------
|
||||||
|
|
||||||
|
The OpenEXR source code distribution is free software. See the file
|
||||||
|
named COPYING (included in this distribution) for details.
|
||||||
|
|
||||||
|
|
||||||
|
WHAT'S INCLUDED
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Besides the core OpenEXR libraries, the release includes several
|
||||||
|
utilities for reading, writing, viewing, and manipulating OpenEXR
|
||||||
|
images. These include:
|
||||||
|
|
||||||
|
* exrdisplay, an image viewer.
|
||||||
|
* exrheader, a utility for dumping header information.
|
||||||
|
* exrstdattr, a utility for modifying OpenEXR standard attributes.
|
||||||
|
* exrmaketiled, for generating tiled and rip/mipmapped images.
|
||||||
|
* exrenvmap, for creating OpenEXR environment maps.
|
||||||
|
* exrmakepreview, for creating preview images for OpenEXR files.
|
||||||
|
|
||||||
|
exrdisplay requires FLTK 1.1 or greater and OpenGL. exrdisplay
|
||||||
|
supports fragment shaders if you have the Nvidia Cg SDK and a graphics
|
||||||
|
card capable of running fp30 profile fragment shaders. See
|
||||||
|
exrdisplay/README for details.
|
||||||
|
|
||||||
|
We have also released an OpenEXR display driver for Renderman, a file
|
||||||
|
I/O plugin for Shake, and a file I/O plugin for Adobe Photoshop (on
|
||||||
|
both Windows and MacOS). These are packaged separately. Go to
|
||||||
|
http://www.openexr.com to download them. NOTE: the most recent
|
||||||
|
versions of these applications now have native support for OpenEXR, so
|
||||||
|
you should only use our open-source versions of the plugins if you
|
||||||
|
have an older version of the application.
|
||||||
|
|
||||||
|
|
||||||
|
BUILDING OPENEXR
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Building OpenEXR requires the zlib library. If you want to build the
|
||||||
|
'exrdisplay' image viewer, you'll also need FLTK 1.1, but this program
|
||||||
|
is not required to use OpenEXR's libraries in your application.
|
||||||
|
exrdisplay can also accelerate the display of OpenEXR images if you
|
||||||
|
have the NVIDIA Cg SDK.
|
||||||
|
|
||||||
|
Your OS distribution may already include these libraries, or supply
|
||||||
|
packages for them. That is the preferred way to obtain them for use
|
||||||
|
with OpenEXR. If not, you can obtain the source code for zlib and
|
||||||
|
FLTK from:
|
||||||
|
|
||||||
|
http://www.zlib.net
|
||||||
|
http://www.fltk.org
|
||||||
|
|
||||||
|
and you can download the NVIDIA Cg SDK from
|
||||||
|
http://developer.nvidia.com.
|
||||||
|
|
||||||
|
If you're building OpenEXR on a Windows platform, see README.win32 for
|
||||||
|
instructions on how to build OpenEXR. The remainder of this file
|
||||||
|
applies only to GNU/Linux or other UNIX-like systems.
|
||||||
|
|
||||||
|
After installing the required libraries, to build OpenEXR on
|
||||||
|
GNU/Linux or other UNIX-like systems, do this:
|
||||||
|
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
unless you obtained OpenEXR directly from CVS, in which case you
|
||||||
|
should first read README.CVS.
|
||||||
|
|
||||||
|
If you have the Nvidia Cg SDK and you want to build support for
|
||||||
|
fragment shaders into exrdisplay, specify the path to the SDK using
|
||||||
|
the "--with-cg-prefix" flag. There are some additional compile-time
|
||||||
|
configuration options available; type `./configure --help` for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
See README.OSX for details on building OpenEXR in MacOS X.
|
||||||
|
|
||||||
|
Do `make check` to run the OpenEXR confidence tests. They should all
|
||||||
|
pass; if you find a test that does not pass on your system, please let
|
||||||
|
us know.
|
||||||
|
|
||||||
|
Other UNIX variants haven't been tested, but should be easy to build.
|
||||||
|
Let us know if you're having problems porting OpenEXR to a particular
|
||||||
|
platform.
|
||||||
|
|
||||||
|
All include files needed to use the OpenEXR libraries are installed in the
|
||||||
|
OpenEXR subdirectory of the install prefix, e.g. /usr/local/include/OpenEXR.
|
||||||
|
|
||||||
|
|
||||||
|
USING OPENEXR IN YOUR APPLICATIONS
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
On systems with support for pkg-config, use `pkg-config --cflags
|
||||||
|
OpenEXR` for the C++ flags required to compile against OpenEXR
|
||||||
|
headers; and `pkg-config --libs OpenEXR` for the linker flags required
|
||||||
|
to link against OpenEXR libraries.
|
||||||
|
|
||||||
Vendored
+14
-14
@@ -9,20 +9,20 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum _tagSND_DEVICE_ERROR {
|
typedef enum _tagSND_DEVICE_ERROR {
|
||||||
SNDDEV_ERROR_Open = 1,
|
SNDDEV_ERROR_Open = 1,
|
||||||
SNDDEV_ERROR_Close = 2,
|
SNDDEV_ERROR_Close = 2,
|
||||||
SNDDEV_ERROR_GetCaps = 3,
|
SNDDEV_ERROR_GetCaps = 3,
|
||||||
SNDDEV_ERROR_PrepareHeader = 4,
|
SNDDEV_ERROR_PrepareHeader = 4,
|
||||||
SNDDEV_ERROR_UnprepareHeader = 5,
|
SNDDEV_ERROR_UnprepareHeader = 5,
|
||||||
SNDDEV_ERROR_Reset = 6,
|
SNDDEV_ERROR_Reset = 6,
|
||||||
SNDDEV_ERROR_Restart = 7,
|
SNDDEV_ERROR_Restart = 7,
|
||||||
SNDDEV_ERROR_GetPosition = 8,
|
SNDDEV_ERROR_GetPosition = 8,
|
||||||
SNDDEV_ERROR_Write = 9,
|
SNDDEV_ERROR_Write = 9,
|
||||||
SNDDEV_ERROR_Pause = 10,
|
SNDDEV_ERROR_Pause = 10,
|
||||||
SNDDEV_ERROR_Stop = 11,
|
SNDDEV_ERROR_Stop = 11,
|
||||||
SNDDEV_ERROR_Start = 12,
|
SNDDEV_ERROR_Start = 12,
|
||||||
SNDDEV_ERROR_AddBuffer = 13,
|
SNDDEV_ERROR_AddBuffer = 13,
|
||||||
SNDDEV_ERROR_Query = 14
|
SNDDEV_ERROR_Query = 14
|
||||||
} SNDDEV_ERR;
|
} SNDDEV_ERR;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
+9
-9
@@ -10,20 +10,20 @@ extern "C" {
|
|||||||
|
|
||||||
/*--- DirectShow Reference - DirectShow Enumerated Types */
|
/*--- DirectShow Reference - DirectShow Enumerated Types */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MEDIA_TRANSPORT_PACKET,
|
MEDIA_TRANSPORT_PACKET,
|
||||||
MEDIA_ELEMENTARY_STREAM,
|
MEDIA_ELEMENTARY_STREAM,
|
||||||
MEDIA_MPEG2_PSI,
|
MEDIA_MPEG2_PSI,
|
||||||
MEDIA_TRANSPORT_PAYLOAD
|
MEDIA_TRANSPORT_PAYLOAD
|
||||||
} MEDIA_SAMPLE_CONTENT;
|
} MEDIA_SAMPLE_CONTENT;
|
||||||
/*--- DirectShow Reference - DirectShow Structures */
|
/*--- DirectShow Reference - DirectShow Structures */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DWORD dwOffset;
|
DWORD dwOffset;
|
||||||
DWORD dwPacketLength;
|
DWORD dwPacketLength;
|
||||||
DWORD dwStride;
|
DWORD dwStride;
|
||||||
} MPEG2_TRANSPORT_STRIDE;
|
} MPEG2_TRANSPORT_STRIDE;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ULONG ulPID;
|
ULONG ulPID;
|
||||||
MEDIA_SAMPLE_CONTENT MediaSampleContent ;
|
MEDIA_SAMPLE_CONTENT MediaSampleContent ;
|
||||||
} PID_MAP;
|
} PID_MAP;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Vendored
+114
-114
@@ -322,7 +322,7 @@ typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
|
|||||||
#define DDSCAPS_OPTIMIZED 0x80000000
|
#define DDSCAPS_OPTIMIZED 0x80000000
|
||||||
|
|
||||||
typedef struct _DDSCAPS {
|
typedef struct _DDSCAPS {
|
||||||
DWORD dwCaps; /* capabilities of surface wanted */
|
DWORD dwCaps; /* capabilities of surface wanted */
|
||||||
} DDSCAPS,*LPDDSCAPS;
|
} DDSCAPS,*LPDDSCAPS;
|
||||||
|
|
||||||
/* DDSCAPS2.dwCaps2 */
|
/* DDSCAPS2.dwCaps2 */
|
||||||
@@ -368,21 +368,21 @@ typedef struct _DDSCAPS {
|
|||||||
#define DDSCAPS2_STEREOSURFACELEFT 0x00080000
|
#define DDSCAPS2_STEREOSURFACELEFT 0x00080000
|
||||||
|
|
||||||
typedef struct _DDSCAPS2 {
|
typedef struct _DDSCAPS2 {
|
||||||
DWORD dwCaps; /* capabilities of surface wanted */
|
DWORD dwCaps; /* capabilities of surface wanted */
|
||||||
DWORD dwCaps2; /* additional capabilities */
|
DWORD dwCaps2; /* additional capabilities */
|
||||||
DWORD dwCaps3; /* reserved capabilities */
|
DWORD dwCaps3; /* reserved capabilities */
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwCaps4; /* low word is the depth for a volume texture */
|
DWORD dwCaps4; /* low word is the depth for a volume texture */
|
||||||
DWORD dwVolumeDepth;
|
DWORD dwVolumeDepth;
|
||||||
} DUMMYUNIONNAME1;
|
} DUMMYUNIONNAME1;
|
||||||
} DDSCAPS2,*LPDDSCAPS2;
|
} DDSCAPS2,*LPDDSCAPS2;
|
||||||
|
|
||||||
typedef struct _DDSCAPSEX {
|
typedef struct _DDSCAPSEX {
|
||||||
DWORD dwCaps2;
|
DWORD dwCaps2;
|
||||||
DWORD dwCaps3;
|
DWORD dwCaps3;
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwCaps4;
|
DWORD dwCaps4;
|
||||||
DWORD dwVolumeDepth;
|
DWORD dwVolumeDepth;
|
||||||
} DUMMYUNIONNAME1;
|
} DUMMYUNIONNAME1;
|
||||||
} DDSCAPSEX,*LPDDSCAPSEX;
|
} DDSCAPSEX,*LPDDSCAPSEX;
|
||||||
|
|
||||||
@@ -712,12 +712,12 @@ typedef DDCAPS *LPDDCAPS;
|
|||||||
|
|
||||||
typedef struct _DDCOLORKEY
|
typedef struct _DDCOLORKEY
|
||||||
{
|
{
|
||||||
DWORD dwColorSpaceLowValue;/* low boundary of color space that is to
|
DWORD dwColorSpaceLowValue;/* low boundary of color space that is to
|
||||||
* be treated as Color Key, inclusive
|
* be treated as Color Key, inclusive
|
||||||
*/
|
*/
|
||||||
DWORD dwColorSpaceHighValue;/* high boundary of color space that is
|
DWORD dwColorSpaceHighValue;/* high boundary of color space that is
|
||||||
* to be treated as Color Key, inclusive
|
* to be treated as Color Key, inclusive
|
||||||
*/
|
*/
|
||||||
} DDCOLORKEY,*LPDDCOLORKEY;
|
} DDCOLORKEY,*LPDDCOLORKEY;
|
||||||
|
|
||||||
/* ddCKEYCAPS bits */
|
/* ddCKEYCAPS bits */
|
||||||
@@ -746,40 +746,40 @@ typedef struct _DDPIXELFORMAT {
|
|||||||
DWORD dwFlags; /* 4: pixel format flags */
|
DWORD dwFlags; /* 4: pixel format flags */
|
||||||
DWORD dwFourCC; /* 8: (FOURCC code) */
|
DWORD dwFourCC; /* 8: (FOURCC code) */
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwRGBBitCount; /* C: how many bits per pixel */
|
DWORD dwRGBBitCount; /* C: how many bits per pixel */
|
||||||
DWORD dwYUVBitCount; /* C: how many bits per pixel */
|
DWORD dwYUVBitCount; /* C: how many bits per pixel */
|
||||||
DWORD dwZBufferBitDepth; /* C: how many bits for z buffers */
|
DWORD dwZBufferBitDepth; /* C: how many bits for z buffers */
|
||||||
DWORD dwAlphaBitDepth; /* C: how many bits for alpha channels*/
|
DWORD dwAlphaBitDepth; /* C: how many bits for alpha channels*/
|
||||||
DWORD dwLuminanceBitCount;
|
DWORD dwLuminanceBitCount;
|
||||||
DWORD dwBumpBitCount;
|
DWORD dwBumpBitCount;
|
||||||
} DUMMYUNIONNAME1;
|
} DUMMYUNIONNAME1;
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwRBitMask; /* 10: mask for red bit*/
|
DWORD dwRBitMask; /* 10: mask for red bit*/
|
||||||
DWORD dwYBitMask; /* 10: mask for Y bits*/
|
DWORD dwYBitMask; /* 10: mask for Y bits*/
|
||||||
DWORD dwStencilBitDepth;
|
DWORD dwStencilBitDepth;
|
||||||
DWORD dwLuminanceBitMask;
|
DWORD dwLuminanceBitMask;
|
||||||
DWORD dwBumpDuBitMask;
|
DWORD dwBumpDuBitMask;
|
||||||
} DUMMYUNIONNAME2;
|
} DUMMYUNIONNAME2;
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwGBitMask; /* 14: mask for green bits*/
|
DWORD dwGBitMask; /* 14: mask for green bits*/
|
||||||
DWORD dwUBitMask; /* 14: mask for U bits*/
|
DWORD dwUBitMask; /* 14: mask for U bits*/
|
||||||
DWORD dwZBitMask;
|
DWORD dwZBitMask;
|
||||||
DWORD dwBumpDvBitMask;
|
DWORD dwBumpDvBitMask;
|
||||||
} DUMMYUNIONNAME3;
|
} DUMMYUNIONNAME3;
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwBBitMask; /* 18: mask for blue bits*/
|
DWORD dwBBitMask; /* 18: mask for blue bits*/
|
||||||
DWORD dwVBitMask; /* 18: mask for V bits*/
|
DWORD dwVBitMask; /* 18: mask for V bits*/
|
||||||
DWORD dwStencilBitMask;
|
DWORD dwStencilBitMask;
|
||||||
DWORD dwBumpLuminanceBitMask;
|
DWORD dwBumpLuminanceBitMask;
|
||||||
} DUMMYUNIONNAME4;
|
} DUMMYUNIONNAME4;
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwRGBAlphaBitMask; /* 1C: mask for alpha channel */
|
DWORD dwRGBAlphaBitMask; /* 1C: mask for alpha channel */
|
||||||
DWORD dwYUVAlphaBitMask; /* 1C: mask for alpha channel */
|
DWORD dwYUVAlphaBitMask; /* 1C: mask for alpha channel */
|
||||||
DWORD dwLuminanceAlphaBitMask;
|
DWORD dwLuminanceAlphaBitMask;
|
||||||
DWORD dwRGBZBitMask; /* 1C: mask for Z channel */
|
DWORD dwRGBZBitMask; /* 1C: mask for Z channel */
|
||||||
DWORD dwYUVZBitMask; /* 1C: mask for Z channel */
|
DWORD dwYUVZBitMask; /* 1C: mask for Z channel */
|
||||||
} DUMMYUNIONNAME5;
|
} DUMMYUNIONNAME5;
|
||||||
/* 20: next structure */
|
/* 20: next structure */
|
||||||
} DDPIXELFORMAT,*LPDDPIXELFORMAT;
|
} DDPIXELFORMAT,*LPDDPIXELFORMAT;
|
||||||
|
|
||||||
#ifndef MAKEFOURCC
|
#ifndef MAKEFOURCC
|
||||||
@@ -980,79 +980,79 @@ typedef struct _DDPIXELFORMAT {
|
|||||||
|
|
||||||
typedef struct _DDSURFACEDESC
|
typedef struct _DDSURFACEDESC
|
||||||
{
|
{
|
||||||
DWORD dwSize; /* 0: size of the DDSURFACEDESC structure*/
|
DWORD dwSize; /* 0: size of the DDSURFACEDESC structure*/
|
||||||
DWORD dwFlags; /* 4: determines what fields are valid*/
|
DWORD dwFlags; /* 4: determines what fields are valid*/
|
||||||
DWORD dwHeight; /* 8: height of surface to be created*/
|
DWORD dwHeight; /* 8: height of surface to be created*/
|
||||||
DWORD dwWidth; /* C: width of input surface*/
|
DWORD dwWidth; /* C: width of input surface*/
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
LONG lPitch; /* 10: distance to start of next line (return value only)*/
|
LONG lPitch; /* 10: distance to start of next line (return value only)*/
|
||||||
DWORD dwLinearSize;
|
DWORD dwLinearSize;
|
||||||
} DUMMYUNIONNAME1;
|
} DUMMYUNIONNAME1;
|
||||||
DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
|
DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
|
DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
|
||||||
DWORD dwZBufferBitDepth;/*18: depth of Z buffer requested*/
|
DWORD dwZBufferBitDepth;/*18: depth of Z buffer requested*/
|
||||||
DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
|
DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
|
||||||
} DUMMYUNIONNAME2;
|
} DUMMYUNIONNAME2;
|
||||||
DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
|
DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
|
||||||
DWORD dwReserved; /* 20:reserved*/
|
DWORD dwReserved; /* 20:reserved*/
|
||||||
LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
|
LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
|
||||||
DDCOLORKEY ddckCKDestOverlay;/* 28: CK for dest overlay use*/
|
DDCOLORKEY ddckCKDestOverlay;/* 28: CK for dest overlay use*/
|
||||||
DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
|
DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
|
||||||
DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
|
DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
|
||||||
DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
|
DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
|
||||||
DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
|
DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
|
||||||
DDSCAPS ddsCaps; /* 68: direct draw surface caps */
|
DDSCAPS ddsCaps; /* 68: direct draw surface caps */
|
||||||
} DDSURFACEDESC,*LPDDSURFACEDESC;
|
} DDSURFACEDESC,*LPDDSURFACEDESC;
|
||||||
|
|
||||||
typedef struct _DDSURFACEDESC2
|
typedef struct _DDSURFACEDESC2
|
||||||
{
|
{
|
||||||
DWORD dwSize; /* 0: size of the DDSURFACEDESC2 structure*/
|
DWORD dwSize; /* 0: size of the DDSURFACEDESC2 structure*/
|
||||||
DWORD dwFlags; /* 4: determines what fields are valid*/
|
DWORD dwFlags; /* 4: determines what fields are valid*/
|
||||||
DWORD dwHeight; /* 8: height of surface to be created*/
|
DWORD dwHeight; /* 8: height of surface to be created*/
|
||||||
DWORD dwWidth; /* C: width of input surface*/
|
DWORD dwWidth; /* C: width of input surface*/
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
LONG lPitch; /*10: distance to start of next line (return value only)*/
|
LONG lPitch; /*10: distance to start of next line (return value only)*/
|
||||||
DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
|
DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
|
||||||
} DUMMYUNIONNAME1;
|
} DUMMYUNIONNAME1;
|
||||||
DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
|
DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
|
DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
|
||||||
DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
|
DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
|
||||||
DWORD dwSrcVBHandle;/* 18:source used in VB::Optimize */
|
DWORD dwSrcVBHandle;/* 18:source used in VB::Optimize */
|
||||||
} DUMMYUNIONNAME2;
|
} DUMMYUNIONNAME2;
|
||||||
DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
|
DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
|
||||||
DWORD dwReserved; /* 20:reserved*/
|
DWORD dwReserved; /* 20:reserved*/
|
||||||
LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
|
LPVOID lpSurface; /* 24:pointer to the associated surface memory*/
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DDCOLORKEY ddckCKDestOverlay; /* 28: CK for dest overlay use*/
|
DDCOLORKEY ddckCKDestOverlay; /* 28: CK for dest overlay use*/
|
||||||
DWORD dwEmptyFaceColor; /* 28: color for empty cubemap faces */
|
DWORD dwEmptyFaceColor; /* 28: color for empty cubemap faces */
|
||||||
} DUMMYUNIONNAME3;
|
} DUMMYUNIONNAME3;
|
||||||
DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
|
DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
|
||||||
DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
|
DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
|
||||||
DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
|
DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
|
||||||
|
|
||||||
__extension__ union {
|
__extension__ union {
|
||||||
DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
|
DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
|
||||||
DWORD dwFVF; /* 48: vertex format description of vertex buffers */
|
DWORD dwFVF; /* 48: vertex format description of vertex buffers */
|
||||||
} DUMMYUNIONNAME4;
|
} DUMMYUNIONNAME4;
|
||||||
DDSCAPS2 ddsCaps; /* 68: DDraw surface caps */
|
DDSCAPS2 ddsCaps; /* 68: DDraw surface caps */
|
||||||
DWORD dwTextureStage; /* 78: stage in multitexture cascade */
|
DWORD dwTextureStage; /* 78: stage in multitexture cascade */
|
||||||
} DDSURFACEDESC2,*LPDDSURFACEDESC2;
|
} DDSURFACEDESC2,*LPDDSURFACEDESC2;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _DDARGB {
|
typedef struct _DDARGB {
|
||||||
BYTE blue;
|
BYTE blue;
|
||||||
BYTE green;
|
BYTE green;
|
||||||
BYTE red;
|
BYTE red;
|
||||||
BYTE alpha;
|
BYTE alpha;
|
||||||
} DDARGB, *LPDDARGB;
|
} DDARGB, *LPDDARGB;
|
||||||
|
|
||||||
typedef struct _DDRGBA {
|
typedef struct _DDRGBA {
|
||||||
BYTE red;
|
BYTE red;
|
||||||
BYTE green;
|
BYTE green;
|
||||||
BYTE blue;
|
BYTE blue;
|
||||||
BYTE alpha;
|
BYTE alpha;
|
||||||
} DDRGBA, *LPDDRGBA;
|
} DDRGBA, *LPDDRGBA;
|
||||||
|
|
||||||
|
|
||||||
@@ -1066,22 +1066,22 @@ typedef struct _DDRGBA {
|
|||||||
#define DDCOLOR_COLORENABLE 0x00000040
|
#define DDCOLOR_COLORENABLE 0x00000040
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
DWORD dwFlags;
|
DWORD dwFlags;
|
||||||
LONG lBrightness;
|
LONG lBrightness;
|
||||||
LONG lContrast;
|
LONG lContrast;
|
||||||
LONG lHue;
|
LONG lHue;
|
||||||
LONG lSaturation;
|
LONG lSaturation;
|
||||||
LONG lSharpness;
|
LONG lSharpness;
|
||||||
LONG lGamma;
|
LONG lGamma;
|
||||||
LONG lColorEnable;
|
LONG lColorEnable;
|
||||||
DWORD dwReserved1;
|
DWORD dwReserved1;
|
||||||
} DDCOLORCONTROL,*LPDDCOLORCONTROL;
|
} DDCOLORCONTROL,*LPDDCOLORCONTROL;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
WORD red[256];
|
WORD red[256];
|
||||||
WORD green[256];
|
WORD green[256];
|
||||||
WORD blue[256];
|
WORD blue[256];
|
||||||
} DDGAMMARAMP,*LPDDGAMMARAMP;
|
} DDGAMMARAMP,*LPDDGAMMARAMP;
|
||||||
|
|
||||||
typedef BOOL (CALLBACK *LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
|
typedef BOOL (CALLBACK *LPDDENUMCALLBACKA)(GUID *, LPSTR, LPSTR, LPVOID);
|
||||||
@@ -1161,7 +1161,7 @@ typedef struct _DDBLTFX
|
|||||||
{
|
{
|
||||||
DWORD dwFillColor; /* color in RGB or Palettized */
|
DWORD dwFillColor; /* color in RGB or Palettized */
|
||||||
DWORD dwFillDepth; /* depth value for z-buffer */
|
DWORD dwFillDepth; /* depth value for z-buffer */
|
||||||
DWORD dwFillPixel; /* pixel val for RGBA or RGBZ */
|
DWORD dwFillPixel; /* pixel val for RGBA or RGBZ */
|
||||||
LPDIRECTDRAWSURFACE lpDDSPattern; /* Surface to use as pattern */
|
LPDIRECTDRAWSURFACE lpDDSPattern; /* Surface to use as pattern */
|
||||||
} DUMMYUNIONNAME5;
|
} DUMMYUNIONNAME5;
|
||||||
DDCOLORKEY ddckDestColorkey; /* DestColorkey override */
|
DDCOLORKEY ddckDestColorkey; /* DestColorkey override */
|
||||||
|
|||||||
Vendored
+18
-18
@@ -932,14 +932,14 @@ DECLARE_INTERFACE_(IDirectSoundNotify,IUnknown)
|
|||||||
#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX
|
#define DS3D_DEFAULTCONEOUTSIDEVOLUME DSBVOLUME_MAX
|
||||||
|
|
||||||
typedef struct _DS3DLISTENER {
|
typedef struct _DS3DLISTENER {
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
D3DVECTOR vPosition;
|
D3DVECTOR vPosition;
|
||||||
D3DVECTOR vVelocity;
|
D3DVECTOR vVelocity;
|
||||||
D3DVECTOR vOrientFront;
|
D3DVECTOR vOrientFront;
|
||||||
D3DVECTOR vOrientTop;
|
D3DVECTOR vOrientTop;
|
||||||
D3DVALUE flDistanceFactor;
|
D3DVALUE flDistanceFactor;
|
||||||
D3DVALUE flRolloffFactor;
|
D3DVALUE flRolloffFactor;
|
||||||
D3DVALUE flDopplerFactor;
|
D3DVALUE flDopplerFactor;
|
||||||
} DS3DLISTENER, *LPDS3DLISTENER;
|
} DS3DLISTENER, *LPDS3DLISTENER;
|
||||||
|
|
||||||
typedef const DS3DLISTENER *LPCDS3DLISTENER;
|
typedef const DS3DLISTENER *LPCDS3DLISTENER;
|
||||||
@@ -1019,16 +1019,16 @@ DECLARE_INTERFACE_(IDirectSound3DListener,IUnknown)
|
|||||||
* IDirectSound3DBuffer interface
|
* IDirectSound3DBuffer interface
|
||||||
*/
|
*/
|
||||||
typedef struct _DS3DBUFFER {
|
typedef struct _DS3DBUFFER {
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
D3DVECTOR vPosition;
|
D3DVECTOR vPosition;
|
||||||
D3DVECTOR vVelocity;
|
D3DVECTOR vVelocity;
|
||||||
DWORD dwInsideConeAngle;
|
DWORD dwInsideConeAngle;
|
||||||
DWORD dwOutsideConeAngle;
|
DWORD dwOutsideConeAngle;
|
||||||
D3DVECTOR vConeOrientation;
|
D3DVECTOR vConeOrientation;
|
||||||
LONG lConeOutsideVolume;
|
LONG lConeOutsideVolume;
|
||||||
D3DVALUE flMinDistance;
|
D3DVALUE flMinDistance;
|
||||||
D3DVALUE flMaxDistance;
|
D3DVALUE flMaxDistance;
|
||||||
DWORD dwMode;
|
DWORD dwMode;
|
||||||
} DS3DBUFFER, *LPDS3DBUFFER;
|
} DS3DBUFFER, *LPDS3DBUFFER;
|
||||||
|
|
||||||
typedef const DS3DBUFFER *LPCDS3DBUFFER;
|
typedef const DS3DBUFFER *LPCDS3DBUFFER;
|
||||||
|
|||||||
Vendored
+14
-14
@@ -24,24 +24,24 @@
|
|||||||
#define AMCONTROL_PAD_TO_16x9 0x00000004
|
#define AMCONTROL_PAD_TO_16x9 0x00000004
|
||||||
|
|
||||||
enum AM_MPEG2Level {
|
enum AM_MPEG2Level {
|
||||||
AM_MPEG2Level_Low = 1,
|
AM_MPEG2Level_Low = 1,
|
||||||
AM_MPEG2Level_Main,
|
AM_MPEG2Level_Main,
|
||||||
AM_MPEG2Level_High1440,
|
AM_MPEG2Level_High1440,
|
||||||
AM_MPEG2Level_High
|
AM_MPEG2Level_High
|
||||||
};
|
};
|
||||||
enum AM_MPEG2Profile {
|
enum AM_MPEG2Profile {
|
||||||
AM_MPEG2Profile_Simple = 1,
|
AM_MPEG2Profile_Simple = 1,
|
||||||
AM_MPEG2Profile_Main,
|
AM_MPEG2Profile_Main,
|
||||||
AM_MPEG2Profile_SNRScalable,
|
AM_MPEG2Profile_SNRScalable,
|
||||||
AM_MPEG2Profile_SpatiallyScalable,
|
AM_MPEG2Profile_SpatiallyScalable,
|
||||||
AM_MPEG2Profile_High
|
AM_MPEG2Profile_High
|
||||||
};
|
};
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AM_RATE_ChangeRate = 1,
|
AM_RATE_ChangeRate = 1,
|
||||||
AM_RATE_FullDataRateMax = 2,
|
AM_RATE_FullDataRateMax = 2,
|
||||||
AM_RATE_ReverseDecode = 3,
|
AM_RATE_ReverseDecode = 3,
|
||||||
AM_RATE_DecoderPosition = 4,
|
AM_RATE_DecoderPosition = 4,
|
||||||
AM_RATE_DecoderVersion = 5
|
AM_RATE_DecoderVersion = 5
|
||||||
} AM_PROPERTY_DVD_RATE_CHANGE;
|
} AM_PROPERTY_DVD_RATE_CHANGE;
|
||||||
|
|
||||||
typedef struct tagVIDEOINFOHEADER2 {
|
typedef struct tagVIDEOINFOHEADER2 {
|
||||||
|
|||||||
Vendored
+2
-2
@@ -58,8 +58,8 @@ extern "C" {
|
|||||||
#define EC_USER 0x8000
|
#define EC_USER 0x8000
|
||||||
/*--- DirectShow Reference - DirectShow Structures */
|
/*--- DirectShow Reference - DirectShow Structures */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
HRESULT hrStatus;
|
HRESULT hrStatus;
|
||||||
void *pData;
|
void *pData;
|
||||||
} AM_WMT_EVENT_DATA;
|
} AM_WMT_EVENT_DATA;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Vendored
+60
-60
@@ -5,187 +5,187 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK,
|
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK,
|
||||||
0x36523B13,0x8EE5,0x11d1,0x8C,0xA3,0x00,0x60,0xB0,0x57,0x66,0x4A)
|
0x36523B13,0x8EE5,0x11d1,0x8C,0xA3,0x00,0x60,0xB0,0x57,0x66,0x4A)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES,
|
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES,
|
||||||
0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_WMDRM_TRANSPORT,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_WMDRM_TRANSPORT,
|
||||||
0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27)
|
0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO,
|
||||||
0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO,
|
OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO,
|
||||||
0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_VIDEOINFO2,
|
OUR_GUID_ENTRY(FORMAT_VIDEOINFO2,
|
||||||
0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x0,0x0,0xc0,0xcc,0x16,0xba)
|
0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x0,0x0,0xc0,0xcc,0x16,0xba)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM,
|
||||||
0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT,
|
||||||
0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO,
|
||||||
0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3,
|
||||||
0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE,
|
||||||
0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO,
|
||||||
0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK,
|
OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK,
|
||||||
0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x04f,0xc3,0x1d,0x60)
|
0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x04f,0xc3,0x1d,0x60)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION,
|
OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION,
|
||||||
0xe06d802e,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d802e,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI,
|
||||||
0xe06d802f,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d802f,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI,
|
||||||
0xe06d8030,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8030,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER,
|
||||||
0xe06d8031,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8031,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_MPEG2Video,
|
OUR_GUID_ENTRY(FORMAT_MPEG2Video,
|
||||||
0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_DolbyAC3,
|
OUR_GUID_ENTRY(FORMAT_DolbyAC3,
|
||||||
0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_MPEG2Audio,
|
OUR_GUID_ENTRY(FORMAT_MPEG2Audio,
|
||||||
0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio,
|
OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio,
|
||||||
0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_AC3,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_AC3,
|
||||||
0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00)
|
0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic,
|
||||||
0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9)
|
0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt,
|
||||||
0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3)
|
0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange,
|
||||||
0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0)
|
0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_MPEG4_MediaType_Attributes,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_MPEG4_MediaType_Attributes,
|
||||||
0xff6c4bfa,0x7a9,0x4c7b,0xa2,0x37,0x67,0x2f,0x9d,0x68,0x6,0x5f)
|
0xff6c4bfa,0x7a9,0x4c7b,0xa2,0x37,0x67,0x2f,0x9d,0x68,0x6,0x5f)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE,
|
||||||
0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER,
|
||||||
0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR,
|
||||||
0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO,
|
||||||
0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO,
|
||||||
0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER,
|
||||||
0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR,
|
||||||
0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO,
|
||||||
0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC,
|
||||||
0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f)
|
0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER,
|
||||||
0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(IID_IKsInterfaceHandler,
|
OUR_GUID_ENTRY(IID_IKsInterfaceHandler,
|
||||||
0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(IID_IKsDataTypeHandler,
|
OUR_GUID_ENTRY(IID_IKsDataTypeHandler,
|
||||||
0x5FFBAA02L,0x49A3,0x11D0,0x9F,0x36,0x00,0xAA,0x00,0xA2,0x16,0xA1)
|
0x5FFBAA02L,0x49A3,0x11D0,0x9F,0x36,0x00,0xAA,0x00,0xA2,0x16,0xA1)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(IID_IKsPin,
|
OUR_GUID_ENTRY(IID_IKsPin,
|
||||||
0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1)
|
0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(IID_IKsControl,
|
OUR_GUID_ENTRY(IID_IKsControl,
|
||||||
0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(IID_IKsPinFactory,
|
OUR_GUID_ENTRY(IID_IKsPinFactory,
|
||||||
0xCD5EBE6BL,0x8B6E,0x11D1,0x8A,0xE0,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
0xCD5EBE6BL,0x8B6E,0x11D1,0x8A,0xE0,0x00,0xA0,0xC9,0x22,0x31,0x96)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_INTERFACESETID_Standard,
|
OUR_GUID_ENTRY(AM_INTERFACESETID_Standard,
|
||||||
0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
|
||||||
|
|
||||||
#if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
|
#if ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) || (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_SECTIONS,
|
OUR_GUID_ENTRY(MEDIATYPE_MPEG2_SECTIONS,
|
||||||
0x455f176c,0x4b06,0x47ce,0x9a,0xef,0x8c,0xae,0xf7,0x3d,0xf7,0xb5)
|
0x455f176c,0x4b06,0x47ce,0x9a,0xef,0x8c,0xae,0xf7,0x3d,0xf7,0xb5)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VERSIONED_TABLES,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VERSIONED_TABLES,
|
||||||
0x1ed988b0,0x3ffc,0x4523,0x87,0x25,0x34,0x7b,0xee,0xc1,0xa8,0xa0)
|
0x1ed988b0,0x3ffc,0x4523,0x87,0x25,0x34,0x7b,0xee,0xc1,0xa8,0xa0)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI,
|
||||||
0xb3c7397c,0xd303,0x414d,0xb3,0x3c,0x4e,0xd2,0xc9,0xd2,0x97,0x33)
|
0xb3c7397c,0xd303,0x414d,0xb3,0x3c,0x4e,0xd2,0xc9,0xd2,0x97,0x33)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI,
|
||||||
0xe9dd31a3,0x221d,0x4adb,0x85,0x32,0x9a,0xf3,0x9,0xc1,0xa4,0x8)
|
0xe9dd31a3,0x221d,0x4adb,0x85,0x32,0x9a,0xf3,0x9,0xc1,0xa4,0x8)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_ISDB_SI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_ISDB_SI,
|
||||||
0xe89ad298,0x3601,0x4b06,0xaa,0xec,0x9d,0xde,0xed,0xcc,0x5b,0xd0)
|
0xe89ad298,0x3601,0x4b06,0xaa,0xec,0x9d,0xde,0xed,0xcc,0x5b,0xd0)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_TIF_SI,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_TIF_SI,
|
||||||
0xec232eb2,0xcb96,0x4191,0xb2,0x26,0xe,0xa1,0x29,0xf3,0x82,0x50)
|
0xec232eb2,0xcb96,0x4191,0xb2,0x26,0xe,0xa1,0x29,0xf3,0x82,0x50)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA,
|
||||||
0xc892e55b,0x252d,0x42b5,0xa3,0x16,0xd9,0x97,0xe7,0xa5,0xd9,0x95)
|
0xc892e55b,0x252d,0x42b5,0xa3,0x16,0xd9,0x97,0xe7,0xa5,0xd9,0x95)
|
||||||
#endif
|
#endif
|
||||||
/* ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) ||
|
/* ( (NTDDI_VERSION >= NTDDI_WINXPSP2) && (NTDDI_VERSION < NTDDI_WS03) ) ||
|
||||||
(NTDDI_VERSION >= NTDDI_WS03SP1) */
|
(NTDDI_VERSION >= NTDDI_WS03SP1) */
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE,
|
||||||
0x138aa9a4,0x1ee2,0x4c5b,0x98,0x8e,0x19,0xab,0xfd,0xbc,0x8a,0x11)
|
0x138aa9a4,0x1ee2,0x4c5b,0x98,0x8e,0x19,0xab,0xfd,0xbc,0x8a,0x11)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_UDCR_TRANSPORT,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_UDCR_TRANSPORT,
|
||||||
0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27)
|
0x18BEC4EA,0x4676,0x450e,0xB4,0x78,0x0C,0xD8,0x4C,0x54,0xB3,0x27)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_RAW,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_RAW,
|
||||||
0x0d7aed42,0xcb9a,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8)
|
0x0d7aed42,0xcb9a,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_PROCESSED,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PBDA_TRANSPORT_PROCESSED,
|
||||||
0xaf748dd4,0xd80,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8)
|
0xaf748dd4,0xd80,0x11db,0x97,0x5,0x0,0x50,0x56,0xc0,0x0,0x8)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_DTS,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_DTS,
|
||||||
0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS,
|
OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS,
|
||||||
0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange,
|
||||||
0x3577eb09,0x9582,0x477f,0xb2,0x9c,0xb0,0xc4,0x52,0xa4,0xff,0x9a)
|
0x3577eb09,0x9582,0x477f,0xb2,0x9c,0xb0,0xc4,0x52,0xa4,0xff,0x9a)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke,
|
||||||
0xae4720ae,0xaa71,0x42d8,0xb8,0x2a,0xff,0xfd,0xf5,0x8b,0x76,0xfd)
|
0xae4720ae,0xaa71,0x42d8,0xb8,0x2a,0xff,0xfd,0xf5,0x8b,0x76,0xfd)
|
||||||
|
|
||||||
OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep,
|
OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep,
|
||||||
0xc830acbd,0xab07,0x492f,0x88,0x52,0x45,0xb6,0x98,0x7c,0x29,0x79)
|
0xc830acbd,0xab07,0x492f,0x88,0x52,0x45,0xb6,0x98,0x7c,0x29,0x79)
|
||||||
#endif /* NTDDI_VERSION >= NTDDI_WINXP */
|
#endif /* NTDDI_VERSION >= NTDDI_WINXP */
|
||||||
|
|
||||||
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
#if (NTDDI_VERSION >= NTDDI_WS03SP1)
|
||||||
OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC_MI,
|
OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC_MI,
|
||||||
0x9c24a977,0x951,0x451a,0x80,0x6,0xe,0x49,0xbd,0x28,0xcd,0x5f)
|
0x9c24a977,0x951,0x451a,0x80,0x6,0xe,0x49,0xbd,0x28,0xcd,0x5f)
|
||||||
#endif /* NTDDI_VERSION >= NTDDI_WS03SP1 */
|
#endif /* NTDDI_VERSION >= NTDDI_WS03SP1 */
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
-4
@@ -2097,12 +2097,12 @@ typedef LONGLONG REFERENCE_TIME;
|
|||||||
DWORD dwMerit;
|
DWORD dwMerit;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
ULONG cPins;
|
ULONG cPins;
|
||||||
const REGFILTERPINS *rgPins;
|
const REGFILTERPINS *rgPins;
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
ULONG cPins2;
|
ULONG cPins2;
|
||||||
const REGFILTERPINS2 *rgPins2;
|
const REGFILTERPINS2 *rgPins2;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} REGFILTER2;
|
} REGFILTER2;
|
||||||
|
|||||||
+4254
File diff suppressed because it is too large
Load Diff
+99
@@ -0,0 +1,99 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_AVFFT_H
|
||||||
|
#define AVCODEC_AVFFT_H
|
||||||
|
|
||||||
|
typedef float FFTSample;
|
||||||
|
|
||||||
|
typedef struct FFTComplex {
|
||||||
|
FFTSample re, im;
|
||||||
|
} FFTComplex;
|
||||||
|
|
||||||
|
typedef struct FFTContext FFTContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up a complex FFT.
|
||||||
|
* @param nbits log2 of the length of the input array
|
||||||
|
* @param inverse if 0 perform the forward transform, if 1 perform the inverse
|
||||||
|
*/
|
||||||
|
FFTContext *av_fft_init(int nbits, int inverse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the permutation needed BEFORE calling ff_fft_calc().
|
||||||
|
*/
|
||||||
|
void av_fft_permute(FFTContext *s, FFTComplex *z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do a complex FFT with the parameters defined in av_fft_init(). The
|
||||||
|
* input data must be permuted before. No 1.0/sqrt(n) normalization is done.
|
||||||
|
*/
|
||||||
|
void av_fft_calc(FFTContext *s, FFTComplex *z);
|
||||||
|
|
||||||
|
void av_fft_end(FFTContext *s);
|
||||||
|
|
||||||
|
FFTContext *av_mdct_init(int nbits, int inverse, double scale);
|
||||||
|
void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_mdct_end(FFTContext *s);
|
||||||
|
|
||||||
|
/* Real Discrete Fourier Transform */
|
||||||
|
|
||||||
|
enum RDFTransformType {
|
||||||
|
DFT_R2C,
|
||||||
|
IDFT_C2R,
|
||||||
|
IDFT_R2C,
|
||||||
|
DFT_C2R,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct RDFTContext RDFTContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up a real FFT.
|
||||||
|
* @param nbits log2 of the length of the input array
|
||||||
|
* @param trans the type of transform
|
||||||
|
*/
|
||||||
|
RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
|
||||||
|
void av_rdft_calc(RDFTContext *s, FFTSample *data);
|
||||||
|
void av_rdft_end(RDFTContext *s);
|
||||||
|
|
||||||
|
/* Discrete Cosine Transform */
|
||||||
|
|
||||||
|
typedef struct DCTContext DCTContext;
|
||||||
|
|
||||||
|
enum DCTTransformType {
|
||||||
|
DCT_II = 0,
|
||||||
|
DCT_III,
|
||||||
|
DCT_I,
|
||||||
|
DST_I,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up DCT.
|
||||||
|
* @param nbits size of the input array:
|
||||||
|
* (1 << nbits) for DCT-II, DCT-III and DST-I
|
||||||
|
* (1 << nbits) + 1 for DCT-I
|
||||||
|
*
|
||||||
|
* @note the first element of the input of DST-I is ignored
|
||||||
|
*/
|
||||||
|
DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
|
||||||
|
void av_dct_calc(DCTContext *s, FFTSample *data);
|
||||||
|
void av_dct_end (DCTContext *s);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_AVFFT_H */
|
||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* DXVA2 HW acceleration
|
||||||
|
*
|
||||||
|
* copyright (c) 2009 Laurent Aimar
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_DXVA_H
|
||||||
|
#define AVCODEC_DXVA_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include <dxva2api.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to provides the necessary configurations and data
|
||||||
|
* to the DXVA2 FFmpeg HWAccel implementation.
|
||||||
|
*
|
||||||
|
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||||
|
*/
|
||||||
|
struct dxva_context {
|
||||||
|
/**
|
||||||
|
* DXVA2 decoder object
|
||||||
|
*/
|
||||||
|
IDirectXVideoDecoder *decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DXVA2 configuration used to create the decoder
|
||||||
|
*/
|
||||||
|
const DXVA2_ConfigPictureDecode *cfg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of surface in the surface array
|
||||||
|
*/
|
||||||
|
unsigned surface_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of Direct3D surfaces used to create the decoder
|
||||||
|
*/
|
||||||
|
LPDIRECT3DSURFACE9 *surface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A bit field configuring the workarounds needed for using the decoder
|
||||||
|
*/
|
||||||
|
uint64_t workaround;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private to the FFmpeg AVHWAccel implementation
|
||||||
|
*/
|
||||||
|
unsigned report_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* AVCODEC_DXVA_H */
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Libav.
|
||||||
|
*
|
||||||
|
* Libav is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Libav 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with Libav; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* This header is provided for compatibility only and will be removed
|
||||||
|
* on next major bump
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_OPT_H
|
||||||
|
#define AVCODEC_OPT_H
|
||||||
|
|
||||||
|
#include "libavcodec/version.h"
|
||||||
|
|
||||||
|
#if FF_API_OPT_H
|
||||||
|
#include "libavutil/opt.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVCODEC_OPT_H */
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
/*
|
||||||
|
* Video Acceleration API (shared data between FFmpeg and the video player)
|
||||||
|
* HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008-2009 Splitted-Desktop Systems
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VAAPI_H
|
||||||
|
#define AVCODEC_VAAPI_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \defgroup VAAPI_Decoding VA API Decoding
|
||||||
|
* \ingroup Decoder
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to share data between the FFmpeg library and
|
||||||
|
* the client video application.
|
||||||
|
* This shall be zero-allocated and available as
|
||||||
|
* AVCodecContext.hwaccel_context. All user members can be set once
|
||||||
|
* during initialization or through each AVCodecContext.get_buffer()
|
||||||
|
* function call. In any case, they must be valid prior to calling
|
||||||
|
* decoding functions.
|
||||||
|
*/
|
||||||
|
struct vaapi_context {
|
||||||
|
/**
|
||||||
|
* Window system dependent data
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
void *display;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
uint32_t config_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context ID (video decode pipeline)
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
uint32_t context_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VAPictureParameterBuffer ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
uint32_t pic_param_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VAIQMatrixBuffer ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
uint32_t iq_matrix_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VABitPlaneBuffer ID (for VC-1 decoding)
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
uint32_t bitplane_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Slice parameter/data buffer IDs
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
uint32_t *slice_buf_ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of effective slice buffer IDs to send to the HW
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
unsigned int n_slice_buf_ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of pre-allocated slice_buf_ids
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
unsigned int slice_buf_ids_alloc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pointer to VASliceParameterBuffers
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
void *slice_params;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of a VASliceParameterBuffer element
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
unsigned int slice_param_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of pre-allocated slice_params
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
unsigned int slice_params_alloc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of slices currently filled in
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
unsigned int slice_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pointer to slice data buffer base
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
const uint8_t *slice_data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current size of slice data
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
uint32_t slice_data_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VAAPI_H */
|
||||||
+88
@@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* The Video Decode and Presentation API for UNIX (VDPAU) is used for
|
||||||
|
* hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 NVIDIA
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VDPAU_H
|
||||||
|
#define AVCODEC_VDPAU_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \defgroup Decoder VDPAU Decoder and Renderer
|
||||||
|
*
|
||||||
|
* VDPAU hardware acceleration has two modules
|
||||||
|
* - VDPAU decoding
|
||||||
|
* - VDPAU presentation
|
||||||
|
*
|
||||||
|
* The VDPAU decoding module parses all headers using FFmpeg
|
||||||
|
* parsing mechanisms and uses VDPAU for the actual decoding.
|
||||||
|
*
|
||||||
|
* As per the current implementation, the actual decoding
|
||||||
|
* and rendering (API calls) are done as part of the VDPAU
|
||||||
|
* presentation (vo_vdpau.c) module.
|
||||||
|
*
|
||||||
|
* \defgroup VDPAU_Decoding VDPAU Decoding
|
||||||
|
* \ingroup Decoder
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <vdpau/vdpau.h>
|
||||||
|
#include <vdpau/vdpau_x11.h>
|
||||||
|
|
||||||
|
/** \brief The videoSurface is used for rendering. */
|
||||||
|
#define FF_VDPAU_STATE_USED_FOR_RENDER 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief The videoSurface is needed for reference/prediction.
|
||||||
|
* The codec manipulates this.
|
||||||
|
*/
|
||||||
|
#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief This structure is used as a callback between the FFmpeg
|
||||||
|
* decoder (vd_) and presentation (vo_) module.
|
||||||
|
* This is used for defining a video frame containing surface,
|
||||||
|
* picture parameter, bitstream information etc which are passed
|
||||||
|
* between the FFmpeg decoder and its clients.
|
||||||
|
*/
|
||||||
|
struct vdpau_render_state {
|
||||||
|
VdpVideoSurface surface; ///< Used as rendered surface, never changed.
|
||||||
|
|
||||||
|
int state; ///< Holds FF_VDPAU_STATE_* values.
|
||||||
|
|
||||||
|
/** Describe size/location of the compressed video data.
|
||||||
|
Set to 0 when freeing bitstream_buffers. */
|
||||||
|
int bitstream_buffers_allocated;
|
||||||
|
int bitstream_buffers_used;
|
||||||
|
/** The user is responsible for freeing this buffer using av_freep(). */
|
||||||
|
VdpBitstreamBuffer *bitstream_buffers;
|
||||||
|
|
||||||
|
/** picture parameter information for all supported codecs */
|
||||||
|
union VdpPictureInfo {
|
||||||
|
VdpPictureInfoH264 h264;
|
||||||
|
VdpPictureInfoMPEG1Or2 mpeg;
|
||||||
|
VdpPictureInfoVC1 vc1;
|
||||||
|
VdpPictureInfoMPEG4Part2 mpeg4;
|
||||||
|
} info;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* @}*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VDPAU_H */
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VERSION_H
|
||||||
|
#define AVCODEC_VERSION_H
|
||||||
|
|
||||||
|
#define LIBAVCODEC_VERSION_MAJOR 53
|
||||||
|
#define LIBAVCODEC_VERSION_MINOR 7
|
||||||
|
#define LIBAVCODEC_VERSION_MICRO 0
|
||||||
|
|
||||||
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
LIBAVCODEC_VERSION_MINOR, \
|
||||||
|
LIBAVCODEC_VERSION_MICRO)
|
||||||
|
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
LIBAVCODEC_VERSION_MINOR, \
|
||||||
|
LIBAVCODEC_VERSION_MICRO)
|
||||||
|
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Those FF_API_* defines are not part of public API.
|
||||||
|
* They may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
#ifndef FF_API_PALETTE_CONTROL
|
||||||
|
#define FF_API_PALETTE_CONTROL (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_SAMPLE_FMT
|
||||||
|
#define FF_API_OLD_SAMPLE_FMT (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_AUDIOCONVERT
|
||||||
|
#define FF_API_OLD_AUDIOCONVERT (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ANTIALIAS_ALGO
|
||||||
|
#define FF_API_ANTIALIAS_ALGO (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_REQUEST_CHANNELS
|
||||||
|
#define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OPT_H
|
||||||
|
#define FF_API_OPT_H (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_THREAD_INIT
|
||||||
|
#define FF_API_THREAD_INIT (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_FF_PICT_TYPES
|
||||||
|
#define FF_API_OLD_FF_PICT_TYPES (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_FLAC_GLOBAL_OPTS
|
||||||
|
#define FF_API_FLAC_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GET_PIX_FMT_NAME
|
||||||
|
#define FF_API_GET_PIX_FMT_NAME (LIBAVCODEC_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VERSION_H */
|
||||||
+151
@@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2003 Ivan Kalvachev
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_XVMC_H
|
||||||
|
#define AVCODEC_XVMC_H
|
||||||
|
|
||||||
|
#include <X11/extensions/XvMC.h>
|
||||||
|
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct
|
||||||
|
the number is 1337 speak for the letters IDCT MCo (motion compensation) */
|
||||||
|
|
||||||
|
struct xvmc_pix_fmt {
|
||||||
|
/** The field contains the special constant value AV_XVMC_ID.
|
||||||
|
It is used as a test that the application correctly uses the API,
|
||||||
|
and that there is no corruption caused by pixel routines.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int xvmc_id;
|
||||||
|
|
||||||
|
/** Pointer to the block array allocated by XvMCCreateBlocks().
|
||||||
|
The array has to be freed by XvMCDestroyBlocks().
|
||||||
|
Each group of 64 values represents one data block of differential
|
||||||
|
pixel information (in MoCo mode) or coefficients for IDCT.
|
||||||
|
- application - set the pointer during initialization
|
||||||
|
- libavcodec - fills coefficients/pixel data into the array
|
||||||
|
*/
|
||||||
|
short* data_blocks;
|
||||||
|
|
||||||
|
/** Pointer to the macroblock description array allocated by
|
||||||
|
XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks().
|
||||||
|
- application - set the pointer during initialization
|
||||||
|
- libavcodec - fills description data into the array
|
||||||
|
*/
|
||||||
|
XvMCMacroBlock* mv_blocks;
|
||||||
|
|
||||||
|
/** Number of macroblock descriptions that can be stored in the mv_blocks
|
||||||
|
array.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int allocated_mv_blocks;
|
||||||
|
|
||||||
|
/** Number of blocks that can be stored at once in the data_blocks array.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int allocated_data_blocks;
|
||||||
|
|
||||||
|
/** Indicate that the hardware would interpret data_blocks as IDCT
|
||||||
|
coefficients and perform IDCT on them.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int idct;
|
||||||
|
|
||||||
|
/** In MoCo mode it indicates that intra macroblocks are assumed to be in
|
||||||
|
unsigned format; same as the XVMC_INTRA_UNSIGNED flag.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int unsigned_intra;
|
||||||
|
|
||||||
|
/** Pointer to the surface allocated by XvMCCreateSurface().
|
||||||
|
It has to be freed by XvMCDestroySurface() on application exit.
|
||||||
|
It identifies the frame and its state on the video hardware.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_surface;
|
||||||
|
|
||||||
|
/** Set by the decoder before calling ff_draw_horiz_band(),
|
||||||
|
needed by the XvMCRenderSurface function. */
|
||||||
|
//@{
|
||||||
|
/** Pointer to the surface used as past reference
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_past_surface;
|
||||||
|
|
||||||
|
/** Pointer to the surface used as future reference
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_future_surface;
|
||||||
|
|
||||||
|
/** top/bottom field or frame
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
unsigned int picture_structure;
|
||||||
|
|
||||||
|
/** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
unsigned int flags;
|
||||||
|
//}@
|
||||||
|
|
||||||
|
/** Number of macroblock descriptions in the mv_blocks array
|
||||||
|
that have already been passed to the hardware.
|
||||||
|
- application - zeroes it on get_buffer().
|
||||||
|
A successful ff_draw_horiz_band() may increment it
|
||||||
|
with filled_mb_block_num or zero both.
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int start_mv_blocks_num;
|
||||||
|
|
||||||
|
/** Number of new macroblock descriptions in the mv_blocks array (after
|
||||||
|
start_mv_blocks_num) that are filled by libavcodec and have to be
|
||||||
|
passed to the hardware.
|
||||||
|
- application - zeroes it on get_buffer() or after successful
|
||||||
|
ff_draw_horiz_band().
|
||||||
|
- libavcodec - increment with one of each stored MB
|
||||||
|
*/
|
||||||
|
int filled_mv_blocks_num;
|
||||||
|
|
||||||
|
/** Number of the the next free data block; one data block consists of
|
||||||
|
64 short values in the data_blocks array.
|
||||||
|
All blocks before this one have already been claimed by placing their
|
||||||
|
position into the corresponding block description structure field,
|
||||||
|
that are part of the mv_blocks array.
|
||||||
|
- application - zeroes it on get_buffer().
|
||||||
|
A successful ff_draw_horiz_band() may zero it together
|
||||||
|
with start_mb_blocks_num.
|
||||||
|
- libavcodec - each decoded macroblock increases it by the number
|
||||||
|
of coded blocks it contains.
|
||||||
|
*/
|
||||||
|
int next_free_data_block_num;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* AVCODEC_XVMC_H */
|
||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVDEVICE_AVDEVICE_H
|
||||||
|
#define AVDEVICE_AVDEVICE_H
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
#include "libavformat/avformat.h"
|
||||||
|
|
||||||
|
#define LIBAVDEVICE_VERSION_MAJOR 53
|
||||||
|
#define LIBAVDEVICE_VERSION_MINOR 1
|
||||||
|
#define LIBAVDEVICE_VERSION_MICRO 1
|
||||||
|
|
||||||
|
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
|
||||||
|
LIBAVDEVICE_VERSION_MINOR, \
|
||||||
|
LIBAVDEVICE_VERSION_MICRO)
|
||||||
|
#define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \
|
||||||
|
LIBAVDEVICE_VERSION_MINOR, \
|
||||||
|
LIBAVDEVICE_VERSION_MICRO)
|
||||||
|
#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT
|
||||||
|
|
||||||
|
#ifndef FF_API_V4L
|
||||||
|
#define FF_API_V4L (LIBAVDEVICE_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the LIBAVDEVICE_VERSION_INT constant.
|
||||||
|
*/
|
||||||
|
unsigned avdevice_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavdevice build-time configuration.
|
||||||
|
*/
|
||||||
|
const char *avdevice_configuration(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavdevice license.
|
||||||
|
*/
|
||||||
|
const char *avdevice_license(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize libavdevice and register all the input and output devices.
|
||||||
|
* @warning This function is not thread safe.
|
||||||
|
*/
|
||||||
|
void avdevice_register_all(void);
|
||||||
|
|
||||||
|
#endif /* AVDEVICE_AVDEVICE_H */
|
||||||
|
|
||||||
+1618
File diff suppressed because it is too large
Load Diff
+635
@@ -0,0 +1,635 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2001 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
#ifndef AVFORMAT_AVIO_H
|
||||||
|
#define AVFORMAT_AVIO_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Buffered I/O operations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/common.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
|
||||||
|
#include "libavformat/version.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bytestream IO Context.
|
||||||
|
* New fields can be added to the end with minor version bumps.
|
||||||
|
* Removal, reordering and changes to existing fields require a major
|
||||||
|
* version bump.
|
||||||
|
* sizeof(AVIOContext) must not be used outside libav*.
|
||||||
|
*
|
||||||
|
* @note None of the function pointers in AVIOContext should be called
|
||||||
|
* directly, they should only be set by the client application
|
||||||
|
* when implementing custom I/O. Normally these are set to the
|
||||||
|
* function pointers specified in avio_alloc_context()
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
unsigned char *buffer; /**< Start of the buffer. */
|
||||||
|
int buffer_size; /**< Maximum buffer size */
|
||||||
|
unsigned char *buf_ptr; /**< Current position in the buffer */
|
||||||
|
unsigned char *buf_end; /**< End of the data, may be less than
|
||||||
|
buffer+buffer_size if the read function returned
|
||||||
|
less data than requested, e.g. for streams where
|
||||||
|
no more data has been received yet. */
|
||||||
|
void *opaque; /**< A private pointer, passed to the read/write/seek/...
|
||||||
|
functions. */
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence);
|
||||||
|
int64_t pos; /**< position in the file of the current buffer */
|
||||||
|
int must_flush; /**< true if the next seek should flush */
|
||||||
|
int eof_reached; /**< true if eof reached */
|
||||||
|
int write_flag; /**< true if open for writing */
|
||||||
|
#if FF_API_OLD_AVIO
|
||||||
|
attribute_deprecated int is_streamed;
|
||||||
|
#endif
|
||||||
|
int max_packet_size;
|
||||||
|
unsigned long checksum;
|
||||||
|
unsigned char *checksum_ptr;
|
||||||
|
unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size);
|
||||||
|
int error; /**< contains the error code or 0 if no error happened */
|
||||||
|
/**
|
||||||
|
* Pause or resume playback for network streaming protocols - e.g. MMS.
|
||||||
|
*/
|
||||||
|
int (*read_pause)(void *opaque, int pause);
|
||||||
|
/**
|
||||||
|
* Seek to a given timestamp in stream with the specified stream_index.
|
||||||
|
* Needed for some network streaming protocols which don't support seeking
|
||||||
|
* to byte position.
|
||||||
|
*/
|
||||||
|
int64_t (*read_seek)(void *opaque, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
/**
|
||||||
|
* A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
|
||||||
|
*/
|
||||||
|
int seekable;
|
||||||
|
} AVIOContext;
|
||||||
|
|
||||||
|
/* unbuffered I/O */
|
||||||
|
|
||||||
|
#if FF_API_OLD_AVIO
|
||||||
|
/**
|
||||||
|
* URL Context.
|
||||||
|
* New fields can be added to the end with minor version bumps.
|
||||||
|
* Removal, reordering and changes to existing fields require a major
|
||||||
|
* version bump.
|
||||||
|
* sizeof(URLContext) must not be used outside libav*.
|
||||||
|
* @deprecated This struct will be made private
|
||||||
|
*/
|
||||||
|
typedef struct URLContext {
|
||||||
|
const AVClass *av_class; ///< information for av_log(). Set by url_open().
|
||||||
|
struct URLProtocol *prot;
|
||||||
|
int flags;
|
||||||
|
int is_streamed; /**< true if streamed (no seek possible), default = false */
|
||||||
|
int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */
|
||||||
|
void *priv_data;
|
||||||
|
char *filename; /**< specified URL */
|
||||||
|
int is_connected;
|
||||||
|
} URLContext;
|
||||||
|
|
||||||
|
#define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This struct is to be made private. Use the higher-level
|
||||||
|
* AVIOContext-based API instead.
|
||||||
|
*/
|
||||||
|
typedef struct URLProtocol {
|
||||||
|
const char *name;
|
||||||
|
int (*url_open)(URLContext *h, const char *url, int flags);
|
||||||
|
int (*url_read)(URLContext *h, unsigned char *buf, int size);
|
||||||
|
int (*url_write)(URLContext *h, const unsigned char *buf, int size);
|
||||||
|
int64_t (*url_seek)(URLContext *h, int64_t pos, int whence);
|
||||||
|
int (*url_close)(URLContext *h);
|
||||||
|
struct URLProtocol *next;
|
||||||
|
int (*url_read_pause)(URLContext *h, int pause);
|
||||||
|
int64_t (*url_read_seek)(URLContext *h, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
int (*url_get_file_handle)(URLContext *h);
|
||||||
|
int priv_data_size;
|
||||||
|
const AVClass *priv_data_class;
|
||||||
|
int flags;
|
||||||
|
int (*url_check)(URLContext *h, int mask);
|
||||||
|
} URLProtocol;
|
||||||
|
|
||||||
|
typedef struct URLPollEntry {
|
||||||
|
URLContext *handle;
|
||||||
|
int events;
|
||||||
|
int revents;
|
||||||
|
} URLPollEntry;
|
||||||
|
|
||||||
|
/* not implemented */
|
||||||
|
attribute_deprecated int url_poll(URLPollEntry *poll_table, int n, int timeout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name URL open modes
|
||||||
|
* The flags argument to url_open and cosins must be one of the following
|
||||||
|
* constants, optionally ORed with other flags.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define URL_RDONLY 1 /**< read-only */
|
||||||
|
#define URL_WRONLY 2 /**< write-only */
|
||||||
|
#define URL_RDWR (URL_RDONLY|URL_WRONLY) /**< read-write */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use non-blocking mode.
|
||||||
|
* If this flag is set, operations on the context will return
|
||||||
|
* AVERROR(EAGAIN) if they can not be performed immediately.
|
||||||
|
* If this flag is not set, operations on the context will never return
|
||||||
|
* AVERROR(EAGAIN).
|
||||||
|
* Note that this flag does not affect the opening/connecting of the
|
||||||
|
* context. Connecting a protocol will always block if necessary (e.g. on
|
||||||
|
* network protocols) but never hang (e.g. on busy devices).
|
||||||
|
* Warning: non-blocking protocols is work-in-progress; this flag may be
|
||||||
|
* silently ignored.
|
||||||
|
*/
|
||||||
|
#define URL_FLAG_NONBLOCK 4
|
||||||
|
|
||||||
|
typedef int URLInterruptCB(void);
|
||||||
|
extern URLInterruptCB *url_interrupt_cb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup old_url_funcs Old url_* functions
|
||||||
|
* The following functions are deprecated. Use the buffered API based on #AVIOContext instead.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
attribute_deprecated int url_open_protocol (URLContext **puc, struct URLProtocol *up,
|
||||||
|
const char *url, int flags);
|
||||||
|
attribute_deprecated int url_alloc(URLContext **h, const char *url, int flags);
|
||||||
|
attribute_deprecated int url_connect(URLContext *h);
|
||||||
|
attribute_deprecated int url_open(URLContext **h, const char *url, int flags);
|
||||||
|
attribute_deprecated int url_read(URLContext *h, unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int url_read_complete(URLContext *h, unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int url_write(URLContext *h, const unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int64_t url_seek(URLContext *h, int64_t pos, int whence);
|
||||||
|
attribute_deprecated int url_close(URLContext *h);
|
||||||
|
attribute_deprecated int64_t url_filesize(URLContext *h);
|
||||||
|
attribute_deprecated int url_get_file_handle(URLContext *h);
|
||||||
|
attribute_deprecated int url_get_max_packet_size(URLContext *h);
|
||||||
|
attribute_deprecated void url_get_filename(URLContext *h, char *buf, int buf_size);
|
||||||
|
attribute_deprecated int av_url_read_pause(URLContext *h, int pause);
|
||||||
|
attribute_deprecated int64_t av_url_read_seek(URLContext *h, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
attribute_deprecated void url_set_interrupt_cb(int (*interrupt_cb)(void));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* returns the next registered protocol after the given protocol (the first if
|
||||||
|
* NULL is given), or NULL if protocol is the last one.
|
||||||
|
*/
|
||||||
|
URLProtocol *av_protocol_next(URLProtocol *p);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the URLProtocol protocol.
|
||||||
|
*
|
||||||
|
* @param size the size of the URLProtocol struct referenced
|
||||||
|
*/
|
||||||
|
attribute_deprecated int av_register_protocol2(URLProtocol *protocol, int size);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
typedef attribute_deprecated AVIOContext ByteIOContext;
|
||||||
|
|
||||||
|
attribute_deprecated int init_put_byte(AVIOContext *s,
|
||||||
|
unsigned char *buffer,
|
||||||
|
int buffer_size,
|
||||||
|
int write_flag,
|
||||||
|
void *opaque,
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence));
|
||||||
|
attribute_deprecated AVIOContext *av_alloc_put_byte(
|
||||||
|
unsigned char *buffer,
|
||||||
|
int buffer_size,
|
||||||
|
int write_flag,
|
||||||
|
void *opaque,
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup old_avio_funcs Old put_/get_*() functions
|
||||||
|
* The following functions are deprecated. Use the "avio_"-prefixed functions instead.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
attribute_deprecated int get_buffer(AVIOContext *s, unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int get_partial_buffer(AVIOContext *s, unsigned char *buf, int size);
|
||||||
|
attribute_deprecated int get_byte(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_le16(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_le24(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_le32(AVIOContext *s);
|
||||||
|
attribute_deprecated uint64_t get_le64(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_be16(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_be24(AVIOContext *s);
|
||||||
|
attribute_deprecated unsigned int get_be32(AVIOContext *s);
|
||||||
|
attribute_deprecated uint64_t get_be64(AVIOContext *s);
|
||||||
|
|
||||||
|
attribute_deprecated void put_byte(AVIOContext *s, int b);
|
||||||
|
attribute_deprecated void put_nbyte(AVIOContext *s, int b, int count);
|
||||||
|
attribute_deprecated void put_buffer(AVIOContext *s, const unsigned char *buf, int size);
|
||||||
|
attribute_deprecated void put_le64(AVIOContext *s, uint64_t val);
|
||||||
|
attribute_deprecated void put_be64(AVIOContext *s, uint64_t val);
|
||||||
|
attribute_deprecated void put_le32(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_be32(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_le24(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_be24(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_le16(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_be16(AVIOContext *s, unsigned int val);
|
||||||
|
attribute_deprecated void put_tag(AVIOContext *s, const char *tag);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
attribute_deprecated int av_url_read_fpause(AVIOContext *h, int pause);
|
||||||
|
attribute_deprecated int64_t av_url_read_fseek (AVIOContext *h, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup old_url_f_funcs Old url_f* functions
|
||||||
|
* The following functions are deprecated, use the "avio_"-prefixed functions instead.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
attribute_deprecated int url_fopen( AVIOContext **s, const char *url, int flags);
|
||||||
|
attribute_deprecated int url_fclose(AVIOContext *s);
|
||||||
|
attribute_deprecated int64_t url_fseek(AVIOContext *s, int64_t offset, int whence);
|
||||||
|
attribute_deprecated int url_fskip(AVIOContext *s, int64_t offset);
|
||||||
|
attribute_deprecated int64_t url_ftell(AVIOContext *s);
|
||||||
|
attribute_deprecated int64_t url_fsize(AVIOContext *s);
|
||||||
|
#define URL_EOF (-1)
|
||||||
|
attribute_deprecated int url_fgetc(AVIOContext *s);
|
||||||
|
attribute_deprecated int url_setbufsize(AVIOContext *s, int buf_size);
|
||||||
|
#ifdef __GNUC__
|
||||||
|
attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
|
||||||
|
#else
|
||||||
|
attribute_deprecated int url_fprintf(AVIOContext *s, const char *fmt, ...);
|
||||||
|
#endif
|
||||||
|
attribute_deprecated void put_flush_packet(AVIOContext *s);
|
||||||
|
attribute_deprecated int url_open_dyn_buf(AVIOContext **s);
|
||||||
|
attribute_deprecated int url_open_dyn_packet_buf(AVIOContext **s, int max_packet_size);
|
||||||
|
attribute_deprecated int url_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
|
||||||
|
attribute_deprecated int url_fdopen(AVIOContext **s, URLContext *h);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
attribute_deprecated int url_ferror(AVIOContext *s);
|
||||||
|
|
||||||
|
attribute_deprecated int udp_set_remote_url(URLContext *h, const char *uri);
|
||||||
|
attribute_deprecated int udp_get_local_port(URLContext *h);
|
||||||
|
|
||||||
|
attribute_deprecated void init_checksum(AVIOContext *s,
|
||||||
|
unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len),
|
||||||
|
unsigned long checksum);
|
||||||
|
attribute_deprecated unsigned long get_checksum(AVIOContext *s);
|
||||||
|
attribute_deprecated void put_strz(AVIOContext *s, const char *buf);
|
||||||
|
/** @note unlike fgets, the EOL character is not returned and a whole
|
||||||
|
line is parsed. return NULL if first char read was EOF */
|
||||||
|
attribute_deprecated char *url_fgets(AVIOContext *s, char *buf, int buf_size);
|
||||||
|
/**
|
||||||
|
* @deprecated use avio_get_str instead
|
||||||
|
*/
|
||||||
|
attribute_deprecated char *get_strz(AVIOContext *s, char *buf, int maxlen);
|
||||||
|
/**
|
||||||
|
* @deprecated Use AVIOContext.seekable field directly.
|
||||||
|
*/
|
||||||
|
attribute_deprecated static inline int url_is_streamed(AVIOContext *s)
|
||||||
|
{
|
||||||
|
return !s->seekable;
|
||||||
|
}
|
||||||
|
attribute_deprecated URLContext *url_fileno(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated use AVIOContext.max_packet_size directly.
|
||||||
|
*/
|
||||||
|
attribute_deprecated int url_fget_max_packet_size(AVIOContext *s);
|
||||||
|
|
||||||
|
attribute_deprecated int url_open_buf(AVIOContext **s, uint8_t *buf, int buf_size, int flags);
|
||||||
|
|
||||||
|
/** return the written or read size */
|
||||||
|
attribute_deprecated int url_close_buf(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a non-zero value if the resource indicated by url
|
||||||
|
* exists, 0 otherwise.
|
||||||
|
* @deprecated Use avio_check instead.
|
||||||
|
*/
|
||||||
|
attribute_deprecated int url_exist(const char *url);
|
||||||
|
#endif // FF_API_OLD_AVIO
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return AVIO_FLAG_* access flags corresponding to the access permissions
|
||||||
|
* of the resource in url, or a negative value corresponding to an
|
||||||
|
* AVERROR code in case of failure. The returned access flags are
|
||||||
|
* masked by the value in flags.
|
||||||
|
*
|
||||||
|
* @note This function is intrinsically unsafe, in the sense that the
|
||||||
|
* checked resource may change its existence or permission status from
|
||||||
|
* one call to another. Thus you should not trust the returned value,
|
||||||
|
* unless you are sure that no other processes are accessing the
|
||||||
|
* checked resource.
|
||||||
|
*/
|
||||||
|
int avio_check(const char *url, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The callback is called in blocking functions to test regulary if
|
||||||
|
* asynchronous interruption is needed. AVERROR_EXIT is returned
|
||||||
|
* in this case by the interrupted function. 'NULL' means no interrupt
|
||||||
|
* callback is given.
|
||||||
|
*/
|
||||||
|
void avio_set_interrupt_cb(int (*interrupt_cb)(void));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize an AVIOContext for buffered I/O. It must be later
|
||||||
|
* freed with av_free().
|
||||||
|
*
|
||||||
|
* @param buffer Memory block for input/output operations via AVIOContext.
|
||||||
|
* The buffer must be allocated with av_malloc() and friends.
|
||||||
|
* @param buffer_size The buffer size is very important for performance.
|
||||||
|
* For protocols with fixed blocksize it should be set to this blocksize.
|
||||||
|
* For others a typical size is a cache page, e.g. 4kb.
|
||||||
|
* @param write_flag Set to 1 if the buffer should be writable, 0 otherwise.
|
||||||
|
* @param opaque An opaque pointer to user-specific data.
|
||||||
|
* @param read_packet A function for refilling the buffer, may be NULL.
|
||||||
|
* @param write_packet A function for writing the buffer contents, may be NULL.
|
||||||
|
* @param seek A function for seeking to specified byte position, may be NULL.
|
||||||
|
*
|
||||||
|
* @return Allocated AVIOContext or NULL on failure.
|
||||||
|
*/
|
||||||
|
AVIOContext *avio_alloc_context(
|
||||||
|
unsigned char *buffer,
|
||||||
|
int buffer_size,
|
||||||
|
int write_flag,
|
||||||
|
void *opaque,
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence));
|
||||||
|
|
||||||
|
void avio_w8(AVIOContext *s, int b);
|
||||||
|
void avio_write(AVIOContext *s, const unsigned char *buf, int size);
|
||||||
|
void avio_wl64(AVIOContext *s, uint64_t val);
|
||||||
|
void avio_wb64(AVIOContext *s, uint64_t val);
|
||||||
|
void avio_wl32(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb32(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wl24(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb24(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wl16(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb16(AVIOContext *s, unsigned int val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a NULL-terminated string.
|
||||||
|
* @return number of bytes written.
|
||||||
|
*/
|
||||||
|
int avio_put_str(AVIOContext *s, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an UTF-8 string to UTF-16LE and write it.
|
||||||
|
* @return number of bytes written.
|
||||||
|
*/
|
||||||
|
int avio_put_str16le(AVIOContext *s, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Passing this as the "whence" parameter to a seek function causes it to
|
||||||
|
* return the filesize without seeking anywhere. Supporting this is optional.
|
||||||
|
* If it is not supported then the seek function will return <0.
|
||||||
|
*/
|
||||||
|
#define AVSEEK_SIZE 0x10000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Oring this flag as into the "whence" parameter to a seek function causes it to
|
||||||
|
* seek by any means (like reopening and linear reading) or other normally unreasonble
|
||||||
|
* means that can be extreemly slow.
|
||||||
|
* This may be ignored by the seek code.
|
||||||
|
*/
|
||||||
|
#define AVSEEK_FORCE 0x20000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fseek() equivalent for AVIOContext.
|
||||||
|
* @return new position or AVERROR.
|
||||||
|
*/
|
||||||
|
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skip given number of bytes forward
|
||||||
|
* @return new position or AVERROR.
|
||||||
|
*/
|
||||||
|
int64_t avio_skip(AVIOContext *s, int64_t offset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ftell() equivalent for AVIOContext.
|
||||||
|
* @return position or AVERROR.
|
||||||
|
*/
|
||||||
|
static av_always_inline int64_t avio_tell(AVIOContext *s)
|
||||||
|
{
|
||||||
|
return avio_seek(s, 0, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the filesize.
|
||||||
|
* @return filesize or AVERROR
|
||||||
|
*/
|
||||||
|
int64_t avio_size(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* feof() equivalent for AVIOContext.
|
||||||
|
* @return non zero if and only if end of file
|
||||||
|
*/
|
||||||
|
int url_feof(AVIOContext *s);
|
||||||
|
|
||||||
|
/** @warning currently size is limited */
|
||||||
|
#ifdef __GNUC__
|
||||||
|
int avio_printf(AVIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
|
||||||
|
#else
|
||||||
|
int avio_printf(AVIOContext *s, const char *fmt, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void avio_flush(AVIOContext *s);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read size bytes from AVIOContext into buf.
|
||||||
|
* @return number of bytes read or AVERROR
|
||||||
|
*/
|
||||||
|
int avio_read(AVIOContext *s, unsigned char *buf, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Functions for reading from AVIOContext
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @note return 0 if EOF, so you cannot use it if EOF handling is
|
||||||
|
* necessary
|
||||||
|
*/
|
||||||
|
int avio_r8 (AVIOContext *s);
|
||||||
|
unsigned int avio_rl16(AVIOContext *s);
|
||||||
|
unsigned int avio_rl24(AVIOContext *s);
|
||||||
|
unsigned int avio_rl32(AVIOContext *s);
|
||||||
|
uint64_t avio_rl64(AVIOContext *s);
|
||||||
|
unsigned int avio_rb16(AVIOContext *s);
|
||||||
|
unsigned int avio_rb24(AVIOContext *s);
|
||||||
|
unsigned int avio_rb32(AVIOContext *s);
|
||||||
|
uint64_t avio_rb64(AVIOContext *s);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a string from pb into buf. The reading will terminate when either
|
||||||
|
* a NULL character was encountered, maxlen bytes have been read, or nothing
|
||||||
|
* more can be read from pb. The result is guaranteed to be NULL-terminated, it
|
||||||
|
* will be truncated if buf is too small.
|
||||||
|
* Note that the string is not interpreted or validated in any way, it
|
||||||
|
* might get truncated in the middle of a sequence for multi-byte encodings.
|
||||||
|
*
|
||||||
|
* @return number of bytes read (is always <= maxlen).
|
||||||
|
* If reading ends on EOF or error, the return value will be one more than
|
||||||
|
* bytes actually read.
|
||||||
|
*/
|
||||||
|
int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a UTF-16 string from pb and convert it to UTF-8.
|
||||||
|
* The reading will terminate when either a null or invalid character was
|
||||||
|
* encountered or maxlen bytes have been read.
|
||||||
|
* @return number of bytes read (is always <= maxlen)
|
||||||
|
*/
|
||||||
|
int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name URL open modes
|
||||||
|
* The flags argument to avio_open must be one of the following
|
||||||
|
* constants, optionally ORed with other flags.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define AVIO_FLAG_READ 1 /**< read-only */
|
||||||
|
#define AVIO_FLAG_WRITE 2 /**< write-only */
|
||||||
|
#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use non-blocking mode.
|
||||||
|
* If this flag is set, operations on the context will return
|
||||||
|
* AVERROR(EAGAIN) if they can not be performed immediately.
|
||||||
|
* If this flag is not set, operations on the context will never return
|
||||||
|
* AVERROR(EAGAIN).
|
||||||
|
* Note that this flag does not affect the opening/connecting of the
|
||||||
|
* context. Connecting a protocol will always block if necessary (e.g. on
|
||||||
|
* network protocols) but never hang (e.g. on busy devices).
|
||||||
|
* Warning: non-blocking protocols is work-in-progress; this flag may be
|
||||||
|
* silently ignored.
|
||||||
|
*/
|
||||||
|
#define AVIO_FLAG_NONBLOCK 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and initialize a AVIOContext for accessing the
|
||||||
|
* resource indicated by url.
|
||||||
|
* @note When the resource indicated by url has been opened in
|
||||||
|
* read+write mode, the AVIOContext can be used only for writing.
|
||||||
|
*
|
||||||
|
* @param s Used to return the pointer to the created AVIOContext.
|
||||||
|
* In case of failure the pointed to value is set to NULL.
|
||||||
|
* @param flags flags which control how the resource indicated by url
|
||||||
|
* is to be opened
|
||||||
|
* @return 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code in case of failure
|
||||||
|
*/
|
||||||
|
int avio_open(AVIOContext **s, const char *url, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the resource accessed by the AVIOContext s and free it.
|
||||||
|
* This function can only be used if s was opened by avio_open().
|
||||||
|
*
|
||||||
|
* @return 0 on success, an AVERROR < 0 on error.
|
||||||
|
*/
|
||||||
|
int avio_close(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a write only memory stream.
|
||||||
|
*
|
||||||
|
* @param s new IO context
|
||||||
|
* @return zero if no error.
|
||||||
|
*/
|
||||||
|
int avio_open_dyn_buf(AVIOContext **s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the written size and a pointer to the buffer. The buffer
|
||||||
|
* must be freed with av_free().
|
||||||
|
* Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer.
|
||||||
|
*
|
||||||
|
* @param s IO context
|
||||||
|
* @param pbuffer pointer to a byte buffer
|
||||||
|
* @return the length of the byte buffer
|
||||||
|
*/
|
||||||
|
int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate through names of available protocols.
|
||||||
|
* @note it is recommanded to use av_protocol_next() instead of this
|
||||||
|
*
|
||||||
|
* @param opaque A private pointer representing current protocol.
|
||||||
|
* It must be a pointer to NULL on first iteration and will
|
||||||
|
* be updated by successive calls to avio_enum_protocols.
|
||||||
|
* @param output If set to 1, iterate over output protocols,
|
||||||
|
* otherwise over input protocols.
|
||||||
|
*
|
||||||
|
* @return A static string containing the name of current protocol or NULL
|
||||||
|
*/
|
||||||
|
const char *avio_enum_protocols(void **opaque, int output);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pause and resume playing - only meaningful if using a network streaming
|
||||||
|
* protocol (e.g. MMS).
|
||||||
|
* @param pause 1 for pause, 0 for resume
|
||||||
|
*/
|
||||||
|
int avio_pause(AVIOContext *h, int pause);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seek to a given timestamp relative to some component stream.
|
||||||
|
* Only meaningful if using a network streaming protocol (e.g. MMS.).
|
||||||
|
* @param stream_index The stream index that the timestamp is relative to.
|
||||||
|
* If stream_index is (-1) the timestamp should be in AV_TIME_BASE
|
||||||
|
* units from the beginning of the presentation.
|
||||||
|
* If a stream_index >= 0 is used and the protocol does not support
|
||||||
|
* seeking based on component streams, the call will fail with ENOTSUP.
|
||||||
|
* @param timestamp timestamp in AVStream.time_base units
|
||||||
|
* or if there is no stream specified then in AV_TIME_BASE units.
|
||||||
|
* @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
|
||||||
|
* and AVSEEK_FLAG_ANY. The protocol may silently ignore
|
||||||
|
* AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
|
||||||
|
* fail with ENOTSUP if used and not supported.
|
||||||
|
* @return >= 0 on success
|
||||||
|
* @see AVInputFormat::read_seek
|
||||||
|
*/
|
||||||
|
int64_t avio_seek_time(AVIOContext *h, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
|
||||||
|
#endif /* AVFORMAT_AVIO_H */
|
||||||
+81
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Version macros.
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFORMAT_VERSION_H
|
||||||
|
#define AVFORMAT_VERSION_H
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
|
#define LIBAVFORMAT_VERSION_MAJOR 53
|
||||||
|
#define LIBAVFORMAT_VERSION_MINOR 4
|
||||||
|
#define LIBAVFORMAT_VERSION_MICRO 0
|
||||||
|
|
||||||
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MICRO)
|
||||||
|
#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MICRO)
|
||||||
|
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Those FF_API_* defines are not part of public API.
|
||||||
|
* They may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
#ifndef FF_API_OLD_METADATA2
|
||||||
|
#define FF_API_OLD_METADATA2 (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_READ_SEEK
|
||||||
|
#define FF_API_READ_SEEK (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_AVIO
|
||||||
|
#define FF_API_OLD_AVIO (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_DUMP_FORMAT
|
||||||
|
#define FF_API_DUMP_FORMAT (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_PARSE_DATE
|
||||||
|
#define FF_API_PARSE_DATE (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_FIND_INFO_TAG
|
||||||
|
#define FF_API_FIND_INFO_TAG (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_PKT_DUMP
|
||||||
|
#define FF_API_PKT_DUMP (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GUESS_IMG2_CODEC
|
||||||
|
#define FF_API_GUESS_IMG2_CODEC (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_SDP_CREATE
|
||||||
|
#define FF_API_SDP_CREATE (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ALLOC_OUTPUT_CONTEXT
|
||||||
|
#define FF_API_ALLOC_OUTPUT_CONTEXT (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_FORMAT_PARAMETERS
|
||||||
|
#define FF_API_FORMAT_PARAMETERS (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_FLAG_RTP_HINT
|
||||||
|
#define FF_API_FLAG_RTP_HINT (LIBAVFORMAT_VERSION_MAJOR < 54)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVFORMAT_VERSION_H */
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Mans Rullgard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_ADLER32_H
|
||||||
|
#define AVUTIL_ADLER32_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the Adler32 checksum of a buffer.
|
||||||
|
*
|
||||||
|
* Passing the return value to a subsequent av_adler32_update() call
|
||||||
|
* allows the checksum of multiple buffers to be calculated as though
|
||||||
|
* they were concatenated.
|
||||||
|
*
|
||||||
|
* @param adler initial checksum value
|
||||||
|
* @param buf pointer to input buffer
|
||||||
|
* @param len size of input buffer
|
||||||
|
* @return updated checksum
|
||||||
|
*/
|
||||||
|
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
|
||||||
|
unsigned int len) av_pure;
|
||||||
|
|
||||||
|
#endif /* AVUTIL_ADLER32_H */
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AES_H
|
||||||
|
#define AVUTIL_AES_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern const int av_aes_size;
|
||||||
|
|
||||||
|
struct AVAES;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize an AVAES context.
|
||||||
|
* @param key_bits 128, 192 or 256
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||||
|
* @param count number of 16 byte blocks
|
||||||
|
* @param dst destination array, can be equal to src
|
||||||
|
* @param src source array, can be equal to dst
|
||||||
|
* @param iv initialization vector for CBC mode, if NULL then ECB will be used
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AES_H */
|
||||||
+134
@@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Macro definitions for various function/variable attributes
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_ATTRIBUTES_H
|
||||||
|
#define AVUTIL_ATTRIBUTES_H
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y)
|
||||||
|
#else
|
||||||
|
# define AV_GCC_VERSION_AT_LEAST(x,y) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_always_inline
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_always_inline __attribute__((always_inline)) inline
|
||||||
|
#else
|
||||||
|
# define av_always_inline inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_noinline
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_noinline __attribute__((noinline))
|
||||||
|
#else
|
||||||
|
# define av_noinline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_pure
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_pure __attribute__((pure))
|
||||||
|
#else
|
||||||
|
# define av_pure
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_const
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(2,6)
|
||||||
|
# define av_const __attribute__((const))
|
||||||
|
#else
|
||||||
|
# define av_const
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_cold
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,3)
|
||||||
|
# define av_cold __attribute__((cold))
|
||||||
|
#else
|
||||||
|
# define av_cold
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_flatten
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,1)
|
||||||
|
# define av_flatten __attribute__((flatten))
|
||||||
|
#else
|
||||||
|
# define av_flatten
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef attribute_deprecated
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define attribute_deprecated __attribute__((deprecated))
|
||||||
|
#else
|
||||||
|
# define attribute_deprecated
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_unused
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
# define av_unused __attribute__((unused))
|
||||||
|
#else
|
||||||
|
# define av_unused
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark a variable as used and prevent the compiler from optimizing it
|
||||||
|
* away. This is useful for variables accessed only from inline
|
||||||
|
* assembler without the compiler being aware.
|
||||||
|
*/
|
||||||
|
#ifndef av_used
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_used __attribute__((used))
|
||||||
|
#else
|
||||||
|
# define av_used
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_alias
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,3)
|
||||||
|
# define av_alias __attribute__((may_alias))
|
||||||
|
#else
|
||||||
|
# define av_alias
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_uninit
|
||||||
|
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||||
|
# define av_uninit(x) x=x
|
||||||
|
#else
|
||||||
|
# define av_uninit(x) x
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# define av_builtin_constant_p __builtin_constant_p
|
||||||
|
#else
|
||||||
|
# define av_builtin_constant_p(x) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVUTIL_ATTRIBUTES_H */
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
* Copyright (c) 2008 Peter Ross
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AUDIOCONVERT_H
|
||||||
|
#define AVUTIL_AUDIOCONVERT_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* audio conversion routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Audio channel masks */
|
||||||
|
#define AV_CH_FRONT_LEFT 0x00000001
|
||||||
|
#define AV_CH_FRONT_RIGHT 0x00000002
|
||||||
|
#define AV_CH_FRONT_CENTER 0x00000004
|
||||||
|
#define AV_CH_LOW_FREQUENCY 0x00000008
|
||||||
|
#define AV_CH_BACK_LEFT 0x00000010
|
||||||
|
#define AV_CH_BACK_RIGHT 0x00000020
|
||||||
|
#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040
|
||||||
|
#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080
|
||||||
|
#define AV_CH_BACK_CENTER 0x00000100
|
||||||
|
#define AV_CH_SIDE_LEFT 0x00000200
|
||||||
|
#define AV_CH_SIDE_RIGHT 0x00000400
|
||||||
|
#define AV_CH_TOP_CENTER 0x00000800
|
||||||
|
#define AV_CH_TOP_FRONT_LEFT 0x00001000
|
||||||
|
#define AV_CH_TOP_FRONT_CENTER 0x00002000
|
||||||
|
#define AV_CH_TOP_FRONT_RIGHT 0x00004000
|
||||||
|
#define AV_CH_TOP_BACK_LEFT 0x00008000
|
||||||
|
#define AV_CH_TOP_BACK_CENTER 0x00010000
|
||||||
|
#define AV_CH_TOP_BACK_RIGHT 0x00020000
|
||||||
|
#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix.
|
||||||
|
#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT.
|
||||||
|
|
||||||
|
/** Channel mask value used for AVCodecContext.request_channel_layout
|
||||||
|
to indicate that the user requests the channel order of the decoder output
|
||||||
|
to be the native codec channel order. */
|
||||||
|
#define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL
|
||||||
|
|
||||||
|
/* Audio channel convenience macros */
|
||||||
|
#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER)
|
||||||
|
#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
|
||||||
|
#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
|
||||||
|
#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER)
|
||||||
|
#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
|
||||||
|
#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY)
|
||||||
|
#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
|
||||||
|
#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
|
||||||
|
#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a channel layout id that matches name, 0 if no match.
|
||||||
|
*/
|
||||||
|
int64_t av_get_channel_layout(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a description of a channel layout.
|
||||||
|
* If nb_channels is <= 0, it is guessed from the channel_layout.
|
||||||
|
*
|
||||||
|
* @param buf put here the string containing the channel layout
|
||||||
|
* @param buf_size size in bytes of the buffer
|
||||||
|
*/
|
||||||
|
void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int64_t channel_layout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of channels in the channel layout.
|
||||||
|
*/
|
||||||
|
int av_get_channel_layout_nb_channels(int64_t channel_layout);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AUDIOCONVERT_H */
|
||||||
+66
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* simple assert() macros that are a bit more flexible than ISO C assert().
|
||||||
|
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVASSERT_H
|
||||||
|
#define AVUTIL_AVASSERT_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "avutil.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that is always enabled.
|
||||||
|
*/
|
||||||
|
#define av_assert0(cond) do { \
|
||||||
|
if (!(cond)) { \
|
||||||
|
av_log(NULL, AV_LOG_FATAL, "Assertion %s failed at %s:%d\n", \
|
||||||
|
AV_STRINGIFY(cond), __FILE__, __LINE__); \
|
||||||
|
abort(); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that does not lie in speed critical code.
|
||||||
|
* These asserts() thus can be enabled without fearing speedloss.
|
||||||
|
*/
|
||||||
|
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
|
||||||
|
#define av_assert1(cond) av_assert0(cond)
|
||||||
|
#else
|
||||||
|
#define av_assert1(cond) ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that does lie in speed critical code.
|
||||||
|
*/
|
||||||
|
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
|
||||||
|
#define av_assert2(cond) av_assert0(cond)
|
||||||
|
#else
|
||||||
|
#define av_assert2(cond) ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVASSERT_H */
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/* Generated by ffconf */
|
||||||
|
#ifndef AVUTIL_AVCONFIG_H
|
||||||
|
#define AVUTIL_AVCONFIG_H
|
||||||
|
#define AV_HAVE_BIGENDIAN 0
|
||||||
|
#define AV_HAVE_FAST_UNALIGNED 1
|
||||||
|
#endif /* AVUTIL_AVCONFIG_H */
|
||||||
+133
@@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2007 Mans Rullgard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVSTRING_H
|
||||||
|
#define AVUTIL_AVSTRING_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return non-zero if pfx is a prefix of str. If it is, *ptr is set to
|
||||||
|
* the address of the first character in str after the prefix.
|
||||||
|
*
|
||||||
|
* @param str input string
|
||||||
|
* @param pfx prefix to test
|
||||||
|
* @param ptr updated if the prefix is matched inside str
|
||||||
|
* @return non-zero if the prefix matches, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_strstart(const char *str, const char *pfx, const char **ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return non-zero if pfx is a prefix of str independent of case. If
|
||||||
|
* it is, *ptr is set to the address of the first character in str
|
||||||
|
* after the prefix.
|
||||||
|
*
|
||||||
|
* @param str input string
|
||||||
|
* @param pfx prefix to test
|
||||||
|
* @param ptr updated if the prefix is matched inside str
|
||||||
|
* @return non-zero if the prefix matches, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_stristart(const char *str, const char *pfx, const char **ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locate the first case-independent occurrence in the string haystack
|
||||||
|
* of the string needle. A zero-length string needle is considered to
|
||||||
|
* match at the start of haystack.
|
||||||
|
*
|
||||||
|
* This function is a case-insensitive version of the standard strstr().
|
||||||
|
*
|
||||||
|
* @param haystack string to search in
|
||||||
|
* @param needle string to search for
|
||||||
|
* @return pointer to the located match within haystack
|
||||||
|
* or a null pointer if no match
|
||||||
|
*/
|
||||||
|
char *av_stristr(const char *haystack, const char *needle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the string src to dst, but no more than size - 1 bytes, and
|
||||||
|
* null-terminate dst.
|
||||||
|
*
|
||||||
|
* This function is the same as BSD strlcpy().
|
||||||
|
*
|
||||||
|
* @param dst destination buffer
|
||||||
|
* @param src source string
|
||||||
|
* @param size size of destination buffer
|
||||||
|
* @return the length of src
|
||||||
|
*
|
||||||
|
* WARNING: since the return value is the length of src, src absolutely
|
||||||
|
* _must_ be a properly 0-terminated string, otherwise this will read beyond
|
||||||
|
* the end of the buffer and possibly crash.
|
||||||
|
*/
|
||||||
|
size_t av_strlcpy(char *dst, const char *src, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append the string src to the string dst, but to a total length of
|
||||||
|
* no more than size - 1 bytes, and null-terminate dst.
|
||||||
|
*
|
||||||
|
* This function is similar to BSD strlcat(), but differs when
|
||||||
|
* size <= strlen(dst).
|
||||||
|
*
|
||||||
|
* @param dst destination buffer
|
||||||
|
* @param src source string
|
||||||
|
* @param size size of destination buffer
|
||||||
|
* @return the total length of src and dst
|
||||||
|
*
|
||||||
|
* WARNING: since the return value use the length of src and dst, these absolutely
|
||||||
|
* _must_ be a properly 0-terminated strings, otherwise this will read beyond
|
||||||
|
* the end of the buffer and possibly crash.
|
||||||
|
*/
|
||||||
|
size_t av_strlcat(char *dst, const char *src, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append output to a string, according to a format. Never write out of
|
||||||
|
* the destination buffer, and always put a terminating 0 within
|
||||||
|
* the buffer.
|
||||||
|
* @param dst destination buffer (string to which the output is
|
||||||
|
* appended)
|
||||||
|
* @param size total size of the destination buffer
|
||||||
|
* @param fmt printf-compatible format string, specifying how the
|
||||||
|
* following parameters are used
|
||||||
|
* @return the length of the string that would have been generated
|
||||||
|
* if enough space had been available
|
||||||
|
*/
|
||||||
|
size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a number to a av_malloced string.
|
||||||
|
*/
|
||||||
|
char *av_d2str(double d);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unescape the given string until a non escaped terminating char,
|
||||||
|
* and return the token corresponding to the unescaped string.
|
||||||
|
*
|
||||||
|
* The normal \ and ' escaping is supported. Leading and trailing
|
||||||
|
* whitespaces are removed, unless they are escaped with '\' or are
|
||||||
|
* enclosed between ''.
|
||||||
|
*
|
||||||
|
* @param buf the buffer to parse, buf will be updated to point to the
|
||||||
|
* terminating char
|
||||||
|
* @param term a 0-terminated list of terminating chars
|
||||||
|
* @return the malloced unescaped string, which must be av_freed by
|
||||||
|
* the user, NULL in case of allocation failure
|
||||||
|
*/
|
||||||
|
char *av_get_token(const char **buf, const char *term);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVSTRING_H */
|
||||||
+134
@@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVUTIL_H
|
||||||
|
#define AVUTIL_AVUTIL_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* external API header
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define AV_STRINGIFY(s) AV_TOSTRING(s)
|
||||||
|
#define AV_TOSTRING(s) #s
|
||||||
|
|
||||||
|
#define AV_GLUE(a, b) a ## b
|
||||||
|
#define AV_JOIN(a, b) AV_GLUE(a, b)
|
||||||
|
|
||||||
|
#define AV_PRAGMA(s) _Pragma(#s)
|
||||||
|
|
||||||
|
#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
|
||||||
|
#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
|
||||||
|
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
||||||
|
|
||||||
|
#define LIBAVUTIL_VERSION_MAJOR 51
|
||||||
|
#define LIBAVUTIL_VERSION_MINOR 9
|
||||||
|
#define LIBAVUTIL_VERSION_MICRO 1
|
||||||
|
|
||||||
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
LIBAVUTIL_VERSION_MINOR, \
|
||||||
|
LIBAVUTIL_VERSION_MICRO)
|
||||||
|
#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
LIBAVUTIL_VERSION_MINOR, \
|
||||||
|
LIBAVUTIL_VERSION_MICRO)
|
||||||
|
#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Those FF_API_* defines are not part of public API.
|
||||||
|
* They may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
#ifndef FF_API_OLD_EVAL_NAMES
|
||||||
|
#define FF_API_OLD_EVAL_NAMES (LIBAVUTIL_VERSION_MAJOR < 52)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
|
||||||
|
#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_FIND_OPT
|
||||||
|
#define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 52)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the LIBAVUTIL_VERSION_INT constant.
|
||||||
|
*/
|
||||||
|
unsigned avutil_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavutil build-time configuration.
|
||||||
|
*/
|
||||||
|
const char *avutil_configuration(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavutil license.
|
||||||
|
*/
|
||||||
|
const char *avutil_license(void);
|
||||||
|
|
||||||
|
enum AVMediaType {
|
||||||
|
AVMEDIA_TYPE_UNKNOWN = -1,
|
||||||
|
AVMEDIA_TYPE_VIDEO,
|
||||||
|
AVMEDIA_TYPE_AUDIO,
|
||||||
|
AVMEDIA_TYPE_DATA,
|
||||||
|
AVMEDIA_TYPE_SUBTITLE,
|
||||||
|
AVMEDIA_TYPE_ATTACHMENT,
|
||||||
|
AVMEDIA_TYPE_NB
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FF_LAMBDA_SHIFT 7
|
||||||
|
#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
|
||||||
|
#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
|
||||||
|
#define FF_LAMBDA_MAX (256*128-1)
|
||||||
|
|
||||||
|
#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
|
||||||
|
|
||||||
|
#define AV_NOPTS_VALUE INT64_C(0x8000000000000000)
|
||||||
|
#define AV_TIME_BASE 1000000
|
||||||
|
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
|
||||||
|
|
||||||
|
enum AVPictureType {
|
||||||
|
AV_PICTURE_TYPE_NONE = 0, ///< Undefined
|
||||||
|
AV_PICTURE_TYPE_I, ///< Intra
|
||||||
|
AV_PICTURE_TYPE_P, ///< Predicted
|
||||||
|
AV_PICTURE_TYPE_B, ///< Bi-dir predicted
|
||||||
|
AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4
|
||||||
|
AV_PICTURE_TYPE_SI, ///< Switching Intra
|
||||||
|
AV_PICTURE_TYPE_SP, ///< Switching Predicted
|
||||||
|
AV_PICTURE_TYPE_BI, ///< BI type
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a single letter to describe the given picture type
|
||||||
|
* pict_type.
|
||||||
|
*
|
||||||
|
* @param[in] pict_type the picture type @return a single character
|
||||||
|
* representing the picture type, '?' if pict_type is unknown
|
||||||
|
*/
|
||||||
|
char av_get_picture_type_char(enum AVPictureType pict_type);
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "error.h"
|
||||||
|
#include "mathematics.h"
|
||||||
|
#include "rational.h"
|
||||||
|
#include "intfloat_readwrite.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "pixfmt.h"
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVUTIL_H */
|
||||||
+54
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Ryan Martell. (rdm4@martellventures.com)
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BASE64_H
|
||||||
|
#define AVUTIL_BASE64_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a base64-encoded string.
|
||||||
|
*
|
||||||
|
* @param out buffer for decoded data
|
||||||
|
* @param in null-terminated input string
|
||||||
|
* @param out_size size in bytes of the out buffer, must be at
|
||||||
|
* least 3/4 of the length of in
|
||||||
|
* @return number of bytes written, or a negative value in case of
|
||||||
|
* invalid input
|
||||||
|
*/
|
||||||
|
int av_base64_decode(uint8_t *out, const char *in, int out_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode data to base64 and null-terminate.
|
||||||
|
*
|
||||||
|
* @param out buffer for encoded data
|
||||||
|
* @param out_size size in bytes of the output buffer, must be at
|
||||||
|
* least AV_BASE64_SIZE(in_size)
|
||||||
|
* @param in_size size in bytes of the 'in' buffer
|
||||||
|
* @return 'out' or NULL in case of error
|
||||||
|
*/
|
||||||
|
char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the output size needed to base64-encode x bytes.
|
||||||
|
*/
|
||||||
|
#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BASE64_H */
|
||||||
+124
@@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* byte swapping routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BSWAP_H
|
||||||
|
#define AVUTIL_BSWAP_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_AV_CONFIG_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if ARCH_ARM
|
||||||
|
# include "arm/bswap.h"
|
||||||
|
#elif ARCH_AVR32
|
||||||
|
# include "avr32/bswap.h"
|
||||||
|
#elif ARCH_BFIN
|
||||||
|
# include "bfin/bswap.h"
|
||||||
|
#elif ARCH_SH4
|
||||||
|
# include "sh4/bswap.h"
|
||||||
|
#elif ARCH_X86
|
||||||
|
# include "x86/bswap.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* HAVE_AV_CONFIG_H */
|
||||||
|
|
||||||
|
#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff))
|
||||||
|
#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16))
|
||||||
|
#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32))
|
||||||
|
|
||||||
|
#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x)
|
||||||
|
|
||||||
|
#ifndef av_bswap16
|
||||||
|
static av_always_inline av_const uint16_t av_bswap16(uint16_t x)
|
||||||
|
{
|
||||||
|
x= (x>>8) | (x<<8);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_bswap32
|
||||||
|
static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
|
||||||
|
{
|
||||||
|
x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
|
||||||
|
x= (x>>16) | (x<<16);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_bswap64
|
||||||
|
static inline uint64_t av_const av_bswap64(uint64_t x)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
x= ((x<< 8)&0xFF00FF00FF00FF00ULL) | ((x>> 8)&0x00FF00FF00FF00FFULL);
|
||||||
|
x= ((x<<16)&0xFFFF0000FFFF0000ULL) | ((x>>16)&0x0000FFFF0000FFFFULL);
|
||||||
|
return (x>>32) | (x<<32);
|
||||||
|
#else
|
||||||
|
union {
|
||||||
|
uint64_t ll;
|
||||||
|
uint32_t l[2];
|
||||||
|
} w, r;
|
||||||
|
w.ll = x;
|
||||||
|
r.l[0] = av_bswap32 (w.l[1]);
|
||||||
|
r.l[1] = av_bswap32 (w.l[0]);
|
||||||
|
return r.ll;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// be2ne ... big-endian to native-endian
|
||||||
|
// le2ne ... little-endian to native-endian
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
#define av_be2ne16(x) (x)
|
||||||
|
#define av_be2ne32(x) (x)
|
||||||
|
#define av_be2ne64(x) (x)
|
||||||
|
#define av_le2ne16(x) av_bswap16(x)
|
||||||
|
#define av_le2ne32(x) av_bswap32(x)
|
||||||
|
#define av_le2ne64(x) av_bswap64(x)
|
||||||
|
#define AV_BE2NEC(s, x) (x)
|
||||||
|
#define AV_LE2NEC(s, x) AV_BSWAPC(s, x)
|
||||||
|
#else
|
||||||
|
#define av_be2ne16(x) av_bswap16(x)
|
||||||
|
#define av_be2ne32(x) av_bswap32(x)
|
||||||
|
#define av_be2ne64(x) av_bswap64(x)
|
||||||
|
#define av_le2ne16(x) (x)
|
||||||
|
#define av_le2ne32(x) (x)
|
||||||
|
#define av_le2ne64(x) (x)
|
||||||
|
#define AV_BE2NEC(s, x) AV_BSWAPC(s, x)
|
||||||
|
#define AV_LE2NEC(s, x) (x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AV_BE2NE16C(x) AV_BE2NEC(16, x)
|
||||||
|
#define AV_BE2NE32C(x) AV_BE2NEC(32, x)
|
||||||
|
#define AV_BE2NE64C(x) AV_BE2NEC(64, x)
|
||||||
|
#define AV_LE2NE16C(x) AV_LE2NEC(16, x)
|
||||||
|
#define AV_LE2NE32C(x) AV_LE2NEC(32, x)
|
||||||
|
#define AV_LE2NE64C(x) AV_LE2NEC(64, x)
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BSWAP_H */
|
||||||
+387
@@ -0,0 +1,387 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* common internal and external API header
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_COMMON_H
|
||||||
|
#define AVUTIL_COMMON_H
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
# define AV_NE(be, le) (be)
|
||||||
|
#else
|
||||||
|
# define AV_NE(be, le) (le)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//rounded division & shift
|
||||||
|
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
|
||||||
|
/* assume b>0 */
|
||||||
|
#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
|
||||||
|
#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b))
|
||||||
|
#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b))
|
||||||
|
#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
|
||||||
|
#define FFSIGN(a) ((a) > 0 ? 1 : -1)
|
||||||
|
|
||||||
|
#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
|
||||||
|
#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
|
||||||
|
#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
|
||||||
|
#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c)
|
||||||
|
|
||||||
|
#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
|
||||||
|
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
|
||||||
|
#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))
|
||||||
|
|
||||||
|
/* misc math functions */
|
||||||
|
extern const uint8_t ff_log2_tab[256];
|
||||||
|
|
||||||
|
extern const uint8_t av_reverse[256];
|
||||||
|
|
||||||
|
static av_always_inline av_const int av_log2_c(unsigned int v)
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
if (v & 0xffff0000) {
|
||||||
|
v >>= 16;
|
||||||
|
n += 16;
|
||||||
|
}
|
||||||
|
if (v & 0xff00) {
|
||||||
|
v >>= 8;
|
||||||
|
n += 8;
|
||||||
|
}
|
||||||
|
n += ff_log2_tab[v];
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static av_always_inline av_const int av_log2_16bit_c(unsigned int v)
|
||||||
|
{
|
||||||
|
int n = 0;
|
||||||
|
if (v & 0xff00) {
|
||||||
|
v >>= 8;
|
||||||
|
n += 8;
|
||||||
|
}
|
||||||
|
n += ff_log2_tab[v];
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_AV_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
# include "intmath.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Pull in unguarded fallback defines at the end of this file. */
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer value into the amin-amax range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @param amin minimum value of the clip range
|
||||||
|
* @param amax maximum value of the clip range
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int av_clip_c(int a, int amin, int amax)
|
||||||
|
{
|
||||||
|
if (a < amin) return amin;
|
||||||
|
else if (a > amax) return amax;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer value into the 0-255 range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
|
||||||
|
{
|
||||||
|
if (a&(~0xFF)) return (-a)>>31;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer value into the -128,127 range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int8_t av_clip_int8_c(int a)
|
||||||
|
{
|
||||||
|
if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer value into the 0-65535 range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
|
||||||
|
{
|
||||||
|
if (a&(~0xFFFF)) return (-a)>>31;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer value into the -32768,32767 range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int16_t av_clip_int16_c(int a)
|
||||||
|
{
|
||||||
|
if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed 64-bit integer value into the -2147483648,2147483647 range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
|
||||||
|
{
|
||||||
|
if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a signed integer to an unsigned power of two range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @param p bit position to clip at
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
|
||||||
|
{
|
||||||
|
if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1);
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clip a float value into the amin-amax range.
|
||||||
|
* @param a value to clip
|
||||||
|
* @param amin minimum value of the clip range
|
||||||
|
* @param amax maximum value of the clip range
|
||||||
|
* @return clipped value
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const float av_clipf_c(float a, float amin, float amax)
|
||||||
|
{
|
||||||
|
if (a < amin) return amin;
|
||||||
|
else if (a > amax) return amax;
|
||||||
|
else return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Compute ceil(log2(x)).
|
||||||
|
* @param x value used to compute ceil(log2(x))
|
||||||
|
* @return computed ceiling of log2(x)
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int av_ceil_log2_c(int x)
|
||||||
|
{
|
||||||
|
return av_log2((x - 1) << 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Count number of bits set to one in x
|
||||||
|
* @param x value to count bits of
|
||||||
|
* @return the number of bits set to one in x
|
||||||
|
*/
|
||||||
|
static av_always_inline av_const int av_popcount_c(uint32_t x)
|
||||||
|
{
|
||||||
|
x -= (x >> 1) & 0x55555555;
|
||||||
|
x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
|
||||||
|
x = (x + (x >> 4)) & 0x0F0F0F0F;
|
||||||
|
x += x >> 8;
|
||||||
|
return (x + (x >> 16)) & 0x3F;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((d) << 24))
|
||||||
|
#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((a) << 24))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form.
|
||||||
|
*
|
||||||
|
* @param val Output value, must be an lvalue of type uint32_t.
|
||||||
|
* @param GET_BYTE Expression reading one byte from the input.
|
||||||
|
* Evaluated up to 7 times (4 for the currently
|
||||||
|
* assigned Unicode range). With a memory buffer
|
||||||
|
* input, this could be *ptr++.
|
||||||
|
* @param ERROR Expression to be evaluated on invalid input,
|
||||||
|
* typically a goto statement.
|
||||||
|
*/
|
||||||
|
#define GET_UTF8(val, GET_BYTE, ERROR)\
|
||||||
|
val= GET_BYTE;\
|
||||||
|
{\
|
||||||
|
int ones= 7 - av_log2(val ^ 255);\
|
||||||
|
if(ones==1)\
|
||||||
|
ERROR\
|
||||||
|
val&= 127>>ones;\
|
||||||
|
while(--ones > 0){\
|
||||||
|
int tmp= GET_BYTE - 128;\
|
||||||
|
if(tmp>>6)\
|
||||||
|
ERROR\
|
||||||
|
val= (val<<6) + tmp;\
|
||||||
|
}\
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form.
|
||||||
|
*
|
||||||
|
* @param val Output value, must be an lvalue of type uint32_t.
|
||||||
|
* @param GET_16BIT Expression returning two bytes of UTF-16 data converted
|
||||||
|
* to native byte order. Evaluated one or two times.
|
||||||
|
* @param ERROR Expression to be evaluated on invalid input,
|
||||||
|
* typically a goto statement.
|
||||||
|
*/
|
||||||
|
#define GET_UTF16(val, GET_16BIT, ERROR)\
|
||||||
|
val = GET_16BIT;\
|
||||||
|
{\
|
||||||
|
unsigned int hi = val - 0xD800;\
|
||||||
|
if (hi < 0x800) {\
|
||||||
|
val = GET_16BIT - 0xDC00;\
|
||||||
|
if (val > 0x3FFU || hi > 0x3FFU)\
|
||||||
|
ERROR\
|
||||||
|
val += (hi<<10) + 0x10000;\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \def PUT_UTF8(val, tmp, PUT_BYTE)
|
||||||
|
* Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long).
|
||||||
|
* \param val is an input-only argument and should be of type uint32_t. It holds
|
||||||
|
* a UCS-4 encoded Unicode character that is to be converted to UTF-8. If
|
||||||
|
* val is given as a function it is executed only once.
|
||||||
|
* \param tmp is a temporary variable and should be of type uint8_t. It
|
||||||
|
* represents an intermediate value during conversion that is to be
|
||||||
|
* output by PUT_BYTE.
|
||||||
|
* \param PUT_BYTE writes the converted UTF-8 bytes to any proper destination.
|
||||||
|
* It could be a function or a statement, and uses tmp as the input byte.
|
||||||
|
* For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be
|
||||||
|
* executed up to 4 times for values in the valid UTF-8 range and up to
|
||||||
|
* 7 times in the general case, depending on the length of the converted
|
||||||
|
* Unicode character.
|
||||||
|
*/
|
||||||
|
#define PUT_UTF8(val, tmp, PUT_BYTE)\
|
||||||
|
{\
|
||||||
|
int bytes, shift;\
|
||||||
|
uint32_t in = val;\
|
||||||
|
if (in < 0x80) {\
|
||||||
|
tmp = in;\
|
||||||
|
PUT_BYTE\
|
||||||
|
} else {\
|
||||||
|
bytes = (av_log2(in) + 4) / 5;\
|
||||||
|
shift = (bytes - 1) * 6;\
|
||||||
|
tmp = (256 - (256 >> bytes)) | (in >> shift);\
|
||||||
|
PUT_BYTE\
|
||||||
|
while (shift >= 6) {\
|
||||||
|
shift -= 6;\
|
||||||
|
tmp = 0x80 | ((in >> shift) & 0x3f);\
|
||||||
|
PUT_BYTE\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \def PUT_UTF16(val, tmp, PUT_16BIT)
|
||||||
|
* Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes).
|
||||||
|
* \param val is an input-only argument and should be of type uint32_t. It holds
|
||||||
|
* a UCS-4 encoded Unicode character that is to be converted to UTF-16. If
|
||||||
|
* val is given as a function it is executed only once.
|
||||||
|
* \param tmp is a temporary variable and should be of type uint16_t. It
|
||||||
|
* represents an intermediate value during conversion that is to be
|
||||||
|
* output by PUT_16BIT.
|
||||||
|
* \param PUT_16BIT writes the converted UTF-16 data to any proper destination
|
||||||
|
* in desired endianness. It could be a function or a statement, and uses tmp
|
||||||
|
* as the input byte. For example, PUT_BYTE could be "*output++ = tmp;"
|
||||||
|
* PUT_BYTE will be executed 1 or 2 times depending on input character.
|
||||||
|
*/
|
||||||
|
#define PUT_UTF16(val, tmp, PUT_16BIT)\
|
||||||
|
{\
|
||||||
|
uint32_t in = val;\
|
||||||
|
if (in < 0x10000) {\
|
||||||
|
tmp = in;\
|
||||||
|
PUT_16BIT\
|
||||||
|
} else {\
|
||||||
|
tmp = 0xD800 | ((in - 0x10000) >> 10);\
|
||||||
|
PUT_16BIT\
|
||||||
|
tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\
|
||||||
|
PUT_16BIT\
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "mem.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_AV_CONFIG_H
|
||||||
|
# include "internal.h"
|
||||||
|
#endif /* HAVE_AV_CONFIG_H */
|
||||||
|
|
||||||
|
#endif /* AVUTIL_COMMON_H */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following definitions are outside the multiple inclusion guard
|
||||||
|
* to ensure they are immediately available in intmath.h.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef av_log2
|
||||||
|
# define av_log2 av_log2_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_log2_16bit
|
||||||
|
# define av_log2_16bit av_log2_16bit_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_ceil_log2
|
||||||
|
# define av_ceil_log2 av_ceil_log2_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip
|
||||||
|
# define av_clip av_clip_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip_uint8
|
||||||
|
# define av_clip_uint8 av_clip_uint8_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip_int8
|
||||||
|
# define av_clip_int8 av_clip_int8_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip_uint16
|
||||||
|
# define av_clip_uint16 av_clip_uint16_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip_int16
|
||||||
|
# define av_clip_int16 av_clip_int16_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clipl_int32
|
||||||
|
# define av_clipl_int32 av_clipl_int32_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clip_uintp2
|
||||||
|
# define av_clip_uintp2 av_clip_uintp2_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_clipf
|
||||||
|
# define av_clipf av_clipf_c
|
||||||
|
#endif
|
||||||
|
#ifndef av_popcount
|
||||||
|
# define av_popcount av_popcount_c
|
||||||
|
#endif
|
||||||
+61
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2000, 2001, 2002 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_CPU_H
|
||||||
|
#define AVUTIL_CPU_H
|
||||||
|
|
||||||
|
#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */
|
||||||
|
|
||||||
|
/* lower 16 bits - CPU features */
|
||||||
|
#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX
|
||||||
|
#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext
|
||||||
|
#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW
|
||||||
|
#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions
|
||||||
|
#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions
|
||||||
|
#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster
|
||||||
|
#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt
|
||||||
|
#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions
|
||||||
|
#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
|
||||||
|
#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions
|
||||||
|
#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower
|
||||||
|
#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions
|
||||||
|
#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions
|
||||||
|
#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used
|
||||||
|
#define AV_CPU_FLAG_IWMMXT 0x0100 ///< XScale IWMMXT
|
||||||
|
#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the flags which specify extensions supported by the CPU.
|
||||||
|
*/
|
||||||
|
int av_get_cpu_flags(void);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disables cpu detection and forces the specified flags.
|
||||||
|
*/
|
||||||
|
void av_force_cpu_flags(int flags);
|
||||||
|
|
||||||
|
|
||||||
|
/* The following CPU-specific functions shall not be called directly. */
|
||||||
|
int ff_get_cpu_flags_arm(void);
|
||||||
|
int ff_get_cpu_flags_ppc(void);
|
||||||
|
int ff_get_cpu_flags_x86(void);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_CPU_H */
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_CRC_H
|
||||||
|
#define AVUTIL_CRC_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
typedef uint32_t AVCRC;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
AV_CRC_8_ATM,
|
||||||
|
AV_CRC_16_ANSI,
|
||||||
|
AV_CRC_16_CCITT,
|
||||||
|
AV_CRC_32_IEEE,
|
||||||
|
AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */
|
||||||
|
AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */
|
||||||
|
}AVCRCId;
|
||||||
|
|
||||||
|
int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size);
|
||||||
|
const AVCRC *av_crc_get_table(AVCRCId crc_id);
|
||||||
|
uint32_t av_crc(const AVCRC *ctx, uint32_t start_crc, const uint8_t *buffer, size_t length) av_pure;
|
||||||
|
|
||||||
|
#endif /* AVUTIL_CRC_H */
|
||||||
|
|
||||||
+81
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Public dictionary API.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_DICT_H
|
||||||
|
#define AVUTIL_DICT_H
|
||||||
|
|
||||||
|
#define AV_DICT_MATCH_CASE 1
|
||||||
|
#define AV_DICT_IGNORE_SUFFIX 2
|
||||||
|
#define AV_DICT_DONT_STRDUP_KEY 4
|
||||||
|
#define AV_DICT_DONT_STRDUP_VAL 8
|
||||||
|
#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries.
|
||||||
|
#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no
|
||||||
|
delimiter is added, the strings are simply concatenated. */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char *key;
|
||||||
|
char *value;
|
||||||
|
} AVDictionaryEntry;
|
||||||
|
|
||||||
|
typedef struct AVDictionary AVDictionary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a dictionary entry with matching key.
|
||||||
|
*
|
||||||
|
* @param prev Set to the previous matching element to find the next.
|
||||||
|
* If set to NULL the first matching element is returned.
|
||||||
|
* @param flags Allows case as well as suffix-insensitive comparisons.
|
||||||
|
* @return Found entry or NULL, changing key or value leads to undefined behavior.
|
||||||
|
*/
|
||||||
|
AVDictionaryEntry *
|
||||||
|
av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the given entry in *pm, overwriting an existing entry.
|
||||||
|
*
|
||||||
|
* @param pm pointer to a pointer to a dictionary struct. If *pm is NULL
|
||||||
|
* a dictionary struct is allocated and put in *pm.
|
||||||
|
* @param key entry key to add to *pm (will be av_strduped depending on flags)
|
||||||
|
* @param value entry value to add to *pm (will be av_strduped depending on flags).
|
||||||
|
* Passing a NULL value will cause an existing tag to be deleted.
|
||||||
|
* @return >= 0 on success otherwise an error code <0
|
||||||
|
*/
|
||||||
|
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy entries from one AVDictionary struct into another.
|
||||||
|
* @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL,
|
||||||
|
* this function will allocate a struct for you and put it in *dst
|
||||||
|
* @param src pointer to source AVDictionary struct
|
||||||
|
* @param flags flags to use when setting entries in *dst
|
||||||
|
* @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag
|
||||||
|
*/
|
||||||
|
void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free all the memory allocated for an AVDictionary struct.
|
||||||
|
*/
|
||||||
|
void av_dict_free(AVDictionary **m);
|
||||||
|
|
||||||
|
#endif // AVUTIL_DICT_H
|
||||||
+68
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* error code definitions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_ERROR_H
|
||||||
|
#define AVUTIL_ERROR_H
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
/* error handling */
|
||||||
|
#if EDOM > 0
|
||||||
|
#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions.
|
||||||
|
#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value.
|
||||||
|
#else
|
||||||
|
/* Some platforms have E* and errno already negated. */
|
||||||
|
#define AVERROR(e) (e)
|
||||||
|
#define AVUNERROR(e) (e)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AVERROR_BSF_NOT_FOUND (-MKTAG(0xF8,'B','S','F')) ///< Bitstream filter not found
|
||||||
|
#define AVERROR_DECODER_NOT_FOUND (-MKTAG(0xF8,'D','E','C')) ///< Decoder not found
|
||||||
|
#define AVERROR_DEMUXER_NOT_FOUND (-MKTAG(0xF8,'D','E','M')) ///< Demuxer not found
|
||||||
|
#define AVERROR_ENCODER_NOT_FOUND (-MKTAG(0xF8,'E','N','C')) ///< Encoder not found
|
||||||
|
#define AVERROR_EOF (-MKTAG( 'E','O','F',' ')) ///< End of file
|
||||||
|
#define AVERROR_EXIT (-MKTAG( 'E','X','I','T')) ///< Immediate exit was requested; the called function should not be restarted
|
||||||
|
#define AVERROR_FILTER_NOT_FOUND (-MKTAG(0xF8,'F','I','L')) ///< Filter not found
|
||||||
|
#define AVERROR_INVALIDDATA (-MKTAG( 'I','N','D','A')) ///< Invalid data found when processing input
|
||||||
|
#define AVERROR_MUXER_NOT_FOUND (-MKTAG(0xF8,'M','U','X')) ///< Muxer not found
|
||||||
|
#define AVERROR_OPTION_NOT_FOUND (-MKTAG(0xF8,'O','P','T')) ///< Option not found
|
||||||
|
#define AVERROR_PATCHWELCOME (-MKTAG( 'P','A','W','E')) ///< Not yet implemented in FFmpeg, patches welcome
|
||||||
|
#define AVERROR_PROTOCOL_NOT_FOUND (-MKTAG(0xF8,'P','R','O')) ///< Protocol not found
|
||||||
|
#define AVERROR_STREAM_NOT_FOUND (-MKTAG(0xF8,'S','T','R')) ///< Stream not found
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put a description of the AVERROR code errnum in errbuf.
|
||||||
|
* In case of failure the global variable errno is set to indicate the
|
||||||
|
* error. Even in case of failure av_strerror() will print a generic
|
||||||
|
* error message indicating the errnum provided to errbuf.
|
||||||
|
*
|
||||||
|
* @param errnum error code to describe
|
||||||
|
* @param errbuf buffer to which description is written
|
||||||
|
* @param errbuf_size the size in bytes of errbuf
|
||||||
|
* @return 0 on success, a negative value if a description for errnum
|
||||||
|
* cannot be found
|
||||||
|
*/
|
||||||
|
int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_ERROR_H */
|
||||||
+146
@@ -0,0 +1,146 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* simple arithmetic expression evaluator
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_EVAL_H
|
||||||
|
#define AVUTIL_EVAL_H
|
||||||
|
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
typedef struct AVExpr AVExpr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse and evaluate an expression.
|
||||||
|
* Note, this is significantly slower than av_expr_eval().
|
||||||
|
*
|
||||||
|
* @param res a pointer to a double where is put the result value of
|
||||||
|
* the expression, or NAN in case of error
|
||||||
|
* @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
|
||||||
|
* @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
|
||||||
|
* @param const_values a zero terminated array of values for the identifiers from const_names
|
||||||
|
* @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
|
||||||
|
* @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
|
||||||
|
* @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
|
||||||
|
* @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
|
||||||
|
* @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
|
||||||
|
* @param log_ctx parent logging context
|
||||||
|
* @return 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code otherwise
|
||||||
|
*/
|
||||||
|
int av_expr_parse_and_eval(double *res, const char *s,
|
||||||
|
const char * const *const_names, const double *const_values,
|
||||||
|
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||||
|
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||||
|
void *opaque, int log_offset, void *log_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse an expression.
|
||||||
|
*
|
||||||
|
* @param expr a pointer where is put an AVExpr containing the parsed
|
||||||
|
* value in case of successfull parsing, or NULL otherwise.
|
||||||
|
* The pointed to AVExpr must be freed with av_expr_free() by the user
|
||||||
|
* when it is not needed anymore.
|
||||||
|
* @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
|
||||||
|
* @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
|
||||||
|
* @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
|
||||||
|
* @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
|
||||||
|
* @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
|
||||||
|
* @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
|
||||||
|
* @param log_ctx parent logging context
|
||||||
|
* @return 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code otherwise
|
||||||
|
*/
|
||||||
|
int av_expr_parse(AVExpr **expr, const char *s,
|
||||||
|
const char * const *const_names,
|
||||||
|
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||||
|
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||||
|
int log_offset, void *log_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Evaluate a previously parsed expression.
|
||||||
|
*
|
||||||
|
* @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names
|
||||||
|
* @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
|
||||||
|
* @return the value of the expression
|
||||||
|
*/
|
||||||
|
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a parsed expression previously created with av_expr_parse().
|
||||||
|
*/
|
||||||
|
void av_expr_free(AVExpr *e);
|
||||||
|
|
||||||
|
#if FF_API_OLD_EVAL_NAMES
|
||||||
|
/**
|
||||||
|
* @deprecated Deprecated in favor of av_expr_parse_and_eval().
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_parse_and_eval_expr(double *res, const char *s,
|
||||||
|
const char * const *const_names, const double *const_values,
|
||||||
|
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||||
|
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||||
|
void *opaque, int log_offset, void *log_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Deprecated in favor of av_expr_parse().
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_parse_expr(AVExpr **expr, const char *s,
|
||||||
|
const char * const *const_names,
|
||||||
|
const char * const *func1_names, double (* const *funcs1)(void *, double),
|
||||||
|
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
|
||||||
|
int log_offset, void *log_ctx);
|
||||||
|
/**
|
||||||
|
* @deprecated Deprecated in favor of av_expr_eval().
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
double av_eval_expr(AVExpr *e, const double *const_values, void *opaque);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Deprecated in favor of av_expr_free().
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
void av_free_expr(AVExpr *e);
|
||||||
|
#endif /* FF_API_OLD_EVAL_NAMES */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the string in numstr and return its value as a double. If
|
||||||
|
* the string is empty, contains only whitespaces, or does not contain
|
||||||
|
* an initial substring that has the expected syntax for a
|
||||||
|
* floating-point number, no conversion is performed. In this case,
|
||||||
|
* returns a value of zero and the value returned in tail is the value
|
||||||
|
* of numstr.
|
||||||
|
*
|
||||||
|
* @param numstr a string representing a number, may contain one of
|
||||||
|
* the International System number postfixes, for example 'K', 'M',
|
||||||
|
* 'G'. If 'i' is appended after the postfix, powers of 2 are used
|
||||||
|
* instead of powers of 10. The 'B' postfix multiplies the value for
|
||||||
|
* 8, and can be appended after another postfix or used alone. This
|
||||||
|
* allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
|
||||||
|
* @param tail if non-NULL puts here the pointer to the char next
|
||||||
|
* after the last parsed character
|
||||||
|
*/
|
||||||
|
double av_strtod(const char *numstr, char **tail);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_EVAL_H */
|
||||||
+116
@@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* a very simple circular buffer FIFO implementation
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_FIFO_H
|
||||||
|
#define AVUTIL_FIFO_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
typedef struct AVFifoBuffer {
|
||||||
|
uint8_t *buffer;
|
||||||
|
uint8_t *rptr, *wptr, *end;
|
||||||
|
uint32_t rndx, wndx;
|
||||||
|
} AVFifoBuffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize an AVFifoBuffer.
|
||||||
|
* @param size of FIFO
|
||||||
|
* @return AVFifoBuffer or NULL in case of memory allocation failure
|
||||||
|
*/
|
||||||
|
AVFifoBuffer *av_fifo_alloc(unsigned int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free an AVFifoBuffer.
|
||||||
|
* @param *f AVFifoBuffer to free
|
||||||
|
*/
|
||||||
|
void av_fifo_free(AVFifoBuffer *f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied.
|
||||||
|
* @param *f AVFifoBuffer to reset
|
||||||
|
*/
|
||||||
|
void av_fifo_reset(AVFifoBuffer *f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the amount of data in bytes in the AVFifoBuffer, that is the
|
||||||
|
* amount of data you can read from it.
|
||||||
|
* @param *f AVFifoBuffer to read from
|
||||||
|
* @return size
|
||||||
|
*/
|
||||||
|
int av_fifo_size(AVFifoBuffer *f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the amount of space in bytes in the AVFifoBuffer, that is the
|
||||||
|
* amount of data you can write into it.
|
||||||
|
* @param *f AVFifoBuffer to write into
|
||||||
|
* @return size
|
||||||
|
*/
|
||||||
|
int av_fifo_space(AVFifoBuffer *f);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Feed data from an AVFifoBuffer to a user-supplied callback.
|
||||||
|
* @param *f AVFifoBuffer to read from
|
||||||
|
* @param buf_size number of bytes to read
|
||||||
|
* @param *func generic read function
|
||||||
|
* @param *dest data destination
|
||||||
|
*/
|
||||||
|
int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Feed data from a user-supplied callback to an AVFifoBuffer.
|
||||||
|
* @param *f AVFifoBuffer to write to
|
||||||
|
* @param *src data source; non-const since it may be used as a
|
||||||
|
* modifiable context by the function defined in func
|
||||||
|
* @param size number of bytes to write
|
||||||
|
* @param *func generic write function; the first parameter is src,
|
||||||
|
* the second is dest_buf, the third is dest_buf_size.
|
||||||
|
* func must return the number of bytes written to dest_buf, or <= 0 to
|
||||||
|
* indicate no more data available to write.
|
||||||
|
* If func is NULL, src is interpreted as a simple byte array for source data.
|
||||||
|
* @return the number of bytes written to the FIFO
|
||||||
|
*/
|
||||||
|
int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resize an AVFifoBuffer.
|
||||||
|
* @param *f AVFifoBuffer to resize
|
||||||
|
* @param size new AVFifoBuffer size in bytes
|
||||||
|
* @return <0 for failure, >=0 otherwise
|
||||||
|
*/
|
||||||
|
int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read and discard the specified amount of data from an AVFifoBuffer.
|
||||||
|
* @param *f AVFifoBuffer to read from
|
||||||
|
* @param size amount of data to read in bytes
|
||||||
|
*/
|
||||||
|
void av_fifo_drain(AVFifoBuffer *f, int size);
|
||||||
|
|
||||||
|
static inline uint8_t av_fifo_peek(AVFifoBuffer *f, int offs)
|
||||||
|
{
|
||||||
|
uint8_t *ptr = f->rptr + offs;
|
||||||
|
if (ptr >= f->end)
|
||||||
|
ptr -= f->end - f->buffer;
|
||||||
|
return *ptr;
|
||||||
|
}
|
||||||
|
#endif /* AVUTIL_FIFO_H */
|
||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_FILE_H
|
||||||
|
#define AVUTIL_FILE_H
|
||||||
|
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Misc file utilities.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read the file with name filename, and put its content in a newly
|
||||||
|
* allocated buffer or map it with mmap() when available.
|
||||||
|
* In case of success set *bufptr to the read or mmapped buffer, and
|
||||||
|
* *size to the size in bytes of the buffer in *bufptr.
|
||||||
|
* The returned buffer must be released with av_file_unmap().
|
||||||
|
*
|
||||||
|
* @param log_offset loglevel offset used for logging
|
||||||
|
* @param log_ctx context used for logging
|
||||||
|
* @return a non negative number in case of success, a negative value
|
||||||
|
* corresponding to an AVERROR error code in case of failure
|
||||||
|
*/
|
||||||
|
int av_file_map(const char *filename, uint8_t **bufptr, size_t *size,
|
||||||
|
int log_offset, void *log_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unmap or free the buffer bufptr created by av_file_map().
|
||||||
|
*
|
||||||
|
* @param size size in bytes of bufptr, must be the same as returned
|
||||||
|
* by av_file_map()
|
||||||
|
*/
|
||||||
|
void av_file_unmap(uint8_t *bufptr, size_t size);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_FILE_H */
|
||||||
+130
@@ -0,0 +1,130 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_IMGUTILS_H
|
||||||
|
#define AVUTIL_IMGUTILS_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* misc image utilities
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avutil.h"
|
||||||
|
#include "pixdesc.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compute the max pixel step for each plane of an image with a
|
||||||
|
* format described by pixdesc.
|
||||||
|
*
|
||||||
|
* The pixel step is the distance in bytes between the first byte of
|
||||||
|
* the group of bytes which describe a pixel component and the first
|
||||||
|
* byte of the successive group in the same plane for the same
|
||||||
|
* component.
|
||||||
|
*
|
||||||
|
* @param max_pixsteps an array which is filled with the max pixel step
|
||||||
|
* for each plane. Since a plane may contain different pixel
|
||||||
|
* components, the computed max_pixsteps[plane] is relative to the
|
||||||
|
* component in the plane with the max pixel step.
|
||||||
|
* @param max_pixstep_comps an array which is filled with the component
|
||||||
|
* for each plane which has the max pixel step. May be NULL.
|
||||||
|
*/
|
||||||
|
void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4],
|
||||||
|
const AVPixFmtDescriptor *pixdesc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compute the size of an image line with format pix_fmt and width
|
||||||
|
* width for the plane plane.
|
||||||
|
*
|
||||||
|
* @return the computed size in bytes
|
||||||
|
*/
|
||||||
|
int av_image_get_linesize(enum PixelFormat pix_fmt, int width, int plane);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill plane linesizes for an image with pixel format pix_fmt and
|
||||||
|
* width width.
|
||||||
|
*
|
||||||
|
* @param linesizes array to be filled with the linesize for each plane
|
||||||
|
* @return >= 0 in case of success, a negative error code otherwise
|
||||||
|
*/
|
||||||
|
int av_image_fill_linesizes(int linesizes[4], enum PixelFormat pix_fmt, int width);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill plane data pointers for an image with pixel format pix_fmt and
|
||||||
|
* height height.
|
||||||
|
*
|
||||||
|
* @param data pointers array to be filled with the pointer for each image plane
|
||||||
|
* @param ptr the pointer to a buffer which will contain the image
|
||||||
|
* @param linesizes the array containing the linesize for each
|
||||||
|
* plane, should be filled by av_image_fill_linesizes()
|
||||||
|
* @return the size in bytes required for the image buffer, a negative
|
||||||
|
* error code in case of failure
|
||||||
|
*/
|
||||||
|
int av_image_fill_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int height,
|
||||||
|
uint8_t *ptr, const int linesizes[4]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an image with size w and h and pixel format pix_fmt, and
|
||||||
|
* fill pointers and linesizes accordingly.
|
||||||
|
* The allocated image buffer has to be freed by using
|
||||||
|
* av_freep(&pointers[0]).
|
||||||
|
*
|
||||||
|
* @param align the value to use for buffer size alignment
|
||||||
|
* @return the size in bytes required for the image buffer, a negative
|
||||||
|
* error code in case of failure
|
||||||
|
*/
|
||||||
|
int av_image_alloc(uint8_t *pointers[4], int linesizes[4],
|
||||||
|
int w, int h, enum PixelFormat pix_fmt, int align);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy image plane from src to dst.
|
||||||
|
* That is, copy "height" number of lines of "bytewidth" bytes each.
|
||||||
|
* The first byte of each successive line is separated by *_linesize
|
||||||
|
* bytes.
|
||||||
|
*
|
||||||
|
* @param dst_linesize linesize for the image plane in dst
|
||||||
|
* @param src_linesize linesize for the image plane in src
|
||||||
|
*/
|
||||||
|
void av_image_copy_plane(uint8_t *dst, int dst_linesize,
|
||||||
|
const uint8_t *src, int src_linesize,
|
||||||
|
int bytewidth, int height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy image in src_data to dst_data.
|
||||||
|
*
|
||||||
|
* @param dst_linesize linesizes for the image in dst_data
|
||||||
|
* @param src_linesize linesizes for the image in src_data
|
||||||
|
*/
|
||||||
|
void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4],
|
||||||
|
const uint8_t *src_data[4], const int src_linesizes[4],
|
||||||
|
enum PixelFormat pix_fmt, int width, int height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the given dimension of an image is valid, meaning that all
|
||||||
|
* bytes of the image can be addressed with a signed int.
|
||||||
|
*
|
||||||
|
* @param w the width of the picture
|
||||||
|
* @param h the height of the picture
|
||||||
|
* @param log_offset the offset to sum to the log level for logging with log_ctx
|
||||||
|
* @param log_ctx the parent logging context, it may be NULL
|
||||||
|
* @return >= 0 if valid, a negative error code otherwise
|
||||||
|
*/
|
||||||
|
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx);
|
||||||
|
|
||||||
|
int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_IMGUTILS_H */
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_INTFLOAT_READWRITE_H
|
||||||
|
#define AVUTIL_INTFLOAT_READWRITE_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
/* IEEE 80 bits extended float */
|
||||||
|
typedef struct AVExtFloat {
|
||||||
|
uint8_t exponent[2];
|
||||||
|
uint8_t mantissa[8];
|
||||||
|
} AVExtFloat;
|
||||||
|
|
||||||
|
double av_int2dbl(int64_t v) av_const;
|
||||||
|
float av_int2flt(int32_t v) av_const;
|
||||||
|
double av_ext2dbl(const AVExtFloat ext) av_const;
|
||||||
|
int64_t av_dbl2int(double d) av_const;
|
||||||
|
int32_t av_flt2int(float d) av_const;
|
||||||
|
AVExtFloat av_dbl2ext(double d) av_const;
|
||||||
|
|
||||||
|
#endif /* AVUTIL_INTFLOAT_READWRITE_H */
|
||||||
+522
@@ -0,0 +1,522 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_INTREADWRITE_H
|
||||||
|
#define AVUTIL_INTREADWRITE_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "bswap.h"
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
uint64_t u64;
|
||||||
|
uint32_t u32[2];
|
||||||
|
uint16_t u16[4];
|
||||||
|
uint8_t u8 [8];
|
||||||
|
double f64;
|
||||||
|
float f32[2];
|
||||||
|
} av_alias av_alias64;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
uint32_t u32;
|
||||||
|
uint16_t u16[2];
|
||||||
|
uint8_t u8 [4];
|
||||||
|
float f32;
|
||||||
|
} av_alias av_alias32;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
uint16_t u16;
|
||||||
|
uint8_t u8 [2];
|
||||||
|
} av_alias av_alias16;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Arch-specific headers can provide any combination of
|
||||||
|
* AV_[RW][BLN](16|24|32|64) and AV_(COPY|SWAP|ZERO)(64|128) macros.
|
||||||
|
* Preprocessor symbols must be defined, even if these are implemented
|
||||||
|
* as inline functions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_AV_CONFIG_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if ARCH_ARM
|
||||||
|
# include "arm/intreadwrite.h"
|
||||||
|
#elif ARCH_AVR32
|
||||||
|
# include "avr32/intreadwrite.h"
|
||||||
|
#elif ARCH_MIPS
|
||||||
|
# include "mips/intreadwrite.h"
|
||||||
|
#elif ARCH_PPC
|
||||||
|
# include "ppc/intreadwrite.h"
|
||||||
|
#elif ARCH_TOMI
|
||||||
|
# include "tomi/intreadwrite.h"
|
||||||
|
#elif ARCH_X86
|
||||||
|
# include "x86/intreadwrite.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* HAVE_AV_CONFIG_H */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
|
||||||
|
# if defined(AV_RN16) && !defined(AV_RB16)
|
||||||
|
# define AV_RB16(p) AV_RN16(p)
|
||||||
|
# elif !defined(AV_RN16) && defined(AV_RB16)
|
||||||
|
# define AV_RN16(p) AV_RB16(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN16) && !defined(AV_WB16)
|
||||||
|
# define AV_WB16(p, v) AV_WN16(p, v)
|
||||||
|
# elif !defined(AV_WN16) && defined(AV_WB16)
|
||||||
|
# define AV_WN16(p, v) AV_WB16(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN24) && !defined(AV_RB24)
|
||||||
|
# define AV_RB24(p) AV_RN24(p)
|
||||||
|
# elif !defined(AV_RN24) && defined(AV_RB24)
|
||||||
|
# define AV_RN24(p) AV_RB24(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN24) && !defined(AV_WB24)
|
||||||
|
# define AV_WB24(p, v) AV_WN24(p, v)
|
||||||
|
# elif !defined(AV_WN24) && defined(AV_WB24)
|
||||||
|
# define AV_WN24(p, v) AV_WB24(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN32) && !defined(AV_RB32)
|
||||||
|
# define AV_RB32(p) AV_RN32(p)
|
||||||
|
# elif !defined(AV_RN32) && defined(AV_RB32)
|
||||||
|
# define AV_RN32(p) AV_RB32(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN32) && !defined(AV_WB32)
|
||||||
|
# define AV_WB32(p, v) AV_WN32(p, v)
|
||||||
|
# elif !defined(AV_WN32) && defined(AV_WB32)
|
||||||
|
# define AV_WN32(p, v) AV_WB32(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN64) && !defined(AV_RB64)
|
||||||
|
# define AV_RB64(p) AV_RN64(p)
|
||||||
|
# elif !defined(AV_RN64) && defined(AV_RB64)
|
||||||
|
# define AV_RN64(p) AV_RB64(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN64) && !defined(AV_WB64)
|
||||||
|
# define AV_WB64(p, v) AV_WN64(p, v)
|
||||||
|
# elif !defined(AV_WN64) && defined(AV_WB64)
|
||||||
|
# define AV_WN64(p, v) AV_WB64(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else /* AV_HAVE_BIGENDIAN */
|
||||||
|
|
||||||
|
# if defined(AV_RN16) && !defined(AV_RL16)
|
||||||
|
# define AV_RL16(p) AV_RN16(p)
|
||||||
|
# elif !defined(AV_RN16) && defined(AV_RL16)
|
||||||
|
# define AV_RN16(p) AV_RL16(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN16) && !defined(AV_WL16)
|
||||||
|
# define AV_WL16(p, v) AV_WN16(p, v)
|
||||||
|
# elif !defined(AV_WN16) && defined(AV_WL16)
|
||||||
|
# define AV_WN16(p, v) AV_WL16(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN24) && !defined(AV_RL24)
|
||||||
|
# define AV_RL24(p) AV_RN24(p)
|
||||||
|
# elif !defined(AV_RN24) && defined(AV_RL24)
|
||||||
|
# define AV_RN24(p) AV_RL24(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN24) && !defined(AV_WL24)
|
||||||
|
# define AV_WL24(p, v) AV_WN24(p, v)
|
||||||
|
# elif !defined(AV_WN24) && defined(AV_WL24)
|
||||||
|
# define AV_WN24(p, v) AV_WL24(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN32) && !defined(AV_RL32)
|
||||||
|
# define AV_RL32(p) AV_RN32(p)
|
||||||
|
# elif !defined(AV_RN32) && defined(AV_RL32)
|
||||||
|
# define AV_RN32(p) AV_RL32(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN32) && !defined(AV_WL32)
|
||||||
|
# define AV_WL32(p, v) AV_WN32(p, v)
|
||||||
|
# elif !defined(AV_WN32) && defined(AV_WL32)
|
||||||
|
# define AV_WN32(p, v) AV_WL32(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_RN64) && !defined(AV_RL64)
|
||||||
|
# define AV_RL64(p) AV_RN64(p)
|
||||||
|
# elif !defined(AV_RN64) && defined(AV_RL64)
|
||||||
|
# define AV_RN64(p) AV_RL64(p)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if defined(AV_WN64) && !defined(AV_WL64)
|
||||||
|
# define AV_WL64(p, v) AV_WN64(p, v)
|
||||||
|
# elif !defined(AV_WN64) && defined(AV_WL64)
|
||||||
|
# define AV_WN64(p, v) AV_WL64(p, v)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif /* !AV_HAVE_BIGENDIAN */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define AV_[RW]N helper macros to simplify definitions not provided
|
||||||
|
* by per-arch headers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__)
|
||||||
|
|
||||||
|
union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;
|
||||||
|
union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias;
|
||||||
|
union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias;
|
||||||
|
|
||||||
|
# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l)
|
||||||
|
# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v))
|
||||||
|
|
||||||
|
#elif defined(__DECC)
|
||||||
|
|
||||||
|
# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p)))
|
||||||
|
# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v))
|
||||||
|
|
||||||
|
#elif AV_HAVE_FAST_UNALIGNED
|
||||||
|
|
||||||
|
# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s)
|
||||||
|
# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v))
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#ifndef AV_RB16
|
||||||
|
# define AV_RB16(x) \
|
||||||
|
((((const uint8_t*)(x))[0] << 8) | \
|
||||||
|
((const uint8_t*)(x))[1])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB16
|
||||||
|
# define AV_WB16(p, d) do { \
|
||||||
|
((uint8_t*)(p))[1] = (d); \
|
||||||
|
((uint8_t*)(p))[0] = (d)>>8; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL16
|
||||||
|
# define AV_RL16(x) \
|
||||||
|
((((const uint8_t*)(x))[1] << 8) | \
|
||||||
|
((const uint8_t*)(x))[0])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL16
|
||||||
|
# define AV_WL16(p, d) do { \
|
||||||
|
((uint8_t*)(p))[0] = (d); \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>8; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RB32
|
||||||
|
# define AV_RB32(x) \
|
||||||
|
(((uint32_t)((const uint8_t*)(x))[0] << 24) | \
|
||||||
|
(((const uint8_t*)(x))[1] << 16) | \
|
||||||
|
(((const uint8_t*)(x))[2] << 8) | \
|
||||||
|
((const uint8_t*)(x))[3])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB32
|
||||||
|
# define AV_WB32(p, d) do { \
|
||||||
|
((uint8_t*)(p))[3] = (d); \
|
||||||
|
((uint8_t*)(p))[2] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>16; \
|
||||||
|
((uint8_t*)(p))[0] = (d)>>24; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL32
|
||||||
|
# define AV_RL32(x) \
|
||||||
|
(((uint32_t)((const uint8_t*)(x))[3] << 24) | \
|
||||||
|
(((const uint8_t*)(x))[2] << 16) | \
|
||||||
|
(((const uint8_t*)(x))[1] << 8) | \
|
||||||
|
((const uint8_t*)(x))[0])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL32
|
||||||
|
# define AV_WL32(p, d) do { \
|
||||||
|
((uint8_t*)(p))[0] = (d); \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[2] = (d)>>16; \
|
||||||
|
((uint8_t*)(p))[3] = (d)>>24; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RB64
|
||||||
|
# define AV_RB64(x) \
|
||||||
|
(((uint64_t)((const uint8_t*)(x))[0] << 56) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[1] << 48) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[2] << 40) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[3] << 32) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[4] << 24) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[5] << 16) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[6] << 8) | \
|
||||||
|
(uint64_t)((const uint8_t*)(x))[7])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB64
|
||||||
|
# define AV_WB64(p, d) do { \
|
||||||
|
((uint8_t*)(p))[7] = (d); \
|
||||||
|
((uint8_t*)(p))[6] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[5] = (d)>>16; \
|
||||||
|
((uint8_t*)(p))[4] = (d)>>24; \
|
||||||
|
((uint8_t*)(p))[3] = (d)>>32; \
|
||||||
|
((uint8_t*)(p))[2] = (d)>>40; \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>48; \
|
||||||
|
((uint8_t*)(p))[0] = (d)>>56; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL64
|
||||||
|
# define AV_RL64(x) \
|
||||||
|
(((uint64_t)((const uint8_t*)(x))[7] << 56) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[6] << 48) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[5] << 40) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[4] << 32) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[3] << 24) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[2] << 16) | \
|
||||||
|
((uint64_t)((const uint8_t*)(x))[1] << 8) | \
|
||||||
|
(uint64_t)((const uint8_t*)(x))[0])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL64
|
||||||
|
# define AV_WL64(p, d) do { \
|
||||||
|
((uint8_t*)(p))[0] = (d); \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[2] = (d)>>16; \
|
||||||
|
((uint8_t*)(p))[3] = (d)>>24; \
|
||||||
|
((uint8_t*)(p))[4] = (d)>>32; \
|
||||||
|
((uint8_t*)(p))[5] = (d)>>40; \
|
||||||
|
((uint8_t*)(p))[6] = (d)>>48; \
|
||||||
|
((uint8_t*)(p))[7] = (d)>>56; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
# define AV_RN(s, p) AV_RB##s(p)
|
||||||
|
# define AV_WN(s, p, v) AV_WB##s(p, v)
|
||||||
|
#else
|
||||||
|
# define AV_RN(s, p) AV_RL##s(p)
|
||||||
|
# define AV_WN(s, p, v) AV_WL##s(p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* HAVE_FAST_UNALIGNED */
|
||||||
|
|
||||||
|
#ifndef AV_RN16
|
||||||
|
# define AV_RN16(p) AV_RN(16, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RN32
|
||||||
|
# define AV_RN32(p) AV_RN(32, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RN64
|
||||||
|
# define AV_RN64(p) AV_RN(64, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN16
|
||||||
|
# define AV_WN16(p, v) AV_WN(16, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN32
|
||||||
|
# define AV_WN32(p, v) AV_WN(32, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN64
|
||||||
|
# define AV_WN64(p, v) AV_WN(64, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
# define AV_RB(s, p) AV_RN##s(p)
|
||||||
|
# define AV_WB(s, p, v) AV_WN##s(p, v)
|
||||||
|
# define AV_RL(s, p) av_bswap##s(AV_RN##s(p))
|
||||||
|
# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v))
|
||||||
|
#else
|
||||||
|
# define AV_RB(s, p) av_bswap##s(AV_RN##s(p))
|
||||||
|
# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v))
|
||||||
|
# define AV_RL(s, p) AV_RN##s(p)
|
||||||
|
# define AV_WL(s, p, v) AV_WN##s(p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AV_RB8(x) (((const uint8_t*)(x))[0])
|
||||||
|
#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0)
|
||||||
|
|
||||||
|
#define AV_RL8(x) AV_RB8(x)
|
||||||
|
#define AV_WL8(p, d) AV_WB8(p, d)
|
||||||
|
|
||||||
|
#ifndef AV_RB16
|
||||||
|
# define AV_RB16(p) AV_RB(16, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB16
|
||||||
|
# define AV_WB16(p, v) AV_WB(16, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL16
|
||||||
|
# define AV_RL16(p) AV_RL(16, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL16
|
||||||
|
# define AV_WL16(p, v) AV_WL(16, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RB32
|
||||||
|
# define AV_RB32(p) AV_RB(32, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB32
|
||||||
|
# define AV_WB32(p, v) AV_WB(32, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL32
|
||||||
|
# define AV_RL32(p) AV_RL(32, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL32
|
||||||
|
# define AV_WL32(p, v) AV_WL(32, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RB64
|
||||||
|
# define AV_RB64(p) AV_RB(64, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB64
|
||||||
|
# define AV_WB64(p, v) AV_WB(64, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL64
|
||||||
|
# define AV_RL64(p) AV_RL(64, p)
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL64
|
||||||
|
# define AV_WL64(p, v) AV_WL(64, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RB24
|
||||||
|
# define AV_RB24(x) \
|
||||||
|
((((const uint8_t*)(x))[0] << 16) | \
|
||||||
|
(((const uint8_t*)(x))[1] << 8) | \
|
||||||
|
((const uint8_t*)(x))[2])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WB24
|
||||||
|
# define AV_WB24(p, d) do { \
|
||||||
|
((uint8_t*)(p))[2] = (d); \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[0] = (d)>>16; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RL24
|
||||||
|
# define AV_RL24(x) \
|
||||||
|
((((const uint8_t*)(x))[2] << 16) | \
|
||||||
|
(((const uint8_t*)(x))[1] << 8) | \
|
||||||
|
((const uint8_t*)(x))[0])
|
||||||
|
#endif
|
||||||
|
#ifndef AV_WL24
|
||||||
|
# define AV_WL24(p, d) do { \
|
||||||
|
((uint8_t*)(p))[0] = (d); \
|
||||||
|
((uint8_t*)(p))[1] = (d)>>8; \
|
||||||
|
((uint8_t*)(p))[2] = (d)>>16; \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The AV_[RW]NA macros access naturally aligned data
|
||||||
|
* in a type-safe way.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s)
|
||||||
|
#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v))
|
||||||
|
|
||||||
|
#ifndef AV_RN16A
|
||||||
|
# define AV_RN16A(p) AV_RNA(16, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RN32A
|
||||||
|
# define AV_RN32A(p) AV_RNA(32, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_RN64A
|
||||||
|
# define AV_RN64A(p) AV_RNA(64, p)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN16A
|
||||||
|
# define AV_WN16A(p, v) AV_WNA(16, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN32A
|
||||||
|
# define AV_WN32A(p, v) AV_WNA(32, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_WN64A
|
||||||
|
# define AV_WN64A(p, v) AV_WNA(64, p, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be
|
||||||
|
* naturally aligned. They may be implemented using MMX,
|
||||||
|
* so emms_c() must be called before using any float code
|
||||||
|
* afterwards.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_COPY(n, d, s) \
|
||||||
|
(((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n)
|
||||||
|
|
||||||
|
#ifndef AV_COPY16
|
||||||
|
# define AV_COPY16(d, s) AV_COPY(16, d, s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_COPY32
|
||||||
|
# define AV_COPY32(d, s) AV_COPY(32, d, s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_COPY64
|
||||||
|
# define AV_COPY64(d, s) AV_COPY(64, d, s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_COPY128
|
||||||
|
# define AV_COPY128(d, s) \
|
||||||
|
do { \
|
||||||
|
AV_COPY64(d, s); \
|
||||||
|
AV_COPY64((char*)(d)+8, (char*)(s)+8); \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b))
|
||||||
|
|
||||||
|
#ifndef AV_SWAP64
|
||||||
|
# define AV_SWAP64(a, b) AV_SWAP(64, a, b)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0)
|
||||||
|
|
||||||
|
#ifndef AV_ZERO16
|
||||||
|
# define AV_ZERO16(d) AV_ZERO(16, d)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_ZERO32
|
||||||
|
# define AV_ZERO32(d) AV_ZERO(32, d)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_ZERO64
|
||||||
|
# define AV_ZERO64(d) AV_ZERO(64, d)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef AV_ZERO128
|
||||||
|
# define AV_ZERO128(d) \
|
||||||
|
do { \
|
||||||
|
AV_ZERO64(d); \
|
||||||
|
AV_ZERO64((char*)(d)+8); \
|
||||||
|
} while(0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVUTIL_INTREADWRITE_H */
|
||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Lagged Fibonacci PRNG
|
||||||
|
* Copyright (c) 2008 Michael Niedermayer
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_LFG_H
|
||||||
|
#define AVUTIL_LFG_H
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned int state[64];
|
||||||
|
int index;
|
||||||
|
} AVLFG;
|
||||||
|
|
||||||
|
void av_lfg_init(AVLFG *c, unsigned int seed);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the next random unsigned 32-bit number using an ALFG.
|
||||||
|
*
|
||||||
|
* Please also consider a simple LCG like state= state*1664525+1013904223,
|
||||||
|
* it may be good enough and faster for your specific use case.
|
||||||
|
*/
|
||||||
|
static inline unsigned int av_lfg_get(AVLFG *c){
|
||||||
|
c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63];
|
||||||
|
return c->state[c->index++ & 63];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the next random unsigned 32-bit number using a MLFG.
|
||||||
|
*
|
||||||
|
* Please also consider av_lfg_get() above, it is faster.
|
||||||
|
*/
|
||||||
|
static inline unsigned int av_mlfg_get(AVLFG *c){
|
||||||
|
unsigned int a= c->state[(c->index-55) & 63];
|
||||||
|
unsigned int b= c->state[(c->index-24) & 63];
|
||||||
|
return c->state[c->index++ & 63] = 2*a*b+a+b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the next two numbers generated by a Box-Muller Gaussian
|
||||||
|
* generator using the random numbers issued by lfg.
|
||||||
|
*
|
||||||
|
* @param out array where the two generated numbers are placed
|
||||||
|
*/
|
||||||
|
void av_bmg_get(AVLFG *lfg, double out[2]);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_LFG_H */
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_LOG_H
|
||||||
|
#define AVUTIL_LOG_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describe the class of an AVClass context structure. That is an
|
||||||
|
* arbitrary struct of which the first field is a pointer to an
|
||||||
|
* AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/**
|
||||||
|
* The name of the class; usually it is the same name as the
|
||||||
|
* context structure type to which the AVClass is associated.
|
||||||
|
*/
|
||||||
|
const char* class_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A pointer to a function which returns the name of a context
|
||||||
|
* instance ctx associated with the class.
|
||||||
|
*/
|
||||||
|
const char* (*item_name)(void* ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* a pointer to the first option specified in the class if any or NULL
|
||||||
|
*
|
||||||
|
* @see av_set_default_options()
|
||||||
|
*/
|
||||||
|
const struct AVOption *option;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LIBAVUTIL_VERSION with which this structure was created.
|
||||||
|
* This is used to allow fields to be added without requiring major
|
||||||
|
* version bumps everywhere.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Offset in the structure where log_level_offset is stored.
|
||||||
|
* 0 means there is no such variable
|
||||||
|
*/
|
||||||
|
int log_level_offset_offset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Offset in the structure where a pointer to the parent context for loging is stored.
|
||||||
|
* for example a decoder that uses eval.c could pass its AVCodecContext to eval as such
|
||||||
|
* parent context. And a av_log() implementation could then display the parent context
|
||||||
|
* can be NULL of course
|
||||||
|
*/
|
||||||
|
int parent_log_context_offset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A function for extended searching, e.g. in possible
|
||||||
|
* children objects.
|
||||||
|
*/
|
||||||
|
const struct AVOption* (*opt_find)(void *obj, const char *name, const char *unit,
|
||||||
|
int opt_flags, int search_flags);
|
||||||
|
} AVClass;
|
||||||
|
|
||||||
|
/* av_log API */
|
||||||
|
|
||||||
|
#define AV_LOG_QUIET -8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Something went really wrong and we will crash now.
|
||||||
|
*/
|
||||||
|
#define AV_LOG_PANIC 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Something went wrong and recovery is not possible.
|
||||||
|
* For example, no header was found for a format which depends
|
||||||
|
* on headers or an illegal combination of parameters is used.
|
||||||
|
*/
|
||||||
|
#define AV_LOG_FATAL 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Something went wrong and cannot losslessly be recovered.
|
||||||
|
* However, not all future data is affected.
|
||||||
|
*/
|
||||||
|
#define AV_LOG_ERROR 16
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Something somehow does not look correct. This may or may not
|
||||||
|
* lead to problems. An example would be the use of '-vstrict -2'.
|
||||||
|
*/
|
||||||
|
#define AV_LOG_WARNING 24
|
||||||
|
|
||||||
|
#define AV_LOG_INFO 32
|
||||||
|
#define AV_LOG_VERBOSE 40
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stuff which is only useful for libav* developers.
|
||||||
|
*/
|
||||||
|
#define AV_LOG_DEBUG 48
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send the specified message to the log if the level is less than or equal
|
||||||
|
* to the current av_log_level. By default, all logging messages are sent to
|
||||||
|
* stderr. This behavior can be altered by setting a different av_vlog callback
|
||||||
|
* function.
|
||||||
|
*
|
||||||
|
* @param avcl A pointer to an arbitrary struct of which the first field is a
|
||||||
|
* pointer to an AVClass struct.
|
||||||
|
* @param level The importance level of the message, lower values signifying
|
||||||
|
* higher importance.
|
||||||
|
* @param fmt The format string (printf-compatible) that specifies how
|
||||||
|
* subsequent arguments are converted to output.
|
||||||
|
* @see av_vlog
|
||||||
|
*/
|
||||||
|
#ifdef __GNUC__
|
||||||
|
void av_log(void *avcl, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
|
||||||
|
#else
|
||||||
|
void av_log(void *avcl, int level, const char *fmt, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void av_vlog(void *avcl, int level, const char *fmt, va_list);
|
||||||
|
int av_log_get_level(void);
|
||||||
|
void av_log_set_level(int);
|
||||||
|
void av_log_set_callback(void (*)(void*, int, const char*, va_list));
|
||||||
|
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
|
||||||
|
const char* av_default_item_name(void* ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* av_dlog macros
|
||||||
|
* Useful to print debug messages that shouldn't get compiled in normally.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
|
||||||
|
#else
|
||||||
|
# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skip repeated messages, this requires the user app to use av_log() instead of
|
||||||
|
* (f)printf as the 2 would otherwise interfere and lead to
|
||||||
|
* "Last message repeated x times" messages below (f)printf messages with some
|
||||||
|
* bad luck.
|
||||||
|
* Also to receive the last, "last repeated" line if any, the user app must
|
||||||
|
* call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end
|
||||||
|
*/
|
||||||
|
#define AV_LOG_SKIP_REPEATED 1
|
||||||
|
void av_log_set_flags(int arg);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_LOG_H */
|
||||||
+66
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* LZO 1x decompression
|
||||||
|
* copyright (c) 2006 Reimar Doeffinger
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_LZO_H
|
||||||
|
#define AVUTIL_LZO_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/** @name Error flags returned by av_lzo1x_decode
|
||||||
|
* \{ */
|
||||||
|
//! end of the input buffer reached before decoding finished
|
||||||
|
#define AV_LZO_INPUT_DEPLETED 1
|
||||||
|
//! decoded data did not fit into output buffer
|
||||||
|
#define AV_LZO_OUTPUT_FULL 2
|
||||||
|
//! a reference to previously decoded data was wrong
|
||||||
|
#define AV_LZO_INVALID_BACKPTR 4
|
||||||
|
//! a non-specific error in the compressed bitstream
|
||||||
|
#define AV_LZO_ERROR 8
|
||||||
|
/** \} */
|
||||||
|
|
||||||
|
#define AV_LZO_INPUT_PADDING 8
|
||||||
|
#define AV_LZO_OUTPUT_PADDING 12
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Decodes LZO 1x compressed data.
|
||||||
|
* \param out output buffer
|
||||||
|
* \param outlen size of output buffer, number of bytes left are returned here
|
||||||
|
* \param in input buffer
|
||||||
|
* \param inlen size of input buffer, number of bytes left are returned here
|
||||||
|
* \return 0 on success, otherwise a combination of the error flags above
|
||||||
|
*
|
||||||
|
* Make sure all buffers are appropriately padded, in must provide
|
||||||
|
* AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes.
|
||||||
|
*/
|
||||||
|
int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief deliberately overlapping memcpy implementation
|
||||||
|
* \param dst destination buffer; must be padded with 12 additional bytes
|
||||||
|
* \param back how many bytes back we start (the initial size of the overlapping window)
|
||||||
|
* \param cnt number of bytes to copy, must be >= 0
|
||||||
|
*
|
||||||
|
* cnt > back is valid, this will copy the bytes we just copied,
|
||||||
|
* thus creating a repeating pattern with a period length of back.
|
||||||
|
*/
|
||||||
|
void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_LZO_H */
|
||||||
+112
@@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_MATHEMATICS_H
|
||||||
|
#define AVUTIL_MATHEMATICS_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "rational.h"
|
||||||
|
|
||||||
|
#ifndef M_E
|
||||||
|
#define M_E 2.7182818284590452354 /* e */
|
||||||
|
#endif
|
||||||
|
#ifndef M_LN2
|
||||||
|
#define M_LN2 0.69314718055994530942 /* log_e 2 */
|
||||||
|
#endif
|
||||||
|
#ifndef M_LN10
|
||||||
|
#define M_LN10 2.30258509299404568402 /* log_e 10 */
|
||||||
|
#endif
|
||||||
|
#ifndef M_LOG2_10
|
||||||
|
#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */
|
||||||
|
#endif
|
||||||
|
#ifndef M_PHI
|
||||||
|
#define M_PHI 1.61803398874989484820 /* phi / golden ratio */
|
||||||
|
#endif
|
||||||
|
#ifndef M_PI
|
||||||
|
#define M_PI 3.14159265358979323846 /* pi */
|
||||||
|
#endif
|
||||||
|
#ifndef M_SQRT1_2
|
||||||
|
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
|
||||||
|
#endif
|
||||||
|
#ifndef M_SQRT2
|
||||||
|
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
|
||||||
|
#endif
|
||||||
|
#ifndef NAN
|
||||||
|
#define NAN (0.0/0.0)
|
||||||
|
#endif
|
||||||
|
#ifndef INFINITY
|
||||||
|
#define INFINITY (1.0/0.0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum AVRounding {
|
||||||
|
AV_ROUND_ZERO = 0, ///< Round toward zero.
|
||||||
|
AV_ROUND_INF = 1, ///< Round away from zero.
|
||||||
|
AV_ROUND_DOWN = 2, ///< Round toward -infinity.
|
||||||
|
AV_ROUND_UP = 3, ///< Round toward +infinity.
|
||||||
|
AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the greatest common divisor of a and b.
|
||||||
|
* If both a and b are 0 or either or both are <0 then behavior is
|
||||||
|
* undefined.
|
||||||
|
*/
|
||||||
|
int64_t av_const av_gcd(int64_t a, int64_t b);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rescale a 64-bit integer with rounding to nearest.
|
||||||
|
* A simple a*b/c isn't possible as it can overflow.
|
||||||
|
*/
|
||||||
|
int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rescale a 64-bit integer with specified rounding.
|
||||||
|
* A simple a*b/c isn't possible as it can overflow.
|
||||||
|
*/
|
||||||
|
int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rescale a 64-bit integer by 2 rational numbers.
|
||||||
|
*/
|
||||||
|
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compare 2 timestamps each in its own timebases.
|
||||||
|
* The result of the function is undefined if one of the timestamps
|
||||||
|
* is outside the int64_t range when represented in the others timebase.
|
||||||
|
* @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position
|
||||||
|
*/
|
||||||
|
int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compare 2 integers modulo mod.
|
||||||
|
* That is we compare integers a and b for which only the least
|
||||||
|
* significant log2(mod) bits are known.
|
||||||
|
*
|
||||||
|
* @param mod must be a power of 2
|
||||||
|
* @return a negative value if a is smaller than b
|
||||||
|
* a positive value if a is greater than b
|
||||||
|
* 0 if a equals b
|
||||||
|
*/
|
||||||
|
int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_MATHEMATICS_H */
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_MD5_H
|
||||||
|
#define AVUTIL_MD5_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern const int av_md5_size;
|
||||||
|
|
||||||
|
struct AVMD5;
|
||||||
|
|
||||||
|
void av_md5_init(struct AVMD5 *ctx);
|
||||||
|
void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len);
|
||||||
|
void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
|
||||||
|
void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_MD5_H */
|
||||||
|
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* memory handling functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_MEM_H
|
||||||
|
#define AVUTIL_MEM_H
|
||||||
|
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
|
||||||
|
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
|
||||||
|
#define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
|
||||||
|
#elif defined(__TI_COMPILER_VERSION__)
|
||||||
|
#define DECLARE_ALIGNED(n,t,v) \
|
||||||
|
AV_PRAGMA(DATA_ALIGN(v,n)) \
|
||||||
|
t __attribute__((aligned(n))) v
|
||||||
|
#define DECLARE_ASM_CONST(n,t,v) \
|
||||||
|
AV_PRAGMA(DATA_ALIGN(v,n)) \
|
||||||
|
static const t __attribute__((aligned(n))) v
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
|
||||||
|
#define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v
|
||||||
|
#define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v
|
||||||
|
#else
|
||||||
|
#define DECLARE_ALIGNED(n,t,v) t v
|
||||||
|
#define DECLARE_ASM_CONST(n,t,v) static const t v
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
#define av_malloc_attrib __attribute__((__malloc__))
|
||||||
|
#else
|
||||||
|
#define av_malloc_attrib
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,3)
|
||||||
|
#define av_alloc_size(n) __attribute__((alloc_size(n)))
|
||||||
|
#else
|
||||||
|
#define av_alloc_size(n)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a block of size bytes with alignment suitable for all
|
||||||
|
* memory accesses (including vectors if available on the CPU).
|
||||||
|
* @param size Size in bytes for the memory block to be allocated.
|
||||||
|
* @return Pointer to the allocated block, NULL if the block cannot
|
||||||
|
* be allocated.
|
||||||
|
* @see av_mallocz()
|
||||||
|
*/
|
||||||
|
void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate or reallocate a block of memory.
|
||||||
|
* If ptr is NULL and size > 0, allocate a new block. If
|
||||||
|
* size is zero, free the memory block pointed to by ptr.
|
||||||
|
* @param size Size in bytes for the memory block to be allocated or
|
||||||
|
* reallocated.
|
||||||
|
* @param ptr Pointer to a memory block already allocated with
|
||||||
|
* av_malloc(z)() or av_realloc() or NULL.
|
||||||
|
* @return Pointer to a newly reallocated block or NULL if the block
|
||||||
|
* cannot be reallocated or the function is used to free the memory block.
|
||||||
|
* @see av_fast_realloc()
|
||||||
|
*/
|
||||||
|
void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a memory block which has been allocated with av_malloc(z)() or
|
||||||
|
* av_realloc().
|
||||||
|
* @param ptr Pointer to the memory block which should be freed.
|
||||||
|
* @note ptr = NULL is explicitly allowed.
|
||||||
|
* @note It is recommended that you use av_freep() instead.
|
||||||
|
* @see av_freep()
|
||||||
|
*/
|
||||||
|
void av_free(void *ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a block of size bytes with alignment suitable for all
|
||||||
|
* memory accesses (including vectors if available on the CPU) and
|
||||||
|
* zero all the bytes of the block.
|
||||||
|
* @param size Size in bytes for the memory block to be allocated.
|
||||||
|
* @return Pointer to the allocated block, NULL if it cannot be allocated.
|
||||||
|
* @see av_malloc()
|
||||||
|
*/
|
||||||
|
void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duplicate the string s.
|
||||||
|
* @param s string to be duplicated
|
||||||
|
* @return Pointer to a newly allocated string containing a
|
||||||
|
* copy of s or NULL if the string cannot be allocated.
|
||||||
|
*/
|
||||||
|
char *av_strdup(const char *s) av_malloc_attrib;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a memory block which has been allocated with av_malloc(z)() or
|
||||||
|
* av_realloc() and set the pointer pointing to it to NULL.
|
||||||
|
* @param ptr Pointer to the pointer to the memory block which should
|
||||||
|
* be freed.
|
||||||
|
* @see av_free()
|
||||||
|
*/
|
||||||
|
void av_freep(void *ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an element to a dynamic array.
|
||||||
|
*
|
||||||
|
* @param tab_ptr Pointer to the array.
|
||||||
|
* @param nb_ptr Pointer to the number of elements in the array.
|
||||||
|
* @param elem Element to be added.
|
||||||
|
*/
|
||||||
|
void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_MEM_H */
|
||||||
+243
@@ -0,0 +1,243 @@
|
|||||||
|
/*
|
||||||
|
* AVOptions
|
||||||
|
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_OPT_H
|
||||||
|
#define AVUTIL_OPT_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* AVOptions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "rational.h"
|
||||||
|
#include "avutil.h"
|
||||||
|
#include "dict.h"
|
||||||
|
|
||||||
|
enum AVOptionType{
|
||||||
|
FF_OPT_TYPE_FLAGS,
|
||||||
|
FF_OPT_TYPE_INT,
|
||||||
|
FF_OPT_TYPE_INT64,
|
||||||
|
FF_OPT_TYPE_DOUBLE,
|
||||||
|
FF_OPT_TYPE_FLOAT,
|
||||||
|
FF_OPT_TYPE_STRING,
|
||||||
|
FF_OPT_TYPE_RATIONAL,
|
||||||
|
FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length
|
||||||
|
FF_OPT_TYPE_CONST=128,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AVOption
|
||||||
|
*/
|
||||||
|
typedef struct AVOption {
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* short English help text
|
||||||
|
* @todo What about other languages?
|
||||||
|
*/
|
||||||
|
const char *help;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The offset relative to the context structure where the option
|
||||||
|
* value is stored. It should be 0 for named constants.
|
||||||
|
*/
|
||||||
|
int offset;
|
||||||
|
enum AVOptionType type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the default value for scalar options
|
||||||
|
*/
|
||||||
|
union {
|
||||||
|
double dbl;
|
||||||
|
const char *str;
|
||||||
|
/* TODO those are unused now */
|
||||||
|
int64_t i64;
|
||||||
|
AVRational q;
|
||||||
|
} default_val;
|
||||||
|
double min; ///< minimum valid value for the option
|
||||||
|
double max; ///< maximum valid value for the option
|
||||||
|
|
||||||
|
int flags;
|
||||||
|
#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding
|
||||||
|
#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding
|
||||||
|
#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ...
|
||||||
|
#define AV_OPT_FLAG_AUDIO_PARAM 8
|
||||||
|
#define AV_OPT_FLAG_VIDEO_PARAM 16
|
||||||
|
#define AV_OPT_FLAG_SUBTITLE_PARAM 32
|
||||||
|
//FIXME think about enc-audio, ... style flags
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The logical unit to which the option belongs. Non-constant
|
||||||
|
* options and corresponding named constants share the same
|
||||||
|
* unit. May be NULL.
|
||||||
|
*/
|
||||||
|
const char *unit;
|
||||||
|
} AVOption;
|
||||||
|
|
||||||
|
#if FF_API_FIND_OPT
|
||||||
|
/**
|
||||||
|
* Look for an option in obj. Look only for the options which
|
||||||
|
* have the flags set as specified in mask and flags (that is,
|
||||||
|
* for which it is the case that opt->flags & mask == flags).
|
||||||
|
*
|
||||||
|
* @param[in] obj a pointer to a struct whose first element is a
|
||||||
|
* pointer to an AVClass
|
||||||
|
* @param[in] name the name of the option to look for
|
||||||
|
* @param[in] unit the unit of the option to look for, or any if NULL
|
||||||
|
* @return a pointer to the option found, or NULL if no option
|
||||||
|
* has been found
|
||||||
|
*
|
||||||
|
* @deprecated use av_opt_find.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the field of obj with the given name to value.
|
||||||
|
*
|
||||||
|
* @param[in] obj A struct whose first element is a pointer to an
|
||||||
|
* AVClass.
|
||||||
|
* @param[in] name the name of the field to set
|
||||||
|
* @param[in] val The value to set. If the field is not of a string
|
||||||
|
* type, then the given string is parsed.
|
||||||
|
* SI postfixes and some named scalars are supported.
|
||||||
|
* If the field is of a numeric type, it has to be a numeric or named
|
||||||
|
* scalar. Behavior with more than one scalar and +- infix operators
|
||||||
|
* is undefined.
|
||||||
|
* If the field is of a flags type, it has to be a sequence of numeric
|
||||||
|
* scalars or named flags separated by '+' or '-'. Prefixing a flag
|
||||||
|
* with '+' causes it to be set without affecting the other flags;
|
||||||
|
* similarly, '-' unsets a flag.
|
||||||
|
* @param[out] o_out if non-NULL put here a pointer to the AVOption
|
||||||
|
* found
|
||||||
|
* @param alloc when 1 then the old value will be av_freed() and the
|
||||||
|
* new av_strduped()
|
||||||
|
* when 0 then no av_free() nor av_strdup() will be used
|
||||||
|
* @return 0 if the value has been set, or an AVERROR code in case of
|
||||||
|
* error:
|
||||||
|
* AVERROR(ENOENT) if no matching option exists
|
||||||
|
* AVERROR(ERANGE) if the value is out of range
|
||||||
|
* AVERROR(EINVAL) if the value is not valid
|
||||||
|
*/
|
||||||
|
int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out);
|
||||||
|
|
||||||
|
const AVOption *av_set_double(void *obj, const char *name, double n);
|
||||||
|
const AVOption *av_set_q(void *obj, const char *name, AVRational n);
|
||||||
|
const AVOption *av_set_int(void *obj, const char *name, int64_t n);
|
||||||
|
double av_get_double(void *obj, const char *name, const AVOption **o_out);
|
||||||
|
AVRational av_get_q(void *obj, const char *name, const AVOption **o_out);
|
||||||
|
int64_t av_get_int(void *obj, const char *name, const AVOption **o_out);
|
||||||
|
const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len);
|
||||||
|
const AVOption *av_next_option(void *obj, const AVOption *last);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the obj options.
|
||||||
|
*
|
||||||
|
* @param req_flags requested flags for the options to show. Show only the
|
||||||
|
* options for which it is opt->flags & req_flags.
|
||||||
|
* @param rej_flags rejected flags for the options to show. Show only the
|
||||||
|
* options for which it is !(opt->flags & req_flags).
|
||||||
|
* @param av_log_obj log context to use for showing the options
|
||||||
|
*/
|
||||||
|
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags);
|
||||||
|
|
||||||
|
void av_opt_set_defaults(void *s);
|
||||||
|
void av_opt_set_defaults2(void *s, int mask, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse the key/value pairs list in opts. For each key/value pair
|
||||||
|
* found, stores the value in the field in ctx that is named like the
|
||||||
|
* key. ctx must be an AVClass context, storing is done using
|
||||||
|
* AVOptions.
|
||||||
|
*
|
||||||
|
* @param opts options string to parse, may be NULL
|
||||||
|
* @param key_val_sep a 0-terminated list of characters used to
|
||||||
|
* separate key from value
|
||||||
|
* @param pairs_sep a 0-terminated list of characters used to separate
|
||||||
|
* two pairs from each other
|
||||||
|
* @return the number of successfully set key/value pairs, or a negative
|
||||||
|
* value corresponding to an AVERROR code in case of error:
|
||||||
|
* AVERROR(EINVAL) if opts cannot be parsed,
|
||||||
|
* the error code issued by av_set_string3() if a key/value pair
|
||||||
|
* cannot be set
|
||||||
|
*/
|
||||||
|
int av_set_options_string(void *ctx, const char *opts,
|
||||||
|
const char *key_val_sep, const char *pairs_sep);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free all string and binary options in obj.
|
||||||
|
*/
|
||||||
|
void av_opt_free(void *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether a particular flag is set in a flags field.
|
||||||
|
*
|
||||||
|
* @param field_name the name of the flag field option
|
||||||
|
* @param flag_name the name of the flag to check
|
||||||
|
* @return non-zero if the flag is set, zero if the flag isn't set,
|
||||||
|
* isn't of the right type, or the flags field doesn't exist.
|
||||||
|
*/
|
||||||
|
int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set all the options from a given dictionary on an object.
|
||||||
|
*
|
||||||
|
* @param obj a struct whose first element is a pointer to AVClass
|
||||||
|
* @param options options to process. This dictionary will be freed and replaced
|
||||||
|
* by a new one containing all options not found in obj.
|
||||||
|
* Of course this new dictionary needs to be freed by caller
|
||||||
|
* with av_dict_free().
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR if some option was found in obj,
|
||||||
|
* but could not be set.
|
||||||
|
*
|
||||||
|
* @see av_dict_copy()
|
||||||
|
*/
|
||||||
|
int av_opt_set_dict(void *obj, struct AVDictionary **options);
|
||||||
|
|
||||||
|
#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the
|
||||||
|
given object first. */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Look for an option in an object. Consider only options which
|
||||||
|
* have all the specified flags set.
|
||||||
|
*
|
||||||
|
* @param[in] obj A pointer to a struct whose first element is a
|
||||||
|
* pointer to an AVClass.
|
||||||
|
* @param[in] name The name of the option to look for.
|
||||||
|
* @param[in] unit When searching for named constants, name of the unit
|
||||||
|
* it belongs to.
|
||||||
|
* @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
|
||||||
|
* @param search_flags A combination of AV_OPT_SEARCH_*.
|
||||||
|
*
|
||||||
|
* @return A pointer to the option found, or NULL if no option
|
||||||
|
* was found.
|
||||||
|
*
|
||||||
|
* @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable
|
||||||
|
* directly with av_set_string3(). Use special calls which take an options
|
||||||
|
* AVDictionary (e.g. avformat_open_input()) to set options found with this
|
||||||
|
* flag.
|
||||||
|
*/
|
||||||
|
const AVOption *av_opt_find(void *obj, const char *name, const char *unit,
|
||||||
|
int opt_flags, int search_flags);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_OPT_H */
|
||||||
+117
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_PARSEUTILS_H
|
||||||
|
#define AVUTIL_PARSEUTILS_H
|
||||||
|
|
||||||
|
#include "rational.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* misc parsing utilities
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse str and put in width_ptr and height_ptr the detected values.
|
||||||
|
*
|
||||||
|
* @param[in,out] width_ptr pointer to the variable which will contain the detected
|
||||||
|
* width value
|
||||||
|
* @param[in,out] height_ptr pointer to the variable which will contain the detected
|
||||||
|
* height value
|
||||||
|
* @param[in] str the string to parse: it has to be a string in the format
|
||||||
|
* width x height or a valid video size abbreviation.
|
||||||
|
* @return >= 0 on success, a negative error code otherwise
|
||||||
|
*/
|
||||||
|
int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse str and store the detected values in *rate.
|
||||||
|
*
|
||||||
|
* @param[in,out] rate pointer to the AVRational which will contain the detected
|
||||||
|
* frame rate
|
||||||
|
* @param[in] str the string to parse: it has to be a string in the format
|
||||||
|
* rate_num / rate_den, a float number or a valid video rate abbreviation
|
||||||
|
* @return >= 0 on success, a negative error code otherwise
|
||||||
|
*/
|
||||||
|
int av_parse_video_rate(AVRational *rate, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put the RGBA values that correspond to color_string in rgba_color.
|
||||||
|
*
|
||||||
|
* @param color_string a string specifying a color. It can be the name of
|
||||||
|
* a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence,
|
||||||
|
* possibly followed by "@" and a string representing the alpha
|
||||||
|
* component.
|
||||||
|
* The alpha component may be a string composed by "0x" followed by an
|
||||||
|
* hexadecimal number or a decimal number between 0.0 and 1.0, which
|
||||||
|
* represents the opacity value (0x00/0.0 means completely transparent,
|
||||||
|
* 0xff/1.0 completely opaque).
|
||||||
|
* If the alpha component is not specified then 0xff is assumed.
|
||||||
|
* The string "random" will result in a random color.
|
||||||
|
* @param slen length of the initial part of color_string containing the
|
||||||
|
* color. It can be set to -1 if color_string is a null terminated string
|
||||||
|
* containing nothing else than the color.
|
||||||
|
* @return >= 0 in case of success, a negative value in case of
|
||||||
|
* failure (for example if color_string cannot be parsed).
|
||||||
|
*/
|
||||||
|
int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
|
||||||
|
void *log_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses timestr and returns in *time a corresponding number of
|
||||||
|
* microseconds.
|
||||||
|
*
|
||||||
|
* @param timeval puts here the number of microseconds corresponding
|
||||||
|
* to the string in timestr. If the string represents a duration, it
|
||||||
|
* is the number of microseconds contained in the time interval. If
|
||||||
|
* the string is a date, is the number of microseconds since 1st of
|
||||||
|
* January, 1970 up to the time of the parsed date. If timestr cannot
|
||||||
|
* be successfully parsed, set *time to INT64_MIN.
|
||||||
|
|
||||||
|
* @param datestr a string representing a date or a duration.
|
||||||
|
* - If a date the syntax is:
|
||||||
|
* @code
|
||||||
|
* [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH[:MM[:SS[.m...]]]}|{HH[MM[SS[.m...]]]}}[Z]
|
||||||
|
* now
|
||||||
|
* @endcode
|
||||||
|
* If the value is "now" it takes the current time.
|
||||||
|
* Time is local time unless Z is appended, in which case it is
|
||||||
|
* interpreted as UTC.
|
||||||
|
* If the year-month-day part is not specified it takes the current
|
||||||
|
* year-month-day.
|
||||||
|
* - If a duration the syntax is:
|
||||||
|
* @code
|
||||||
|
* [-]HH[:MM[:SS[.m...]]]
|
||||||
|
* [-]S+[.m...]
|
||||||
|
* @endcode
|
||||||
|
* @param duration flag which tells how to interpret timestr, if not
|
||||||
|
* zero timestr is interpreted as a duration, otherwise as a date
|
||||||
|
* @return 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code otherwise
|
||||||
|
*/
|
||||||
|
int av_parse_time(int64_t *timeval, const char *timestr, int duration);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to find a specific tag in a URL.
|
||||||
|
*
|
||||||
|
* syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done.
|
||||||
|
* Return 1 if found.
|
||||||
|
*/
|
||||||
|
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_PARSEUTILS_H */
|
||||||
+175
@@ -0,0 +1,175 @@
|
|||||||
|
/*
|
||||||
|
* pixel format descriptor
|
||||||
|
* Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_PIXDESC_H
|
||||||
|
#define AVUTIL_PIXDESC_H
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include "pixfmt.h"
|
||||||
|
|
||||||
|
typedef struct AVComponentDescriptor{
|
||||||
|
uint16_t plane :2; ///< which of the 4 planes contains the component
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of elements between 2 horizontally consecutive pixels minus 1.
|
||||||
|
* Elements are bits for bitstream formats, bytes otherwise.
|
||||||
|
*/
|
||||||
|
uint16_t step_minus1 :3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of elements before the component of the first pixel plus 1.
|
||||||
|
* Elements are bits for bitstream formats, bytes otherwise.
|
||||||
|
*/
|
||||||
|
uint16_t offset_plus1 :3;
|
||||||
|
uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value
|
||||||
|
uint16_t depth_minus1 :4; ///< number of bits in the component minus 1
|
||||||
|
}AVComponentDescriptor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Descriptor that unambiguously describes how the bits of a pixel are
|
||||||
|
* stored in the up to 4 data planes of an image. It also stores the
|
||||||
|
* subsampling factors and number of components.
|
||||||
|
*
|
||||||
|
* @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV
|
||||||
|
* and all the YUV variants) AVPixFmtDescriptor just stores how values
|
||||||
|
* are stored not what these values represent.
|
||||||
|
*/
|
||||||
|
typedef struct AVPixFmtDescriptor{
|
||||||
|
const char *name;
|
||||||
|
uint8_t nb_components; ///< The number of components each pixel has, (1-4)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Amount to shift the luma width right to find the chroma width.
|
||||||
|
* For YV12 this is 1 for example.
|
||||||
|
* chroma_width = -((-luma_width) >> log2_chroma_w)
|
||||||
|
* The note above is needed to ensure rounding up.
|
||||||
|
* This value only refers to the chroma components.
|
||||||
|
*/
|
||||||
|
uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Amount to shift the luma height right to find the chroma height.
|
||||||
|
* For YV12 this is 1 for example.
|
||||||
|
* chroma_height= -((-luma_height) >> log2_chroma_h)
|
||||||
|
* The note above is needed to ensure rounding up.
|
||||||
|
* This value only refers to the chroma components.
|
||||||
|
*/
|
||||||
|
uint8_t log2_chroma_h;
|
||||||
|
uint8_t flags;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameters that describe how pixels are packed. If the format
|
||||||
|
* has chroma components, they must be stored in comp[1] and
|
||||||
|
* comp[2].
|
||||||
|
*/
|
||||||
|
AVComponentDescriptor comp[4];
|
||||||
|
}AVPixFmtDescriptor;
|
||||||
|
|
||||||
|
#define PIX_FMT_BE 1 ///< Pixel format is big-endian.
|
||||||
|
#define PIX_FMT_PAL 2 ///< Pixel format has a palette in data[1], values are indexes in this palette.
|
||||||
|
#define PIX_FMT_BITSTREAM 4 ///< All values of a component are bit-wise packed end to end.
|
||||||
|
#define PIX_FMT_HWACCEL 8 ///< Pixel format is an HW accelerated format.
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of all the pixel format descriptors.
|
||||||
|
*/
|
||||||
|
extern const AVPixFmtDescriptor av_pix_fmt_descriptors[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a line from an image, and write the values of the
|
||||||
|
* pixel format component c to dst.
|
||||||
|
*
|
||||||
|
* @param data the array containing the pointers to the planes of the image
|
||||||
|
* @param linesize the array containing the linesizes of the image
|
||||||
|
* @param desc the pixel format descriptor for the image
|
||||||
|
* @param x the horizontal coordinate of the first pixel to read
|
||||||
|
* @param y the vertical coordinate of the first pixel to read
|
||||||
|
* @param w the width of the line to read, that is the number of
|
||||||
|
* values to write to dst
|
||||||
|
* @param read_pal_component if not zero and the format is a paletted
|
||||||
|
* format writes the values corresponding to the palette
|
||||||
|
* component c in data[1] to dst, rather than the palette indexes in
|
||||||
|
* data[0]. The behavior is undefined if the format is not paletted.
|
||||||
|
*/
|
||||||
|
void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4],
|
||||||
|
const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write the values from src to the pixel format component c of an
|
||||||
|
* image line.
|
||||||
|
*
|
||||||
|
* @param src array containing the values to write
|
||||||
|
* @param data the array containing the pointers to the planes of the
|
||||||
|
* image to write into. It is supposed to be zeroed.
|
||||||
|
* @param linesize the array containing the linesizes of the image
|
||||||
|
* @param desc the pixel format descriptor for the image
|
||||||
|
* @param x the horizontal coordinate of the first pixel to write
|
||||||
|
* @param y the vertical coordinate of the first pixel to write
|
||||||
|
* @param w the width of the line to write, that is the number of
|
||||||
|
* values to write to the image line
|
||||||
|
*/
|
||||||
|
void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4],
|
||||||
|
const AVPixFmtDescriptor *desc, int x, int y, int c, int w);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the pixel format corresponding to name.
|
||||||
|
*
|
||||||
|
* If there is no pixel format with name name, then looks for a
|
||||||
|
* pixel format with the name corresponding to the native endian
|
||||||
|
* format of name.
|
||||||
|
* For example in a little-endian system, first looks for "gray16",
|
||||||
|
* then for "gray16le".
|
||||||
|
*
|
||||||
|
* Finally if no pixel format has been found, returns PIX_FMT_NONE.
|
||||||
|
*/
|
||||||
|
enum PixelFormat av_get_pix_fmt(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the short name for a pixel format, NULL in case pix_fmt is
|
||||||
|
* unknown.
|
||||||
|
*
|
||||||
|
* @see av_get_pix_fmt(), av_get_pix_fmt_string()
|
||||||
|
*/
|
||||||
|
const char *av_get_pix_fmt_name(enum PixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print in buf the string corresponding to the pixel format with
|
||||||
|
* number pix_fmt, or an header if pix_fmt is negative.
|
||||||
|
*
|
||||||
|
* @param buf the buffer where to write the string
|
||||||
|
* @param buf_size the size of buf
|
||||||
|
* @param pix_fmt the number of the pixel format to print the
|
||||||
|
* corresponding info string, or a negative value to print the
|
||||||
|
* corresponding header.
|
||||||
|
*/
|
||||||
|
char *av_get_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of bits per pixel used by the pixel format
|
||||||
|
* described by pixdesc.
|
||||||
|
*
|
||||||
|
* The returned number of bits refers to the number of bits actually
|
||||||
|
* used for storing the pixel information, that is padding bits are
|
||||||
|
* not counted.
|
||||||
|
*/
|
||||||
|
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_PIXDESC_H */
|
||||||
+188
@@ -0,0 +1,188 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_PIXFMT_H
|
||||||
|
#define AVUTIL_PIXFMT_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* pixel format definitions
|
||||||
|
*
|
||||||
|
* @warning This file has to be considered an internal but installed
|
||||||
|
* header, so it should not be directly included in your projects.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pixel format. Notes:
|
||||||
|
*
|
||||||
|
* PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
|
||||||
|
* color is put together as:
|
||||||
|
* (A << 24) | (R << 16) | (G << 8) | B
|
||||||
|
* This is stored as BGRA on little-endian CPU architectures and ARGB on
|
||||||
|
* big-endian CPUs.
|
||||||
|
*
|
||||||
|
* When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized
|
||||||
|
* image data is stored in AVFrame.data[0]. The palette is transported in
|
||||||
|
* AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is
|
||||||
|
* formatted the same as in PIX_FMT_RGB32 described above (i.e., it is
|
||||||
|
* also endian-specific). Note also that the individual RGB palette
|
||||||
|
* components stored in AVFrame.data[1] should be in the range 0..255.
|
||||||
|
* This is important as many custom PAL8 video codecs that were designed
|
||||||
|
* to run on the IBM VGA graphics adapter use 6-bit palette components.
|
||||||
|
*
|
||||||
|
* For all the 8bit per pixel formats, an RGB32 palette is in data[1] like
|
||||||
|
* for pal8. This palette is filled in automatically by the function
|
||||||
|
* allocating the picture.
|
||||||
|
*
|
||||||
|
* Note, make sure that all newly added big endian formats have pix_fmt&1==1
|
||||||
|
* and that all newly added little endian formats have pix_fmt&1==0
|
||||||
|
* this allows simpler detection of big vs little endian.
|
||||||
|
*/
|
||||||
|
enum PixelFormat {
|
||||||
|
PIX_FMT_NONE= -1,
|
||||||
|
PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
|
||||||
|
PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
|
||||||
|
PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB...
|
||||||
|
PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR...
|
||||||
|
PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
|
||||||
|
PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
|
||||||
|
PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
|
||||||
|
PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
|
||||||
|
PIX_FMT_GRAY8, ///< Y , 8bpp
|
||||||
|
PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb
|
||||||
|
PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb
|
||||||
|
PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette
|
||||||
|
PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range
|
||||||
|
PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range
|
||||||
|
PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range
|
||||||
|
PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing
|
||||||
|
PIX_FMT_XVMC_MPEG2_IDCT,
|
||||||
|
PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
|
||||||
|
PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
|
||||||
|
PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
|
||||||
|
PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||||
|
PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
|
||||||
|
PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
|
||||||
|
PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
|
||||||
|
PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
|
||||||
|
PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
|
||||||
|
PIX_FMT_NV21, ///< as above, but U and V bytes are swapped
|
||||||
|
|
||||||
|
PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
|
||||||
|
PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
|
||||||
|
PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
|
||||||
|
PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
|
||||||
|
|
||||||
|
PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian
|
||||||
|
PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian
|
||||||
|
PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
|
||||||
|
PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range
|
||||||
|
PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
|
||||||
|
PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
|
||||||
|
PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
|
||||||
|
|
||||||
|
PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
|
||||||
|
PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
|
||||||
|
PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0
|
||||||
|
PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0
|
||||||
|
|
||||||
|
PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
|
||||||
|
PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
|
||||||
|
PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1
|
||||||
|
PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1
|
||||||
|
|
||||||
|
PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
|
||||||
|
PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
|
||||||
|
PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
|
||||||
|
PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||||
|
PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
|
||||||
|
PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
|
||||||
|
|
||||||
|
PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
|
||||||
|
PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0
|
||||||
|
PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1
|
||||||
|
PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1
|
||||||
|
PIX_FMT_GRAY8A, ///< 8bit gray, 8bit alpha
|
||||||
|
PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
|
||||||
|
PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
|
||||||
|
|
||||||
|
//the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus
|
||||||
|
//If you want to support multiple bit depths, then using PIX_FMT_YUV420P16* with the bpp stored seperately
|
||||||
|
//is better
|
||||||
|
PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||||
|
PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
|
||||||
|
PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
|
||||||
|
|
||||||
|
PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
|
||||||
|
};
|
||||||
|
|
||||||
|
#define PIX_FMT_Y400A PIX_FMT_GRAY8A
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
# define PIX_FMT_NE(be, le) PIX_FMT_##be
|
||||||
|
#else
|
||||||
|
# define PIX_FMT_NE(be, le) PIX_FMT_##le
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define PIX_FMT_RGB32 PIX_FMT_NE(ARGB, BGRA)
|
||||||
|
#define PIX_FMT_RGB32_1 PIX_FMT_NE(RGBA, ABGR)
|
||||||
|
#define PIX_FMT_BGR32 PIX_FMT_NE(ABGR, RGBA)
|
||||||
|
#define PIX_FMT_BGR32_1 PIX_FMT_NE(BGRA, ARGB)
|
||||||
|
|
||||||
|
#define PIX_FMT_GRAY16 PIX_FMT_NE(GRAY16BE, GRAY16LE)
|
||||||
|
#define PIX_FMT_RGB48 PIX_FMT_NE(RGB48BE, RGB48LE)
|
||||||
|
#define PIX_FMT_RGB565 PIX_FMT_NE(RGB565BE, RGB565LE)
|
||||||
|
#define PIX_FMT_RGB555 PIX_FMT_NE(RGB555BE, RGB555LE)
|
||||||
|
#define PIX_FMT_RGB444 PIX_FMT_NE(RGB444BE, RGB444LE)
|
||||||
|
#define PIX_FMT_BGR48 PIX_FMT_NE(BGR48BE, BGR48LE)
|
||||||
|
#define PIX_FMT_BGR565 PIX_FMT_NE(BGR565BE, BGR565LE)
|
||||||
|
#define PIX_FMT_BGR555 PIX_FMT_NE(BGR555BE, BGR555LE)
|
||||||
|
#define PIX_FMT_BGR444 PIX_FMT_NE(BGR444BE, BGR444LE)
|
||||||
|
|
||||||
|
#define PIX_FMT_YUV420P9 PIX_FMT_NE(YUV420P9BE , YUV420P9LE)
|
||||||
|
#define PIX_FMT_YUV444P9 PIX_FMT_NE(YUV444P9BE , YUV444P9LE)
|
||||||
|
#define PIX_FMT_YUV420P10 PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
|
||||||
|
#define PIX_FMT_YUV422P10 PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
|
||||||
|
#define PIX_FMT_YUV444P10 PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
|
||||||
|
#define PIX_FMT_YUV420P16 PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
|
||||||
|
#define PIX_FMT_YUV422P16 PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
|
||||||
|
#define PIX_FMT_YUV444P16 PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
|
||||||
|
|
||||||
|
#endif /* AVUTIL_PIXFMT_H */
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2009 Baptiste Coudurier <baptiste.coudurier@gmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_RANDOM_SEED_H
|
||||||
|
#define AVUTIL_RANDOM_SEED_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a seed to use in conjunction with random functions.
|
||||||
|
*/
|
||||||
|
uint32_t av_get_random_seed(void);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_RANDOM_SEED_H */
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* rational numbers
|
||||||
|
* Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* rational numbers
|
||||||
|
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_RATIONAL_H
|
||||||
|
#define AVUTIL_RATIONAL_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rational number numerator/denominator
|
||||||
|
*/
|
||||||
|
typedef struct AVRational{
|
||||||
|
int num; ///< numerator
|
||||||
|
int den; ///< denominator
|
||||||
|
} AVRational;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compare two rationals.
|
||||||
|
* @param a first rational
|
||||||
|
* @param b second rational
|
||||||
|
* @return 0 if a==b, 1 if a>b, -1 if a<b, and INT_MIN if one of the
|
||||||
|
* values is of the form 0/0
|
||||||
|
*/
|
||||||
|
static inline int av_cmp_q(AVRational a, AVRational b){
|
||||||
|
const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
|
||||||
|
|
||||||
|
if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
|
||||||
|
else if(b.den && a.den) return 0;
|
||||||
|
else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
|
||||||
|
else return INT_MIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert rational to double.
|
||||||
|
* @param a rational to convert
|
||||||
|
* @return (double) a
|
||||||
|
*/
|
||||||
|
static inline double av_q2d(AVRational a){
|
||||||
|
return a.num / (double) a.den;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reduce a fraction.
|
||||||
|
* This is useful for framerate calculations.
|
||||||
|
* @param dst_num destination numerator
|
||||||
|
* @param dst_den destination denominator
|
||||||
|
* @param num source numerator
|
||||||
|
* @param den source denominator
|
||||||
|
* @param max the maximum allowed for dst_num & dst_den
|
||||||
|
* @return 1 if exact, 0 otherwise
|
||||||
|
*/
|
||||||
|
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multiply two rationals.
|
||||||
|
* @param b first rational
|
||||||
|
* @param c second rational
|
||||||
|
* @return b*c
|
||||||
|
*/
|
||||||
|
AVRational av_mul_q(AVRational b, AVRational c) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Divide one rational by another.
|
||||||
|
* @param b first rational
|
||||||
|
* @param c second rational
|
||||||
|
* @return b/c
|
||||||
|
*/
|
||||||
|
AVRational av_div_q(AVRational b, AVRational c) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add two rationals.
|
||||||
|
* @param b first rational
|
||||||
|
* @param c second rational
|
||||||
|
* @return b+c
|
||||||
|
*/
|
||||||
|
AVRational av_add_q(AVRational b, AVRational c) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtract one rational from another.
|
||||||
|
* @param b first rational
|
||||||
|
* @param c second rational
|
||||||
|
* @return b-c
|
||||||
|
*/
|
||||||
|
AVRational av_sub_q(AVRational b, AVRational c) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a double precision floating point number to a rational.
|
||||||
|
* inf is expressed as {1,0} or {-1,0} depending on the sign.
|
||||||
|
*
|
||||||
|
* @param d double to convert
|
||||||
|
* @param max the maximum allowed numerator and denominator
|
||||||
|
* @return (AVRational) d
|
||||||
|
*/
|
||||||
|
AVRational av_d2q(double d, int max) av_const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer
|
||||||
|
* than q1, 0 if they have the same distance.
|
||||||
|
*/
|
||||||
|
int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the nearest value in q_list to q.
|
||||||
|
* @param q_list an array of rationals terminated by {0, 0}
|
||||||
|
* @return the index of the nearest value found in the array
|
||||||
|
*/
|
||||||
|
int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_RATIONAL_H */
|
||||||
+125
@@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_SAMPLEFMT_H
|
||||||
|
#define AVUTIL_SAMPLEFMT_H
|
||||||
|
|
||||||
|
#include "avutil.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* all in native-endian format
|
||||||
|
*/
|
||||||
|
enum AVSampleFormat {
|
||||||
|
AV_SAMPLE_FMT_NONE = -1,
|
||||||
|
AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
|
||||||
|
AV_SAMPLE_FMT_S16, ///< signed 16 bits
|
||||||
|
AV_SAMPLE_FMT_S32, ///< signed 32 bits
|
||||||
|
AV_SAMPLE_FMT_FLT, ///< float
|
||||||
|
AV_SAMPLE_FMT_DBL, ///< double
|
||||||
|
AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the name of sample_fmt, or NULL if sample_fmt is not
|
||||||
|
* recognized.
|
||||||
|
*/
|
||||||
|
const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE
|
||||||
|
* on error.
|
||||||
|
*/
|
||||||
|
enum AVSampleFormat av_get_sample_fmt(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a string corresponding to the sample format with
|
||||||
|
* sample_fmt, or a header if sample_fmt is negative.
|
||||||
|
*
|
||||||
|
* @param buf the buffer where to write the string
|
||||||
|
* @param buf_size the size of buf
|
||||||
|
* @param sample_fmt the number of the sample format to print the
|
||||||
|
* corresponding info string, or a negative value to print the
|
||||||
|
* corresponding header.
|
||||||
|
* @return the pointer to the filled buffer or NULL if sample_fmt is
|
||||||
|
* unknown or in case of other errors
|
||||||
|
*/
|
||||||
|
char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt);
|
||||||
|
|
||||||
|
#if FF_API_GET_BITS_PER_SAMPLE_FMT
|
||||||
|
/**
|
||||||
|
* @deprecated Use av_get_bytes_per_sample() instead.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return number of bytes per sample.
|
||||||
|
*
|
||||||
|
* @param sample_fmt the sample format
|
||||||
|
* @return number of bytes per sample or zero if unknown for the given
|
||||||
|
* sample format
|
||||||
|
*/
|
||||||
|
int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill channel data pointers and linesizes for samples with sample
|
||||||
|
* format sample_fmt.
|
||||||
|
*
|
||||||
|
* The pointers array is filled with the pointers to the samples data:
|
||||||
|
* for planar, set the start point of each plane's data within the buffer,
|
||||||
|
* for packed, set the start point of the entire buffer only.
|
||||||
|
*
|
||||||
|
* The linesize array is filled with the aligned size of each samples
|
||||||
|
* plane, that is linesize[i] will contain the linesize of the plane i,
|
||||||
|
* and will be zero for all the unused planes. All linesize values are
|
||||||
|
* equal.
|
||||||
|
*
|
||||||
|
* @param pointers array to be filled with the pointer for each plane, may be NULL
|
||||||
|
* @param linesizes array to be filled with the linesize, may be NULL
|
||||||
|
* @param buf the pointer to a buffer containing the samples
|
||||||
|
* @param nb_samples the number of samples in a single channel
|
||||||
|
* @param planar 1 if the samples layout is planar, 0 if it is packed
|
||||||
|
* @param nb_channels the number of channels
|
||||||
|
* @return the total size of the buffer, a negative
|
||||||
|
* error code in case of failure
|
||||||
|
*/
|
||||||
|
int av_samples_fill_arrays(uint8_t *pointers[8], int linesizes[8],
|
||||||
|
uint8_t *buf, int nb_channels, int nb_samples,
|
||||||
|
enum AVSampleFormat sample_fmt, int planar, int align);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a samples buffer for nb_samples samples, and
|
||||||
|
* fill pointers and linesizes accordingly.
|
||||||
|
* The allocated samples buffer has to be freed by using
|
||||||
|
* av_freep(&pointers[0]).
|
||||||
|
*
|
||||||
|
* @param nb_channels number of audio channels
|
||||||
|
* @param nb_samples number of samples per channel
|
||||||
|
* @param planar 1 if the samples layout is planar, 0 if packed,
|
||||||
|
* @param align the value to use for buffer size alignment
|
||||||
|
* @return the size in bytes required for the samples buffer, a negative
|
||||||
|
* error code in case of failure
|
||||||
|
* @see av_samples_fill_arrays()
|
||||||
|
*/
|
||||||
|
int av_samples_alloc(uint8_t *pointers[8], int linesizes[8],
|
||||||
|
int nb_channels, int nb_samples,
|
||||||
|
enum AVSampleFormat sample_fmt, int planar,
|
||||||
|
int align);
|
||||||
|
|
||||||
|
#endif /* AVCORE_SAMPLEFMT_H */
|
||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_SHA_H
|
||||||
|
#define AVUTIL_SHA_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern const int av_sha_size;
|
||||||
|
|
||||||
|
struct AVSHA;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize SHA-1 or SHA-2 hashing.
|
||||||
|
*
|
||||||
|
* @param context pointer to the function context (of size av_sha_size)
|
||||||
|
* @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits)
|
||||||
|
* @return zero if initialization succeeded, -1 otherwise
|
||||||
|
*/
|
||||||
|
int av_sha_init(struct AVSHA* context, int bits);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update hash value.
|
||||||
|
*
|
||||||
|
* @param context hash function context
|
||||||
|
* @param data input data to update hash with
|
||||||
|
* @param len input data length
|
||||||
|
*/
|
||||||
|
void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finish hashing and output digest value.
|
||||||
|
*
|
||||||
|
* @param context hash function context
|
||||||
|
* @param digest buffer where output digest value is stored
|
||||||
|
*/
|
||||||
|
void av_sha_final(struct AVSHA* context, uint8_t *digest);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_SHA_H */
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_SHA1_H
|
||||||
|
#define AVUTIL_SHA1_H
|
||||||
|
|
||||||
|
#include <msc_stdint.h>
|
||||||
|
|
||||||
|
extern const int av_sha1_size;
|
||||||
|
|
||||||
|
struct AVSHA1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes SHA-1 hashing.
|
||||||
|
*
|
||||||
|
* @param context pointer to the function context (of size av_sha_size)
|
||||||
|
* @deprecated use av_sha_init() instead
|
||||||
|
*/
|
||||||
|
void av_sha1_init(struct AVSHA1* context);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates hash value.
|
||||||
|
*
|
||||||
|
* @param context hash function context
|
||||||
|
* @param data input data to update hash with
|
||||||
|
* @param len input data length
|
||||||
|
* @deprecated use av_sha_update() instead
|
||||||
|
*/
|
||||||
|
void av_sha1_update(struct AVSHA1* context, const uint8_t* data, unsigned int len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finishes hashing and output digest value.
|
||||||
|
*
|
||||||
|
* @param context hash function context
|
||||||
|
* @param digest buffer where output digest value is stored
|
||||||
|
* @deprecated use av_sha_final() instead
|
||||||
|
*/
|
||||||
|
void av_sha1_final(struct AVSHA1* context, uint8_t digest[20]);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_SHA1_H */
|
||||||
+371
@@ -0,0 +1,371 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2001-2003 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SWSCALE_SWSCALE_H
|
||||||
|
#define SWSCALE_SWSCALE_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @brief
|
||||||
|
* external api for the swscale stuff
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
|
#define LIBSWSCALE_VERSION_MAJOR 2
|
||||||
|
#define LIBSWSCALE_VERSION_MINOR 0
|
||||||
|
#define LIBSWSCALE_VERSION_MICRO 0
|
||||||
|
|
||||||
|
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
||||||
|
LIBSWSCALE_VERSION_MINOR, \
|
||||||
|
LIBSWSCALE_VERSION_MICRO)
|
||||||
|
#define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \
|
||||||
|
LIBSWSCALE_VERSION_MINOR, \
|
||||||
|
LIBSWSCALE_VERSION_MICRO)
|
||||||
|
#define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Those FF_API_* defines are not part of public API.
|
||||||
|
* They may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
#ifndef FF_API_SWS_GETCONTEXT
|
||||||
|
#define FF_API_SWS_GETCONTEXT (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_SWS_CPU_CAPS
|
||||||
|
#define FF_API_SWS_CPU_CAPS (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_SWS_FORMAT_NAME
|
||||||
|
#define FF_API_SWS_FORMAT_NAME (LIBSWSCALE_VERSION_MAJOR < 3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the LIBSWSCALE_VERSION_INT constant.
|
||||||
|
*/
|
||||||
|
unsigned swscale_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the libswscale build-time configuration.
|
||||||
|
*/
|
||||||
|
const char *swscale_configuration(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the libswscale license.
|
||||||
|
*/
|
||||||
|
const char *swscale_license(void);
|
||||||
|
|
||||||
|
/* values for the flags, the stuff on the command line is different */
|
||||||
|
#define SWS_FAST_BILINEAR 1
|
||||||
|
#define SWS_BILINEAR 2
|
||||||
|
#define SWS_BICUBIC 4
|
||||||
|
#define SWS_X 8
|
||||||
|
#define SWS_POINT 0x10
|
||||||
|
#define SWS_AREA 0x20
|
||||||
|
#define SWS_BICUBLIN 0x40
|
||||||
|
#define SWS_GAUSS 0x80
|
||||||
|
#define SWS_SINC 0x100
|
||||||
|
#define SWS_LANCZOS 0x200
|
||||||
|
#define SWS_SPLINE 0x400
|
||||||
|
|
||||||
|
#define SWS_SRC_V_CHR_DROP_MASK 0x30000
|
||||||
|
#define SWS_SRC_V_CHR_DROP_SHIFT 16
|
||||||
|
|
||||||
|
#define SWS_PARAM_DEFAULT 123456
|
||||||
|
|
||||||
|
#define SWS_PRINT_INFO 0x1000
|
||||||
|
|
||||||
|
//the following 3 flags are not completely implemented
|
||||||
|
//internal chrominace subsampling info
|
||||||
|
#define SWS_FULL_CHR_H_INT 0x2000
|
||||||
|
//input subsampling info
|
||||||
|
#define SWS_FULL_CHR_H_INP 0x4000
|
||||||
|
#define SWS_DIRECT_BGR 0x8000
|
||||||
|
#define SWS_ACCURATE_RND 0x40000
|
||||||
|
#define SWS_BITEXACT 0x80000
|
||||||
|
|
||||||
|
#if FF_API_SWS_CPU_CAPS
|
||||||
|
/**
|
||||||
|
* CPU caps are autodetected now, those flags
|
||||||
|
* are only provided for API compatibility.
|
||||||
|
*/
|
||||||
|
#define SWS_CPU_CAPS_MMX 0x80000000
|
||||||
|
#define SWS_CPU_CAPS_MMX2 0x20000000
|
||||||
|
#define SWS_CPU_CAPS_3DNOW 0x40000000
|
||||||
|
#define SWS_CPU_CAPS_ALTIVEC 0x10000000
|
||||||
|
#define SWS_CPU_CAPS_BFIN 0x01000000
|
||||||
|
#define SWS_CPU_CAPS_SSE2 0x02000000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SWS_MAX_REDUCE_CUTOFF 0.002
|
||||||
|
|
||||||
|
#define SWS_CS_ITU709 1
|
||||||
|
#define SWS_CS_FCC 4
|
||||||
|
#define SWS_CS_ITU601 5
|
||||||
|
#define SWS_CS_ITU624 5
|
||||||
|
#define SWS_CS_SMPTE170M 5
|
||||||
|
#define SWS_CS_SMPTE240M 7
|
||||||
|
#define SWS_CS_DEFAULT 5
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a pointer to yuv<->rgb coefficients for the given colorspace
|
||||||
|
* suitable for sws_setColorspaceDetails().
|
||||||
|
*
|
||||||
|
* @param colorspace One of the SWS_CS_* macros. If invalid,
|
||||||
|
* SWS_CS_DEFAULT is used.
|
||||||
|
*/
|
||||||
|
const int *sws_getCoefficients(int colorspace);
|
||||||
|
|
||||||
|
|
||||||
|
// when used for filters they must have an odd number of elements
|
||||||
|
// coeffs cannot be shared between vectors
|
||||||
|
typedef struct {
|
||||||
|
double *coeff; ///< pointer to the list of coefficients
|
||||||
|
int length; ///< number of coefficients in the vector
|
||||||
|
} SwsVector;
|
||||||
|
|
||||||
|
// vectors can be shared
|
||||||
|
typedef struct {
|
||||||
|
SwsVector *lumH;
|
||||||
|
SwsVector *lumV;
|
||||||
|
SwsVector *chrH;
|
||||||
|
SwsVector *chrV;
|
||||||
|
} SwsFilter;
|
||||||
|
|
||||||
|
struct SwsContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a positive value if pix_fmt is a supported input format, 0
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
int sws_isSupportedInput(enum PixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a positive value if pix_fmt is a supported output format, 0
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
int sws_isSupportedOutput(enum PixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates an empty SwsContext. This must be filled and passed to
|
||||||
|
* sws_init_context(). For filling see AVOptions, options.c and
|
||||||
|
* sws_setColorspaceDetails().
|
||||||
|
*/
|
||||||
|
struct SwsContext *sws_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the swscaler context sws_context.
|
||||||
|
*
|
||||||
|
* @return zero or positive value on success, a negative value on
|
||||||
|
* error
|
||||||
|
*/
|
||||||
|
int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Frees the swscaler context swsContext.
|
||||||
|
* If swsContext is NULL, then does nothing.
|
||||||
|
*/
|
||||||
|
void sws_freeContext(struct SwsContext *swsContext);
|
||||||
|
|
||||||
|
#if FF_API_SWS_GETCONTEXT
|
||||||
|
/**
|
||||||
|
* Allocates and returns a SwsContext. You need it to perform
|
||||||
|
* scaling/conversion operations using sws_scale().
|
||||||
|
*
|
||||||
|
* @param srcW the width of the source image
|
||||||
|
* @param srcH the height of the source image
|
||||||
|
* @param srcFormat the source image format
|
||||||
|
* @param dstW the width of the destination image
|
||||||
|
* @param dstH the height of the destination image
|
||||||
|
* @param dstFormat the destination image format
|
||||||
|
* @param flags specify which algorithm and options to use for rescaling
|
||||||
|
* @return a pointer to an allocated context, or NULL in case of error
|
||||||
|
* @note this function is to be removed after a saner alternative is
|
||||||
|
* written
|
||||||
|
* @deprecated Use sws_getCachedContext() instead.
|
||||||
|
*/
|
||||||
|
struct SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
|
||||||
|
int dstW, int dstH, enum PixelFormat dstFormat,
|
||||||
|
int flags, SwsFilter *srcFilter,
|
||||||
|
SwsFilter *dstFilter, const double *param);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scales the image slice in srcSlice and puts the resulting scaled
|
||||||
|
* slice in the image in dst. A slice is a sequence of consecutive
|
||||||
|
* rows in an image.
|
||||||
|
*
|
||||||
|
* Slices have to be provided in sequential order, either in
|
||||||
|
* top-bottom or bottom-top order. If slices are provided in
|
||||||
|
* non-sequential order the behavior of the function is undefined.
|
||||||
|
*
|
||||||
|
* @param context the scaling context previously created with
|
||||||
|
* sws_getContext()
|
||||||
|
* @param srcSlice the array containing the pointers to the planes of
|
||||||
|
* the source slice
|
||||||
|
* @param srcStride the array containing the strides for each plane of
|
||||||
|
* the source image
|
||||||
|
* @param srcSliceY the position in the source image of the slice to
|
||||||
|
* process, that is the number (counted starting from
|
||||||
|
* zero) in the image of the first row of the slice
|
||||||
|
* @param srcSliceH the height of the source slice, that is the number
|
||||||
|
* of rows in the slice
|
||||||
|
* @param dst the array containing the pointers to the planes of
|
||||||
|
* the destination image
|
||||||
|
* @param dstStride the array containing the strides for each plane of
|
||||||
|
* the destination image
|
||||||
|
* @return the height of the output slice
|
||||||
|
*/
|
||||||
|
int sws_scale(struct SwsContext *context, const uint8_t* const srcSlice[], const int srcStride[],
|
||||||
|
int srcSliceY, int srcSliceH, uint8_t* const dst[], const int dstStride[]);
|
||||||
|
|
||||||
|
#if LIBSWSCALE_VERSION_MAJOR < 1
|
||||||
|
/**
|
||||||
|
* @deprecated Use sws_scale() instead.
|
||||||
|
*/
|
||||||
|
int sws_scale_ordered(struct SwsContext *context, const uint8_t* const src[],
|
||||||
|
int srcStride[], int srcSliceY, int srcSliceH,
|
||||||
|
uint8_t* dst[], int dstStride[]) attribute_deprecated;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x]
|
||||||
|
* @return -1 if not supported
|
||||||
|
*/
|
||||||
|
int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4],
|
||||||
|
int srcRange, const int table[4], int dstRange,
|
||||||
|
int brightness, int contrast, int saturation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return -1 if not supported
|
||||||
|
*/
|
||||||
|
int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table,
|
||||||
|
int *srcRange, int **table, int *dstRange,
|
||||||
|
int *brightness, int *contrast, int *saturation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates and returns an uninitialized vector with length coefficients.
|
||||||
|
*/
|
||||||
|
SwsVector *sws_allocVec(int length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a normalized Gaussian curve used to filter stuff
|
||||||
|
* quality=3 is high quality, lower is lower quality.
|
||||||
|
*/
|
||||||
|
SwsVector *sws_getGaussianVec(double variance, double quality);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates and returns a vector with length coefficients, all
|
||||||
|
* with the same value c.
|
||||||
|
*/
|
||||||
|
SwsVector *sws_getConstVec(double c, int length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates and returns a vector with just one coefficient, with
|
||||||
|
* value 1.0.
|
||||||
|
*/
|
||||||
|
SwsVector *sws_getIdentityVec(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scales all the coefficients of a by the scalar value.
|
||||||
|
*/
|
||||||
|
void sws_scaleVec(SwsVector *a, double scalar);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scales all the coefficients of a so that their sum equals height.
|
||||||
|
*/
|
||||||
|
void sws_normalizeVec(SwsVector *a, double height);
|
||||||
|
void sws_convVec(SwsVector *a, SwsVector *b);
|
||||||
|
void sws_addVec(SwsVector *a, SwsVector *b);
|
||||||
|
void sws_subVec(SwsVector *a, SwsVector *b);
|
||||||
|
void sws_shiftVec(SwsVector *a, int shift);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates and returns a clone of the vector a, that is a vector
|
||||||
|
* with the same coefficients as a.
|
||||||
|
*/
|
||||||
|
SwsVector *sws_cloneVec(SwsVector *a);
|
||||||
|
|
||||||
|
#if LIBSWSCALE_VERSION_MAJOR < 1
|
||||||
|
/**
|
||||||
|
* @deprecated Use sws_printVec2() instead.
|
||||||
|
*/
|
||||||
|
attribute_deprecated void sws_printVec(SwsVector *a);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints with av_log() a textual representation of the vector a
|
||||||
|
* if log_level <= av_log_level.
|
||||||
|
*/
|
||||||
|
void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level);
|
||||||
|
|
||||||
|
void sws_freeVec(SwsVector *a);
|
||||||
|
|
||||||
|
SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur,
|
||||||
|
float lumaSharpen, float chromaSharpen,
|
||||||
|
float chromaHShift, float chromaVShift,
|
||||||
|
int verbose);
|
||||||
|
void sws_freeFilter(SwsFilter *filter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if context can be reused, otherwise reallocates a new
|
||||||
|
* one.
|
||||||
|
*
|
||||||
|
* If context is NULL, just calls sws_getContext() to get a new
|
||||||
|
* context. Otherwise, checks if the parameters are the ones already
|
||||||
|
* saved in context. If that is the case, returns the current
|
||||||
|
* context. Otherwise, frees context and gets a new context with
|
||||||
|
* the new parameters.
|
||||||
|
*
|
||||||
|
* Be warned that srcFilter and dstFilter are not checked, they
|
||||||
|
* are assumed to remain the same.
|
||||||
|
*/
|
||||||
|
struct SwsContext *sws_getCachedContext(struct SwsContext *context,
|
||||||
|
int srcW, int srcH, enum PixelFormat srcFormat,
|
||||||
|
int dstW, int dstH, enum PixelFormat dstFormat,
|
||||||
|
int flags, SwsFilter *srcFilter,
|
||||||
|
SwsFilter *dstFilter, const double *param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an 8bit paletted frame into a frame with a color depth of 32-bits.
|
||||||
|
*
|
||||||
|
* The output frame will have the same packed format as the palette.
|
||||||
|
*
|
||||||
|
* @param src source frame buffer
|
||||||
|
* @param dst destination frame buffer
|
||||||
|
* @param num_pixels number of pixels to convert
|
||||||
|
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||||
|
*/
|
||||||
|
void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an 8bit paletted frame into a frame with a color depth of 24 bits.
|
||||||
|
*
|
||||||
|
* With the palette format "ABCD", the destination frame ends up with the format "ABC".
|
||||||
|
*
|
||||||
|
* @param src source frame buffer
|
||||||
|
* @param dst destination frame buffer
|
||||||
|
* @param num_pixels number of pixels to convert
|
||||||
|
* @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
|
||||||
|
*/
|
||||||
|
void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* SWSCALE_SWSCALE_H */
|
||||||
Vendored
+9
-9
@@ -1,32 +1,32 @@
|
|||||||
// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
||||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
||||||
//
|
//
|
||||||
// Copyright (c) 2006 Alexander Chemeris
|
// Copyright (c) 2006 Alexander Chemeris
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
//
|
//
|
||||||
// 1. Redistributions of source code must retain the above copyright notice,
|
// 1. Redistributions of source code must retain the above copyright notice,
|
||||||
// this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
//
|
//
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright
|
// 2. Redistributions in binary form must reproduce the above copyright
|
||||||
// notice, this list of conditions and the following disclaimer in the
|
// notice, this list of conditions and the following disclaimer in the
|
||||||
// documentation and/or other materials provided with the distribution.
|
// documentation and/or other materials provided with the distribution.
|
||||||
//
|
//
|
||||||
// 3. The name of the author may be used to endorse or promote products
|
// 3. The name of the author may be used to endorse or promote products
|
||||||
// derived from this software without specific prior written permission.
|
// derived from this software without specific prior written permission.
|
||||||
//
|
//
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef _MSC_VER // [
|
#ifndef _MSC_VER // [
|
||||||
|
|||||||
Vendored
+10
-10
@@ -1,32 +1,32 @@
|
|||||||
// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
||||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
||||||
//
|
//
|
||||||
// Copyright (c) 2006 Alexander Chemeris
|
// Copyright (c) 2006 Alexander Chemeris
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
//
|
//
|
||||||
// 1. Redistributions of source code must retain the above copyright notice,
|
// 1. Redistributions of source code must retain the above copyright notice,
|
||||||
// this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
//
|
//
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright
|
// 2. Redistributions in binary form must reproduce the above copyright
|
||||||
// notice, this list of conditions and the following disclaimer in the
|
// notice, this list of conditions and the following disclaimer in the
|
||||||
// documentation and/or other materials provided with the distribution.
|
// documentation and/or other materials provided with the distribution.
|
||||||
//
|
//
|
||||||
// 3. The name of the author may be used to endorse or promote products
|
// 3. The name of the author may be used to endorse or promote products
|
||||||
// derived from this software without specific prior written permission.
|
// derived from this software without specific prior written permission.
|
||||||
//
|
//
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef _MSC_STDINT_H_ // [
|
#ifndef _MSC_STDINT_H_ // [
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
||||||
extern "C++" {
|
extern "C++" {
|
||||||
#endif
|
#endif
|
||||||
# include <wchar.h>
|
# include <wchar.h>
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
-1214
File diff suppressed because it is too large
Load Diff
-12305
File diff suppressed because it is too large
Load Diff
-126
@@ -1,126 +0,0 @@
|
|||||||
/**********************************************************************************
|
|
||||||
* Copyright (c) 2008-2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_D3D10_H
|
|
||||||
#define __OPENCL_CL_D3D10_H
|
|
||||||
|
|
||||||
#include <d3d10.h>
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#include <CL/cl_platform.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* cl_khr_d3d10_sharing */
|
|
||||||
#define cl_khr_d3d10_sharing 1
|
|
||||||
|
|
||||||
typedef cl_uint cl_d3d10_device_source_khr;
|
|
||||||
typedef cl_uint cl_d3d10_device_set_khr;
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
// Error Codes
|
|
||||||
#define CL_INVALID_D3D10_DEVICE_KHR -1002
|
|
||||||
#define CL_INVALID_D3D10_RESOURCE_KHR -1003
|
|
||||||
#define CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR -1004
|
|
||||||
#define CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR -1005
|
|
||||||
|
|
||||||
// cl_d3d10_device_source_nv
|
|
||||||
#define CL_D3D10_DEVICE_KHR 0x4010
|
|
||||||
#define CL_D3D10_DXGI_ADAPTER_KHR 0x4011
|
|
||||||
|
|
||||||
// cl_d3d10_device_set_nv
|
|
||||||
#define CL_PREFERRED_DEVICES_FOR_D3D10_KHR 0x4012
|
|
||||||
#define CL_ALL_DEVICES_FOR_D3D10_KHR 0x4013
|
|
||||||
|
|
||||||
// cl_context_info
|
|
||||||
#define CL_CONTEXT_D3D10_DEVICE_KHR 0x4014
|
|
||||||
#define CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR 0x402C
|
|
||||||
|
|
||||||
// cl_mem_info
|
|
||||||
#define CL_MEM_D3D10_RESOURCE_KHR 0x4015
|
|
||||||
|
|
||||||
// cl_image_info
|
|
||||||
#define CL_IMAGE_D3D10_SUBRESOURCE_KHR 0x4016
|
|
||||||
|
|
||||||
// cl_command_type
|
|
||||||
#define CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR 0x4017
|
|
||||||
#define CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR 0x4018
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D10KHR_fn)(
|
|
||||||
cl_platform_id platform,
|
|
||||||
cl_d3d10_device_source_khr d3d_device_source,
|
|
||||||
void * d3d_object,
|
|
||||||
cl_d3d10_device_set_khr d3d_device_set,
|
|
||||||
cl_uint num_entries,
|
|
||||||
cl_device_id * devices,
|
|
||||||
cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10BufferKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D10Buffer * resource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture2DKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D10Texture2D * resource,
|
|
||||||
UINT subresource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D10Texture3DKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D10Texture3D * resource,
|
|
||||||
UINT subresource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D10ObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D10ObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __OPENCL_CL_D3D10_H
|
|
||||||
|
|
||||||
-126
@@ -1,126 +0,0 @@
|
|||||||
/**********************************************************************************
|
|
||||||
* Copyright (c) 2008-2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_D3D11_H
|
|
||||||
#define __OPENCL_CL_D3D11_H
|
|
||||||
|
|
||||||
#include <d3d11.h>
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#include <CL/cl_platform.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* cl_khr_d3d11_sharing */
|
|
||||||
#define cl_khr_d3d11_sharing 1
|
|
||||||
|
|
||||||
typedef cl_uint cl_d3d11_device_source_khr;
|
|
||||||
typedef cl_uint cl_d3d11_device_set_khr;
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
// Error Codes
|
|
||||||
#define CL_INVALID_D3D11_DEVICE_KHR -1006
|
|
||||||
#define CL_INVALID_D3D11_RESOURCE_KHR -1007
|
|
||||||
#define CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR -1008
|
|
||||||
#define CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR -1009
|
|
||||||
|
|
||||||
// cl_d3d11_device_source
|
|
||||||
#define CL_D3D11_DEVICE_KHR 0x4019
|
|
||||||
#define CL_D3D11_DXGI_ADAPTER_KHR 0x401A
|
|
||||||
|
|
||||||
// cl_d3d11_device_set
|
|
||||||
#define CL_PREFERRED_DEVICES_FOR_D3D11_KHR 0x401B
|
|
||||||
#define CL_ALL_DEVICES_FOR_D3D11_KHR 0x401C
|
|
||||||
|
|
||||||
// cl_context_info
|
|
||||||
#define CL_CONTEXT_D3D11_DEVICE_KHR 0x401D
|
|
||||||
#define CL_CONTEXT_D3D11_PREFER_SHARED_RESOURCES_KHR 0x402D
|
|
||||||
|
|
||||||
// cl_mem_info
|
|
||||||
#define CL_MEM_D3D11_RESOURCE_KHR 0x401E
|
|
||||||
|
|
||||||
// cl_image_info
|
|
||||||
#define CL_IMAGE_D3D11_SUBRESOURCE_KHR 0x401F
|
|
||||||
|
|
||||||
// cl_command_type
|
|
||||||
#define CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR 0x4020
|
|
||||||
#define CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR 0x4021
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromD3D11KHR_fn)(
|
|
||||||
cl_platform_id platform,
|
|
||||||
cl_d3d11_device_source_khr d3d_device_source,
|
|
||||||
void * d3d_object,
|
|
||||||
cl_d3d11_device_set_khr d3d_device_set,
|
|
||||||
cl_uint num_entries,
|
|
||||||
cl_device_id * devices,
|
|
||||||
cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11BufferKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D11Buffer * resource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture2DKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D11Texture2D * resource,
|
|
||||||
UINT subresource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromD3D11Texture3DKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
ID3D11Texture3D * resource,
|
|
||||||
UINT subresource,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireD3D11ObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseD3D11ObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __OPENCL_CL_D3D11_H
|
|
||||||
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
/**********************************************************************************
|
|
||||||
* Copyright (c) 2008-2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H
|
|
||||||
#define __OPENCL_CL_DX9_MEDIA_SHARING_H
|
|
||||||
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#include <CL/cl_platform.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
/* cl_khr_dx9_media_sharing */
|
|
||||||
#define cl_khr_dx9_media_sharing 1
|
|
||||||
|
|
||||||
typedef cl_uint cl_dx9_media_adapter_type_khr;
|
|
||||||
typedef cl_uint cl_dx9_media_adapter_set_khr;
|
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
#include <d3d9.h>
|
|
||||||
typedef struct _cl_dx9_surface_info_khr
|
|
||||||
{
|
|
||||||
IDirect3DSurface9 *resource;
|
|
||||||
HANDLE shared_handle;
|
|
||||||
} cl_dx9_surface_info_khr;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
// Error Codes
|
|
||||||
#define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010
|
|
||||||
#define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011
|
|
||||||
#define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012
|
|
||||||
#define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013
|
|
||||||
|
|
||||||
// cl_media_adapter_type_khr
|
|
||||||
#define CL_ADAPTER_D3D9_KHR 0x2020
|
|
||||||
#define CL_ADAPTER_D3D9EX_KHR 0x2021
|
|
||||||
#define CL_ADAPTER_DXVA_KHR 0x2022
|
|
||||||
|
|
||||||
// cl_media_adapter_set_khr
|
|
||||||
#define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023
|
|
||||||
#define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024
|
|
||||||
|
|
||||||
// cl_context_info
|
|
||||||
#define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025
|
|
||||||
#define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026
|
|
||||||
#define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027
|
|
||||||
|
|
||||||
// cl_mem_info
|
|
||||||
#define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028
|
|
||||||
#define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029
|
|
||||||
|
|
||||||
// cl_image_info
|
|
||||||
#define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A
|
|
||||||
|
|
||||||
// cl_command_type
|
|
||||||
#define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B
|
|
||||||
#define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)(
|
|
||||||
cl_platform_id platform,
|
|
||||||
cl_uint num_media_adapters,
|
|
||||||
cl_dx9_media_adapter_type_khr * media_adapter_type,
|
|
||||||
void * media_adapters,
|
|
||||||
cl_dx9_media_adapter_set_khr media_adapter_set,
|
|
||||||
cl_uint num_entries,
|
|
||||||
cl_device_id * devices,
|
|
||||||
cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
cl_dx9_media_adapter_type_khr adapter_type,
|
|
||||||
void * surface_info,
|
|
||||||
cl_uint plane,
|
|
||||||
cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __OPENCL_CL_DX9_MEDIA_SHARING_H
|
|
||||||
|
|
||||||
-131
@@ -1,131 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2008-2010 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_EGL_H
|
|
||||||
#define __OPENCL_CL_EGL_H
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
|
|
||||||
#else
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#include <EGL/egl.h>
|
|
||||||
#include <EGL/eglext.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Command type for events created with clEnqueueAcquireEGLObjectsKHR */
|
|
||||||
#define CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR 0x202F
|
|
||||||
#define CL_COMMAND_ACQUIRE_EGL_OBJECTS_KHR 0x202D
|
|
||||||
#define CL_COMMAND_RELEASE_EGL_OBJECTS_KHR 0x202E
|
|
||||||
|
|
||||||
/* Error type for clCreateFromEGLImageKHR */
|
|
||||||
#define CL_INVALID_EGL_OBJECT_KHR -1093
|
|
||||||
#define CL_EGL_RESOURCE_NOT_ACQUIRED_KHR -1092
|
|
||||||
|
|
||||||
/* CLeglImageKHR is an opaque handle to an EGLImage */
|
|
||||||
typedef void* CLeglImageKHR;
|
|
||||||
|
|
||||||
/* CLeglDisplayKHR is an opaque handle to an EGLDisplay */
|
|
||||||
typedef void* CLeglDisplayKHR;
|
|
||||||
|
|
||||||
/* properties passed to clCreateFromEGLImageKHR */
|
|
||||||
typedef intptr_t cl_egl_image_properties_khr;
|
|
||||||
|
|
||||||
|
|
||||||
#define cl_khr_egl_image 1
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_mem CL_API_CALL
|
|
||||||
clCreateFromEGLImageKHR(cl_context /* context */,
|
|
||||||
CLeglDisplayKHR /* egldisplay */,
|
|
||||||
CLeglImageKHR /* eglimage */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
const cl_egl_image_properties_khr * /* properties */,
|
|
||||||
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromEGLImageKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
CLeglDisplayKHR egldisplay,
|
|
||||||
CLeglImageKHR eglimage,
|
|
||||||
cl_mem_flags flags,
|
|
||||||
const cl_egl_image_properties_khr * properties,
|
|
||||||
cl_int * errcode_ret);
|
|
||||||
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clEnqueueAcquireEGLObjectsKHR(cl_command_queue /* command_queue */,
|
|
||||||
cl_uint /* num_objects */,
|
|
||||||
const cl_mem * /* mem_objects */,
|
|
||||||
cl_uint /* num_events_in_wait_list */,
|
|
||||||
const cl_event * /* event_wait_list */,
|
|
||||||
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireEGLObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event);
|
|
||||||
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clEnqueueReleaseEGLObjectsKHR(cl_command_queue /* command_queue */,
|
|
||||||
cl_uint /* num_objects */,
|
|
||||||
const cl_mem * /* mem_objects */,
|
|
||||||
cl_uint /* num_events_in_wait_list */,
|
|
||||||
const cl_event * /* event_wait_list */,
|
|
||||||
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseEGLObjectsKHR_fn)(
|
|
||||||
cl_command_queue command_queue,
|
|
||||||
cl_uint num_objects,
|
|
||||||
const cl_mem * mem_objects,
|
|
||||||
cl_uint num_events_in_wait_list,
|
|
||||||
const cl_event * event_wait_list,
|
|
||||||
cl_event * event);
|
|
||||||
|
|
||||||
|
|
||||||
#define cl_khr_egl_event 1
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_event CL_API_CALL
|
|
||||||
clCreateEventFromEGLSyncKHR(cl_context /* context */,
|
|
||||||
EGLSyncKHR /* sync */,
|
|
||||||
EGLDisplay /* display */,
|
|
||||||
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromEGLSyncKHR_fn)(
|
|
||||||
cl_context context,
|
|
||||||
EGLSyncKHR sync,
|
|
||||||
EGLDisplay display,
|
|
||||||
cl_int * errcode_ret);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __OPENCL_CL_EGL_H */
|
|
||||||
-306
@@ -1,306 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2008-2013 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11928 $ on $Date: 2010-07-13 09:04:56 -0700 (Tue, 13 Jul 2010) $ */
|
|
||||||
|
|
||||||
/* cl_ext.h contains OpenCL extensions which don't have external */
|
|
||||||
/* (OpenGL, D3D) dependencies. */
|
|
||||||
|
|
||||||
#ifndef __CL_EXT_H
|
|
||||||
#define __CL_EXT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <OpenCL/cl.h>
|
|
||||||
#include <AvailabilityMacros.h>
|
|
||||||
#else
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* cl_khr_fp16 extension - no extension #define since it has no functions */
|
|
||||||
#define CL_DEVICE_HALF_FP_CONFIG 0x1033
|
|
||||||
|
|
||||||
/* Memory object destruction
|
|
||||||
*
|
|
||||||
* Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR
|
|
||||||
*
|
|
||||||
* Registers a user callback function that will be called when the memory object is deleted and its resources
|
|
||||||
* freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback
|
|
||||||
* stack associated with memobj. The registered user callback functions are called in the reverse order in
|
|
||||||
* which they were registered. The user callback functions are called and then the memory object is deleted
|
|
||||||
* and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be
|
|
||||||
* notified when the memory referenced by host_ptr, specified when the memory object is created and used as
|
|
||||||
* the storage bits for the memory object, can be reused or freed.
|
|
||||||
*
|
|
||||||
* The application may not call CL api's with the cl_mem object passed to the pfn_notify.
|
|
||||||
*
|
|
||||||
* Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
|
|
||||||
* before using.
|
|
||||||
*/
|
|
||||||
#define cl_APPLE_SetMemObjectDestructor 1
|
|
||||||
cl_int CL_API_ENTRY clSetMemObjectDestructorAPPLE( cl_mem /* memobj */,
|
|
||||||
void (* /*pfn_notify*/)( cl_mem /* memobj */, void* /*user_data*/),
|
|
||||||
void * /*user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
|
|
||||||
/* Context Logging Functions
|
|
||||||
*
|
|
||||||
* The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext().
|
|
||||||
* Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
|
|
||||||
* before using.
|
|
||||||
*
|
|
||||||
* clLogMessagesToSystemLog fowards on all log messages to the Apple System Logger
|
|
||||||
*/
|
|
||||||
#define cl_APPLE_ContextLoggingFunctions 1
|
|
||||||
extern void CL_API_ENTRY clLogMessagesToSystemLogAPPLE( const char * /* errstr */,
|
|
||||||
const void * /* private_info */,
|
|
||||||
size_t /* cb */,
|
|
||||||
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
/* clLogMessagesToStdout sends all log messages to the file descriptor stdout */
|
|
||||||
extern void CL_API_ENTRY clLogMessagesToStdoutAPPLE( const char * /* errstr */,
|
|
||||||
const void * /* private_info */,
|
|
||||||
size_t /* cb */,
|
|
||||||
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
/* clLogMessagesToStderr sends all log messages to the file descriptor stderr */
|
|
||||||
extern void CL_API_ENTRY clLogMessagesToStderrAPPLE( const char * /* errstr */,
|
|
||||||
const void * /* private_info */,
|
|
||||||
size_t /* cb */,
|
|
||||||
void * /* user_data */ ) CL_EXT_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
|
|
||||||
/************************
|
|
||||||
* cl_khr_icd extension *
|
|
||||||
************************/
|
|
||||||
#define cl_khr_icd 1
|
|
||||||
|
|
||||||
/* cl_platform_info */
|
|
||||||
#define CL_PLATFORM_ICD_SUFFIX_KHR 0x0920
|
|
||||||
|
|
||||||
/* Additional Error Codes */
|
|
||||||
#define CL_PLATFORM_NOT_FOUND_KHR -1001
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clIcdGetPlatformIDsKHR(cl_uint /* num_entries */,
|
|
||||||
cl_platform_id * /* platforms */,
|
|
||||||
cl_uint * /* num_platforms */);
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(
|
|
||||||
cl_uint /* num_entries */,
|
|
||||||
cl_platform_id * /* platforms */,
|
|
||||||
cl_uint * /* num_platforms */);
|
|
||||||
|
|
||||||
|
|
||||||
/* Extension: cl_khr_image2D_buffer
|
|
||||||
*
|
|
||||||
* This extension allows a 2D image to be created from a cl_mem buffer without a copy.
|
|
||||||
* The type associated with a 2D image created from a buffer in an OpenCL program is image2d_t.
|
|
||||||
* Both the sampler and sampler-less read_image built-in functions are supported for 2D images
|
|
||||||
* and 2D images created from a buffer. Similarly, the write_image built-ins are also supported
|
|
||||||
* for 2D images created from a buffer.
|
|
||||||
*
|
|
||||||
* When the 2D image from buffer is created, the client must specify the width,
|
|
||||||
* height, image format (i.e. channel order and channel data type) and optionally the row pitch
|
|
||||||
*
|
|
||||||
* The pitch specified must be a multiple of CL_DEVICE_IMAGE_PITCH_ALIGNMENT pixels.
|
|
||||||
* The base address of the buffer must be aligned to CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT pixels.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*************************************
|
|
||||||
* cl_khr_initalize_memory extension *
|
|
||||||
*************************************/
|
|
||||||
|
|
||||||
#define CL_CONTEXT_MEMORY_INITIALIZE_KHR 0x200E
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************
|
|
||||||
* cl_khr_terminate_context extension *
|
|
||||||
**************************************/
|
|
||||||
|
|
||||||
#define CL_DEVICE_TERMINATE_CAPABILITY_KHR 0x200F
|
|
||||||
#define CL_CONTEXT_TERMINATE_KHR 0x2010
|
|
||||||
|
|
||||||
#define cl_khr_terminate_context 1
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL clTerminateContextKHR(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clTerminateContextKHR_fn)(cl_context /* context */) CL_EXT_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Extension: cl_khr_spir
|
|
||||||
*
|
|
||||||
* This extension adds support to create an OpenCL program object from a
|
|
||||||
* Standard Portable Intermediate Representation (SPIR) instance
|
|
||||||
*/
|
|
||||||
|
|
||||||
/******************************************
|
|
||||||
* cl_nv_device_attribute_query extension *
|
|
||||||
******************************************/
|
|
||||||
/* cl_nv_device_attribute_query extension - no extension #define since it has no functions */
|
|
||||||
#define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000
|
|
||||||
#define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001
|
|
||||||
#define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002
|
|
||||||
#define CL_DEVICE_WARP_SIZE_NV 0x4003
|
|
||||||
#define CL_DEVICE_GPU_OVERLAP_NV 0x4004
|
|
||||||
#define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005
|
|
||||||
#define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006
|
|
||||||
|
|
||||||
/*********************************
|
|
||||||
* cl_amd_device_attribute_query *
|
|
||||||
*********************************/
|
|
||||||
#define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
|
|
||||||
|
|
||||||
#ifdef CL_VERSION_1_1
|
|
||||||
/***********************************
|
|
||||||
* cl_ext_device_fission extension *
|
|
||||||
***********************************/
|
|
||||||
#define cl_ext_device_fission 1
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clReleaseDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int
|
|
||||||
(CL_API_CALL *clReleaseDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clRetainDeviceEXT( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int
|
|
||||||
(CL_API_CALL *clRetainDeviceEXT_fn)( cl_device_id /*device*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
typedef cl_ulong cl_device_partition_property_ext;
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clCreateSubDevicesEXT( cl_device_id /*in_device*/,
|
|
||||||
const cl_device_partition_property_ext * /* properties */,
|
|
||||||
cl_uint /*num_entries*/,
|
|
||||||
cl_device_id * /*out_devices*/,
|
|
||||||
cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int
|
|
||||||
( CL_API_CALL * clCreateSubDevicesEXT_fn)( cl_device_id /*in_device*/,
|
|
||||||
const cl_device_partition_property_ext * /* properties */,
|
|
||||||
cl_uint /*num_entries*/,
|
|
||||||
cl_device_id * /*out_devices*/,
|
|
||||||
cl_uint * /*num_devices*/ ) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
/* cl_device_partition_property_ext */
|
|
||||||
#define CL_DEVICE_PARTITION_EQUALLY_EXT 0x4050
|
|
||||||
#define CL_DEVICE_PARTITION_BY_COUNTS_EXT 0x4051
|
|
||||||
#define CL_DEVICE_PARTITION_BY_NAMES_EXT 0x4052
|
|
||||||
#define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT 0x4053
|
|
||||||
|
|
||||||
/* clDeviceGetInfo selectors */
|
|
||||||
#define CL_DEVICE_PARENT_DEVICE_EXT 0x4054
|
|
||||||
#define CL_DEVICE_PARTITION_TYPES_EXT 0x4055
|
|
||||||
#define CL_DEVICE_AFFINITY_DOMAINS_EXT 0x4056
|
|
||||||
#define CL_DEVICE_REFERENCE_COUNT_EXT 0x4057
|
|
||||||
#define CL_DEVICE_PARTITION_STYLE_EXT 0x4058
|
|
||||||
|
|
||||||
/* error codes */
|
|
||||||
#define CL_DEVICE_PARTITION_FAILED_EXT -1057
|
|
||||||
#define CL_INVALID_PARTITION_COUNT_EXT -1058
|
|
||||||
#define CL_INVALID_PARTITION_NAME_EXT -1059
|
|
||||||
|
|
||||||
/* CL_AFFINITY_DOMAINs */
|
|
||||||
#define CL_AFFINITY_DOMAIN_L1_CACHE_EXT 0x1
|
|
||||||
#define CL_AFFINITY_DOMAIN_L2_CACHE_EXT 0x2
|
|
||||||
#define CL_AFFINITY_DOMAIN_L3_CACHE_EXT 0x3
|
|
||||||
#define CL_AFFINITY_DOMAIN_L4_CACHE_EXT 0x4
|
|
||||||
#define CL_AFFINITY_DOMAIN_NUMA_EXT 0x10
|
|
||||||
#define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT 0x100
|
|
||||||
|
|
||||||
/* cl_device_partition_property_ext list terminators */
|
|
||||||
#define CL_PROPERTIES_LIST_END_EXT ((cl_device_partition_property_ext) 0)
|
|
||||||
#define CL_PARTITION_BY_COUNTS_LIST_END_EXT ((cl_device_partition_property_ext) 0)
|
|
||||||
#define CL_PARTITION_BY_NAMES_LIST_END_EXT ((cl_device_partition_property_ext) 0 - 1)
|
|
||||||
|
|
||||||
/*********************************
|
|
||||||
* cl_qcom_ext_host_ptr extension
|
|
||||||
*********************************/
|
|
||||||
|
|
||||||
#define CL_MEM_EXT_HOST_PTR_QCOM (1 << 29)
|
|
||||||
|
|
||||||
#define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM 0x40A0
|
|
||||||
#define CL_DEVICE_PAGE_SIZE_QCOM 0x40A1
|
|
||||||
#define CL_IMAGE_ROW_ALIGNMENT_QCOM 0x40A2
|
|
||||||
#define CL_IMAGE_SLICE_ALIGNMENT_QCOM 0x40A3
|
|
||||||
#define CL_MEM_HOST_UNCACHED_QCOM 0x40A4
|
|
||||||
#define CL_MEM_HOST_WRITEBACK_QCOM 0x40A5
|
|
||||||
#define CL_MEM_HOST_WRITETHROUGH_QCOM 0x40A6
|
|
||||||
#define CL_MEM_HOST_WRITE_COMBINING_QCOM 0x40A7
|
|
||||||
|
|
||||||
typedef cl_uint cl_image_pitch_info_qcom;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clGetDeviceImageInfoQCOM(cl_device_id device,
|
|
||||||
size_t image_width,
|
|
||||||
size_t image_height,
|
|
||||||
const cl_image_format *image_format,
|
|
||||||
cl_image_pitch_info_qcom param_name,
|
|
||||||
size_t param_value_size,
|
|
||||||
void *param_value,
|
|
||||||
size_t *param_value_size_ret);
|
|
||||||
|
|
||||||
typedef struct _cl_mem_ext_host_ptr
|
|
||||||
{
|
|
||||||
// Type of external memory allocation.
|
|
||||||
// Legal values will be defined in layered extensions.
|
|
||||||
cl_uint allocation_type;
|
|
||||||
|
|
||||||
// Host cache policy for this external memory allocation.
|
|
||||||
cl_uint host_cache_policy;
|
|
||||||
|
|
||||||
} cl_mem_ext_host_ptr;
|
|
||||||
|
|
||||||
/*********************************
|
|
||||||
* cl_qcom_ion_host_ptr extension
|
|
||||||
*********************************/
|
|
||||||
|
|
||||||
#define CL_MEM_ION_HOST_PTR_QCOM 0x40A8
|
|
||||||
|
|
||||||
typedef struct _cl_mem_ion_host_ptr
|
|
||||||
{
|
|
||||||
// Type of external memory allocation.
|
|
||||||
// Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations.
|
|
||||||
cl_mem_ext_host_ptr ext_host_ptr;
|
|
||||||
|
|
||||||
// ION file descriptor
|
|
||||||
int ion_filedesc;
|
|
||||||
|
|
||||||
// Host pointer to the ION allocated memory
|
|
||||||
void* ion_hostptr;
|
|
||||||
|
|
||||||
} cl_mem_ion_host_ptr;
|
|
||||||
|
|
||||||
#endif /* CL_VERSION_1_1 */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* __CL_EXT_H */
|
|
||||||
-162
@@ -1,162 +0,0 @@
|
|||||||
/**********************************************************************************
|
|
||||||
* Copyright (c) 2008 - 2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_GL_H
|
|
||||||
#define __OPENCL_CL_GL_H
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <OpenCL/cl.h>
|
|
||||||
#else
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef cl_uint cl_gl_object_type;
|
|
||||||
typedef cl_uint cl_gl_texture_info;
|
|
||||||
typedef cl_uint cl_gl_platform_info;
|
|
||||||
typedef struct __GLsync *cl_GLsync;
|
|
||||||
|
|
||||||
/* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */
|
|
||||||
#define CL_GL_OBJECT_BUFFER 0x2000
|
|
||||||
#define CL_GL_OBJECT_TEXTURE2D 0x2001
|
|
||||||
#define CL_GL_OBJECT_TEXTURE3D 0x2002
|
|
||||||
#define CL_GL_OBJECT_RENDERBUFFER 0x2003
|
|
||||||
#define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E
|
|
||||||
#define CL_GL_OBJECT_TEXTURE1D 0x200F
|
|
||||||
#define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010
|
|
||||||
#define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011
|
|
||||||
|
|
||||||
/* cl_gl_texture_info */
|
|
||||||
#define CL_GL_TEXTURE_TARGET 0x2004
|
|
||||||
#define CL_GL_MIPMAP_LEVEL 0x2005
|
|
||||||
#define CL_GL_NUM_SAMPLES 0x2012
|
|
||||||
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_mem CL_API_CALL
|
|
||||||
clCreateFromGLBuffer(cl_context /* context */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
cl_GLuint /* bufobj */,
|
|
||||||
int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_mem CL_API_CALL
|
|
||||||
clCreateFromGLTexture(cl_context /* context */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
cl_GLenum /* target */,
|
|
||||||
cl_GLint /* miplevel */,
|
|
||||||
cl_GLuint /* texture */,
|
|
||||||
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_2;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_mem CL_API_CALL
|
|
||||||
clCreateFromGLRenderbuffer(cl_context /* context */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
cl_GLuint /* renderbuffer */,
|
|
||||||
cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clGetGLObjectInfo(cl_mem /* memobj */,
|
|
||||||
cl_gl_object_type * /* gl_object_type */,
|
|
||||||
cl_GLuint * /* gl_object_name */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clGetGLTextureInfo(cl_mem /* memobj */,
|
|
||||||
cl_gl_texture_info /* param_name */,
|
|
||||||
size_t /* param_value_size */,
|
|
||||||
void * /* param_value */,
|
|
||||||
size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clEnqueueAcquireGLObjects(cl_command_queue /* command_queue */,
|
|
||||||
cl_uint /* num_objects */,
|
|
||||||
const cl_mem * /* mem_objects */,
|
|
||||||
cl_uint /* num_events_in_wait_list */,
|
|
||||||
const cl_event * /* event_wait_list */,
|
|
||||||
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clEnqueueReleaseGLObjects(cl_command_queue /* command_queue */,
|
|
||||||
cl_uint /* num_objects */,
|
|
||||||
const cl_mem * /* mem_objects */,
|
|
||||||
cl_uint /* num_events_in_wait_list */,
|
|
||||||
const cl_event * /* event_wait_list */,
|
|
||||||
cl_event * /* event */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
|
|
||||||
// Deprecated OpenCL 1.1 APIs
|
|
||||||
extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
|
|
||||||
clCreateFromGLTexture2D(cl_context /* context */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
cl_GLenum /* target */,
|
|
||||||
cl_GLint /* miplevel */,
|
|
||||||
cl_GLuint /* texture */,
|
|
||||||
cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
|
|
||||||
|
|
||||||
extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
|
|
||||||
clCreateFromGLTexture3D(cl_context /* context */,
|
|
||||||
cl_mem_flags /* flags */,
|
|
||||||
cl_GLenum /* target */,
|
|
||||||
cl_GLint /* miplevel */,
|
|
||||||
cl_GLuint /* texture */,
|
|
||||||
cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
|
|
||||||
|
|
||||||
/* cl_khr_gl_sharing extension */
|
|
||||||
|
|
||||||
#define cl_khr_gl_sharing 1
|
|
||||||
|
|
||||||
typedef cl_uint cl_gl_context_info;
|
|
||||||
|
|
||||||
/* Additional Error Codes */
|
|
||||||
#define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
|
|
||||||
|
|
||||||
/* cl_gl_context_info */
|
|
||||||
#define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006
|
|
||||||
#define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007
|
|
||||||
|
|
||||||
/* Additional cl_context_properties */
|
|
||||||
#define CL_GL_CONTEXT_KHR 0x2008
|
|
||||||
#define CL_EGL_DISPLAY_KHR 0x2009
|
|
||||||
#define CL_GLX_DISPLAY_KHR 0x200A
|
|
||||||
#define CL_WGL_HDC_KHR 0x200B
|
|
||||||
#define CL_CGL_SHAREGROUP_KHR 0x200C
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_int CL_API_CALL
|
|
||||||
clGetGLContextInfoKHR(const cl_context_properties * /* properties */,
|
|
||||||
cl_gl_context_info /* param_name */,
|
|
||||||
size_t /* param_value_size */,
|
|
||||||
void * /* param_value */,
|
|
||||||
size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_1_0;
|
|
||||||
|
|
||||||
typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR_fn)(
|
|
||||||
const cl_context_properties * properties,
|
|
||||||
cl_gl_context_info param_name,
|
|
||||||
size_t param_value_size,
|
|
||||||
void * param_value,
|
|
||||||
size_t * param_value_size_ret);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __OPENCL_CL_GL_H */
|
|
||||||
-69
@@ -1,69 +0,0 @@
|
|||||||
/**********************************************************************************
|
|
||||||
* Copyright (c) 2008-2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
**********************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
|
|
||||||
|
|
||||||
/* cl_gl_ext.h contains vendor (non-KHR) OpenCL extensions which have */
|
|
||||||
/* OpenGL dependencies. */
|
|
||||||
|
|
||||||
#ifndef __OPENCL_CL_GL_EXT_H
|
|
||||||
#define __OPENCL_CL_GL_EXT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
#include <OpenCL/cl_gl.h>
|
|
||||||
#else
|
|
||||||
#include <CL/cl_gl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For each extension, follow this template
|
|
||||||
* cl_VEN_extname extension */
|
|
||||||
/* #define cl_VEN_extname 1
|
|
||||||
* ... define new types, if any
|
|
||||||
* ... define new tokens, if any
|
|
||||||
* ... define new APIs, if any
|
|
||||||
*
|
|
||||||
* If you need GLtypes here, mirror them with a cl_GLtype, rather than including a GL header
|
|
||||||
* This allows us to avoid having to decide whether to include GL headers or GLES here.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* cl_khr_gl_event extension
|
|
||||||
* See section 9.9 in the OpenCL 1.1 spec for more information
|
|
||||||
*/
|
|
||||||
#define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D
|
|
||||||
|
|
||||||
extern CL_API_ENTRY cl_event CL_API_CALL
|
|
||||||
clCreateEventFromGLsyncKHR(cl_context /* context */,
|
|
||||||
cl_GLsync /* cl_GLsync */,
|
|
||||||
cl_int * /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __OPENCL_CL_GL_EXT_H */
|
|
||||||
-1254
File diff suppressed because it is too large
Load Diff
-54
@@ -1,54 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2008-2012 The Khronos Group Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and/or associated documentation files (the
|
|
||||||
* "Materials"), to deal in the Materials without restriction, including
|
|
||||||
* without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
* distribute, sublicense, and/or sell copies of the Materials, and to
|
|
||||||
* permit persons to whom the Materials are furnished to do so, subject to
|
|
||||||
* the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included
|
|
||||||
* in all copies or substantial portions of the Materials.
|
|
||||||
*
|
|
||||||
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
* MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
/* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */
|
|
||||||
|
|
||||||
#ifndef __OPENCL_H
|
|
||||||
#define __OPENCL_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
|
|
||||||
#include <OpenCL/cl.h>
|
|
||||||
#include <OpenCL/cl_gl.h>
|
|
||||||
#include <OpenCL/cl_gl_ext.h>
|
|
||||||
#include <OpenCL/cl_ext.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <CL/cl.h>
|
|
||||||
#include <CL/cl_gl.h>
|
|
||||||
#include <CL/cl_gl_ext.h>
|
|
||||||
#include <CL/cl_ext.h>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __OPENCL_H */
|
|
||||||
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
downloads/
|
|
||||||
unpack/
|
|
||||||
Vendored
-110
@@ -1,110 +0,0 @@
|
|||||||
#
|
|
||||||
# The script downloads ICV package
|
|
||||||
#
|
|
||||||
# On return this will define:
|
|
||||||
# OPENCV_ICV_PATH - path to unpacked downloaded package
|
|
||||||
#
|
|
||||||
|
|
||||||
function(_icv_downloader)
|
|
||||||
# Commit SHA in the opencv_3rdparty repo
|
|
||||||
set(IPPICV_BINARIES_COMMIT "81a676001ca8075ada498583e4166079e5744668")
|
|
||||||
# Define actual ICV versions
|
|
||||||
if(APPLE)
|
|
||||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_macosx_20151201.tgz")
|
|
||||||
set(OPENCV_ICV_PACKAGE_HASH "4ff1fde9a7cfdfe7250bfcd8334e0f2f")
|
|
||||||
set(OPENCV_ICV_PLATFORM "macosx")
|
|
||||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_osx")
|
|
||||||
elseif(UNIX)
|
|
||||||
if(ANDROID AND NOT (ANDROID_ABI STREQUAL x86 OR ANDROID_ABI STREQUAL x86_64))
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_linux_20151201.tgz")
|
|
||||||
set(OPENCV_ICV_PACKAGE_HASH "808b791a6eac9ed78d32a7666804320e")
|
|
||||||
set(OPENCV_ICV_PLATFORM "linux")
|
|
||||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_lnx")
|
|
||||||
elseif(WIN32 AND NOT ARM)
|
|
||||||
set(OPENCV_ICV_PACKAGE_NAME "ippicv_windows_20151201.zip")
|
|
||||||
set(OPENCV_ICV_PACKAGE_HASH "04e81ce5d0e329c3fbc606ae32cad44d")
|
|
||||||
set(OPENCV_ICV_PLATFORM "windows")
|
|
||||||
set(OPENCV_ICV_PACKAGE_SUBDIR "/ippicv_win")
|
|
||||||
else()
|
|
||||||
return() # Not supported
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(OPENCV_ICV_UNPACK_PATH "${CMAKE_CURRENT_LIST_DIR}/unpack")
|
|
||||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_UNPACK_PATH}${OPENCV_ICV_PACKAGE_SUBDIR}")
|
|
||||||
|
|
||||||
if(DEFINED OPENCV_ICV_PACKAGE_DOWNLOADED
|
|
||||||
AND OPENCV_ICV_PACKAGE_DOWNLOADED STREQUAL OPENCV_ICV_PACKAGE_HASH
|
|
||||||
AND EXISTS ${OPENCV_ICV_PATH})
|
|
||||||
# Package has been downloaded and checked by the previous build
|
|
||||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
else()
|
|
||||||
if(EXISTS ${OPENCV_ICV_UNPACK_PATH})
|
|
||||||
message(STATUS "ICV: Removing previous unpacked package: ${OPENCV_ICV_UNPACK_PATH}")
|
|
||||||
file(REMOVE_RECURSE ${OPENCV_ICV_UNPACK_PATH})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
unset(OPENCV_ICV_PACKAGE_DOWNLOADED CACHE)
|
|
||||||
|
|
||||||
set(OPENCV_ICV_PACKAGE_ARCHIVE "${CMAKE_CURRENT_LIST_DIR}/downloads/${OPENCV_ICV_PLATFORM}-${OPENCV_ICV_PACKAGE_HASH}/${OPENCV_ICV_PACKAGE_NAME}")
|
|
||||||
get_filename_component(OPENCV_ICV_PACKAGE_ARCHIVE_DIR "${OPENCV_ICV_PACKAGE_ARCHIVE}" PATH)
|
|
||||||
if(EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
|
||||||
file(MD5 "${OPENCV_ICV_PACKAGE_ARCHIVE}" archive_md5)
|
|
||||||
if(NOT archive_md5 STREQUAL OPENCV_ICV_PACKAGE_HASH)
|
|
||||||
message(WARNING "ICV: Local copy of ICV package has invalid MD5 hash: ${archive_md5} (expected: ${OPENCV_ICV_PACKAGE_HASH})")
|
|
||||||
file(REMOVE "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
|
||||||
file(REMOVE_RECURSE "${OPENCV_ICV_PACKAGE_ARCHIVE_DIR}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
|
||||||
if(NOT DEFINED OPENCV_ICV_URL)
|
|
||||||
if(DEFINED ENV{OPENCV_ICV_URL})
|
|
||||||
set(OPENCV_ICV_URL $ENV{OPENCV_ICV_URL})
|
|
||||||
else()
|
|
||||||
set(OPENCV_ICV_URL "https://raw.githubusercontent.com/Itseez/opencv_3rdparty/${IPPICV_BINARIES_COMMIT}/ippicv")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(MAKE_DIRECTORY ${OPENCV_ICV_PACKAGE_ARCHIVE_DIR})
|
|
||||||
message(STATUS "ICV: Downloading ${OPENCV_ICV_PACKAGE_NAME}...")
|
|
||||||
file(DOWNLOAD "${OPENCV_ICV_URL}/${OPENCV_ICV_PACKAGE_NAME}" "${OPENCV_ICV_PACKAGE_ARCHIVE}"
|
|
||||||
TIMEOUT 600 STATUS __status
|
|
||||||
EXPECTED_MD5 ${OPENCV_ICV_PACKAGE_HASH})
|
|
||||||
if(NOT __status EQUAL 0)
|
|
||||||
message(FATAL_ERROR "ICV: Failed to download ICV package: ${OPENCV_ICV_PACKAGE_NAME}. Status=${__status}")
|
|
||||||
else()
|
|
||||||
# Don't remove this code, because EXPECTED_MD5 parameter doesn't fail "file(DOWNLOAD)" step
|
|
||||||
# on wrong hash
|
|
||||||
file(MD5 "${OPENCV_ICV_PACKAGE_ARCHIVE}" archive_md5)
|
|
||||||
if(NOT archive_md5 STREQUAL OPENCV_ICV_PACKAGE_HASH)
|
|
||||||
message(FATAL_ERROR "ICV: Downloaded copy of ICV package has invalid MD5 hash: ${archive_md5} (expected: ${OPENCV_ICV_PACKAGE_HASH})")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ocv_assert(EXISTS "${OPENCV_ICV_PACKAGE_ARCHIVE}")
|
|
||||||
ocv_assert(NOT EXISTS "${OPENCV_ICV_UNPACK_PATH}")
|
|
||||||
file(MAKE_DIRECTORY ${OPENCV_ICV_UNPACK_PATH})
|
|
||||||
ocv_assert(EXISTS "${OPENCV_ICV_UNPACK_PATH}")
|
|
||||||
|
|
||||||
message(STATUS "ICV: Unpacking ${OPENCV_ICV_PACKAGE_NAME} to ${OPENCV_ICV_UNPACK_PATH}...")
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xz "${OPENCV_ICV_PACKAGE_ARCHIVE}"
|
|
||||||
WORKING_DIRECTORY "${OPENCV_ICV_UNPACK_PATH}"
|
|
||||||
RESULT_VARIABLE __result)
|
|
||||||
|
|
||||||
if(NOT __result EQUAL 0)
|
|
||||||
message(FATAL_ERROR "ICV: Failed to unpack ICV package from ${OPENCV_ICV_PACKAGE_ARCHIVE} to ${OPENCV_ICV_UNPACK_PATH} with error ${__result}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
ocv_assert(EXISTS "${OPENCV_ICV_PATH}")
|
|
||||||
|
|
||||||
set(OPENCV_ICV_PACKAGE_DOWNLOADED "${OPENCV_ICV_PACKAGE_HASH}" CACHE INTERNAL "ICV package hash")
|
|
||||||
|
|
||||||
message(STATUS "ICV: Package successfully downloaded")
|
|
||||||
set(OPENCV_ICV_PATH "${OPENCV_ICV_PATH}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
_icv_downloader()
|
|
||||||
Vendored
-33
@@ -1,33 +0,0 @@
|
|||||||
Jinja is written and maintained by the Jinja Team and various
|
|
||||||
contributors:
|
|
||||||
|
|
||||||
Lead Developer:
|
|
||||||
|
|
||||||
- Armin Ronacher <armin.ronacher@active-4.com>
|
|
||||||
|
|
||||||
Developers:
|
|
||||||
|
|
||||||
- Christoph Hack
|
|
||||||
- Georg Brandl
|
|
||||||
|
|
||||||
Contributors:
|
|
||||||
|
|
||||||
- Bryan McLemore
|
|
||||||
- Mickaël Guérin <kael@crocobox.org>
|
|
||||||
- Cameron Knight
|
|
||||||
- Lawrence Journal-World.
|
|
||||||
- David Cramer
|
|
||||||
|
|
||||||
Patches and suggestions:
|
|
||||||
|
|
||||||
- Ronny Pfannschmidt
|
|
||||||
- Axel Böhm
|
|
||||||
- Alexey Melchakov
|
|
||||||
- Bryan McLemore
|
|
||||||
- Clovis Fabricio (nosklo)
|
|
||||||
- Cameron Knight
|
|
||||||
- Peter van Dijk (Habbie)
|
|
||||||
- Stefan Ebner
|
|
||||||
- Rene Leonhardt
|
|
||||||
- Thomas Waldmann
|
|
||||||
- Cory Benfield (Lukasa)
|
|
||||||
Vendored
-31
@@ -1,31 +0,0 @@
|
|||||||
Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details.
|
|
||||||
|
|
||||||
Some rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
* The names of the contributors may not be used to endorse or
|
|
||||||
promote products derived from this software without specific
|
|
||||||
prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
Vendored
-69
@@ -1,69 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2
|
|
||||||
~~~~~~
|
|
||||||
|
|
||||||
Jinja2 is a template engine written in pure Python. It provides a
|
|
||||||
Django inspired non-XML syntax but supports inline expressions and
|
|
||||||
an optional sandboxed environment.
|
|
||||||
|
|
||||||
Nutshell
|
|
||||||
--------
|
|
||||||
|
|
||||||
Here a small example of a Jinja2 template::
|
|
||||||
|
|
||||||
{% extends 'base.html' %}
|
|
||||||
{% block title %}Memberlist{% endblock %}
|
|
||||||
{% block content %}
|
|
||||||
<ul>
|
|
||||||
{% for user in users %}
|
|
||||||
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
__docformat__ = 'restructuredtext en'
|
|
||||||
__version__ = '2.7.1'
|
|
||||||
|
|
||||||
# high level interface
|
|
||||||
from jinja2.environment import Environment, Template
|
|
||||||
|
|
||||||
# loaders
|
|
||||||
from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \
|
|
||||||
DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \
|
|
||||||
ModuleLoader
|
|
||||||
|
|
||||||
# bytecode caches
|
|
||||||
from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \
|
|
||||||
MemcachedBytecodeCache
|
|
||||||
|
|
||||||
# undefined types
|
|
||||||
from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined
|
|
||||||
|
|
||||||
# exceptions
|
|
||||||
from jinja2.exceptions import TemplateError, UndefinedError, \
|
|
||||||
TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \
|
|
||||||
TemplateAssertionError
|
|
||||||
|
|
||||||
# decorators and public utilities
|
|
||||||
from jinja2.filters import environmentfilter, contextfilter, \
|
|
||||||
evalcontextfilter
|
|
||||||
from jinja2.utils import Markup, escape, clear_caches, \
|
|
||||||
environmentfunction, evalcontextfunction, contextfunction, \
|
|
||||||
is_undefined
|
|
||||||
|
|
||||||
__all__ = [
|
|
||||||
'Environment', 'Template', 'BaseLoader', 'FileSystemLoader',
|
|
||||||
'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader',
|
|
||||||
'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache',
|
|
||||||
'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined',
|
|
||||||
'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound',
|
|
||||||
'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError',
|
|
||||||
'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape',
|
|
||||||
'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined',
|
|
||||||
'evalcontextfilter', 'evalcontextfunction'
|
|
||||||
]
|
|
||||||
Vendored
-150
@@ -1,150 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2._compat
|
|
||||||
~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Some py2/py3 compatibility support based on a stripped down
|
|
||||||
version of six so we don't have to depend on a specific version
|
|
||||||
of it.
|
|
||||||
|
|
||||||
:copyright: Copyright 2013 by the Jinja team, see AUTHORS.
|
|
||||||
:license: BSD, see LICENSE for details.
|
|
||||||
"""
|
|
||||||
import sys
|
|
||||||
|
|
||||||
PY2 = sys.version_info[0] == 2
|
|
||||||
PYPY = hasattr(sys, 'pypy_translation_info')
|
|
||||||
_identity = lambda x: x
|
|
||||||
|
|
||||||
|
|
||||||
if not PY2:
|
|
||||||
unichr = chr
|
|
||||||
range_type = range
|
|
||||||
text_type = str
|
|
||||||
string_types = (str,)
|
|
||||||
|
|
||||||
iterkeys = lambda d: iter(d.keys())
|
|
||||||
itervalues = lambda d: iter(d.values())
|
|
||||||
iteritems = lambda d: iter(d.items())
|
|
||||||
|
|
||||||
import pickle
|
|
||||||
from io import BytesIO, StringIO
|
|
||||||
NativeStringIO = StringIO
|
|
||||||
|
|
||||||
def reraise(tp, value, tb=None):
|
|
||||||
if value.__traceback__ is not tb:
|
|
||||||
raise value.with_traceback(tb)
|
|
||||||
raise value
|
|
||||||
|
|
||||||
ifilter = filter
|
|
||||||
imap = map
|
|
||||||
izip = zip
|
|
||||||
intern = sys.intern
|
|
||||||
|
|
||||||
implements_iterator = _identity
|
|
||||||
implements_to_string = _identity
|
|
||||||
encode_filename = _identity
|
|
||||||
get_next = lambda x: x.__next__
|
|
||||||
|
|
||||||
else:
|
|
||||||
unichr = unichr
|
|
||||||
text_type = unicode
|
|
||||||
range_type = xrange
|
|
||||||
string_types = (str, unicode)
|
|
||||||
|
|
||||||
iterkeys = lambda d: d.iterkeys()
|
|
||||||
itervalues = lambda d: d.itervalues()
|
|
||||||
iteritems = lambda d: d.iteritems()
|
|
||||||
|
|
||||||
import cPickle as pickle
|
|
||||||
from cStringIO import StringIO as BytesIO, StringIO
|
|
||||||
NativeStringIO = BytesIO
|
|
||||||
|
|
||||||
exec('def reraise(tp, value, tb=None):\n raise tp, value, tb')
|
|
||||||
|
|
||||||
from itertools import imap, izip, ifilter
|
|
||||||
intern = intern
|
|
||||||
|
|
||||||
def implements_iterator(cls):
|
|
||||||
cls.next = cls.__next__
|
|
||||||
del cls.__next__
|
|
||||||
return cls
|
|
||||||
|
|
||||||
def implements_to_string(cls):
|
|
||||||
cls.__unicode__ = cls.__str__
|
|
||||||
cls.__str__ = lambda x: x.__unicode__().encode('utf-8')
|
|
||||||
return cls
|
|
||||||
|
|
||||||
get_next = lambda x: x.next
|
|
||||||
|
|
||||||
def encode_filename(filename):
|
|
||||||
if isinstance(filename, unicode):
|
|
||||||
return filename.encode('utf-8')
|
|
||||||
return filename
|
|
||||||
|
|
||||||
try:
|
|
||||||
next = next
|
|
||||||
except NameError:
|
|
||||||
def next(it):
|
|
||||||
return it.next()
|
|
||||||
|
|
||||||
|
|
||||||
def with_metaclass(meta, *bases):
|
|
||||||
# This requires a bit of explanation: the basic idea is to make a
|
|
||||||
# dummy metaclass for one level of class instanciation that replaces
|
|
||||||
# itself with the actual metaclass. Because of internal type checks
|
|
||||||
# we also need to make sure that we downgrade the custom metaclass
|
|
||||||
# for one level to something closer to type (that's why __call__ and
|
|
||||||
# __init__ comes back from type etc.).
|
|
||||||
#
|
|
||||||
# This has the advantage over six.with_metaclass in that it does not
|
|
||||||
# introduce dummy classes into the final MRO.
|
|
||||||
class metaclass(meta):
|
|
||||||
__call__ = type.__call__
|
|
||||||
__init__ = type.__init__
|
|
||||||
def __new__(cls, name, this_bases, d):
|
|
||||||
if this_bases is None:
|
|
||||||
return type.__new__(cls, name, (), d)
|
|
||||||
return meta(name, bases, d)
|
|
||||||
return metaclass('temporary_class', None, {})
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
from collections import Mapping as mapping_types
|
|
||||||
except ImportError:
|
|
||||||
import UserDict
|
|
||||||
mapping_types = (UserDict.UserDict, UserDict.DictMixin, dict)
|
|
||||||
|
|
||||||
|
|
||||||
# common types. These do exist in the special types module too which however
|
|
||||||
# does not exist in IronPython out of the box. Also that way we don't have
|
|
||||||
# to deal with implementation specific stuff here
|
|
||||||
class _C(object):
|
|
||||||
def method(self): pass
|
|
||||||
def _func():
|
|
||||||
yield None
|
|
||||||
function_type = type(_func)
|
|
||||||
generator_type = type(_func())
|
|
||||||
method_type = type(_C().method)
|
|
||||||
code_type = type(_C.method.__code__)
|
|
||||||
try:
|
|
||||||
raise TypeError()
|
|
||||||
except TypeError:
|
|
||||||
_tb = sys.exc_info()[2]
|
|
||||||
traceback_type = type(_tb)
|
|
||||||
frame_type = type(_tb.tb_frame)
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
from urllib.parse import quote_from_bytes as url_quote
|
|
||||||
except ImportError:
|
|
||||||
from urllib import quote as url_quote
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
|
||||||
from thread import allocate_lock
|
|
||||||
except ImportError:
|
|
||||||
try:
|
|
||||||
from threading import Lock as allocate_lock
|
|
||||||
except ImportError:
|
|
||||||
from dummy_thread import allocate_lock
|
|
||||||
Vendored
-132
File diff suppressed because one or more lines are too long
Vendored
-311
@@ -1,311 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2.bccache
|
|
||||||
~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
This module implements the bytecode cache system Jinja is optionally
|
|
||||||
using. This is useful if you have very complex template situations and
|
|
||||||
the compiliation of all those templates slow down your application too
|
|
||||||
much.
|
|
||||||
|
|
||||||
Situations where this is useful are often forking web applications that
|
|
||||||
are initialized on the first request.
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD.
|
|
||||||
"""
|
|
||||||
from os import path, listdir
|
|
||||||
import sys
|
|
||||||
import marshal
|
|
||||||
import tempfile
|
|
||||||
import fnmatch
|
|
||||||
from hashlib import sha1
|
|
||||||
from jinja2.utils import open_if_exists
|
|
||||||
from jinja2._compat import BytesIO, pickle, PY2, text_type
|
|
||||||
|
|
||||||
|
|
||||||
# marshal works better on 3.x, one hack less required
|
|
||||||
if not PY2:
|
|
||||||
marshal_dump = marshal.dump
|
|
||||||
marshal_load = marshal.load
|
|
||||||
else:
|
|
||||||
|
|
||||||
def marshal_dump(code, f):
|
|
||||||
if isinstance(f, file):
|
|
||||||
marshal.dump(code, f)
|
|
||||||
else:
|
|
||||||
f.write(marshal.dumps(code))
|
|
||||||
|
|
||||||
def marshal_load(f):
|
|
||||||
if isinstance(f, file):
|
|
||||||
return marshal.load(f)
|
|
||||||
return marshal.loads(f.read())
|
|
||||||
|
|
||||||
|
|
||||||
bc_version = 2
|
|
||||||
|
|
||||||
# magic version used to only change with new jinja versions. With 2.6
|
|
||||||
# we change this to also take Python version changes into account. The
|
|
||||||
# reason for this is that Python tends to segfault if fed earlier bytecode
|
|
||||||
# versions because someone thought it would be a good idea to reuse opcodes
|
|
||||||
# or make Python incompatible with earlier versions.
|
|
||||||
bc_magic = 'j2'.encode('ascii') + \
|
|
||||||
pickle.dumps(bc_version, 2) + \
|
|
||||||
pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1])
|
|
||||||
|
|
||||||
|
|
||||||
class Bucket(object):
|
|
||||||
"""Buckets are used to store the bytecode for one template. It's created
|
|
||||||
and initialized by the bytecode cache and passed to the loading functions.
|
|
||||||
|
|
||||||
The buckets get an internal checksum from the cache assigned and use this
|
|
||||||
to automatically reject outdated cache material. Individual bytecode
|
|
||||||
cache subclasses don't have to care about cache invalidation.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, environment, key, checksum):
|
|
||||||
self.environment = environment
|
|
||||||
self.key = key
|
|
||||||
self.checksum = checksum
|
|
||||||
self.reset()
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
"""Resets the bucket (unloads the bytecode)."""
|
|
||||||
self.code = None
|
|
||||||
|
|
||||||
def load_bytecode(self, f):
|
|
||||||
"""Loads bytecode from a file or file like object."""
|
|
||||||
# make sure the magic header is correct
|
|
||||||
magic = f.read(len(bc_magic))
|
|
||||||
if magic != bc_magic:
|
|
||||||
self.reset()
|
|
||||||
return
|
|
||||||
# the source code of the file changed, we need to reload
|
|
||||||
checksum = pickle.load(f)
|
|
||||||
if self.checksum != checksum:
|
|
||||||
self.reset()
|
|
||||||
return
|
|
||||||
self.code = marshal_load(f)
|
|
||||||
|
|
||||||
def write_bytecode(self, f):
|
|
||||||
"""Dump the bytecode into the file or file like object passed."""
|
|
||||||
if self.code is None:
|
|
||||||
raise TypeError('can\'t write empty bucket')
|
|
||||||
f.write(bc_magic)
|
|
||||||
pickle.dump(self.checksum, f, 2)
|
|
||||||
marshal_dump(self.code, f)
|
|
||||||
|
|
||||||
def bytecode_from_string(self, string):
|
|
||||||
"""Load bytecode from a string."""
|
|
||||||
self.load_bytecode(BytesIO(string))
|
|
||||||
|
|
||||||
def bytecode_to_string(self):
|
|
||||||
"""Return the bytecode as string."""
|
|
||||||
out = BytesIO()
|
|
||||||
self.write_bytecode(out)
|
|
||||||
return out.getvalue()
|
|
||||||
|
|
||||||
|
|
||||||
class BytecodeCache(object):
|
|
||||||
"""To implement your own bytecode cache you have to subclass this class
|
|
||||||
and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of
|
|
||||||
these methods are passed a :class:`~jinja2.bccache.Bucket`.
|
|
||||||
|
|
||||||
A very basic bytecode cache that saves the bytecode on the file system::
|
|
||||||
|
|
||||||
from os import path
|
|
||||||
|
|
||||||
class MyCache(BytecodeCache):
|
|
||||||
|
|
||||||
def __init__(self, directory):
|
|
||||||
self.directory = directory
|
|
||||||
|
|
||||||
def load_bytecode(self, bucket):
|
|
||||||
filename = path.join(self.directory, bucket.key)
|
|
||||||
if path.exists(filename):
|
|
||||||
with open(filename, 'rb') as f:
|
|
||||||
bucket.load_bytecode(f)
|
|
||||||
|
|
||||||
def dump_bytecode(self, bucket):
|
|
||||||
filename = path.join(self.directory, bucket.key)
|
|
||||||
with open(filename, 'wb') as f:
|
|
||||||
bucket.write_bytecode(f)
|
|
||||||
|
|
||||||
A more advanced version of a filesystem based bytecode cache is part of
|
|
||||||
Jinja2.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def load_bytecode(self, bucket):
|
|
||||||
"""Subclasses have to override this method to load bytecode into a
|
|
||||||
bucket. If they are not able to find code in the cache for the
|
|
||||||
bucket, it must not do anything.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
def dump_bytecode(self, bucket):
|
|
||||||
"""Subclasses have to override this method to write the bytecode
|
|
||||||
from a bucket back to the cache. If it unable to do so it must not
|
|
||||||
fail silently but raise an exception.
|
|
||||||
"""
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
def clear(self):
|
|
||||||
"""Clears the cache. This method is not used by Jinja2 but should be
|
|
||||||
implemented to allow applications to clear the bytecode cache used
|
|
||||||
by a particular environment.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def get_cache_key(self, name, filename=None):
|
|
||||||
"""Returns the unique hash key for this template name."""
|
|
||||||
hash = sha1(name.encode('utf-8'))
|
|
||||||
if filename is not None:
|
|
||||||
filename = '|' + filename
|
|
||||||
if isinstance(filename, text_type):
|
|
||||||
filename = filename.encode('utf-8')
|
|
||||||
hash.update(filename)
|
|
||||||
return hash.hexdigest()
|
|
||||||
|
|
||||||
def get_source_checksum(self, source):
|
|
||||||
"""Returns a checksum for the source."""
|
|
||||||
return sha1(source.encode('utf-8')).hexdigest()
|
|
||||||
|
|
||||||
def get_bucket(self, environment, name, filename, source):
|
|
||||||
"""Return a cache bucket for the given template. All arguments are
|
|
||||||
mandatory but filename may be `None`.
|
|
||||||
"""
|
|
||||||
key = self.get_cache_key(name, filename)
|
|
||||||
checksum = self.get_source_checksum(source)
|
|
||||||
bucket = Bucket(environment, key, checksum)
|
|
||||||
self.load_bytecode(bucket)
|
|
||||||
return bucket
|
|
||||||
|
|
||||||
def set_bucket(self, bucket):
|
|
||||||
"""Put the bucket into the cache."""
|
|
||||||
self.dump_bytecode(bucket)
|
|
||||||
|
|
||||||
|
|
||||||
class FileSystemBytecodeCache(BytecodeCache):
|
|
||||||
"""A bytecode cache that stores bytecode on the filesystem. It accepts
|
|
||||||
two arguments: The directory where the cache items are stored and a
|
|
||||||
pattern string that is used to build the filename.
|
|
||||||
|
|
||||||
If no directory is specified the system temporary items folder is used.
|
|
||||||
|
|
||||||
The pattern can be used to have multiple separate caches operate on the
|
|
||||||
same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s``
|
|
||||||
is replaced with the cache key.
|
|
||||||
|
|
||||||
>>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache')
|
|
||||||
|
|
||||||
This bytecode cache supports clearing of the cache using the clear method.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, directory=None, pattern='__jinja2_%s.cache'):
|
|
||||||
if directory is None:
|
|
||||||
directory = tempfile.gettempdir()
|
|
||||||
self.directory = directory
|
|
||||||
self.pattern = pattern
|
|
||||||
|
|
||||||
def _get_cache_filename(self, bucket):
|
|
||||||
return path.join(self.directory, self.pattern % bucket.key)
|
|
||||||
|
|
||||||
def load_bytecode(self, bucket):
|
|
||||||
f = open_if_exists(self._get_cache_filename(bucket), 'rb')
|
|
||||||
if f is not None:
|
|
||||||
try:
|
|
||||||
bucket.load_bytecode(f)
|
|
||||||
finally:
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
def dump_bytecode(self, bucket):
|
|
||||||
f = open(self._get_cache_filename(bucket), 'wb')
|
|
||||||
try:
|
|
||||||
bucket.write_bytecode(f)
|
|
||||||
finally:
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
def clear(self):
|
|
||||||
# imported lazily here because google app-engine doesn't support
|
|
||||||
# write access on the file system and the function does not exist
|
|
||||||
# normally.
|
|
||||||
from os import remove
|
|
||||||
files = fnmatch.filter(listdir(self.directory), self.pattern % '*')
|
|
||||||
for filename in files:
|
|
||||||
try:
|
|
||||||
remove(path.join(self.directory, filename))
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class MemcachedBytecodeCache(BytecodeCache):
|
|
||||||
"""This class implements a bytecode cache that uses a memcache cache for
|
|
||||||
storing the information. It does not enforce a specific memcache library
|
|
||||||
(tummy's memcache or cmemcache) but will accept any class that provides
|
|
||||||
the minimal interface required.
|
|
||||||
|
|
||||||
Libraries compatible with this class:
|
|
||||||
|
|
||||||
- `werkzeug <http://werkzeug.pocoo.org/>`_.contrib.cache
|
|
||||||
- `python-memcached <http://www.tummy.com/Community/software/python-memcached/>`_
|
|
||||||
- `cmemcache <http://gijsbert.org/cmemcache/>`_
|
|
||||||
|
|
||||||
(Unfortunately the django cache interface is not compatible because it
|
|
||||||
does not support storing binary data, only unicode. You can however pass
|
|
||||||
the underlying cache client to the bytecode cache which is available
|
|
||||||
as `django.core.cache.cache._client`.)
|
|
||||||
|
|
||||||
The minimal interface for the client passed to the constructor is this:
|
|
||||||
|
|
||||||
.. class:: MinimalClientInterface
|
|
||||||
|
|
||||||
.. method:: set(key, value[, timeout])
|
|
||||||
|
|
||||||
Stores the bytecode in the cache. `value` is a string and
|
|
||||||
`timeout` the timeout of the key. If timeout is not provided
|
|
||||||
a default timeout or no timeout should be assumed, if it's
|
|
||||||
provided it's an integer with the number of seconds the cache
|
|
||||||
item should exist.
|
|
||||||
|
|
||||||
.. method:: get(key)
|
|
||||||
|
|
||||||
Returns the value for the cache key. If the item does not
|
|
||||||
exist in the cache the return value must be `None`.
|
|
||||||
|
|
||||||
The other arguments to the constructor are the prefix for all keys that
|
|
||||||
is added before the actual cache key and the timeout for the bytecode in
|
|
||||||
the cache system. We recommend a high (or no) timeout.
|
|
||||||
|
|
||||||
This bytecode cache does not support clearing of used items in the cache.
|
|
||||||
The clear method is a no-operation function.
|
|
||||||
|
|
||||||
.. versionadded:: 2.7
|
|
||||||
Added support for ignoring memcache errors through the
|
|
||||||
`ignore_memcache_errors` parameter.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, client, prefix='jinja2/bytecode/', timeout=None,
|
|
||||||
ignore_memcache_errors=True):
|
|
||||||
self.client = client
|
|
||||||
self.prefix = prefix
|
|
||||||
self.timeout = timeout
|
|
||||||
self.ignore_memcache_errors = ignore_memcache_errors
|
|
||||||
|
|
||||||
def load_bytecode(self, bucket):
|
|
||||||
try:
|
|
||||||
code = self.client.get(self.prefix + bucket.key)
|
|
||||||
except Exception:
|
|
||||||
if not self.ignore_memcache_errors:
|
|
||||||
raise
|
|
||||||
code = None
|
|
||||||
if code is not None:
|
|
||||||
bucket.bytecode_from_string(code)
|
|
||||||
|
|
||||||
def dump_bytecode(self, bucket):
|
|
||||||
args = (self.prefix + bucket.key, bucket.bytecode_to_string())
|
|
||||||
if self.timeout is not None:
|
|
||||||
args += (self.timeout,)
|
|
||||||
try:
|
|
||||||
self.client.set(*args)
|
|
||||||
except Exception:
|
|
||||||
if not self.ignore_memcache_errors:
|
|
||||||
raise
|
|
||||||
Vendored
-1640
File diff suppressed because it is too large
Load Diff
Vendored
-32
@@ -1,32 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja.constants
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Various constants.
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
#: list of lorem ipsum words used by the lipsum() helper function
|
|
||||||
LOREM_IPSUM_WORDS = u'''\
|
|
||||||
a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at
|
|
||||||
auctor augue bibendum blandit class commodo condimentum congue consectetuer
|
|
||||||
consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus
|
|
||||||
diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend
|
|
||||||
elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames
|
|
||||||
faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac
|
|
||||||
hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum
|
|
||||||
justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem
|
|
||||||
luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie
|
|
||||||
mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non
|
|
||||||
nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque
|
|
||||||
penatibus per pharetra phasellus placerat platea porta porttitor posuere
|
|
||||||
potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus
|
|
||||||
ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit
|
|
||||||
sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor
|
|
||||||
tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices
|
|
||||||
ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus
|
|
||||||
viverra volutpat vulputate'''
|
|
||||||
Vendored
-337
@@ -1,337 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2.debug
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Implements the debug interface for Jinja. This module does some pretty
|
|
||||||
ugly stuff with the Python traceback system in order to achieve tracebacks
|
|
||||||
with correct line numbers, locals and contents.
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
from types import TracebackType
|
|
||||||
from jinja2.utils import missing, internal_code
|
|
||||||
from jinja2.exceptions import TemplateSyntaxError
|
|
||||||
from jinja2._compat import iteritems, reraise, code_type
|
|
||||||
|
|
||||||
# on pypy we can take advantage of transparent proxies
|
|
||||||
try:
|
|
||||||
from __pypy__ import tproxy
|
|
||||||
except ImportError:
|
|
||||||
tproxy = None
|
|
||||||
|
|
||||||
|
|
||||||
# how does the raise helper look like?
|
|
||||||
try:
|
|
||||||
exec("raise TypeError, 'foo'")
|
|
||||||
except SyntaxError:
|
|
||||||
raise_helper = 'raise __jinja_exception__[1]'
|
|
||||||
except TypeError:
|
|
||||||
raise_helper = 'raise __jinja_exception__[0], __jinja_exception__[1]'
|
|
||||||
|
|
||||||
|
|
||||||
class TracebackFrameProxy(object):
|
|
||||||
"""Proxies a traceback frame."""
|
|
||||||
|
|
||||||
def __init__(self, tb):
|
|
||||||
self.tb = tb
|
|
||||||
self._tb_next = None
|
|
||||||
|
|
||||||
@property
|
|
||||||
def tb_next(self):
|
|
||||||
return self._tb_next
|
|
||||||
|
|
||||||
def set_next(self, next):
|
|
||||||
if tb_set_next is not None:
|
|
||||||
try:
|
|
||||||
tb_set_next(self.tb, next and next.tb or None)
|
|
||||||
except Exception:
|
|
||||||
# this function can fail due to all the hackery it does
|
|
||||||
# on various python implementations. We just catch errors
|
|
||||||
# down and ignore them if necessary.
|
|
||||||
pass
|
|
||||||
self._tb_next = next
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_jinja_frame(self):
|
|
||||||
return '__jinja_template__' in self.tb.tb_frame.f_globals
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
|
||||||
return getattr(self.tb, name)
|
|
||||||
|
|
||||||
|
|
||||||
def make_frame_proxy(frame):
|
|
||||||
proxy = TracebackFrameProxy(frame)
|
|
||||||
if tproxy is None:
|
|
||||||
return proxy
|
|
||||||
def operation_handler(operation, *args, **kwargs):
|
|
||||||
if operation in ('__getattribute__', '__getattr__'):
|
|
||||||
return getattr(proxy, args[0])
|
|
||||||
elif operation == '__setattr__':
|
|
||||||
proxy.__setattr__(*args, **kwargs)
|
|
||||||
else:
|
|
||||||
return getattr(proxy, operation)(*args, **kwargs)
|
|
||||||
return tproxy(TracebackType, operation_handler)
|
|
||||||
|
|
||||||
|
|
||||||
class ProcessedTraceback(object):
|
|
||||||
"""Holds a Jinja preprocessed traceback for printing or reraising."""
|
|
||||||
|
|
||||||
def __init__(self, exc_type, exc_value, frames):
|
|
||||||
assert frames, 'no frames for this traceback?'
|
|
||||||
self.exc_type = exc_type
|
|
||||||
self.exc_value = exc_value
|
|
||||||
self.frames = frames
|
|
||||||
|
|
||||||
# newly concatenate the frames (which are proxies)
|
|
||||||
prev_tb = None
|
|
||||||
for tb in self.frames:
|
|
||||||
if prev_tb is not None:
|
|
||||||
prev_tb.set_next(tb)
|
|
||||||
prev_tb = tb
|
|
||||||
prev_tb.set_next(None)
|
|
||||||
|
|
||||||
def render_as_text(self, limit=None):
|
|
||||||
"""Return a string with the traceback."""
|
|
||||||
lines = traceback.format_exception(self.exc_type, self.exc_value,
|
|
||||||
self.frames[0], limit=limit)
|
|
||||||
return ''.join(lines).rstrip()
|
|
||||||
|
|
||||||
def render_as_html(self, full=False):
|
|
||||||
"""Return a unicode string with the traceback as rendered HTML."""
|
|
||||||
from jinja2.debugrenderer import render_traceback
|
|
||||||
return u'%s\n\n<!--\n%s\n-->' % (
|
|
||||||
render_traceback(self, full=full),
|
|
||||||
self.render_as_text().decode('utf-8', 'replace')
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_template_syntax_error(self):
|
|
||||||
"""`True` if this is a template syntax error."""
|
|
||||||
return isinstance(self.exc_value, TemplateSyntaxError)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def exc_info(self):
|
|
||||||
"""Exception info tuple with a proxy around the frame objects."""
|
|
||||||
return self.exc_type, self.exc_value, self.frames[0]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def standard_exc_info(self):
|
|
||||||
"""Standard python exc_info for re-raising"""
|
|
||||||
tb = self.frames[0]
|
|
||||||
# the frame will be an actual traceback (or transparent proxy) if
|
|
||||||
# we are on pypy or a python implementation with support for tproxy
|
|
||||||
if type(tb) is not TracebackType:
|
|
||||||
tb = tb.tb
|
|
||||||
return self.exc_type, self.exc_value, tb
|
|
||||||
|
|
||||||
|
|
||||||
def make_traceback(exc_info, source_hint=None):
|
|
||||||
"""Creates a processed traceback object from the exc_info."""
|
|
||||||
exc_type, exc_value, tb = exc_info
|
|
||||||
if isinstance(exc_value, TemplateSyntaxError):
|
|
||||||
exc_info = translate_syntax_error(exc_value, source_hint)
|
|
||||||
initial_skip = 0
|
|
||||||
else:
|
|
||||||
initial_skip = 1
|
|
||||||
return translate_exception(exc_info, initial_skip)
|
|
||||||
|
|
||||||
|
|
||||||
def translate_syntax_error(error, source=None):
|
|
||||||
"""Rewrites a syntax error to please traceback systems."""
|
|
||||||
error.source = source
|
|
||||||
error.translated = True
|
|
||||||
exc_info = (error.__class__, error, None)
|
|
||||||
filename = error.filename
|
|
||||||
if filename is None:
|
|
||||||
filename = '<unknown>'
|
|
||||||
return fake_exc_info(exc_info, filename, error.lineno)
|
|
||||||
|
|
||||||
|
|
||||||
def translate_exception(exc_info, initial_skip=0):
|
|
||||||
"""If passed an exc_info it will automatically rewrite the exceptions
|
|
||||||
all the way down to the correct line numbers and frames.
|
|
||||||
"""
|
|
||||||
tb = exc_info[2]
|
|
||||||
frames = []
|
|
||||||
|
|
||||||
# skip some internal frames if wanted
|
|
||||||
for x in range(initial_skip):
|
|
||||||
if tb is not None:
|
|
||||||
tb = tb.tb_next
|
|
||||||
initial_tb = tb
|
|
||||||
|
|
||||||
while tb is not None:
|
|
||||||
# skip frames decorated with @internalcode. These are internal
|
|
||||||
# calls we can't avoid and that are useless in template debugging
|
|
||||||
# output.
|
|
||||||
if tb.tb_frame.f_code in internal_code:
|
|
||||||
tb = tb.tb_next
|
|
||||||
continue
|
|
||||||
|
|
||||||
# save a reference to the next frame if we override the current
|
|
||||||
# one with a faked one.
|
|
||||||
next = tb.tb_next
|
|
||||||
|
|
||||||
# fake template exceptions
|
|
||||||
template = tb.tb_frame.f_globals.get('__jinja_template__')
|
|
||||||
if template is not None:
|
|
||||||
lineno = template.get_corresponding_lineno(tb.tb_lineno)
|
|
||||||
tb = fake_exc_info(exc_info[:2] + (tb,), template.filename,
|
|
||||||
lineno)[2]
|
|
||||||
|
|
||||||
frames.append(make_frame_proxy(tb))
|
|
||||||
tb = next
|
|
||||||
|
|
||||||
# if we don't have any exceptions in the frames left, we have to
|
|
||||||
# reraise it unchanged.
|
|
||||||
# XXX: can we backup here? when could this happen?
|
|
||||||
if not frames:
|
|
||||||
reraise(exc_info[0], exc_info[1], exc_info[2])
|
|
||||||
|
|
||||||
return ProcessedTraceback(exc_info[0], exc_info[1], frames)
|
|
||||||
|
|
||||||
|
|
||||||
def fake_exc_info(exc_info, filename, lineno):
|
|
||||||
"""Helper for `translate_exception`."""
|
|
||||||
exc_type, exc_value, tb = exc_info
|
|
||||||
|
|
||||||
# figure the real context out
|
|
||||||
if tb is not None:
|
|
||||||
real_locals = tb.tb_frame.f_locals.copy()
|
|
||||||
ctx = real_locals.get('context')
|
|
||||||
if ctx:
|
|
||||||
locals = ctx.get_all()
|
|
||||||
else:
|
|
||||||
locals = {}
|
|
||||||
for name, value in iteritems(real_locals):
|
|
||||||
if name.startswith('l_') and value is not missing:
|
|
||||||
locals[name[2:]] = value
|
|
||||||
|
|
||||||
# if there is a local called __jinja_exception__, we get
|
|
||||||
# rid of it to not break the debug functionality.
|
|
||||||
locals.pop('__jinja_exception__', None)
|
|
||||||
else:
|
|
||||||
locals = {}
|
|
||||||
|
|
||||||
# assamble fake globals we need
|
|
||||||
globals = {
|
|
||||||
'__name__': filename,
|
|
||||||
'__file__': filename,
|
|
||||||
'__jinja_exception__': exc_info[:2],
|
|
||||||
|
|
||||||
# we don't want to keep the reference to the template around
|
|
||||||
# to not cause circular dependencies, but we mark it as Jinja
|
|
||||||
# frame for the ProcessedTraceback
|
|
||||||
'__jinja_template__': None
|
|
||||||
}
|
|
||||||
|
|
||||||
# and fake the exception
|
|
||||||
code = compile('\n' * (lineno - 1) + raise_helper, filename, 'exec')
|
|
||||||
|
|
||||||
# if it's possible, change the name of the code. This won't work
|
|
||||||
# on some python environments such as google appengine
|
|
||||||
try:
|
|
||||||
if tb is None:
|
|
||||||
location = 'template'
|
|
||||||
else:
|
|
||||||
function = tb.tb_frame.f_code.co_name
|
|
||||||
if function == 'root':
|
|
||||||
location = 'top-level template code'
|
|
||||||
elif function.startswith('block_'):
|
|
||||||
location = 'block "%s"' % function[6:]
|
|
||||||
else:
|
|
||||||
location = 'template'
|
|
||||||
code = code_type(0, code.co_nlocals, code.co_stacksize,
|
|
||||||
code.co_flags, code.co_code, code.co_consts,
|
|
||||||
code.co_names, code.co_varnames, filename,
|
|
||||||
location, code.co_firstlineno,
|
|
||||||
code.co_lnotab, (), ())
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# execute the code and catch the new traceback
|
|
||||||
try:
|
|
||||||
exec(code, globals, locals)
|
|
||||||
except:
|
|
||||||
exc_info = sys.exc_info()
|
|
||||||
new_tb = exc_info[2].tb_next
|
|
||||||
|
|
||||||
# return without this frame
|
|
||||||
return exc_info[:2] + (new_tb,)
|
|
||||||
|
|
||||||
|
|
||||||
def _init_ugly_crap():
|
|
||||||
"""This function implements a few ugly things so that we can patch the
|
|
||||||
traceback objects. The function returned allows resetting `tb_next` on
|
|
||||||
any python traceback object. Do not attempt to use this on non cpython
|
|
||||||
interpreters
|
|
||||||
"""
|
|
||||||
import ctypes
|
|
||||||
from types import TracebackType
|
|
||||||
|
|
||||||
# figure out side of _Py_ssize_t
|
|
||||||
if hasattr(ctypes.pythonapi, 'Py_InitModule4_64'):
|
|
||||||
_Py_ssize_t = ctypes.c_int64
|
|
||||||
else:
|
|
||||||
_Py_ssize_t = ctypes.c_int
|
|
||||||
|
|
||||||
# regular python
|
|
||||||
class _PyObject(ctypes.Structure):
|
|
||||||
pass
|
|
||||||
_PyObject._fields_ = [
|
|
||||||
('ob_refcnt', _Py_ssize_t),
|
|
||||||
('ob_type', ctypes.POINTER(_PyObject))
|
|
||||||
]
|
|
||||||
|
|
||||||
# python with trace
|
|
||||||
if hasattr(sys, 'getobjects'):
|
|
||||||
class _PyObject(ctypes.Structure):
|
|
||||||
pass
|
|
||||||
_PyObject._fields_ = [
|
|
||||||
('_ob_next', ctypes.POINTER(_PyObject)),
|
|
||||||
('_ob_prev', ctypes.POINTER(_PyObject)),
|
|
||||||
('ob_refcnt', _Py_ssize_t),
|
|
||||||
('ob_type', ctypes.POINTER(_PyObject))
|
|
||||||
]
|
|
||||||
|
|
||||||
class _Traceback(_PyObject):
|
|
||||||
pass
|
|
||||||
_Traceback._fields_ = [
|
|
||||||
('tb_next', ctypes.POINTER(_Traceback)),
|
|
||||||
('tb_frame', ctypes.POINTER(_PyObject)),
|
|
||||||
('tb_lasti', ctypes.c_int),
|
|
||||||
('tb_lineno', ctypes.c_int)
|
|
||||||
]
|
|
||||||
|
|
||||||
def tb_set_next(tb, next):
|
|
||||||
"""Set the tb_next attribute of a traceback object."""
|
|
||||||
if not (isinstance(tb, TracebackType) and
|
|
||||||
(next is None or isinstance(next, TracebackType))):
|
|
||||||
raise TypeError('tb_set_next arguments must be traceback objects')
|
|
||||||
obj = _Traceback.from_address(id(tb))
|
|
||||||
if tb.tb_next is not None:
|
|
||||||
old = _Traceback.from_address(id(tb.tb_next))
|
|
||||||
old.ob_refcnt -= 1
|
|
||||||
if next is None:
|
|
||||||
obj.tb_next = ctypes.POINTER(_Traceback)()
|
|
||||||
else:
|
|
||||||
next = _Traceback.from_address(id(next))
|
|
||||||
next.ob_refcnt += 1
|
|
||||||
obj.tb_next = ctypes.pointer(next)
|
|
||||||
|
|
||||||
return tb_set_next
|
|
||||||
|
|
||||||
|
|
||||||
# try to get a tb_set_next implementation if we don't have transparent
|
|
||||||
# proxies.
|
|
||||||
tb_set_next = None
|
|
||||||
if tproxy is None:
|
|
||||||
try:
|
|
||||||
tb_set_next = _init_ugly_crap()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
del _init_ugly_crap
|
|
||||||
Vendored
-43
@@ -1,43 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2.defaults
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Jinja default filters and tags.
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
from jinja2._compat import range_type
|
|
||||||
from jinja2.utils import generate_lorem_ipsum, Cycler, Joiner
|
|
||||||
|
|
||||||
|
|
||||||
# defaults for the parser / lexer
|
|
||||||
BLOCK_START_STRING = '{%'
|
|
||||||
BLOCK_END_STRING = '%}'
|
|
||||||
VARIABLE_START_STRING = '{{'
|
|
||||||
VARIABLE_END_STRING = '}}'
|
|
||||||
COMMENT_START_STRING = '{#'
|
|
||||||
COMMENT_END_STRING = '#}'
|
|
||||||
LINE_STATEMENT_PREFIX = None
|
|
||||||
LINE_COMMENT_PREFIX = None
|
|
||||||
TRIM_BLOCKS = False
|
|
||||||
LSTRIP_BLOCKS = False
|
|
||||||
NEWLINE_SEQUENCE = '\n'
|
|
||||||
KEEP_TRAILING_NEWLINE = False
|
|
||||||
|
|
||||||
|
|
||||||
# default filters, tests and namespace
|
|
||||||
from jinja2.filters import FILTERS as DEFAULT_FILTERS
|
|
||||||
from jinja2.tests import TESTS as DEFAULT_TESTS
|
|
||||||
DEFAULT_NAMESPACE = {
|
|
||||||
'range': range_type,
|
|
||||||
'dict': lambda **kw: kw,
|
|
||||||
'lipsum': generate_lorem_ipsum,
|
|
||||||
'cycler': Cycler,
|
|
||||||
'joiner': Joiner
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# export all constants
|
|
||||||
__all__ = tuple(x for x in locals().keys() if x.isupper())
|
|
||||||
Vendored
-1191
File diff suppressed because it is too large
Load Diff
Vendored
-146
@@ -1,146 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
jinja2.exceptions
|
|
||||||
~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Jinja exceptions.
|
|
||||||
|
|
||||||
:copyright: (c) 2010 by the Jinja Team.
|
|
||||||
:license: BSD, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
from jinja2._compat import imap, text_type, PY2, implements_to_string
|
|
||||||
|
|
||||||
|
|
||||||
class TemplateError(Exception):
|
|
||||||
"""Baseclass for all template errors."""
|
|
||||||
|
|
||||||
if PY2:
|
|
||||||
def __init__(self, message=None):
|
|
||||||
if message is not None:
|
|
||||||
message = text_type(message).encode('utf-8')
|
|
||||||
Exception.__init__(self, message)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def message(self):
|
|
||||||
if self.args:
|
|
||||||
message = self.args[0]
|
|
||||||
if message is not None:
|
|
||||||
return message.decode('utf-8', 'replace')
|
|
||||||
|
|
||||||
def __unicode__(self):
|
|
||||||
return self.message or u''
|
|
||||||
else:
|
|
||||||
def __init__(self, message=None):
|
|
||||||
Exception.__init__(self, message)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def message(self):
|
|
||||||
if self.args:
|
|
||||||
message = self.args[0]
|
|
||||||
if message is not None:
|
|
||||||
return message
|
|
||||||
|
|
||||||
|
|
||||||
@implements_to_string
|
|
||||||
class TemplateNotFound(IOError, LookupError, TemplateError):
|
|
||||||
"""Raised if a template does not exist."""
|
|
||||||
|
|
||||||
# looks weird, but removes the warning descriptor that just
|
|
||||||
# bogusly warns us about message being deprecated
|
|
||||||
message = None
|
|
||||||
|
|
||||||
def __init__(self, name, message=None):
|
|
||||||
IOError.__init__(self)
|
|
||||||
if message is None:
|
|
||||||
message = name
|
|
||||||
self.message = message
|
|
||||||
self.name = name
|
|
||||||
self.templates = [name]
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.message
|
|
||||||
|
|
||||||
|
|
||||||
class TemplatesNotFound(TemplateNotFound):
|
|
||||||
"""Like :class:`TemplateNotFound` but raised if multiple templates
|
|
||||||
are selected. This is a subclass of :class:`TemplateNotFound`
|
|
||||||
exception, so just catching the base exception will catch both.
|
|
||||||
|
|
||||||
.. versionadded:: 2.2
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, names=(), message=None):
|
|
||||||
if message is None:
|
|
||||||
message = u'none of the templates given were found: ' + \
|
|
||||||
u', '.join(imap(text_type, names))
|
|
||||||
TemplateNotFound.__init__(self, names and names[-1] or None, message)
|
|
||||||
self.templates = list(names)
|
|
||||||
|
|
||||||
|
|
||||||
@implements_to_string
|
|
||||||
class TemplateSyntaxError(TemplateError):
|
|
||||||
"""Raised to tell the user that there is a problem with the template."""
|
|
||||||
|
|
||||||
def __init__(self, message, lineno, name=None, filename=None):
|
|
||||||
TemplateError.__init__(self, message)
|
|
||||||
self.lineno = lineno
|
|
||||||
self.name = name
|
|
||||||
self.filename = filename
|
|
||||||
self.source = None
|
|
||||||
|
|
||||||
# this is set to True if the debug.translate_syntax_error
|
|
||||||
# function translated the syntax error into a new traceback
|
|
||||||
self.translated = False
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
# for translated errors we only return the message
|
|
||||||
if self.translated:
|
|
||||||
return self.message
|
|
||||||
|
|
||||||
# otherwise attach some stuff
|
|
||||||
location = 'line %d' % self.lineno
|
|
||||||
name = self.filename or self.name
|
|
||||||
if name:
|
|
||||||
location = 'File "%s", %s' % (name, location)
|
|
||||||
lines = [self.message, ' ' + location]
|
|
||||||
|
|
||||||
# if the source is set, add the line to the output
|
|
||||||
if self.source is not None:
|
|
||||||
try:
|
|
||||||
line = self.source.splitlines()[self.lineno - 1]
|
|
||||||
except IndexError:
|
|
||||||
line = None
|
|
||||||
if line:
|
|
||||||
lines.append(' ' + line.strip())
|
|
||||||
|
|
||||||
return u'\n'.join(lines)
|
|
||||||
|
|
||||||
|
|
||||||
class TemplateAssertionError(TemplateSyntaxError):
|
|
||||||
"""Like a template syntax error, but covers cases where something in the
|
|
||||||
template caused an error at compile time that wasn't necessarily caused
|
|
||||||
by a syntax error. However it's a direct subclass of
|
|
||||||
:exc:`TemplateSyntaxError` and has the same attributes.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class TemplateRuntimeError(TemplateError):
|
|
||||||
"""A generic runtime error in the template engine. Under some situations
|
|
||||||
Jinja may raise this exception.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class UndefinedError(TemplateRuntimeError):
|
|
||||||
"""Raised if a template tries to operate on :class:`Undefined`."""
|
|
||||||
|
|
||||||
|
|
||||||
class SecurityError(TemplateRuntimeError):
|
|
||||||
"""Raised if a template tries to do something insecure if the
|
|
||||||
sandbox is enabled.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class FilterArgumentError(TemplateRuntimeError):
|
|
||||||
"""This error is raised if a filter was called with inappropriate
|
|
||||||
arguments
|
|
||||||
"""
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user