( mpegts_input_t *mi, mpegts_mux_instance_t *mmi, sbuf_t *sb,
int flags, mpegts_pcr_t *pcr )
{
- int len2 = 0, off = 0;
+ int len, len2, off;
mpegts_packet_t *mp;
- uint8_t *tsb = sb->sb_data;
- int len = sb->sb_ptr;
+ uint8_t *tsb;
#define MIN_TS_PKT 100
#define MIN_TS_SYN (5*188)
+retry:
+ len2 = 0;
+ off = 0;
+ tsb = sb->sb_data;
+ len = sb->sb_ptr;
if (len < (MIN_TS_PKT * 188) && (flags & MPEGTS_DATA_CC_RESTART) == 0) {
/* For slow streams, check also against the clock */
if (monocmpfastsec(mclk(), mi->mi_last_dispatch))
/* Adjust buffer */
end:
- if (len && (flags & MPEGTS_DATA_CC_RESTART) == 0)
+ if (len && (flags & MPEGTS_DATA_CC_RESTART) == 0) {
sbuf_cut(sb, off); // cut off the bottom
- else
+ if (sb->sb_ptr >= MIN_TS_PKT * 188)
+ goto retry;
+ } else
sb->sb_ptr = 0; // clear
}