Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does error code -1010 in Android MediaCodec mean?

Here is the stack trace:

 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 is on Nexus 6P.

Initialization of 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);
like image 695
Chickin Nick Avatar asked Apr 28 '16 12:04

Chickin Nick


People also ask

What is Android MediaCodec?

MediaCodec class can be used to access low-level media codecs, i.e. encoder/decoder components. It is part of the Android low-level multimedia support infrastructure (normally used together with MediaExtractor , MediaSync , MediaMuxer , MediaCrypto , MediaDrm , Image , Surface , and AudioTrack .)

How does MediaCodec work?

It processes data asynchronously and uses a set of input and output buffers. At a simplistic level, you request (or receive) an empty input buffer, fill it up with data and send it to the codec for processing. The codec uses up the data and transforms it into one of its empty output buffers.


Video Answer


2 Answers

I had this issue while i was trying to encode 16:9 videos to .h264 and change the frame size (it worked fine with 4:3).

The fix for me was to ensure that the height and width of the output format were divisible by 2. If they weren't, I just rounded them up so they did.

like image 87
Nic Robertson Avatar answered Sep 28 '22 08:09

Nic Robertson


That appears to be an internal error reported by the Qualcomm codec implementation (OMX.qcom.video.encoder.avc).

It might be harmless, it might indicate a configuration problem, or a different configuration problem, or some other configuration problem. Mostly it just seems to indicate that it didn't like your configuration, without providing any particular insight into why.

The error code is somewhat useless, so you have to start with values that are known to work and change them one at a time until something breaks. What are the actual values you're passing for bit/frame rate?

like image 29
fadden Avatar answered Sep 28 '22 10:09

fadden