android.media.MediaCodecList# ALL_CODECS 源码实例Demo

下面列出了android.media.MediaCodecList# ALL_CODECS 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。


/**
 * select the first codec that match a specific MIME type
 *
 * @param mimeType
 * @return null if no codec matched
 */
private static MediaCodecInfo selectVideoCodec(final String mimeType) {
    Log.v(TAG, "selectVideoCodec:");

    // get the list of available codecs
    MediaCodecList list = new MediaCodecList(MediaCodecList.ALL_CODECS);
    MediaCodecInfo[] codecInfos = list.getCodecInfos();

    final int numCodecs = codecInfos.length;
    for (int i = 0; i < numCodecs; i++) {
        final MediaCodecInfo codecInfo = codecInfos[i];

        if (!codecInfo.isEncoder()) {    // skipp decoder
            continue;
        }
        // select first codec that match a specific MIME type and color format
        final String[] types = codecInfo.getSupportedTypes();
        for (int j = 0; j < types.length; j++) {
            if (types[j].equalsIgnoreCase(mimeType)) {
                Log.i(TAG, "codec:" + codecInfo.getName() + ",MIME=" + types[j]);
                final int format = selectColorFormat(codecInfo, mimeType);
                if (format > 0) {
                    return codecInfo;
                }
            }
        }
    }
    return null;
}
 
源代码2 项目: SoloPi   文件: VideoUtils.java

/**
 * Find an encoder supported specified MIME type
 *
 * @return Returns empty array if not found any encoder supported specified MIME type
 */
public static MediaCodecInfo[] findEncodersByType(String mimeType) {
    MediaCodecList codecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
    List<MediaCodecInfo> infos = new ArrayList<>();
    for (MediaCodecInfo info : codecList.getCodecInfos()) {
        if (!info.isEncoder()) {
            continue;
        }
        try {
            MediaCodecInfo.CodecCapabilities cap = info.getCapabilitiesForType(mimeType);
            if (cap == null) continue;
        } catch (IllegalArgumentException e) {
            // unsupported
            continue;
        }
        infos.add(info);
    }

    return infos.toArray(new MediaCodecInfo[infos.size()]);
}
 
源代码3 项目: LiTr   文件: DeviceUtil.java

@NonNull
public static String getAvcDecoderCapabilities(@NonNull Context context) {
    StringBuilder codecListStr = new StringBuilder();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
        for (MediaCodecInfo mediaCodecInfo: mediaCodecList.getCodecInfos()) {
            String codecName = mediaCodecInfo.getName().toLowerCase(Locale.ROOT); {
                if ((codecName.contains(TYPE_AVC) || codecName.contains(TYPE_H264)) && codecName.contains(TYPE_DECODER)) {
                    codecListStr.append(printCodecCapabilities(context, mediaCodecInfo));
                }
            }
        }
    }

    return codecListStr.toString();
}
 
源代码4 项目: ScreenCapture   文件: Utils.java

/**
 * Find an encoder supported specified MIME type
 *
 * @return Returns empty array if not found any encoder supported specified MIME type
 */
public static MediaCodecInfo[] findEncodersByType(String mimeType) {
    MediaCodecList codecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
    List<MediaCodecInfo> infos = new ArrayList<>();
    for (MediaCodecInfo info : codecList.getCodecInfos()) {
        if (!info.isEncoder()) {
            continue;
        }
        try {
            MediaCodecInfo.CodecCapabilities cap = info.getCapabilitiesForType(mimeType);
            if (cap == null) continue;
        } catch (IllegalArgumentException e) {
            // unsupported
            continue;
        }
        infos.add(info);
    }

    return infos.toArray(new MediaCodecInfo[infos.size()]);
}
 
源代码5 项目: MediaSDK   文件: MediaCodecUtil.java

@SuppressWarnings("nullness:initialization.fields.uninitialized")
public MediaCodecListCompatV21(boolean includeSecure, boolean includeTunneling) {
  codecKind =
      includeSecure || includeTunneling
          ? MediaCodecList.ALL_CODECS
          : MediaCodecList.REGULAR_CODECS;
}
 
源代码6 项目: LiTr   文件: DeviceUtil.java

@NonNull
public static String getCodecList() {
    StringBuilder codecListStr = new StringBuilder();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
        for (MediaCodecInfo mediaCodecInfo: mediaCodecList.getCodecInfos()) {
            codecListStr.append(mediaCodecInfo.getName());
            codecListStr.append('\n');
        }
    }

    return codecListStr.toString();
}
 
