From 8f5347c465a468670159658f88a3fd5149769cc0 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Mon, 15 Sep 2014 17:25:14 +0200 Subject: [PATCH] validate: Move some method between GstMediaDescriptorParser and GstMediaDescriptor So that method land where they actually belong. --- .../gst/validate/media-descriptor-parser.c | 81 ----------------- .../gst/validate/media-descriptor-parser.h | 5 -- validate/gst/validate/media-descriptor.c | 90 +++++++++++++++++++ validate/gst/validate/media-descriptor.h | 7 +- 4 files changed, 96 insertions(+), 87 deletions(-) diff --git a/validate/gst/validate/media-descriptor-parser.c b/validate/gst/validate/media-descriptor-parser.c index 4209637976..aacbfc439e 100644 --- a/validate/gst/validate/media-descriptor-parser.c +++ b/validate/gst/validate/media-descriptor-parser.c @@ -512,84 +512,3 @@ gst_media_descriptor_parser_all_tags_found (GstMediaDescriptorParser * parser) return ret; } - -gboolean -gst_media_descriptor_parser_detects_frames (GstMediaDescriptorParser * parser) -{ - g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR_PARSER (parser), FALSE); - g_return_val_if_fail (((GstMediaDescriptor *) parser)->filenode, FALSE); - - return ((GstMediaDescriptor *) parser)->filenode->frame_detection; -} - -GstClockTime -gst_media_descriptor_parser_get_duration (GstMediaDescriptorParser * parser) -{ - g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR_PARSER (parser), FALSE); - g_return_val_if_fail (((GstMediaDescriptor *) parser)->filenode, FALSE); - - return ((GstMediaDescriptor *) parser)->filenode->duration; -} - -gboolean -gst_media_descriptor_parser_get_seekable (GstMediaDescriptorParser * parser) -{ - g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR_PARSER (parser), FALSE); - g_return_val_if_fail (((GstMediaDescriptor *) parser)->filenode, FALSE); - - return ((GstMediaDescriptor *) parser)->filenode->seekable; -} - -GList * -gst_media_descriptor_parser_get_buffers (GstMediaDescriptorParser * parser, - GstPad * pad, GCompareFunc compare_func) -{ - GList *ret = NULL, *tmpstream, *tmpframe; - gboolean check = (pad == NULL); - - g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR_PARSER (parser), FALSE); - g_return_val_if_fail (((GstMediaDescriptor *) parser)->filenode, FALSE); - - for (tmpstream = ((GstMediaDescriptor *) parser)->filenode->streams; - tmpstream; tmpstream = tmpstream->next) { - StreamNode *streamnode = (StreamNode *) tmpstream->data; - - if (pad && streamnode->pad == pad) - check = TRUE; - - if (check) { - for (tmpframe = streamnode->frames; tmpframe; tmpframe = tmpframe->next) { - if (compare_func) - ret = - g_list_insert_sorted (ret, - gst_buffer_ref (((FrameNode *) tmpframe->data)->buf), - compare_func); - else - ret = - g_list_prepend (ret, - gst_buffer_ref (((FrameNode *) tmpframe->data)->buf)); - } - - if (pad != NULL) - goto done; - } - } - - -done: - return ret; -} - -GList * -gst_media_descriptor_parser_get_pads (GstMediaDescriptorParser * parser) -{ - GList *ret = NULL, *tmp; - - for (tmp = ((GstMediaDescriptor *) parser)->filenode->streams; tmp; - tmp = tmp->next) { - StreamNode *snode = (StreamNode *) tmp->data; - ret = g_list_append (ret, gst_pad_new (snode->padname, GST_PAD_UNKNOWN)); - } - - return ret; -} diff --git a/validate/gst/validate/media-descriptor-parser.h b/validate/gst/validate/media-descriptor-parser.h index 9a783448a3..d4e69064f9 100644 --- a/validate/gst/validate/media-descriptor-parser.h +++ b/validate/gst/validate/media-descriptor-parser.h @@ -59,7 +59,6 @@ GstMediaDescriptorParser * gst_media_descriptor_parser_new (GstValidateRunner *r const gchar * xmlpath, GError **error); gchar * gst_media_descriptor_parser_get_xml_path (GstMediaDescriptorParser *parser); -gboolean gst_media_descriptor_parser_detects_frames (GstMediaDescriptorParser *parser); GstClockTime gst_media_descriptor_parser_get_duration (GstMediaDescriptorParser *parser); gboolean gst_media_descriptor_parser_get_seekable (GstMediaDescriptorParser * parser); gboolean gst_media_descriptor_parser_add_stream (GstMediaDescriptorParser *parser, @@ -72,10 +71,6 @@ gboolean gst_media_descriptor_parser_add_frame (GstMediaDescriptorParse GstPad *pad, GstBuffer *buf, GstBuffer *expected); -GList * gst_media_descriptor_parser_get_buffers (GstMediaDescriptorParser * parser, - GstPad *pad, - GCompareFunc compare_func); -GList * gst_media_descriptor_parser_get_pads (GstMediaDescriptorParser * parser); G_END_DECLS diff --git a/validate/gst/validate/media-descriptor.c b/validate/gst/validate/media-descriptor.c index ec8f051e66..1ff9123a00 100644 --- a/validate/gst/validate/media-descriptor.c +++ b/validate/gst/validate/media-descriptor.c @@ -327,3 +327,93 @@ gst_media_descriptors_compare (GstMediaDescriptor * ref, return TRUE; } + +gboolean +gst_media_descriptor_detects_frames (GstMediaDescriptor * self) +{ + g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (self->filenode, FALSE); + + return self->filenode->frame_detection; +} + +gboolean +gst_media_descriptor_get_buffers (GstMediaDescriptor * self, + GstPad * pad, GCompareFunc compare_func, GList ** bufs) +{ + GList *tmpstream, *tmpframe; + gboolean check = (pad == NULL), ret = FALSE; + GstCaps *pad_caps = gst_pad_get_current_caps (pad); + + g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (self->filenode, FALSE); + + for (tmpstream = self->filenode->streams; + tmpstream; tmpstream = tmpstream->next) { + StreamNode *streamnode = (StreamNode *) tmpstream->data; + + if (pad && streamnode->pad == pad) + check = TRUE; + + if (!streamnode->pad && gst_caps_is_subset (pad_caps, streamnode->caps)) { + check = TRUE; + } + + if (check) { + ret = TRUE; + for (tmpframe = streamnode->frames; tmpframe; tmpframe = tmpframe->next) { + if (compare_func) + *bufs = + g_list_insert_sorted (*bufs, + gst_buffer_ref (((FrameNode *) tmpframe->data)->buf), + compare_func); + else + *bufs = + g_list_prepend (*bufs, + gst_buffer_ref (((FrameNode *) tmpframe->data)->buf)); + } + + if (pad != NULL) + goto done; + } + } + + +done: + + if (compare_func == NULL) + *bufs = g_list_reverse (*bufs); + + return ret; +} + +GstClockTime +gst_media_descriptor_get_duration (GstMediaDescriptor * self) +{ + g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (self->filenode, FALSE); + + return self->filenode->duration; +} + +gboolean +gst_media_descriptor_get_seekable (GstMediaDescriptor * self) +{ + g_return_val_if_fail (GST_IS_MEDIA_DESCRIPTOR (self), FALSE); + g_return_val_if_fail (self->filenode, FALSE); + + return self->filenode->seekable; +} + +GList * +gst_media_descriptor_get_pads (GstMediaDescriptor * self) +{ + GList *ret = NULL, *tmp; + + for (tmp = self->filenode->streams; tmp; tmp = tmp->next) { + StreamNode *snode = (StreamNode *) tmp->data; + ret = g_list_append (ret, gst_pad_new (snode->padname, GST_PAD_UNKNOWN)); + } + + return ret; +} diff --git a/validate/gst/validate/media-descriptor.h b/validate/gst/validate/media-descriptor.h index a79c34c547..66856733ad 100644 --- a/validate/gst/validate/media-descriptor.h +++ b/validate/gst/validate/media-descriptor.h @@ -147,7 +147,12 @@ typedef struct { gboolean gst_media_descriptors_compare (GstMediaDescriptor *ref, GstMediaDescriptor *compared); - +gboolean gst_media_descriptor_detects_frames (GstMediaDescriptor * self); +gboolean gst_media_descriptor_get_buffers (GstMediaDescriptor * self, + GstPad * pad, GCompareFunc compare_func, GList ** bufs); +GstClockTime gst_media_descriptor_get_duration (GstMediaDescriptor * self); +gboolean gst_media_descriptor_get_seekable (GstMediaDescriptor * self); +GList * gst_media_descriptor_get_pads (GstMediaDescriptor * self); G_END_DECLS #endif