Я делаю приложение для видеоконференций.Android TextureView: DrawBitmap показывает только последние 2 пикселя каждой строки
На стороне NDK я получаю от декодера изображение в YUV420, поэтому я использую http://wss.co.uk/pinknoise/yuv2rgb/, чтобы перевести его на RGB8888 в растровое изображение Android.
Затем я печатаю растровое изображение в виде поверхности.
Все работает, я счастлив.
Теперь я пытаюсь использовать текстурный вид вместо поверхностного вида (для упрощения иерархии представления/компоновки). И у меня очень странный результат: отображаются только последние пиксели моего растрового изображения. И они оказываются на месте.
Canvas canvas = lockCanvas();
if (canvas == null)
return ;
canvas.drawRGB(0, 0, 0);
canvas.save();
canvas.drawBitmap(bitmap, 0, 0, null);
canvas.restore();
unlockCanvasAndPost(canvas);
Хотя вид текстуры должны оказывать:
|------------------|
|xxxxxx |
|xxxxxx |
|xxxxxx |
| |
| |
|------------------|
Это то, что она делает.
|------------------|
| xx |
| xx |
| xx |
| |
| |
|------------------|
И самое странное, эти два столбца пикселей правильные. Это два последних пикселя каждой строки растрового изображения. Они отображаются правильно в нужном месте.
Это известная ошибка?
Есть ли что-то, что я делаю неправильно?