From: Wim Taymans Date: Mon, 22 Aug 2011 10:22:02 +0000 (+0200) Subject: fourcc: remove fourcc X-Git-Tag: 1.19.3~511^2~7338 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c81c62d03a183eb524a88485a5a0f48d7f687588;p=platform%2Fupstream%2Fgstreamer.git fourcc: remove fourcc Remove fourcc in caps. Fix pbutils descriptions. Add more video macros Fix some unit test --- diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c index 93ec358..c694fad 100644 --- a/ext/ogg/gstoggstream.c +++ b/ext/ogg/gstoggstream.c @@ -1415,12 +1415,14 @@ setup_ogmaudio_mapper (GstOggStream * pad, ogg_packet * packet) { guint8 *data = packet->packet; guint32 fourcc; + gchar *fstr; pad->granulerate_n = GST_READ_UINT64_LE (data + 25); pad->granulerate_d = 1; fourcc = GST_READ_UINT32_LE (data + 9); - GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); + fstr = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); + GST_DEBUG ("fourcc: %s", fstr); pad->caps = gst_riff_create_audio_caps (fourcc, NULL, NULL, NULL, NULL, NULL); @@ -1433,9 +1435,10 @@ setup_ogmaudio_mapper (GstOggStream * pad, ogg_packet * packet) "rate", G_TYPE_INT, pad->granulerate_n, NULL); } else { pad->caps = gst_caps_new_simple ("audio/x-ogm-unknown", - "fourcc", GST_TYPE_FOURCC, fourcc, + "fourcc", G_TYPE_STRING, fstr, "rate", G_TYPE_INT, pad->granulerate_n, NULL); } + g_free (fstr); pad->n_header_packets = 1; pad->is_ogm = TRUE; @@ -1450,6 +1453,7 @@ setup_ogmvideo_mapper (GstOggStream * pad, ogg_packet * packet) guint32 fourcc; int width, height; gint64 time_unit; + gchar *fstr; GST_DEBUG ("time unit %d", GST_READ_UINT32_LE (data + 16)); GST_DEBUG ("samples per unit %d", GST_READ_UINT32_LE (data + 24)); @@ -1469,13 +1473,14 @@ setup_ogmvideo_mapper (GstOggStream * pad, ogg_packet * packet) fourcc = GST_READ_UINT32_LE (data + 9); width = GST_READ_UINT32_LE (data + 45); height = GST_READ_UINT32_LE (data + 49); - GST_DEBUG ("fourcc: %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); + fstr = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); + GST_DEBUG ("fourcc: %s", fstr); pad->caps = gst_riff_create_video_caps (fourcc, NULL, NULL, NULL, NULL, NULL); if (pad->caps == NULL) { pad->caps = gst_caps_new_simple ("video/x-ogm-unknown", - "fourcc", GST_TYPE_FOURCC, fourcc, + "fourcc", G_TYPE_STRING, fstr, "framerate", GST_TYPE_FRACTION, pad->granulerate_n, pad->granulerate_d, NULL); } else { @@ -1485,6 +1490,7 @@ setup_ogmvideo_mapper (GstOggStream * pad, ogg_packet * packet) "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL); } GST_DEBUG ("caps: %" GST_PTR_FORMAT, pad->caps); + g_free (fstr); pad->n_header_packets = 1; pad->frame_size = 1; diff --git a/ext/ogg/gstogmparse.c b/ext/ogg/gstogmparse.c index a9da76b..b81856a 100644 --- a/ext/ogg/gstogmparse.c +++ b/ext/ogg/gstogmparse.c @@ -585,7 +585,7 @@ gst_ogm_parse_stream_header (GstOgmParse * ogm, const guint8 * data, guint size) GST_WARNING_OBJECT (ogm, "could not find video caps for fourcc %" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (fourcc)); caps = gst_caps_new_simple ("video/x-ogm-unknown", "fourcc", - GST_TYPE_FOURCC, fourcc, NULL); + G_TYPE_STRING, ogm->hdr.subtype, NULL); break; } diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am index 8a519ed..abb4fcd 100644 --- a/gst-libs/gst/pbutils/Makefile.am +++ b/gst-libs/gst/pbutils/Makefile.am @@ -47,6 +47,7 @@ EXTRA_DIST = pbutils-marshal.list libgstpbutils_@GST_MAJORMINOR@_la_LIBADD = \ $(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_MAJORMINOR@.la \ + $(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \ $(GST_LIBS) libgstpbutils_@GST_MAJORMINOR@_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) libgstpbutils_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) diff --git a/gst-libs/gst/pbutils/descriptions.c b/gst-libs/gst/pbutils/descriptions.c index f4db9c5..69cb742 100644 --- a/gst-libs/gst/pbutils/descriptions.c +++ b/gst-libs/gst/pbutils/descriptions.c @@ -42,6 +42,9 @@ #include "gst/gst-i18n-plugin.h" +#include +#include + #include "pbutils.h" #include "pbutils-private.h" @@ -184,7 +187,6 @@ static const FormatInfo formats[] = { {"video/x-nut", "NUT", FLAG_CONTAINER}, {"video/x-nuv", "MythTV NuppelVideo (NUV)", FLAG_CONTAINER}, {"video/x-qdrw", "Apple QuickDraw", 0}, - {"video/x-raw-gray", N_("Uncompressed Gray Image"), 0}, {"video/x-smc", "Apple SMC", 0}, {"video/x-smoke", "Smoke", 0}, {"video/x-tarkin", "Tarkin", 0}, @@ -251,8 +253,7 @@ static const FormatInfo formats[] = { {"audio/x-adpcm", NULL, 0}, {"audio/x-mace", NULL, 0}, {"audio/x-pn-realaudio", NULL, 0}, - {"audio/x-raw-int", NULL, 0}, - {"audio/x-raw-float", NULL, 0}, + {"audio/x-raw", NULL, 0}, {"audio/x-wma", NULL, 0}, {"video/mpeg", NULL, FLAG_CONTAINER | FLAG_SYSTEMSTREAM}, {"video/mpeg", NULL, 0}, @@ -274,14 +275,13 @@ static const FormatInfo formats[] = { {"audio/x-pn-multirate-realaudio-live", NULL, 0}, #endif {"video/x-truemotion", NULL, 0}, - {"video/x-raw-rgb", NULL, 0}, - {"video/x-raw-yuv", NULL, 0}, + {"video/x-raw", NULL, 0}, {"video/x-svq", NULL, 0}, {"video/x-wmv", NULL, 0}, {"video/x-xan", NULL, 0} }; -/* returns static descriptions and dynamic ones (such as video/x-raw-yuv), +/* returns static descriptions and dynamic ones (such as video/x-raw), * or NULL if caps aren't known at all */ static gchar * format_info_get_desc (const FormatInfo * info, const GstCaps * caps) @@ -295,63 +295,61 @@ format_info_get_desc (const FormatInfo * info, const GstCaps * caps) s = gst_caps_get_structure (caps, 0); - if (strcmp (info->type, "video/x-raw-yuv") == 0) { - const gchar *ret = NULL; - guint32 fourcc = 0; + if (strcmp (info->type, "video/x-raw") == 0) { + gchar *ret = NULL; + const gchar *str = 0; + GstVideoFormat format; + const GstVideoFormatInfo *finfo; - gst_structure_get_fourcc (s, "format", &fourcc); - switch (fourcc) { - case GST_MAKE_FOURCC ('I', '4', '2', '0'): - ret = _("Uncompressed planar YUV 4:2:0"); - break; - case GST_MAKE_FOURCC ('Y', 'V', '1', '2'): - ret = _("Uncompressed planar YVU 4:2:0"); - break; - case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'): - ret = _("Uncompressed packed YUV 4:2:2"); - break; - case GST_MAKE_FOURCC ('Y', 'U', 'V', '9'): - ret = _("Uncompressed packed YUV 4:1:0"); - break; - case GST_MAKE_FOURCC ('Y', 'V', 'U', '9'): - ret = _("Uncompressed packed YVU 4:1:0"); - break; - case GST_MAKE_FOURCC ('Y', 'V', 'Y', 'U'): - case GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'): - ret = _("Uncompressed packed YUV 4:2:2"); - break; - case GST_MAKE_FOURCC ('Y', '4', '1', 'P'): - ret = _("Uncompressed packed YUV 4:1:1"); - break; - case GST_MAKE_FOURCC ('I', 'Y', 'U', '2'): - ret = _("Uncompressed packed YUV 4:4:4"); - break; - case GST_MAKE_FOURCC ('Y', '4', '2', 'B'): - ret = _("Uncompressed planar YUV 4:2:2"); - break; - case GST_MAKE_FOURCC ('Y', '4', '1', 'B'): - ret = _("Uncompressed planar YUV 4:1:1"); - break; - case GST_MAKE_FOURCC ('Y', '8', '0', '0'): - ret = _("Uncompressed black and white Y-plane"); - break; - default: - ret = _("Uncompressed YUV"); - break; - } - return g_strdup (ret); - } else if (strcmp (info->type, "video/x-raw-rgb") == 0) { - const gchar *rgb_str; - gint depth = 0; + str = gst_structure_get_string (s, "format"); + format = gst_video_format_from_string (str); + if (format == GST_VIDEO_FORMAT_UNKNOWN) + return g_strdup (_("Uncompressed video")); + + finfo = gst_video_format_get_info (format); + + if (GST_VIDEO_FORMAT_INFO_IS_GRAY (finfo)) { + ret = g_strdup (_("Uncompressed gray")); + } else if (GST_VIDEO_FORMAT_INFO_IS_YUV (finfo)) { + const gchar *layout; + const gchar *subs; + gint w_sub, h_sub; + + w_sub = GST_VIDEO_FORMAT_INFO_W_SUB (finfo, 1); + h_sub = GST_VIDEO_FORMAT_INFO_H_SUB (finfo, 1); - gst_structure_get_int (s, "depth", &depth); - rgb_str = gst_structure_has_field (s, "alpha_mask") ? "RGBA" : "RGB"; - if (gst_structure_has_field (s, "paletted_data")) { - return g_strdup_printf (_("Uncompressed palettized %d-bit %s"), depth, - rgb_str); + if (GST_VIDEO_FORMAT_INFO_N_PLANES (finfo) == 1) { + layout = "planar"; + } else { + layout = "packed"; + } + + if (w_sub == 1 && h_sub == 1) { + subs = "4:4:4"; + } else if (w_sub == 2 && h_sub == 1) { + subs = "4:2:2"; + } else if (w_sub == 2 && h_sub == 2) { + subs = "4:2:0"; + } else if (w_sub == 4 && h_sub == 1) { + subs = "4:1:1"; + } else { + subs = ""; + } + ret = g_strdup_printf (_("Uncompressed %s YUV %s"), layout, subs); + } else if (GST_VIDEO_FORMAT_INFO_IS_RGB (finfo)) { + gboolean alpha, palette; + gint bits; + + alpha = GST_VIDEO_FORMAT_INFO_HAS_ALPHA (finfo); + palette = GST_VIDEO_FORMAT_INFO_HAS_PALETTE (finfo); + bits = GST_VIDEO_FORMAT_INFO_BITS (finfo); + + ret = g_strdup_printf (_("Uncompressed %s%d-bit %s"), + palette ? "palettized " : "", bits, alpha ? "RGBA" : "RGB"); } else { - return g_strdup_printf ("Uncompressed %d-bit %s", depth, rgb_str); + ret = g_strdup (_("Uncompressed video")); } + return ret; } else if (strcmp (info->type, "video/x-h263") == 0) { const gchar *variant, *ret; @@ -610,26 +608,25 @@ format_info_get_desc (const FormatInfo * info, const GstCaps * caps) } } return g_strdup ("MPEG Video"); - } else if (strcmp (info->type, "audio/x-raw-int") == 0) { - gint bitdepth = 0; - - /* 8-bit pcm might not have depth field (?) */ - if (!gst_structure_get_int (s, "depth", &bitdepth)) - gst_structure_get_int (s, "width", &bitdepth); - if (bitdepth != 0) - return g_strdup_printf (_("Raw %d-bit PCM audio"), bitdepth); - else - return g_strdup (_("Raw PCM audio")); - } else if (strcmp (info->type, "audio/x-raw-float") == 0) { - gint bitdepth = 0; - - gst_structure_get_int (s, "width", &bitdepth); - if (bitdepth != 0) - return g_strdup_printf (_("Raw %d-bit floating-point audio"), bitdepth); - else - return g_strdup (_("Raw floating-point audio")); + } else if (strcmp (info->type, "audio/x-raw") == 0) { + gint depth = 0; + gboolean is_float; + const gchar *str; + GstAudioFormat format; + const GstAudioFormatInfo *finfo; + + str = gst_structure_get_string (s, "format"); + format = gst_audio_format_from_string (str); + if (format == GST_AUDIO_FORMAT_UNKNOWN) + return g_strdup (_("Uncompressed audio")); + + finfo = gst_audio_format_get_info (format); + depth = GST_AUDIO_FORMAT_INFO_DEPTH (finfo); + is_float = GST_AUDIO_FORMAT_INFO_IS_FLOAT (finfo); + + return g_strdup_printf (_("Raw %d-bit %s audio"), depth, + is_float ? "floating-point" : "PCM"); } - return NULL; } diff --git a/gst-libs/gst/riff/riff-media.c b/gst-libs/gst/riff/riff-media.c index 80d50cc..fbf43da 100644 --- a/gst-libs/gst/riff/riff-media.c +++ b/gst-libs/gst/riff/riff-media.c @@ -68,21 +68,14 @@ gst_riff_create_video_caps (guint32 codec_fcc, if (strf) { if (bpp == 8) { - caps = gst_caps_new_simple ("video/x-raw-rgb", - "bpp", G_TYPE_INT, 8, "depth", G_TYPE_INT, 8, - "endianness", G_TYPE_INT, G_BYTE_ORDER, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "RGB8_PALETTED", NULL); } else if (bpp == 24) { - caps = gst_caps_new_simple ("video/x-raw-rgb", - "bpp", G_TYPE_INT, 24, "depth", G_TYPE_INT, 24, - "endianness", G_TYPE_INT, G_BIG_ENDIAN, - "red_mask", G_TYPE_INT, 0xff, "green_mask", G_TYPE_INT, 0xff00, - "blue_mask", G_TYPE_INT, 0xff0000, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "BGR", NULL); } else if (bpp == 32) { - caps = gst_caps_new_simple ("video/x-raw-rgb", - "bpp", G_TYPE_INT, 32, "depth", G_TYPE_INT, 24, - "endianness", G_TYPE_INT, G_BIG_ENDIAN, - "red_mask", G_TYPE_INT, 0xff00, "green_mask", G_TYPE_INT, - 0xff0000, "blue_mask", G_TYPE_INT, 0xff000000, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "BGRx", NULL); } else { GST_WARNING ("Unhandled DIB RGB depth: %d", bpp); return NULL; @@ -90,8 +83,8 @@ gst_riff_create_video_caps (guint32 codec_fcc, } else { /* for template */ caps = - gst_caps_from_string ("video/x-raw-rgb, bpp = (int) { 8, 24, 32 }, " - "depth = (int) { 8, 24}"); + gst_caps_from_string ("video/x-raw, format = (string) " + "{ RGB8_PALETTED, BGR, BGRx }"); } palette = strf_data; @@ -105,40 +98,38 @@ gst_riff_create_video_caps (guint32 codec_fcc, break; } case GST_MAKE_FOURCC ('I', '4', '2', '0'): - caps = gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, codec_fcc, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "I420", NULL); if (codec_name) *codec_name = g_strdup ("Uncompressed planar YUV 4:2:0"); break; case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'): case GST_MAKE_FOURCC ('Y', 'U', 'N', 'V'): - caps = gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'), - NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "YUY2", NULL); if (codec_name) *codec_name = g_strdup ("Uncompressed packed YUV 4:2:2"); break; case GST_MAKE_FOURCC ('Y', 'V', 'U', '9'): - caps = gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, codec_fcc, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "YVU9", NULL); if (codec_name) *codec_name = g_strdup ("Uncompressed packed YVU 4:1:0"); break; case GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'): case GST_MAKE_FOURCC ('2', 'v', 'u', 'y'): - caps = gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y'), - NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "UYVY", NULL); if (codec_name) *codec_name = g_strdup ("Uncompressed packed YUV 4:2:2"); break; case GST_MAKE_FOURCC ('Y', 'V', '1', '2'): - caps = gst_caps_new_simple ("video/x-raw-yuv", - "format", GST_TYPE_FOURCC, codec_fcc, NULL); + caps = gst_caps_new_simple ("video/x-raw", + "format", G_TYPE_STRING, "YV12", NULL); if (codec_name) *codec_name = g_strdup ("Uncompressed packed YVU 4:2:2"); break; @@ -547,16 +538,14 @@ gst_riff_create_video_caps (guint32 codec_fcc, case GST_MAKE_FOURCC ('W', 'M', 'V', 'A'): caps = gst_caps_new_simple ("video/x-wmv", - "wmvversion", G_TYPE_INT, 3, "format", GST_TYPE_FOURCC, - codec_fcc, NULL); + "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WMVA", NULL); if (codec_name) *codec_name = g_strdup ("Microsoft Windows Media Advanced Profile"); break; case GST_MAKE_FOURCC ('W', 'V', 'C', '1'): caps = gst_caps_new_simple ("video/x-wmv", - "wmvversion", G_TYPE_INT, 3, "format", GST_TYPE_FOURCC, - codec_fcc, NULL); + "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL); if (codec_name) *codec_name = g_strdup ("Microsoft Windows Media VC-1"); break; diff --git a/gst-libs/gst/video/video.h b/gst-libs/gst/video/video.h index 59a32ab..290da71 100644 --- a/gst-libs/gst/video/video.h +++ b/gst-libs/gst/video/video.h @@ -261,8 +261,12 @@ struct _GstVideoFormatInfo { #define GST_VIDEO_FORMAT_INFO_IS_RGB(info) ((info)->flags & GST_VIDEO_FORMAT_FLAG_RGB) #define GST_VIDEO_FORMAT_INFO_IS_GRAY(info) ((info)->flags & GST_VIDEO_FORMAT_FLAG_GRAY) #define GST_VIDEO_FORMAT_INFO_HAS_ALPHA(info) ((info)->flags & GST_VIDEO_FORMAT_FLAG_ALPHA) +#define GST_VIDEO_FORMAT_INFO_IS_LE(info) ((info)->flags & GST_VIDEO_FORMAT_FLAG_LE) +#define GST_VIDEO_FORMAT_INFO_HAS_PALETTE(info) ((info)->flags & GST_VIDEO_FORMAT_FLAG_PALETTE) +#define GST_VIDEO_FORMAT_INFO_BITS(info) ((info)->bits) #define GST_VIDEO_FORMAT_INFO_N_COMPONENTS(info) ((info)->n_components) +#define GST_VIDEO_FORMAT_INFO_SHIFT(info,c) ((info)->shift[c]) #define GST_VIDEO_FORMAT_INFO_DEPTH(info,c) ((info)->depth[c]) #define GST_VIDEO_FORMAT_INFO_PSTRIDE(info,c) ((info)->pixel_stride[c]) #define GST_VIDEO_FORMAT_INFO_N_PLANES(info) ((info)->n_planes) diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index dd0d4da..530d61a 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -131,10 +131,7 @@ check_PROGRAMS = \ libs/xmpwriter \ $(cxx_checks) \ $(check_orc) \ - pipelines/simple-launch-lines \ - pipelines/streamheader \ - pipelines/basetime \ - pipelines/capsfilter-renegotiation + pipelines/simple-launch-lines # TORTURE_TO_FIX = \ # elements/adder @@ -146,6 +143,9 @@ VALGRIND_TO_FIX = \ # FIXME 0.11: these tests don't even build at the moment ZERO_11_TO_PORT = \ + pipelines/streamheader \ + pipelines/basetime \ + pipelines/capsfilter-renegotiation \ elements/appsink \ elements/appsrc \ elements/audiorate \ diff --git a/tests/check/elements/decodebin.c b/tests/check/elements/decodebin.c index 9e612d6..79cfe63 100644 --- a/tests/check/elements/decodebin.c +++ b/tests/check/elements/decodebin.c @@ -222,13 +222,13 @@ static gboolean test_mpeg_audio_parse_check_valid_frame (GstBaseParse * parse, static GstFlowReturn test_mpeg_audio_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame); -GST_BOILERPLATE (TestMpegAudioParse, test_mpeg_audio_parse, GstBaseParse, - GST_TYPE_BASE_PARSE); +G_DEFINE_TYPE (TestMpegAudioParse, test_mpeg_audio_parse, GST_TYPE_BASE_PARSE); static void -test_mpeg_audio_parse_base_init (gpointer klass) +test_mpeg_audio_parse_class_init (TestMpegAudioParseClass * klass) { GstElementClass *element_class = GST_ELEMENT_CLASS (klass); + GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&sink_template)); @@ -238,12 +238,6 @@ test_mpeg_audio_parse_base_init (gpointer klass) gst_element_class_set_details_simple (element_class, "MPEG1 Audio Parser", "Codec/Parser/Audio", "Pretends to parse mpeg1 audio stream", "Foo Bar "); -} - -static void -test_mpeg_audio_parse_class_init (TestMpegAudioParseClass * klass) -{ - GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass); parse_class->start = test_mpeg_audio_parse_start; parse_class->stop = test_mpeg_audio_parse_stop; @@ -254,8 +248,7 @@ test_mpeg_audio_parse_class_init (TestMpegAudioParseClass * klass) static gint num_parse_instances = 0; static void -test_mpeg_audio_parse_init (TestMpegAudioParse * mp3parse, - TestMpegAudioParseClass * klass) +test_mpeg_audio_parse_init (TestMpegAudioParse * mp3parse) { /* catch decodebin plugging parsers in a loop early */ fail_unless (++num_parse_instances < 10); @@ -278,7 +271,9 @@ static gboolean test_mpeg_audio_parse_check_valid_frame (GstBaseParse * parse, GstBaseParseFrame * frame, guint * framesize, gint * skipsize) { - const guint8 *data = GST_BUFFER_DATA (frame->buffer); + guint8 data[2]; + + gst_buffer_extract (frame->buffer, 0, data, 2); if ((GST_READ_UINT16_BE (data) & 0xffe0) == 0xffe0) { /* this framesize is hard-coded for ../test.mp3 */ @@ -300,7 +295,6 @@ test_mpeg_audio_parse_parse_frame (GstBaseParse * parse, caps = gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT, 1, "mpegaudioversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 3, "rate", G_TYPE_INT, 44100, "channels", G_TYPE_INT, 2, NULL); - gst_buffer_set_caps (frame->buffer, caps); gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), caps); gst_caps_unref (caps); }