libvda is a library that provides a C API for video decoding as defined in libvda.h.



An implementation that communicates with GpuArcVideoDecodeAccelerator running in the GPU process. Internally, communication is done with libmojo using the VideoDecodeAccelerator mojo interface.


An empty implementation useful for integration testing. Users can initialize this implementation to see verbose logs when each vda function is called, as well as receive empty PICTURE_READY events.

Running unittests manually

There are unit tests for both the fake and the GPU implementation. The GPU unit tests require ChromeOS with Chrome running in order to communicate with the GPU process. The DecodeFileGpu unit test requires an encoded video file with extension .h264, .vp8, .vp9 to be provided that contains an H264, VP8, or VP9 video stream respectively. This can be passed in using the --test_video_file command line flag.

Example usage:

./libvda_unittest --test_video_file=test_stream.h264