| # libvda |
| |
| ## About |
| |
| libvda is a library that provides a C API for video decoding as defined in |
| [libvda.h](./libvda.h). |
| |
| ## Implementations |
| |
| ### [GPU](./gpu) |
| |
| An implementation that communicates with `GpuArcVideoDecodeAccelerator` running |
| in the GPU process. Internally, communication is done with libmojo using the |
| [VideoDecodeAccelerator](https://chromium.googlesource.com/chromium/src.git/+/HEAD/components/arc/common/video_decode_accelerator.mojom) mojo interface. |
| |
| ### [Fake](./fake) |
| 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 |