diff options
-rw-r--r-- | sys/androidmedia/gstamc.c | 10 | ||||
-rw-r--r-- | sys/androidmedia/gstjniutils.c | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c index 1733ca229..84c91b907 100644 --- a/sys/androidmedia/gstamc.c +++ b/sys/androidmedia/gstamc.c @@ -362,7 +362,10 @@ gst_amc_codec_get_output_buffer (GstAmcCodec * codec, gint index, GError ** err) if (!media_codec.get_output_buffer) { g_return_val_if_fail (index < codec->n_output_buffers && index >= 0, NULL); - return gst_amc_buffer_copy (&codec->output_buffers[index]); + if (codec->output_buffers[index].object) + return gst_amc_buffer_copy (&codec->output_buffers[index]); + else + return NULL; } if (!gst_amc_jni_call_object_method (env, err, codec->object, @@ -440,7 +443,10 @@ gst_amc_codec_get_input_buffer (GstAmcCodec * codec, gint index, GError ** err) if (!media_codec.get_input_buffer) { g_return_val_if_fail (index < codec->n_input_buffers && index >= 0, NULL); - return gst_amc_buffer_copy (&codec->input_buffers[index]); + if (codec->input_buffers[index].object) + return gst_amc_buffer_copy (&codec->input_buffers[index]); + else + return NULL; } if (!gst_amc_jni_call_object_method (env, err, codec->object, diff --git a/sys/androidmedia/gstjniutils.c b/sys/androidmedia/gstjniutils.c index 786100276..4fe374719 100644 --- a/sys/androidmedia/gstjniutils.c +++ b/sys/androidmedia/gstjniutils.c @@ -1028,12 +1028,17 @@ gst_amc_jni_get_buffer_array (JNIEnv * env, GError ** err, jobject array, jobject buffer = NULL; buffer = (*env)->GetObjectArrayElement (env, array, i); - if ((*env)->ExceptionCheck (env) || !buffer) { + if ((*env)->ExceptionCheck (env)) { gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR, GST_LIBRARY_ERROR_FAILED, "Failed to get buffer %d", i); goto error; } + /* NULL buffers are not a problem and are happening when we configured + * a surface as input/output */ + if (!buffer) + continue; + (*buffers)[i].object = gst_amc_jni_object_make_global (env, buffer); if (!(*buffers)[i].object) { gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR, |