mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-24 09:34:25 +00:00
Some bugfixes to the codec scanning code
Also it's not possible to attach a thread after it was detached once. As such we simply never detach any thread at all now.
This commit is contained in:
parent
a48d2feae0
commit
32d4d29706
1 changed files with 12 additions and 3 deletions
|
@ -98,6 +98,7 @@ gst_amc_attach_current_thread (void)
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
JavaVMAttachArgs args;
|
JavaVMAttachArgs args;
|
||||||
|
|
||||||
|
GST_DEBUG ("Attaching thread %p", g_thread_self ());
|
||||||
args.version = JNI_VERSION_1_6;
|
args.version = JNI_VERSION_1_6;
|
||||||
args.name = NULL;
|
args.name = NULL;
|
||||||
args.group = NULL;
|
args.group = NULL;
|
||||||
|
@ -113,7 +114,8 @@ gst_amc_attach_current_thread (void)
|
||||||
static void
|
static void
|
||||||
gst_amc_detach_current_thread (void)
|
gst_amc_detach_current_thread (void)
|
||||||
{
|
{
|
||||||
(*java_vm)->DetachCurrentThread (java_vm);
|
GST_DEBUG ("FIXME: Not detaching thread %p", g_thread_self ());
|
||||||
|
/*(*java_vm)->DetachCurrentThread (java_vm); */
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -1237,6 +1239,8 @@ get_java_classes (void)
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
jclass tmp;
|
jclass tmp;
|
||||||
|
|
||||||
|
GST_DEBUG ("Retrieving Java classes");
|
||||||
|
|
||||||
env = gst_amc_attach_current_thread ();
|
env = gst_amc_attach_current_thread ();
|
||||||
|
|
||||||
tmp = (*env)->FindClass (env, "java/lang/String");
|
tmp = (*env)->FindClass (env, "java/lang/String");
|
||||||
|
@ -1454,6 +1458,8 @@ scan_codecs (void)
|
||||||
jmethodID get_codec_count_id, get_codec_info_at_id;
|
jmethodID get_codec_count_id, get_codec_info_at_id;
|
||||||
jint codec_count, i;
|
jint codec_count, i;
|
||||||
|
|
||||||
|
GST_DEBUG ("Scanning codecs");
|
||||||
|
|
||||||
env = gst_amc_attach_current_thread ();
|
env = gst_amc_attach_current_thread ();
|
||||||
|
|
||||||
codec_list_class = (*env)->FindClass (env, "android/media/MediaCodecList");
|
codec_list_class = (*env)->FindClass (env, "android/media/MediaCodecList");
|
||||||
|
@ -1594,7 +1600,8 @@ scan_codecs (void)
|
||||||
|
|
||||||
GST_INFO ("Codec '%s' has %d supported types", name_str, n_supported_types);
|
GST_INFO ("Codec '%s' has %d supported types", name_str, n_supported_types);
|
||||||
|
|
||||||
gst_codec_info->supported_types = g_new0 (GstAmcCodecType, 1);
|
gst_codec_info->supported_types =
|
||||||
|
g_new0 (GstAmcCodecType, n_supported_types);
|
||||||
gst_codec_info->n_supported_types = n_supported_types;
|
gst_codec_info->n_supported_types = n_supported_types;
|
||||||
|
|
||||||
if (n_supported_types == 0) {
|
if (n_supported_types == 0) {
|
||||||
|
@ -1717,7 +1724,7 @@ scan_codecs (void)
|
||||||
}
|
}
|
||||||
gst_codec_type->n_profile_levels = n_elems;
|
gst_codec_type->n_profile_levels = n_elems;
|
||||||
gst_codec_type->profile_levels =
|
gst_codec_type->profile_levels =
|
||||||
g_malloc0 (sizeof (gst_codec_type->profile_levels) * n_elems);
|
g_malloc0 (sizeof (gst_codec_type->profile_levels[0]) * n_elems);
|
||||||
for (k = 0; k < n_elems; k++) {
|
for (k = 0; k < n_elems; k++) {
|
||||||
jobject profile_level = NULL;
|
jobject profile_level = NULL;
|
||||||
jclass profile_level_class = NULL;
|
jclass profile_level_class = NULL;
|
||||||
|
@ -2290,6 +2297,8 @@ register_codecs (GstPlugin * plugin)
|
||||||
gboolean ret = TRUE;
|
gboolean ret = TRUE;
|
||||||
GList *l;
|
GList *l;
|
||||||
|
|
||||||
|
GST_DEBUG ("Registering plugins");
|
||||||
|
|
||||||
for (l = codec_infos; l; l = l->next) {
|
for (l = codec_infos; l; l = l->next) {
|
||||||
GstAmcCodecInfo *codec_info = l->data;
|
GstAmcCodecInfo *codec_info = l->data;
|
||||||
gboolean is_audio = FALSE;
|
gboolean is_audio = FALSE;
|
||||||
|
|
Loading…
Reference in a new issue