Print the MediaFormats we get in the debug logs

This commit is contained in:
Sebastian Dröge 2012-09-11 12:39:11 +02:00
parent 11b8d33666
commit 0df00d68b5
3 changed files with 54 additions and 0 deletions

View file

@ -83,6 +83,7 @@ static struct
jclass klass; jclass klass;
jmethodID create_audio_format; jmethodID create_audio_format;
jmethodID create_video_format; jmethodID create_video_format;
jmethodID to_string;
jmethodID contains_key; jmethodID contains_key;
jmethodID get_float; jmethodID get_float;
jmethodID set_float; jmethodID set_float;
@ -866,6 +867,44 @@ gst_amc_format_free (GstAmcFormat * format)
g_slice_free (GstAmcFormat, format); g_slice_free (GstAmcFormat, format);
} }
gchar *
gst_amc_format_to_string (GstAmcFormat * format)
{
JNIEnv *env;
jstring v_str = NULL;
const gchar *v = NULL;
gchar *ret = NULL;
g_return_val_if_fail (format != NULL, FALSE);
env = gst_amc_get_jni_env ();
v_str =
(*env)->CallObjectMethod (env, format->object, media_format.to_string);
if ((*env)->ExceptionCheck (env)) {
GST_ERROR ("Failed to call Java method");
(*env)->ExceptionClear (env);
goto done;
}
v = (*env)->GetStringUTFChars (env, v_str, NULL);
if (!v) {
GST_ERROR ("Failed to convert string to UTF8");
(*env)->ExceptionClear (env);
goto done;
}
ret = g_strdup (v);
done:
if (v)
(*env)->ReleaseStringUTFChars (env, v_str, v);
if (v_str)
(*env)->DeleteLocalRef (env, v_str);
return ret;
}
gboolean gboolean
gst_amc_format_contains_key (GstAmcFormat * format, const gchar * key) gst_amc_format_contains_key (GstAmcFormat * format, const gchar * key)
{ {
@ -1375,6 +1414,9 @@ get_java_classes (void)
media_format.create_video_format = media_format.create_video_format =
(*env)->GetStaticMethodID (env, media_format.klass, "createVideoFormat", (*env)->GetStaticMethodID (env, media_format.klass, "createVideoFormat",
"(Ljava/lang/String;II)Landroid/media/MediaFormat;"); "(Ljava/lang/String;II)Landroid/media/MediaFormat;");
media_format.to_string =
(*env)->GetMethodID (env, media_format.klass, "toString",
"()Ljava/lang/String;");
media_format.contains_key = media_format.contains_key =
(*env)->GetMethodID (env, media_format.klass, "containsKey", (*env)->GetMethodID (env, media_format.klass, "containsKey",
"(Ljava/lang/String;)Z"); "(Ljava/lang/String;)Z");

View file

@ -105,6 +105,8 @@ GstAmcFormat * gst_amc_format_new_audio (const gchar *mime, gint sample_rate, gi
GstAmcFormat * gst_amc_format_new_video (const gchar *mime, gint width, gint height); GstAmcFormat * gst_amc_format_new_video (const gchar *mime, gint width, gint height);
void gst_amc_format_free (GstAmcFormat * format); void gst_amc_format_free (GstAmcFormat * format);
gchar * gst_amc_format_to_string (GstAmcFormat * format);
gboolean gst_amc_format_contains_key (GstAmcFormat *format, const gchar *key); gboolean gst_amc_format_contains_key (GstAmcFormat *format, const gchar *key);
gboolean gst_amc_format_get_float (GstAmcFormat *format, const gchar *key, gfloat *value); gboolean gst_amc_format_get_float (GstAmcFormat *format, const gchar *key, gfloat *value);

View file

@ -741,6 +741,7 @@ retry:
} }
case INFO_OUTPUT_FORMAT_CHANGED:{ case INFO_OUTPUT_FORMAT_CHANGED:{
GstAmcFormat *format; GstAmcFormat *format;
gchar *format_string;
GST_DEBUG_OBJECT (self, "Output format has changed"); GST_DEBUG_OBJECT (self, "Output format has changed");
@ -748,6 +749,10 @@ retry:
if (!format) if (!format)
goto format_error; goto format_error;
format_string = gst_amc_format_to_string (format);
GST_DEBUG_OBJECT (self, "Got new output format: %s", format_string);
g_free (format_string);
if (!gst_amc_video_dec_set_src_caps (self, format)) { if (!gst_amc_video_dec_set_src_caps (self, format)) {
gst_amc_format_free (format); gst_amc_format_free (format);
goto format_error; goto format_error;
@ -1025,6 +1030,7 @@ gst_amc_video_dec_set_format (GstVideoDecoder * decoder,
const gchar *mime; const gchar *mime;
gboolean is_format_change = FALSE; gboolean is_format_change = FALSE;
gboolean needs_disable = FALSE; gboolean needs_disable = FALSE;
gchar *format_string;
self = GST_AMC_VIDEO_DEC (decoder); self = GST_AMC_VIDEO_DEC (decoder);
@ -1078,6 +1084,10 @@ gst_amc_video_dec_set_format (GstVideoDecoder * decoder,
if (self->codec_data) if (self->codec_data)
gst_amc_format_set_buffer (format, "csd-0", self->codec_data); gst_amc_format_set_buffer (format, "csd-0", self->codec_data);
format_string = gst_amc_format_to_string (format);
GST_DEBUG_OBJECT (self, "Configuring codec with format: %s", format_string);
g_free (format_string);
/* FIXME: Flags? */ /* FIXME: Flags? */
if (!gst_amc_codec_configure (self->codec, format, 0)) { if (!gst_amc_codec_configure (self->codec, format, 0)) {
GST_ERROR_OBJECT (self, "Failed to configure codec"); GST_ERROR_OBJECT (self, "Failed to configure codec");