// META: global=window,dedicatedworker // META: script=videoDecoder-codec-specific-setup.js // META: variant=?av1 // META: variant=?vp8 // META: variant=?vp9 // META: variant=?h264_avc // META: variant=?h264_annexb // META: variant=?h265_hevc // META: variant=?h265_annexb promise_test(async t => { await checkImplements(); const config = { ...CONFIG, rotation: 90, flip: true, }; const support = await VideoDecoder.isConfigSupported(config); assert_true(support.supported, 'supported'); assert_equals(support.config.rotation, config.rotation, 'rotation'); assert_equals(support.config.flip, config.flip, 'flip'); }, 'Test that isConfigSupported() with orientation'); promise_test(async t => { await checkImplements(); const callbacks = {}; const decoder = createVideoDecoder(t, callbacks); let active_config = { ...CONFIG, rotation: 90, flip: true, }; decoder.configure(active_config); decoder.decode(CHUNKS[0]); decoder.decode(CHUNKS[1]); let outputs = 0; callbacks.output = frame => { outputs++; assert_equals(frame.rotation, active_config.rotation, 'rotation'); assert_equals(frame.flip, active_config.flip, 'flip'); frame.close(); }; await decoder.flush(); assert_equals(outputs, 2, 'outputs'); // Reconfigure with a different orientation. active_config = { ...CONFIG, rotation: 180, flip: false, }; decoder.configure(active_config); decoder.decode(CHUNKS[0]); decoder.decode(CHUNKS[1]); await decoder.flush(); assert_equals(outputs, 4, 'outputs'); }, 'Decode frames with orientation metadata');