2016-04-28 7 views
6

Ecco la traccia dello stack:Che cosa significa codice di errore -1010 in Android MediaCodec?

E/ACodec: [OMX.qcom.video.encoder.avc] configureCodec returning error -1010 
E/ACodec: signalError(omxError 0x80001001, internalError -1010) 
E/MediaCodec: Codec reported err 0xfffffc0e, actionCode 0, while in state 3 
E/MediaCodec: configure failed with err 0xfffffc0e, resetting... 
W/System.err: android.media.MediaCodec$CodecException: Error 0xfffffc0e 
W/System.err:  at android.media.MediaCodec.native_configure(Native Method) 
W/System.err:  at android.media.MediaCodec.configure(MediaCodec.java:1778) 

Crash è il Nexus 6P.

Inizializzazione mediaCodec:

videoCodec = MediaCodec.createEncoderByType(MIME_VIDEO_CODEC_H264); 

     MediaFormat videoFormat = MediaFormat.createVideoFormat(MIME_VIDEO_CODEC_H264, imageWidth, imageHeight); 
     videoFormat.setInteger(MediaFormat.KEY_BIT_RATE, camera.getBitrate()); 
     videoFormat.setInteger(MediaFormat.KEY_FRAME_RATE, camera.getFrameRate()); 
     videoFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); 
     videoFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 0); 
     videoCodec.configure(videoFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 

risposta

5

Ho avuto questo problema mentre stavo cercando di codificare video in 16: 9 in .h264 e cambiare la dimensione del frame (funzionava bene con 4: 3).

La soluzione per me era assicurarsi che l'altezza e la larghezza del formato di output fossero divisibili per 2. Se non lo fossero, li ho semplicemente arrotondati in modo che lo facessero.

5

che sembra essere un errore interno riportato dal codec attuazione Qualcomm (OMX.qcom.video.encoder.avc).

Potrebbe essere harmless, potrebbe indicare un configuration problem, o un diverso configuration problem, o qualche altro configuration problem. Per lo più sembra solo indicare che non gli piaceva la tua configurazione, senza fornire una particolare comprensione del perché.

Il codice di errore è in qualche modo inutile, quindi è necessario iniziare con valori noti per funzionare e modificarli uno alla volta fino a quando qualcosa non si interrompe. Quali sono i valori effettivi che stai passando per bit/frame rate?

+0

Uno non deve passare una chiamata Surface alla chiamata 'configure() 'quando si imposta un encoder con l'ingresso Surface, solo quando si utilizza un decodificatore per decodificare su una superficie. – mstorsjo

+0

Whoops, encoder/decoder misti. Fisso. – fadden

Problemi correlati