Cita:
Originalmente Escrito por KalimochoAz
la librerái libmmcamera tiene que pedirle el jpeg al hardware, no es un fichero. Para ello usa otras librerías intermedias pero no es tan simple calcular el tamaño. Pensad que he modificado toda la rutina de captura, normalmente esto lo hace todo internamente la librería libmmcamera, pero como fallaba lo he ido haciendo internamente. en resumen qu epara calcularlo tendría que tener alguna funcion en el kernel que directamente lo recuperara del hardware ( pos inicial y tamaño )
El tama está quí:
Código:
if (mMsgEnabled & CAMERA_MSG_COMPRESSED_IMAGE) {
// mJpegSize = mRawWidth * mRawHeight * 3 / 2;
mJpegSize = 1718592;
if (LINK_jpeg_encoder_init()) {
if(native_jpeg_encode()) {
iLog("receiveRawPicture: X (success)");
return;
}
LOGE("jpeg encoding failed");
}
else LOGE("receiveRawPicture X: jpeg_encoder_init failed.");
}
else iLog("JPEG callback is NULL, not encoding image.");
mjpegsize tiene que tener el tamaño exacto del jpeg capturado y procesado por la camara ( yo he puesto un valor al azar 1718592) mientras no ponga el real, no tendremos un fichero real.
|
Cita:
Originalmente Escrito por KalimochoAz
Adivinar el tamaño del jpeg es evidentemente imposible, depende de la foto y lo que se pueda comprimir, pero el driver de la cámara que es quien la convierte si que lo sabe puesto que ya la tiene convertida. El tema es como preguntarle el valor.
|
Por lo que entiendo de lo que has dicho, el driver de la cámara sabe cuanto ocupa la foto comprimida porque la a comprimido él. Pero el tamaño de la foto varia dependiendo de la imagen capturada y de la compresión que se pueda hacer en ella. Entonces no se puede poner un valor constante en esa función, no funcionará nunca. Habría que usar una variable que sepa el tamaño, ya sea preguntandoselo al driver o calculandolo con la formula que pones justo encima de mJpegSize. ¿Es posible preguntarle al Driver cuantos Bytes tiene que mandar?