Full Code of pkuvcl/davs2 for AI

master b41cf117452e cached
114 files
4.2 MB
1.1M tokens
644 symbols
1 requests
Download .txt
Showing preview only (4,470K chars total). Download the full file or copy to clipboard to get everything.
Repository: pkuvcl/davs2
Branch: master
Commit: b41cf117452e
Files: 114
Total size: 4.2 MB

Directory structure:
gitextract_ha5u9txv/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── ----.md
│       ├── bug_report.md
│       └── feature_request.md
├── .gitignore
├── .travis.yml
├── COPYING
├── README.md
├── README.zh.md
├── appveyor.yml
├── build/
│   ├── linux/
│   │   ├── Makefile
│   │   ├── config.guess
│   │   ├── config.sub
│   │   └── configure
│   └── vs2013/
│       ├── DAVS2.sln
│       ├── davs2.vcxproj
│       ├── davs2.vcxproj.filters
│       ├── libdavs2.vcxproj
│       ├── libdavs2.vcxproj.filters
│       ├── libdavs2_asm.vcxproj
│       ├── libdavs2_asm.vcxproj.filters
│       ├── libdavs2_intrin_avx.vcxproj
│       ├── libdavs2_intrin_avx.vcxproj.filters
│       ├── libdavs2_intrin_sse.vcxproj
│       ├── libdavs2_intrin_sse.vcxproj.filters
│       ├── nasm.props
│       ├── nasm.targets
│       └── nasm.xml
├── source/
│   ├── common/
│   │   ├── aec.cc
│   │   ├── aec.h
│   │   ├── alf.cc
│   │   ├── alf.h
│   │   ├── bitstream.cc
│   │   ├── bitstream.h
│   │   ├── block_info.cc
│   │   ├── block_info.h
│   │   ├── common.cc
│   │   ├── common.h
│   │   ├── cpu.cc
│   │   ├── cpu.h
│   │   ├── cu.cc
│   │   ├── cu.h
│   │   ├── davs2.cc
│   │   ├── deblock.cc
│   │   ├── deblock.h
│   │   ├── decoder.cc
│   │   ├── decoder.h
│   │   ├── defines.h
│   │   ├── frame.cc
│   │   ├── frame.h
│   │   ├── header.cc
│   │   ├── header.h
│   │   ├── intra.cc
│   │   ├── intra.h
│   │   ├── mc.cc
│   │   ├── mc.h
│   │   ├── memory.cc
│   │   ├── osdep.h
│   │   ├── pixel.cc
│   │   ├── predict.cc
│   │   ├── predict.h
│   │   ├── primitives.cc
│   │   ├── primitives.h
│   │   ├── quant.cc
│   │   ├── quant.h
│   │   ├── sao.cc
│   │   ├── sao.h
│   │   ├── scantab.h
│   │   ├── threadpool.cc
│   │   ├── threadpool.h
│   │   ├── transform.cc
│   │   ├── transform.h
│   │   ├── vec/
│   │   │   ├── intrinsic.cc
│   │   │   ├── intrinsic.h
│   │   │   ├── intrinsic_alf.cc
│   │   │   ├── intrinsic_deblock.cc
│   │   │   ├── intrinsic_deblock_avx2.cc
│   │   │   ├── intrinsic_idct.cc
│   │   │   ├── intrinsic_idct_avx2.cc
│   │   │   ├── intrinsic_inter_pred.cc
│   │   │   ├── intrinsic_inter_pred_avx2.cc
│   │   │   ├── intrinsic_intra-filledge.cc
│   │   │   ├── intrinsic_intra-pred.cc
│   │   │   ├── intrinsic_intra-pred_avx2.cc
│   │   │   ├── intrinsic_pixel.cc
│   │   │   ├── intrinsic_pixel_avx.cc
│   │   │   ├── intrinsic_sao.cc
│   │   │   └── intrinsic_sao_avx2.cc
│   │   ├── vlc.h
│   │   ├── win32thread.cc
│   │   ├── win32thread.h
│   │   └── x86/
│   │       ├── blockcopy8.asm
│   │       ├── const-a.asm
│   │       ├── cpu-a.asm
│   │       ├── dct8.asm
│   │       ├── dct8.h
│   │       ├── ipfilter8.asm
│   │       ├── ipfilter8.h
│   │       ├── mc-a2.asm
│   │       ├── pixeladd8.asm
│   │       ├── quant8.asm
│   │       ├── x86inc.asm
│   │       └── x86util.asm
│   ├── configw.h
│   ├── davs2.h
│   └── test/
│       ├── getopt/
│       │   ├── getopt.c
│       │   └── getopt.h
│       ├── inputstream.h
│       ├── md5.h
│       ├── parse_args.h
│       ├── psnr.h
│       ├── test.c
│       └── utils.h
└── version.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
#common settings that generally should always be used with your language specific settings

# Auto detect text files and perform LF normalization
# http://davidlaing.com/2012/09/19/customise-your-gitattributes-to-become-a-git-ninja/
* text=auto

#
# The above will handle all files NOT found below
#

# Scripts
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
*.sh  text eol=lf

# Documents
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.ppt	 diff=astextplain
*.PPT	 diff=astextplain
*.pptx	 diff=astextplain
*.PPTX	 diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain
*.md text
*.adoc text
*.textile text
*.mustache text
*.csv text
*.tab text
*.tsv text
*.sql text

# Graphics
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.tif binary
*.tiff binary
*.ico binary
# SVG treated as an asset (binary) by default. If you want to treat it as text,
# comment-out the following line and uncomment the line after.
*.svg binary
#*.svg text
*.eps binary

#sources
*.c   text eol=crlf
*.cc  text eol=crlf
*.cxx text eol=crlf
*.cpp text eol=crlf
*.c++ text eol=crlf
*.hpp text eol=crlf
*.h   text eol=crlf
*.h++ text eol=crlf
*.hh  text eol=crlf
*.asm text eol=crlf
*.S   text eol=crlf
*.cfg text eol=crlf
*.txt text eol=lf

# QT Project files
*.pro text eol=lf

# Compiled Object files
*.slo binary
*.lo binary
*.o binary
*.obj binary

# Precompiled Headers
*.gch binary
*.pch binary

# Compiled Dynamic libraries
*.so binary
*.dylib binary
*.dll binary

# Compiled Static libraries
*.lai binary
*.la binary
*.a binary
*.lib binary

# Executables
*.exe binary
*.out binary
*.app binary

# Custom for Visual Studio
*.sln text eol=crlf
*.csproj text eol=crlf
*.vbproj text eol=crlf
*.fsproj text eol=crlf
*.dbproj text eol=crlf

*.vcproj  text eol=crlf
*.vcxproj text eol=crlf
*.sln     text eol=crlf
*.vcxitems text eol=crlf
*.props    text eol=crlf
*.filters  text eol=crlf


================================================
FILE: .github/ISSUE_TEMPLATE/----.md
================================================
---
name: 问题咨询
about: 使用问题/安全问题/其他问题

---

请发送邮件至: sswang@pku.edu.cn
或在应用内“高级设置” - “建议反馈” 填写表单


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report of bug / 如果你认为你发现了一项代码问题

---

**Describe the bug**

A clear and concise description of what the bug is.

请详细的描述这个bug的细节

**To Reproduce**

Steps to reproduce the behavior (including the commond line parameters)

请详细描述重现这个bug的步骤(运行的命令行参数、输入的文件)


**Expected behavior**

A clear and concise description of what you expected to happen.

你认为这个功能本应如何工作

**Screenshots**

If applicable, add screenshots to help explain your problem.

如果有可能,请提供截图

**Desktop (please complete the following information):**
 - OS: [e.g. Windows10, Ubuntu 18.04]
 - Compiler [e.g. Visual Studio 2013, GCC 5.6.0]
 - yasm [e.g. 1.2.0, 1.3.0-luofl]

你的操作系统(包括版本)、编译器(GCC/G++, VS)、汇编器yasm(版本号)。


**Additional context**

Add any other context about the problem here, i.e. video sequences and bitstreams.

额外的材料,例如输入的视频序列、码流文件等。


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project / 功能请求

---

请详细填写以下四项关键元素

## 功能描述

## 功能带来的效应

## 缺少此功能的影响

## 实现的思路与方式


================================================
FILE: .gitignore
================================================
Debug/
Release/
x64_Debug/
x64_Release/
build/linux/cavs2dec*
build/linux/davs2*
My*/
*.user
*.suo
*.ncb
*.aps
*.pdb
*.res
*.dat
*.manifest
*.map
*.dep
*.idb
*.ilk
*.htm
*.exp
*.lib
*.obj
*.dll*
*.exe
*.avs
*.mkv
*.mp4
*.y4m
*.yuv
*.log
*.bak
*.o
*.a
*.so
*.cd
*.sdf
*.opensdf
*.depend
*.pc
*.mak
*.so.*
*.dec
*.txt
config.h
*.iobj
*.ipdb
version.h



================================================
FILE: .travis.yml
================================================
language: c
dist: xenial

install:
  - wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz -O nasm-2.14.02.tar.gz
  - tar -xvf nasm-2.14.02.tar.gz
  - pushd nasm-2.14.02 && ./configure --prefix=/usr && make && sudo make install && popd

jobs:
  include:
   # General Linux build job
   - name: Build
     script:
     - cd build/linux
     - ./configure
     - make -j



================================================
FILE: COPYING
================================================
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

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 Program or any portion
of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
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 Program, 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 Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) 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; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, 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 executable.  However, as a
special exception, the source code 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.

If distribution of executable or 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 counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program 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.

  5. 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 Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program 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 to
this License.

  7. 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 Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program 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 Program.

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.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program 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.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies 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 Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, 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

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. 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 PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
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 program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year  name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.

This program is also available under a commercial proprietary license.
For more information, contact us at sswang @ pku.edu.cn.


================================================
FILE: README.md
================================================
# davs2
**davs2** is an open-source decoder of `AVS2-P2/IEEE1857.4` video coding standard.

An encoder, **xavs2**, can be found at [Github][2] or  [Gitee (mirror in China)][3].

[![GitHub tag](https://img.shields.io/github/tag/pkuvcl/davs2.svg?style=plastic)]()
[![GitHub issues](https://img.shields.io/github/issues/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/issues)
[![GitHub forks](https://img.shields.io/github/forks/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/network)
[![GitHub stars](https://img.shields.io/github/stars/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/stargazers)

Linux(Ubuntu-16.04):[![Travis Build Status](https://travis-ci.org/pkuvcl/davs2.svg?branch=master)](https://travis-ci.org/pkuvcl/davs2)
Windows(VS2013):[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/pq0b5mnc6mig6ryp?svg=true)](https://ci.appveyor.com/project/luofalei/davs2/build/artifacts)

Stargazers over time
[![Stargazers over time](https://starcharts.herokuapp.com/pkuvcl/davs2.svg)](https://starcharts.herokuapp.com/pkuvcl/davs2)

## Compile it
### Windows
Use VS2013 or latest version of  visual studio open the `./build/vs2013/davs2.sln` solution
 and set the `davs2` as the start project.

#### Notes
1. A `shell executor`, i.e. the bash in git for windows, is needed and should be found in `PATH` variable.
 For example, the path `C:\Program Files\Git\bin` can be added if git-for-windows is installed.
2. `nasm.exe` with version `2.13` (or later version) is needed and should be put into the `PATH` directory.
 For windows platform, you can downloaded the packege and unpack the zip file to get `nasm.exe`:
https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip

### Linux
```
$ cd build/linux
$ ./configure
$ make
```

## Try it

Decode AVS2 stream `test.avs` with `1` thread and output to a *YUV file* named `dec.yuv`.
```
./davs2 -i test.avs -t 1 -o dec.yuv
```

Decode AVS2 stream `test.avs` and display the decoding result via *ffplay*.
```
./davs2 -i test.avs -t 1 -o stdout | ffplay -i -
```

### Parameter Instructions
|  Parameter       |   Alias     |   Result  |
| :--------:       | :---------: | :--------------: |
| --input=test.avs | -i test.avs |  Setting the input bitstream file |
| --output=dec.yuv | -o dec.yuv  |  Setting the output YUV file |
| --psnr=rec.yuv   | -r rec.yuv  |  Setting the reference reconstruction YUV file |
| --threads=N      | -t N        |  Setting the threads for decoding (default: 1) |
| --md5=M          | -m M        |  Reference MD5, used to check whether the output YUV is right |
| --verbose        | -v          |  Enable decoding status every frame (Default: Enabled) |
| --help           | -h          |  Showing this instruction |

## Issue and Pull Request

[Issues should be reported here][6]。

If you have some bugs fixed or features implemented, and would like to share with the public, please [make a Pull Request][7].

## Homepages

[PKU-VCL][1]

`AVS2-P2/IEEE1857.4` Encoder: [xavs2 (Github)][2], [xavs2 (mirror in China)][3]

`AVS2-P2/IEEE1857.4` Decoder: [davs2 (Github)][4], [davs2 (mirror in China)][5]

  [1]: http://vcl.idm.pku.edu.cn/ "PKU-VCL"
  [2]: https://github.com/pkuvcl/xavs2 "xavs2 github repository"
  [3]: https://gitee.com/pkuvcl/xavs2 "xavs2 gitee repository"
  [4]: https://github.com/pkuvcl/davs2 "davs2 decoder@github"
  [5]: https://gitee.com/pkuvcl/davs2 "davs2 decoder@gitee"
  [6]: https://github.com/pkuvcl/davs2/issues "report issues"
  [7]: https://github.com/pkuvcl/davs2/pulls "pull request"


================================================
FILE: README.zh.md
================================================
# davs2

遵循 `AVS2-P2/IEEE1857.4` 视频编码标准的解码器. 

对应的编码器 **xavs2** 可在 [Github][2] 或 [Gitee (mirror in China)][3] 上找到.

[![GitHub tag](https://img.shields.io/github/tag/pkuvcl/davs2.svg?style=plastic)]()
[![GitHub issues](https://img.shields.io/github/issues/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/issues)
[![GitHub forks](https://img.shields.io/github/forks/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/network)
[![GitHub stars](https://img.shields.io/github/stars/pkuvcl/davs2.svg)](https://github.com/pkuvcl/davs2/stargazers)

Linux(Ubuntu-16.04):[![Travis Build Status](https://travis-ci.org/pkuvcl/davs2.svg?branch=master)](https://travis-ci.org/pkuvcl/davs2)
Windows(VS2013):[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/pq0b5mnc6mig6ryp?svg=true)](https://ci.appveyor.com/project/luofalei/davs2/build/artifacts)

[![Stargazers over time](https://starcharts.herokuapp.com/pkuvcl/davs2.svg)](https://starcharts.herokuapp.com/pkuvcl/davs2)

## 编译方法
### Windows

可使用`VS2013`打开解决方案`./build/win32/DAVS2.sln`进行编译, 也可以使用更新的vs版本打开上述解决方案.
打开解决方案后, 将工程`davs2`设置为启动项, 进行编译即可. 

#### 注意
1. 首次编译本项目时, 需要安装一个 `shell 执行器`, 比如 `git-for-windows` 中的 `bash`, 
 需要将该 `bash` 所在的目录添加到系统环境变量 `PATH` 中.
 如上所述, 如果您以默认配置安装了`git-for-windows`, 
 那么将 `C:\Program Files\Git\bin` 添加到环境变量中即可.
2. 需将 `nasm.exe`放入到系统 `PATH` 目录, `nasm`版本号需为`2.13`或更新.
  对于`windows`平台,可下载如下压缩包中,解压得到`nasm.exe`.
https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip

### Linux

对于linux系统, 依次执行如下命令即可完成编译:
```
$ cd build/linux
$ ./configure
$ make
```

## 运行和测试

使用`1`个线程解码AVS2码流文件`test.avs`并将结果输出成YUV文件`dec.yuv`:
```
./davs2 -i test.avs -t 1 -o dec.yuv
```

解码AVS2码流文件`test.avs`并用ffplay播放显示:
```
./davs2 -i test.avs -t 1 -o stdout | ffplay -i -
```

### 参数说明
|       参数       |  等价形式   |   意义           |
| :--------:       | :---------: | :--------------: |
| --input=test.avs | -i test.avs |  设置输入码流文件路径 |
| --output=dec.yuv | -o dec.yuv  |  设置输出解码YUV文件路径 |
| --psnr=rec.yuv   | -r rec.yuv  |  设置参考用YUV文件路径, 用于计算PSNR以确定是否匹配 |
| --threads=N      | -t N        |  设置解码线程数 (默认值: 1) |
| --md5=M          | -m M        |  设置参考MD5值, 用于验证输出的重构YUV是否匹配 |
| --verbose        | -v          |  设置每帧是否输出 (默认: 开启) |
| --help           | -h          |  显示此输出命令 |

## Issue & Pull Request

欢迎提交 issue,请写清楚遇到问题的环境与运行参数,包括操作系统环境、编译器环境等。
如果可能提供原始输入`YUV/码流文件`,请尽量提供以方便更快地重现结果。

[反馈问题的 issue 请按照模板格式填写][6]。

如果有开发能力,建议在本地调试出错的代码,并[提供相应修正的 Pull Request][7]。

## 主页链接

[北京大学-视频编码算法研究室(PKU-VCL)][1]

`AVS2-P2/IEEE1857.4` Encoder: [xavs2 (Github)][2], [xavs2 (mirror in China)][3]

`AVS2-P2/IEEE1857.4` Decoder: [davs2 (Github)][4], [davs2 (mirror in China)][5]

  [1]: http://vcl.idm.pku.edu.cn/ "PKU-VCL"
  [2]: https://github.com/pkuvcl/xavs2 "xavs2 github repository"
  [3]: https://gitee.com/pkuvcl/xavs2 "xavs2 gitee repository"
  [4]: https://github.com/pkuvcl/davs2 "davs2 decoder@github"
  [5]: https://gitee.com/pkuvcl/davs2 "davs2 decoder@gitee"
  [6]: https://github.com/pkuvcl/davs2/issues "report issues"
  [7]: https://github.com/pkuvcl/davs2/pulls "pull request"


================================================
FILE: appveyor.yml
================================================
image: Visual Studio 2015
configuration: Release

platform:
  - x64

install:
    - git submodule update --init
    - appveyor DownloadFile https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip -FileName nasm.zip
    - ps: Expand-Archive -Path nasm.zip -DestinationPath build/vs2013 -Force:$true
    - set PATH=%PATH%;%APPVEYOR_BUILD_FOLDER%/build/vs2013/nasm-2.14.02

build:
  project: build\vs2013\DAVS2.sln

artifacts:
    - path: build\bin\x64_Release\*.* 
      name: $(APPVEYOR_PROJECT_NAME)


================================================
FILE: build/linux/Makefile
================================================
# Makefile

include config.mak

vpath %.cc $(SRCPATH)
vpath %.c $(SRCPATH)
vpath %.h $(SRCPATH)
vpath %.S $(SRCPATH)
vpath %.asm $(SRCPATH)
vpath %.rc $(SRCPATH)
CFLAGS += -I$(SRCPATH) -I$(SRCPATH)/.. \
			-I$(SRCPATH)/x86 \
			-I$(SRCPATH)/vec

GENERATED =

all: default
default:

SRCS  = common/aec.cc    common/alf.cc \
		common/bitstream.cc common/block_info.cc \
		common/common.cc common/davs2.cc common/cpu.cc common/cu.cc \
		common/deblock.cc common/decoder.cc \
		common/frame.cc  common/header.cc \
		common/intra.cc common/mc.cc \
		common/memory.cc \
		common/pixel.cc common/predict.cc \
		common/quant.cc \
		common/sao.cc common/transform.cc \
		common/primitives.cc \
		common/threadpool.cc common/win32thread.cc

SRCCLI = test/test.c

SRCSO =
OBJS =
OBJAVX =
OBJSO =
OBJCLI =

#OBJCHK = tools/checkasm.o

## CONFIG: $(shell cat config.h)
## 
## ifneq ($(findstring HAVE_THREAD 1, $(CONFIG)),)
## SRCS    += common/threadpool.cc
## endif
## ifneq ($(findstring HAVE_WIN32THREAD 1, $(CONFIG)),)
## SRCS    += common/win32thread.cc
## endif

# MMX/SSE optims
ifneq ($(AS),)
# asm --------------------------------------------------------------
X86SRC = common/x86/const-a.asm \
				common/x86/blockcopy8.asm \
				common/x86/cpu-a.asm \
				common/x86/dct8.asm \
				common/x86/mc-a2.asm \
				common/x86/pixeladd8.asm \
				common/x86/quant8.asm

ifeq ($(SYS_ARCH),X86)
ARCH_X86 = yes
ASMSRC   = $(X86SRC) 
endif

## Until now, we do not have 64-bit asm
ifeq ($(SYS_ARCH),X86_64)
ARCH_X86 = yes
SRCS     += common/vec/intrinsic.cc \
			common/vec/intrinsic_alf.cc \
			common/vec/intrinsic_sao.cc \
			common/vec/intrinsic_deblock.cc \
			common/vec/intrinsic_intra-filledge.cc \
			common/vec/intrinsic_intra-pred.cc \
			common/vec/intrinsic_inter_pred.cc \
			common/vec/intrinsic_idct.cc \
			common/vec/intrinsic_pixel.cc

SRCSAVX = common/vec/intrinsic_sao_avx2.cc \
		  common/vec/intrinsic_deblock_avx2.cc \
		  common/vec/intrinsic_intra-pred_avx2.cc \
		  common/vec/intrinsic_inter_pred_avx2.cc \
		  common/vec/intrinsic_pixel_avx.cc \
		  common/vec/intrinsic_idct_avx2.cc

CFLAGS += -mmmx -msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2 -msse4a -mssse3 -mavx
# ASMSRC   = $(X86SRC:-32.asm=-64.asm)
ASMSRC   = $(X86SRC)
ASFLAGS += -DARCH_X86_64=1
OBJASM  = $(ASMSRC:%.asm=%.o)
$(OBJASM): common/x86/x86inc.asm common/x86/x86util.asm
endif

ifdef ARCH_X86
ASFLAGS += -I$(SRCPATH)/x86/
#SRCS    += x86/mc-c.cc x86/predict-c.cc
OBJASM  = $(ASMSRC:%.asm=%.o)
$(OBJASM): common/x86/x86inc.asm common/x86/x86util.asm
endif

# AltiVec optims
ifeq ($(SYS_ARCH),PPC)
SRCS += common/ppc/mc.cc common/ppc/pixel.cc common/ppc/dct.cc \
        common/ppc/quant.cc common/ppc/deblock.cc \
        common/ppc/predict.cc
endif

# NEON optims
ifeq ($(SYS_ARCH),ARM)
# x264 ARM asm sources
# ASMSRC += common/arm/cpu-a.S common/arm/pixel-a.S common/arm/mc-a.S \
#           common/arm/dct-a.S common/arm/quant-a.S common/arm/deblock-a.S \
#           common/arm/predict-a.S common/arm/bitstream-a.S
# SRCS   += common/arm/mc-c.cc common/arm/predict-c.cc
# x265 ARM asm sources
ASMSRC += common/arm/blockcopy8.S common/arm/cpu-a.S common/arm/dct-a.S \
          common/arm/ipfilter8.S common/arm/mc-a.S common/arm/pixel-util.S \
          common/arm/sad-a.S common/arm/ssd-a.S
OBJASM  = $(ASMSRC:%.S=%.o)
endif

# AArch64 NEON optims
ifeq ($(SYS_ARCH),AARCH64)
ASMSRC += common/aarch64/bitstream-a.S \
          common/aarch64/cabac-a.S     \
          common/aarch64/dct-a.S     \
          common/aarch64/deblock-a.S \
          common/aarch64/mc-a.S      \
          common/aarch64/pixel-a.S   \
          common/aarch64/predict-a.S \
          common/aarch64/quant-a.S
SRCS   += common/aarch64/asm-offsets.cc \
          common/aarch64/mc-c.cc        \
          common/aarch64/predict-c.cc
OBJASM  = $(ASMSRC:%.S=%.o)
OBJCHK += tools/checkasm-aarch64.o
endif

# MSA optims
ifeq ($(SYS_ARCH),MIPS)
ifneq ($(findstring HAVE_MSA 1, $(CONFIG)),)
SRCS += common/mips/mc-c.cc common/mips/dct-c.cc \
        common/mips/deblock-c.cc common/mips/pixel-c.cc \
        common/mips/predict-c.cc common/mips/quant-c.cc
endif
endif

# asm --------------------------------------------------------------
endif 
# here ends ifneq ($(AS),)

ifneq ($(HAVE_GETOPT_LONG),1)
SRCS += compat/getopt/getopt.cc
endif

## Windows Dll
## ifeq ($(SYS), WINDOWS)
## # OBJCLI += $(if $(RC), davs2res.o)
## ifneq ($(SONAME),)
## SRCSO   += davs2dll.cc
## OBJSO   += $(if $(RC), davs2res.dll.o)
## endif
## endif

OBJS   += $(SRCS:%.cc=%.o)
OBJAVX += $(SRCSAVX:%.cc=%.o)
OBJCLI += $(SRCCLI:%.c=%.o)
OBJSO  += $(SRCSO:%.cc=%.o)

.PHONY: all default fprofiled clean distclean install install-* uninstall cli lib-* etags

cli: davs2$(EXE)
lib-static: $(LIBDAVS2)
lib-shared: $(SONAME)

$(LIBDAVS2): $(GENERATED) .depend $(OBJS) $(OBJAVX) $(OBJASM)
	@echo "\033[33m [linking static] $(LIBDAVS2) \033[0m"
	rm -f $(LIBDAVS2)
	$(AR)$@ $(OBJS) $(OBJAVX) $(OBJASM)
	$(if $(RANLIB), $(RANLIB) $@)

$(SONAME): $(GENERATED) .depend $(OBJS) $(OBJAVX) $(OBJASM) $(OBJSO)
	@echo "\033[33m [linking shared] $(SONAME) \033[0m"
	$(LD)$@ $(OBJS) $(OBJAVX) $(OBJASM) $(OBJSO) $(SOFLAGS) $(LDFLAGS)

ifneq ($(EXE),)
.PHONY: davs2 checkasm
davs2: davs2$(EXE)
checkasm: checkasm$(EXE)
endif

davs2$(EXE): $(GENERATED) .depend $(OBJCLI) $(CLI_LIBDAVS2)
	@echo "\033[33m [linking execution] davs2$(EXE) \033[0m"
	$(LD)$@ $(OBJCLI) $(CLI_LIBDAVS2) $(LDFLAGSCLI) $(LDFLAGS)

checkasm$(EXE): $(GENERATED) .depend $(OBJCHK) $(LIBDAVS2)
	@echo "\033[33m [linking checkasm] checkasm$(EXE) \033[0m"
	$(LD)$@ $(OBJCHK) $(LIBDAVS2) $(LDFLAGS)

$(OBJS) $(OBJAVX) $(OBJASM) $(OBJSO) $(OBJCLI) $(OBJCHK): .depend

%.o: %.asm common/x86/x86inc.asm common/x86/x86util.asm
	@echo "\033[33m [Compiling asm]: $< \033[0m"
	$(AS) $(ASFLAGS) -o $@ $<
	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile

%.o: %.S
	@echo "\033[33m [Compiling asm]: $< \033[0m"
	$(AS) $(ASFLAGS) -o $@ $<
	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile

%.dll.o: %.rc davs2.h
	@echo "\033[33m [Compiling dll]: $< \033[0m"
	$(RC) $(RCFLAGS)$@ -DDLL $<

%.o: %.rc davs2.h
	@echo "\033[33m [Compiling rc]: $< \033[0m"
	$(RC) $(RCFLAGS)$@ $<

$(OBJAVX):
	@echo "\033[33m [Compiling]: $(@:.o=.cc) \033[0m"
	$(CC) $(CFLAGS) -mavx2 -c -o $@ $(SRCPATH)/$(@:.o=.cc)

%.o: %.cc
	@echo "\033[33m [Compiling]: $< \033[0m"
	$(CC) $(CFLAGS) -c -o $@ $<

%.o: %.c
	@echo "\033[33m [Compiling]: $< \033[0m"
	$(CC) $(CFLAGS) -c -o $@ $<

.depend: config.mak
	@rm -f .depend
	@echo "\033[33m dependency file generation... \033[0m"
ifeq ($(COMPILER),CL)
	@$(foreach SRC, $(addprefix $(SRCPATH)/, $(SRCS) $(SRCCLI) $(SRCSO)), $(SRCPATH)/tools/msvsdepend.sh "$(CC)" "$(CFLAGS)" "$(SRC)" "$(SRC:$(SRCPATH)/%.cc=%.o)" 1>> .depend;)
	@$(foreach SRC, $(addprefix $(SRCPATH)/, $(SRCSAVX)), $(SRCPATH)/tools/msvsdepend.sh "$(CC)" "$(CFLAGS)" "$(SRC)" "$(SRC:$(SRCPATH)/%.cc=%.o)" 1>> .depend;)
else
	@$(foreach SRC, $(addprefix $(SRCPATH)/, $(SRCS) $(SRCCLI) $(SRCSO)), $(CC) $(CFLAGS) $(SRC) $(DEPMT) $(SRC:$(SRCPATH)/%.cc=%.o) $(DEPMM) 1>> .depend;)
	@$(foreach SRC, $(addprefix $(SRCPATH)/, $(SRCSAVX)), $(CC) $(CFLAGS) $(SRC) $(DEPMT) $(SRC:$(SRCPATH)/%.cc=%.o) $(DEPMM) 1>> .depend;)
endif

config.mak:
	./configure

depend: .depend
ifneq ($(wildcard .depend),)
include .depend
endif

SRC2 = $(SRCS) $(SRCCLI)
# These should cover most of the important codepaths
OPT0 = --crf 30 -b1 -m1 -r1 --me dia --no-cabac --direct temporal --ssim --no-weightb
OPT1 = --crf 16 -b2 -m3 -r3 --me hex --no-8x8dct --direct spatial --no-dct-decimate -t0  --slice-max-mbs 50
OPT2 = --crf 26 -b4 -m5 -r2 --me hex --cqm jvt --nr 100 --psnr --no-mixed-refs --b-adapt 2 --slice-max-size 1500
OPT3 = --crf 18 -b3 -m9 -r5 --me umh -t1 -A all --b-pyramid normal --direct auto --no-fast-pskip --no-mbtree
OPT4 = --crf 22 -b3 -m7 -r4 --me esa -t2 -A all --psy-rd 1.0:1.0 --slices 4
OPT5 = --frames 50 --crf 24 -b3 -m10 -r3 --me tesa -t2
OPT6 = --frames 50 -q0 -m9 -r2 --me hex -Aall
OPT7 = --frames 50 -q0 -m2 -r1 --me hex --no-cabac

ifeq (,$(VIDS))
fprofiled:
	@echo 'usage: make fprofiled VIDS="infile1 infile2 ..."'
	@echo 'where infiles are anything that davs2 understands,'
	@echo 'i.e. YUV with resolution in the filename, y4m, or avisynth.'
else
fprofiled:
	$(MAKE) clean
	$(MAKE) davs2$(EXE) CFLAGS="$(CFLAGS) $(PROF_GEN_CC)" LDFLAGS="$(LDFLAGS) $(PROF_GEN_LD)"
	$(foreach V, $(VIDS), $(foreach I, 0 1 2 3 4 5 6 7, ./davs2$(EXE) $(OPT$I) --threads 1 $(V) -o $(DEVNULL) ;))
ifeq ($(COMPILER),CL)
# Because Visual Studio timestamps the object files within the PGD, it fails to build if they change - only the executable should be deleted
	rm -f davs2$(EXE)
else
	rm -f $(SRC2:%.cc=%.o)
endif
	$(MAKE) CFLAGS="$(CFLAGS) $(PROF_USE_CC)" LDFLAGS="$(LDFLAGS) $(PROF_USE_LD)"
	rm -f $(SRC2:%.cc=%.gcda) $(SRC2:%.cc=%.gcno) *.dyn pgopti.dpi pgopti.dpi.lock *.pgd *.pgc
endif

clean:
	rm -f $(OBJS) $(OBJASM) $(OBJCLI) $(OBJSO) $(SONAME) 
	rm -f *.a *.lib *.exp *.pdb libdavs2.so* davs2 davs2.exe .depend TAGS
	rm -f checkasm checkasm.exe $(OBJCHK) $(GENERATED) davs2_lookahead.cclbin
	rm -f example example.exe $(OBJEXAMPLE)
	rm -f $(SRC2:%.cc=%.gcda) $(SRC2:%.cc=%.gcno) *.dyn pgopti.dpi pgopti.dpi.lock *.pgd *.pgc

distclean: clean
	rm -f config.mak davs2_config.h config.h config.log davs2.pc davs2.def conftest*

install-cli: cli
	$(INSTALL) -d $(DESTDIR)$(bindir)
	$(INSTALL) davs2$(EXE) $(DESTDIR)$(bindir)

install-lib-dev:
	$(INSTALL) -d $(DESTDIR)$(includedir)
	$(INSTALL) -d $(DESTDIR)$(libdir)
	$(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
	$(INSTALL) -m 644 $(SRCPATH)/davs2.h $(DESTDIR)$(includedir)
	$(INSTALL) -m 644 davs2_config.h $(DESTDIR)$(includedir)
	$(INSTALL) -m 644 davs2.pc $(DESTDIR)$(libdir)/pkgconfig

install-lib-static: lib-static install-lib-dev
	$(INSTALL) -m 644 $(LIBDAVS2) $(DESTDIR)$(libdir)
	$(if $(RANLIB), $(RANLIB) $(DESTDIR)$(libdir)/$(LIBDAVS2))

install-lib-shared: lib-shared install-lib-dev
ifneq ($(IMPLIBNAME),)
	$(INSTALL) -d $(DESTDIR)$(bindir)
	$(INSTALL) -m 755 $(SONAME) $(DESTDIR)$(bindir)
	$(INSTALL) -m 644 $(IMPLIBNAME) $(DESTDIR)$(libdir)
else ifneq ($(SONAME),)
	ln -f -s $(SONAME) $(DESTDIR)$(libdir)/libdavs2.$(SOSUFFIX)
	$(INSTALL) -m 755 $(SONAME) $(DESTDIR)$(libdir)
endif

uninstall:
	rm -f $(DESTDIR)$(includedir)/davs2.h $(DESTDIR)$(includedir)/davs2_config.h $(DESTDIR)$(libdir)/libdavs2.a
	rm -f $(DESTDIR)$(bindir)/davs2$(EXE) $(DESTDIR)$(libdir)/pkgconfig/davs2.pc
ifneq ($(IMPLIBNAME),)
	rm -f $(DESTDIR)$(bindir)/$(SONAME) $(DESTDIR)$(libdir)/$(IMPLIBNAME)
else ifneq ($(SONAME),)
	rm -f $(DESTDIR)$(libdir)/$(SONAME) $(DESTDIR)$(libdir)/libdavs2.$(SOSUFFIX)
endif

etags: TAGS

TAGS:
	etags $(SRCS)


================================================
FILE: build/linux/config.guess
================================================
#! /bin/sh
# Attempt to guess a canonical system name.
#   Copyright 1992-2017 Free Software Foundation, Inc.

timestamp='2017-05-27'

# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program.  This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
# Please send patches to <config-patches@gnu.org>.


me=`echo "$0" | sed -e 's,.*/,,'`

usage="\
Usage: $0 [OPTION]

Output the configuration name of the system \`$me' is run on.

Operation modes:
  -h, --help         print this help, then exit
  -t, --time-stamp   print date of last modification, then exit
  -v, --version      print version number, then exit

Report bugs and patches to <config-patches@gnu.org>."

version="\
GNU config.guess ($timestamp)

Originally written by Per Bothner.
Copyright 1992-2017 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."

help="
Try \`$me --help' for more information."

# Parse command line
while test $# -gt 0 ; do
  case $1 in
    --time-stamp | --time* | -t )
       echo "$timestamp" ; exit ;;
    --version | -v )
       echo "$version" ; exit ;;
    --help | --h* | -h )
       echo "$usage"; exit ;;
    -- )     # Stop option processing
       shift; break ;;
    - )	# Use stdin as input.
       break ;;
    -* )
       echo "$me: invalid option $1$help" >&2
       exit 1 ;;
    * )
       break ;;
  esac
done

if test $# != 0; then
  echo "$me: too many arguments$help" >&2
  exit 1
fi

trap 'exit 1' 1 2 15

# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.

# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.

# Portable tmp directory creation inspired by the Autoconf team.

set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
 { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
 { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
 { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
 ,,)    echo "int x;" > $dummy.c ;
	for c in cc gcc c89 c99 ; do
	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
	     CC_FOR_BUILD="$c"; break ;
	  fi ;
	done ;
	if test x"$CC_FOR_BUILD" = x ; then
	  CC_FOR_BUILD=no_compiler_found ;
	fi
	;;
 ,,*)   CC_FOR_BUILD=$CC ;;
 ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
esac ; set_cc_for_build= ;'

# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
	PATH=$PATH:/.attbin ; export PATH
fi

UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown

case "${UNAME_SYSTEM}" in
Linux|GNU|GNU/*)
	# If the system lacks a compiler, then just pick glibc.
	# We could probably try harder.
	LIBC=gnu

	eval $set_cc_for_build
	cat <<-EOF > $dummy.c
	#include <features.h>
	#if defined(__UCLIBC__)
	LIBC=uclibc
	#elif defined(__dietlibc__)
	LIBC=dietlibc
	#else
	LIBC=gnu
	#endif
	EOF
	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
	;;
esac

# Note: order is significant - the case branches are not exclusive.

case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
    *:NetBSD:*:*)
	# NetBSD (nbsd) targets should (where applicable) match one or
	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
	# switched to ELF, *-*-netbsd* would select the old
	# object file format.  This provides both forward
	# compatibility and a consistent mechanism for selecting the
	# object file format.
	#
	# Note: NetBSD doesn't particularly care about the vendor
	# portion of the name.  We always set it to "unknown".
	sysctl="sysctl -n hw.machine_arch"
	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
	    /sbin/$sysctl 2>/dev/null || \
	    /usr/sbin/$sysctl 2>/dev/null || \
	    echo unknown)`
	case "${UNAME_MACHINE_ARCH}" in
	    armeb) machine=armeb-unknown ;;
	    arm*) machine=arm-unknown ;;
	    sh3el) machine=shl-unknown ;;
	    sh3eb) machine=sh-unknown ;;
	    sh5el) machine=sh5le-unknown ;;
	    earmv*)
		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
		machine=${arch}${endian}-unknown
		;;
	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
	esac
	# The Operating System including object format, if it has switched
	# to ELF recently (or will in the future) and ABI.
	case "${UNAME_MACHINE_ARCH}" in
	    earm*)
		os=netbsdelf
		;;
	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
		eval $set_cc_for_build
		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
			| grep -q __ELF__
		then
		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
		    # Return netbsd for either.  FIX?
		    os=netbsd
		else
		    os=netbsdelf
		fi
		;;
	    *)
		os=netbsd
		;;
	esac
	# Determine ABI tags.
	case "${UNAME_MACHINE_ARCH}" in
	    earm*)
		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
		;;
	esac
	# The OS release
	# Debian GNU/NetBSD machines have a different userland, and
	# thus, need a distinct triplet. However, they do not need
	# kernel version information, so it can be replaced with a
	# suitable tag, in the style of linux-gnu.
	case "${UNAME_VERSION}" in
	    Debian*)
		release='-gnu'
		;;
	    *)
		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
		;;
	esac
	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
	# contains redundant information, the shorter form:
	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
	echo "${machine}-${os}${release}${abi}"
	exit ;;
    *:Bitrig:*:*)
	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
	exit ;;
    *:OpenBSD:*:*)
	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
	exit ;;
    *:LibertyBSD:*:*)
	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
	exit ;;
    *:ekkoBSD:*:*)
	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
	exit ;;
    *:SolidBSD:*:*)
	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
	exit ;;
    macppc:MirBSD:*:*)
	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
	exit ;;
    *:MirBSD:*:*)
	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
	exit ;;
    *:Sortix:*:*)
	echo ${UNAME_MACHINE}-unknown-sortix
	exit ;;
    alpha:OSF1:*:*)
	case $UNAME_RELEASE in
	*4.0)
		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
		;;
	*5.*)
		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
		;;
	esac
	# According to Compaq, /usr/sbin/psrinfo has been available on
	# OSF/1 and Tru64 systems produced since 1995.  I hope that
	# covers most systems running today.  This code pipes the CPU
	# types through head -n 1, so we only detect the type of CPU 0.
	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
	case "$ALPHA_CPU_TYPE" in
	    "EV4 (21064)")
		UNAME_MACHINE=alpha ;;
	    "EV4.5 (21064)")
		UNAME_MACHINE=alpha ;;
	    "LCA4 (21066/21068)")
		UNAME_MACHINE=alpha ;;
	    "EV5 (21164)")
		UNAME_MACHINE=alphaev5 ;;
	    "EV5.6 (21164A)")
		UNAME_MACHINE=alphaev56 ;;
	    "EV5.6 (21164PC)")
		UNAME_MACHINE=alphapca56 ;;
	    "EV5.7 (21164PC)")
		UNAME_MACHINE=alphapca57 ;;
	    "EV6 (21264)")
		UNAME_MACHINE=alphaev6 ;;
	    "EV6.7 (21264A)")
		UNAME_MACHINE=alphaev67 ;;
	    "EV6.8CB (21264C)")
		UNAME_MACHINE=alphaev68 ;;
	    "EV6.8AL (21264B)")
		UNAME_MACHINE=alphaev68 ;;
	    "EV6.8CX (21264D)")
		UNAME_MACHINE=alphaev68 ;;
	    "EV6.9A (21264/EV69A)")
		UNAME_MACHINE=alphaev69 ;;
	    "EV7 (21364)")
		UNAME_MACHINE=alphaev7 ;;
	    "EV7.9 (21364A)")
		UNAME_MACHINE=alphaev79 ;;
	esac
	# A Pn.n version is a patched version.
	# A Vn.n version is a released version.
	# A Tn.n version is a released field test version.
	# A Xn.n version is an unreleased experimental baselevel.
	# 1.2 uses "1.2" for uname -r.
	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
	exitcode=$?
	trap '' 0
	exit $exitcode ;;
    Alpha\ *:Windows_NT*:*)
	# How do we know it's Interix rather than the generic POSIX subsystem?
	# Should we change UNAME_MACHINE based on the output of uname instead
	# of the specific Alpha model?
	echo alpha-pc-interix
	exit ;;
    21064:Windows_NT:50:3)
	echo alpha-dec-winnt3.5
	exit ;;
    Amiga*:UNIX_System_V:4.0:*)
	echo m68k-unknown-sysv4
	exit ;;
    *:[Aa]miga[Oo][Ss]:*:*)
	echo ${UNAME_MACHINE}-unknown-amigaos
	exit ;;
    *:[Mm]orph[Oo][Ss]:*:*)
	echo ${UNAME_MACHINE}-unknown-morphos
	exit ;;
    *:OS/390:*:*)
	echo i370-ibm-openedition
	exit ;;
    *:z/VM:*:*)
	echo s390-ibm-zvmoe
	exit ;;
    *:OS400:*:*)
	echo powerpc-ibm-os400
	exit ;;
    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
	echo arm-acorn-riscix${UNAME_RELEASE}
	exit ;;
    arm*:riscos:*:*|arm*:RISCOS:*:*)
	echo arm-unknown-riscos
	exit ;;
    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
	echo hppa1.1-hitachi-hiuxmpp
	exit ;;
    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
	if test "`(/bin/universe) 2>/dev/null`" = att ; then
		echo pyramid-pyramid-sysv3
	else
		echo pyramid-pyramid-bsd
	fi
	exit ;;
    NILE*:*:*:dcosx)
	echo pyramid-pyramid-svr4
	exit ;;
    DRS?6000:unix:4.0:6*)
	echo sparc-icl-nx6
	exit ;;
    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
	case `/usr/bin/uname -p` in
	    sparc) echo sparc-icl-nx7; exit ;;
	esac ;;
    s390x:SunOS:*:*)
	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    sun4H:SunOS:5.*:*)
	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
	echo i386-pc-auroraux${UNAME_RELEASE}
	exit ;;
    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
	eval $set_cc_for_build
	SUN_ARCH=i386
	# If there is a compiler, see if it is configured for 64-bit objects.
	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
	# This test works for both compilers.
	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
		grep IS_64BIT_ARCH >/dev/null
	    then
		SUN_ARCH=x86_64
	    fi
	fi
	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    sun4*:SunOS:6*:*)
	# According to config.sub, this is the proper way to canonicalize
	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
	# it's likely to be more like Solaris than SunOS4.
	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    sun4*:SunOS:*:*)
	case "`/usr/bin/arch -k`" in
	    Series*|S4*)
		UNAME_RELEASE=`uname -v`
		;;
	esac
	# Japanese Language versions have a version number like `4.1.3-JL'.
	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
	exit ;;
    sun3*:SunOS:*:*)
	echo m68k-sun-sunos${UNAME_RELEASE}
	exit ;;
    sun*:*:4.2BSD:*)
	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
	case "`/bin/arch`" in
	    sun3)
		echo m68k-sun-sunos${UNAME_RELEASE}
		;;
	    sun4)
		echo sparc-sun-sunos${UNAME_RELEASE}
		;;
	esac
	exit ;;
    aushp:SunOS:*:*)
	echo sparc-auspex-sunos${UNAME_RELEASE}
	exit ;;
    # The situation for MiNT is a little confusing.  The machine name
    # can be virtually everything (everything which is not
    # "atarist" or "atariste" at least should have a processor
    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
    # to the lowercase version "mint" (or "freemint").  Finally
    # the system name "TOS" denotes a system which is actually not
    # MiNT.  But MiNT is downward compatible to TOS, so this should
    # be no problem.
    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
	echo m68k-atari-mint${UNAME_RELEASE}
	exit ;;
    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
	echo m68k-atari-mint${UNAME_RELEASE}
	exit ;;
    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
	echo m68k-atari-mint${UNAME_RELEASE}
	exit ;;
    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
	echo m68k-milan-mint${UNAME_RELEASE}
	exit ;;
    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
	echo m68k-hades-mint${UNAME_RELEASE}
	exit ;;
    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
	echo m68k-unknown-mint${UNAME_RELEASE}
	exit ;;
    m68k:machten:*:*)
	echo m68k-apple-machten${UNAME_RELEASE}
	exit ;;
    powerpc:machten:*:*)
	echo powerpc-apple-machten${UNAME_RELEASE}
	exit ;;
    RISC*:Mach:*:*)
	echo mips-dec-mach_bsd4.3
	exit ;;
    RISC*:ULTRIX:*:*)
	echo mips-dec-ultrix${UNAME_RELEASE}
	exit ;;
    VAX*:ULTRIX*:*:*)
	echo vax-dec-ultrix${UNAME_RELEASE}
	exit ;;
    2020:CLIX:*:* | 2430:CLIX:*:*)
	echo clipper-intergraph-clix${UNAME_RELEASE}
	exit ;;
    mips:*:*:UMIPS | mips:*:*:RISCos)
	eval $set_cc_for_build
	sed 's/^	//' << EOF >$dummy.c
