mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-19 00:43:44 +00:00
faac: enforce sync between wrapper view of data and encoder returned data
This commit is contained in:
parent
e2d9bcc22d
commit
2c0dd62abb
1 changed files with 13 additions and 0 deletions
|
@ -601,6 +601,13 @@ gst_faac_push_buffers (GstFaac * faac, gboolean force)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* in case encoder returns more data than is expected (which seems possible)
|
||||||
|
* ignore the extra part */
|
||||||
|
if (G_UNLIKELY (av == 0 && faac->offset == 0)) {
|
||||||
|
gst_buffer_unref (outbuf);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* after some caching, finally some data */
|
/* after some caching, finally some data */
|
||||||
/* adapter gives time */
|
/* adapter gives time */
|
||||||
timestamp = gst_adapter_prev_timestamp (faac->adapter, &distance);
|
timestamp = gst_adapter_prev_timestamp (faac->adapter, &distance);
|
||||||
|
@ -635,6 +642,12 @@ gst_faac_push_buffers (GstFaac * faac, gboolean force)
|
||||||
ret = gst_pad_push (faac->srcpad, outbuf);
|
ret = gst_pad_push (faac->srcpad, outbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* in case encoder returns less than expected, clear our view as well */
|
||||||
|
if (G_UNLIKELY (force)) {
|
||||||
|
gst_adapter_clear (faac->adapter);
|
||||||
|
faac->offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
|
|
Loading…
Reference in a new issue