If output size == input size, just pass through buffer
Original commit message from CVS: If output size == input size, just pass through buffer
This commit is contained in:
parent
c5d1baf05a
commit
4f5c32f140
@ -266,22 +266,27 @@ GST_DEBUG(0,"size=%ld from=%dx%d to=%dx%d newsize=%d",
|
|||||||
videoscale->targetwidth, videoscale->targetheight,
|
videoscale->targetwidth, videoscale->targetheight,
|
||||||
videoscale->targetwidth*videoscale->targetheight + videoscale->targetwidth*videoscale->targetheight/2);
|
videoscale->targetwidth*videoscale->targetheight + videoscale->targetwidth*videoscale->targetheight/2);
|
||||||
|
|
||||||
outbuf = gst_buffer_new();
|
if(videoscale->targetwidth==videoscale->width &&
|
||||||
/* XXX this is wrong for anything but I420 */
|
videoscale->targetheight==videoscale->height){
|
||||||
GST_BUFFER_SIZE(outbuf) = videoscale->targetwidth*videoscale->targetheight +
|
gst_pad_push(videoscale->srcpad, buf);
|
||||||
|
}else{
|
||||||
|
outbuf = gst_buffer_new();
|
||||||
|
/* XXX this is wrong for anything but I420 */
|
||||||
|
GST_BUFFER_SIZE(outbuf) = videoscale->targetwidth*videoscale->targetheight +
|
||||||
videoscale->targetwidth*videoscale->targetheight/2;
|
videoscale->targetwidth*videoscale->targetheight/2;
|
||||||
GST_BUFFER_DATA(outbuf) = g_malloc (videoscale->targetwidth*videoscale->targetheight*2);
|
GST_BUFFER_DATA(outbuf) = g_malloc (videoscale->targetwidth*videoscale->targetheight*2);
|
||||||
GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
|
GST_BUFFER_TIMESTAMP(outbuf) = GST_BUFFER_TIMESTAMP(buf);
|
||||||
|
|
||||||
/*g_return_if_fail(videoscale->scale_cc != NULL); */
|
/*g_return_if_fail(videoscale->scale_cc != NULL); */
|
||||||
videoscale->scale_cc(videoscale, data, GST_BUFFER_DATA(outbuf));
|
videoscale->scale_cc(videoscale, data, GST_BUFFER_DATA(outbuf));
|
||||||
|
|
||||||
GST_DEBUG (0,"gst_videoscale_chain: pushing buffer of %d bytes in '%s'",GST_BUFFER_SIZE(outbuf),
|
GST_DEBUG (0,"gst_videoscale_chain: pushing buffer of %d bytes in '%s'",GST_BUFFER_SIZE(outbuf),
|
||||||
GST_OBJECT_NAME (videoscale));
|
GST_OBJECT_NAME (videoscale));
|
||||||
|
|
||||||
gst_pad_push(videoscale->srcpad, outbuf);
|
gst_pad_push(videoscale->srcpad, outbuf);
|
||||||
|
|
||||||
gst_buffer_unref(buf);
|
gst_buffer_unref(buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user