#ifdef __cplusplus
#include <stdio.h>  /* for printf() prototype */
	int main (int argc, char *argv[]) {
#else
	int main (argc, argv) int argc; char *argv[]; {
#endif
	#if defined (host_mips) && defined (MIPSEB)
	#if defined (SYSTYPE_SYSV)
	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
	#endif
	#if defined (SYSTYPE_SVR4)
	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
	#endif
	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
	#endif
	#endif
	  exit (-1);
	}
EOF
	$CC_FOR_BUILD -o $dummy $dummy.c &&
	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
	  SYSTEM_NAME=`$dummy $dummyarg` &&
	    { echo "$SYSTEM_NAME"; exit; }
	echo mips-mips-riscos${UNAME_RELEASE}
	exit ;;
    Motorola:PowerMAX_OS:*:*)
	echo powerpc-motorola-powermax
	exit ;;
    Motorola:*:4.3:PL8-*)
	echo powerpc-harris-powermax
	exit ;;
    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
	echo powerpc-harris-powermax
	exit ;;
    Night_Hawk:Power_UNIX:*:*)
	echo powerpc-harris-powerunix
	exit ;;
    m88k:CX/UX:7*:*)
	echo m88k-harris-cxux7
	exit ;;
    m88k:*:4*:R4*)
	echo m88k-motorola-sysv4
	exit ;;
    m88k:*:3*:R3*)
	echo m88k-motorola-sysv3
	exit ;;
    AViiON:dgux:*:*)
	# DG/UX returns AViiON for all architectures
	UNAME_PROCESSOR=`/usr/bin/uname -p`
	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
	then
	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
	       [ ${TARGET_BINARY_INTERFACE}x = x ]
	    then
		echo m88k-dg-dgux${UNAME_RELEASE}
	    else
		echo m88k-dg-dguxbcs${UNAME_RELEASE}
	    fi
	else
	    echo i586-dg-dgux${UNAME_RELEASE}
	fi
	exit ;;
    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
	echo m88k-dolphin-sysv3
	exit ;;
    M88*:*:R3*:*)
	# Delta 88k system running SVR3
	echo m88k-motorola-sysv3
	exit ;;
    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
	echo m88k-tektronix-sysv3
	exit ;;
    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
	echo m68k-tektronix-bsd
	exit ;;
    *:IRIX*:*:*)
	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
	exit ;;
    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
    i*86:AIX:*:*)
	echo i386-ibm-aix
	exit ;;
    ia64:AIX:*:*)
	if [ -x /usr/bin/oslevel ] ; then
		IBM_REV=`/usr/bin/oslevel`
	else
		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
	fi
	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
	exit ;;
    *:AIX:2:3)
	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
		eval $set_cc_for_build
		sed 's/^		//' << EOF >$dummy.c
		#include <sys/systemcfg.h>

		main()
			{
			if (!__power_pc())
				exit(1);
			puts("powerpc-ibm-aix3.2.5");
			exit(0);
			}
EOF
		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
		then
			echo "$SYSTEM_NAME"
		else
			echo rs6000-ibm-aix3.2.5
		fi
	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
		echo rs6000-ibm-aix3.2.4
	else
		echo rs6000-ibm-aix3.2
	fi
	exit ;;
    *:AIX:*:[4567])
	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
		IBM_ARCH=rs6000
	else
		IBM_ARCH=powerpc
	fi
	if [ -x /usr/bin/lslpp ] ; then
		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
	else
		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
	fi
	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
	exit ;;
    *:AIX:*:*)
	echo rs6000-ibm-aix
	exit ;;
    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
	echo romp-ibm-bsd4.4
	exit ;;
    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
	exit ;;                             # report: romp-ibm BSD 4.3
    *:BOSX:*:*)
	echo rs6000-bull-bosx
	exit ;;
    DPX/2?00:B.O.S.:*:*)
	echo m68k-bull-sysv3
	exit ;;
    9000/[34]??:4.3bsd:1.*:*)
	echo m68k-hp-bsd
	exit ;;
    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
	echo m68k-hp-bsd4.4
	exit ;;
    9000/[34678]??:HP-UX:*:*)
	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
	case "${UNAME_MACHINE}" in
	    9000/31? )            HP_ARCH=m68000 ;;
	    9000/[34]?? )         HP_ARCH=m68k ;;
	    9000/[678][0-9][0-9])
		if [ -x /usr/bin/getconf ]; then
		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
		    case "${sc_cpu_version}" in
		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
		      532)                      # CPU_PA_RISC2_0
			case "${sc_kernel_bits}" in
			  32) HP_ARCH=hppa2.0n ;;
			  64) HP_ARCH=hppa2.0w ;;
			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
			esac ;;
		    esac
		fi
		if [ "${HP_ARCH}" = "" ]; then
		    eval $set_cc_for_build
		    sed 's/^		//' << EOF >$dummy.c

		#define _HPUX_SOURCE
		#include <stdlib.h>
		#include <unistd.h>

		int main ()
		{
		#if defined(_SC_KERNEL_BITS)
		    long bits = sysconf(_SC_KERNEL_BITS);
		#endif
		    long cpu  = sysconf (_SC_CPU_VERSION);

		    switch (cpu)
			{
			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
			case CPU_PA_RISC2_0:
		#if defined(_SC_KERNEL_BITS)
			    switch (bits)
				{
				case 64: puts ("hppa2.0w"); break;
				case 32: puts ("hppa2.0n"); break;
				default: puts ("hppa2.0"); break;
				} break;
		#else  /* !defined(_SC_KERNEL_BITS) */
			    puts ("hppa2.0"); break;
		#endif
			default: puts ("hppa1.0"); break;
			}
		    exit (0);
		}
EOF
		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
		    test -z "$HP_ARCH" && HP_ARCH=hppa
		fi ;;
	esac
	if [ ${HP_ARCH} = hppa2.0w ]
	then
	    eval $set_cc_for_build

	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
	    # generating 64-bit code.  GNU and HP use different nomenclature:
	    #
	    # $ CC_FOR_BUILD=cc ./config.guess
	    # => hppa2.0w-hp-hpux11.23
	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
	    # => hppa64-hp-hpux11.23

	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
		grep -q __LP64__
	    then
		HP_ARCH=hppa2.0w
	    else
		HP_ARCH=hppa64
	    fi
	fi
	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
	exit ;;
    ia64:HP-UX:*:*)
	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
	echo ia64-hp-hpux${HPUX_REV}
	exit ;;
    3050*:HI-UX:*:*)
	eval $set_cc_for_build
	sed 's/^	//' << EOF >$dummy.c
	#include <unistd.h>
	int
	main ()
	{
	  long cpu = sysconf (_SC_CPU_VERSION);
	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
	     results, however.  */
	  if (CPU_IS_PA_RISC (cpu))
	    {
	      switch (cpu)
		{
		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
		  default: puts ("hppa-hitachi-hiuxwe2"); break;
		}
	    }
	  else if (CPU_IS_HP_MC68K (cpu))
	    puts ("m68k-hitachi-hiuxwe2");
	  else puts ("unknown-hitachi-hiuxwe2");
	  exit (0);
	}
EOF
	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
		{ echo "$SYSTEM_NAME"; exit; }
	echo unknown-hitachi-hiuxwe2
	exit ;;
    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
	echo hppa1.1-hp-bsd
	exit ;;
    9000/8??:4.3bsd:*:*)
	echo hppa1.0-hp-bsd
	exit ;;
    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
	echo hppa1.0-hp-mpeix
	exit ;;
    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
	echo hppa1.1-hp-osf
	exit ;;
    hp8??:OSF1:*:*)
	echo hppa1.0-hp-osf
	exit ;;
    i*86:OSF1:*:*)
	if [ -x /usr/sbin/sysversion ] ; then
	    echo ${UNAME_MACHINE}-unknown-osf1mk
	else
	    echo ${UNAME_MACHINE}-unknown-osf1
	fi
	exit ;;
    parisc*:Lites*:*:*)
	echo hppa1.1-hp-lites
	exit ;;
    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
	echo c1-convex-bsd
	exit ;;
    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
	if getsysinfo -f scalar_acc
	then echo c32-convex-bsd
	else echo c2-convex-bsd
	fi
	exit ;;
    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
	echo c34-convex-bsd
	exit ;;
    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
	echo c38-convex-bsd
	exit ;;
    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
	echo c4-convex-bsd
	exit ;;
    CRAY*Y-MP:*:*:*)
	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
	exit ;;
    CRAY*[A-Z]90:*:*:*)
	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
	      -e 's/\.[^.]*$/.X/'
	exit ;;
    CRAY*TS:*:*:*)
	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
	exit ;;
    CRAY*T3E:*:*:*)
	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
	exit ;;
    CRAY*SV1:*:*:*)
	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
	exit ;;
    *:UNICOS/mp:*:*)
	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
	exit ;;
    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
	exit ;;
    5000:UNIX_System_V:4.*:*)
	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
	exit ;;
    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
	exit ;;
    sparc*:BSD/OS:*:*)
	echo sparc-unknown-bsdi${UNAME_RELEASE}
	exit ;;
    *:BSD/OS:*:*)
	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
	exit ;;
    *:FreeBSD:*:*)
	UNAME_PROCESSOR=`/usr/bin/uname -p`
	case ${UNAME_PROCESSOR} in
	    amd64)
		UNAME_PROCESSOR=x86_64 ;;
	    i386)
		UNAME_PROCESSOR=i586 ;;
	esac
	echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
	exit ;;
    i*:CYGWIN*:*)
	echo ${UNAME_MACHINE}-pc-cygwin
	exit ;;
    *:MINGW64*:*)
	echo ${UNAME_MACHINE}-pc-mingw64
	exit ;;
    *:MINGW*:*)
	echo ${UNAME_MACHINE}-pc-mingw32
	exit ;;
    *:MSYS*:*)
	echo ${UNAME_MACHINE}-pc-msys
	exit ;;
    i*:windows32*:*)
	# uname -m includes "-pc" on this system.
	echo ${UNAME_MACHINE}-mingw32
	exit ;;
    i*:PW*:*)
	echo ${UNAME_MACHINE}-pc-pw32
	exit ;;
    *:Interix*:*)
	case ${UNAME_MACHINE} in
	    x86)
		echo i586-pc-interix${UNAME_RELEASE}
		exit ;;
	    authenticamd | genuineintel | EM64T)
		echo x86_64-unknown-interix${UNAME_RELEASE}
		exit ;;
	    IA64)
		echo ia64-unknown-interix${UNAME_RELEASE}
		exit ;;
	esac ;;
    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
	echo i${UNAME_MACHINE}-pc-mks
	exit ;;
    8664:Windows_NT:*)
	echo x86_64-pc-mks
	exit ;;
    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
	# How do we know it's Interix rather than the generic POSIX subsystem?
	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
	# UNAME_MACHINE based on the output of uname instead of i386?
	echo i586-pc-interix
	exit ;;
    i*:UWIN*:*)
	echo ${UNAME_MACHINE}-pc-uwin
	exit ;;
    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
	echo x86_64-unknown-cygwin
	exit ;;
    p*:CYGWIN*:*)
	echo powerpcle-unknown-cygwin
	exit ;;
    prep*:SunOS:5.*:*)
	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
	exit ;;
    *:GNU:*:*)
	# the GNU system
	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
	exit ;;
    *:GNU/*:*:*)
	# other systems with GNU libc and userland
	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
	exit ;;
    i*86:Minix:*:*)
	echo ${UNAME_MACHINE}-pc-minix
	exit ;;
    aarch64:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    aarch64_be:Linux:*:*)
	UNAME_MACHINE=aarch64_be
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    alpha:Linux:*:*)
	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
	  EV5)   UNAME_MACHINE=alphaev5 ;;
	  EV56)  UNAME_MACHINE=alphaev56 ;;
	  PCA56) UNAME_MACHINE=alphapca56 ;;
	  PCA57) UNAME_MACHINE=alphapca56 ;;
	  EV6)   UNAME_MACHINE=alphaev6 ;;
	  EV67)  UNAME_MACHINE=alphaev67 ;;
	  EV68*) UNAME_MACHINE=alphaev68 ;;
	esac
	objdump --private-headers /bin/sh | grep -q ld.so.1
	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    arc:Linux:*:* | arceb:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    arm*:Linux:*:*)
	eval $set_cc_for_build
	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
	    | grep -q __ARM_EABI__
	then
	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	else
	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
		| grep -q __ARM_PCS_VFP
	    then
		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
	    else
		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
	    fi
	fi
	exit ;;
    avr32*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    cris:Linux:*:*)
	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
	exit ;;
    crisv32:Linux:*:*)
	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
	exit ;;
    e2k:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    frv:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    hexagon:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    i*86:Linux:*:*)
	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
	exit ;;
    ia64:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    k1om:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    m32r*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    m68*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    mips:Linux:*:* | mips64:Linux:*:*)
	eval $set_cc_for_build
	sed 's/^	//' << EOF >$dummy.c
	#undef CPU
	#undef ${UNAME_MACHINE}
	#undef ${UNAME_MACHINE}el
	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
	CPU=${UNAME_MACHINE}el
	#else
	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
	CPU=${UNAME_MACHINE}
	#else
	CPU=
	#endif
	#endif
EOF
	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
	;;
    mips64el:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    openrisc*:Linux:*:*)
	echo or1k-unknown-linux-${LIBC}
	exit ;;
    or32:Linux:*:* | or1k*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    padre:Linux:*:*)
	echo sparc-unknown-linux-${LIBC}
	exit ;;
    parisc64:Linux:*:* | hppa64:Linux:*:*)
	echo hppa64-unknown-linux-${LIBC}
	exit ;;
    parisc:Linux:*:* | hppa:Linux:*:*)
	# Look for CPU level
	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
	  *)    echo hppa-unknown-linux-${LIBC} ;;
	esac
	exit ;;
    ppc64:Linux:*:*)
	echo powerpc64-unknown-linux-${LIBC}
	exit ;;
    ppc:Linux:*:*)
	echo powerpc-unknown-linux-${LIBC}
	exit ;;
    ppc64le:Linux:*:*)
	echo powerpc64le-unknown-linux-${LIBC}
	exit ;;
    ppcle:Linux:*:*)
	echo powerpcle-unknown-linux-${LIBC}
	exit ;;
    riscv32:Linux:*:* | riscv64:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    s390:Linux:*:* | s390x:Linux:*:*)
	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
	exit ;;
    sh64*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    sh*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    sparc:Linux:*:* | sparc64:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    tile*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    vax:Linux:*:*)
	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
	exit ;;
    x86_64:Linux:*:*)
	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
	exit ;;
    xtensa*:Linux:*:*)
	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
	exit ;;
    i*86:DYNIX/ptx:4*:*)
	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
	# earlier versions are messed up and put the nodename in both
	# sysname and nodename.
	echo i386-sequent-sysv4
	exit ;;
    i*86:UNIX_SV:4.2MP:2.*)
	# Unixware is an offshoot of SVR4, but it has its own version
	# number series starting with 2...
	# I am not positive that other SVR4 systems won't match this,
	# I just have to hope.  -- rms.
	# Use sysv4.2uw... so that sysv4* matches it.
	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
	exit ;;
    i*86:OS/2:*:*)
	# If we were able to find `uname', then EMX Unix compatibility
	# is probably installed.
	echo ${UNAME_MACHINE}-pc-os2-emx
	exit ;;
    i*86:XTS-300:*:STOP)
	echo ${UNAME_MACHINE}-unknown-stop
	exit ;;
    i*86:atheos:*:*)
	echo ${UNAME_MACHINE}-unknown-atheos
	exit ;;
    i*86:syllable:*:*)
	echo ${UNAME_MACHINE}-pc-syllable
	exit ;;
    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
	echo i386-unknown-lynxos${UNAME_RELEASE}
	exit ;;
    i*86:*DOS:*:*)
	echo ${UNAME_MACHINE}-pc-msdosdjgpp
	exit ;;
    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
	else
		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
	fi
	exit ;;
    i*86:*:5:[678]*)
	# UnixWare 7.x, OpenUNIX and OpenServer 6.
	case `/bin/uname -X | grep "^Machine"` in
	    *486*)	     UNAME_MACHINE=i486 ;;
	    *Pentium)	     UNAME_MACHINE=i586 ;;
	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
	esac
	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
	exit ;;
    i*86:*:3.2:*)
	if test -f /usr/options/cb.name; then
		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
	elif /bin/uname -X 2>/dev/null >/dev/null ; then
		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
			&& UNAME_MACHINE=i586
		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
			&& UNAME_MACHINE=i686
		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
			&& UNAME_MACHINE=i686
		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
	else
		echo ${UNAME_MACHINE}-pc-sysv32
	fi
	exit ;;
    pc:*:*:*)
	# Left here for compatibility:
	# uname -m prints for DJGPP always 'pc', but it prints nothing about
	# the processor, so we play safe by assuming i586.
	# Note: whatever this is, it MUST be the same as what config.sub
	# prints for the "djgpp" host, or else GDB configure will decide that
	# this is a cross-build.
	echo i586-pc-msdosdjgpp
	exit ;;
    Intel:Mach:3*:*)
	echo i386-pc-mach3
	exit ;;
    paragon:*:*:*)
	echo i860-intel-osf1
	exit ;;
    i860:*:4.*:*) # i860-SVR4
	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
	else # Add other i860-SVR4 vendors below as they are discovered.
	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
	fi
	exit ;;
    mini*:CTIX:SYS*5:*)
	# "miniframe"
	echo m68010-convergent-sysv
	exit ;;
    mc68k:UNIX:SYSTEM5:3.51m)
	echo m68k-convergent-sysv
	exit ;;
    M680?0:D-NIX:5.3:*)
	echo m68k-diab-dnix
	exit ;;
    M68*:*:R3V[5678]*:*)
	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
	OS_REL=''
	test -r /etc/.relid \
	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
	  && { echo i486-ncr-sysv4; exit; } ;;
    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
	OS_REL='.3'
	test -r /etc/.relid \
	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
	echo m68k-unknown-lynxos${UNAME_RELEASE}
	exit ;;
    mc68030:UNIX_System_V:4.*:*)
	echo m68k-atari-sysv4
	exit ;;
    TSUNAMI:LynxOS:2.*:*)
	echo sparc-unknown-lynxos${UNAME_RELEASE}
	exit ;;
    rs6000:LynxOS:2.*:*)
	echo rs6000-unknown-lynxos${UNAME_RELEASE}
	exit ;;
    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
	echo powerpc-unknown-lynxos${UNAME_RELEASE}
	exit ;;
    SM[BE]S:UNIX_SV:*:*)
	echo mips-dde-sysv${UNAME_RELEASE}
	exit ;;
    RM*:ReliantUNIX-*:*:*)
	echo mips-sni-sysv4
	exit ;;
    RM*:SINIX-*:*:*)
	echo mips-sni-sysv4
	exit ;;
    *:SINIX-*:*:*)
	if uname -p 2>/dev/null >/dev/null ; then
		UNAME_MACHINE=`(uname -p) 2>/dev/null`
		echo ${UNAME_MACHINE}-sni-sysv4
	else
		echo ns32k-sni-sysv
	fi
	exit ;;
    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
			# says <Richard.M.Bartel@ccMail.Census.GOV>
	echo i586-unisys-sysv4
	exit ;;
    *:UNIX_System_V:4*:FTX*)
	# From Gerald Hewes <hewes@openmarket.com>.
	# How about differentiating between stratus architectures? -djm
	echo hppa1.1-stratus-sysv4
	exit ;;
    *:*:*:FTX*)
	# From seanf@swdc.stratus.com.
	echo i860-stratus-sysv4
	exit ;;
    i*86:VOS:*:*)
	# From Paul.Green@stratus.com.
	echo ${UNAME_MACHINE}-stratus-vos
	exit ;;
    *:VOS:*:*)
	# From Paul.Green@stratus.com.
	echo hppa1.1-stratus-vos
	exit ;;
    mc68*:A/UX:*:*)
	echo m68k-apple-aux${UNAME_RELEASE}
	exit ;;
    news*:NEWS-OS:6*:*)
	echo mips-sony-newsos6
	exit ;;
    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
	if [ -d /usr/nec ]; then
		echo mips-nec-sysv${UNAME_RELEASE}
	else
		echo mips-unknown-sysv${UNAME_RELEASE}
	fi
	exit ;;
    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
	echo powerpc-be-beos
	exit ;;
    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
	echo powerpc-apple-beos
	exit ;;
    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
	echo i586-pc-beos
	exit ;;
    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
	echo i586-pc-haiku
	exit ;;
    x86_64:Haiku:*:*)
	echo x86_64-unknown-haiku
	exit ;;
    SX-4:SUPER-UX:*:*)
	echo sx4-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-5:SUPER-UX:*:*)
	echo sx5-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-6:SUPER-UX:*:*)
	echo sx6-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-7:SUPER-UX:*:*)
	echo sx7-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-8:SUPER-UX:*:*)
	echo sx8-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-8R:SUPER-UX:*:*)
	echo sx8r-nec-superux${UNAME_RELEASE}
	exit ;;
    SX-ACE:SUPER-UX:*:*)
	echo sxace-nec-superux${UNAME_RELEASE}
	exit ;;
    Power*:Rhapsody:*:*)
	echo powerpc-apple-rhapsody${UNAME_RELEASE}
	exit ;;
    *:Rhapsody:*:*)
	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
	exit ;;
    *:Darwin:*:*)
	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
	eval $set_cc_for_build
	if test "$UNAME_PROCESSOR" = unknown ; then
	    UNAME_PROCESSOR=powerpc
	fi
	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
		       grep IS_64BIT_ARCH >/dev/null
		then
		    case $UNAME_PROCESSOR in
			i386) UNAME_PROCESSOR=x86_64 ;;
			powerpc) UNAME_PROCESSOR=powerpc64 ;;
		    esac
		fi
		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
		       grep IS_PPC >/dev/null
		then
		    UNAME_PROCESSOR=powerpc
		fi
	    fi
	elif test "$UNAME_PROCESSOR" = i386 ; then
	    # Avoid executing cc on OS X 10.9, as it ships with a stub
	    # that puts up a graphical alert prompting to install
	    # developer tools.  Any system running Mac OS X 10.7 or
	    # later (Darwin 11 and later) is required to have a 64-bit
	    # processor. This is not true of the ARM version of Darwin
	    # that Apple uses in portable devices.
	    UNAME_PROCESSOR=x86_64
	fi
	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
	exit ;;
    *:procnto*:*:* | *:QNX:[0123456789]*:*)
	UNAME_PROCESSOR=`uname -p`
	if test "$UNAME_PROCESSOR" = x86; then
		UNAME_PROCESSOR=i386
		UNAME_MACHINE=pc
	fi
	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
	exit ;;
    *:QNX:*:4*)
	echo i386-pc-qnx
	exit ;;
    NEO-*:NONSTOP_KERNEL:*:*)
	echo neo-tandem-nsk${UNAME_RELEASE}
	exit ;;
    NSE-*:NONSTOP_KERNEL:*:*)
	echo nse-tandem-nsk${UNAME_RELEASE}
	exit ;;
    NSR-*:NONSTOP_KERNEL:*:*)
	echo nsr-tandem-nsk${UNAME_RELEASE}
	exit ;;
    NSX-*:NONSTOP_KERNEL:*:*)
	echo nsx-tandem-nsk${UNAME_RELEASE}
	exit ;;
    *:NonStop-UX:*:*)
	echo mips-compaq-nonstopux
	exit ;;
    BS2000:POSIX*:*:*)
	echo bs2000-siemens-sysv
	exit ;;
    DS/*:UNIX_System_V:*:*)
	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
	exit ;;
    *:Plan9:*:*)
	# "uname -m" is not consistent, so use $cputype instead. 386
	# is converted to i386 for consistency with other x86
	# operating systems.
	if test "$cputype" = 386; then
	    UNAME_MACHINE=i386
	else
	    UNAME_MACHINE="$cputype"
	fi
	echo ${UNAME_MACHINE}-unknown-plan9
	exit ;;
    *:TOPS-10:*:*)
	echo pdp10-unknown-tops10
	exit ;;
    *:TENEX:*:*)
	echo pdp10-unknown-tenex
	exit ;;
    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
	echo pdp10-dec-tops20
	exit ;;
    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
	echo pdp10-xkl-tops20
	exit ;;
    *:TOPS-20:*:*)
	echo pdp10-unknown-tops20
	exit ;;
    *:ITS:*:*)
	echo pdp10-unknown-its
	exit ;;
    SEI:*:*:SEIUX)
	echo mips-sei-seiux${UNAME_RELEASE}
	exit ;;
    *:DragonFly:*:*)
	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
	exit ;;
    *:*VMS:*:*)
	UNAME_MACHINE=`(uname -p) 2>/dev/null`
	case "${UNAME_MACHINE}" in
	    A*) echo alpha-dec-vms ; exit ;;
	    I*) echo ia64-dec-vms ; exit ;;
	    V*) echo vax-dec-vms ; exit ;;
	esac ;;
    *:XENIX:*:SysV)
	echo i386-pc-xenix
	exit ;;
    i*86:skyos:*:*)
	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
	exit ;;
    i*86:rdos:*:*)
	echo ${UNAME_MACHINE}-pc-rdos
	exit ;;
    i*86:AROS:*:*)
	echo ${UNAME_MACHINE}-pc-aros
	exit ;;
    x86_64:VMkernel:*:*)
	echo ${UNAME_MACHINE}-unknown-esx
	exit ;;
    amd64:Isilon\ OneFS:*:*)
	echo x86_64-unknown-onefs
	exit ;;
esac

cat >&2 <<EOF
$0: unable to guess system type

This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite
config.guess and config.sub with the latest versions from:

  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub

If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
provide the necessary information to handle your system.

config.guess timestamp = $timestamp

uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`

hostinfo               = `(hostinfo) 2>/dev/null`
/bin/universe          = `(/bin/universe) 2>/dev/null`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
/bin/arch              = `(/bin/arch) 2>/dev/null`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`

UNAME_MACHINE = ${UNAME_MACHINE}
UNAME_RELEASE = ${UNAME_RELEASE}
UNAME_SYSTEM  = ${UNAME_SYSTEM}
UNAME_VERSION = ${UNAME_VERSION}
EOF

exit 1

# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:


================================================
FILE: build/linux/config.sub
================================================
#! /bin/sh
# Configuration validation subroutine script.
#   Copyright 1992-2017 Free Software Foundation, Inc.

timestamp='2017-04-02'

# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that
# program.  This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").


# Please send patches to <config-patches@gnu.org>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.

# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub

# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support.  The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.

# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.

me=`echo "$0" | sed -e 's,.*/,,'`

usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS

Canonicalize a configuration name.

Operation modes:
  -h, --help         print this help, then exit
  -t, --time-stamp   print date of last modification, then exit
  -v, --version      print version number, then exit

Report bugs and patches to <config-patches@gnu.org>."

version="\
GNU config.sub ($timestamp)

Copyright 1992-2017 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."

help="
Try \`$me --help' for more information."

# Parse command line
while test $# -gt 0 ; do
  case $1 in
    --time-stamp | --time* | -t )
       echo "$timestamp" ; exit ;;
    --version | -v )
       echo "$version" ; exit ;;
    --help | --h* | -h )
       echo "$usage"; exit ;;
    -- )     # Stop option processing
       shift; break ;;
    - )	# Use stdin as input.
       break ;;
    -* )
       echo "$me: invalid option $1$help"
       exit 1 ;;

    *local*)
       # First pass through any local machine types.
       echo $1
       exit ;;

    * )
       break ;;
  esac
done

case $# in
 0) echo "$me: missing argument$help" >&2
    exit 1;;
 1) ;;
 *) echo "$me: too many arguments$help" >&2
    exit 1;;
esac

# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
  kopensolaris*-gnu* | cloudabi*-eabi* | \
  storm-chaos* | os2-emx* | rtmk-nova*)
    os=-$maybe_os
    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
    ;;
  android-linux)
    os=-linux-android
    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
    ;;
  *)
    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
    if [ $basic_machine != $1 ]
    then os=`echo $1 | sed 's/.*-/-/'`
    else os=; fi
    ;;
esac

### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work.  We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
	-sun*os*)
		# Prevent following clause from handling this invalid input.
		;;
	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
	-apple | -axis | -knuth | -cray | -microblaze*)
		os=
		basic_machine=$1
		;;
	-bluegene*)
		os=-cnk
		;;
	-sim | -cisco | -oki | -wec | -winbond)
		os=
		basic_machine=$1
		;;
	-scout)
		;;
	-wrs)
		os=-vxworks
		basic_machine=$1
		;;
	-chorusos*)
		os=-chorusos
		basic_machine=$1
		;;
	-chorusrdb)
		os=-chorusrdb
		basic_machine=$1
		;;
	-hiux*)
		os=-hiuxwe2
		;;
	-sco6)
		os=-sco5v6
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco5)
		os=-sco3.2v5
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco4)
		os=-sco3.2v4
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco3.2.[4-9]*)
		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco3.2v[4-9]*)
		# Don't forget version if it is 3.2v4 or newer.
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco5v6*)
		# Don't forget version if it is 3.2v4 or newer.
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-sco*)
		os=-sco3.2v2
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-udk*)
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-isc)
		os=-isc2.2
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-clix*)
		basic_machine=clipper-intergraph
		;;
	-isc*)
		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
		;;
	-lynx*178)
		os=-lynxos178
		;;
	-lynx*5)
		os=-lynxos5
		;;
	-lynx*)
		os=-lynxos
		;;
	-ptx*)
		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
		;;
	-windowsnt*)
		os=`echo $os | sed -e 's/windowsnt/winnt/'`
		;;
	-psos*)
		os=-psos
		;;
	-mint | -mint[0-9]*)
		basic_machine=m68k-atari
		os=-mint
		;;
esac

# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
	# Recognize the basic CPU types without company name.
	# Some are omitted here because they have special meanings below.
	1750a | 580 \
	| a29k \
	| aarch64 | aarch64_be \
	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
	| am33_2.0 \
	| arc | arceb \
	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
	| avr | avr32 \
	| ba \
	| be32 | be64 \
	| bfin \
	| c4x | c8051 | clipper \
	| d10v | d30v | dlx | dsp16xx \
	| e2k | epiphany \
	| fido | fr30 | frv | ft32 \
	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
	| hexagon \
	| i370 | i860 | i960 | ia16 | ia64 \
	| ip2k | iq2000 \
	| k1om \
	| le32 | le64 \
	| lm32 \
	| m32c | m32r | m32rle | m68000 | m68k | m88k \
	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
	| mips | mipsbe | mipseb | mipsel | mipsle \
	| mips16 \
	| mips64 | mips64el \
	| mips64octeon | mips64octeonel \
	| mips64orion | mips64orionel \
	| mips64r5900 | mips64r5900el \
	| mips64vr | mips64vrel \
	| mips64vr4100 | mips64vr4100el \
	| mips64vr4300 | mips64vr4300el \
	| mips64vr5000 | mips64vr5000el \
	| mips64vr5900 | mips64vr5900el \
	| mipsisa32 | mipsisa32el \
	| mipsisa32r2 | mipsisa32r2el \
	| mipsisa32r6 | mipsisa32r6el \
	| mipsisa64 | mipsisa64el \
	| mipsisa64r2 | mipsisa64r2el \
	| mipsisa64r6 | mipsisa64r6el \
	| mipsisa64sb1 | mipsisa64sb1el \
	| mipsisa64sr71k | mipsisa64sr71kel \
	| mipsr5900 | mipsr5900el \
	| mipstx39 | mipstx39el \
	| mn10200 | mn10300 \
	| moxie \
	| mt \
	| msp430 \
	| nds32 | nds32le | nds32be \
	| nios | nios2 | nios2eb | nios2el \
	| ns16k | ns32k \
	| open8 | or1k | or1knd | or32 \
	| pdp10 | pdp11 | pj | pjl \
	| powerpc | powerpc64 | powerpc64le | powerpcle \
	| pru \
	| pyramid \
	| riscv32 | riscv64 \
	| rl78 | rx \
	| score \
	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
	| sh64 | sh64le \
	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
	| spu \
	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
	| ubicom32 \
	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
	| visium \
	| wasm32 \
	| we32k \
	| x86 | xc16x | xstormy16 | xtensa \
	| z8k | z80)
		basic_machine=$basic_machine-unknown
		;;
	c54x)
		basic_machine=tic54x-unknown
		;;
	c55x)
		basic_machine=tic55x-unknown
		;;
	c6x)
		basic_machine=tic6x-unknown
		;;
	leon|leon[3-9])
		basic_machine=sparc-$basic_machine
		;;
	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
		basic_machine=$basic_machine-unknown
		os=-none
		;;
	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
		;;
	ms1)
		basic_machine=mt-unknown
		;;

	strongarm | thumb | xscale)
		basic_machine=arm-unknown
		;;
	xgate)
		basic_machine=$basic_machine-unknown
		os=-none
		;;
	xscaleeb)
		basic_machine=armeb-unknown
		;;

	xscaleel)
		basic_machine=armel-unknown
		;;

	# We use `pc' rather than `unknown'
	# because (1) that's what they normally are, and
	# (2) the word "unknown" tends to confuse beginning users.
	i*86 | x86_64)
	  basic_machine=$basic_machine-pc
	  ;;
	# Object if more than one company name word.
	*-*-*)
		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
		exit 1
		;;
	# Recognize the basic CPU types with company name.
	580-* \
	| a29k-* \
	| aarch64-* | aarch64_be-* \
	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
	| avr-* | avr32-* \
	| ba-* \
	| be32-* | be64-* \
	| bfin-* | bs2000-* \
	| c[123]* | c30-* | [cjt]90-* | c4x-* \
	| c8051-* | clipper-* | craynv-* | cydra-* \
	| d10v-* | d30v-* | dlx-* \
	| e2k-* | elxsi-* \
	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
	| h8300-* | h8500-* \
	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
	| hexagon-* \
	| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
	| ip2k-* | iq2000-* \
	| k1om-* \
	| le32-* | le64-* \
	| lm32-* \
	| m32c-* | m32r-* | m32rle-* \
	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
	| microblaze-* | microblazeel-* \
	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
	| mips16-* \
	| mips64-* | mips64el-* \
	| mips64octeon-* | mips64octeonel-* \
	| mips64orion-* | mips64orionel-* \
	| mips64r5900-* | mips64r5900el-* \
	| mips64vr-* | mips64vrel-* \
	| mips64vr4100-* | mips64vr4100el-* \
	| mips64vr4300-* | mips64vr4300el-* \
	| mips64vr5000-* | mips64vr5000el-* \
	| mips64vr5900-* | mips64vr5900el-* \
	| mipsisa32-* | mipsisa32el-* \
	| mipsisa32r2-* | mipsisa32r2el-* \
	| mipsisa32r6-* | mipsisa32r6el-* \
	| mipsisa64-* | mipsisa64el-* \
	| mipsisa64r2-* | mipsisa64r2el-* \
	| mipsisa64r6-* | mipsisa64r6el-* \
	| mipsisa64sb1-* | mipsisa64sb1el-* \
	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
	| mipsr5900-* | mipsr5900el-* \
	| mipstx39-* | mipstx39el-* \
	| mmix-* \
	| mt-* \
	| msp430-* \
	| nds32-* | nds32le-* | nds32be-* \
	| nios-* | nios2-* | nios2eb-* | nios2el-* \
	| none-* | np1-* | ns16k-* | ns32k-* \
	| open8-* \
	| or1k*-* \
	| orion-* \
	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
	| pru-* \
	| pyramid-* \
	| riscv32-* | riscv64-* \
	| rl78-* | romp-* | rs6000-* | rx-* \
	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
	| sparclite-* \
	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
	| tahoe-* \
	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
	| tile*-* \
	| tron-* \
	| ubicom32-* \
	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
	| vax-* \
	| visium-* \
	| wasm32-* \
	| we32k-* \
	| x86-* | x86_64-* | xc16x-* | xps100-* \
	| xstormy16-* | xtensa*-* \
	| ymp-* \
	| z8k-* | z80-*)
		;;
	# Recognize the basic CPU types without company name, with glob match.
	xtensa*)
		basic_machine=$basic_machine-unknown
		;;
	# Recognize the various machine names and aliases which stand
	# for a CPU type and a company and sometimes even an OS.
	386bsd)
		basic_machine=i386-unknown
		os=-bsd
		;;
	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
		basic_machine=m68000-att
		;;
	3b*)
		basic_machine=we32k-att
		;;
	a29khif)
		basic_machine=a29k-amd
		os=-udi
		;;
	abacus)
		basic_machine=abacus-unknown
		;;
	adobe68k)
		basic_machine=m68010-adobe
		os=-scout
		;;
	alliant | fx80)
		basic_machine=fx80-alliant
		;;
	altos | altos3068)
		basic_machine=m68k-altos
		;;
	am29k)
		basic_machine=a29k-none
		os=-bsd
		;;
	amd64)
		basic_machine=x86_64-pc
		;;
	amd64-*)
		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	amdahl)
		basic_machine=580-amdahl
		os=-sysv
		;;
	amiga | amiga-*)
		basic_machine=m68k-unknown
		;;
	amigaos | amigados)
		basic_machine=m68k-unknown
		os=-amigaos
		;;
	amigaunix | amix)
		basic_machine=m68k-unknown
		os=-sysv4
		;;
	apollo68)
		basic_machine=m68k-apollo
		os=-sysv
		;;
	apollo68bsd)
		basic_machine=m68k-apollo
		os=-bsd
		;;
	aros)
		basic_machine=i386-pc
		os=-aros
		;;
	asmjs)
		basic_machine=asmjs-unknown
		;;
	aux)
		basic_machine=m68k-apple
		os=-aux
		;;
	balance)
		basic_machine=ns32k-sequent
		os=-dynix
		;;
	blackfin)
		basic_machine=bfin-unknown
		os=-linux
		;;
	blackfin-*)
		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
		os=-linux
		;;
	bluegene*)
		basic_machine=powerpc-ibm
		os=-cnk
		;;
	c54x-*)
		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	c55x-*)
		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	c6x-*)
		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	c90)
		basic_machine=c90-cray
		os=-unicos
		;;
	cegcc)
		basic_machine=arm-unknown
		os=-cegcc
		;;
	convex-c1)
		basic_machine=c1-convex
		os=-bsd
		;;
	convex-c2)
		basic_machine=c2-convex
		os=-bsd
		;;
	convex-c32)
		basic_machine=c32-convex
		os=-bsd
		;;
	convex-c34)
		basic_machine=c34-convex
		os=-bsd
		;;
	convex-c38)
		basic_machine=c38-convex
		os=-bsd
		;;
	cray | j90)
		basic_machine=j90-cray
		os=-unicos
		;;
	craynv)
		basic_machine=craynv-cray
		os=-unicosmp
		;;
	cr16 | cr16-*)
		basic_machine=cr16-unknown
		os=-elf
		;;
	crds | unos)
		basic_machine=m68k-crds
		;;
	crisv32 | crisv32-* | etraxfs*)
		basic_machine=crisv32-axis
		;;
	cris | cris-* | etrax*)
		basic_machine=cris-axis
		;;
	crx)
		basic_machine=crx-unknown
		os=-elf
		;;
	da30 | da30-*)
		basic_machine=m68k-da30
		;;
	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
		basic_machine=mips-dec
		;;
	decsystem10* | dec10*)
		basic_machine=pdp10-dec
		os=-tops10
		;;
	decsystem20* | dec20*)
		basic_machine=pdp10-dec
		os=-tops20
		;;
	delta | 3300 | motorola-3300 | motorola-delta \
	      | 3300-motorola | delta-motorola)
		basic_machine=m68k-motorola
		;;
	delta88)
		basic_machine=m88k-motorola
		os=-sysv3
		;;
	dicos)
		basic_machine=i686-pc
		os=-dicos
		;;
	djgpp)
		basic_machine=i586-pc
		os=-msdosdjgpp
		;;
	dpx20 | dpx20-*)
		basic_machine=rs6000-bull
		os=-bosx
		;;
	dpx2* | dpx2*-bull)
		basic_machine=m68k-bull
		os=-sysv3
		;;
	e500v[12])
		basic_machine=powerpc-unknown
		os=$os"spe"
		;;
	e500v[12]-*)
		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
		os=$os"spe"
		;;
	ebmon29k)
		basic_machine=a29k-amd
		os=-ebmon
		;;
	elxsi)
		basic_machine=elxsi-elxsi
		os=-bsd
		;;
	encore | umax | mmax)
		basic_machine=ns32k-encore
		;;
	es1800 | OSE68k | ose68k | ose | OSE)
		basic_machine=m68k-ericsson
		os=-ose
		;;
	fx2800)
		basic_machine=i860-alliant
		;;
	genix)
		basic_machine=ns32k-ns
		;;
	gmicro)
		basic_machine=tron-gmicro
		os=-sysv
		;;
	go32)
		basic_machine=i386-pc
		os=-go32
		;;
	h3050r* | hiux*)
		basic_machine=hppa1.1-hitachi
		os=-hiuxwe2
		;;
	h8300hms)
		basic_machine=h8300-hitachi
		os=-hms
		;;
	h8300xray)
		basic_machine=h8300-hitachi
		os=-xray
		;;
	h8500hms)
		basic_machine=h8500-hitachi
		os=-hms
		;;
	harris)
		basic_machine=m88k-harris
		os=-sysv3
		;;
	hp300-*)
		basic_machine=m68k-hp
		;;
	hp300bsd)
		basic_machine=m68k-hp
		os=-bsd
		;;
	hp300hpux)
		basic_machine=m68k-hp
		os=-hpux
		;;
	hp3k9[0-9][0-9] | hp9[0-9][0-9])
		basic_machine=hppa1.0-hp
		;;
	hp9k2[0-9][0-9] | hp9k31[0-9])
		basic_machine=m68000-hp
		;;
	hp9k3[2-9][0-9])
		basic_machine=m68k-hp
		;;
	hp9k6[0-9][0-9] | hp6[0-9][0-9])
		basic_machine=hppa1.0-hp
		;;
	hp9k7[0-79][0-9] | hp7[0-79][0-9])
		basic_machine=hppa1.1-hp
		;;
	hp9k78[0-9] | hp78[0-9])
		# FIXME: really hppa2.0-hp
		basic_machine=hppa1.1-hp
		;;
	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
		# FIXME: really hppa2.0-hp
		basic_machine=hppa1.1-hp
		;;
	hp9k8[0-9][13679] | hp8[0-9][13679])
		basic_machine=hppa1.1-hp
		;;
	hp9k8[0-9][0-9] | hp8[0-9][0-9])
		basic_machine=hppa1.0-hp
		;;
	hppa-next)
		os=-nextstep3
		;;
	hppaosf)
		basic_machine=hppa1.1-hp
		os=-osf
		;;
	hppro)
		basic_machine=hppa1.1-hp
		os=-proelf
		;;
	i370-ibm* | ibm*)
		basic_machine=i370-ibm
		;;
	i*86v32)
		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
		os=-sysv32
		;;
	i*86v4*)
		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
		os=-sysv4
		;;
	i*86v)
		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
		os=-sysv
		;;
	i*86sol2)
		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
		os=-solaris2
		;;
	i386mach)
		basic_machine=i386-mach
		os=-mach
		;;
	i386-vsta | vsta)
		basic_machine=i386-unknown
		os=-vsta
		;;
	iris | iris4d)
		basic_machine=mips-sgi
		case $os in
		    -irix*)
			;;
		    *)
			os=-irix4
			;;
		esac
		;;
	isi68 | isi)
		basic_machine=m68k-isi
		os=-sysv
		;;
	leon-*|leon[3-9]-*)
		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
		;;
	m68knommu)
		basic_machine=m68k-unknown
		os=-linux
		;;
	m68knommu-*)
		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
		os=-linux
		;;
	m88k-omron*)
		basic_machine=m88k-omron
		;;
	magnum | m3230)
		basic_machine=mips-mips
		os=-sysv
		;;
	merlin)
		basic_machine=ns32k-utek
		os=-sysv
		;;
	microblaze*)
		basic_machine=microblaze-xilinx
		;;
	mingw64)
		basic_machine=x86_64-pc
		os=-mingw64
		;;
	mingw32)
		basic_machine=i686-pc
		os=-mingw32
		;;
	mingw32ce)
		basic_machine=arm-unknown
		os=-mingw32ce
		;;
	miniframe)
		basic_machine=m68000-convergent
		;;
	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
		basic_machine=m68k-atari
		os=-mint
		;;
	mips3*-*)
		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
		;;
	mips3*)
		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
		;;
	monitor)
		basic_machine=m68k-rom68k
		os=-coff
		;;
	morphos)
		basic_machine=powerpc-unknown
		os=-morphos
		;;
	moxiebox)
		basic_machine=moxie-unknown
		os=-moxiebox
		;;
	msdos)
		basic_machine=i386-pc
		os=-msdos
		;;
	ms1-*)
		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
		;;
	msys)
		basic_machine=i686-pc
		os=-msys
		;;
	mvs)
		basic_machine=i370-ibm
		os=-mvs
		;;
	nacl)
		basic_machine=le32-unknown
		os=-nacl
		;;
	ncr3000)
		basic_machine=i486-ncr
		os=-sysv4
		;;
	netbsd386)
		basic_machine=i386-unknown
		os=-netbsd
		;;
	netwinder)
		basic_machine=armv4l-rebel
		os=-linux
		;;
	news | news700 | news800 | news900)
		basic_machine=m68k-sony
		os=-newsos
		;;
	news1000)
		basic_machine=m68030-sony
		os=-newsos
		;;
	news-3600 | risc-news)
		basic_machine=mips-sony
		os=-newsos
		;;
	necv70)
		basic_machine=v70-nec
		os=-sysv
		;;
	next | m*-next )
		basic_machine=m68k-next
		case $os in
		    -nextstep* )
			;;
		    -ns2*)
		      os=-nextstep2
			;;
		    *)
		      os=-nextstep3
			;;
		esac
		;;
	nh3000)
		basic_machine=m68k-harris
		os=-cxux
		;;
	nh[45]000)
		basic_machine=m88k-harris
		os=-cxux
		;;
	nindy960)
		basic_machine=i960-intel
		os=-nindy
		;;
	mon960)
		basic_machine=i960-intel
		os=-mon960
		;;
	nonstopux)
		basic_machine=mips-compaq
		os=-nonstopux
		;;
	np1)
		basic_machine=np1-gould
		;;
	neo-tandem)
		basic_machine=neo-tandem
		;;
	nse-tandem)
		basic_machine=nse-tandem
		;;
	nsr-tandem)
		basic_machine=nsr-tandem
		;;
	nsx-tandem)
		basic_machine=nsx-tandem
		;;
	op50n-* | op60c-*)
		basic_machine=hppa1.1-oki
		os=-proelf
		;;
	openrisc | openrisc-*)
		basic_machine=or32-unknown
		;;
	os400)
		basic_machine=powerpc-ibm
		os=-os400
		;;
	OSE68000 | ose68000)
		basic_machine=m68000-ericsson
		os=-ose
		;;
	os68k)
		basic_machine=m68k-none
		os=-os68k
		;;
	pa-hitachi)
		basic_machine=hppa1.1-hitachi
		os=-hiuxwe2
		;;
	paragon)
		basic_machine=i860-intel
		os=-osf
		;;
	parisc)
		basic_machine=hppa-unknown
		os=-linux
		;;
	parisc-*)
		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
		os=-linux
		;;
	pbd)
		basic_machine=sparc-tti
		;;
	pbb)
		basic_machine=m68k-tti
		;;
	pc532 | pc532-*)
		basic_machine=ns32k-pc532
		;;
	pc98)
		basic_machine=i386-pc
		;;
	pc98-*)
		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	pentium | p5 | k5 | k6 | nexgen | viac3)
		basic_machine=i586-pc
		;;
	pentiumpro | p6 | 6x86 | athlon | athlon_*)
		basic_machine=i686-pc
		;;
	pentiumii | pentium2 | pentiumiii | pentium3)
		basic_machine=i686-pc
		;;
	pentium4)
		basic_machine=i786-pc
		;;
	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	pentiumpro-* | p6-* | 6x86-* | athlon-*)
		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	pentium4-*)
		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	pn)
		basic_machine=pn-gould
		;;
	power)	basic_machine=power-ibm
		;;
	ppc | ppcbe)	basic_machine=powerpc-unknown
		;;
	ppc-* | ppcbe-*)
		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	ppcle | powerpclittle)
		basic_machine=powerpcle-unknown
		;;
	ppcle-* | powerpclittle-*)
		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	ppc64)	basic_machine=powerpc64-unknown
		;;
	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	ppc64le | powerpc64little)
		basic_machine=powerpc64le-unknown
		;;
	ppc64le-* | powerpc64little-*)
		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	ps2)
		basic_machine=i386-ibm
		;;
	pw32)
		basic_machine=i586-unknown
		os=-pw32
		;;
	rdos | rdos64)
		basic_machine=x86_64-pc
		os=-rdos
		;;
	rdos32)
		basic_machine=i386-pc
		os=-rdos
		;;
	rom68k)
		basic_machine=m68k-rom68k
		os=-coff
		;;
	rm[46]00)
		basic_machine=mips-siemens
		;;
	rtpc | rtpc-*)
		basic_machine=romp-ibm
		;;
	s390 | s390-*)
		basic_machine=s390-ibm
		;;
	s390x | s390x-*)
		basic_machine=s390x-ibm
		;;
	sa29200)
		basic_machine=a29k-amd
		os=-udi
		;;
	sb1)
		basic_machine=mipsisa64sb1-unknown
		;;
	sb1el)
		basic_machine=mipsisa64sb1el-unknown
		;;
	sde)
		basic_machine=mipsisa32-sde
		os=-elf
		;;
	sei)
		basic_machine=mips-sei
		os=-seiux
		;;
	sequent)
		basic_machine=i386-sequent
		;;
	sh)
		basic_machine=sh-hitachi
		os=-hms
		;;
	sh5el)
		basic_machine=sh5le-unknown
		;;
	sh64)
		basic_machine=sh64-unknown
		;;
	sparclite-wrs | simso-wrs)
		basic_machine=sparclite-wrs
		os=-vxworks
		;;
	sps7)
		basic_machine=m68k-bull
		os=-sysv2
		;;
	spur)
		basic_machine=spur-unknown
		;;
	st2000)
		basic_machine=m68k-tandem
		;;
	stratus)
		basic_machine=i860-stratus
		os=-sysv4
		;;
	strongarm-* | thumb-*)
		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
		;;
	sun2)
		basic_machine=m68000-sun
		;;
	sun2os3)
		basic_machine=m68000-sun
		os=-sunos3
		;;
	sun2os4)
		basic_machine=m68000-sun
		os=-sunos4
		;;
	sun3os3)
		basic_machine=m68k-sun
		os=-sunos3
		;;
	sun3os4)
		basic_machine=m68k-sun
		os=-sunos4
		;;
	sun4os3)
		basic_machine=sparc-sun
		os=-sunos3
		;;
	sun4os4)
		basic_machine=sparc-sun
		os=-sunos4
		;;
	sun4sol2)
		basic_machine=sparc-sun
		os=-solaris2
		;;
	sun3 | sun3-*)
		basic_machine=m68k-sun
		;;
	sun4)
		basic_machine=sparc-sun
		;;
	sun386 | sun386i | roadrunner)
		basic_machine=i386-sun
		;;
	sv1)
		basic_machine=sv1-cray
		os=-unicos
		;;
	symmetry)
		basic_machine=i386-sequent
		os=-dynix
		;;
	t3e)
		basic_machine=alphaev5-cray
		os=-unicos
		;;
	t90)
		basic_machine=t90-cray
		os=-unicos
		;;
	tile*)
		basic_machine=$basic_machine-unknown
		os=-linux-gnu
		;;
	tx39)
		basic_machine=mipstx39-unknown
		;;
	tx39el)
		basic_machine=mipstx39el-unknown
		;;
	toad1)
		basic_machine=pdp10-xkl
		os=-tops20
		;;
	tower | tower-32)
		basic_machine=m68k-ncr
		;;
	tpf)
		basic_machine=s390x-ibm
		os=-tpf
		;;
	udi29k)
		basic_machine=a29k-amd
		os=-udi
		;;
	ultra3)
		basic_machine=a29k-nyu
		os=-sym1
		;;
	v810 | necv810)
		basic_machine=v810-nec
		os=-none
		;;
	vaxv)
		basic_machine=vax-dec
		os=-sysv
		;;
	vms)
		basic_machine=vax-dec
		os=-vms
		;;
	vpp*|vx|vx-*)
		basic_machine=f301-fujitsu
		;;
	vxworks960)
		basic_machine=i960-wrs
		os=-vxworks
		;;
	vxworks68)
		basic_machine=m68k-wrs
		os=-vxworks
		;;
	vxworks29k)
		basic_machine=a29k-wrs
		os=-vxworks
		;;
	wasm32)
		basic_machine=wasm32-unknown
		;;
	w65*)
		basic_machine=w65-wdc
		os=-none
		;;
	w89k-*)
		basic_machine=hppa1.1-winbond
		os=-proelf
		;;
	xbox)
		basic_machine=i686-pc
		os=-mingw32
		;;
	xps | xps100)
		basic_machine=xps100-honeywell
		;;
	xscale-* | xscalee[bl]-*)
		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
		;;
	ymp)
		basic_machine=ymp-cray
		os=-unicos
		;;
	z8k-*-coff)
		basic_machine=z8k-unknown
		os=-sim
		;;
	z80-*-coff)
		basic_machine=z80-unknown
		os=-sim
		;;
	none)
		basic_machine=none-none
		os=-none
		;;

