+ if (jfields.is_software_only_id) {
+ int is_software_only = (*env)->CallBooleanMethod(env, info, jfields.is_software_only_id);
+ if (ff_jni_exception_check(env, 1, log_ctx) < 0) {
+ goto done;
+ }
+
+ if (is_software_only) {
+ goto done_with_info;
+ }
+ }
+
+ codec_name = (*env)->CallObjectMethod(env, info, jfields.get_name_id);
+ if (ff_jni_exception_check(env, 1, log_ctx) < 0) {
+ goto done;
+ }
+
+ name = ff_jni_jstring_to_utf_chars(env, codec_name, log_ctx);
+ if (!name) {
+ goto done;
+ }
+
+ if (codec_name) {
+ (*env)->DeleteLocalRef(env, codec_name);
+ codec_name = NULL;
+ }
+
+ /* Skip software decoders */
+ if (
+ strstr(name, "OMX.google") ||
+ strstr(name, "OMX.ffmpeg") ||
+ (strstr(name, "OMX.SEC") && strstr(name, ".sw.")) ||
+ !strcmp(name, "OMX.qcom.video.decoder.hevcswvdec")) {
+ goto done_with_info;
+ }
+