Android codecs with supported color formats on Sumsung Galaxy A53 5G

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