- if( pkt_ts != AV_NOPTS_VALUE )
- curr_pos = ffmpeg->to_secs(pkt_ts - nudge, st->time_base) * sample_rate + 0.5;
+ if( pkt_ts != AV_NOPTS_VALUE ) {
+ double ts = ffmpeg->to_secs(pkt_ts - nudge, st->time_base);
+ double t = (double)curr_pos / sample_rate;
+// some time_base clocks are very grainy, too grainy for audio (clicks, pops)
+ if( fabs(ts - t) > AUDIO_PTS_TOLERANCE )
+ curr_pos = ts * sample_rate + 0.5;
+ }