x264-framing 0.1.0

Encoding video into the H.264 format.
extern crate framing;
extern crate x264_framing;

use framing::{Chunky, Function, Bgra};
use std::io::Write;
use std::fs::File;
use x264_framing::{Setup, Preset, Tune};

fn main() {
    let mut encoder =
        Setup::preset(Preset::Veryfast, Tune::None, false, false)
            .width(1280)
            .height(720)
            .fps(60, 1)
            .build()
            .unwrap();

    let mut file = File::create("fade.h264").unwrap();
    let mut canvas = Chunky::new(
        Function::new(1280, 720, |_, _| Bgra(0, 0, 0, 0))
    );

    file.write_all(encoder.headers().unwrap().entirety()).unwrap();

    for i in 0..255 {
        canvas.copy_from(
            Function::new(1280, 720, |_, _| Bgra(0, i, 0, 255))
        );

        let (data, _) = encoder.encode(i as _, &canvas).unwrap();
        file.write_all(data.entirety()).unwrap();
    }

    while !encoder.done() {
        let (data, _) = encoder.work().unwrap();
        file.write_all(data.entirety()).unwrap();
    }

    println!("Done! The output is at `fade.h264`.");
    println!("Try playing it with VLC, and prepare to be underwhelmed! ;)");
}