
README - 2019년 1월 31일
WebM VP8/VP9 코덱 SDK에 오신 것을 환영합니다!
애플리케이션/라이브러리 컴파일: 사용되는 빌드 시스템은 autotools와 유사합니다. 빌드는 일반적으로 원하는 빌드 옵션으로 "구성(configuring)"한 다음 GNU make를 사용하여 애플리케이션을 빌드하는 방식으로 진행됩니다.
* 모든 x86 타겟에는 Yasm[1] 어셈블러가 설치[2]되어 있어야 합니다.
* 모든 Windows 빌드에는 Cygwin[3]이 설치되어 있어야 합니다.
* 문서 빌드에는 Doxygen[4]이 필요합니다. 이 패키지가 없는 경우
install-docs 옵션은 비활성화됩니다.
* 단위 테스트 데이터 다운로드에는 curl[5] 및 sha1sum이 필요합니다.
sha1sum은 GNU coreutils를 통해 제공되며, 많은 *nix 플랫폼뿐만 아니라
MinGW 및 Cygwin에도 기본적으로 설치되어 있습니다. coreutils를 사용할 수 없는
경우, 소스[6]에서 호환되는 버전의 sha1sum을 빌드할 수 있습니다. 이러한 요구
사항은 단위 테스트를 실행하지 않는 경우 선택 사항입니다.
[1]: http://www.tortall.net/projects/yasm
[2]: Visual Studio의 경우 기본 yasm 바이너리(vsyasm 아님)가 Visual Studio의
PATH에 있어야 합니다. VS2017의 경우 yasm-<version>-<arch>.exe의 이름을
yasm.exe로 바꾸고 다음 위치에 배치하는 것으로 충분합니다:
Program Files (x86)/Microsoft Visual Studio/2017/<level>/Common7/Tools/
[3]: http://www.cygwin.com
[4]: http://www.doxygen.org
[5]: http://curl.haxx.se
[6]: http://www.microbrew.org/tools/md5sha1sum/
2. 아웃오브트리(Out-of-tree) 빌드 아웃오브트리 빌드는 애플리케이션을 빌드하는 지원되는 방법입니다. 아웃오브트리 빌드의 경우 소스 트리는 컴파일 중에 생성되는 오브젝트 파일과 분리되어 유지됩니다. 예를 들어:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. 구성 옵션 'configure' 스크립트는 다양한 옵션을 지원합니다. --help 옵션을 사용하여 지원되는 옵션 목록을 얻을 수 있습니다: $ ../libvpx/configure --help
컴파일러 분석기 컴파일러에는 주소 계산, 메모리 사용, 스레딩, 정의되지 않은 동작 및 기타 일반적인 오류에 대한 정보로 바이너리를 계측하는 sanitizer가 추가되었습니다. 이러한 기능 중 일부로 libvpx를 더 간단하게 빌드하려면 configure를 실행하기 전에 tools/set_analyzer_env.sh를 사용하십시오. 이 스크립트는 컴파일러와 빌드에 필요한 플래그는 물론, 바이너리를 테스트할 때 분석기가 읽는 환경 변수를 설정합니다. $ source ../libvpx/tools/set_analyzer_env.sh address
크로스 개발 크로스 개발의 경우 가장 주목할 만한 옵션은 --target 옵션입니다. 지원되는 타겟의 최신 목록은 configure 스크립트의 --help 출력 하단에서 확인할 수 있습니다. 현재 작성 시점을 기준으로 사용 가능한 타겟 목록은 다음과 같습니다:
arm64-android-gcc
arm64-darwin-gcc
arm64-linux-gcc
arm64-win64-gcc
arm64-win64-vs15
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-gcc
armv7-win32-vs14
armv7-win32-vs15
armv7s-darwin-gcc
armv8-linux-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc64le-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-darwin15-gcc
x86-darwin16-gcc
x86-darwin17-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs14
x86-win32-vs15
x86_64-android-gcc
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-darwin15-gcc
x86_64-darwin16-gcc
x86_64-darwin17-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs14
x86_64-win64-vs15
generic-gnu
generic-gnu 타겟은 CROSS 환경 변수와 함께 사용하면, 툴체인이 크로스 GNU (gcc/binutils) 툴체인인 경우 명시적으로 나열되지 않은 아키텍처를 크로스 컴파일하는 데 사용할 수 있습니다. 다른 POSIX 툴체인도 작동할 가능성이 높습니다. 예를 들어, mipsel-linux-uclibc 툴체인을 사용하여 빌드하려면 다음 명령을 사용할 수 있습니다 (POSIX SH 구문이므로 셸에 맞게 조정하십시오):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
또한 호출할 실행 파일은 환경 변수 CC, AR, LD, AS, STRIP, NM을 지정하여 재정의할 수 있습니다. 이러한 실행 파일에 CFLAGS, LDFLAGS 및 ASFLAGS로 추가 플래그를 전달할 수 있습니다.
VP8/VP9 테스트 벡터: 테스트 벡터는 configure 실행 후 빌드 시스템을 사용하여 다운로드하고 검증할 수 있습니다. 다른 디렉터리를 지정하려면 LIBVPX_TEST_DATA_PATH 환경 변수를 사용할 수 있습니다.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
코드 스타일: 이 프로젝트에서 사용하는 코딩 스타일은 저장소 루트의 .clang-format 파일에 포함된 구성을 사용하여 clang-format으로 적용됩니다.
변경 사항을 검토용으로 푸시하기 전에 다음으로 코드 형식을 지정할 수 있습니다:
$ clang-format -i --style=file
$(git diff --name-only --diff-filter=ACMR '.[hc]' '.cc')
로컬 서식과 검토 시스템 간에 차이가 있는 경우 .clang-format 파일에서 생성에 사용된 버전을 확인하십시오.
참조: http://clang.llvm.org/docs/ClangFormat.html
지원 이 라이브러리는 커뮤니티가 지원하는 오픈 소스 프로젝트입니다. 도움이 필요하면 [email protected]로 이메일을 보내주십시오.