| // META: global=window,dedicatedworker |
| // META: script=videoDecoder-codec-specific-setup.js |
| // META: variant=?h264_sei_avc |
| // META: variant=?h264_sei_annexb |
| |
| promise_test(async t => { |
| await checkImplements(); |
| const callbacks = {}; |
| const decoder = createVideoDecoder(t, callbacks); |
| decoder.configure(CONFIG); |
| |
| // Frame 0 is IDR, frame 5 is SEI recovery point. |
| decoder.decode(CHUNKS[5]); |
| |
| // First decode the IDR frame to |
| let outputs = 0; |
| callbacks.output = frame => { |
| outputs++; |
| assert_equals(frame.timestamp, CHUNKS[5].timestamp, 'timestamp'); |
| assert_equals(frame.duration, CHUNKS[5].duration, 'duration'); |
| frame.close(); |
| }; |
| |
| await decoder.flush(); |
| assert_equals(outputs, 1, 'outputs'); |
| }, 'H.264 SEI recovery point frames are treated as keyframes.'); |