# Here we handle the default manufacturer of certain CPU types.  It is in
# some cases the only manufacturer, in others, it is the most popular.
	w89k)
		basic_machine=hppa1.1-winbond
		;;
	op50n)
		basic_machine=hppa1.1-oki
		;;
	op60c)
		basic_machine=hppa1.1-oki
		;;
	romp)
		basic_machine=romp-ibm
		;;
	mmix)
		basic_machine=mmix-knuth
		;;
	rs6000)
		basic_machine=rs6000-ibm
		;;
	vax)
		basic_machine=vax-dec
		;;
	pdp10)
		# there are many clones, so DEC is not a safe bet
		basic_machine=pdp10-unknown
		;;
	pdp11)
		basic_machine=pdp11-dec
		;;
	we32k)
		basic_machine=we32k-att
		;;
	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
		basic_machine=sh-unknown
		;;
	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
		basic_machine=sparc-sun
		;;
	cydra)
		basic_machine=cydra-cydrome
		;;
	orion)
		basic_machine=orion-highlevel
		;;
	orion105)
		basic_machine=clipper-highlevel
		;;
	mac | mpw | mac-mpw)
		basic_machine=m68k-apple
		;;
	pmac | pmac-mpw)
		basic_machine=powerpc-apple
		;;
	*-unknown)
		# Make sure to match an already-canonicalized machine name.
		;;
	*)
		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
		exit 1
		;;
esac

# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
	*-digital*)
		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
		;;
	*-commodore*)
		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
		;;
	*)
		;;
esac

# Decode manufacturer-specific aliases for certain operating systems.

if [ x"$os" != x"" ]
then
case $os in
	# First match some system type aliases
	# that might get confused with valid system types.
	# -solaris* is a basic system type, with this one exception.
	-auroraux)
		os=-auroraux
		;;
	-solaris1 | -solaris1.*)
		os=`echo $os | sed -e 's|solaris1|sunos4|'`
		;;
	-solaris)
		os=-solaris2
		;;
	-svr4*)
		os=-sysv4
		;;
	-unixware*)
		os=-sysv4.2uw
		;;
	-gnu/linux*)
		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
		;;
	# First accept the basic system types.
	# The portable systems comes first.
	# Each alternative MUST END IN A *, to match a version number.
	# -sysv* is not here because it comes later, after sysvr4.
	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
	      | -sym* | -kopensolaris* | -plan9* \
	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
	      | -aos* | -aros* | -cloudabi* | -sortix* \
	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
	      | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
	# Remember, each alternative MUST END IN *, to match a version number.
		;;
	-qnx*)
		case $basic_machine in
		    x86-* | i*86-*)
			;;
		    *)
			os=-nto$os
			;;
		esac
		;;
	-nto-qnx*)
		;;
	-nto*)
		os=`echo $os | sed -e 's|nto|nto-qnx|'`
		;;
	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
		;;
	-mac*)
		os=`echo $os | sed -e 's|mac|macos|'`
		;;
	-linux-dietlibc)
		os=-linux-dietlibc
		;;
	-linux*)
		os=`echo $os | sed -e 's|linux|linux-gnu|'`
		;;
	-sunos5*)
		os=`echo $os | sed -e 's|sunos5|solaris2|'`
		;;
	-sunos6*)
		os=`echo $os | sed -e 's|sunos6|solaris3|'`
		;;
	-opened*)
		os=-openedition
		;;
	-os400*)
		os=-os400
		;;
	-wince*)
		os=-wince
		;;
	-osfrose*)
		os=-osfrose
		;;
	-osf*)
		os=-osf
		;;
	-utek*)
		os=-bsd
		;;
	-dynix*)
		os=-bsd
		;;
	-acis*)
		os=-aos
		;;
	-atheos*)
		os=-atheos
		;;
	-syllable*)
		os=-syllable
		;;
	-386bsd)
		os=-bsd
		;;
	-ctix* | -uts*)
		os=-sysv
		;;
	-nova*)
		os=-rtmk-nova
		;;
	-ns2 )
		os=-nextstep2
		;;
	-nsk*)
		os=-nsk
		;;
	# Preserve the version number of sinix5.
	-sinix5.*)
		os=`echo $os | sed -e 's|sinix|sysv|'`
		;;
	-sinix*)
		os=-sysv4
		;;
	-tpf*)
		os=-tpf
		;;
	-triton*)
		os=-sysv3
		;;
	-oss*)
		os=-sysv3
		;;
	-svr4)
		os=-sysv4
		;;
	-svr3)
		os=-sysv3
		;;
	-sysvr4)
		os=-sysv4
		;;
	# This must come after -sysvr4.
	-sysv*)
		;;
	-ose*)
		os=-ose
		;;
	-es1800*)
		os=-ose
		;;
	-xenix)
		os=-xenix
		;;
	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
		os=-mint
		;;
	-aros*)
		os=-aros
		;;
	-zvmoe)
		os=-zvmoe
		;;
	-dicos*)
		os=-dicos
		;;
	-nacl*)
		;;
	-ios)
		;;
	-none)
		;;
	*)
		# Get rid of the `-' at the beginning of $os.
		os=`echo $os | sed 's/[^-]*-//'`
		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
		exit 1
		;;
esac
else

# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.

# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system.  Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.

case $basic_machine in
	score-*)
		os=-elf
		;;
	spu-*)
		os=-elf
		;;
	*-acorn)
		os=-riscix1.2
		;;
	arm*-rebel)
		os=-linux
		;;
	arm*-semi)
		os=-aout
		;;
	c4x-* | tic4x-*)
		os=-coff
		;;
	c8051-*)
		os=-elf
		;;
	hexagon-*)
		os=-elf
		;;
	tic54x-*)
		os=-coff
		;;
	tic55x-*)
		os=-coff
		;;
	tic6x-*)
		os=-coff
		;;
	# This must come before the *-dec entry.
	pdp10-*)
		os=-tops20
		;;
	pdp11-*)
		os=-none
		;;
	*-dec | vax-*)
		os=-ultrix4.2
		;;
	m68*-apollo)
		os=-domain
		;;
	i386-sun)
		os=-sunos4.0.2
		;;
	m68000-sun)
		os=-sunos3
		;;
	m68*-cisco)
		os=-aout
		;;
	mep-*)
		os=-elf
		;;
	mips*-cisco)
		os=-elf
		;;
	mips*-*)
		os=-elf
		;;
	or32-*)
		os=-coff
		;;
	*-tti)	# must be before sparc entry or we get the wrong os.
		os=-sysv3
		;;
	sparc-* | *-sun)
		os=-sunos4.1.1
		;;
	pru-*)
		os=-elf
		;;
	*-be)
		os=-beos
		;;
	*-haiku)
		os=-haiku
		;;
	*-ibm)
		os=-aix
		;;
	*-knuth)
		os=-mmixware
		;;
	*-wec)
		os=-proelf
		;;
	*-winbond)
		os=-proelf
		;;
	*-oki)
		os=-proelf
		;;
	*-hp)
		os=-hpux
		;;
	*-hitachi)
		os=-hiux
		;;
	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
		os=-sysv
		;;
	*-cbm)
		os=-amigaos
		;;
	*-dg)
		os=-dgux
		;;
	*-dolphin)
		os=-sysv3
		;;
	m68k-ccur)
		os=-rtu
		;;
	m88k-omron*)
		os=-luna
		;;
	*-next )
		os=-nextstep
		;;
	*-sequent)
		os=-ptx
		;;
	*-crds)
		os=-unos
		;;
	*-ns)
		os=-genix
		;;
	i370-*)
		os=-mvs
		;;
	*-next)
		os=-nextstep3
		;;
	*-gould)
		os=-sysv
		;;
	*-highlevel)
		os=-bsd
		;;
	*-encore)
		os=-bsd
		;;
	*-sgi)
		os=-irix
		;;
	*-siemens)
		os=-sysv4
		;;
	*-masscomp)
		os=-rtu
		;;
	f30[01]-fujitsu | f700-fujitsu)
		os=-uxpv
		;;
	*-rom68k)
		os=-coff
		;;
	*-*bug)
		os=-coff
		;;
	*-apple)
		os=-macos
		;;
	*-atari*)
		os=-mint
		;;
	*)
		os=-none
		;;
esac
fi

# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer.  We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
	*-unknown)
		case $os in
			-riscix*)
				vendor=acorn
				;;
			-sunos*)
				vendor=sun
				;;
			-cnk*|-aix*)
				vendor=ibm
				;;
			-beos*)
				vendor=be
				;;
			-hpux*)
				vendor=hp
				;;
			-mpeix*)
				vendor=hp
				;;
			-hiux*)
				vendor=hitachi
				;;
			-unos*)
				vendor=crds
				;;
			-dgux*)
				vendor=dg
				;;
			-luna*)
				vendor=omron
				;;
			-genix*)
				vendor=ns
				;;
			-mvs* | -opened*)
				vendor=ibm
				;;
			-os400*)
				vendor=ibm
				;;
			-ptx*)
				vendor=sequent
				;;
			-tpf*)
				vendor=ibm
				;;
			-vxsim* | -vxworks* | -windiss*)
				vendor=wrs
				;;
			-aux*)
				vendor=apple
				;;
			-hms*)
				vendor=hitachi
				;;
			-mpw* | -macos*)
				vendor=apple
				;;
			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
				vendor=atari
				;;
			-vos*)
				vendor=stratus
				;;
		esac
		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
		;;
esac

echo $basic_machine$os
exit

# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:


================================================
FILE: build/linux/configure
================================================
#!/bin/bash

if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
cat <<EOF
Usage: ./configure [options]

Help:
  -h, --help               print this message

Standard options:
  --prefix=PREFIX          install architecture-independent files in PREFIX
                           [/usr/local]
  --exec-prefix=EPREFIX    install architecture-dependent files in EPREFIX
                           [PREFIX]
  --bindir=DIR             install binaries in DIR [EPREFIX/bin]
  --libdir=DIR             install libs in DIR [EPREFIX/lib]
  --includedir=DIR         install includes in DIR [PREFIX/include]
  --extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS
  --extra-rcflags=ERCFLAGS add ERCFLAGS to RCFLAGS

Configuration options:
  --disable-cli            disable cli
  --system-libdavs2        use system libdavs2 instead of internal
  --enable-shared          build shared library
  --disable-static         disable building static library
  --disable-opencl         disable OpenCL features
  --disable-gpl            disable GPL-only features
  --disable-thread         disable multithreaded encoding
  --disable-win32thread    disable win32threads (windows only)
  --disable-interlaced     disable interlaced encoding support
  --bit-depth=BIT_DEPTH    set output bit depth (8-10) [8]
  --chroma-format=FORMAT   output chroma format (420, 422, 444, all) [all]

Advanced options:
  --disable-asm            disable platform-specific assembly optimizations
  --enable-lto             enable link-time optimization
  --enable-debug           add -g
  --enable-gprof           add -pg
  --enable-strip           add -s
  --enable-pic             build position-independent code

Cross-compilation:
  --host=HOST              build programs to run on HOST
  --cross-prefix=PREFIX    use PREFIX for compilation tools
  --sysroot=SYSROOT        root of cross-build tree

EOF
exit 1
fi

log_check() {
    echo -n "checking $1... " >> config.log
}

log_ok() {
    echo "yes" >> config.log
}

log_fail() {
    echo "no" >> config.log
}

log_msg() {
    echo "$1" >> config.log
}

cc_cflags() {
    # several non g++ compilers issue an incredibly large number of warnings on high warning levels,
    # suppress them by reducing the warning level rather than having to use #pragmas
    for arg in $*; do
        [[ "$arg" = -falign-loops* ]] && arg=
        [ "$arg" = -fno-tree-vectorize ] && arg=
        [ "$arg" = -Wshadow ] && arg=
        [ "$arg" = -Wno-maybe-uninitialized ] && arg=
        [[ "$arg" = -mpreferred-stack-boundary* ]] && arg=
        [[ "$arg" = -l* ]] && arg=
        [[ "$arg" = -L* ]] && arg=
        if [ $compiler_style = MS ]; then
            [ "$arg" = -ffast-math ] && arg="-fp:fast"
            [ "$arg" = -Wall ] && arg=
            [ "$arg" = -Werror ] && arg="-W3 -WX"
            [ "$arg" = -g ] && arg=-Z7
            [ "$arg" = -fomit-frame-pointer ] && arg=
            [ "$arg" = -s ] && arg=
            [ "$arg" = -fPIC ] && arg=
        else
            [ "$arg" = -ffast-math ] && arg=
            [ "$arg" = -Wall ] && arg=
            [ "$arg" = -Werror ] && arg="-w3 -Werror"
        fi
        [ $compiler = CL -a "$arg" = -O3 ] && arg=-O2

        [ -n "$arg" ] && echo -n "$arg "
    done
}

cl_ldflags() {
    for arg in $*; do
        arg=${arg/LIBPATH/libpath}
        [ "${arg#-libpath:}" == "$arg" -a "${arg#-l}" != "$arg" ] && arg=${arg#-l}.lib
        [ "${arg#-L}" != "$arg" ] && arg=-libpath:${arg#-L}
        [ "$arg" = -Wl,--large-address-aware ] && arg=-largeaddressaware
        [ "$arg" = -s ] && arg=
        [ "$arg" = -Wl,-Bsymbolic ] && arg=
        [ "$arg" = -fno-tree-vectorize ] && arg=
        [ "$arg" = -Werror ] && arg=
        [ "$arg" = -Wshadow ] && arg=
        [ "$arg" = -Wmaybe-uninitialized ] && arg=
        [[ "$arg" = -Qdiag-error* ]] && arg=

        arg=${arg/pthreadGC/pthreadVC}
        [ "$arg" = avifil32.lib ] && arg=vfw32.lib
        [ "$arg" = gpac_static.lib ] && arg=libgpac_static.lib
        [ "$arg" = davs2.lib ] && arg=libdavs2.lib

        [ -n "$arg" ] && echo -n "$arg "
    done
}

cc_check() {
    if [ -z "$3" ]; then
        if [ -z "$1$2" ]; then
            log_check "whether $CC works"
        elif [ -z "$1" ]; then
            log_check "for $2"
        else
            log_check "for $1"
        fi
    elif [ -z "$1" ]; then
        if [ -z "$2" ]; then
            log_check "whether $CC supports $3"
        else
            log_check "whether $CC supports $3 with $2"
        fi
    else
        log_check "for $3 in $1";
    fi
    rm -f conftest.c
    for arg in $1; do
        echo "#include <$arg>" >> conftest.c
    done
    echo "int main (void) { $3 return 0; }" >> conftest.c
    if [ $compiler_style = MS ]; then
        cc_cmd="$CC conftest.c $(cc_cflags $CFLAGS $CHECK_CFLAGS $2) -link $(cl_ldflags $2 $LDFLAGSCLI $LDFLAGS)"
    else
        cc_cmd="$CC conftest.c $CFLAGS $CHECK_CFLAGS $2 $LDFLAGSCLI $LDFLAGS -o conftest"
    fi
    if $cc_cmd >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "Failed commandline was:"
        log_msg "--------------------------------------------------"
        log_msg "$cc_cmd"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
        log_msg "Failed program was:"
        log_msg "--------------------------------------------------"
        cat conftest.c >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

cpp_check() {
    log_check "whether $3 is true"
    rm -f conftest.c
    for arg in $1; do
        echo "#include <$arg>" >> conftest.c
    done
    echo -e "#if !($3) \n#error $4 \n#endif " >> conftest.c
    if [ $compiler_style = MS ]; then
        cpp_cmd="$CC conftest.c $(cc_cflags $CFLAGS $2) -P"
    else
        cpp_cmd="$CC conftest.c $CFLAGS $2 -E -o conftest"
    fi
    if $cpp_cmd >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "--------------------------------------------------"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
        log_msg "Failed program was:"
        log_msg "--------------------------------------------------"
        cat conftest.c >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

as_check() {
    log_check "whether $AS supports $1"
    echo "$1" > conftest$AS_EXT
    as_cmd="$AS conftest$AS_EXT $ASFLAGS $2 -o conftest.o"
    if $as_cmd >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "Failed commandline was:"
        log_msg "--------------------------------------------------"
        log_msg "$as_cmd"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
        log_msg "Failed program was:"
        log_msg "--------------------------------------------------"
        cat conftest$AS_EXT >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

rc_check() {
    log_check "whether $RC works"
    echo "$1" > conftest.rc
    if [ $compiler = GNU ]; then
        rc_cmd="$RC $RCFLAGS -o conftest.o conftest.rc"
    else
        rc_cmd="$RC $RCFLAGS -foconftest.o conftest.rc"
    fi
    if $rc_cmd >conftest.log 2>&1; then
        res=$?
        log_ok
    else
        res=$?
        log_fail
        log_msg "Failed commandline was:"
        log_msg "--------------------------------------------------"
        log_msg "$rc_cmd"
        cat conftest.log >> config.log
        log_msg "--------------------------------------------------"
        log_msg "Failed program was:"
        log_msg "--------------------------------------------------"
        cat conftest.rc >> config.log
        log_msg "--------------------------------------------------"
    fi
    return $res
}

define() {
    echo "#define $1$([ -n "$2" ] && echo " $2" || echo " 1")" >> config.h
}

die() {
    log_msg "DIED: $@"
    echo "$@"
    exit 1
}

configure_system_override() {
    log_check "system libdavs2 configuration"
    davs2_config_path="$1/davs2_config.h"
    if [ -e "$davs2_config_path" ]; then
        res=$?
        log_ok
        arg="$(grep '#define DAVS2_GPL ' $davs2_config_path | sed -e 's/#define DAVS2_GPL *//; s/ *$//')"
        if [ -n "$arg" ]; then
            [ "$arg" = 0 ] && arg="no" || arg="yes"
            [ "$arg" != "$gpl" ] && die "Incompatible license with system libdavs2"
        fi
        arg="$(grep '#define DAVS2_BIT_DEPTH ' $davs2_config_path | sed -e 's/#define DAVS2_BIT_DEPTH *//; s/ *$//')"
        if [ -n "$arg" ]; then
            if [ "$arg" != "$bit_depth" ]; then
                echo "Override output bit depth with system libdavs2 configuration"
                bit_depth="$arg"
            fi
        fi
        arg="$(grep '#define DAVS2_CHROMA_FORMAT ' $davs2_config_path | sed -e 's/#define DAVS2_CHROMA_FORMAT *//; s/ *$//')"
        if [ -n "$arg" ]; then
            [ "$arg" = 0 ] && arg="all" || arg="${arg#DAVS2_CSP_I}"
            if [ "$arg" != "$chroma_format" ]; then
                echo "Override output chroma format with system libdavs2 configuration"
                chroma_format="$arg"
            fi
        fi
        arg="$(grep '#define DAVS2_INTERLACED ' $davs2_config_path | sed -e 's/#define DAVS2_INTERLACED *//; s/ *$//')"
        if [ -n "$arg" ]; then
            [ "$arg" = 0 ] && arg="no" || arg="yes"
            if [ "$arg" != "$interlaced" ]; then
                echo "Override interlaced encoding support with system libdavs2 configuration"
                interlaced="$arg"
            fi
        fi
    else
        res=$?
        log_fail
        log_msg "Failed search path was: $davs2_config_path"
    fi
    return $res
}

rm -f davs2_config.h config.h config.mak config.log davs2.pc davs2.def conftest*

# Construct a path to the specified directory relative to the working directory
relative_path() {
    local base="${PWD%/}"
    local path="$(cd "$1" >/dev/null; printf '%s/.' "${PWD%/}")"
    local up=''

    while [[ $path != "$base/"* ]]; do
        base="${base%/*}"
        up="../$up"
    done

    dirname "$up${path#"$base/"}"
}

SRCPATH="$(cd ../../source ; pwd)"
[ "$SRCPATH" = "$(pwd)" ] && SRCPATH=.
[ -n "$(echo $SRCPATH | grep ' ')" ] && die "Out of tree builds are impossible with whitespace in source path."

BUILDPATH="$(cd . ; pwd)"

echo "$SRCPATH" | grep -q ' ' && die "Out of tree builds are impossible with whitespace in source path."
echo "$BUILDPATH" | grep -q ' ' && die "Out of tree builds are impossible with whitespace in source path."
[ -e "$BUILDPATH/config.h" -o -e "$BUILDPATH/davs2_config.h" ] && die "Out of tree builds are impossible with config.h/davs2_config.h in source dir."

prefix='/usr/local'
exec_prefix='${prefix}'
bindir='${exec_prefix}/bin'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
DEVNULL='/dev/null'

cli="yes"
cli_libdavs2="internal"
shared="no"
static="yes"
gpl="yes"
thread="auto"
asm="auto"
interlaced="yes"
lto="no"
debug="no"
gprof="no"
strip="no"
pic="no"
bit_depth="8"
chroma_format="all"
compiler="GNU"
compiler_style="GNU"
opencl="no"
vsx="auto"

CFLAGS="$CFLAGS -Wall -I. -I\$(SRCPATH)"
LDFLAGS="$LDFLAGS"
LDFLAGSCLI="$LDFLAGSCLI"
ASFLAGS="$ASFLAGS -I. -I\$(SRCPATH)"
RCFLAGS="$RCFLAGS"
CHECK_CFLAGS=""
HAVE_GETOPT_LONG=1
cross_prefix=""

EXE=""
AS_EXT=".S"
NL="
"

# list of all preprocessor HAVE values we can define
CONFIG_HAVE="MALLOC_H ALTIVEC ALTIVEC_H MMX ARMV6 ARMV6T2 NEON BEOSTHREAD POSIXTHREAD WIN32THREAD THREAD LOG2F \
             GPL VECTOREXT INTERLACED CPU_COUNT OPENCL THP X86_INLINE_ASM AS_FUNC INTEL_DISPATCHER \
             MSA MMAP WINRT VSX"

# parse options

for opt do
    optarg="${opt#*=}"
    case "$opt" in
        --prefix=*)
            prefix="$optarg"
            ;;
        --exec-prefix=*)
            exec_prefix="$optarg"
            ;;
        --bindir=*)
            bindir="$optarg"
            ;;
        --libdir=*)
            libdir="$optarg"
            ;;
        --includedir=*)
            includedir="$optarg"
            ;;
        --disable-cli)
            cli="no"
            ;;
        --system-libdavs2)
            cli_libdavs2="system"
            ;;
        --enable-shared)
            shared="yes"
            ;;
        --disable-static)
            static="no"
            ;;
        --disable-asm)
            asm="no"
            ;;
        --disable-interlaced)
            interlaced="no"
            ;;
        --disable-gpl)
            gpl="no"
            ;;
        --extra-asflags=*)
            ASFLAGS="$ASFLAGS $optarg"
            ;;
        --extra-cflags=*)
            CFLAGS="$CFLAGS $optarg"
            ;;
        --extra-ldflags=*)
            LDFLAGS="$LDFLAGS $optarg"
            ;;
        --extra-rcflags=*)
            RCFLAGS="$RCFLAGS $optarg"
            ;;
        --disable-thread)
            thread="no"
            ;;
        --disable-win32thread)
            [ "$thread" != "no" ] && thread="posix"
            ;;
        --enable-lto)
            lto="auto"
            ;;
        --enable-debug)
            debug="yes"
            ;;
        --enable-gprof)
            CFLAGS="$CFLAGS -pg"
            LDFLAGS="$LDFLAGS -pg"
            gprof="yes"
            ;;
        --enable-strip)
            strip="yes"
            ;;
        --enable-pic)
            pic="yes"
            ;;
        --host=*)
            host="$optarg"
            ;;
        --disable-vsx)
            vsx="no"
            ;;
        --disable-opencl)
            opencl="no"
            ;;
        --cross-prefix=*)
            cross_prefix="$optarg"
            ;;
        --sysroot=*)
            CFLAGS="$CFLAGS --sysroot=$optarg"
            LDFLAGS="$LDFLAGS --sysroot=$optarg"
            ;;
        --bit-depth=*)
            bit_depth="$optarg"
            if [ "$bit_depth" -lt "8" -o "$bit_depth" -gt "10" ]; then
                echo "Supplied bit depth must be in range [8,10]."
                exit 1
            elif [[ "$bit_depth" = "9" || "$bit_depth" = "10" ]]; then
                echo "BitDepth $bit_depth not supported currently."
                exit 1
            fi
            bit_depth=`expr $bit_depth + 0`
            ;;
        --chroma-format=*)
            chroma_format="$optarg"
            if [ $chroma_format != "420" -a $chroma_format != "422" -a $chroma_format != "444" -a $chroma_format != "all" ]; then
                echo "Supplied chroma format must be 420, 422, 444 or all."
                exit 1
            fi
            ;;
        *)
            echo "Unknown option $opt, ignored"
            ;;
    esac
done

[ "$cli" = "no" -a "$shared" = "no" -a "$static" = "no" ] && die "Nothing to build. Enable cli, shared or static."

CC="${CC-${cross_prefix}g++}"
STRIP="${STRIP-${cross_prefix}strip}"
INSTALL="${INSTALL-install}"
PKGCONFIG="${PKGCONFIG-${cross_prefix}pkg-config}"

# ar and ranlib doesn't load the LTO plugin by default, prefer the g++-prefixed wrappers which does.
if ${cross_prefix}g++-ar --version >/dev/null 2>&1; then
    AR="${AR-${cross_prefix}g++-ar}"
else
    AR="${AR-${cross_prefix}ar}"
fi
if ${cross_prefix}g++-ranlib --version >/dev/null 2>&1; then
    RANLIB="${RANLIB-${cross_prefix}g++-ranlib}"
else
    RANLIB="${RANLIB-${cross_prefix}ranlib}"
fi

if [ "x$host" = x ]; then
    host=`${BUILDPATH}/config.guess`
fi
# normalize a triplet into a quadruplet
host=`${BUILDPATH}/config.sub $host`

# split $host
host_cpu="${host%%-*}"
host="${host#*-}"
host_vendor="${host%%-*}"
host_os="${host#*-}"

trap 'rm -f conftest*' EXIT

# test for use of compilers that require specific handling
cc_base=`basename "$CC"`
QPRE="-"
if [[ $host_os = mingw* || $host_os = cygwin* ]]; then
    if [[ "$cc_base" = icl || "$cc_base" = icl[\ .]* ]]; then
        # Windows Intel Compiler creates dependency generation with absolute Windows paths, Cygwin's make does not support Windows paths.
        [[ $host_os = cygwin* ]] && die "Windows Intel Compiler support requires MSYS"
        compiler=ICL
        compiler_style=MS
        CFLAGS="$CFLAGS -Qstd=c99 -nologo -Qms0 -DHAVE_STRING_H -I\$(SRCPATH)/extras"
        QPRE="-Q"
        `$CC 2>&1 | grep -q IA-32` && host_cpu=i486
        `$CC 2>&1 | grep -q "Intel(R) 64"` && host_cpu=x86_64
        cpp_check "" "" "_MSC_VER >= 1400" || die "Windows Intel Compiler support requires Visual Studio 2005 or newer"
        if cc_check '' -Qdiag-error:10006,10157 ; then
            CHECK_CFLAGS="$CHECK_CFLAGS -Qdiag-error:10006,10157"
        fi
    elif [[ "$cc_base" = cl || "$cc_base" = cl[\ .]* ]]; then
        # Standard Microsoft Visual Studio
        compiler=CL
        compiler_style=MS
        CFLAGS="$CFLAGS -nologo -GS- -DHAVE_STRING_H -I\$(SRCPATH)/extras"
        `$CC 2>&1 | grep -q 'x86'` && host_cpu=i486
        `$CC 2>&1 | grep -q 'x64'` && host_cpu=x86_64
        cpp_check '' '' '_MSC_VER > 1800 || (_MSC_VER == 1800 && _MSC_FULL_VER >= 180030324)' || die "Microsoft Visual Studio support requires Visual Studio 2013 Update 2 or newer"
    else
        # MinGW uses broken pre-VS2015 Microsoft printf functions unless it's told to use the POSIX ones.
        CFLAGS="$CFLAGS -D_POSIX_C_SOURCE=200112L"
    fi
else
    if [[ "$cc_base" = icc || "$cc_base" = icc[\ .]* ]]; then
        AR="xiar"
        compiler=ICC
    fi
fi

if [[ "$cc_base" = clang* ]]; then
    if cc_check '' -Werror=unknown-warning-option ; then
        CHECK_CFLAGS="$CHECK_CFLAGS -Werror=unknown-warning-option"
    fi
fi

libm=""
case $host_os in
    beos*)
        SYS="BEOS"
        define HAVE_MALLOC_H
        ;;
    darwin*)
        SYS="MACOSX"
        libm="-lm"
        if [ "$pic" = "no" ]; then
            cc_check "" -mdynamic-no-pic && CFLAGS="$CFLAGS -mdynamic-no-pic"
        fi
        # TODO: Fix compiling error under mac osx (force disabled now)
        asm="no"
        ;;
    freebsd*)
        SYS="FREEBSD"
        libm="-lm"
        ;;
    kfreebsd*-gnu)
        SYS="FREEBSD"
        define HAVE_MALLOC_H
        libm="-lm"
        ;;
    netbsd*)
        SYS="NETBSD"
        libm="-lm"
        ;;
    openbsd*)
        SYS="OPENBSD"
        libm="-lm"
        ;;
    *linux*)
        SYS="LINUX"
        define HAVE_MALLOC_H
        libm="-lm"
        ;;
    gnu*)
        SYS="HURD"
        define HAVE_MALLOC_H
        libm="-lm"
        ;;
    cygwin*|mingw*|msys*)
        EXE=".exe"
        if [[ $host_os = cygwin* ]] && cpp_check "" "" "defined(__CYGWIN__)" ; then
            SYS="CYGWIN"
            define HAVE_MALLOC_H
        else
            SYS="WINDOWS"
            DEVNULL="NUL"
            LDFLAGSCLI="$LDFLAGSCLI -lshell32"
            [ $compiler = GNU ] && RC="${RC-${cross_prefix}windres}" || RC="${RC-rc}"
        fi
        ;;
    sunos*|solaris*)
        SYS="SunOS"
        define HAVE_MALLOC_H
        libm="-lm"
        if cc_check "" /usr/lib/64/values-xpg6.o; then
            LDFLAGS="$LDFLAGS /usr/lib/64/values-xpg6.o"
        else
            LDFLAGS="$LDFLAGS /usr/lib/values-xpg6.o"
        fi
        if test -x /usr/ucb/install ; then
            INSTALL=/usr/ucb/install
        elif test -x /usr/bin/ginstall ; then
            # OpenSolaris
            INSTALL=/usr/bin/ginstall
        elif test -x /usr/gnu/bin/install ; then
            # OpenSolaris
            INSTALL=/usr/gnu/bin/install
        fi
        HAVE_GETOPT_LONG=0
        ;;
    *qnx*)
        SYS="QNX"
        define HAVE_MALLOC_H
        libm="-lm"
        HAVE_GETOPT_LONG=0
        CFLAGS="$CFLAGS -I\$(SRCPATH)/extras"
        ;;
    *haiku*)
        SYS="HAIKU"
        ;;
    *)
        die "Unknown system $host, edit the configure"
        ;;
esac

LDFLAGS="$LDFLAGS $libm"

