- // most problematic part: guess audio offset
- viv->audio_sample = av_rescale_q(viv->sb_blocks[i].packet_offset, av_make_q(s->streams[1]->codecpar->sample_rate, 1), av_inv_q(s->streams[0]->time_base));
- // hand-tuned 1.s a/v offset
- viv->audio_sample += s->streams[1]->codecpar->sample_rate;
+ if (viv->num_audio) {
+ const AVCodecParameters *par = s->streams[1]->codecpar;
+ // flush audio packet queue
+ viv->current_audio_subpacket = 0;
+ viv->n_audio_subpackets = 0;
+ // most problematic part: guess audio offset
+ viv->audio_sample = av_rescale_q(viv->sb_blocks[i].packet_offset,
+ av_make_q(par->sample_rate, 1),
+ av_inv_q(s->streams[0]->time_base));
+ // hand-tuned 1.s a/v offset
+ viv->audio_sample += par->sample_rate;
+ }