mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-15 20:44:16 +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;
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
/* adapter gives time */
|
||||
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);
|
||||
}
|
||||
|
||||
/* 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;
|
||||
|
||||
/* ERRORS */
|
||||
|
|
Loading…
Reference in a new issue