stack_alignment=4
case $host_cpu in
    i*86)
        ARCH="X86"
        AS="${AS-nasm}"
        AS_EXT=".asm"
        CFLAGS="$CFLAGS -DARCH_X86_64=0"
        ASFLAGS="$ASFLAGS -DARCH_X86_64=0 -I\$(SRCPATH)/common/x86/"
        if [ $compiler = GNU ]; then
            if [[ "$asm" == auto && "$CFLAGS" != *-march* ]]; then
                CFLAGS="$CFLAGS -march=i686"
            fi
            if [[ "$asm" == auto && "$CFLAGS" != *-mfpmath* ]]; then
                CFLAGS="$CFLAGS -mfpmath=sse -msse -msse2"
            fi
            CFLAGS="-m32 $CFLAGS"
            LDFLAGS="-m32 $LDFLAGS"
        fi
        if [ "$SYS" = MACOSX ]; then
            ASFLAGS="$ASFLAGS -f macho32 -DPREFIX"
        elif [ "$SYS" = WINDOWS -o "$SYS" = CYGWIN ]; then
            ASFLAGS="$ASFLAGS -f win32 -DPREFIX"
            LDFLAGS="$LDFLAGS -Wl,--large-address-aware"
            [ $compiler = GNU ] && LDFLAGS="$LDFLAGS -Wl,--dynamicbase,--nxcompat,--tsaware"
            [ $compiler = GNU ] && RCFLAGS="--target=pe-i386 $RCFLAGS"
        else
            ASFLAGS="$ASFLAGS -f elf32"
        fi
        ;;
    x86_64)
        ARCH="X86_64"
        AS="${AS-nasm}"
        AS_EXT=".asm"
        CFLAGS="$CFLAGS -DARCH_X86_64=1"
        ASFLAGS="$ASFLAGS -DARCH_X86_64=1 -I\$(SRCPATH)/common/x86/"
        stack_alignment=16
        [ $compiler = GNU ] && CFLAGS="-m64 $CFLAGS" && LDFLAGS="-m64 $LDFLAGS"
        if [ "$SYS" = MACOSX ]; then
            ASFLAGS="$ASFLAGS -f macho64 -DPIC -DPREFIX"
            if cc_check '' "-arch x86_64"; then
                CFLAGS="$CFLAGS -arch x86_64"
                LDFLAGS="$LDFLAGS -arch x86_64"
            fi
        elif [ "$SYS" = WINDOWS -o "$SYS" = CYGWIN ]; then
            ASFLAGS="$ASFLAGS -f win64"
            if [ $compiler = GNU ]; then
                # only the GNU toolchain is inconsistent in prefixing function names with _
                cc_check "" "-S" && grep -q "_main:" conftest && ASFLAGS="$ASFLAGS -DPREFIX"
                cc_check "" "-Wl,--high-entropy-va" && LDFLAGS="$LDFLAGS -Wl,--high-entropy-va"
                LDFLAGS="$LDFLAGS -Wl,--dynamicbase,--nxcompat,--tsaware"
                LDFLAGSCLI="$LDFLAGSCLI -Wl,--image-base,0x140000000"
                SOFLAGS="$SOFLAGS -Wl,--image-base,0x180000000"
                RCFLAGS="--target=pe-x86-64 $RCFLAGS"
            fi
        else
            ASFLAGS="$ASFLAGS -f elf64"
        fi
        ;;
    powerpc*)
        ARCH="PPC"
        if [ $asm = auto ] ; then
            define HAVE_ALTIVEC
            AS="${AS-${CC}}"
            AS_EXT=".c"
            if [ $SYS = MACOSX ] ; then
                CFLAGS="$CFLAGS -faltivec -fastf -mcpu=G4"
            else
                CFLAGS="$CFLAGS -maltivec -mabi=altivec"
                define HAVE_ALTIVEC_H
            fi
            if [ "$vsx" != "no" ] ; then
                vsx="no"
                if cc_check "" "-mvsx" ; then
                    CFLAGS="$CFLAGS -mvsx"
                    define HAVE_VSX
                    vsx="yes"
                fi
            fi
        fi
        ;;
    sparc)
        ARCH="SPARC"
        ;;
    mips*)
        ARCH="MIPS"
        AS="${AS-${CC}}"
        AS_EXT=".c"
        ;;
    arm*)
        ARCH="ARM"
        if [ "$SYS" = MACOSX ] ; then
            AS="${AS-${SRCPATH}/tools/gas-preprocessor.pl -arch arm -- ${CC}}"
            ASFLAGS="$ASFLAGS -DPREFIX -DPIC"  # apple's ld doesn't support movw/movt relocations at all
            # build for armv7 by default
            if ! echo $CFLAGS | grep -Eq '\-arch' ; then
                CFLAGS="$CFLAGS -arch armv7"
                LDFLAGS="$LDFLAGS -arch armv7"
            fi
        else
            AS="${AS-${CC}}"
        fi
        ;;
    aarch64)
        ARCH="AARCH64"
        stack_alignment=16
        if [ "$SYS" = MACOSX ] ; then
            AS="${AS-${SRCPATH}/tools/gas-preprocessor.pl -arch aarch64 -- ${CC}}"
            ASFLAGS="$ASFLAGS -DPREFIX"
        else
            AS="${AS-${CC}}"
        fi
        ;;
    s390|s390x)
        ARCH="S390"
        ;;
    hppa*|parisc*)
        ARCH="PARISC"
        ;;
    ia64)
        ARCH="IA64"
        ;;
    alpha*)
        ARCH="ALPHA"
        ;;
    *)
        ARCH="$(echo $host_cpu | tr a-z A-Z)"
        ;;
esac

[ "$vsx" != "yes" ] && vsx="no"

if [ $SYS = WINDOWS ]; then
    if ! rc_check "0 RCDATA {0}" ; then
        RC=""
    fi

    if cpp_check "winapifamily.h" "" "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" ; then
        [ $compiler = CL ] || die "WinRT requires MSVC"
        define HAVE_WINRT
        CFLAGS="$CFLAGS -MD"
        LDFLAGS="$LDFLAGS -appcontainer"
        if ! cpp_check "" "" "defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0603" ; then
            die "_WIN32_WINNT must be defined to at least 0x0603 (Windows 8.1) for WinRT"
        elif cpp_check "" "" "_WIN32_WINNT >= 0x0A00" ; then
            # Universal Windows Platform (Windows 10)
            LDFLAGS="$LDFLAGS -lWindowsApp"
        fi
        cli="no"
        opencl="no"
    fi
fi

log_msg "davs2 configure script"
if [ -n "$*" ]; then
    msg="Command line options:"
    for i in $@; do
        msg="$msg \"$i\""
    done
    log_msg "$msg"
fi
log_msg ""

# check requirements

cc_check || die "No working C compiler found."

if [ $compiler_style = GNU ]; then
    if cc_check '' -std=gnu++11 'for( int i = 0; i < 9; i++ );' ; then
        CFLAGS="$CFLAGS -std=gnu++11 -D_GNU_SOURCE"
    elif ! cc_check '' '' 'for( int i = 0; i < 9; i++ );' ; then
        die "GNU++11 compiler is needed for compilation."
    fi
fi

if [ $shared = yes -a \( $ARCH = "X86_64" -o $ARCH = "PPC" -o $ARCH = "ALPHA" -o $ARCH = "ARM" -o $ARCH = "IA64" -o $ARCH = "PARISC" -o $ARCH = "MIPS" -o $ARCH = "AARCH64" \) ] ; then
    pic="yes"
fi

if [ $compiler = GNU -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then
    if cc_check '' -mpreferred-stack-boundary=5 ; then
        CFLAGS="$CFLAGS -mpreferred-stack-boundary=5"
        stack_alignment=32
    elif [ $stack_alignment -lt 16 ] && cc_check '' -mpreferred-stack-boundary=4 ; then
        CFLAGS="$CFLAGS -mpreferred-stack-boundary=4"
        stack_alignment=16
    fi
elif [ $compiler = ICC -a $ARCH = X86 ]; then
    # icc on linux has various degrees of mod16 stack support
    if [ $SYS = LINUX ]; then
        # >= 12 defaults to a mod16 stack
        if cpp_check "" "" "__INTEL_COMPILER >= 1200" ; then
            stack_alignment=16
        # 11 <= x < 12 is capable of keeping a mod16 stack, but defaults to not doing so.
        elif cpp_check "" "" "__INTEL_COMPILER >= 1100" ; then
            CFLAGS="$CFLAGS -falign-stack=assume-16-byte"
            stack_alignment=16
        fi
        # < 11 is completely incapable of keeping a mod16 stack
    fi
fi

if [ $asm = auto -a \( $ARCH = X86 -o $ARCH = X86_64 \) ] ; then
    if ! as_check "vmovdqa32 [eax]{k1}{z}, zmm0" ; then
        VER="$(($AS --version || echo no assembler) 2>/dev/null | head -n 1)"
        echo "Found $VER"
        echo "Minimum version is nasm-2.13"
        echo "If you really want to compile without asm, configure with --disable-asm."
        exit 1
    fi
    cc_check '' '' '__asm__("pabsw %xmm0, %xmm0");' && define HAVE_X86_INLINE_ASM
    ASFLAGS="$ASFLAGS -Worphan-labels"
    define HAVE_MMX
fi

if [ $asm = auto -a $ARCH = ARM ] ; then
    # set flags so neon is built by default
    echo $CFLAGS | grep -Eq '(-mcpu|-march|-mfpu)' || CFLAGS="$CFLAGS -mcpu=cortex-a8 -mfpu=neon"

    if  cc_check '' '' '__asm__("rev ip, ip");' ; then      define HAVE_ARMV6
        cc_check '' '' '__asm__("movt r0, #0");'         && define HAVE_ARMV6T2
        cc_check '' '' '__asm__("vadd.i16 q0, q0, q0");' && define HAVE_NEON
        ASFLAGS="$ASFLAGS -c"
    else
        echo "You specified a pre-ARMv6 or Thumb-1 CPU in your CFLAGS."
        echo "If you really want to run on such a CPU, configure with --disable-asm."
        exit 1
    fi
fi

if [ $asm = auto -a $ARCH = AARCH64 ] ; then
    if  cc_check '' '' '__asm__("cmeq v0.8h, v0.8h, #0");' ; then define HAVE_NEON
        ASFLAGS="$ASFLAGS -c"
    else
        echo "no NEON support, try adding -mfpu=neon to CFLAGS"
        echo "If you really want to run on such a CPU, configure with --disable-asm."
        exit 1
    fi
fi

if [ $asm = auto -a \( $ARCH = ARM -o $ARCH = AARCH64 \) ] ; then
    # check if the assembler supports '.func' (clang 3.5 does not)
    as_check ".func test${NL}.endfunc" && define HAVE_AS_FUNC 1
fi

if [ $asm = auto -a $ARCH = MIPS ] ; then
    if ! echo $CFLAGS | grep -Eq '(-march|-mmsa|-mno-msa)' ; then
        cc_check '' '-mmsa -mfp64 -mhard-float' && CFLAGS="-mmsa -mfp64 -mhard-float $CFLAGS"
    fi

    if cc_check '' '' '__asm__("addvi.b $w0, $w1, 1");' ; then
        define HAVE_MSA
    else
        echo "You specified a pre-MSA CPU in your CFLAGS."
        echo "If you really want to run on such a CPU, configure with --disable-asm."
        exit 1
    fi
fi

[ $asm = no ] && AS=""
[ "x$AS" = x ] && asm="no" || asm="yes"

define ARCH_$ARCH
define SYS_$SYS

define STACK_ALIGNMENT $stack_alignment
ASFLAGS="$ASFLAGS -DSTACK_ALIGNMENT=$stack_alignment"

# skip endianness check for Intel Compiler and MSVS, as all supported platforms are little. each have flags that will cause the check to fail as well
CPU_ENDIAN="little-endian"
if [ $compiler = GNU ]; then
    echo "int i[2] = {0x42494745,0}; double f[2] = {0x1.0656e6469616ep+102,0};" > conftest.c
    $CC $CFLAGS conftest.c -c -o conftest.o 2>/dev/null || die "endian test failed"
    if (${cross_prefix}strings -a conftest.o | grep -q BIGE) && (${cross_prefix}strings -a conftest.o | grep -q FPendian) ; then
        define WORDS_BIGENDIAN
        CPU_ENDIAN="big-endian"
    elif !(${cross_prefix}strings -a conftest.o | grep -q EGIB && ${cross_prefix}strings -a conftest.o | grep -q naidnePF) ; then
        die "endian test failed"
    fi
fi

if [ "$cli_libdavs2" = "system" -a "$shared" != "yes" ] ; then
    [ "$static" = "yes" ] && die "Option --system-libdavs2 can not be used together with --enable-static"
    if $PKGCONFIG --exists davs2 2>/dev/null; then
        DAVS2_LIBS="$($PKGCONFIG --libs davs2)"
        DAVS2_INCLUDE_DIR="${DAVS2_INCLUDE_DIR-$($PKGCONFIG --variable=includedir davs2)}"
        configure_system_override "$DAVS2_INCLUDE_DIR" || die "Detection of system libdavs2 configuration failed"
    else
        die "Can not find system libdavs2"
    fi
fi

# autodetect options that weren't forced nor disabled

libpthread=""
if [ "$SYS" = "WINDOWS" -a "$thread" = "posix" ] ; then
    if [ "$gpl" = "no" ] ; then
        echo "Warning: pthread-win32 is LGPL and is therefore not supported with --disable-gpl"
        thread="no"
    elif cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then
        libpthread="-lpthread"
    elif cc_check pthread.h -lpthreadGC2 "pthread_create(0,0,0,0);" ; then
        libpthread="-lpthreadGC2"
    elif cc_check pthread.h "-lpthreadGC2 -lwsock32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
        libpthread="-lpthreadGC2 -lwsock32"
        define PTW32_STATIC_LIB
    elif cc_check pthread.h "-lpthreadGC2 -lws2_32 -DPTW32_STATIC_LIB" "pthread_create(0,0,0,0);" ; then
        libpthread="-lpthreadGC2 -lws2_32"
        define PTW32_STATIC_LIB
    else
        thread="no"
    fi
elif [ "$thread" != "no" ] ; then
    thread="no"
    case $SYS in
        BEOS)
            thread="beos"
            define HAVE_BEOSTHREAD
            ;;
        WINDOWS)
            thread="win32"
            define HAVE_WIN32THREAD
            ;;
        QNX)
            cc_check pthread.h -lc "pthread_create(0,0,0,0);" && thread="posix" && libpthread="-lc"
            ;;
        *)
            if cc_check pthread.h -lpthread "pthread_create(0,0,0,0);" ; then
               thread="posix"
               libpthread="-lpthread"
            else
                cc_check pthread.h "" "pthread_create(0,0,0,0);" && thread="posix" && libpthread=""
            fi
            ;;
    esac
fi
if [ "$thread" = "posix" ]; then
    LDFLAGS="$LDFLAGS $libpthread"
    define HAVE_POSIXTHREAD
    if [ "$SYS" = "LINUX" ] && cc_check sched.h "-D_GNU_SOURCE -Werror" "cpu_set_t p_aff; return CPU_COUNT(&p_aff);" ; then
        define HAVE_CPU_COUNT
    fi
fi
[ "$thread" != "no" ] && define HAVE_THREAD

if cc_check "math.h" "-Werror" "return log2f(2);" ; then
    define HAVE_LOG2F
fi

if [ "$SYS" != "WINDOWS" ] && cpp_check "sys/mman.h unistd.h" "" "defined(MAP_PRIVATE)"; then
    define HAVE_MMAP
fi

if [ "$SYS" = "LINUX" -a \( "$ARCH" = "X86" -o "$ARCH" = "X86_64" \) ] && cc_check "sys/mman.h" "" "MADV_HUGEPAGE;" ; then
    define HAVE_THP
fi

cc_check "stdint.h" "" "uint32_t test_vec __attribute__ ((vector_size (16))) = {0,1,2,3};" && define HAVE_VECTOREXT

if [ "$pic" = "yes" ] ; then
    [ "$SYS" != WINDOWS -a "$SYS" != CYGWIN ] && CFLAGS="$CFLAGS -fPIC"
    ASFLAGS="$ASFLAGS -DPIC"
    # resolve textrels in the x86 asm
    cc_check stdio.h "-shared -Wl,-Bsymbolic" && SOFLAGS="$SOFLAGS -Wl,-Bsymbolic"
    [ $SYS = SunOS -a "$ARCH" = "X86" ] && SOFLAGS="$SOFLAGS -mimpure-text"
fi

if [ "$debug" != "yes" -a "$gprof" != "yes" ]; then
    CFLAGS="$CFLAGS -fomit-frame-pointer"
fi

if [ "$strip" = "yes" ]; then
    LDFLAGS="$LDFLAGS -s"
fi

if [ "$debug" = "yes" ]; then
    CFLAGS="-O1 -g $CFLAGS"
    RCFLAGS="$RCFLAGS -DDEBUG"
else
    CFLAGS="-O3 -ffast-math $CFLAGS"
    if [ "$lto" = "auto" ] && [ $compiler = GNU ] && cc_check "" "-flto" ; then
        lto="yes"
        CFLAGS="$CFLAGS -flto"
        LDFLAGS="$LDFLAGS -O3 -flto"
    fi
fi
[ "$lto" = "auto" ] && lto="no"

if cc_check '' -fno-tree-vectorize ; then
    CFLAGS="$CFLAGS -fno-tree-vectorize"
fi

if [ $SYS = WINDOWS -a $ARCH = X86 -a $compiler = GNU ] ; then
    # workaround g++/ld bug with alignment of static variables/arrays that are initialized to zero
    cc_check '' -fno-zero-initialized-in-bss && CFLAGS="$CFLAGS -fno-zero-initialized-in-bss"
fi

if cc_check '' -Wshadow ; then
    CFLAGS="-Wshadow $CFLAGS"
fi

if cc_check '' -Wmaybe-uninitialized ; then
    if [ $SYS = MACOSX ] ; then
        CFLAGS="-Wno-uninitialized $CFLAGS"
    else
        CFLAGS="-Wno-maybe-uninitialized $CFLAGS"
    fi
fi

if [ $compiler = ICC -o $compiler = ICL ] ; then
    if cc_check 'extras/intel_dispatcher.h' '' 'davs2_intel_dispatcher_override();' ; then
        define HAVE_INTEL_DISPATCHER
    fi
fi

if [ "$bit_depth" -gt "8" ]; then
    define HIGH_BIT_DEPTH
    ASFLAGS="$ASFLAGS -DHIGH_BIT_DEPTH=1"
    CFLAGS+=" -DHIGH_BIT_DEPTH=1"
    opencl="no"
else
    ASFLAGS="$ASFLAGS -DHIGH_BIT_DEPTH=0"
    CFLAGS+=" -DHIGH_BIT_DEPTH=0"
fi

if [ "$chroma_format" != "all" ]; then
    define CHROMA_FORMAT CHROMA_$chroma_format
fi

ASFLAGS="$ASFLAGS -DBIT_DEPTH=$bit_depth"
CFLAGS+=" -DBIT_DEPTH=$bit_depth"

[ $gpl = yes ] && define HAVE_GPL && davs2_gpl=1 || davs2_gpl=0

[ $interlaced = yes ] && define HAVE_INTERLACED && davs2_interlaced=1 || davs2_interlaced=0

libdl=""
if [ "$opencl" = "yes" ]; then
    opencl="no"
    # cygwin can use opencl if it can use LoadLibrary
    if [ $SYS = WINDOWS ] || ([ $SYS = CYGWIN ] && cc_check windows.h "" "LoadLibraryW(0);") ; then
        opencl="yes"
        define HAVE_OPENCL
    elif [ "$SYS" = "LINUX" -o "$SYS" = "MACOSX" ] ; then
        opencl="yes"
        define HAVE_OPENCL
        libdl="-ldl"
    fi
    LDFLAGS="$LDFLAGS $libdl"
fi

#define undefined vars as 0
for var in $CONFIG_HAVE; do
    grep -q "HAVE_$var 1" config.h || define HAVE_$var 0
done

# generate exported config file

config_chroma_format="DAVS2_CSP_I$chroma_format"
[ "$config_chroma_format" == "DAVS2_CSP_Iall" ] && config_chroma_format="0"
cat > davs2_config.h << EOF
#define DAVS2_BIT_DEPTH     $bit_depth
#define DAVS2_GPL           $davs2_gpl
#define DAVS2_INTERLACED    $davs2_interlaced
#define DAVS2_CHROMA_FORMAT $config_chroma_format
EOF

# generate version.h
cd ${SRCPATH}/..
./version.sh >> ${BUILDPATH}/davs2_config.h
cd ${BUILDPATH}

if [ "$cli_libdavs2" = "system" ] ; then
    if [ "$shared" = "yes" ]; then
        CLI_LIBDAVS2='$(SONAME)'
    else
        CLI_LIBDAVS2=
        LDFLAGSCLI="$DAVS2_LIBS $LDFLAGSCLI"
        cc_check 'stdint.h davs2.h' '' 'davs2_encoder_open(0);' || die "System libdavs2 can't be used for compilation of this version"
    fi
else
    CLI_LIBDAVS2='$(LIBDAVS2)'
fi

DEPMM="${QPRE}MM"
DEPMT="${QPRE}MT"
if [ $compiler_style = MS ]; then
    AR="lib -nologo -out:"
    LD="link -out:"
    if [ $compiler = ICL ]; then
        AR="xi$AR"
        LD="xi$LD"
    else
        mslink="$(dirname "$(command -v cl 2>/dev/null)")/link"
        [ -x "$mslink" ] && LD="\"$mslink\" -out:"
    fi
    HAVE_GETOPT_LONG=0
    LDFLAGS="-nologo -incremental:no $(cl_ldflags $LDFLAGS)"
    LDFLAGSCLI="$(cl_ldflags $LDFLAGSCLI)"
    LIBDAVS2=libdavs2.lib
    RANLIB=
    [ -n "$RC" ] && RCFLAGS="$RCFLAGS -nologo -I. -I\$(SRCPATH)/extras -fo"
    STRIP=
    if [ $debug = yes ]; then
        LDFLAGS="-debug $LDFLAGS"
        CFLAGS="-D_DEBUG $CFLAGS"
    else
        CFLAGS="-DNDEBUG $CFLAGS"
    fi
else # g++/icc
    DEPMM="$DEPMM -g0"
    AR="$AR rc "
    LD="$CC -o "
    LIBDAVS2=libdavs2.a
    [ -n "$RC" ] && RCFLAGS="$RCFLAGS -I. -o "
fi
[ $compiler != GNU ] && CFLAGS="$(cc_cflags $CFLAGS)"
if [ $compiler = ICC -o $compiler = ICL ]; then
    # icc does not define __SSE__ until SSE2 optimization and icl never defines it or _M_IX86_FP
    [ \( $ARCH = X86_64 -o $ARCH = X86 \) -a $asm = yes ] && ! cpp_check "" "" "defined(__SSE__)" && define __SSE__
    PROF_GEN_CC="${QPRE}prof-gen ${QPRE}prof-dir."
    PROF_GEN_LD=
    PROF_USE_CC="${QPRE}prof-use ${QPRE}prof-dir."
    PROF_USE_LD=
elif [ $compiler = CL ]; then
    # Visual Studio
    # _M_IX86_FP is only defined on x86
    [ $ARCH = X86 ] && cpp_check '' '' '_M_IX86_FP >= 1' && define __SSE__
    [ $ARCH = X86_64 ] && define __SSE__
    # As long as the cli application can't link against the dll, the dll can not be pgo'd.
    # pgds are link flag specific and the -dll flag for creating the dll makes it unshareable with the cli
    PROF_GEN_CC="-GL"
    PROF_GEN_LD="-LTCG:PGINSTRUMENT"
    PROF_USE_CC="-GL"
    PROF_USE_LD="-LTCG:PGOPTIMIZE"
else
    PROF_GEN_CC="-fprofile-generate"
    PROF_GEN_LD="-fprofile-generate"
    PROF_USE_CC="-fprofile-use"
    PROF_USE_LD="-fprofile-use"
fi

# generate config files

cat > config.mak << EOF
SRCPATH=$SRCPATH
prefix=$prefix
exec_prefix=$exec_prefix
bindir=$bindir
libdir=$libdir
includedir=$includedir
SYS_ARCH=$ARCH
SYS=$SYS
CC=$CC
CFLAGS=$CFLAGS
COMPILER=$compiler
COMPILER_STYLE=$compiler_style
DEPMM=$DEPMM
DEPMT=$DEPMT
LD=$LD
LDFLAGS=$LDFLAGS
LIBDAVS2=$LIBDAVS2
AR=$AR
RANLIB=$RANLIB
STRIP=$STRIP
INSTALL=$INSTALL
AS=$AS
ASFLAGS=$ASFLAGS
RC=$RC
RCFLAGS=$RCFLAGS
EXE=$EXE
HAVE_GETOPT_LONG=$HAVE_GETOPT_LONG
DEVNULL=$DEVNULL
PROF_GEN_CC=$PROF_GEN_CC
PROF_GEN_LD=$PROF_GEN_LD
PROF_USE_CC=$PROF_USE_CC
PROF_USE_LD=$PROF_USE_LD
HAVE_OPENCL=$opencl
EOF

if [ $compiler_style = MS ]; then
    echo '%.o: %.c' >> config.mak
    echo '	$(CC) $(CFLAGS) -c -Fo$@ $<' >> config.mak
fi

if [ "$cli" = "yes" ]; then
    echo 'default: cli' >> config.mak
    echo 'install: install-cli' >> config.mak
fi

