+ stream_timing_t *st = find_st( r, buf );
+
+ if ( st )
+ {
+ // if this isn't the video stream or we don't
+ // have audio yet then generate a new scr
+ if ( st != r->stream_timing ||
+ r->stream_timing[1].id == -1 )
+ {
+ new_scr_offset( r, buf );
+ }
+ else
+ {
+ // defer the scr change until we get some
+ // audio since audio has a timestamp per
+ // frame but video doesn't. Clear the timestamps
+ // so the decoder will regenerate them from
+ // the frame durations.
+ buf->start = -1;
+ buf->renderOffset = -1;
+ }
+ }
+ else
+ {
+ // we got a new scr at the same time as the first
+ // packet of a stream we've never seen before. We
+ // have no idea what the timing should be so toss
+ // this buffer & wait for a stream we've already seen.
+ hb_buffer_close( &buf );
+ continue;
+ }