
Codebase libvpx patchata che affronta CVE-2023-5217 con supporto sanitizer e configurazioni di build multipiattaforma per codifica VP8/VP9 sicura.
README - 31 gennaio 2019
Benvenuti nell'SDK del codec WebM VP8/VP9!
COMPILAZIONE DELLE APPLICAZIONI/LIBRERIE: Il sistema di build utilizzato è simile ad autotools. La compilazione consiste generalmente nel "configurare" con le opzioni di build desiderate, quindi utilizzare GNU make per compilare l'applicazione.
* Tutte le destinazioni x86 richiedono l'installazione dell'assembler Yasm[1][2].
* Tutte le build Windows richiedono l'installazione di Cygwin[3].
* La creazione della documentazione richiede Doxygen[4]. Se non si dispone
di questo pacchetto, l'opzione install-docs sarà disabilitata.
* Il download dei dati per i test unitari richiede curl[5] e sha1sum.
sha1sum è fornito tramite GNU coreutils, installato per impostazione predefinita su
molte piattaforme *nix, così come MinGW e Cygwin. Se coreutils non è
disponibile, è possibile creare una versione compatibile di sha1sum dal
codice sorgente[6]. Questi requisiti sono opzionali se non si eseguono i test
unitari.
[1]: http://www.tortall.net/projects/yasm
[2]: Per Visual Studio, il binario yasm di base (non vsyasm) deve essere nel
PATH per Visual Studio. Per VS2017 è sufficiente rinominare
yasm-<versione>-<arch>.exe in yasm.exe e posizionarlo in:
Program Files (x86)/Microsoft Visual Studio/2017/<livello>/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. Build fuori dall'albero sorgente Le build fuori dall'albero sorgente sono un metodo supportato per compilare l'applicazione. Per una build fuori dall'albero sorgente, l'albero sorgente viene tenuto separato dai file oggetto prodotti durante la compilazione. Ad esempio:
$ mkdir build
$ cd build
$ ../libvpx/configure <opzioni>
$ make
3. Opzioni di configurazione Lo script 'configure' supporta una serie di opzioni. L'opzione --help può essere utilizzata per ottenere un elenco delle opzioni supportate: $ ../libvpx/configure --help
Analizzatori del compilatore I compilatori hanno aggiunto sanitizer che strumentano i binari con informazioni sul calcolo degli indirizzi, l'utilizzo della memoria, il threading, il comportamento indefinito e altri errori comuni. Per semplificare la compilazione di libvpx con alcune di queste funzionalità, utilizzare tools/set_analyzer_env.sh prima di eseguire configure. Imposterà il compilatore e i flag necessari per la compilazione, nonché le variabili d'ambiente lette dall'analizzatore durante il test dei binari. $ source ../libvpx/tools/set_analyzer_env.sh address
Sviluppo cross Per lo sviluppo cross, l'opzione più notevole è l'opzione --target. L'elenco più aggiornato delle destinazioni supportate si trova alla fine dell'output --help dello script configure. Al momento della scrittura, l'elenco delle destinazioni disponibili è:
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
La destinazione generic-gnu, insieme alla variabile d'ambiente CROSS, può essere utilizzata per compilare in modo incrociato architetture che non sono elencate esplicitamente, se la toolchain è una toolchain GNU (gcc/binutils) cross. Altre toolchain POSIX funzioneranno probabilmente altrettanto bene. Ad esempio, per compilare utilizzando la toolchain mipsel-linux-uclibc, è possibile utilizzare il seguente comando (nota: sintassi POSIX SH, adattala alla tua shell se necessario):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
Inoltre, gli eseguibili da invocare possono essere sovrascritti specificando le variabili d'ambiente: CC, AR, LD, AS, STRIP, NM. Ulteriori flag possono essere passati a questi eseguibili con CFLAGS, LDFLAGS e ASFLAGS.
VETTORI DI TEST VP8/VP9: I vettori di test possono essere scaricati e verificati utilizzando il sistema di build dopo aver eseguito configure. Per specificare una directory alternativa, è possibile utilizzare la variabile d'ambiente LIBVPX_TEST_DATA_PATH.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
STILE DEL CODICE: Lo stile di codifica utilizzato da questo progetto è applicato con clang-format utilizzando la configurazione contenuta nel file .clang-format nella radice del repository.
Prima di inviare modifiche per la revisione, puoi formattare il tuo codice con:
$ clang-format -i --style=file
$(git diff --name-only --diff-filter=ACMR '.[hc]' '.cc')
Controlla il file .clang-format per la versione utilizzata per generarlo se c'è qualche differenza tra la formattazione locale e il sistema di revisione.
Vedi anche: http://clang.llvm.org/docs/ClangFormat.html
SUPPORTO Questa libreria è un progetto open source supportato dalla sua comunità. Si prega di inviare un'email a [email protected] per assistenza.