tree: d940a470891b7b1cd354de8b1b12808d4dc4a1c4 [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. encodedVideoChunk-serialization.crossAgentCluster.helper.html
  21. encodedVideoChunk-serialization.crossAgentCluster.https.html
  22. four-colors-flip.avif
  23. four-colors-flip.gif
  24. four-colors-full-range-bt2020-pq-444-10bpc.avif
  25. four-colors-full-range-hlg-420-10bpc.avif
  26. four-colors-full-range-hlg-420-12bpc.avif
  27. four-colors-full-range-hlg-422-10bpc.avif
  28. four-colors-full-range-hlg-422-12bpc.avif
  29. four-colors-full-range-hlg-444-10bpc.avif
  30. four-colors-full-range-hlg-444-12bpc.avif
  31. four-colors-limited-range-420-8bpc.avif
  32. four-colors-limited-range-420-8bpc.jpg
  33. four-colors-limited-range-420-8bpc.webp
  34. four-colors-limited-range-422-8bpc.avif
  35. four-colors-limited-range-444-8bpc.avif
  36. four-colors.avif
  37. four-colors.gif
  38. four-colors.jpg
  39. four-colors.mp4
  40. four-colors.png
  41. four-colors.webp
  42. full-cycle-test.https.any.js
  43. h264.annexb
  44. h264.mp4
  45. h265.annexb
  46. h265.mp4
  47. idlharness.https.any.js
  48. image-decoder-disconnect-readable-stream-crash.https.html
  49. image-decoder-image-orientation-none.https.html
  50. image-decoder-utils.js
  51. image-decoder.crossOriginIsolated.https.any.js
  52. image-decoder.crossOriginIsolated.https.any.js.headers
  53. image-decoder.https.any.js
  54. META.yml
  55. pattern.png
  56. per-frame-qp-encoding.https.any.js
  57. README.md
  58. reconfiguring-encoder.https.any.js
  59. serialization.crossAgentCluster.serviceworker.js
  60. sfx-aac.mp4
  61. sfx-alaw.wav
  62. sfx-opus.ogg
  63. sfx-pcm-f32.wav
  64. sfx-pcm-s16.wav
  65. sfx-pcm-s24.wav
  66. sfx-pcm-s32.wav
  67. sfx-pcm-u8.wav
  68. sfx-ulaw.wav
  69. sfx-vorbis.ogg
  70. sfx.adts
  71. sfx.flac
  72. sfx.mp3
  73. temporal-svc-encoding.https.any.js
  74. transfering.https.any.js
  75. utils.js
  76. video-decoder-no-size-in-configure.https.any.js
  77. video-decoder.crossOriginIsolated.https.any.js
  78. video-decoder.crossOriginIsolated.https.any.js.headers
  79. video-decoder.https.any.js
  80. video-encoder-canvasImageSource.https.html
  81. video-encoder-config.https.any.js
  82. video-encoder-content-hint.https.any.js
  83. video-encoder-flush.https.any.js
  84. video-encoder-h264.https.any.js
  85. video-encoder-h26x-annexb.https.any.js
  86. video-encoder-orientation.https.any.js
  87. video-encoder-rescaling.https.any.js
  88. video-encoder-utils.js
  89. video-encoder.https.any.js
  90. video-frame-serialization.any.js
  91. videoColorSpace.any.js
  92. videoDecoder-codec-specific-orientation.https.any.js
  93. videoDecoder-codec-specific-setup.js
  94. videoDecoder-codec-specific.https.any.js
  95. videoFrame-alpha.any.js
  96. videoFrame-canvasImageSource.html
  97. videoFrame-construction.any.js
  98. videoFrame-construction.crossOriginIsolated.https.any.js
  99. videoFrame-construction.crossOriginIsolated.https.any.js.headers
  100. videoFrame-construction.crossOriginSource.sub.html
  101. videoFrame-construction.window.js
  102. videoFrame-copyTo-rgb.any.js
  103. videoFrame-copyTo.any.js
  104. videoFrame-copyTo.crossOriginIsolated.https.any.js
  105. videoFrame-copyTo.crossOriginIsolated.https.any.js.headers
  106. videoFrame-createImageBitmap.any.js
  107. videoFrame-createImageBitmap.https.any.js
  108. videoFrame-drawImage-hbd.any.js
  109. videoFrame-drawImage.any.js
  110. videoFrame-odd-size.any.js
  111. videoFrame-orientation.any.js
  112. videoFrame-serialization.crossAgentCluster.helper.html
  113. videoFrame-serialization.crossAgentCluster.https.html
  114. videoFrame-serialization.https.html
  115. videoFrame-texImage.any.js
  116. videoFrame-utils.js
  117. vp8.webm
  118. vp9.mp4
  119. WEB_FEATURES.yml
  120. 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 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.
    • 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-full-range-(420|422|444)-hlg-(10|12)bpc.avif

avifenc -r f -d 10 -y 420 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-420-10bpc.avif avifenc -r f -d 10 -y 422 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-422-10bpc.avif avifenc -r f -d 10 -y 444 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-444-10bpc.avif avifenc -r f -d 12 -y 420 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-420-12bpc.avif avifenc -r f -d 12 -y 422 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-422-12bpc.avif avifenc -r f -d 12 -y 444 -s 0 --nclx 9/18/9 four-colors.png four-colors-full-range-hlg-444-12bpc.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.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