validate: Properly handle images in the media-info helper
In the case of images we should not check reverse playback, fast forward etc... We also should keep the information
This commit is contained in:
parent
32e7b9a55e
commit
9eb665dddf
@ -91,6 +91,7 @@ gst_validate_media_info_init (GstValidateMediaInfo * mi)
|
|||||||
mi->playback_error = NULL;
|
mi->playback_error = NULL;
|
||||||
mi->reverse_playback_error = NULL;
|
mi->reverse_playback_error = NULL;
|
||||||
mi->track_switch_error = NULL;
|
mi->track_switch_error = NULL;
|
||||||
|
mi->is_image = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -125,6 +126,7 @@ gst_validate_media_info_to_string (GstValidateMediaInfo * mi, gsize * length)
|
|||||||
/* media info */
|
/* media info */
|
||||||
g_key_file_set_uint64 (kf, "media-info", "file-duration", mi->duration);
|
g_key_file_set_uint64 (kf, "media-info", "file-duration", mi->duration);
|
||||||
g_key_file_set_boolean (kf, "media-info", "seekable", mi->seekable);
|
g_key_file_set_boolean (kf, "media-info", "seekable", mi->seekable);
|
||||||
|
g_key_file_set_boolean (kf, "media-info", "is-image", mi->is_image);
|
||||||
|
|
||||||
if (mi->stream_info && mi->stream_info->caps) {
|
if (mi->stream_info && mi->stream_info->caps) {
|
||||||
str = gst_caps_to_string (mi->stream_info->caps);
|
str = gst_caps_to_string (mi->stream_info->caps);
|
||||||
@ -185,6 +187,7 @@ gst_validate_media_info_load (const gchar * path, GError ** err)
|
|||||||
|
|
||||||
mi->duration = g_key_file_get_uint64 (kf, "media-info", "file-duration", NULL);
|
mi->duration = g_key_file_get_uint64 (kf, "media-info", "file-duration", NULL);
|
||||||
mi->seekable = g_key_file_get_boolean (kf, "media-info", "seekable", NULL);
|
mi->seekable = g_key_file_get_boolean (kf, "media-info", "seekable", NULL);
|
||||||
|
mi->is_image = g_key_file_get_boolean (kf, "media-info", "is-image", NULL);
|
||||||
|
|
||||||
str = g_key_file_get_string (kf, "media-info", "caps", NULL);
|
str = g_key_file_get_string (kf, "media-info", "caps", NULL);
|
||||||
if (str) {
|
if (str) {
|
||||||
@ -1037,6 +1040,28 @@ end:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
check_is_image (GstDiscovererInfo *info)
|
||||||
|
{
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
GList *video_streams = gst_discoverer_info_get_video_streams (info);
|
||||||
|
|
||||||
|
if (g_list_length (video_streams) == 1) {
|
||||||
|
if (gst_discoverer_video_info_is_image (video_streams->data)) {
|
||||||
|
GList *audio_streams = gst_discoverer_info_get_audio_streams (info);
|
||||||
|
|
||||||
|
if (audio_streams == NULL)
|
||||||
|
ret = TRUE;
|
||||||
|
else
|
||||||
|
gst_discoverer_stream_info_list_free (audio_streams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gst_discoverer_stream_info_list_free (video_streams);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gst_validate_media_info_inspect_uri (GstValidateMediaInfo * mi,
|
gst_validate_media_info_inspect_uri (GstValidateMediaInfo * mi,
|
||||||
const gchar * uri, GError ** err)
|
const gchar * uri, GError ** err)
|
||||||
@ -1061,14 +1086,20 @@ gst_validate_media_info_inspect_uri (GstValidateMediaInfo * mi,
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mi->is_image = check_is_image (info);
|
||||||
ret = check_file_size (mi) & ret;
|
ret = check_file_size (mi) & ret;
|
||||||
ret = check_file_duration (mi, info) & ret;
|
|
||||||
ret = check_seekable (mi, info) & ret;
|
|
||||||
ret = check_encoding_profile (mi, info) & ret;
|
ret = check_encoding_profile (mi, info) & ret;
|
||||||
|
ret = check_file_duration (mi, info) & ret;
|
||||||
|
|
||||||
|
if (mi->is_image)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
ret = check_seekable (mi, info) & ret;
|
||||||
ret = check_playback (mi, &mi->playback_error) & ret;
|
ret = check_playback (mi, &mi->playback_error) & ret;
|
||||||
ret = check_reverse_playback (mi, &mi->reverse_playback_error) & ret;
|
ret = check_reverse_playback (mi, &mi->reverse_playback_error) & ret;
|
||||||
ret = check_track_selection (mi, &mi->track_switch_error) & ret;
|
ret = check_track_selection (mi, &mi->track_switch_error) & ret;
|
||||||
|
|
||||||
|
done:
|
||||||
gst_object_unref (discoverer);
|
gst_object_unref (discoverer);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -43,6 +43,7 @@ struct _GstValidateMediaInfo {
|
|||||||
/* Value for the expected total duration of the file in nanosecs
|
/* Value for the expected total duration of the file in nanosecs
|
||||||
* Set to GST_CLOCK_TIME_NONE if it shouldn't be tested */
|
* Set to GST_CLOCK_TIME_NONE if it shouldn't be tested */
|
||||||
GstClockTime duration;
|
GstClockTime duration;
|
||||||
|
gboolean is_image;
|
||||||
|
|
||||||
/* Expected file_size, set to 0 to skip test */
|
/* Expected file_size, set to 0 to skip test */
|
||||||
guint64 file_size;
|
guint64 file_size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user