tree: 8e28ffcacd930fa32460b0bcff844e240666a962 [path history] [tgz]
  1. audio-data-serialization.any.js
  2. audio-data.any.js
  3. audio-data.crossOriginIsolated.https.any.js
  4. audio-data.crossOriginIsolated.https.any.js.headers
  5. audio-decoder.crossOriginIsolated.https.any.js
  6. audio-decoder.crossOriginIsolated.https.any.js.headers
  7. audio-decoder.https.any.js
  8. audio-encoder-codec-specific.https.any.js
  9. audio-encoder-config.https.any.js
  10. audio-encoder.https.any.js
  11. audioDecoder-codec-specific.https.any.js
  12. av1.mp4
  13. chunk-serialization.any.js
  14. encoded-audio-chunk.any.js
  15. encoded-audio-chunk.crossOriginIsolated.https.any.js
  16. encoded-audio-chunk.crossOriginIsolated.https.any.js.headers
  17. encoded-video-chunk.any.js
  18. encoded-video-chunk.crossOriginIsolated.https.any.js
  19. encoded-video-chunk.crossOriginIsolated.https.any.js.headers
  20. four-colors-flip.avif
  21. four-colors-flip.gif
  22. four-colors-full-range-bt2020-pq-444-10bpc.avif
  23. four-colors-limited-range-420-8bpc.avif
  24. four-colors-limited-range-420-8bpc.jpg
  25. four-colors-limited-range-420-8bpc.webp
  26. four-colors-limited-range-422-8bpc.avif
  27. four-colors-limited-range-444-8bpc.avif
  28. four-colors.avif
  29. four-colors.gif
  30. four-colors.jpg
  31. four-colors.mp4
  32. four-colors.png
  33. four-colors.webp
  34. full-cycle-test.https.any.js
  35. h264.annexb
  36. h264.mp4
  37. h265.annexb
  38. h265.mp4
  39. idlharness.https.any.js
  40. image-decoder-disconnect-readable-stream-crash.https.html
  41. image-decoder-image-orientation-none.https.html
  42. image-decoder-utils.js
  43. image-decoder.crossOriginIsolated.https.any.js
  44. image-decoder.crossOriginIsolated.https.any.js.headers
  45. image-decoder.https.any.js
  46. META.yml
  47. pattern.png
  48. per-frame-qp-encoding.https.any.js
  49. README.md
  50. reconfiguring-encoder.https.any.js
  51. sfx-aac.mp4
  52. sfx-alaw.wav
  53. sfx-mulaw.wav
  54. sfx-opus.ogg
  55. sfx.adts
  56. sfx.mp3
  57. temporal-svc-encoding.https.any.js
  58. utils.js
  59. video-decoder.crossOriginIsolated.https.any.js
  60. video-decoder.crossOriginIsolated.https.any.js.headers
  61. video-decoder.https.any.js
  62. video-encoder-config.https.any.js
  63. video-encoder-utils.js
  64. video-encoder.https.any.js
  65. video-frame-serialization.any.js
  66. videoColorSpace.any.js
  67. videoDecoder-codec-specific.https.any.js
  68. videoFrame-alpha.any.js
  69. videoFrame-canvasImageSource.html
  70. videoFrame-construction.any.js
  71. videoFrame-construction.crossOriginIsolated.https.any.js
  72. videoFrame-construction.crossOriginIsolated.https.any.js.headers
  73. videoFrame-construction.crossOriginSource.sub.html
  74. videoFrame-construction.window.js
  75. videoFrame-copyTo.any.js
  76. videoFrame-copyTo.crossOriginIsolated.https.any.js
  77. videoFrame-copyTo.crossOriginIsolated.https.any.js.headers
  78. videoFrame-createImageBitmap.any.js
  79. videoFrame-createImageBitmap.https.any.js
  80. videoFrame-drawImage.any.js
  81. videoFrame-serialization.crossAgentCluster.helper.html
  82. videoFrame-serialization.crossAgentCluster.https.html
  83. videoFrame-serialization.crossAgentCluster.serviceworker.js
  84. videoFrame-texImage.any.js
  85. videoFrame-utils.js
  86. vp8.webm
  87. vp9.mp4
  88. webgl-test-utils.js
webcodecs/README.md

WebCodecs Test Files

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 any people 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.
    • 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 -vcodec libaom-av1 -crf 16 four-colors-flip.mp4
mp4box -add-image ref:primary:tk=1:samp=1 -ab avis -ab avif -ab miaf -brand avis four-colors-flip.mp4 -out four-colors-flip.avif
mp4box -edits 1=r 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 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 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 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-alaw.wav

sox -n -r 48000 sfx.wav synth 1 sine 480
ffmpeg -i sfx.wav -frames:a 10 -acodec pcm_alaw sfx-alaw.wav

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-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-mulaw.wav

sox -n -r 48000 sfx.wav synth 1 sine 480
ffmpeg -i sfx.wav -frames:a 10 -acodec pcm_mulaw sfx-mulaw.wav

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

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