2010-03-04 31 views
5

Agregué el puerto ffmpeg iphone en mi biblioteca y puedo usar algunas de sus funciones como avcodec_init(), .. sin ningún error. Pero cuando incluyo esta llamada de función "avcodec_register_all" Xcode está dando de error después de la compilaciónError al compilar el proyecto Xcode (iPhone)

El mensaje de error es:

* --------------- ld: LDR Desplazamiento de 12 bits fuera de rango (4276 max +/- 4096) en _CFRelease $ stub en _CFRelease $ stub desde /Users/foxit/Documents/CameraTest/build/CameraTest.build/Debug-iphoneos/CameraTest.build/Objects-normal/ARMv6/CameraTest

Comando /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 falló con el código de salida 1

* -------------

¿Alguien sabe cuál es el problema con esto?

Saludos,

Raghu

Respuesta

1

Igual que this problem?

Sugerencia existe:

Por favor seleccione destino del despliegue de "iPhone OS 3.0" o anterior. Se conoce el problema del enlazador de Xcode con los objetivos de implementación "iPhone OS 3.1" y posteriores.

+0

No, ese no es el problema, lo mismo funciona en otro proyecto de Xocde que no puedo usarlo por alguna razón –

+0

También estaba viendo este problema y reordenar mis marcos no funcionó. Después de cambiar mi objetivo de compilación de 3.1 a 3.0, el problema desaparece. – jtrim

3

Este problema existe en iPhone OS 3.1 o posterior al construir en Xcode. Intente volver a ingresar el orden de enlace de las bibliotecas en la fase de biblioteca de enlaces de su destino. He discutido este problema en: http://www.galloway.me.uk/2009/12/ldr-12-bit-displacement-out-of-range/

Existe un problema inherente en iPhone SDK 3.1 y posterior. Tendrá que esperar hasta que Apple lo solucione o tendremos que hacer algunos cambios de pista y error.

En nuestro caso, simplemente volver a ordenar libavfilter y libavcodec a la última simplemente funcionaría.

+0

Hola Raj, ¿Conoces una forma de convertir el búfer de superficie sin formato a AvFrame()? Estoy tratando de escribir una aplicación de grabación de video. Puedo mantener los datos brutos de la imagen (pantalla) pero no puedo encontrar la conversión de esos datos brutos en marco AV para codificarlos. Gracias –

+1

Siga el archivo output-example.c en el origen de la fuente FFMpeg. Implemente los métodos requeridos desde allí. Sustituya el método fill_yuv_image() para que convierta sus datos RGB en YUV utilizando el método sws_scale() y llene los datos sin formato en AVFrame, que se pasa como argumento a fill_yuv_image(). –

0

Dado que estoy usando un proyecto XCode generado por CMake, no tengo toda la flexibilidad que me gustaría para volver a pedir mis líneas de enlace. Contemplé el (1) página hombre ld por un tiempo y encontré esto:

-no_order_inits

"Cuando la opción -order_file no es utilizado, el enlazador establece funciones en objeto para presentar y se mueve todos los rutinas de inicializador del inicio de la sección __text y el terminador rutinas hasta el final. Utilice esta opción para desactivar el automática entrega en forma de valores de inicialización y terminadores ".

Agregando esto a la línea de enlace hizo desaparecer el error.

2

Pude deshacerme del error al deseleccionar la opción del compilador "Compilar para el pulgar".

Así que aquí están mis ajustes:

Base SDK: iPhone Device 4.0 
iPhone OS Deployment Target: 3.1.3 

Añadí -no_order_inits a las opciones del vinculador, pero eso no funcionó para mí.

Si selecciona un destino de despliegue de 3.0 entonces tampoco obtendrá el error.

BTW, también estoy usando las bibliotecas FFMPEG y libMMS.

1

Para mí el 4,2 y el uso de ffmpeg, la solución era especificar "optimizado (ARMv7)" en el campo "Arquitecturas" en vez "Estándar (armv6 armv7)" si esto puede ayudarlo ...

Cuestiones relacionadas