Skip to content

Commit 1d38c91

Browse files
committed
Fix VapourSynth audio gap rescaling and terminal gaps
1 parent f09a559 commit 1d38c91

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

VapourSynth/lwlibav_audio_source.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ static int make_gap_list(lwlibav_audio_handler_t* hp, VSMap* out, const VSAPI* v
9090
return 0;
9191
const audio_frame_info_t* info = adhp->frame_list;
9292
int gap_count = 0;
93-
for (uint32_t i = 1; i < adhp->frame_count; i++) {
93+
for (uint32_t i = 1; i <= adhp->frame_count; i++) {
9494
if (info[i].file_offset == -1)
9595
gap_count++;
9696
}
@@ -106,7 +106,7 @@ static int make_gap_list(lwlibav_audio_handler_t* hp, VSMap* out, const VSAPI* v
106106
uint64_t sequence_sample_count = 0;
107107
uint64_t prior_sequence_sample_count = 0;
108108
int gap_index = 0;
109-
for (uint32_t i = 1; i < adhp->frame_count; i++) {
109+
for (uint32_t i = 1; i <= adhp->frame_count; i++) {
110110
if ((current_sample_rate != info[i].sample_rate && info[i].sample_rate > 0) || current_frame_length != info[i].length) {
111111
prior_sequence_sample_count += av_rescale_rnd(
112112
sequence_sample_count, hp->aohp->output_sample_rate, current_sample_rate, AV_ROUND_UP);
@@ -338,7 +338,8 @@ void VS_CC vs_lwlibavaudiosource_create(const VSMap* in, VSMap* out, void* user_
338338
return;
339339
}
340340
if (hp->lwh.av_gap && hp->aohp->output_sample_rate != ctx->sample_rate)
341-
hp->lwh.av_gap = (hp->lwh.av_gap * hp->aohp->output_sample_rate - 1) / ctx->sample_rate + 1;
341+
hp->lwh.av_gap = av_rescale_rnd(
342+
hp->lwh.av_gap, hp->aohp->output_sample_rate, ctx->sample_rate, AV_ROUND_UP);
342343
hp->ai.numSamples += hp->lwh.av_gap;
343344
hp->ai.numFrames = (int)((hp->ai.numSamples + VS_AUDIO_FRAME_SAMPLES - 1) / VS_AUDIO_FRAME_SAMPLES);
344345
if (make_gap_list(hp, out, vsapi) < 0) {

0 commit comments

Comments
 (0)