172 lines
4.9 KiB
Markdown
172 lines
4.9 KiB
Markdown
# WebCodecs Test Files
|
|
|
|
[TOC]
|
|
|
|
## Instructions
|
|
|
|
To add, update or remove a test file, please update the list below.
|
|
|
|
Please provide full reference and steps to generate the test file so that
|
|
anybody can regenerate or update the file in the future.
|
|
|
|
## Notes
|
|
* When updating the sample offsets and descriptions for tests using mp4 files, it's easiest to use [mp4box.js](https://gpac.github.io/mp4box.js/test/filereader.html).
|
|
* Sample offsets can be copied from the "Sample View" tab after unchecking all but offset and size. Use a multi-line edit mode and clang-format to quickly format entries.
|
|
* Description entries can be found under moov.trak.mdia.minf.stbl.stsd in box view.
|
|
* avc1.avcC or hvc1.hvcC has an offset, size in the same view. Add 8 to offset and subtract 8 from the size to get the values the tests want.
|
|
* If you use ffprobe -show_packets to get sample offsets, you may need to add 4 to each `pos` value. You can tell if you need to by whether or not tests pass.
|
|
|
|
## List of Test Files
|
|
|
|
### four-colors.png
|
|
Generated using MSPaint like a true professional.
|
|
|
|
### four-colors.avif
|
|
Lossless encoding must be used to ensure colors are perfect.
|
|
```
|
|
avifenc -l four-colors.png -o four-colors.avif
|
|
```
|
|
|
|
### four-colors.webp
|
|
Lossless encoding must be used to ensure colors are perfect.
|
|
```
|
|
ffmpeg -i four-colors.png -lossless 1 -y four-colors.webp
|
|
```
|
|
|
|
### four-colors-limited-range-420-8bpc.webp
|
|
```
|
|
ffmpeg -i four-colors.png -pix_fmt yuv420p four-colors-limited-range-420-8bpc.webp
|
|
```
|
|
|
|
### four-colors.gif
|
|
High quality encoding must be used to ensure colors are perfect.
|
|
```
|
|
cp four-colors.png four-colors2.png
|
|
gifski -o four-colors.gif four-colors*.png
|
|
```
|
|
|
|
### four-colors-flip.gif
|
|
High quality encoding must be used to ensure colors are perfect.
|
|
```
|
|
ffmpeg -i four-colors.png -vf "rotate=PI" four-colors2.png
|
|
gifski -o four-colors-flip.gif four-colors*.png
|
|
```
|
|
|
|
### four-colors-flip.avif
|
|
```
|
|
ffmpeg -i four-colors-flip.gif -crf 16 four-colors-flip.avif
|
|
```
|
|
|
|
### four-colors-limited-range-(420|422|444)-8bpc.avif
|
|
```
|
|
avifenc -r l -d 8 -y 420 -s 0 four-colors.png four-colors-limited-range-420-8bpc.avif
|
|
avifenc -r l -d 8 -y 422 -s 0 four-colors.png four-colors-limited-range-422-8bpc.avif
|
|
avifenc -r l -d 8 -y 444 -s 0 four-colors.png four-colors-limited-range-444-8bpc.avif
|
|
```
|
|
|
|
### four-colors-full-range-bt2020-pq-444-10bpc.avif
|
|
```
|
|
avifenc -r f -d 10 -y 444 -s 0 --nclx 9/16/9 four-colors.png four-colors-full-range-bt2020-pq-444-10bpc.avif
|
|
```
|
|
|
|
### four-colors.jpg
|
|
Used [Sqoosh.app](https://squoosh.app/) with MozJPEG compression and RGB
|
|
channels. exiftool was then used to add an orientation marker.
|
|
```
|
|
exiftool -Orientation=1 -n four-colors.jpg
|
|
```
|
|
|
|
### four-colors-limited-range-420-8bpc.jpg
|
|
Used [Sqoosh.app](https://squoosh.app/) with MozJPEG compression and YUV
|
|
channels. exiftool was then used to add an orientation marker.
|
|
```
|
|
exiftool -Orientation=1 -n four-colors-limited-range-420-8bpc.jpg
|
|
```
|
|
|
|
### four-colors.mp4
|
|
Used a [custom tool](https://storage.googleapis.com/dalecurtis/avif2mp4.html) to convert four-colors.avif into a .mp4 file.
|
|
|
|
### h264.mp4
|
|
```
|
|
ffmpeg -f lavfi -i testsrc=rate=10:n=1 -t 1 -pix_fmt yuv420p -vcodec h264 -tune zerolatency h264.mp4
|
|
```
|
|
|
|
### h264.annexb
|
|
```
|
|
ffmpeg -i h264.mp4 -codec copy -bsf:v h264_mp4toannexb -f h264 h264.annexb
|
|
```
|
|
|
|
### h265.mp4
|
|
```
|
|
ffmpeg -f lavfi -i testsrc=rate=10:n=1 -t 1 -pix_fmt yuv420p -vcodec hevc -tag:v hvc1 -tune zerolatency h265.mp4
|
|
```
|
|
|
|
### h265.annexb
|
|
```
|
|
ffmpeg -i h265.mp4 -codec copy -bsf:v hevc_mp4toannexb -f hevc h265.annexb
|
|
```
|
|
|
|
### sfx.adts
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec aac -b:a 96K sfx.adts
|
|
```
|
|
|
|
### sfx.mp3
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec libmp3lame -b:a 96K sfx.mp3
|
|
```
|
|
|
|
### sfx.flac
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 sfx.flac
|
|
```
|
|
|
|
### sfx-aac.mp4
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec aac -b:a 96K sfx-aac.mp4
|
|
```
|
|
|
|
### sfx-*.wav
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
for codec in s16 s24 s32 f32
|
|
do
|
|
# Add "le" suffix
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec pcm_"$codec"le sfx-pcm-$codec.wav
|
|
done
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec pcm_u8 sfx-pcm-u8.wav
|
|
for codec in alaw mulaw
|
|
do
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec pcm_$codec sfx-$codec.wav
|
|
done
|
|
```
|
|
|
|
### sfx-opus.ogg
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec libopus -b:a 96K sfx-opus.ogg
|
|
|
|
### sfx-vorbis.ogg
|
|
```
|
|
sox -n -r 48000 sfx.wav synth 1 sine 480
|
|
ffmpeg -i sfx.wav -frames:a 10 -acodec libvorbis -b:a 96K sfx-vorbis.ogg
|
|
```
|
|
|
|
### av1.mp4
|
|
```
|
|
ffmpeg -f lavfi -i testsrc=rate=10:n=1 -t 1 -pix_fmt yuv420p -vcodec libaom-av1 av1.mp4
|
|
```
|
|
|
|
### vp8.webm
|
|
```
|
|
ffmpeg -f lavfi -i testsrc=rate=10:n=1 -t 1 -pix_fmt yuv420p -vcodec vp8 vp8.webm
|
|
```
|
|
|
|
### vp9.mp4
|
|
```
|
|
ffmpeg -f lavfi -i testsrc=rate=10:n=1 -t 1 -pix_fmt yuv420p -vcodec vp9 vp9.mp4
|
|
```
|