안드로이드 장치에서 프레임 버퍼를 캡처하고 있지만 정확한 해상도로 디코딩이 작동하지 않습니다.android에서 프레임 버퍼 너비를 찾는 방법은 무엇입니까?
ioctl -rl 28 /dev/graphics/fb0 17920
이 명령 반환 :
반환 버피 : F0 00 00 00 40 01 00 00 F0 00 00 00
나는 내가 사용 BBP와 화면 resoution를 얻을 수 있습니다 발견 80 02 00 00 00 00 00 00 00 00 00
littl 전자 - 엔디안 포맷 제가 가지고
- 마지막 4 바이트 (20)는 BBP 32의 수이다.
- 처음 4 바이트 은을 사용하여 I는 FB를 디코딩하려 스크린 높이 0x0140 = 320
(갤럭시 5) 스크린 폭의 0xF0 = 240
./ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s 240x320 -i fb0 -f image2 -vcodec png image%d.png
그리고 난이 경고를 가지고 :
를잘못된 버퍼 크기, 패킷 크기 40960 < 예상 길이 307200 오류 동안 스트림 # 0 디코딩 : 0 : 유효하지 않은 인수
이 두 이미지 :
내 원시 파일 655.360 바이트를 갖지만이 값을 사용하여 예상 값은 614.400 바이트입니다.
,363,210이는 파일 크기 = XRES * yres *이 BPP/8 * numberOfFrames가
이는 파일 크기 = 240 * 320 * 8분의 32 * 2 (로이드 사용 두 프레임 버퍼) = 놀랍게도 들어 614.400
내가 변경 너비가 ffmpeg에서 256으로 655.360 바이트와 일치하고 일종의 (일종의, 오른쪽에 16 개의 엑스트라 px가 있습니다! 나는 다음과 같은 이미지를 가지고 :
그래서 내 질문에 내 화면 해상도가 240 어떻게 발견 다른 해상도에 대해이 매직 넘버를하는 경우, 내가 256 폭을 사용해야하는 이유입니다.
내 LG400 (Android 2.3.6)에서 동일한 문제가 발견되었습니다. 이상한 점은 모니터 도구 (android-sdk/tools/monitor)가 좋은 256px 스크린 샷을 찍는 것입니다. 따라서이 모니터 도구는 실제 프레임 버퍼 너비를 결정하는 방법을 알고 있지만 여전히 방법을 찾지 못했습니다. – Giacomo