README.md
1# H.264 Test Data
2
3This document lists the test data used by the H.264 decoder.
4
5Unless otherwise noted, the CRCs were computed using GStreamer's VA-API decoder in
6`gst-plugins-bad`.
7
8## 16x16-I.h264
9
10A 16x16 progressive byte-stream encoded I-frame to make it easier to spot errors on the libva trace.
11Encoded with the following GStreamer pipeline:
12
13```
14gst-launch-1.0 videotestsrc num-buffers=1 ! video/x-raw,format=I420,width=16,height=16 ! \
15x264enc ! video/x-h264,profile=constrained-baseline,stream-format=byte-stream ! \
16filesink location="/tmp/16x16-I.h264"
17```
18
19## 16x16-I-P.h264
20
21A 16x16 progressive byte-stream encoded I-frame and P-frame to make it easier to spot errors on the
22libva trace. Encoded with the following GStreamer pipeline:
23
24```
25gst-launch-1.0 videotestsrc num-buffers=2 ! video/x-raw,format=I420,width=16,height=16 ! \
26x264enc b-adapt=false ! video/x-h264,profile=constrained-baseline,stream-format=byte-stream ! \
27filesink location="/tmp/16x16-I-P.h264"
28```
29
30## 16x16-I-P-B-P.h264
31
32A 16x16 progressive byte-stream encoded I-P-B-P sequence to make it easier to it easier to spot
33errors on the libva trace. Encoded with the following GStreamer pipeline:
34
35```
36gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw,format=I420,width=16,height=16 ! \
37x264enc b-adapt=false bframes=1 ! video/x-h264,profile=constrained-baseline,stream-format=byte-stream ! \
38filesink location="/tmp/16x16-I-B-P.h264"
39```
40
41## 16x16-I-P-B-P-high.h264
42
43A 16x16 progressive byte-stream encoded I-P-B-P sequence to make it easier to it easier to spot
44errors on the libva trace. Also tests whether the decoder supports the high profile. Encoded with
45the following GStreamer pipeline:
46
47```
48gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw,format=I420,width=16,height=16 ! \
49x264enc b-adapt=false bframes=1 ! video/x-h264,profile=high,stream-format=byte-stream ! \
50filesink location="/tmp/16x16-I-B-P-high.h264"
51```
52
53## test-25fps.h264
54
55Same as Chromium's `test-25fps.h264`. The slice data in `test-25fps-h264-slice-data-*.bin` was
56manually extracted from GStreamer using GDB.
57
58## test-25fps-interlaced.h264
59
60Adapted from Chromium's `test-25fps.h264`. Same file as above, but encoded as interlaced instead
61using the following ffmpeg command:
62
63```
64ffmpeg -i \
65src/third_party/blink/web_tests/media/content/test-25fps.mp4 \
66-flags +ilme+ildct -vbsf h264_mp4toannexb -an test-25fps.h264
67```
68
69This test makes sure that the interlaced logic in the decoder actually works, specially that "frame
70splitting" works, as the fields here were encoded as frames.
71