From 20669d461a4953eb5ed01374d5ab628b4dc73b64 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sat, 10 Mar 2012 19:10:52 -0300 Subject: [PATCH] Fix 'ignoring return value of function declared with const attribute' This always happens with GstByteReader/Writer and friends when not taking into account returned boolean of the _read/_write functions (which is actually wrong). Make use of the *_unchecked variant as much as possible, or take the returned value into account. --- gst-libs/gst/codecparsers/gsth264parser.c | 3 +- gst-libs/gst/codecparsers/gstmpeg4parser.c | 4 +-- .../gst/codecparsers/gstmpegvideoparser.c | 18 +++++++--- gst-libs/gst/codecparsers/gstvc1parser.c | 2 +- gst/aiff/aiffmux.c | 33 +++++++++++-------- gst/h264parse/gsth264parse.c | 18 +++++----- gst/jp2kdecimator/jp2kcodestream.c | 14 +++++--- gst/mxf/mxfmpeg.c | 24 +++++++------- gst/videoparsers/gsth263parse.c | 13 ++++---- gst/videoparsers/gsth264parse.c | 16 ++++----- sys/vdpau/h264/gstvdph264dec.c | 20 ++++++----- sys/vdpau/mpeg/gstvdpmpegdec.c | 11 ++++--- 12 files changed, 97 insertions(+), 79 deletions(-) diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c index efb4c739db..00c1517996 100644 --- a/gst-libs/gst/codecparsers/gsth264parser.c +++ b/gst-libs/gst/codecparsers/gsth264parser.c @@ -1309,7 +1309,8 @@ gst_h264_parser_identify_nalu_avc (GstH264NalParser * nalparser, size = size - offset; gst_bit_reader_init (&br, data + offset, size); - gst_bit_reader_get_bits_uint32 (&br, &nalu->size, nal_length_size * 8); + nalu->size = gst_bit_reader_get_bits_uint32_unchecked (&br, + nal_length_size * 8); nalu->sc_offset = offset; nalu->offset = offset + nal_length_size; diff --git a/gst-libs/gst/codecparsers/gstmpeg4parser.c b/gst-libs/gst/codecparsers/gstmpeg4parser.c index 4b0acb6b59..1166b872f4 100644 --- a/gst-libs/gst/codecparsers/gstmpeg4parser.c +++ b/gst-libs/gst/codecparsers/gstmpeg4parser.c @@ -277,7 +277,7 @@ find_psc (GstByteReader * br) psc_pos = gst_byte_reader_get_pos (br); break; } else - gst_byte_reader_skip (br, 1); + gst_byte_reader_skip_unchecked (br, 1); } failed: @@ -543,7 +543,7 @@ gst_h263_parse (GstMpeg4Packet * packet, packet->offset = off1 + offset; packet->data = data; - gst_byte_reader_skip (&br, 3); + gst_byte_reader_skip_unchecked (&br, 3); off2 = find_psc (&br); if (off2 == -1) { diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.c b/gst-libs/gst/codecparsers/gstmpegvideoparser.c index b725d9d353..2767517f11 100644 --- a/gst-libs/gst/codecparsers/gstmpegvideoparser.c +++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.c @@ -97,9 +97,8 @@ find_start_code (GstBitReader * b) while (gst_bit_reader_peek_bits_uint32 (b, &bits, 32)) { if (bits >> 8 == 0x1) { return TRUE; - } else { - gst_bit_reader_skip (b, 8); - } + } else if (!gst_bit_reader_skip (b, 8) == FALSE) + break; } return FALSE; @@ -324,10 +323,13 @@ gst_mpeg_video_parse (const guint8 * data, gsize size, guint offset) while (off >= 0 && off + 3 < size) { GstMpegVideoTypeOffsetSize *codoffsize; - gst_byte_reader_skip (&br, off + 3); + + if (gst_byte_reader_skip (&br, off + 3) == FALSE) + goto failed; codoffsize = g_malloc (sizeof (GstMpegVideoTypeOffsetSize)); - gst_byte_reader_get_uint8 (&br, &codoffsize->type); + if (gst_byte_reader_get_uint8 (&br, &codoffsize->type) == FALSE) + goto failed; codoffsize->offset = gst_byte_reader_get_pos (&br) + offset; @@ -346,6 +348,12 @@ gst_mpeg_video_parse (const guint8 * data, gsize size, guint offset) } return g_list_reverse (ret); + +failed: + { + GST_WARNING ("Failed to parse"); + return g_list_reverse (ret); + } } /** diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c index 8f2937f01f..a82e46e16a 100644 --- a/gst-libs/gst/codecparsers/gstvc1parser.c +++ b/gst-libs/gst/codecparsers/gstvc1parser.c @@ -692,7 +692,7 @@ get_unary (GstBitReader * br, gint stop, gint len) guint8 current = 0xff; for (i = 0; i < len; i++) { - gst_bit_reader_get_bits_uint8 (br, ¤t, 1); + current = gst_bit_reader_get_bits_uint8_unchecked (br, 1); if (current == stop) return i; } diff --git a/gst/aiff/aiffmux.c b/gst/aiff/aiffmux.c index 0d2772af51..565ea8629a 100644 --- a/gst/aiff/aiffmux.c +++ b/gst/aiff/aiffmux.c @@ -163,11 +163,14 @@ gst_aiff_mux_write_form_header (GstAiffMux * aiffmux, guint32 audio_data_size, GstByteWriter * writer) { /* ckID == 'FORM' */ - gst_byte_writer_put_uint32_le (writer, GST_MAKE_FOURCC ('F', 'O', 'R', 'M')); + gst_byte_writer_put_uint32_le_unchecked (writer, + GST_MAKE_FOURCC ('F', 'O', 'R', 'M')); /* ckSize is currently bogus but we'll know what it is later */ - gst_byte_writer_put_uint32_be (writer, audio_data_size + AIFF_HEADER_LEN - 8); + gst_byte_writer_put_uint32_be_unchecked (writer, + audio_data_size + AIFF_HEADER_LEN - 8); /* formType == 'AIFF' */ - gst_byte_writer_put_uint32_le (writer, GST_MAKE_FOURCC ('A', 'I', 'F', 'F')); + gst_byte_writer_put_uint32_le_unchecked (writer, + GST_MAKE_FOURCC ('A', 'I', 'F', 'F')); } /* @@ -218,8 +221,8 @@ gst_aiff_mux_write_ext (GstByteWriter * writer, double d) if (d < 0) ext.exponent[0] |= 0x80; - gst_byte_writer_put_data (writer, ext.exponent, 2); - gst_byte_writer_put_data (writer, ext.mantissa, 8); + gst_byte_writer_put_data_unchecked (writer, ext.exponent, 2); + gst_byte_writer_put_data_unchecked (writer, ext.mantissa, 8); } /* @@ -230,13 +233,14 @@ static void gst_aiff_mux_write_comm_header (GstAiffMux * aiffmux, guint32 audio_data_size, GstByteWriter * writer) { - gst_byte_writer_put_uint32_le (writer, GST_MAKE_FOURCC ('C', 'O', 'M', 'M')); - gst_byte_writer_put_uint32_be (writer, 18); - gst_byte_writer_put_uint16_be (writer, aiffmux->channels); + gst_byte_writer_put_uint32_le_unchecked (writer, + GST_MAKE_FOURCC ('C', 'O', 'M', 'M')); + gst_byte_writer_put_uint32_be_unchecked (writer, 18); + gst_byte_writer_put_uint16_be_unchecked (writer, aiffmux->channels); /* numSampleFrames value will be overwritten when known */ - gst_byte_writer_put_uint32_be (writer, + gst_byte_writer_put_uint32_be_unchecked (writer, audio_data_size / (aiffmux->width / 8 * aiffmux->channels)); - gst_byte_writer_put_uint16_be (writer, aiffmux->depth); + gst_byte_writer_put_uint16_be_unchecked (writer, aiffmux->depth); gst_aiff_mux_write_ext (writer, aiffmux->rate); } @@ -244,13 +248,14 @@ static void gst_aiff_mux_write_ssnd_header (GstAiffMux * aiffmux, guint32 audio_data_size, GstByteWriter * writer) { - gst_byte_writer_put_uint32_le (writer, GST_MAKE_FOURCC ('S', 'S', 'N', 'D')); + gst_byte_writer_put_uint32_le_unchecked (writer, + GST_MAKE_FOURCC ('S', 'S', 'N', 'D')); /* ckSize will be overwritten when known */ - gst_byte_writer_put_uint32_be (writer, + gst_byte_writer_put_uint32_be_unchecked (writer, audio_data_size + AIFF_SSND_HEADER_LEN - 8); /* offset and blockSize are set to 0 as we don't support block-aligned sample data yet */ - gst_byte_writer_put_uint32_be (writer, 0); - gst_byte_writer_put_uint32_be (writer, 0); + gst_byte_writer_put_uint32_be_unchecked (writer, 0); + gst_byte_writer_put_uint32_be_unchecked (writer, 0); } static GstFlowReturn diff --git a/gst/h264parse/gsth264parse.c b/gst/h264parse/gsth264parse.c index 8ae60755ed..29197371ec 100644 --- a/gst/h264parse/gsth264parse.c +++ b/gst/h264parse/gsth264parse.c @@ -895,10 +895,8 @@ gst_h264_parse_base_init (gpointer g_class) { GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class); - gst_element_class_add_static_pad_template (gstelement_class, - &srctemplate); - gst_element_class_add_static_pad_template (gstelement_class, - &sinktemplate); + gst_element_class_add_static_pad_template (gstelement_class, &srctemplate); + gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate); gst_element_class_set_details_simple (gstelement_class, "H264Parse", "Codec/Parser/Video", "Parses raw h264 stream", @@ -1732,7 +1730,7 @@ gst_h264_parse_push_buffer (GstH264Parse * h264parse, GstBuffer * buf) GstBuffer *codec_nal, *new_buf; gst_byte_writer_init_with_size (&bw, GST_BUFFER_SIZE (buf), FALSE); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (buf), + gst_byte_writer_put_data_unchecked (&bw, GST_BUFFER_DATA (buf), h264parse->idr_offset); GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS"); for (i = 0; i < MAX_SPS_COUNT; i++) { @@ -1741,8 +1739,8 @@ gst_h264_parse_push_buffer (GstH264Parse * h264parse, GstBuffer * buf) codec_nal = gst_buffer_copy (h264parse->sps_nals[i]); codec_nal = gst_h264_parse_write_nal_prefix (h264parse, codec_nal); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (codec_nal), - GST_BUFFER_SIZE (codec_nal)); + gst_byte_writer_put_data_unchecked (&bw, + GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal)); h264parse->last_report = timestamp; } } @@ -1752,12 +1750,12 @@ gst_h264_parse_push_buffer (GstH264Parse * h264parse, GstBuffer * buf) codec_nal = gst_buffer_copy (h264parse->pps_nals[i]); codec_nal = gst_h264_parse_write_nal_prefix (h264parse, codec_nal); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (codec_nal), - GST_BUFFER_SIZE (codec_nal)); + gst_byte_writer_put_data_unchecked (&bw, + GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal)); h264parse->last_report = timestamp; } } - gst_byte_writer_put_data (&bw, + gst_byte_writer_put_data_unchecked (&bw, GST_BUFFER_DATA (buf) + h264parse->idr_offset, GST_BUFFER_SIZE (buf) - h264parse->idr_offset); /* collect result and push */ diff --git a/gst/jp2kdecimator/jp2kcodestream.c b/gst/jp2kdecimator/jp2kcodestream.c index 6fb28788e7..a5321685e0 100644 --- a/gst/jp2kdecimator/jp2kcodestream.c +++ b/gst/jp2kdecimator/jp2kcodestream.c @@ -828,7 +828,11 @@ write_plt (GstJP2kDecimator * self, GstByteWriter * writer, plt_end_pos = gst_byte_writer_get_pos (writer); gst_byte_writer_set_pos (writer, plt_start_pos); - gst_byte_writer_put_uint16_be (writer, plt_end_pos - plt_start_pos); + if (!gst_byte_writer_put_uint16_be (writer, plt_end_pos - plt_start_pos)) { + GST_ERROR_OBJECT (self, "Not enough space to write plt size"); + return GST_FLOW_ERROR; + } + gst_byte_writer_set_pos (writer, plt_end_pos); return GST_FLOW_OK; @@ -1328,9 +1332,9 @@ write_packet (GstJP2kDecimator * self, GstByteWriter * writer, } if (packet->sop) { - gst_byte_writer_put_uint16_be (writer, MARKER_SOP); - gst_byte_writer_put_uint16_be (writer, 4); - gst_byte_writer_put_uint16_be (writer, packet->seqno); + gst_byte_writer_put_uint16_be_unchecked (writer, MARKER_SOP); + gst_byte_writer_put_uint16_be_unchecked (writer, 4); + gst_byte_writer_put_uint16_be_unchecked (writer, packet->seqno); } if (packet->data) { @@ -1696,7 +1700,7 @@ write_main_header (GstJP2kDecimator * self, GstByteWriter * writer, return GST_FLOW_ERROR; } - gst_byte_writer_put_uint16_be (writer, MARKER_SOC); + gst_byte_writer_put_uint16_be_unchecked (writer, MARKER_SOC); ret = write_siz (self, writer, &header->siz); if (ret != GST_FLOW_OK) diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c index 08b1a27b8c..45676d002e 100644 --- a/gst/mxf/mxfmpeg.c +++ b/gst/mxf/mxfmpeg.c @@ -441,7 +441,7 @@ mxf_mpeg_is_mpeg2_keyframe (GstBuffer * buffer) guint8 type = 0; /* Found sync code */ - gst_byte_reader_skip (&reader, 3); + gst_byte_reader_skip_unchecked (&reader, 3); if (!gst_byte_reader_get_uint8 (&reader, &type)) break; @@ -465,9 +465,8 @@ mxf_mpeg_is_mpeg2_keyframe (GstBuffer * buffer) return FALSE; } } - } else { - gst_byte_reader_skip (&reader, 1); - } + } else if (gst_byte_reader_skip (&reader, 1) == FALSE) + break; } return FALSE; @@ -484,7 +483,7 @@ mxf_mpeg_is_mpeg4_keyframe (GstBuffer * buffer) guint8 type = 0; /* Found sync code */ - gst_byte_reader_skip (&reader, 3); + gst_byte_reader_skip_unchecked (&reader, 3); if (!gst_byte_reader_get_uint8 (&reader, &type)) break; @@ -502,9 +501,8 @@ mxf_mpeg_is_mpeg4_keyframe (GstBuffer * buffer) return FALSE; } } - } else { - gst_byte_reader_skip (&reader, 1); - } + } else if (gst_byte_reader_skip (&reader, 1) == FALSE) + break; } return FALSE; @@ -1024,7 +1022,7 @@ mxf_mpeg_is_mpeg2_frame (GstBuffer * buffer) guint8 type = 0; /* Found sync code */ - gst_byte_reader_skip (&reader, 3); + gst_byte_reader_skip_unchecked (&reader, 3); if (!gst_byte_reader_get_uint8 (&reader, &type)) break; @@ -1034,7 +1032,8 @@ mxf_mpeg_is_mpeg2_frame (GstBuffer * buffer) return TRUE; } } else { - gst_byte_reader_skip (&reader, 1); + if (gst_byte_reader_skip (&reader, 1) == FALSE) + break; } } @@ -1052,7 +1051,7 @@ mxf_mpeg_is_mpeg4_frame (GstBuffer * buffer) guint8 type = 0; /* Found sync code */ - gst_byte_reader_skip (&reader, 3); + gst_byte_reader_skip_unchecked (&reader, 3); if (!gst_byte_reader_get_uint8 (&reader, &type)) break; @@ -1062,7 +1061,8 @@ mxf_mpeg_is_mpeg4_frame (GstBuffer * buffer) return TRUE; } } else { - gst_byte_reader_skip (&reader, 1); + if (gst_byte_reader_skip (&reader, 1) == FALSE) + break; } } diff --git a/gst/videoparsers/gsth263parse.c b/gst/videoparsers/gsth263parse.c index 85028c28da..d488d5a68b 100644 --- a/gst/videoparsers/gsth263parse.c +++ b/gst/videoparsers/gsth263parse.c @@ -65,10 +65,8 @@ gst_h263_parse_base_init (gpointer g_class) { GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class); - gst_element_class_add_static_pad_template (gstelement_class, - &srctemplate); - gst_element_class_add_static_pad_template (gstelement_class, - &sinktemplate); + gst_element_class_add_static_pad_template (gstelement_class, &srctemplate); + gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate); gst_element_class_set_details_simple (gstelement_class, "H.263 parser", "Codec/Parser/Video", "Parses H.263 streams", @@ -163,7 +161,8 @@ find_psc (GstBuffer * buffer, guint skip) if (!gst_byte_reader_set_pos (&br, skip)) goto out; - gst_byte_reader_peek_uint24_be (&br, &psc); + if (gst_byte_reader_peek_uint24_be (&br, &psc) == FALSE) + goto out; /* Scan for the picture start code (22 bits - 0x0020) */ while ((gst_byte_reader_get_remaining (&br) >= 3)) { @@ -171,8 +170,8 @@ find_psc (GstBuffer * buffer, guint skip) ((psc & 0xffffc0) == 0x000080)) { psc_pos = gst_byte_reader_get_pos (&br); break; - } else - gst_byte_reader_skip (&br, 1); + } else if (gst_byte_reader_skip (&br, 1) == FALSE) + break; } out: diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index 6528907a4e..0c8455d49d 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -1491,30 +1491,30 @@ gst_h264_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame) const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE; gst_byte_writer_init_with_size (&bw, GST_BUFFER_SIZE (buffer), FALSE); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (buffer), + gst_byte_writer_put_data_unchecked (&bw, GST_BUFFER_DATA (buffer), h264parse->idr_pos); GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS"); for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) { if ((codec_nal = h264parse->sps_nals[i])) { GST_DEBUG_OBJECT (h264parse, "inserting SPS nal"); - gst_byte_writer_put_uint32_be (&bw, + gst_byte_writer_put_uint32_be_unchecked (&bw, bs ? 1 : GST_BUFFER_SIZE (codec_nal)); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (codec_nal), - GST_BUFFER_SIZE (codec_nal)); + gst_byte_writer_put_data_unchecked (&bw, + GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal)); h264parse->last_report = new_ts; } } for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) { if ((codec_nal = h264parse->pps_nals[i])) { GST_DEBUG_OBJECT (h264parse, "inserting PPS nal"); - gst_byte_writer_put_uint32_be (&bw, + gst_byte_writer_put_uint32_be_unchecked (&bw, bs ? 1 : GST_BUFFER_SIZE (codec_nal)); - gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (codec_nal), - GST_BUFFER_SIZE (codec_nal)); + gst_byte_writer_put_data_unchecked (&bw, + GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal)); h264parse->last_report = new_ts; } } - gst_byte_writer_put_data (&bw, + gst_byte_writer_put_data_unchecked (&bw, GST_BUFFER_DATA (buffer) + h264parse->idr_pos, GST_BUFFER_SIZE (buffer) - h264parse->idr_pos); /* collect result and push */ diff --git a/sys/vdpau/h264/gstvdph264dec.c b/sys/vdpau/h264/gstvdph264dec.c index d7af47b6f4..71893ca0bd 100644 --- a/sys/vdpau/h264/gstvdph264dec.c +++ b/sys/vdpau/h264/gstvdph264dec.c @@ -687,23 +687,25 @@ gst_vdp_h264_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, gst_bit_reader_init_from_buffer (&reader, buf); - /* skip nal_length or sync code */ - gst_bit_reader_skip (&reader, h264_dec->nal_length_size * 8); - - if (!gst_bit_reader_get_bits_uint8 (&reader, &forbidden_zero_bit, 1)) + if (gst_bit_reader_get_remaining (&reader) < + h264_dec->nal_length_size * 8 + 7) goto invalid_packet; + + /* skip nal_length or sync code */ + gst_bit_reader_skip_unchecked (&reader, h264_dec->nal_length_size * 8); + + forbidden_zero_bit = gst_bit_reader_get_bits_uint8_unchecked (&reader, 1); + if (forbidden_zero_bit != 0) { GST_WARNING ("forbidden_zero_bit != 0"); return GST_FLOW_ERROR; } - if (!gst_bit_reader_get_bits_uint16 (&reader, &nal_unit.ref_idc, 2)) - goto invalid_packet; + nal_unit.ref_idc = gst_bit_reader_get_bits_uint16_unchecked (&reader, 2); GST_DEBUG ("nal_ref_idc: %u", nal_unit.ref_idc); /* read nal_unit_type */ - if (!gst_bit_reader_get_bits_uint16 (&reader, &nal_unit.type, 5)) - goto invalid_packet; + nal_unit.type = gst_bit_reader_get_bits_uint16_unchecked (&reader, 5); GST_DEBUG ("nal_unit_type: %u", nal_unit.type); if (nal_unit.type == 14 || nal_unit.type == 20) { @@ -716,7 +718,7 @@ gst_vdp_h264_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, size = gst_bit_reader_get_remaining (&reader) / 8; i = size - 1; - while (size > 0 && data[i] == 0x00) { + while ((gint) size > 0 && data[i] == 0x00) { size--; i--; } diff --git a/sys/vdpau/mpeg/gstvdpmpegdec.c b/sys/vdpau/mpeg/gstvdpmpegdec.c index 6a473e48e9..87456eb784 100644 --- a/sys/vdpau/mpeg/gstvdpmpegdec.c +++ b/sys/vdpau/mpeg/gstvdpmpegdec.c @@ -415,12 +415,14 @@ gst_vdp_mpeg_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, GstBitReader b_reader = GST_BIT_READER_INIT_FROM_BUFFER (buf); guint8 start_code; + if (gst_bit_reader_get_remaining (&b_reader) < 8 * 3 + 8) + return GST_FLOW_ERROR; + /* skip sync_code */ - gst_bit_reader_skip (&b_reader, 8 * 3); + gst_bit_reader_skip_unchecked (&b_reader, 8 * 3); /* start_code */ - if (!gst_bit_reader_get_bits_uint8 (&b_reader, &start_code, 8)) - return GST_FLOW_ERROR; + start_code = gst_bit_reader_get_bits_uint8_unchecked (&b_reader, 8); mpeg_frame = GST_VDP_MPEG_FRAME_CAST (frame); @@ -624,8 +626,7 @@ gst_vdp_mpeg_dec_base_init (gpointer gclass) "Decode mpeg stream with vdpau", "Carl-Anton Ingmarsson "); - gst_element_class_add_static_pad_template (element_class, - &sink_template); + gst_element_class_add_static_pad_template (element_class, &sink_template); } /* initialize the vdpaumpegdecoder's class */