int fragment_size;
pa_simple *s;
int64_t pts;
+ int64_t frame_duration;
} PulseData;
static pa_sample_format_t codec_id_to_pulse_format(int codec_id) {
av_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */
pd->pts = AV_NOPTS_VALUE;
+ pd->frame_duration = (pd->frame_size * 1000000LL * 8) /
+ (pd->sample_rate * pd->channels * av_get_bits_per_sample(codec_id));
return 0;
}
PulseData *pd = s->priv_data;
int res;
pa_usec_t latency;
- uint64_t frame_duration =
- (pd->frame_size*1000000LL) / (pd->sample_rate * pd->channels);
if (av_new_packet(pkt, pd->frame_size) < 0) {
return AVERROR(ENOMEM);
pkt->pts = pd->pts;
- pd->pts += frame_duration;
+ pd->pts += pd->frame_duration;
return 0;
}