我遇到了三星 Android 设备Bitmap
的一个非常奇怪的渲染问题。让我简要讨论一下我做了什么。
我正在从视频中获取帧并ImageView
使用 ffmpeg 将其渲染。JNI
以下代码给了我一个位图对象作为回调的回报。
img_convert_ctx = sws_getContext(pCodecCtx->width,
pCodecCtx->height, pCodecCtx->pix_fmt, target_width,
target_height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL,NULL);
sws_scale(img_convert_ctx,(const uint8_t* const *)
pFrame->data,pFrame->linesize, 0, pCodecCtx->height,pFrameRGB->data,
pFrameRGB->linesize);
接下来,我只是将 设置Bitmap
为ImageView
。现在的问题是Bitmap
我得到的在除了三星 S2/S3 之外的最大设备中渲染得非常好。
A>工作良好:- 屏幕截图 1
- 连结 4
- HTC 一号 / HTC 一号 x
- LG 擎天柱
- 索尼体验
- 三星 Galaxy S Plus / 三星展览 (Android 2.3)
问题:- B>三星 Galaxy S2 和 S3:第二个屏幕截图。
对于案例 B,如果您注意到,视频的一部分正在右侧呈现。
我已经尝试将Bitmap
我从JNI
SD 卡中获得的 jpg 保存并再次读取以设置它ImageView
并且它可以工作。我不明白我从JNI
回调中得到的原始位图出了什么问题,是三星 S2 硬件吗?请有人帮我解决这个问题。