corevm_video_test/
lib.rs

1#![cfg_attr(any(target_arch = "riscv32", target_arch = "riscv64"), no_std)]
2
3use common::{VideoFrameGenerator, HEIGHT, WIDTH};
4use corevm_guest::{video_mode, yield_video_frame, VideoFrameFormat, VideoMode};
5use corevm_video_test_common as common;
6
7corevm_guest::min_stack_size!(2 * 4096 + common::MAX_FRAME_LEN.next_multiple_of(4096));
8
9// Generate frames with random contents.
10#[polkavm_derive::polkavm_export]
11pub extern "C" fn main() -> u64 {
12	video_mode(&VideoMode {
13		width: WIDTH as u32,
14		height: HEIGHT as u32,
15		refresh_rate: 30,
16		format: VideoFrameFormat::Rgb888Indexed8,
17	});
18	let mut gen = VideoFrameGenerator::new();
19	loop {
20		let frame = gen.generate();
21		yield_video_frame(frame);
22	}
23}
24
25#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
26#[panic_handler]
27fn panic(info: &core::panic::PanicInfo) -> ! {
28	corevm_guest::panic(info)
29}