if [ "$shared" = "yes" ]; then
    API=$(grep '#define DAVS2_BUILD' < ${BUILDPATH}/davs2_config.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/')
    if [ "$SYS" = "WINDOWS" -o "$SYS" = "CYGWIN" ]; then
        echo "SONAME=libdavs2-$API.dll" >> config.mak
        if [ $compiler_style = MS ]; then
            echo 'IMPLIBNAME=libdavs2.dll.lib' >> config.mak
            # GNU ld on windows defaults to exporting all global functions if there are no explicit __declspec(dllexport) declarations
            # MSVC link does not act similarly, so it is required to make an export definition out of davs2.h and use it at link time
            echo "SOFLAGS=-dll -def:davs2.def -implib:\$(IMPLIBNAME) $SOFLAGS" >> config.mak
            echo "EXPORTS" > davs2.def
            # export API functions
            grep "^\(int\|void\|davs2_t\).*davs2" ${SRCPATH}/davs2.h | sed -e "s/.*\(davs2.*\)(.*/\1/;s/open/open_$API/g" >> davs2.def
            # export API variables/data. must be flagged with the DATA keyword
            grep "extern.*davs2" ${SRCPATH}/davs2.h | sed -e "s/.*\(davs2\w*\)\W.*/\1 DATA/;" >> davs2.def
        else
            echo 'IMPLIBNAME=libdavs2.dll.a' >> config.mak
            echo "SOFLAGS=-shared -Wl,--out-implib,\$(IMPLIBNAME) $SOFLAGS" >> config.mak
        fi
    elif [ "$SYS" = "MACOSX" ]; then
        echo "SOSUFFIX=dylib" >> config.mak
        echo "SONAME=libdavs2.$API.dylib" >> config.mak
        echo "SOFLAGS=-shared -dynamiclib -Wl,-single_module -Wl,-read_only_relocs,suppress -install_name \$(DESTDIR)\$(libdir)/\$(SONAME) $SOFLAGS" >> config.mak
    elif [ "$SYS" = "SunOS" ]; then
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libdavs2.so.$API" >> config.mak
        echo "SOFLAGS=-shared -Wl,-h,\$(SONAME) $SOFLAGS" >> config.mak
    else
        echo "SOSUFFIX=so" >> config.mak
        echo "SONAME=libdavs2.so.$API" >> config.mak
        echo "SOFLAGS=-shared -Wl,-soname,\$(SONAME) $SOFLAGS" >> config.mak
    fi
    echo 'default: lib-shared' >> config.mak
    echo 'install: install-lib-shared' >> config.mak
fi

if [ "$static" = "yes" ]; then
    echo 'default: lib-static' >> config.mak
    echo 'install: install-lib-static' >> config.mak
fi

echo "LDFLAGSCLI = $LDFLAGSCLI" >> config.mak
echo "CLI_LIBDAVS2 = $CLI_LIBDAVS2" >> config.mak

cat > davs2.pc << EOF
prefix=$prefix
exec_prefix=$exec_prefix
libdir=$libdir
includedir=$includedir

Name: davs2
Description: AVS2 (IEEE 1857.4) decoder library
Version: $(grep POINTVER < davs2_config.h | sed -e 's/.* "//; s/".*//')
Libs: -L$libdir -ldavs2 $([ "$shared" = "yes" ] || echo $libpthread $libm $libdl)
Libs.private: $([ "$shared" = "yes" ] && echo $libpthread $libm $libdl)
Cflags: -I$includedir
EOF

filters="crop select_every"
gpl_filters=""
[ $gpl = yes ] && filters="$filters $gpl_filters"

cat > conftest.log <<EOF
platform:      $ARCH
byte order:    $CPU_ENDIAN
system:        $SYS
cli:           $cli
libdavs2:      $cli_libdavs2
shared:        $shared
static:        $static
asm:           $asm
interlaced:    $interlaced
gpl:           $gpl
thread:        $thread
opencl:        $opencl
filters:       $filters
lto:           $lto
debug:         $debug
gprof:         $gprof
strip:         $strip
PIC:           $pic
bit depth:     $bit_depth
chroma format: $chroma_format
EOF

echo >> config.log
cat conftest.log >> config.log
cat conftest.log

# [ "$SRCPATH" != "." ] && ln -sf ${SRCPATH}/Makefile ./Makefile
mkdir -p common/{aarch64,arm,ppc,x86,vec} test

echo
echo "You can run 'make' or 'make fprofiled' now."



================================================
FILE: build/vs2013/DAVS2.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "davs2", "davs2.vcxproj", "{852EFB9B-4E73-4E80-AA57-711ADCB132AE}"
	ProjectSection(ProjectDependencies) = postProject
		{34C0840A-BDE6-446B-B0DF-A8281A42825B} = {34C0840A-BDE6-446B-B0DF-A8281A42825B}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdavs2", "libdavs2.vcxproj", "{34C0840A-BDE6-446B-B0DF-A8281A42825B}"
	ProjectSection(ProjectDependencies) = postProject
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1} = {A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}
		{558555B9-A7B2-42D6-A298-BB5CC248541F} = {558555B9-A7B2-42D6-A298-BB5CC248541F}
		{2E7A6EE4-927F-470A-A012-3B29EDB87906} = {2E7A6EE4-927F-470A-A012-3B29EDB87906}
	EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdavs2_asm", "libdavs2_asm.vcxproj", "{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdavs2_intrin_avx", "libdavs2_intrin_avx.vcxproj", "{558555B9-A7B2-42D6-A298-BB5CC248541F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdavs2_intrin_sse", "libdavs2_intrin_sse.vcxproj", "{2E7A6EE4-927F-470A-A012-3B29EDB87906}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Win32 = Debug|Win32
		Debug|x64 = Debug|x64
		Release|Win32 = Release|Win32
		Release|x64 = Release|x64
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Debug|Win32.ActiveCfg = Debug|Win32
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Debug|Win32.Build.0 = Debug|Win32
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Debug|x64.ActiveCfg = Debug|x64
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Debug|x64.Build.0 = Debug|x64
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Release|Win32.ActiveCfg = Release|Win32
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Release|Win32.Build.0 = Release|Win32
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Release|x64.ActiveCfg = Release|x64
		{852EFB9B-4E73-4E80-AA57-711ADCB132AE}.Release|x64.Build.0 = Release|x64
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Debug|Win32.ActiveCfg = Debug|Win32
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Debug|Win32.Build.0 = Debug|Win32
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Debug|x64.ActiveCfg = Debug|x64
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Debug|x64.Build.0 = Debug|x64
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Release|Win32.ActiveCfg = Release|Win32
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Release|Win32.Build.0 = Release|Win32
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Release|x64.ActiveCfg = Release|x64
		{34C0840A-BDE6-446B-B0DF-A8281A42825B}.Release|x64.Build.0 = Release|x64
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Debug|Win32.ActiveCfg = Debug|Win32
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Debug|Win32.Build.0 = Debug|Win32
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Debug|x64.ActiveCfg = Debug|x64
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Debug|x64.Build.0 = Debug|x64
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Release|Win32.ActiveCfg = Release|Win32
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Release|Win32.Build.0 = Release|Win32
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Release|x64.ActiveCfg = Release|x64
		{A9B37E3C-A8C7-4E24-BC2D-AB4D0804DAC1}.Release|x64.Build.0 = Release|x64
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Debug|Win32.ActiveCfg = Debug|Win32
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Debug|Win32.Build.0 = Debug|Win32
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Debug|x64.ActiveCfg = Debug|x64
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Debug|x64.Build.0 = Debug|x64
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Release|Win32.ActiveCfg = Release|Win32
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Release|Win32.Build.0 = Release|Win32
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Release|x64.ActiveCfg = Release|x64
		{558555B9-A7B2-42D6-A298-BB5CC248541F}.Release|x64.Build.0 = Release|x64
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Debug|Win32.ActiveCfg = Debug|Win32
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Debug|Win32.Build.0 = Debug|Win32
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Debug|x64.ActiveCfg = Debug|x64
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Debug|x64.Build.0 = Debug|x64
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Release|Win32.ActiveCfg = Release|Win32
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Release|Win32.Build.0 = Release|Win32
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Release|x64.ActiveCfg = Release|x64
		{2E7A6EE4-927F-470A-A012-3B29EDB87906}.Release|x64.Build.0 = Release|x64
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
EndGlobal


================================================
FILE: build/vs2013/davs2.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="..\..\source\test\getopt\getopt.c" />
    <ClCompile Include="..\..\source\test\test.c" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\..\source\davs2.h" />
    <ClInclude Include="..\..\source\test\inputstream.h" />
    <ClInclude Include="..\..\source\test\getopt\getopt.h" />
    <ClInclude Include="..\..\source\test\md5.h" />
    <ClInclude Include="..\..\source\test\parse_args.h" />
    <ClInclude Include="..\..\source\test\psnr.h" />
    <ClInclude Include="..\..\source\test\utils.h" />
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{852EFB9B-4E73-4E80-AA57-711ADCB132AE}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>Application</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <LinkIncremental>true</LinkIncremental>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <LinkIncremental>false</LinkIncremental>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>HIGH_BIT_DEPTH=0;WIN32;ARCH_X86_64=0;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <PrecompiledHeaderFile />
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;..\..\source\test\getopt;</AdditionalIncludeDirectories>
      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\</AdditionalLibraryDirectories>
      <LargeAddressAware>true</LargeAddressAware>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>HIGH_BIT_DEPTH=0;WIN32;ARCH_X86_64=1;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <PrecompiledHeaderFile>
      </PrecompiledHeaderFile>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;..\..\source\test\getopt;</AdditionalIncludeDirectories>
      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\</AdditionalLibraryDirectories>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>HIGH_BIT_DEPTH=0;WIN32;ARCH_X86_64=0;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <PrecompiledHeaderFile />
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;..\..\source\test\getopt;</AdditionalIncludeDirectories>
      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\</AdditionalLibraryDirectories>
      <LargeAddressAware>true</LargeAddressAware>
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>HIGH_BIT_DEPTH=0;WIN32;ARCH_X86_64=1;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <PrecompiledHeaderFile>
      </PrecompiledHeaderFile>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;..\..\source\test\getopt;</AdditionalIncludeDirectories>
      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Console</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <AdditionalLibraryDirectories>$(SolutionDir)$(Platform)\</AdditionalLibraryDirectories>
      <UACExecutionLevel>AsInvoker</UACExecutionLevel>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup>
    <ProjectReference Include="libdavs2.vcxproj">
      <Project>{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}</Project>
      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

================================================
FILE: build/vs2013/davs2.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="inc">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="src">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\..\source\test\psnr.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\test\utils.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\davs2.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\test\parse_args.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\test\getopt\getopt.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\test\inputstream.h">
      <Filter>inc</Filter>
    </ClInclude>
    <ClInclude Include="..\..\source\test\md5.h">
      <Filter>inc</Filter>
    </ClInclude>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="..\..\source\test\test.c">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\test\getopt\getopt.c">
      <Filter>src</Filter>
    </ClCompile>
  </ItemGroup>
</Project>

================================================
FILE: build/vs2013/libdavs2.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|Win32">
      <Configuration>Debug</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|Win32">
      <Configuration>Release</Configuration>
      <Platform>Win32</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="..\..\source\common\aec.cc" />
    <ClCompile Include="..\..\source\common\alf.cc" />
    <ClCompile Include="..\..\source\common\bitstream.cc" />
    <ClCompile Include="..\..\source\common\block_info.cc" />
    <ClCompile Include="..\..\source\common\common.cc" />
    <ClCompile Include="..\..\source\common\davs2.cc" />
    <ClCompile Include="..\..\source\common\cpu.cc" />
    <ClCompile Include="..\..\source\common\cu.cc" />
    <ClCompile Include="..\..\source\common\deblock.cc" />
    <ClCompile Include="..\..\source\common\decoder.cc" />
    <ClCompile Include="..\..\source\common\frame.cc" />
    <ClCompile Include="..\..\source\common\header.cc" />
    <ClCompile Include="..\..\source\common\intra.cc" />
    <ClCompile Include="..\..\source\common\mc.cc" />
    <ClCompile Include="..\..\source\common\memory.cc" />
    <ClCompile Include="..\..\source\common\pixel.cc" />
    <ClCompile Include="..\..\source\common\predict.cc" />
    <ClCompile Include="..\..\source\common\primitives.cc" />
    <ClCompile Include="..\..\source\common\quant.cc" />
    <ClCompile Include="..\..\source\common\sao.cc" />
    <ClCompile Include="..\..\source\common\threadpool.cc" />
    <ClCompile Include="..\..\source\common\transform.cc" />
    <ClCompile Include="..\..\source\common\win32thread.cc" />
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\..\source\common\win32thread.h" />
    <ClInclude Include="..\..\source\configw.h" />
    <ClInclude Include="..\..\source\davs2.h" />
    <ClInclude Include="..\..\source\common\aec.h" />
    <ClInclude Include="..\..\source\common\alf.h" />
    <ClInclude Include="..\..\source\common\bitstream.h" />
    <ClInclude Include="..\..\source\common\block_info.h" />
    <ClInclude Include="..\..\source\common\common.h" />
    <ClInclude Include="..\..\source\common\cpu.h" />
    <ClInclude Include="..\..\source\common\cu.h" />
    <ClInclude Include="..\..\source\common\deblock.h" />
    <ClInclude Include="..\..\source\common\decoder.h" />
    <ClInclude Include="..\..\source\common\defines.h" />
    <ClInclude Include="..\..\source\common\frame.h" />
    <ClInclude Include="..\..\source\common\header.h" />
    <ClInclude Include="..\..\source\common\intra.h" />
    <ClInclude Include="..\..\source\common\mc.h" />
    <ClInclude Include="..\..\source\common\osdep.h" />
    <ClInclude Include="..\..\source\common\predict.h" />
    <ClInclude Include="..\..\source\common\primitives.h" />
    <ClInclude Include="..\..\source\common\quant.h" />
    <ClInclude Include="..\..\source\common\sao.h" />
    <ClInclude Include="..\..\source\common\scantab.h" />
    <ClInclude Include="..\..\source\common\threadpool.h" />
    <ClInclude Include="..\..\source\common\transform.h" />
    <ClInclude Include="..\..\source\common\vlc.h" />
    <ClInclude Include="resource.h" />
  </ItemGroup>
  <PropertyGroup Label="Globals">
    <ProjectGuid>{34C0840A-BDE6-446B-B0DF-A8281A42825B}</ProjectGuid>
    <Keyword>Win32Proj</Keyword>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>true</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
    <ConfigurationType>DynamicLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  <ImportGroup Label="ExtensionSettings">
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <LinkIncremental>true</LinkIncremental>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <IntDir>$(SolutionDir)$(Platform)_$(Configuration)\$(ProjectName)\</IntDir>
    <LinkIncremental>false</LinkIncremental>
    <OutDir>$(SolutionDir)..\bin\$(Platform)_$(Configuration)\</OutDir>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>DAVS2_EXPORTS;HIGH_BIT_DEPTH=0;BIT_DEPTH=8;WIN32;ARCH_X86_64=0;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread</AdditionalIncludeDirectories>
      <PrecompiledHeaderFile />
      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalLibraryDirectories>$(OutDir)\</AdditionalLibraryDirectories>
      <AdditionalDependencies>libdavs2_asm.lib;libdavs2_intrin_sse.lib;libdavs2_intrin_avx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <LargeAddressAware>true</LargeAddressAware>
    </Link>
    <PreBuildEvent>
      <Command>cd /d "$(SolutionDir)..\.." &amp;&amp; sh version.sh</Command>
      <Message>UpdateSourceVersionInfo</Message>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <ClCompile>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <WarningLevel>Level4</WarningLevel>
      <Optimization>Disabled</Optimization>
      <PreprocessorDefinitions>DAVS2_EXPORTS;HIGH_BIT_DEPTH=0;BIT_DEPTH=8;WIN32;ARCH_X86_64=1;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;$(CUDA_PATH)\include;$(AMD_APPSDK_PATH)\include;$(INTEL_OPENCL_SDK)\include;</AdditionalIncludeDirectories>
      <PrecompiledHeaderFile>
      </PrecompiledHeaderFile>
      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <AdditionalLibraryDirectories>$(OutDir)\;$(CUDA_PATH)\lib\$(Platform);$(INTEL_OPENCL_SDK)\lib\$(Platform);$(AMD_APPSDK_PATH)\lib\x64;%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
      <AdditionalDependencies>libdavs2_asm.lib;libdavs2_intrin_sse.lib;libdavs2_intrin_avx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
    <PreBuildEvent>
      <Command>cd /d "$(SolutionDir)..\.." &amp;&amp; sh version.sh</Command>
      <Message>UpdateSourceVersionInfo</Message>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>DAVS2_EXPORTS;HIGH_BIT_DEPTH=0;BIT_DEPTH=8;WIN32;ARCH_X86_64=0;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread</AdditionalIncludeDirectories>
      <PrecompiledHeaderFile />
      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalLibraryDirectories>$(OutDir)\</AdditionalLibraryDirectories>
      <AdditionalDependencies>libdavs2_asm.lib;libdavs2_intrin_sse.lib;libdavs2_intrin_avx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
      <LargeAddressAware>true</LargeAddressAware>
    </Link>
    <PreBuildEvent>
      <Command>cd /d "$(SolutionDir)..\.." &amp;&amp; sh version.sh</Command>
      <Message>UpdateSourceVersionInfo</Message>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <WarningLevel>Level4</WarningLevel>
      <PrecompiledHeader>
      </PrecompiledHeader>
      <Optimization>MaxSpeed</Optimization>
      <FunctionLevelLinking>true</FunctionLevelLinking>
      <IntrinsicFunctions>true</IntrinsicFunctions>
      <PreprocessorDefinitions>DAVS2_EXPORTS;HIGH_BIT_DEPTH=0;BIT_DEPTH=8;WIN32;ARCH_X86_64=1;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <AdditionalIncludeDirectories>..\..\;..\..\source;..\..\pthread;$(CUDA_PATH)\include;$(AMD_APPSDK_PATH)\include;$(INTEL_OPENCL_SDK)\include;</AdditionalIncludeDirectories>
      <PrecompiledHeaderFile>
      </PrecompiledHeaderFile>
      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
    </ClCompile>
    <Link>
      <SubSystem>Windows</SubSystem>
      <GenerateDebugInformation>true</GenerateDebugInformation>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>
      <OptimizeReferences>true</OptimizeReferences>
      <AdditionalLibraryDirectories>$(OutDir)\;$(CUDA_PATH)\lib\$(Platform);$(INTEL_OPENCL_SDK)\lib\$(Platform);$(AMD_APPSDK_PATH)\lib\x64;%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
      <AdditionalDependencies>libdavs2_asm.lib;libdavs2_intrin_sse.lib;libdavs2_intrin_avx.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
    <PreBuildEvent>
      <Command>cd /d "$(SolutionDir)..\.." &amp;&amp; sh version.sh</Command>
      <Message>UpdateSourceVersionInfo</Message>
    </PreBuildEvent>
  </ItemDefinitionGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

================================================
FILE: build/vs2013/libdavs2.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="inc">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="src">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="res">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="..\..\source\common\aec.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\alf.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\bitstream.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\block_info.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\common.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\cu.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\deblock.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\header.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\intra.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\mc.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\sao.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\transform.cc">
      <Filter>src</Filter>
    </ClCompile>
    <ClCompile Include="..\..\source\common\decoder.cc">
      <Filte
Download .txt
gitextract_ha5u9txv/

├── .gitattributes
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── ----.md
│       ├── bug_report.md
│       └── feature_request.md
├── .gitignore
├── .travis.yml
├── COPYING
├── README.md
├── README.zh.md
├── appveyor.yml
├── build/
│   ├── linux/
│   │   ├── Makefile
│   │   ├── config.guess
│   │   ├── config.sub
│   │   └── configure
│   └── vs2013/
│       ├── DAVS2.sln
│       ├── davs2.vcxproj
│       ├── davs2.vcxproj.filters
│       ├── libdavs2.vcxproj
│       ├── libdavs2.vcxproj.filters
│       ├── libdavs2_asm.vcxproj
│       ├── libdavs2_asm.vcxproj.filters
│       ├── libdavs2_intrin_avx.vcxproj
│       ├── libdavs2_intrin_avx.vcxproj.filters
│       ├── libdavs2_intrin_sse.vcxproj
│       ├── libdavs2_intrin_sse.vcxproj.filters
│       ├── nasm.props
│       ├── nasm.targets
│       └── nasm.xml
├── source/
│   ├── common/
│   │   ├── aec.cc
│   │   ├── aec.h
│   │   ├── alf.cc
│   │   ├── alf.h
│   │   ├── bitstream.cc
│   │   ├── bitstream.h
│   │   ├── block_info.cc
│   │   ├── block_info.h
│   │   ├── common.cc
│   │   ├── common.h
│   │   ├── cpu.cc
│   │   ├── cpu.h
│   │   ├── cu.cc
│   │   ├── cu.h
│   │   ├── davs2.cc
│   │   ├── deblock.cc
│   │   ├── deblock.h
│   │   ├── decoder.cc
│   │   ├── decoder.h
│   │   ├── defines.h
│   │   ├── frame.cc
│   │   ├── frame.h
│   │   ├── header.cc
│   │   ├── header.h
│   │   ├── intra.cc
│   │   ├── intra.h
│   │   ├── mc.cc
│   │   ├── mc.h
│   │   ├── memory.cc
│   │   ├── osdep.h
│   │   ├── pixel.cc
│   │   ├── predict.cc
│   │   ├── predict.h
│   │   ├── primitives.cc
│   │   ├── primitives.h
│   │   ├── quant.cc
│   │   ├── quant.h
│   │   ├── sao.cc
│   │   ├── sao.h
│   │   ├── scantab.h
│   │   ├── threadpool.cc
│   │   ├── threadpool.h
│   │   ├── transform.cc
│   │   ├── transform.h
│   │   ├── vec/
│   │   │   ├── intrinsic.cc
│   │   │   ├── intrinsic.h
│   │   │   ├── intrinsic_alf.cc
│   │   │   ├── intrinsic_deblock.cc
│   │   │   ├── intrinsic_deblock_avx2.cc
│   │   │   ├── intrinsic_idct.cc
│   │   │   ├── intrinsic_idct_avx2.cc
│   │   │   ├── intrinsic_inter_pred.cc
│   │   │   ├── intrinsic_inter_pred_avx2.cc
│   │   │   ├── intrinsic_intra-filledge.cc
│   │   │   ├── intrinsic_intra-pred.cc
│   │   │   ├── intrinsic_intra-pred_avx2.cc
│   │   │   ├── intrinsic_pixel.cc
│   │   │   ├── intrinsic_pixel_avx.cc
│   │   │   ├── intrinsic_sao.cc
│   │   │   └── intrinsic_sao_avx2.cc
│   │   ├── vlc.h
│   │   ├── win32thread.cc
│   │   ├── win32thread.h
│   │   └── x86/
│   │       ├── blockcopy8.asm
│   │       ├── const-a.asm
│   │       ├── cpu-a.asm
│   │       ├── dct8.asm
│   │       ├── dct8.h
│   │       ├── ipfilter8.asm
│   │       ├── ipfilter8.h
│   │       ├── mc-a2.asm
│   │       ├── pixeladd8.asm
│   │       ├── quant8.asm
│   │       ├── x86inc.asm
│   │       └── x86util.asm
│   ├── configw.h
│   ├── davs2.h
│   └── test/
│       ├── getopt/
│       │   ├── getopt.c
│       │   └── getopt.h
│       ├── inputstream.h
│       ├── md5.h
│       ├── parse_args.h
│       ├── psnr.h
│       ├── test.c
│       └── utils.h
└── version.sh
Download .txt
SYMBOL INDEX (644 symbols across 56 files)

FILE: source/common/aec.cc
  type aec_const_e (line 139) | enum aec_const_e {
  function ALWAYS_INLINE (line 158) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 217) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 244) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 266) | static ALWAYS_INLINE
  function init_aec_context_tab (line 294) | void init_aec_context_tab(void)
  function aec_start_decoding (line 356) | int aec_start_decoding(aec_t *p_aec, uint8_t *p_start, int i_byte_pos, i...
  function aec_bits_read (line 383) | int aec_bits_read(aec_t *p_aec)
  function INLINE (line 390) | static INLINE
  function INLINE (line 473) | static INLINE
  function INLINE (line 516) | static INLINE
  function INLINE (line 591) | static INLINE
  function biari_decode_symbol_continu0_ext (line 676) | static
  function unary_bin_max_decode (line 761) | static int unary_bin_max_decode(aec_t *p_aec, context_t *ctx, int ctx_of...
  function aec_init_contexts (line 782) | void aec_init_contexts(aec_t *p_aec)
  function aec_new_slice (line 796) | void aec_new_slice(davs2_t *h)
  function aec_read_dmh_mode (line 803) | int aec_read_dmh_mode(aec_t *p_aec, int i_cu_level)
  function INLINE (line 832) | static INLINE
  function aec_read_mvds (line 885) | void aec_read_mvds(aec_t *p_aec, mv_t *p_mvd)
  function INLINE (line 895) | static INLINE
  function INLINE (line 904) | static INLINE
  function ALWAYS_INLINE (line 917) | static ALWAYS_INLINE int cu_set_tu_split_type(davs2_t *h, cu_t *p_cu, in...
  function aec_read_intra_cu_type (line 949) | int aec_read_intra_cu_type(aec_t *p_aec, cu_t *p_cu, int b_sdip, davs2_t...
  function aec_read_cu_type (line 988) | int aec_read_cu_type(aec_t *p_aec, cu_t *p_cu, int img_type, int b_amp, ...
  function aec_read_cu_type_sframe (line 1079) | int aec_read_cu_type_sframe(aec_t *p_aec)
  function INLINE (line 1109) | static INLINE
  function INLINE (line 1218) | static INLINE
  function INLINE (line 1261) | static INLINE void cu_set_pdir_PFframe(cu_t *p_cu, int pdir)
  function INLINE (line 1292) | static INLINE void cu_set_pdir_Bframe(cu_t *p_cu, int pdir)
  function INLINE (line 1342) | static INLINE
  function INLINE (line 1366) | static INLINE
  function aec_read_inter_pred_dir (line 1402) | void aec_read_inter_pred_dir(aec_t * p_aec, cu_t *p_cu, davs2_t *h)
  function aec_read_intra_pmode (line 1441) | int aec_read_intra_pmode(aec_t * p_aec)
  function INLINE (line 1466) | static INLINE
  function aec_read_ctp_y (line 1494) | static int aec_read_ctp_y(davs2_t *h, aec_t *p_aec, int b8, cu_t *p_cu, ...
  function INLINE (line 1544) | static INLINE
  function cu_read_cbp (line 1655) | int cu_read_cbp(davs2_t *h, aec_t *p_aec, cu_t *p_cu, int scu_x, int scu_y)
  function aec_read_intra_pmode_c (line 1693) | int aec_read_intra_pmode_c(aec_t *p_aec, davs2_t *h, int luma_mode)
  function INLINE (line 1723) | static INLINE
  function INLINE (line 1798) | static INLINE
  function ALWAYS_INLINE (line 1838) | static ALWAYS_INLINE
  function aec_read_run_luma1 (line 1863) | static
  function aec_read_run_luma2 (line 1892) | static
  function aec_read_run_chroma (line 1922) | static
  function aec_read_run_level (line 1951) | static
  function cu_get_block_coeffs (line 2165) | int8_t cu_get_block_coeffs(aec_t *p_aec, runlevel_t *runlevel,
  function aec_startcode_follows (line 2192) | int aec_startcode_follows(aec_t *p_aec, int eos_bit)
  function aec_read_split_flag (line 2212) | int aec_read_split_flag(aec_t *p_aec, int i_level)
  function ALWAYS_INLINE (line 2226) | static ALWAYS_INLINE int read_sao_mergeflag(aec_t *p_aec, int act_ctx)
  function aec_read_sao_mergeflag (line 2244) | int aec_read_sao_mergeflag(aec_t *p_aec, int mergeleft_avail, int mergeu...
  function aec_read_sao_mode (line 2265) | int aec_read_sao_mode(aec_t *p_aec)
  function ALWAYS_INLINE (line 2282) | static ALWAYS_INLINE int read_sao_offset(aec_t *p_aec, int offset_type)
  function aec_read_sao_offsets (line 2323) | void aec_read_sao_offsets(aec_t *p_aec, sao_param_t *p_sao_param, int *o...
  function ALWAYS_INLINE (line 2342) | static ALWAYS_INLINE int read_sao_type(aec_t *p_aec, int act_ctx)
  function aec_read_sao_type (line 2400) | int aec_read_sao_type(aec_t *p_aec, sao_param_t *p_sao_param)
  function aec_read_alf_lcu_ctrl (line 2419) | int aec_read_alf_lcu_ctrl(aec_t *p_aec)

FILE: source/common/alf.cc
  function alf_recon_coefficients (line 52) | static void alf_recon_coefficients(alf_param_t *p_alf_param, int p_filte...
  function alf_init_var_table (line 71) | static void alf_init_var_table(alf_param_t *p_alf_param, int *p_var_tab)
  function alf_filter_block1 (line 87) | static
  function alf_filter_block2 (line 158) | static
  function deriveBoundaryAvail (line 276) | static void deriveBoundaryAvail(davs2_t *h, int lcu_xy, int width_in_lcu...
  function alf_param_init (line 299) | static void alf_param_init(alf_param_t *alf_par, int cID)
  function alf_get_buffer_size (line 316) | size_t alf_get_buffer_size(davs2_t *h)
  function alf_init_buffer (line 326) | void alf_init_buffer(davs2_t *h)
  function vlc_read_alf_coeff (line 357) | static void vlc_read_alf_coeff(davs2_bs_t *bs, alf_param_t *alf_param)
  function alf_read_param (line 402) | void alf_read_param(davs2_t *h, davs2_bs_t *bs)
  function alf_lcu_block (line 424) | static void alf_lcu_block(davs2_t *h, alf_param_t *p_alf_param, davs2_fr...
  function alf_lcurow (line 491) | void alf_lcurow(davs2_t *h, alf_param_t *p_alf_param, davs2_frame_t *p_t...
  function davs2_alf_init (line 507) | void davs2_alf_init(uint32_t cpuid, ao_funcs_t *fh)

FILE: source/common/bitstream.cc
  function bs_init (line 54) | void bs_init(davs2_bs_t *bs, uint8_t *p_data, int i_data)
  function bs_align (line 63) | void bs_align(davs2_bs_t *bs)
  function bs_left_bytes (line 70) | int bs_left_bytes(davs2_bs_t *bs)
  function found_slice_header (line 82) | int found_slice_header(davs2_bs_t *bs)
  function bs_get_start_code (line 100) | int bs_get_start_code(davs2_bs_t *bs)
  function bs_dispose_pseudo_code (line 130) | int bs_dispose_pseudo_code(uint8_t *dst, uint8_t *src, int i_src)
  function find_pic_start_code (line 229) | int32_t

FILE: source/common/block_info.cc
  function ALWAYS_INLINE (line 51) | static ALWAYS_INLINE
  function get_neighbor_cbp_y (line 70) | int get_neighbor_cbp_y(davs2_t *h, int x_4x4, int y_4x4, int scu_x, int ...

FILE: source/common/common.cc
  function avs2_trace_init (line 79) | int avs2_trace_init(davs2_t *h, char *psz_trace_file)
  function avs2_trace_destroy (line 98) | void avs2_trace_destroy(void)
  function avs2_trace (line 107) | int avs2_trace(const char *psz_fmt, ...)
  function avs2_trace_string (line 124) | void avs2_trace_string(char *trace_string, int value, int len)
  function avs2_trace_string2 (line 172) | void avs2_trace_string2(char *trace_string, int bit_pattern, int value, ...
  function xl_init (line 212) | int xl_init(xlist_t *const xlist)
  function xl_destroy (line 237) | void xl_destroy(xlist_t *const xlist)
  function xl_append (line 253) | void xl_append(xlist_t *const xlist, void *node)
  function ALWAYS_INLINE (line 355) | static ALWAYS_INLINE
  function davs2_log_default (line 371) | static void
  function davs2_log (line 417) | void davs2_log(void *handle, int level, const char *format, ...)

FILE: source/common/common.h
  type pel_t (line 63) | typedef uint16_t                pel_t;
  type pel4_t (line 64) | typedef uint64_t                pel4_t;
  type itr_t (line 65) | typedef int32_t                 itr_t;
  type pel_t (line 67) | typedef uint8_t                 pel_t;
  type pel4_t (line 68) | typedef uint32_t                pel4_t;
  type itr_t (line 69) | typedef int16_t                 itr_t;
  type coeff_t (line 72) | typedef int16_t                 coeff_t;
  type mct_t (line 73) | typedef int16_t                 mct_t;
  type bool_t (line 74) | typedef uint8_t                 bool_t;
  type cu_t (line 76) | typedef struct cu_t             cu_t;
  type davs2_log_t (line 77) | typedef struct davs2_log_t      davs2_log_t;
  type davs2_t (line 78) | typedef struct davs2_t          davs2_t;
  type davs2_mgr_t (line 79) | typedef struct davs2_mgr_t      davs2_mgr_t;
  type davs2_outpic_t (line 80) | typedef struct davs2_outpic_t   davs2_outpic_t;
  function ALWAYS_INLINE (line 100) | static ALWAYS_INLINE int DAVS2_MAX(int a, int b)
  function ALWAYS_INLINE (line 104) | static ALWAYS_INLINE int DAVS2_MIN(int a, int b)
  function ALWAYS_INLINE (line 111) | static ALWAYS_INLINE int DAVS2_CLIP3(int L, int H, int v)
  type task_status_t (line 164) | enum task_status_t {
  type coding_type_e (line 171) | enum coding_type_e {
  type pic_struct_e (line 179) | enum pic_struct_e {
  type start_code_e (line 200) | enum start_code_e {
  type cu_pred_mode_e (line 215) | enum cu_pred_mode_e {
  type tu_split_type_e (line 247) | enum tu_split_type_e {
  type PU_PART (line 259) | enum PU_PART {
  type dct_pattern_e (line 278) | enum dct_pattern_e {
  type context_mode_e (line 289) | enum context_mode_e {
  type img_component_index_e (line 298) | enum img_component_index_e {
  type inter_pred_direction_e (line 308) | enum inter_pred_direction_e {
  type neighbor_block_pos_e (line 317) | enum neighbor_block_pos_e {
  type direct_skip_mode_e (line 331) | enum direct_skip_mode_e {
  type intra_avail_e (line 353) | enum intra_avail_e {
  type sao_mode_e (line 366) | enum sao_mode_e {
  type sao_mode_merge_type_e (line 375) | enum sao_mode_merge_type_e {
  type sao_mode_type_e (line 384) | enum sao_mode_type_e {
  type sao_EO_classes_e (line 396) | enum sao_EO_classes_e {
  type node_t (line 455) | typedef struct node_t   node_t;
  type node_t (line 456) | struct node_t {
  type xlist_t (line 464) | typedef struct xlist_t {
  type context_t (line 479) | typedef union context_t {
  type context_set_t (line 491) | typedef struct context_set_t {
  type davs2_bs_t (line 526) | typedef struct davs2_bs_t {
  type sao_param_t (line 538) | typedef struct sao_param_t {
  type sao_t (line 549) | typedef struct sao_t {
  type alf_param_t (line 556) | typedef struct alf_param_t {
  type alf_var_t (line 565) | typedef struct alf_var_t {
  type ref_idx_t (line 574) | typedef union ref_idx_t {
  type mv_t (line 583) | typedef union mv_t {
  type cb_t (line 595) | typedef union cb_t {
  type neighbor_inter_t (line 608) | typedef struct neighbor_inter_t {
  type aec_t (line 618) | typedef struct aec_t {
  type rps_t (line 645) | typedef struct rps_t {
  type davs2_seq_t (line 657) | typedef struct davs2_seq_t {
  type davs2_frame_t (line 691) | typedef struct davs2_frame_t {
  type weighted_quant_t (line 742) | typedef struct weighted_quant_t {
  type runlevel_pair_t (line 758) | typedef struct runlevel_pair_t {
  type runlevel_t (line 765) | typedef struct runlevel_t {
  type lcu_rec_info_t (line 789) | typedef struct lcu_rec_info_t {
  type lcu_info_t (line 796) | typedef struct lcu_info_t {
  type cu_t (line 807) | struct cu_t {
  type davs2_outpic_t (line 849) | struct davs2_outpic_t {
  type davs2_output_t (line 863) | typedef struct davs2_output_t {
  type es_unit_t (line 875) | typedef struct es_unit_t {
  type davs2_task_t (line 888) | typedef struct davs2_task_t {
  type davs2_log_t (line 898) | struct davs2_log_t {
  type davs2_mgr_t (line 906) | struct davs2_mgr_t {
  type davs2_row_rec_t (line 957) | typedef struct davs2_row_rec_t {
  type davs2_t (line 1002) | struct davs2_t {
  function ALWAYS_INLINE (line 1236) | static ALWAYS_INLINE void *davs2_malloc(size_t i_size)
  function ALWAYS_INLINE (line 1257) | static ALWAYS_INLINE void *davs2_calloc(size_t count, size_t size)
  function ALWAYS_INLINE (line 1266) | static ALWAYS_INLINE void davs2_free(void *ptr)
  function ALWAYS_INLINE (line 1282) | static ALWAYS_INLINE
  function davs2_clz (line 1311) | static int ALWAYS_INLINE davs2_clz(const uint32_t x)
  function davs2_ctz (line 1318) | static int ALWAYS_INLINE davs2_ctz(const uint32_t x)
  function davs2_clz (line 1326) | static int ALWAYS_INLINE davs2_clz(uint32_t x)
  function davs2_ctz (line 1338) | static int ALWAYS_INLINE davs2_ctz(uint32_t x)
  function ALWAYS_INLINE (line 1351) | static ALWAYS_INLINE pel_t davs2_clip_pixel(int x)
  function ALWAYS_INLINE (line 1356) | static ALWAYS_INLINE int davs2_clip3(int v, int i_min, int i_max)
  function ALWAYS_INLINE (line 1361) | static ALWAYS_INLINE int davs2_median(int a, int b, int c)
  function ALWAYS_INLINE (line 1374) | static ALWAYS_INLINE int davs2_sign2(int val)
  function ALWAYS_INLINE (line 1380) | static ALWAYS_INLINE int davs2_sign3(int val)
  type davs2_union16_t (line 1395) | typedef union {
  type davs2_union32_t (line 1400) | typedef union {
  type davs2_union64_t (line 1406) | typedef union {

FILE: source/common/cpu.cc
  function sigill_handler (line 59) | static void sigill_handler(int sig)
  function davs2_cpu_detect (line 175) | uint32_t davs2_cpu_detect(void)
  function davs2_cpu_num_processors (line 389) | int davs2_cpu_num_processors(void)

FILE: source/common/cu.cc
  function INLINE (line 132) | static INLINE
  function ALWAYS_INLINE (line 143) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 217) | static ALWAYS_INLINE
  function cu_get_neighbors (line 240) | static void cu_get_neighbors(davs2_t *h, cu_t *p_cu, int pix_x, int pix_...
  function INLINE (line 268) | static INLINE
  function INLINE (line 298) | static INLINE
  function cu_read_intrapred_mode_luma (line 323) | static int cu_read_intrapred_mode_luma(davs2_t *h, aec_t *p_aec, cu_t *p...
  function cu_store_references (line 392) | static
  function cu_read_mv (line 432) | static int cu_read_mv(davs2_t *h, aec_t *p_aec, int i_level, int scu_xy,...
  function cu_read_all_coeffs (line 599) | static int cu_read_all_coeffs(davs2_t *h, aec_t *p_aec, cu_t *p_cu)
  function cu_read_header (line 736) | static
  function cu_read_info (line 822) | static int cu_read_info(davs2_t *h, cu_t *p_cu, int i_level, int scu_xy,...
  function decoder_wait_lcu_row (line 887) | void decoder_wait_lcu_row(davs2_t *h, davs2_frame_t *frame, int line)
  function decoder_wait_row (line 905) | void decoder_wait_row(davs2_t *h, davs2_frame_t *frame, int max_y_in_pic)
  function INLINE (line 919) | static INLINE
  function INLINE (line 937) | static INLINE
  function davs2_get_inter_pred (line 947) | static int davs2_get_inter_pred(davs2_t *h, davs2_row_rec_t *row_rec, cu...
  function cu_recon (line 1106) | static int cu_recon(davs2_t *h, davs2_row_rec_t *row_rec, cu_t *p_cu, in...
  function ALWAYS_INLINE (line 1181) | static ALWAYS_INLINE void
  function decode_lcu_init (line 1193) | void decode_lcu_init(davs2_t *h, int i_lcu_x, int i_lcu_y)
  function rowrec_lcu_init (line 1236) | void rowrec_lcu_init(davs2_t *h, davs2_row_rec_t *row_rec, int i_lcu_x, ...
  function decode_lcu_parse (line 1294) | int decode_lcu_parse(davs2_t *h, int i_level, int pix_x, int pix_y)
  function decode_lcu_recon (line 1339) | int decode_lcu_recon(davs2_t *h, davs2_row_rec_t *row_rec, int i_level, ...

FILE: source/common/davs2.cc
  function es_unit_t (line 65) | static es_unit_t *
  function es_unit_free (line 89) | static void
  function es_unit_t (line 100) | static
  function destroy_all_lists (line 156) | static void
  function create_all_lists (line 191) | static int
  function output_list_recycle_picture (line 222) | static
  function has_new_output_frame (line 232) | static
  function davs2_outpic_t (line 244) | static
  function decoder_get_output (line 310) | int decoder_get_output(davs2_mgr_t *mgr, davs2_seq_info_t *headerset, da...
  function DAVS2_API (line 369) | DAVS2_API void
  function davs2_t (line 393) | static davs2_t *task_get_free_task(davs2_mgr_t *mgr)
  function task_unload_packet (line 415) | void task_unload_packet(davs2_t *h, es_unit_t *es_unit)
  function DAVS2_API (line 439) | DAVS2_API void *
  function decoder_decode_es_unit (line 583) | int decoder_decode_es_unit(davs2_mgr_t *mgr, es_unit_t *es_unit)
  function DAVS2_API (line 626) | DAVS2_API int
  function DAVS2_API (line 692) | DAVS2_API int
  function DAVS2_API (line 715) | DAVS2_API int
  function DAVS2_API (line 768) | DAVS2_API void

FILE: source/common/deblock.cc
  type edge_direction_e (line 73) | enum edge_direction_e {
  type edge_type_e (line 81) | enum edge_type_e {
  function lf_set_edge_filter_param (line 89) | static void lf_set_edge_filter_param(davs2_t *h, int i_level, int scu_x,...
  function lf_lcu_set_edge_filter (line 143) | static void lf_lcu_set_edge_filter(davs2_t *h, int i_level, int scu_x, i...
  function lf_skip_filter (line 257) | static uint8_t lf_skip_filter(davs2_t *h, cu_t *scuP, cu_t *scuQ, int di...
  function lf_edge_core (line 283) | static void lf_edge_core(pel_t *src, int b_chroma, int ptr_inc, int inc1...
  function deblock_edge_hor (line 366) | static void deblock_edge_hor(pel_t *src, int stride, int alpha, int beta...
  function deblock_edge_ver (line 373) | static void deblock_edge_ver(pel_t *src, int stride, int alpha, int beta...
  function deblock_edge_ver_c (line 383) | static void deblock_edge_ver_c(pel_t *src_u, pel_t *src_v, int stride, i...
  function deblock_edge_hor_c (line 400) | static void deblock_edge_hor_c(pel_t *src_u, pel_t *src_v, int stride, i...
  function lf_scu_deblock (line 415) | static void lf_scu_deblock(davs2_t *h, pel_t *p_dec[3], int stride, int ...
  function davs2_lcu_deblock (line 492) | void davs2_lcu_deblock(davs2_t *h, davs2_frame_t *frm, int i_lcu_x, int ...
  function davs2_deblock_init (line 552) | void davs2_deblock_init(uint32_t cpuid, ao_funcs_t* fh)

FILE: source/common/decoder.cc
  function init_frame (line 67) | static void init_frame(davs2_t *h)
  function INLINE (line 123) | static INLINE
  function INLINE (line 141) | static INLINE
  function save_mv_ref_info (line 161) | static void save_mv_ref_info(davs2_t *h, int row)
  function davs2_outpic_t (line 199) | static davs2_outpic_t *get_one_free_picture(davs2_mgr_t *mgr, int w, int h)
  function ALWAYS_INLINE (line 227) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 244) | static ALWAYS_INLINE
  function decoder_signal (line 261) | static void decoder_signal(davs2_t *h, davs2_frame_t *frame, int line)
  function task_send_picture_to_output_list (line 277) | static
  function task_output_decoding_frame (line 316) | static
  function ALWAYS_INLINE (line 350) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 376) | static ALWAYS_INLINE
  function decode_one_lcu_row (line 397) | static int decode_one_lcu_row(davs2_t *h, davs2_bs_t *bs, int i_lcu_y)
  function decode_one_lcu_row_parse (line 538) | static int decode_one_lcu_row_parse(davs2_t *h, davs2_bs_t *bs, int i_lc...
  function decode_lcu_row_recon (line 596) | static int decode_lcu_row_recon(davs2_t *h, int i_lcu_y)
  function decode_user_data (line 737) | static void decode_user_data(davs2_t *h, davs2_bs_t *bs)
  function decoder_free_extra_buffer (line 774) | void decoder_free_extra_buffer(davs2_t *h)
  function decoder_alloc_extra_buffer (line 805) | int decoder_alloc_extra_buffer(davs2_t *h)
  function davs2_write_a_frame (line 940) | void davs2_write_a_frame(davs2_picture_t *pic, davs2_frame_t *frame)
  function davs2_t (line 1069) | davs2_t *decoder_open(davs2_mgr_t *mgr, davs2_t *h, int idx_decoder)
  function decoder_close (line 1202) | void decoder_close(davs2_t *h)

FILE: source/common/defines.h
  type chroma_format_e (line 79) | enum chroma_format_e {
  type intra_pred_mode_e (line 142) | enum intra_pred_mode_e {
  type intra_chroma_pred_mode_e (line 172) | enum intra_chroma_pred_mode_e {

FILE: source/common/frame.cc
  function ALWAYS_INLINE (line 46) | static ALWAYS_INLINE
  function pad_line_lcu (line 93) | void pad_line_lcu(davs2_t *h, int lcu_y)
  function ALWAYS_INLINE (line 150) | static ALWAYS_INLINE int
  function ALWAYS_INLINE (line 163) | static ALWAYS_INLINE int
  function davs2_frame_get_size (line 175) | size_t davs2_frame_get_size(int width, int height, int chroma_format, in...
  function davs2_frame_t (line 216) | davs2_frame_t *davs2_frame_new(int width, int height, int chroma_format,...
  function davs2_frame_destroy (line 354) | void davs2_frame_destroy(davs2_frame_t *frame)
  function davs2_frame_copy_planes (line 377) | void davs2_frame_copy_planes(davs2_frame_t *p_dst, davs2_frame_t *p_src)
  function davs2_frame_copy_properties (line 400) | void davs2_frame_copy_properties(davs2_frame_t *p_dst, davs2_frame_t *p_...
  function davs2_frame_copy_lcu (line 407) | void davs2_frame_copy_lcu(davs2_t *h, davs2_frame_t *p_dst, davs2_frame_...
  function davs2_frame_copy_lcurow (line 466) | void davs2_frame_copy_lcurow(davs2_t *h, davs2_frame_t *p_dst, davs2_fra...

FILE: source/common/header.cc
  type extension_id_e (line 90) | enum extension_id_e {
  function INLINE (line 109) | static INLINE int is_valid_qp(davs2_t *h, int i_qp)
  function davs2_reconfigure_decoder (line 117) | static
  function parse_sequence_header (line 126) | static
  function INLINE (line 293) | static INLINE
  function parse_picture_header_intra (line 315) | static int parse_picture_header_intra(davs2_t *h, davs2_bs_t *bs)
  function parse_picture_header_inter (line 500) | static int parse_picture_header_inter(davs2_t *h, davs2_bs_t *bs)
  function parse_picture_header (line 697) | static
  function parse_slice_header (line 769) | void parse_slice_header(davs2_t *h, davs2_bs_t *bs)
  function davs2_outpic_t (line 821) | davs2_outpic_t *alloc_picture(int w, int h)
  function free_picture (line 863) | void free_picture(davs2_outpic_t *pic)
  function destroy_dpb (line 873) | void destroy_dpb(davs2_mgr_t *mgr)
  function INLINE (line 902) | static INLINE
  function init_fdec (line 941) | static void init_fdec(davs2_t *h, int64_t pts, int64_t dts)
  function task_decoder_update (line 991) | int task_decoder_update(davs2_t *h)
  function task_set_sequence_head (line 1078) | static
  function clean_one_frame (line 1126) | void clean_one_frame(davs2_frame_t *frame)
  function release_one_frame (line 1136) | void release_one_frame(davs2_frame_t *frame)
  function task_release_frames (line 1167) | void task_release_frames(davs2_t *h)
  function has_blocking (line 1186) | int has_blocking(davs2_mgr_t *mgr)
  function task_get_references (line 1243) | int task_get_references(davs2_t *h, int64_t pts, int64_t dts)
  function parse_header (line 1490) | int parse_header(davs2_t *h, davs2_bs_t *p_bs)

FILE: source/common/intra.cc
  function ALWAYS_INLINE (line 263) | static ALWAYS_INLINE int is_block_available(davs2_t *h, int x_4x4, int y...
  function ALWAYS_INLINE (line 277) | static ALWAYS_INLINE
  function intra_pred_ver_c (line 327) | static void intra_pred_ver_c(pel_t *src, pel_t *dst, int i_dst, int mode...
  function intra_pred_hor_c (line 342) | static void intra_pred_hor_c(pel_t *src, pel_t *dst, int i_dst, int mode...
  function intra_pred_dc_c (line 359) | static void intra_pred_dc_c(pel_t *src, pel_t *dst, int i_dst, int mode,...
  function intra_pred_plane_c (line 412) | static void intra_pred_plane_c(pel_t *src, pel_t *dst, int i_dst, int mo...
  function intra_pred_bilinear_c (line 464) | static void intra_pred_bilinear_c(pel_t *src, pel_t *dst, int i_dst, int...
  function get_context_pixel (line 525) | static int get_context_pixel(int mode, int uiXYflag, int iTempD, int *of...
  function intra_pred_ang_x_c (line 538) | static void intra_pred_ang_x_c(pel_t *src, pel_t *dst, int i_dst, int di...
  function intra_pred_ang_y_c (line 589) | static void intra_pred_ang_y_c(pel_t *src, pel_t *dst, int i_dst, int di...
  function intra_pred_ang_xy_c (line 636) | static void intra_pred_ang_xy_c(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_x_5_c (line 798) | static void intra_pred_ang_x_5_c(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_x_7_c (line 1187) | static void intra_pred_ang_x_7_c(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_x_9_c (line 1273) | static void intra_pred_ang_x_9_c(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_x_10_c (line 1420) | static void intra_pred_ang_x_10_c(pel_t *src, pel_t *dst, int i_dst, int...
  function intra_pred_ang_x_11_c (line 1470) | static void intra_pred_ang_x_11_c(pel_t *src, pel_t *dst, int i_dst, int...
  function intra_pred_ang_y_25_c (line 1549) | static void intra_pred_ang_y_25_c(pel_t *src, pel_t *dst, int i_dst, int...
  function intra_pred_ang_y_26_c (line 1598) | static void intra_pred_ang_y_26_c(pel_t *src, pel_t *dst, int i_dst, int...
  function intra_pred_ang_y_27_c (line 1631) | static void intra_pred_ang_y_27_c(pel_t *src, pel_t *dst, int i_dst, int...
  function intra_pred_ang_y_29_c (line 1706) | static void intra_pred_ang_y_29_c(pel_t *src, pel_t *dst, int i_dst, int...
  function fill_reference_samples_y_c (line 2364) | static
  function fill_reference_samples_xy_c (line 2430) | static
  function davs2_get_intra_pred (line 2507) | void davs2_get_intra_pred(davs2_row_rec_t *row_rec, cu_t *p_cu, int pred...
  function davs2_get_intra_pred_chroma (line 2537) | void davs2_get_intra_pred_chroma(davs2_row_rec_t *row_rec, cu_t *p_cu, i...
  function davs2_intra_pred_init (line 2577) | void davs2_intra_pred_init(uint32_t cpuid, ao_funcs_t *pf)

FILE: source/common/intra.h
  function ALWAYS_INLINE (line 41) | static ALWAYS_INLINE

FILE: source/common/mc.cc
  function ALIGN16 (line 60) | ALIGN16(static const int8_t INTPL_FILTERS[4][8]) = {
  function mc_luma (line 502) | void mc_luma(davs2_t *h, pel_t *dst, int i_dst, int posx, int posy, int ...
  function mc_chroma (line 537) | void mc_chroma(davs2_t *h, pel_t *dst, int i_dst, int posx, int posy, in...
  function davs2_pixel_average_c (line 573) | static void davs2_pixel_average_c(pel_t *dst, int i_dst, const pel_t *sr...
  function davs2_mc_init (line 632) | void davs2_mc_init(uint32_t cpuid, ao_funcs_t *pf)

FILE: source/common/memory.cc
  function davs2_memory_init (line 49) | void davs2_memory_init(uint32_t cpuid, ao_funcs_t* pf)

FILE: source/common/osdep.h
  function avs2dec_pthread_create (line 251) | static int ALWAYS_INLINE
  function davs2_is_regular_file (line 367) | static int ALWAYS_INLINE davs2_is_regular_file(int filehandle)
  function davs2_is_regular_file_path (line 376) | static int ALWAYS_INLINE davs2_is_regular_file_path(const char *filename)

FILE: source/common/pixel.cc
  function davs2_pixel_init (line 188) | void davs2_pixel_init(uint32_t cpuid, ao_funcs_t* pixf)

FILE: source/common/predict.cc
  function ALWAYS_INLINE (line 52) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 68) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 81) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 101) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 141) | static ALWAYS_INLINE int16_t derive_median_mv(int mva, int mvb, int mvc)
  function ALWAYS_INLINE (line 172) | static ALWAYS_INLINE
  function get_mvp_default (line 197) | void get_mvp_default(davs2_t *h, cu_t *p_cu, int pix_x, int pix_y, mv_t ...
  function get_mv_bskip_spatial (line 256) | static
  function ALWAYS_INLINE (line 324) | static ALWAYS_INLINE
  function fill_mv_pf_skip_temporal (line 342) | static void fill_mv_pf_skip_temporal(davs2_t *h, cu_t *p_cu, int pix_x, ...
  function INLINE (line 405) | static INLINE
  function fill_mv_bskip (line 486) | static void fill_mv_bskip(davs2_t *h, cu_t *p_cu, int pix_x, int pix_y, ...
  function fill_mv_and_ref_for_skip (line 614) | void fill_mv_and_ref_for_skip(davs2_t *h, cu_t *p_cu, int pix_x, int pix...

FILE: source/common/predict.h
  function ALWAYS_INLINE (line 45) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 53) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 61) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 69) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 77) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 123) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 133) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 152) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 160) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 179) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 187) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 206) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 239) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 266) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 284) | static ALWAYS_INLINE

FILE: source/common/primitives.cc
  function init_all_primitives (line 51) | void init_all_primitives(uint32_t cpuid)

FILE: source/common/primitives.h
  type ao_funcs_t (line 95) | typedef struct ao_funcs_t {

FILE: source/common/quant.cc
  function wq_init_frame_quant_param (line 161) | void wq_init_frame_quant_param(davs2_t *h)
  function wq_update_frame_matrix (line 217) | void wq_update_frame_matrix(davs2_t *h)
  function dequant_c (line 260) | static void dequant_c(coeff_t *p_coeff, const int i_coef, const int scal...
  function dequant_weighted_c (line 274) | static void dequant_weighted_c(coeff_t *p_coeff, int i_coeff, int bsx, i...
  function dequant_coeffs (line 297) | void dequant_coeffs(davs2_t *h, coeff_t *p_coeff, int bsx, int bsy, int ...
  function davs2_quant_init (line 309) | void davs2_quant_init(uint32_t cpuid, ao_funcs_t *fh)

FILE: source/common/quant.h
  function ALWAYS_INLINE (line 88) | static ALWAYS_INLINE
  function ALWAYS_INLINE (line 111) | static ALWAYS_INLINE

FILE: source/common/sao.cc
  type lcu_neighbor_e (line 63) | enum lcu_neighbor_e {
  type sao_region_t (line 74) | struct sao_region_t {
  function ALWAYS_INLINE (line 100) | static ALWAYS_INLINE void sao_init_param(sao_t *lcu_sao)
  function ALWAYS_INLINE (line 115) | static ALWAYS_INLINE void sao_copy_param(sao_t *dst, sao_t *src)
  function sao_block_eo_0_c (line 122) | static
  function sao_block_eo_90_c (line 153) | static
  function sao_block_eo_135_c (line 180) | static
  function sao_block_eo_45_c (line 256) | static
  function sao_block_bo_c (line 330) | static
  function sao_read_lcu (line 355) | static void sao_read_lcu(davs2_t *h, int lcu_xy, bool_t *slice_sao_on, s...
  function sao_read_lcu_param (line 441) | void sao_read_lcu_param(davs2_t *h, int lcu_xy, bool_t *slice_sao_on, sa...
  function sao_get_neighbor_avail (line 452) | static
  function sao_lcu (line 539) | void sao_lcu(davs2_t *h, davs2_frame_t *p_tmp_frm, davs2_frame_t *p_dec_...
  function sao_lcurow (line 587) | void sao_lcurow(davs2_t *h, davs2_frame_t *p_tmp_frm, davs2_frame_t *p_d...
  function davs2_sao_init (line 638) | void davs2_sao_init(uint32_t cpuid, ao_funcs_t *fh)

FILE: source/common/threadpool.cc
  type threadpool_job_t (line 46) | struct threadpool_job_t {
  type davs2_sync_job_list_t (line 57) | struct davs2_sync_job_list_t {
  type davs2_threadpool_t (line 69) | struct davs2_threadpool_t {
  function threadpool_job_t (line 96) | static threadpool_job_t *davs2_job_shift(threadpool_job_t **list)
  function davs2_sync_job_list_init (line 117) | static int davs2_sync_job_list_init(davs2_sync_job_list_t *slist, int i_...
  function davs2_threadpool_list_delete (line 138) | static void davs2_threadpool_list_delete(davs2_sync_job_list_t *slist)
  function davs2_sync_job_list_push (line 148) | static void davs2_sync_job_list_push(davs2_sync_job_list_t *slist, threa...
  function threadpool_job_t (line 162) | static threadpool_job_t *davs2_sync_job_list_pop(davs2_sync_job_list_t *...
  function davs2_threadpool_init (line 231) | int davs2_threadpool_init(davs2_threadpool_t **p_pool, int threads, davs...
  function davs2_threadpool_run (line 284) | void davs2_threadpool_run(davs2_threadpool_t *pool, davs2_threadpool_fun...
  function davs2_threadpool_is_free (line 298) | int davs2_threadpool_is_free(davs2_threadpool_t *pool)
  function davs2_threadpool_delete (line 335) | void davs2_threadpool_delete(davs2_threadpool_t *pool)

FILE: source/common/threadpool.h
  type davs2_threadpool_t (line 39) | typedef struct davs2_threadpool_t davs2_threadpool_t;

FILE: source/common/transform.cc
  function partialButterflyInverse4_c (line 161) | static void partialButterflyInverse4_c(const coeff_t *src, coeff_t *dst,...
  function idct_4x4_c (line 191) | static void idct_4x4_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function partialButterflyInverse8_c (line 214) | static void partialButterflyInverse8_c(const coeff_t *src, coeff_t *dst,...
  function idct_8x8_c (line 257) | static void idct_8x8_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function partialButterflyInverse16_c (line 280) | static void partialButterflyInverse16_c(const coeff_t *src, coeff_t *dst...
  function idct_16x16_c (line 341) | static void idct_16x16_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function partialButterflyInverse32_c (line 364) | static void partialButterflyInverse32_c(const coeff_t *src, coeff_t *dst...
  function idct_32x32_c (line 451) | static void idct_32x32_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x64_c (line 477) | static void idct_64x64_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x4_c (line 537) | static void idct_16x4_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_4x16_c (line 561) | static void idct_4x16_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x8_c (line 587) | static void idct_32x8_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x32_c (line 615) | static void idct_8x32_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x16_c (line 640) | static void idct_64x16_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x64_c (line 699) | static void idct_16x64_c(const coeff_t *src, coeff_t *dst, int i_dst)
  function xTr2nd_4_1d_Inv_Ver (line 758) | static void xTr2nd_4_1d_Inv_Ver(coeff_t *coeff, int i_coeff, int i_shift...
  function xTr2nd_4_1d_Inv_Hor (line 783) | static void xTr2nd_4_1d_Inv_Hor(coeff_t *coeff, int i_coeff, int i_shift...
  function inv_transform_4x4_2nd_c (line 810) | static void inv_transform_4x4_2nd_c(coeff_t *coeff, int i_coeff)
  function inv_transform_2nd_c (line 826) | static void inv_transform_2nd_c(coeff_t *coeff, int i_coeff, int i_mode,...
  function INLINE (line 841) | static INLINE
  function ALWAYS_INLINE (line 868) | static ALWAYS_INLINE
  function davs2_get_recons (line 889) | void davs2_get_recons(davs2_row_rec_t *row_rec, cu_t *p_cu, int blockidx...
  function davs2_dct_init (line 932) | void davs2_dct_init(uint32_t cpuid, ao_funcs_t *fh)

FILE: source/common/vec/intrinsic_alf.cc
  function alf_filter_block_sse128 (line 44) | void alf_filter_block_sse128(pel_t *p_dst, const pel_t *p_src, int stride,

FILE: source/common/vec/intrinsic_deblock.cc
  function deblock_edge_ver_sse128 (line 43) | void deblock_edge_ver_sse128(pel_t *SrcPtr, int stride, int Alpha, int B...
  function deblock_edge_ver_c_sse128 (line 291) | void deblock_edge_ver_c_sse128(pel_t *SrcPtrU, pel_t *SrcPtrV, int strid...
  function deblock_edge_hor_sse128 (line 480) | void deblock_edge_hor_sse128(pel_t *SrcPtr, int stride, int Alpha, int B...
  function deblock_edge_hor_c_sse128 (line 686) | void deblock_edge_hor_c_sse128(pel_t *SrcPtrU, pel_t *SrcPtrV, int strid...

FILE: source/common/vec/intrinsic_deblock_avx2.cc
  function deblock_edge_ver_avx2 (line 57) | void deblock_edge_ver_avx2(pel_t *SrcPtr, int stride, int Alpha, int Bet...
  function deblock_edge_ver_c_avx2 (line 286) | void deblock_edge_ver_c_avx2(pel_t *SrcPtrU, pel_t *SrcPtrV, int stride,...
  function deblock_edge_hor_avx2 (line 453) | void deblock_edge_hor_avx2(pel_t *SrcPtr, int stride, int Alpha, int Bet...
  function deblock_edge_hor_c_avx2 (line 627) | void deblock_edge_hor_c_avx2(pel_t *SrcPtrU, pel_t *SrcPtrV, int stride,...

FILE: source/common/vec/intrinsic_idct.cc
  function idct_4x4_sse128 (line 78) | void idct_4x4_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_4x16_sse128 (line 158) | void idct_4x16_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_4x16_half_sse128 (line 462) | void idct_4x16_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_4x16_quad_sse128 (line 471) | void idct_4x16_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x4_sse128 (line 480) | void idct_16x4_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x4_half_sse128 (line 747) | void idct_16x4_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x4_quad_sse128 (line 756) | void idct_16x4_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x8_sse128 (line 765) | void idct_8x8_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x8_half_sse128 (line 1034) | void idct_8x8_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x8_quad_sse128 (line 1043) | void idct_8x8_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x16_sse128 (line 1052) | void idct_16x16_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x16_half_sse128 (line 1429) | void idct_16x16_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x16_quad_sse128 (line 1985) | void idct_16x16_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x32_sse128 (line 2447) | void idct_32x32_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x32_half_sse128 (line 3237) | void idct_32x32_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x32_quad_sse128 (line 4275) | void idct_32x32_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x8_sse128 (line 5213) | void idct_32x8_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x8_half_sse128 (line 6051) | void idct_32x8_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x8_quad_sse128 (line 6060) | void idct_32x8_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x32_sse128 (line 6069) | void idct_8x32_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x32_half_sse128 (line 6899) | void idct_8x32_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_8x32_quad_sse128 (line 6908) | void idct_8x32_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function inv_2nd_trans_hor_sse128 (line 6917) | static void inv_2nd_trans_hor_sse128(coeff_t *coeff, int i_coeff, int i_...
  function inv_2nd_trans_ver_sse128 (line 6955) | static void inv_2nd_trans_ver_sse128(coeff_t *coeff, int i_coeff, int i_...
  function inv_transform_2nd_sse128 (line 6993) | void inv_transform_2nd_sse128(coeff_t *coeff, int i_coeff, int i_mode, i...
  function inv_transform_4x4_2nd_sse128 (line 7008) | void inv_transform_4x4_2nd_sse128(coeff_t *coeff, int i_coeff)
  function inv_wavelet_64x64_sse128 (line 7114) | void inv_wavelet_64x64_sse128(coeff_t *coeff)
  function inv_wavelet_64x16_sse128 (line 7396) | void inv_wavelet_64x16_sse128(coeff_t *coeff)
  function inv_wavelet_16x64_sse128 (line 7609) | void inv_wavelet_16x64_sse128(coeff_t *coeff)
  function idct_64x64_sse128 (line 7809) | void idct_64x64_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x64_half_sse128 (line 7818) | void idct_64x64_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x64_quad_sse128 (line 7827) | void idct_64x64_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x16_sse128 (line 7836) | void idct_64x16_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x16_half_sse128 (line 7845) | void idct_64x16_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x16_quad_sse128 (line 7854) | void idct_64x16_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x64_sse128 (line 7863) | void idct_16x64_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x64_half_sse128 (line 7872) | void idct_16x64_half_sse128(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x64_quad_sse128 (line 7881) | void idct_16x64_quad_sse128(const coeff_t *src, coeff_t *dst, int i_dst)

FILE: source/common/vec/intrinsic_idct_avx2.cc
  function idct_8x8_avx2 (line 64) | void idct_8x8_avx2(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x16_avx2 (line 279) | void idct_16x16_avx2(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_32x32_avx2 (line 684) | void idct_32x32_avx2(const coeff_t *src, coeff_t *dst, int i_dst)
  function inv_wavelet_64x16_avx2 (line 1562) | void inv_wavelet_64x16_avx2(coeff_t *coeff)
  function inv_wavelet_16x64_avx2 (line 1685) | void inv_wavelet_16x64_avx2(coeff_t *coeff)
  function inv_wavelet_64x64_avx2 (line 1906) | void inv_wavelet_64x64_avx2(coeff_t *coeff)
  function idct_64x64_avx2 (line 2144) | void idct_64x64_avx2(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_64x16_avx2 (line 2153) | void idct_64x16_avx2(const coeff_t *src, coeff_t *dst, int i_dst)
  function idct_16x64_avx2 (line 2162) | void idct_16x64_avx2(const coeff_t *src, coeff_t *dst, int i_dst)

FILE: source/common/vec/intrinsic_inter_pred.cc
  function intpl_chroma_block_hor_sse128 (line 45) | void intpl_chroma_block_hor_sse128(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_hor_sse128 (line 94) | void intpl_luma_block_hor_sse128(pel_t *dst, int i_dst, pel_t *src, int ...
  function intpl_luma_hor_sse128 (line 153) | void intpl_luma_hor_sse128(pel_t *dst, int i_dst, mct_t *tmp, int i_tmp,...
  function intpl_luma_hor_x3_sse128 (line 245) | void intpl_luma_hor_x3_sse128(pel_t *const dst[3], int i_dst, mct_t *con...
  function intpl_luma_ver_sse128 (line 440) | void intpl_luma_ver_sse128(pel_t *dst, int i_dst, pel_t *src, int i_src,...
  function intpl_luma_ver_x3_sse128 (line 574) | void intpl_luma_ver_x3_sse128(pel_t *const dst[3], int i_dst, pel_t *src...
  function intpl_luma_ext_sse128 (line 1332) | void intpl_luma_ext_sse128(pel_t *dst, int i_dst, mct_t *tmp, int i_tmp,...
  function intpl_luma_ext_x3_sse128 (line 1996) | void intpl_luma_ext_x3_sse128(pel_t *const dst[3], int i_dst, mct_t *tmp...
  function intpl_chroma_block_ver_sse128 (line 3222) | void intpl_chroma_block_ver_sse128(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_sse128 (line 3625) | void intpl_luma_block_ver_sse128(pel_t *dst, int i_dst, pel_t *src, int ...
  function intpl_luma_block_ver0_sse128 (line 3907) | void intpl_luma_block_ver0_sse128(pel_t *dst, int i_dst, pel_t *src, int...
  function intpl_luma_block_ver1_sse128 (line 3983) | void intpl_luma_block_ver1_sse128(pel_t *dst, int i_dst, pel_t *src, int...
  function intpl_luma_block_ver2_sse128 (line 4059) | void intpl_luma_block_ver2_sse128(pel_t *dst, int i_dst, pel_t *src, int...
  function intpl_chroma_block_ext_sse128 (line 4137) | void intpl_chroma_block_ext_sse128(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ext_sse128 (line 4372) | void intpl_luma_block_ext_sse128(pel_t *dst, int i_dst, pel_t *src, int ...

FILE: source/common/vec/intrinsic_inter_pred_avx2.cc
  function intpl_luma_block_hor_w16_avx2 (line 49) | void intpl_luma_block_hor_w16_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_hor_w24_avx2 (line 100) | void intpl_luma_block_hor_w24_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_w32_avx2 (line 158) | void intpl_luma_block_ver_w32_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_w64_avx2 (line 257) | void intpl_luma_block_ver_w64_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_w16_avx2 (line 413) | void intpl_luma_block_ver_w16_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_w24_avx2 (line 534) | void intpl_luma_block_ver_w24_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ver_w48_avx2 (line 633) | void intpl_luma_block_ver_w48_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ext_w16_avx2 (line 789) | void intpl_luma_block_ext_w16_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_luma_block_ext_w24_avx2 (line 894) | void intpl_luma_block_ext_w24_avx2(pel_t *dst, int i_dst, pel_t *src, in...
  function intpl_chroma_block_hor_w16_avx2 (line 1098) | void intpl_chroma_block_hor_w16_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_hor_w24_avx2 (line 1133) | void intpl_chroma_block_hor_w24_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_ver_w32_avx2 (line 1172) | void intpl_chroma_block_ver_w32_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_ver_w24_avx2 (line 1237) | void intpl_chroma_block_ver_w24_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_ver_w16_avx2 (line 1302) | void intpl_chroma_block_ver_w16_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_ext_w16_avx2 (line 1385) | void intpl_chroma_block_ext_w16_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_chroma_block_ext_w24_avx2 (line 1485) | void intpl_chroma_block_ext_w24_avx2(pel_t *dst, int i_dst, const pel_t ...
  function intpl_luma_block_hor_avx2 (line 1616) | void intpl_luma_block_hor_avx2(pel_t *dst, int i_dst, pel_t *src, int i_...
  function intpl_luma_block_ver_avx2 (line 1635) | void intpl_luma_block_ver_avx2(pel_t *dst, int i_dst, pel_t *src, int i_...
  function intpl_luma_block_ver0_avx2 (line 1660) | void intpl_luma_block_ver0_avx2(pel_t *dst, int i_dst, pel_t *src, int i...
  function intpl_luma_block_ver1_avx2 (line 1685) | void intpl_luma_block_ver1_avx2(pel_t *dst, int i_dst, pel_t *src, int i...
  function intpl_luma_block_ver2_avx2 (line 1710) | void intpl_luma_block_ver2_avx2(pel_t *dst, int i_dst, pel_t *src, int i...
  function intpl_luma_block_ext_avx2 (line 1735) | void intpl_luma_block_ext_avx2(pel_t *dst, int i_dst, pel_t *src, int i_...
  function intpl_chroma_block_hor_avx2 (line 1754) | void intpl_chroma_block_hor_avx2(pel_t *dst, int i_dst, pel_t *src, int ...
  function intpl_chroma_block_ver_avx2 (line 1771) | void intpl_chroma_block_ver_avx2(pel_t *dst, int i_dst, pel_t *src, int ...
  function intpl_chroma_block_ext_avx2 (line 1790) | void intpl_chroma_block_ext_avx2(pel_t *dst, int i_dst, pel_t *src, int ...
  function intpl_luma_ext_avx2 (line 1831) | void intpl_luma_ext_avx2(pel_t *dst, int i_dst, int16_t *tmp, int i_tmp,...
  function intpl_luma_ext_x3_avx2 (line 1979) | void intpl_luma_ext_x3_avx2(pel_t *const dst[3], int i_dst, int16_t *tmp...
  function intpl_luma_hor_avx2 (line 2132) | void intpl_luma_hor_avx2(pel_t *dst, int i_dst, int16_t *tmp, int i_tmp,...
  function intpl_luma_hor_x3_avx2 (line 2241) | void intpl_luma_hor_x3_avx2(pel_t *const dst[3], int i_dst, mct_t *const...
  function intpl_luma_ver_avx2 (line 2481) | void intpl_luma_ver_avx2(pel_t *dst, int i_dst, pel_t *src, int i_src, i...
  function intpl_luma_ver_x3_avx2 (line 2564) | void intpl_luma_ver_x3_avx2(pel_t *const dst[3], int i_dst, pel_t *src, ...

FILE: source/common/vec/intrinsic_intra-filledge.cc
  function fill_edge_samples_0_sse128 (line 47) | void fill_edge_samples_0_sse128(const pel_t *pTL, int i_TL, const pel_t ...
  function fill_edge_samples_x_sse128 (line 162) | void fill_edge_samples_x_sse128(const pel_t *pTL, int i_TL, const pel_t ...
  function fill_edge_samples_y_sse128 (line 287) | void fill_edge_samples_y_sse128(const pel_t *pTL, int i_TL, const pel_t ...
  function fill_edge_samples_xy_sse128 (line 403) | void fill_edge_samples_xy_sse128(const pel_t *pTL, int i_TL, const pel_t...

FILE: source/common/vec/intrinsic_intra-pred.cc
  function intra_pred_ver_sse128 (line 63) | void intra_pred_ver_sse128(pel_t *src, pel_t *dst, int i_dst, int dir_mo...
  function intra_pred_hor_sse128 (line 124) | void intra_pred_hor_sse128(pel_t *src, pel_t *dst, int i_dst, int dir_mo...
  function intra_pred_dc_sse128 (line 179) | void intra_pred_dc_sse128(pel_t *src, pel_t *dst, int i_dst, int dir_mod...
  function intra_pred_plane_sse128 (line 272) | void intra_pred_plane_sse128(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_bilinear_sse128 (line 356) | void intra_pred_bilinear_sse128(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_x_7_sse128 (line 2487) | void intra_pred_ang_x_7_sse128(pel_t *src, pel_t *dst, int i_dst, int di...
  function intra_pred_ang_x_9_sse128 (line 3023) | void intra_pred_ang_x_9_sse128(pel_t *src, pel_t *dst, int i_dst, int di...
  function intra_pred_ang_x_10_sse128 (line 3351) | void intra_pred_ang_x_10_sse128(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_x_11_sse128 (line 3831) | void intra_pred_ang_x_11_sse128(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_y_25_sse128 (line 3968) | void intra_pred_ang_y_25_sse128(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_y_26_sse128 (line 4457) | void intra_pred_ang_y_26_sse128(pel_t *src, pel_t *dst, int i_dst, int d...
  function intra_pred_ang_xy_13_sse128 (line 5745) | void intra_pred_ang_xy_13_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_14_sse128 (line 6761) | void intra_pred_ang_xy_14_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_16_sse128 (line 7133) | void intra_pred_ang_xy_16_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_18_sse128 (line 7303) | void intra_pred_ang_xy_18_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_20_sse128 (line 7394) | void intra_pred_ang_xy_20_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_22_sse128 (line 7566) | void intra_pred_ang_xy_22_sse128(pel_t *src, pel_t *dst, int i_dst, int ...
  function intra_pred_ang_xy_23_sse128 (line 7842) | void intra_pred_ang_xy_23_sse128(pel_t *src, pel_t *dst, int i_dst, int ...

FILE: source/common/vec/intrinsic_intra-pred_avx2.cc
  function intra_pred_ver_avx (line 44) | void intra_pred_ver_avx(pel_t *src, pel_t *dst, int i_dst, int dir_mode,...
  function intra_pred_hor_avx (line 91) | void intra_pred_hor_avx(pel_t *src, pel_t *dst, int i_dst, int dir_mode,...
  function intra_pred_dc_avx (line 136) | void intra_pred_dc_avx(pel_t *src, pel_t *dst, int i_dst, int dir_mode, ...
  function intra_pred_plane_avx (line 221) | void intra_pred_plane_avx(pel_t *src, pel_t *dst, int i_dst, int dir_mod...
  function intra_pred_bilinear_avx (line 319) | void intra_pred_bilinear_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_x_7_avx (line 2006) | void intra_pred_ang_x_7_avx(pel_t *src, pel_t *dst, int i_dst, int dir_m...
  function intra_pred_ang_x_9_avx (line 2546) | void intra_pred_ang_x_9_avx(pel_t *src, pel_t *dst, int i_dst, int dir_m...
  function intra_pred_ang_x_10_avx (line 2672) | void intra_pred_ang_x_10_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_x_11_avx (line 3145) | void intra_pred_ang_x_11_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_y_25_avx (line 3266) | void intra_pred_ang_y_25_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_y_26_avx (line 3562) | void intra_pred_ang_y_26_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_y_30_avx (line 4121) | void intra_pred_ang_y_30_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_y_31_avx (line 4426) | void intra_pred_ang_y_31_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_y_32_avx (line 4485) | void intra_pred_ang_y_32_avx(pel_t *src, pel_t *dst, int i_dst, int dir_...
  function intra_pred_ang_xy_13_avx (line 4836) | void intra_pred_ang_xy_13_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_14_avx (line 5422) | void intra_pred_ang_xy_14_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_16_avx (line 5954) | void intra_pred_ang_xy_16_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_18_avx (line 6359) | void intra_pred_ang_xy_18_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_20_avx (line 6579) | void intra_pred_ang_xy_20_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_22_avx (line 6925) | void intra_pred_ang_xy_22_avx(pel_t *src, pel_t *dst, int i_dst, int dir...
  function intra_pred_ang_xy_23_avx (line 7320) | void intra_pred_ang_xy_23_avx(pel_t *src, pel_t *dst, int i_dst, int dir...

FILE: source/common/vec/intrinsic_pixel.cc
  function avs_pixel_average_sse128 (line 43) | void avs_pixel_average_sse128(pel_t *dst, int i_dst, const pel_t *src0, ...
  function plane_copy_c_sse2 (line 151) | void plane_copy_c_sse2(pel_t *dst, intptr_t i_dst, pel_t *src, intptr_t ...

FILE: source/common/vec/intrinsic_pixel_avx.cc
  function padding_rows_sse256_10bit (line 61) | void padding_rows_sse256_10bit(pel_t *src, int i_src, int width, int hei...
  function padding_rows_lr_sse256_10bit (line 103) | void padding_rows_lr_sse256_10bit(pel_t *src, int i_src, int width, int ...
  function add_pel_clip_sse256 (line 132) | void add_pel_clip_sse256(const pel_t *src1, int i_src1, const coeff_t *s...
  function davs2_pixel_average_avx (line 268) | void davs2_pixel_average_avx(pel_t *dst, int i_dst, const pel_t *src1, i...
  function padding_rows_lr_sse256 (line 365) | void padding_rows_lr_sse256(pel_t *src, int i_src, int width, int height...
  function padding_rows_sse256 (line 407) | void padding_rows_sse256(pel_t *src, int i_src, int width, int height, i...

FILE: source/common/vec/intrinsic_sao.cc
  type lcu_neighbor_e (line 51) | enum lcu_neighbor_e {
  function SAO_on_block_eo_0_sse128 (line 64) | void SAO_on_block_eo_0_sse128(pel_t *p_dst, int i_dst, const pel_t *p_sr...
  function SAO_on_block_eo_90_sse128 (line 156) | void SAO_on_block_eo_90_sse128(pel_t *p_dst, int i_dst, const pel_t *p_s...
  function SAO_on_block_eo_135_sse128 (line 250) | void SAO_on_block_eo_135_sse128(pel_t *p_dst, int i_dst, const pel_t *p_...
  function SAO_on_block_eo_45_sse128 (line 459) | void SAO_on_block_eo_45_sse128(pel_t *p_dst, int i_dst, const pel_t *p_s...
  function SAO_on_block_bo_sse128 (line 666) | void SAO_on_block_bo_sse128(pel_t *p_dst, int i_dst,

FILE: source/common/vec/intrinsic_sao_avx2.cc
  type lcu_neighbor_e (line 50) | enum lcu_neighbor_e {
  function SAO_on_block_eo_0_avx2 (line 63) | void SAO_on_block_eo_0_avx2(pel_t *p_dst, int i_dst,
  function SAO_on_block_eo_90_avx2 (line 146) | void SAO_on_block_eo_90_avx2(pel_t *p_dst, int i_dst,
  function SAO_on_block_eo_135_avx2 (line 232) | void SAO_on_block_eo_135_avx2(pel_t *p_dst, int i_dst,
  function SAO_on_block_eo_45_avx2 (line 420) | void SAO_on_block_eo_45_avx2(pel_t *p_dst, int i_dst,
  function SAO_on_block_bo_avx2 (line 612) | void SAO_on_block_bo_avx2(pel_t *p_dst, int i_dst,

FILE: source/common/vlc.h
  function INLINE (line 48) | static INLINE
  function INLINE (line 77) | static INLINE
  function INLINE (line 135) | static INLINE
  function INLINE (line 161) | static INLINE
  function INLINE (line 192) | static INLINE

FILE: source/common/win32thread.cc
  function davs2_win32thread_worker (line 92) | static unsigned __stdcall davs2_win32thread_worker(void *arg)
  function davs2_thread_create (line 101) | int davs2_thread_create(davs2_thread_t *thread, const davs2_thread_attr_...
  function davs2_thread_join (line 112) | int davs2_thread_join(davs2_thread_t thread, void **value_ptr)
  function davs2_thread_mutex_init (line 127) | int davs2_thread_mutex_init(davs2_thread_mutex_t *mutex, const davs2_thr...
  function davs2_thread_mutex_destroy (line 133) | int davs2_thread_mutex_destroy(davs2_thread_mutex_t *mutex)
  function davs2_thread_mutex_lock (line 139) | int davs2_thread_mutex_lock(davs2_thread_mutex_t *mutex)
  function davs2_thread_mutex_unlock (line 151) | int davs2_thread_mutex_unlock(davs2_thread_mutex_t *mutex)
  function davs2_thread_cond_init (line 167) | int davs2_thread_cond_init(davs2_thread_cond_t *cond, const davs2_thread...
  function davs2_thread_cond_destroy (line 205) | int davs2_thread_cond_destroy(davs2_thread_cond_t *cond)
  function davs2_thread_cond_broadcast (line 225) | int davs2_thread_cond_broadcast(davs2_thread_cond_t *cond)
  function davs2_thread_cond_signal (line 257) | int davs2_thread_cond_signal(davs2_thread_cond_t *cond)
  function davs2_thread_cond_wait (line 280) | int davs2_thread_cond_wait(davs2_thread_cond_t *cond, davs2_thread_mutex...
  function davs2_win32_threading_init (line 316) | int davs2_win32_threading_init(void)
  function davs2_win32_threading_destroy (line 331) | void davs2_win32_threading_destroy(void)
  function davs2_thread_num_processors_np (line 337) | int davs2_thread_num_processors_np()

FILE: source/common/win32thread.h
  type davs2_thread_t (line 51) | typedef struct {
  type CRITICAL_SECTION (line 60) | typedef CRITICAL_SECTION davs2_thread_mutex_t;
  type davs2_thread_cond_t (line 66) | typedef struct {

FILE: source/davs2.h
  type davs2_picture_type_e (line 78) | enum davs2_picture_type_e {
  type davs2_profile_id_e (line 89) | enum davs2_profile_id_e {
  type davs2_log_level_e (line 98) | enum davs2_log_level_e {
  type davs2_ret_e (line 109) | enum davs2_ret_e {
  type davs2_seq_info_t (line 126) | typedef struct davs2_seq_info_t {
  type davs2_packet_t (line 146) | typedef struct davs2_packet_t {
  type davs2_picture_t (line 156) | typedef struct davs2_picture_t {
  type davs2_param_t (line 178) | typedef struct davs2_param_t {

FILE: source/test/getopt/getopt.c
  function exchange (line 293) | static void
  function _getopt_internal (line 487) | int
  function getopt (line 922) | int
  function getopt_long (line 934) | int
  function main (line 952) | int

FILE: source/test/getopt/getopt.h
  type option (line 96) | struct option {
  type option (line 153) | struct option
  type option (line 156) | struct option
  type option (line 161) | struct option

FILE: source/test/inputstream.h
  function check_frame (line 65) | static int
  function find_one_frame (line 82) | static int
  function count_frames (line 98) | static int
  function read_input_file (line 123) | static int

FILE: source/test/md5.h
  function md5 (line 76) | void md5(unsigned int *pA, unsigned int *pB, unsigned int *pC, unsigned ...
  function FileMD5 (line 162) | long long FileMD5(const char *filename, unsigned int md5value[4])

FILE: source/test/parse_args.h
  type davs2_input_param_t (line 45) | typedef struct davs2_input_param_t {
  type option (line 68) | struct option
  function display_usage (line 82) | static void display_usage(void)
  function parse_args (line 104) | static int parse_args(davs2_input_param_t *p_param, int argc, char **argv)

FILE: source/test/psnr.h
  function cal_ssd_16bit (line 66) | static __inline uint64_t
  function cal_ssd_8bit (line 93) | static __inline uint64_t
  function cal_ssd (line 131) | static __inline uint64_t
  function find_first_mismatch_point_16bit (line 143) | static void
  function find_first_mismatch_point_8bit (line 168) | static void
  function find_first_mismatch_point (line 204) | static void
  function get_psnr_with_ssd (line 216) | static
  function cal_psnr (line 237) | int

FILE: source/test/test.c
  function output_decoded_frame (line 101) | static
  function test_decoder (line 179) | void test_decoder(uint8_t *data_buf, int data_len, int num_frames, char ...
  function main (line 304) | int main(int argc, char *argv[])

FILE: source/test/utils.h
  function get_time (line 64) | static __inline int64_t get_time()
  function set_font_color (line 80) | static __inline void set_font_color(int color)
  function show_message (line 94) | static void show_message(int color, const char *format, ...)
  function show_progress (line 119) | static __inline void show_progress(int frame, int frames)
  function write_frame_plane (line 149) | static
  function write_y4m_header (line 164) | static
  function write_frame (line 189) | static
Condensed preview — 114 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,690K chars).
[
  {
    "path": ".gitattributes",
    "chars": 2042,
    "preview": "#common settings that generally should always be used with your language specific settings\n\n# Auto detect text files and"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/----.md",
    "chars": 95,
    "preview": "---\nname: 问题咨询\nabout: 使用问题/安全问题/其他问题\n\n---\n\n请发送邮件至: sswang@pku.edu.cn\n或在应用内“高级设置” - “建议反馈” 填写表单\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 842,
    "preview": "---\nname: Bug report\nabout: Create a report of bug / 如果你认为你发现了一项代码问题\n\n---\n\n**Describe the bug**\n\nA clear and concise des"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 140,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project / 功能请求\n\n---\n\n请详细填写以下四项关键元素\n\n## 功能描述\n\n## 功能带来的效应\n\n## 缺少"
  },
  {
    "path": ".gitignore",
    "chars": 350,
    "preview": "Debug/\nRelease/\nx64_Debug/\nx64_Release/\nbuild/linux/cavs2dec*\nbuild/linux/davs2*\nMy*/\n*.user\n*.suo\n*.ncb\n*.aps\n*.pdb\n*.r"
  },
  {
    "path": ".travis.yml",
    "chars": 394,
    "preview": "language: c\ndist: xenial\n\ninstall:\n  - wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz -O na"
  },
  {
    "path": "COPYING",
    "chars": 18121,
    "preview": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
  },
  {
    "path": "README.md",
    "chars": 3552,
    "preview": "# davs2\n**davs2** is an open-source decoder of `AVS2-P2/IEEE1857.4` video coding standard.\n\nAn encoder, **xavs2**, can b"
  },
  {
    "path": "README.zh.md",
    "chars": 3072,
    "preview": "# davs2\n\n遵循 `AVS2-P2/IEEE1857.4` 视频编码标准的解码器. \n\n对应的编码器 **xavs2** 可在 [Github][2] 或 [Gitee (mirror in China)][3] 上找到.\n\n[![G"
  },
  {
    "path": "appveyor.yml",
    "chars": 524,
    "preview": "image: Visual Studio 2015\nconfiguration: Release\n\nplatform:\n  - x64\n\ninstall:\n    - git submodule update --init\n    - ap"
  },
  {
    "path": "build/linux/Makefile",
    "chars": 10745,
    "preview": "# Makefile\n\ninclude config.mak\n\nvpath %.cc $(SRCPATH)\nvpath %.c $(SRCPATH)\nvpath %.h $(SRCPATH)\nvpath %.S $(SRCPATH)\nvpa"
  },
  {
    "path": "build/linux/config.guess",
    "chars": 44259,
    "preview": "#! /bin/sh\n# Attempt to guess a canonical system name.\n#   Copyright 1992-2017 Free Software Foundation, Inc.\n\ntimestamp"
  },
  {
    "path": "build/linux/config.sub",
    "chars": 36515,
    "preview": "#! /bin/sh\n# Configuration validation subroutine script.\n#   Copyright 1992-2017 Free Software Foundation, Inc.\n\ntimesta"
  },
  {
    "path": "build/linux/configure",
    "chars": 42724,
    "preview": "#!/bin/bash\n\nif test x\"$1\" = x\"-h\" -o x\"$1\" = x\"--help\" ; then\ncat <<EOF\nUsage: ./configure [options]\n\nHelp:\n  -h, --hel"
  },
  {
    "path": "build/vs2013/DAVS2.sln",
    "chars": 4851,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 2013\r\nVisualStudioVersion = 12.0.40629.0"
  },
  {
    "path": "build/vs2013/davs2.vcxproj",
    "chars": 11145,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "build/vs2013/davs2.vcxproj.filters",
    "chars": 1529,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "build/vs2013/libdavs2.vcxproj",
    "chars": 14545,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "build/vs2013/libdavs2.vcxproj.filters",
    "chars": 6088,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "build/vs2013/libdavs2_asm.vcxproj",
    "chars": 11148,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "build/vs2013/libdavs2_asm.vcxproj.filters",
    "chars": 1482,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "build/vs2013/libdavs2_intrin_avx.vcxproj",
    "chars": 9966,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "build/vs2013/libdavs2_intrin_avx.vcxproj.filters",
    "chars": 1277,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "build/vs2013/libdavs2_intrin_sse.vcxproj",
    "chars": 9843,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.micro"
  },
  {
    "path": "build/vs2013/libdavs2_intrin_sse.vcxproj.filters",
    "chars": 1717,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "build/vs2013/nasm.props",
    "chars": 1176,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\r\n  <Proper"
  },
  {
    "path": "build/vs2013/nasm.targets",
    "chars": 3012,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGrou"
  },
  {
    "path": "build/vs2013/nasm.xml",
    "chars": 7027,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ProjectSchemaDefinitions xmlns=\"http://schemas.microsoft.com/build/2009/properti"
  },
  {
    "path": "source/common/aec.cc",
    "chars": 77299,
    "preview": "/*\r\n *  aec.cc\r\n *\r\n * Description of this file:\r\n *    AEC functions definition of the davs2 library\r\n *\r\n * ----------"
  },
  {
    "path": "source/common/aec.h",
    "chars": 5669,
    "preview": "/*\r\n *  aec.h\r\n *\r\n * Description of this file:\r\n *    AEC functions definition of the davs2 library\r\n *\r\n * -----------"
  },
  {
    "path": "source/common/alf.cc",
    "chars": 20234,
    "preview": "/*\r\n * alf.cc\r\n *\r\n * Description of this file:\r\n *    ALF functions definition of the davs2 library\r\n *\r\n * -----------"
  },
  {
    "path": "source/common/alf.h",
    "chars": 1982,
    "preview": "/*\r\n * alf.h\r\n *\r\n * Description of this file:\r\n *    ALF functions definition of the davs2 library\r\n *\r\n * ------------"
  },
  {
    "path": "source/common/bitstream.cc",
    "chars": 8979,
    "preview": "/*\r\n * bitstream.cc\r\n *\r\n * Description of this file:\r\n *    Bitstream functions definition of the davs2 library\r\n *\r\n *"
  },
  {
    "path": "source/common/bitstream.h",
    "chars": 2341,
    "preview": "/*\r\n * bitstream.h\r\n *\r\n * Description of this file:\r\n *    Bitstream functions definition of the davs2 library\r\n *\r\n * "
  },
  {
    "path": "source/common/block_info.cc",
    "chars": 3715,
    "preview": "/*\r\n * block_info.cc\r\n *\r\n * Description of this file:\r\n *    Block-infomation functions definition of the davs2 library"
  },
  {
    "path": "source/common/block_info.h",
    "chars": 1629,
    "preview": "/*\r\n * block_info.h\r\n *\r\n * Description of this file:\r\n *    Block Infomation functions definition of the davs2 library\r"
  },
  {
    "path": "source/common/common.cc",
    "chars": 12150,
    "preview": "/*\r\n * common.cc\r\n *\r\n * Description of this file:\r\n *    misc common functionsdefinition of the davs2 library\r\n *\r\n * -"
  },
  {
    "path": "source/common/common.h",
    "chars": 57299,
    "preview": "/*\r\n * common.h\r\n *\r\n * Description of this file:\r\n *    misc common functionsdefinition of the davs2 library\r\n *\r\n * --"
  },
  {
    "path": "source/common/cpu.cc",
    "chars": 14834,
    "preview": "/*\r\n * cpu.cc\r\n *\r\n * Description of this file:\r\n *    CPU-Processing functions definition of the davs2 library\r\n *\r\n * "
  },
  {
    "path": "source/common/cpu.h",
    "chars": 3173,
    "preview": "/*\r\n * cpu.h\r\n *\r\n * Description of this file:\r\n *    CPU-Processing functions definition of the davs2 library\r\n *\r\n * -"
  },
  {
    "path": "source/common/cu.cc",
    "chars": 54731,
    "preview": "/*\r\n * cu.cc\r\n *\r\n * Description of this file:\r\n *    CU Processing functions definition of the davs2 library\r\n *\r\n * -"
  },
  {
    "path": "source/common/cu.h",
    "chars": 3193,
    "preview": "/*\r\n * cu.h\r\n *\r\n * Description of this file:\r\n *    CU Processing functions definition of the davs2 library\r\n *\r\n * ---"
  },
  {
    "path": "source/common/davs2.cc",
    "chars": 24878,
    "preview": "/*\r\n * davs2.cc\r\n *\r\n * Description of this file:\r\n *    API functions definition of the davs2 library\r\n *\r\n * ---------"
  },
  {
    "path": "source/common/deblock.cc",
    "chars": 25197,
    "preview": "/*\r\n * deblock.cc\r\n *\r\n * Description of this file:\r\n *    Deblock functions definition of the davs2 library\r\n *\r\n * ---"
  },
  {
    "path": "source/common/deblock.h",
    "chars": 1701,
    "preview": "/*\r\n * deblock.h\r\n *\r\n * Description of this file:\r\n *    Deblock functions definition of the davs2 library\r\n *\r\n * ----"
  },
  {
    "path": "source/common/decoder.cc",
    "chars": 44572,
    "preview": "/*\r\n * decoder.cc\r\n *\r\n * Description of this file:\r\n *    Decoder functions definition of the davs2 library\r\n *\r\n * ---"
  },
  {
    "path": "source/common/decoder.h",
    "chars": 2800,
    "preview": "/*\r\n * decoder.h\r\n *\r\n * Description of this file:\r\n *    Decoder functions definition of the davs2 library\r\n *\r\n * ----"
  },
  {
    "path": "source/common/defines.h",
    "chars": 13311,
    "preview": "/*\r\n * defines.h\r\n *\r\n * Description of this file:\r\n *    const variable definition of the davs2 library\r\n *\r\n * -------"
  },
  {
    "path": "source/common/frame.cc",
    "chars": 18659,
    "preview": "/*\r\n * frame.cc\r\n *\r\n * Description of this file:\r\n *    Frame handling functions definition of the davs2 library\r\n *\r\n "
  },
  {
    "path": "source/common/frame.h",
    "chars": 2915,
    "preview": "/*\r\n * frame.h\r\n *\r\n * Description of this file:\r\n *    Frame handling functions definition of the davs2 library\r\n *\r\n *"
  },
  {
    "path": "source/common/header.cc",
    "chars": 54128,
    "preview": "/*\r\n * header.cc\r\n *\r\n * Description of this file:\r\n *    Header functions definition of the davs2 library\r\n *\r\n * -----"
  },
  {
    "path": "source/common/header.h",
    "chars": 2106,
    "preview": "/*\r\n * header.h\r\n *\r\n * Description of this file:\r\n *    Header functions definition of the davs2 library\r\n *\r\n * ------"
  },
  {
    "path": "source/common/intra.cc",
    "chars": 106708,
    "preview": "/*\r\n * intra.cc\r\n *\r\n * Description of this file:\r\n *    Intra prediction functions definition of the davs2 library\r\n *\r"
  },
  {
    "path": "source/common/intra.h",
    "chars": 2501,
    "preview": "/*\r\n * intra.h\r\n *\r\n * Description of this file:\r\n *    Intra prediction functions definition of the davs2 library\r\n *\r\n"
  },
  {
    "path": "source/common/mc.cc",
    "chars": 28356,
    "preview": "/*\r\n * mc.cc\r\n *\r\n * Description of this file:\r\n *    MC functions definition of the davs2 library\r\n *\r\n * -------------"
  },
  {
    "path": "source/common/mc.h",
    "chars": 1753,
    "preview": "/*\r\n * mc.h\r\n *\r\n * Description of this file:\r\n *    MC functions definition of the davs2 library\r\n *\r\n * --------------"
  },
  {
    "path": "source/common/memory.cc",
    "chars": 2784,
    "preview": "/*\r\n * memory.cc\r\n *\r\n * Description of this file:\r\n *    Memory functions definition of the davs2 library\r\n *\r\n * -----"
  },
  {
    "path": "source/common/osdep.h",
    "chars": 12566,
    "preview": "/*\r\n * osdep.h\r\n *\r\n * Description of this file:\r\n *    platform-specific code functions definition of the davs2 library"
  },
  {
    "path": "source/common/pixel.cc",
    "chars": 20868,
    "preview": "/*\r\n * pixel.cc\r\n *\r\n * Description of this file:\r\n *    Pixel processing functions definition of the davs2 library\r\n *\r"
  },
  {
    "path": "source/common/predict.cc",
    "chars": 25384,
    "preview": "/*\r\n * predict.cc\r\n *\r\n * Description of this file:\r\n *    Prediction functions definition of the davs2 library\r\n *\r\n * "
  },
  {
    "path": "source/common/predict.h",
    "chars": 10782,
    "preview": "/*\r\n * predict.h\r\n *\r\n * Description of this file:\r\n *    Prediction functions definition of the davs2 library\r\n *\r\n * -"
  },
  {
    "path": "source/common/primitives.cc",
    "chars": 2444,
    "preview": "/*\r\n * primitives.cc\r\n *\r\n * Description of this file:\r\n *    function handles initialize functions definition of the da"
  },
  {
    "path": "source/common/primitives.h",
    "chars": 7833,
    "preview": "/*\r\n * primitives.h\r\n *\r\n * Description of this file:\r\n *    function handles initialize functions definition of the dav"
  },
  {
    "path": "source/common/quant.cc",
    "chars": 10280,
    "preview": "/*\r\n * quant.c\r\n *\r\n * Description of this file:\r\n *    Quant functions definition of the davs2 library\r\n *\r\n * --------"
  },
  {
    "path": "source/common/quant.h",
    "chars": 3981,
    "preview": "/*\r\n * quant.h\r\n *\r\n * Description of this file:\r\n *    Quant functions definition of the davs2 library\r\n *\r\n * --------"
  },
  {
    "path": "source/common/sao.cc",
    "chars": 26564,
    "preview": "/*\r\n * sao.cc\r\n *\r\n * Description of this file:\r\n *    SAO functions definition of the davs2 library\r\n *\r\n * -----------"
  },
  {
    "path": "source/common/sao.h",
    "chars": 1956,
    "preview": "/*\r\n * sao.h\r\n *\r\n * Description of this file:\r\n *    SAO functions definition of the davs2 library\r\n *\r\n * ------------"
  },
  {
    "path": "source/common/scantab.h",
    "chars": 31148,
    "preview": "/*\r\n * scantab.h\r\n *\r\n * Description of this file:\r\n *    tAVS2 scan tables of the davs2 library (this file is ONLY incl"
  },
  {
    "path": "source/common/threadpool.cc",
    "chars": 11441,
    "preview": "/*\r\n * threadpool.cc\r\n *\r\n * Description of this file:\r\n *    thread pooling functions definition of the davs2 library\r\n"
  },
  {
    "path": "source/common/threadpool.h",
    "chars": 2380,
    "preview": "/*\r\n * threadpool.h\r\n *\r\n * Description of this file:\r\n *    thread pooling functions definition of the davs2 library\r\n "
  },
  {
    "path": "source/common/transform.cc",
    "chars": 40876,
    "preview": "/*\r\n *  transform.cc\r\n *\r\n * Description of this file:\r\n *    Transform functions definition of the davs2 library\r\n *\r\n "
  },
  {
    "path": "source/common/transform.h",
    "chars": 1727,
    "preview": "/*\r\n *  transform.h\r\n *\r\n * Description of this file:\r\n *    Transform functions definition of the davs2 library\r\n *\r\n *"
  },
  {
    "path": "source/common/vec/intrinsic.cc",
    "chars": 30262,
    "preview": "/*\r\n * intrinsic.cc\r\n *\r\n * Description of this file:\r\n *    tables used in SIMD assembly functions of the davs2 library"
  },
  {
    "path": "source/common/vec/intrinsic.h",
    "chars": 38726,
    "preview": "/*\r\n * intrinsic.h\r\n *\r\n * Description of this file:\r\n *    SIMD assembly functions definition of the davs2 library\r\n *\r"
  },
  {
    "path": "source/common/vec/intrinsic_alf.cc",
    "chars": 8691,
    "preview": "/*\r\n * intrinsic_alf.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of ALF module of the davs2 libra"
  },
  {
    "path": "source/common/vec/intrinsic_deblock.cc",
    "chars": 31369,
    "preview": "/*\r\n * intrinsic_deblock.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of Deblock module of the dav"
  },
  {
    "path": "source/common/vec/intrinsic_deblock_avx2.cc",
    "chars": 33262,
    "preview": "/*\r\n * intrinsic_deblock_avx2.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of Deblock module of t"
  },
  {
    "path": "source/common/vec/intrinsic_idct.cc",
    "chars": 530874,
    "preview": "/*\r\n * intrinsic_idct.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of IDCT module of the davs2 lib"
  },
  {
    "path": "source/common/vec/intrinsic_idct_avx2.cc",
    "chars": 148147,
    "preview": "/*\r\n * intrinsic_idct_avx2.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of IDCT module of the dav"
  },
  {
    "path": "source/common/vec/intrinsic_inter_pred.cc",
    "chars": 220076,
    "preview": "/*\r\n * intrinsic_inter-pred.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of Inter-Prediction modul"
  },
  {
    "path": "source/common/vec/intrinsic_inter_pred_avx2.cc",
    "chars": 126686,
    "preview": "/*\r\n * intrinsic_inter-pred_avx2.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of Inter-Prediction"
  },
  {
    "path": "source/common/vec/intrinsic_intra-filledge.cc",
    "chars": 18925,
    "preview": "/*\r\n * intrinsic_intra-fiiledge.cc\r\n *\r\n * Description of this file:\r\n *   SSE assembly functions of Intra-Filledge modu"
  },
  {
    "path": "source/common/vec/intrinsic_intra-pred.cc",
    "chars": 317937,
    "preview": "/*\r\n * intrinsic_intra-pred.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of Intra-Prediction modul"
  },
  {
    "path": "source/common/vec/intrinsic_intra-pred_avx2.cc",
    "chars": 320237,
    "preview": "/*\r\n * intrinsic_intra-pred_avx2.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of Intra-Prediction"
  },
  {
    "path": "source/common/vec/intrinsic_pixel.cc",
    "chars": 6089,
    "preview": "/*\r\n * intrinsic_pixel.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of Pixel-Processing module of "
  },
  {
    "path": "source/common/vec/intrinsic_pixel_avx.cc",
    "chars": 16496,
    "preview": "/*\r\n * intrinsic_pixel_avx.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of Pixel-Processing modul"
  },
  {
    "path": "source/common/vec/intrinsic_sao.cc",
    "chars": 26545,
    "preview": "/*\r\n * intrinsic_sao.cc\r\n *\r\n * Description of this file:\r\n *    SSE assembly functions of SAO module of the davs2 libra"
  },
  {
    "path": "source/common/vec/intrinsic_sao_avx2.cc",
    "chars": 28217,
    "preview": "/*\r\n * intrinsic_sao_avx2.cc\r\n *\r\n * Description of this file:\r\n *    AVX2 assembly functions of SAO module of the davs2"
  },
  {
    "path": "source/common/vlc.h",
    "chars": 6964,
    "preview": "/*\r\n *  vlc.h\r\n *\r\n * Description of this file:\r\n *    VLC functions definition of the davs2 library\r\n *\r\n * -----------"
  },
  {
    "path": "source/common/win32thread.cc",
    "chars": 12229,
    "preview": "/*****************************************************************************\r\n * win32thread.c: windows threading\r\n **"
  },
  {
    "path": "source/common/win32thread.h",
    "chars": 4446,
    "preview": "/*****************************************************************************\r\n * win32thread.h: windows threading\r\n **"
  },
  {
    "path": "source/common/x86/blockcopy8.asm",
    "chars": 164173,
    "preview": ";*****************************************************************************\r\n;* Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/const-a.asm",
    "chars": 8600,
    "preview": ";*****************************************************************************\r\n;* const-a.asm: x86 global constants\r\n;*"
  },
  {
    "path": "source/common/x86/cpu-a.asm",
    "chars": 5859,
    "preview": ";*****************************************************************************\r\n;* cpu-a.asm: x86 cpu utilities\r\n;******"
  },
  {
    "path": "source/common/x86/dct8.asm",
    "chars": 95229,
    "preview": ";*****************************************************************************\r\n;* Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/dct8.h",
    "chars": 1943,
    "preview": "/*****************************************************************************\r\n * Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/ipfilter8.asm",
    "chars": 916720,
    "preview": ";*****************************************************************************\r\n;* Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/ipfilter8.h",
    "chars": 2551,
    "preview": "/*****************************************************************************\r\n * Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/mc-a2.asm",
    "chars": 51453,
    "preview": ";*****************************************************************************\r\n;* mc-a2.asm: x86 motion compensation\r\n;"
  },
  {
    "path": "source/common/x86/pixeladd8.asm",
    "chars": 35554,
    "preview": ";*****************************************************************************\r\n;* Copyright (C) 2013-2017 MulticoreWare"
  },
  {
    "path": "source/common/x86/quant8.asm",
    "chars": 3951,
    "preview": ";*****************************************************************************\r\n;* quant8.asm: x86 quantization function"
  },
  {
    "path": "source/common/x86/x86inc.asm",
    "chars": 44226,
    "preview": ";*****************************************************************************\r\n;* x86inc.asm: x264asm abstraction layer"
  },
  {
    "path": "source/common/x86/x86util.asm",
    "chars": 21238,
    "preview": ";*****************************************************************************\r\n;* x86util.asm: x86 utility macros\r\n;***"
  },
  {
    "path": "source/configw.h",
    "chars": 2892,
    "preview": "/*\r\n * configw.h\r\n *\r\n * Description of this file:\r\n *    header file for MS/Intel compiler on windows platform of the d"
  },
  {
    "path": "source/davs2.h",
    "chars": 11171,
    "preview": "/*\r\n * davs2.h\r\n *\r\n * Description of this file:\r\n *    API functions definition of the davs2 library\r\n *\r\n * ----------"
  },
  {
    "path": "source/test/getopt/getopt.c",
    "chars": 36458,
    "preview": "/* Getopt for GNU.\r\n   NOTE: getopt is now part of the C library, so if you don't know what\r\n   \"Keep this file name-spa"
  },
  {
    "path": "source/test/getopt/getopt.h",
    "chars": 6788,
    "preview": "/* Declarations for getopt.\r\n   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.\r\n   This file is"
  },
  {
    "path": "source/test/inputstream.h",
    "chars": 4353,
    "preview": "/*\r\n * inputstream.h\r\n *\r\n * Description of this file:\r\n *    Inputstream Processing functions definition of the davs2 l"
  },
  {
    "path": "source/test/md5.h",
    "chars": 9143,
    "preview": "/*\r\n * md5.h\r\n *\r\n * Description of this file:\r\n *    MD5 calculate function of davs2.\r\n * \r\n */\r\n\r\n/* The copyright in "
  },
  {
    "path": "source/test/parse_args.h",
    "chars": 8232,
    "preview": "/*\r\n * parse_args.h\r\n *\r\n * Description of this file:\r\n *    Argument Parsing functions definition of the davs2 library"
  },
  {
    "path": "source/test/psnr.h",
    "chars": 10772,
    "preview": "/*\r\n * psnr.h\r\n *\r\n * Description of this file:\r\n *    PSNR Calculating functions definition of the davs2 library\r\n *\r\n "
  },
  {
    "path": "source/test/test.c",
    "chars": 12474,
    "preview": "/*\r\n * test.c\r\n *\r\n * Description of this file:\r\n *    test the AVS2 Video Decoder  davs2 library\r\n *\r\n * --------------"
  },
  {
    "path": "source/test/utils.h",
    "chars": 6151,
    "preview": "/*\r\n * utils.h\r\n *\r\n * Description of this file:\r\n *    functions definition of the davs2 library\r\n *\r\n * --------------"
  },
  {
    "path": "version.sh",
    "chars": 3704,
    "preview": "#!/bin/sh\n\n# ============================================================================\n# File:\n#   version.sh\n#   - g"
  }
]

About this extraction

This page contains the full source code of the pkuvcl/davs2 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 114 files (4.2 MB), approximately 1.1M tokens, and a symbol index with 644 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!