源代码7 项目: LiTr   文件: DeviceUtil.java

@NonNull
public static String getAvcEncoderCapabilities(@NonNull Context context) {
    StringBuilder codecListStr = new StringBuilder();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
        for (MediaCodecInfo mediaCodecInfo : mediaCodecList.getCodecInfos()) {
            String codecName = mediaCodecInfo.getName().toLowerCase(Locale.ROOT);
            if ((codecName.contains(TYPE_AVC) || codecName.contains(TYPE_H264)) && codecName.contains(TYPE_ENCODER)) {
                codecListStr.append(printCodecCapabilities(context, mediaCodecInfo));
            }
        }
    }

    return codecListStr.toString();
}
 

/**
 * select the first codec that match a specific MIME type
 *
 * @param mimeType
 * @return null if no codec matched
 */
private static MediaCodecInfo selectVideoCodec(final String mimeType) {
    Log.v(TAG, "selectVideoCodec:");

    // get the list of available codecs
    MediaCodecList list = new MediaCodecList(MediaCodecList.ALL_CODECS);
    MediaCodecInfo[] codecInfos = list.getCodecInfos();

    final int numCodecs = codecInfos.length;
    for (int i = 0; i < numCodecs; i++) {
        final MediaCodecInfo codecInfo = codecInfos[i];

        if (!codecInfo.isEncoder()) {    // skipp decoder
            continue;
        }
        // select first codec that match a specific MIME type and color format
        final String[] types = codecInfo.getSupportedTypes();
        for (int j = 0; j < types.length; j++) {
            if (types[j].equalsIgnoreCase(mimeType)) {
                Log.i(TAG, "codec:" + codecInfo.getName() + ",MIME=" + types[j]);
                final int format = selectColorFormat(codecInfo, mimeType);
                if (format > 0) {
                    return codecInfo;
                }
            }
        }
    }
    return null;
}
 

public static List<MediaCodecInfo> getAllCodecs(boolean filterBroken) {
  List<MediaCodecInfo> mediaCodecInfoList = new ArrayList<>();
  if (Build.VERSION.SDK_INT >= 21) {
    MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
    MediaCodecInfo[] mediaCodecInfos = mediaCodecList.getCodecInfos();
    mediaCodecInfoList.addAll(Arrays.asList(mediaCodecInfos));
  } else {
    int count = MediaCodecList.getCodecCount();
    for (int i = 0; i < count; i++) {
      MediaCodecInfo mci = MediaCodecList.getCodecInfoAt(i);
      mediaCodecInfoList.add(mci);
    }
  }
  return filterBroken ? filterBrokenCodecs(mediaCodecInfoList) : mediaCodecInfoList;
}
 
源代码10 项目: TelePlus-Android   文件: MediaCodecUtil.java

public MediaCodecListCompatV21(boolean includeSecure) {
  codecKind = includeSecure ? MediaCodecList.ALL_CODECS : MediaCodecList.REGULAR_CODECS;
}
 
源代码11 项目: TelePlus-Android   文件: MediaCodecUtil.java

public MediaCodecListCompatV21(boolean includeSecure) {
  codecKind = includeSecure ? MediaCodecList.ALL_CODECS : MediaCodecList.REGULAR_CODECS;
}
 
源代码12 项目: K-Sonic   文件: MediaCodecUtil.java

public MediaCodecListCompatV21(boolean includeSecure) {
  codecKind = includeSecure ? MediaCodecList.ALL_CODECS : MediaCodecList.REGULAR_CODECS;
}
 
源代码13 项目: Telegram-FOSS   文件: MediaCodecUtil.java

public MediaCodecListCompatV21(boolean includeSecure, boolean includeTunneling) {
  codecKind =
      includeSecure || includeTunneling
          ? MediaCodecList.ALL_CODECS
          : MediaCodecList.REGULAR_CODECS;
}
 
源代码14 项目: Telegram   文件: MediaCodecUtil.java

public MediaCodecListCompatV21(boolean includeSecure, boolean includeTunneling) {
  codecKind =
      includeSecure || includeTunneling
          ? MediaCodecList.ALL_CODECS
          : MediaCodecList.REGULAR_CODECS;
}