Merge remote-tracking branch 'origin/0.10'
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 6 Apr 2012 12:52:12 +0000 (14:52 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 6 Apr 2012 12:52:12 +0000 (14:52 +0200)
Conflicts:
gst/h264parse/gsth264parse.c
gst/videoparsers/gsth264parse.c

1  2 
gst/videoparsers/gsth264parse.c

@@@ -1577,43 -1489,47 +1577,45 @@@ gst_h264_parse_pre_push_frame (GstBaseP
            GstByteWriter bw;
            GstBuffer *new_buf;
            const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE;
+           gboolean ok;
  
 -          gst_byte_writer_init_with_size (&bw, GST_BUFFER_SIZE (buffer), FALSE);
 -          ok = gst_byte_writer_put_data (&bw, GST_BUFFER_DATA (buffer),
 -              h264parse->idr_pos);
 +          gst_byte_writer_init_with_size (&bw, gst_buffer_get_size (buffer),
 +              FALSE);
-           gst_byte_writer_put_buffer_unchecked (&bw, buffer, 0,
-               h264parse->idr_pos);
++          ok = gst_byte_writer_put_buffer (&bw, buffer, 0, 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])) {
 +              gsize nal_size = gst_buffer_get_size (codec_nal);
                GST_DEBUG_OBJECT (h264parse, "inserting SPS nal");
-               gst_byte_writer_put_uint32_be_unchecked (&bw, bs ? 1 : nal_size);
-               gst_byte_writer_put_buffer_unchecked (&bw, codec_nal, 0,
-                   nal_size);
 -              ok &= gst_byte_writer_put_uint32_be (&bw,
 -                  bs ? 1 : GST_BUFFER_SIZE (codec_nal));
 -              ok &= gst_byte_writer_put_data (&bw,
 -                  GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal));
++              ok &= gst_byte_writer_put_uint32_be (&bw, bs ? 1 : nal_size);
++              ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
                h264parse->last_report = new_ts;
              }
            }
            for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
              if ((codec_nal = h264parse->pps_nals[i])) {
 +              gsize nal_size = gst_buffer_get_size (codec_nal);
                GST_DEBUG_OBJECT (h264parse, "inserting PPS nal");
-               gst_byte_writer_put_uint32_be_unchecked (&bw, bs ? 1 : nal_size);
-               gst_byte_writer_put_buffer_unchecked (&bw, codec_nal, 0,
-                   nal_size);
 -              ok &= gst_byte_writer_put_uint32_be (&bw,
 -                  bs ? 1 : GST_BUFFER_SIZE (codec_nal));
 -              ok &= gst_byte_writer_put_data (&bw,
 -                  GST_BUFFER_DATA (codec_nal), GST_BUFFER_SIZE (codec_nal));
++              ok &= gst_byte_writer_put_uint32_be (&bw, bs ? 1 : nal_size);
++              ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
                h264parse->last_report = new_ts;
              }
            }
-           gst_byte_writer_put_buffer_unchecked (&bw, buffer, h264parse->idr_pos,
-               -1);
 -          ok &= gst_byte_writer_put_data (&bw,
 -              GST_BUFFER_DATA (buffer) + h264parse->idr_pos,
 -              GST_BUFFER_SIZE (buffer) - h264parse->idr_pos);
++          ok &=
++              gst_byte_writer_put_buffer (&bw, buffer, h264parse->idr_pos, -1);
            /* collect result and push */
            new_buf = gst_byte_writer_reset_and_get_buffer (&bw);
 -          gst_buffer_copy_metadata (new_buf, buffer, GST_BUFFER_COPY_ALL);
 +          gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_METADATA, 0,
 +              -1);
            /* should already be keyframe/IDR, but it may not have been,
             * so mark it as such to avoid being discarded by picky decoder */
            GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_DELTA_UNIT);
 -          gst_buffer_replace (&frame->buffer, new_buf);
 +          gst_buffer_replace (&frame->out_buffer, new_buf);
            gst_buffer_unref (new_buf);
+           /* some result checking seems to make some compilers happy */
+           if (G_UNLIKELY (!ok)) {
+             GST_ERROR_OBJECT (h264parse, "failed to insert SPS/PPS");
+           }
          }
        }
        /* we pushed whatever we had */