
import {Driver} from "../../driver/driver.js"
import {DecoderSource} from "../../driver/fns/schematic.js"

export function setupTranscodeTest(driver: Driver, source: DecoderSource) {
	const dimensions = {width: 1920, height: 1080}

	const canvas = document.createElement("canvas")
	canvas.width = dimensions.width
	canvas.height = dimensions.height
	const ctx = canvas.getContext("2d")

	async function run() {
		const video = driver.decodeVideo({
			source,
			async onFrame(frame) {
				const composed = await driver.composite([
					{
						id: 0,
						kind: "image",
						frame
					},
					{
						id: 1,
						kind: "text",
						content: "omnitool",
						style: {
							fontSize: 50,
							fill: "green"
						}
					}
				])
				frame.close()
				ctx?.drawImage(composed, 0, 0)
				return composed
			}
		})
		const audio = driver.decodeAudio({source})

		const {readable, done} = driver.encode({
			video: video.readable,
			audio: audio.readable,
			config: {
				audio: {codec: "opus", bitrate: 128000},
				video: {codec: "vp9", bitrate: 1000000}
			}
		})

		const handle = await window.showSaveFilePicker()
		const writable = await handle.createWritable()

		await Promise.all([
			readable.pipeTo(writable),
			done
		])
	}

	return {canvas, run}
}

