Ver Mensaje Individual
  #502  
Viejo 19/01/11, 19:30:14
Avatar de bure
bure bure no está en línea
Usuario muy activo
Mensajes: 881
 
Fecha de registro: nov 2009
Mensajes: 881
Modelo de smartphone: Xiaomi Mi 8
Tu operador: Otra
Mencionado: 7 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por KalimochoAz Ver Mensaje
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 Ver Mensaje
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?