Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void encode(byte[] data) {
- inputBuffers = mMediaCodec.getInputBuffers();
- outputBuffers = mMediaCodec.getOutputBuffers();
- int inputBufferIndex = mMediaCodec.dequeueInputBuffer(-1);
- if (inputBufferIndex >= 0) {
- ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
- inputBuffer.clear();
- inputBuffer.put(data);
- mMediaCodec.queueInputBuffer(inputBufferIndex, 0, data.length, 0, 0);
- } else {
- return;
- }
- MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
- int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo, 0);
- Log.i(TAG, "outputBufferIndex-->" + outputBufferIndex);
- do {
- if (outputBufferIndex >= 0) {
- ByteBuffer outBuffer = outputBuffers[outputBufferIndex];
- System.out.println("buffer info-->" + bufferInfo.offset + "--"
- + bufferInfo.size + "--" + bufferInfo.flags + "--"
- + bufferInfo.presentationTimeUs);
- byte[] outData = new byte[bufferInfo.size];
- outBuffer.get(outData);
- try {
- if (bufferInfo.offset != 0) {
- fos.write(outData, bufferInfo.offset, outData.length
- - bufferInfo.offset);
- } else {
- fos.write(outData, 0, outData.length);
- }
- fos.flush();
- Log.i(TAG, "out data -- > " + outData.length);
- mMediaCodec.releaseOutputBuffer(outputBufferIndex, false);
- outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo,
- 0);
- } catch (IOException e) {
- e.printStackTrace();
- }
- } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
- outputBuffers = mMediaCodec.getOutputBuffers();
- } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
- MediaFormat format = mMediaCodec.getOutputFormat();
- }
- } while (outputBufferIndex >= 0);
- }
Add Comment
Please, Sign In to add comment