Search code examples
androidvideovoipvp8

VP8 encode/decode on android results in black and white image with red, green and blue squares


I've got a VoIP video application that works fine on MAC, Windows and iOS using the VP8 codec. When I place a call between any of these platforms and Android both sides of the call have a black and white image with red, green and blue squares. The same happens when Android calls Android.

I'm compiling VP8 with:

./libvpx/configure --target=armv7-android-gcc --sdk-path=/Applications/adt/ndk --disable-examples --enable-runtime-cpu-detect  --enable-realtime-only --enable-neon

My question is why does the Android platform yield this result and how can I go about debugging it?

Here is a screenshot of the problem:

Additional information:

The camera frame format is ImageFormat.NV21. The encoder image format is VPX_IMG_FMT_I420.


Solution

  • Because libvpx is configured to take image format VPX_IMG_FMT_I420 the NV21 frames must first be converted to I420.