By Android documentation, MediaCodec codecs support three type of color formats: native raw video format, flexible YUV buffers and other,specific formats. I wanted to check if some of the codecs can nevertheless accept RGBA input: if yes, it would be really simple to encode Android bitmaps because no RGB-to-YUV conversion was required. As a test device, I used Sumsung Galaxy A53 5G phone and ran the following function to print codecs and their capabalities:
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface;
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Flexible;
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedPlanar;
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedSemiPlanar;
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar;
import static android.media.MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaCodecList;
import android.media.MediaFormat;
import android.os.Build;
// ...
public void printMediaCodecsList(boolean showEncoders, boolean showDecoders) {
MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
MediaCodecInfo[] mediaCodecInfos = mediaCodecList.getCodecInfos();
for (MediaCodecInfo mediaCodecInfo: mediaCodecInfos) {
boolean isEncoder = mediaCodecInfo.isEncoder();
boolean isDecoder = !isEncoder;
boolean show = showEncoders && isEncoder || showDecoders && isDecoder;
if (!show) continue;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
Log.d(TAG, String.format("name: %s, encoder: %b hardware: %b, software: %b, vendor: %b",
mediaCodecInfo.getName(),
mediaCodecInfo.isEncoder(),
mediaCodecInfo.isHardwareAccelerated(),
mediaCodecInfo.isSoftwareOnly(),
mediaCodecInfo.isVendor())
);
}
String[] types = mediaCodecInfo.getSupportedTypes();
for (String type: types) {
Log.d(TAG, " type: " + type);
MediaCodecInfo.CodecCapabilities capabilities = mediaCodecInfo.getCapabilitiesForType(type);
for (int colorFormat: capabilities.colorFormats) {
String colorFormatName = "unknown";
switch (colorFormat) {
case COLOR_FormatYUV420Flexible:
colorFormatName = "YUV420Flexible";
break;
case COLOR_FormatSurface:
colorFormatName = "FormatSurface";
break;
case COLOR_FormatYUV420SemiPlanar:
colorFormatName = "YUV420SemiPlanar";
break;
case COLOR_FormatYUV420PackedPlanar:
colorFormatName = "YUV420PackedPlanar";
break;
case COLOR_FormatYUV420PackedSemiPlanar:
colorFormatName = "YUV420PackedSemiPlanar";
break;
case COLOR_FormatYUV420Planar:
colorFormatName = "YUV420Planar";
break;
}
Log.d(TAG, String.format(" colorFomat: %d (%s)", colorFormat, colorFormatName));
}
}
}
}
// prints encoders only:
printMediaCodecsList(true, false);
// prints decoders only:
printMediaCodecsList(false, true);
Results
Please note: when you call MediaCodecInfo or VideoCapabilities in Android to get the height and width of a video, the dimensions returned are in landscape orientation regardless of the device’s current orientation.
This means that the width is always the longer side and the height is always the shorter side, even if the device is currently in portrait mode. For example, if you get the video dimensions and it returns a resolution of 1920x1080, this means the video is in landscape mode and the width is 1920 pixels while the height is 1080 pixels.
In Android, when specifying the resolution of a video stream using MediaCodec, the width and height values refer to the number of pixels horizontally and vertically, respectively. For example, in the case of 720p video, the width would be 1280 pixels and the height would be 720 pixels, which is commonly expressed as “1280x720” or “720p” resolution. Similarly, for 1080p video, the width would be 1920 pixels and the height would be 1080 pixels, which is commonly expressed as “1920x1080” or “1080p” resolution.
Note that this behavior is consistent across all Android devices and versions.
Here is the results which may serve as a reference and comparison for your devices.
Encoders
name: c2.android.aac.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/mp4a-latm
name: OMX.google.aac.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/mp4a-latm
name: c2.android.amrnb.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/3gpp
name: OMX.google.amrnb.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/3gpp
name: c2.android.amrwb.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/amr-wb
name: OMX.google.amrwb.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/amr-wb
name: c2.android.flac.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/flac
name: OMX.google.flac.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/flac
name: c2.android.opus.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/opus
name: c2.sec.aac.encoder, encoder: true hardware: false, software: true, vendor: false
type: audio/mp4a-latm
name: c2.exynos.h264.encoder, encoder: true hardware: true, software: false, vendor: true
type: video/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.AVC.Encoder, encoder: true hardware: true, software: false, vendor: true
type: video/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.h264.encoder.secure, encoder: true hardware: false, software: false, vendor: true
type: wfd/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.hevc.encoder, encoder: true hardware: true, software: false, vendor: true
type: video/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.HEVC.Encoder, encoder: true hardware: true, software: false, vendor: true
type: video/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.hevc.encoder.secure, encoder: true hardware: false, software: false, vendor: true
type: wfd/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.vp8.encoder, encoder: true hardware: true, software: false, vendor: true
type: video/x-vnd.on2.vp8
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.VP8.Encoder, encoder: true hardware: true, software: false, vendor: true
type: video/x-vnd.on2.vp8
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.android.avc.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/avc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.h264.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/avc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.h263.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/3gpp
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.h263.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/3gpp
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.hevc.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/hevc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.mpeg4.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/mp4v-es
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.mpeg4.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/mp4v-es
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.vp8.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp8
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.vp8.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp8
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.vp9.encoder, encoder: true hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp9
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
Decoders
name: c2.sec.amrnb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/3gpp
name: c2.sec.amrwb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/amr-wb
name: c2.sec.flac.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/flac
name: c2.sec.ima.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/x-ima
name: c2.sec.mp3.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/mpeg
type: audio/mpeg-L1
type: audio/mpeg-L2
name: c2.sec.vc1.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/wvc1
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
type: video/x-ms-wmv
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.dolby.ac4.decoder, encoder: false hardware: false, software: false, vendor: true
type: audio/ac4
name: OMX.dolby.ac4.decoder, encoder: false hardware: false, software: false, vendor: true
type: audio/ac4
name: c2.dolby.eac3.decoder, encoder: false hardware: false, software: false, vendor: true
type: audio/ac3
type: audio/eac3
type: audio/eac3-joc
name: c2.android.aac.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/mp4a-latm
name: OMX.google.aac.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/mp4a-latm
name: c2.android.amrnb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/3gpp
name: OMX.google.amrnb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/3gpp
name: c2.android.amrwb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/amr-wb
name: OMX.google.amrwb.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/amr-wb
name: c2.android.flac.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/flac
name: OMX.google.flac.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/flac
name: c2.android.g711.alaw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/g711-alaw
name: OMX.google.g711.alaw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/g711-alaw
name: c2.android.g711.mlaw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/g711-mlaw
name: OMX.google.g711.mlaw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/g711-mlaw
name: c2.android.gsm.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/gsm
name: OMX.google.gsm.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/gsm
name: c2.android.mp3.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/mpeg
name: OMX.google.mp3.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/mpeg
name: c2.android.opus.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/opus
name: OMX.google.opus.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/opus
name: c2.android.raw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/raw
name: OMX.google.raw.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/raw
name: c2.android.vorbis.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/vorbis
name: OMX.google.vorbis.decoder, encoder: false hardware: false, software: true, vendor: false
type: audio/vorbis
name: c2.exynos.h264.decoder, encoder: false hardware: true, software: false, vendor: true
type: video/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.avc.dec, encoder: false hardware: true, software: false, vendor: true
type: video/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.h264.decoder.secure, encoder: false hardware: true, software: false, vendor: true
type: video/avc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.hevc.decoder, encoder: false hardware: true, software: false, vendor: true
type: video/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.hevc.dec, encoder: false hardware: true, software: false, vendor: true
type: video/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.hevc.decoder.secure, encoder: false hardware: true, software: false, vendor: true
type: video/hevc
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.exynos.vp8.decoder, encoder: false hardware: true, software: false, vendor: true
type: video/x-vnd.on2.vp8
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: OMX.Exynos.vp8.dec, encoder: false hardware: true, software: false, vendor: true
type: video/x-vnd.on2.vp8
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.sec.mpeg4.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/mp4v-es
colorFomat: 2130708361 (FormatSurface)
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
name: c2.android.av1.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/av01
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.avc.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/avc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.h264.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/avc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.h263.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/3gpp
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.h263.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/3gpp
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.hevc.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/hevc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.hevc.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/hevc
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.mpeg4.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/mp4v-es
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.mpeg4.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/mp4v-es
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.vp8.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp8
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.vp8.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp8
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: c2.android.vp9.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp9
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
name: OMX.google.vp9.decoder, encoder: false hardware: false, software: true, vendor: false
type: video/x-vnd.on2.vp9
colorFomat: 2135033992 (YUV420Flexible)
colorFomat: 19 (YUV420Planar)
colorFomat: 21 (YUV420SemiPlanar)
colorFomat: 20 (YUV420PackedPlanar)
colorFomat: 39 (YUV420PackedSemiPlanar)
colorFomat: 2130708361 (FormatSurface)
As it’s seen from the lists, no encoder can accept ARGB_8888 native Bitmap pixels.
See also
- AndroidJNIHelper.GetSignature - using Byte parameters is obsolete, use SByte parameters instead. Solution
- Android storage. A list of folders available for application.
- Unity3d sound recording script
- Error building android library - direct local AAR file dependencies are not supported. A solution.
- Surface view of Unity3D player