Best way to implement is-live/do-timestamp appsrc that respects duration of incoming buffers

Best way to implement is-live/do-timestamp appsrc that respects duration of incoming buffers

Hey list!

I am consuming an API that provides me with some raw AAC
buffers and all I know is the duration of those buffers. They are
provided in bursts (so I get ~30 seconds worth of buffers at a time)

However, when I push them on an appsrc that is live with do-timestamp
enabled they all bunch up. Since they are marked with the pipeline time
the PTS is wrong. If I try to audioresample or audiorate those buffers
they are destroyed from all the dropping, because once decoded they have
a duration that makes them overlap with the next buffers PTS.

The best solution I have found is to do something like
```
std::thread([aac_appsrc]() {
GstBuffer *buff;
for (;;) {
// Allocate my GstBuffer and fill it with data, this will
// block until data is available

There is some discontinuity with this solution, but it is the closest I
have gotten. The only other thing I could think of is filling out the PTS
in the need-data callback for the appsrc, but I can't get the timestamps
right. I don't know the latency/pipeline time etc... so my buffers are always late
to the sink and get dropped.

So does anyone have a better solution for pushing blocks of data onto
the appsrc, and having it make sure to properly space the PTS out so
that I can resample/audiorate?