From 93db55c0745381e3e3475e042ce23b03dd2cedcc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 4 Jun 2008 17:12:40 +0000 Subject: [PATCH] gst/typefind/gsttypefindfunctions.c: Bunch of small clean-ups: use gst_type_find_suggest_simple(); don't copy caps fo... Original commit message from CVS: * gst/typefind/gsttypefindfunctions.c: (aac_type_find), (mp3_type_find), (musepack_type_find), (MULTIPART_MAX_HEADER_SIZE), (mpeg_sys_type_find), (mpeg_ts_type_find), (mpeg4_video_type_find), (h264_video_type_find), (mpeg_video_stream_type_find), (dv_type_find), (mmsh_type_find): Bunch of small clean-ups: use gst_type_find_suggest_simple(); don't copy caps for no good reason (this may be desirable to make it easier to detect leaks, but then it should probably be done for all caps in the typefinder somewhere). --- ChangeLog | 12 +++++ gst/typefind/gsttypefindfunctions.c | 102 +++++++++++------------------------- 2 files changed, 43 insertions(+), 71 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d8d9a3..a64ff34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-06-04 Tim-Philipp Müller + + * gst/typefind/gsttypefindfunctions.c: (aac_type_find), + (mp3_type_find), (musepack_type_find), (MULTIPART_MAX_HEADER_SIZE), + (mpeg_sys_type_find), (mpeg_ts_type_find), (mpeg4_video_type_find), + (h264_video_type_find), (mpeg_video_stream_type_find), + (dv_type_find), (mmsh_type_find): + Bunch of small clean-ups: use gst_type_find_suggest_simple(); don't + copy caps for no good reason (this may be desirable to make it easier + to detect leaks, but then it should probably be done for all caps + in the typefinder somewhere). + 2008-06-04 Peter Kjellerstedt * tests/check/Makefile.am: diff --git a/gst/typefind/gsttypefindfunctions.c b/gst/typefind/gsttypefindfunctions.c index 003adaf..e624c59 100644 --- a/gst/typefind/gsttypefindfunctions.c +++ b/gst/typefind/gsttypefindfunctions.c @@ -577,29 +577,22 @@ aac_type_find (GstTypeFind * tf, gpointer unused) snc = GST_READ_UINT16_BE (c.data + len); if ((snc & 0xfff6) == 0xfff0) { - gint mpegversion = (c.data[1] & 0x08) ? 2 : 4; - GstCaps *caps = gst_caps_new_simple ("audio/mpeg", - "framed", G_TYPE_BOOLEAN, FALSE, - "mpegversion", G_TYPE_INT, mpegversion, - NULL); + gint mpegversion; - gst_type_find_suggest (tf, GST_TYPE_FIND_LIKELY, caps); - gst_caps_unref (caps); + mpegversion = (c.data[1] & 0x08) ? 2 : 4; GST_DEBUG ("Found second ADTS-%d syncpoint at offset 0x%" G_GINT64_MODIFIER "x, framelen %u", mpegversion, c.offset, len); + gst_type_find_suggest_simple (tf, GST_TYPE_FIND_LIKELY, "audio/mpeg", + "framed", G_TYPE_BOOLEAN, FALSE, + "mpegversion", G_TYPE_INT, mpegversion, NULL); break; } GST_DEBUG ("No next frame found... (should have been at 0x%x)", len); } else if (!memcmp (c.data, "ADIF", 4)) { /* ADIF header */ - GstCaps *caps = gst_caps_new_simple ("audio/mpeg", - "framed", G_TYPE_BOOLEAN, FALSE, - "mpegversion", G_TYPE_INT, 4, - NULL); - - gst_type_find_suggest (tf, GST_TYPE_FIND_LIKELY, caps); - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, GST_TYPE_FIND_LIKELY, "audio/mpeg", + "framed", G_TYPE_BOOLEAN, FALSE, "mpegversion", G_TYPE_INT, 4, NULL); break; } @@ -949,16 +942,10 @@ mp3_type_find (GstTypeFind * tf, gpointer unused) suggest: { - GstCaps *caps; - - g_assert (layer > 0); + g_return_if_fail (layer >= 1 && layer <= 3); - caps = gst_caps_make_writable (MP3_CAPS); - gst_structure_set (gst_caps_get_structure (caps, 0), "layer", - G_TYPE_INT, layer, NULL); - gst_type_find_suggest (tf, prob, caps); - gst_caps_unref (caps); - return; + gst_type_find_suggest_simple (tf, prob, "audio/mpeg", + "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, layer, NULL); } } @@ -988,15 +975,8 @@ musepack_type_find (GstTypeFind * tf, gpointer unused) } if (streamversion != -1) { - GstCaps *caps; - - caps = gst_caps_make_writable (MUSEPACK_CAPS); - gst_structure_set (gst_caps_get_structure (caps, 0), "streamversion", - G_TYPE_INT, streamversion, NULL); - - gst_type_find_suggest (tf, prop, caps); - - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, prop, "audio/x-musepack", + "streamversion", G_TYPE_INT, streamversion, NULL); } } @@ -1206,10 +1186,7 @@ multipart_type_find (GstTypeFind * tf, gpointer unused) } if (*x == '\n' && !g_ascii_strncasecmp ("content-type:", (gchar *) x + 1, 13)) { - GstCaps *caps = gst_caps_copy (MULTIPART_CAPS); - - gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, caps); - gst_caps_unref (caps); + gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, MULTIPART_CAPS); return; } } @@ -1457,7 +1434,6 @@ mpeg_sys_type_find (GstTypeFind * tf, gpointer unused) return; suggest: { - GstCaps *caps = gst_caps_copy (MPEG_SYS_CAPS); guint prob; prob = GST_TYPE_FIND_POSSIBLE + (10 * (pack_headers + pes_headers)); @@ -1470,10 +1446,9 @@ suggest: GST_LOG ("Suggesting MPEG %d system stream, %d packs, %d pes, prob %u%%\n", mpegversion, pack_headers, pes_headers, prob); - gst_structure_set (gst_caps_get_structure (caps, 0), "mpegversion", - G_TYPE_INT, mpegversion, NULL); - gst_type_find_suggest (tf, prob, caps); - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, prob, "video/mpeg", + "systemstream", G_TYPE_BOOLEAN, TRUE, + "mpegversion", G_TYPE_INT, mpegversion, NULL); } }; @@ -1551,18 +1526,15 @@ mpeg_ts_type_find (GstTypeFind * tf, gpointer unused) found = mpeg_ts_probe_headers (tf, skipped, pack_sizes[p]); if (found >= GST_MPEGTS_TYPEFIND_MIN_HEADERS) { gint probability; - GstCaps *caps = gst_caps_copy (MPEGTS_CAPS); - - gst_structure_set (gst_caps_get_structure (caps, 0), "packetsize", - G_TYPE_INT, pack_sizes[p], NULL); /* found at least 4 headers. 10 headers = MAXIMUM probability. * Arbitrarily, I assigned 10% probability for each header we * found, 40% -> 100% */ probability = MIN (10 * found, GST_TYPE_FIND_MAXIMUM); - gst_type_find_suggest (tf, probability, caps); - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, probability, "video/mpegts", + "systemstream", G_TYPE_BOOLEAN, TRUE, + "packetsize", G_TYPE_INT, pack_sizes[p], NULL); return; } } @@ -1605,10 +1577,8 @@ mpeg4_video_type_find (GstTypeFind * tf, gpointer unused) seen_vos = TRUE; } else if (sc >= 0x20 && sc <= 0x2F) { /* video_object_layer_start_code */ if (seen_vos) { - GstCaps *caps = gst_caps_copy (MPEG4_VIDEO_CAPS); - - gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM - 1, caps); - gst_caps_unref (caps); + gst_type_find_suggest (tf, GST_TYPE_FIND_NEARLY_CERTAIN, + MPEG4_VIDEO_CAPS); return; } else return; @@ -1674,10 +1644,8 @@ h264_video_type_find (GstTypeFind * tf, gpointer unused) if ((stat_slice > 4 || (stat_dpa > 4 && stat_dpb > 4 && stat_dpc > 4)) && stat_idr >= 1 && stat_sps >= 1 && stat_pps >= 1) { - GstCaps *caps = gst_caps_copy (H264_VIDEO_CAPS); - - gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM - 1, caps); - gst_caps_unref (caps); + gst_type_find_suggest (tf, GST_TYPE_FIND_NEARLY_CERTAIN, + H264_VIDEO_CAPS); return; } @@ -1770,7 +1738,6 @@ mpeg_video_stream_type_find (GstTypeFind * tf, gpointer unused) if (found > 0 || seen_seq) { GstTypeFindProbability probability = 0; - GstCaps *caps; GST_LOG ("Found %d pictures, seq:%d, gop:%d", found, seen_seq, seen_gop); @@ -1793,10 +1760,9 @@ mpeg_video_stream_type_find (GstTypeFind * tf, gpointer unused) else if (seen_seq) probability = GST_TYPE_FIND_POSSIBLE - 20; - caps = gst_caps_copy (MPEG_VIDEO_CAPS); - gst_caps_set_simple (caps, "mpegversion", G_TYPE_INT, 1, NULL); - gst_type_find_suggest (tf, probability, caps); - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, probability, "video/mpeg", + "systemstream", G_TYPE_BOOLEAN, FALSE, + "mpegversion", G_TYPE_INT, 1, NULL); } } @@ -2378,19 +2344,17 @@ dv_type_find (GstTypeFind * tf, gpointer private) /* check for DIF and DV flag */ if (data && (data[0] == 0x1f) && (data[1] == 0x07) && (data[2] == 0x00) && ((data[4] & 0x01) == 0)) { - gchar *format; - GstCaps *caps = gst_caps_copy (DV_CAPS); + const gchar *format; if (data[3] & 0x80) { format = "PAL"; } else { format = "NTSC"; } - gst_structure_set (gst_caps_get_structure (caps, 0), "format", - G_TYPE_STRING, format, NULL); - gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, caps); - gst_caps_unref (caps); + gst_type_find_suggest_simple (tf, GST_TYPE_FIND_MAXIMUM, "video/x-dv", + "systemstream", G_TYPE_BOOLEAN, TRUE, + "format", G_TYPE_STRING, format, NULL); } } @@ -2783,11 +2747,7 @@ mmsh_type_find (GstTypeFind * tf, gpointer unused) if (data && data[0] == 0x24 && data[1] == 0x48 && GST_READ_UINT16_LE (data + 2) > 2 + 2 + 4 + 2 + 2 + 16 && memcmp (data + 2 + 2 + 4 + 2 + 2, asf_marker, 16) == 0) { - GstCaps *caps = gst_caps_copy (MMSH_CAPS); - - gst_type_find_suggest (tf, GST_TYPE_FIND_LIKELY, caps); - gst_caps_unref (caps); - return; + gst_type_find_suggest (tf, GST_TYPE_FIND_LIKELY, MMSH_CAPS); } } -- 2.7.4