Revert "audiobuffersplit: Update out_segment even without discont"

This reverts commit c0dc65d40a.
This commit is contained in:
Tim-Philipp Müller 2024-02-15 15:37:11 +00:00
parent 9426eaae6a
commit 28b64bc28a

View file

@ -564,7 +564,7 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
GST_SECOND, rate)));
self->drop_samples = drop_samples;
return ret;
discont = FALSE;
} else if (new_offset > self->current_offset + avail_samples) {
guint64 silence_samples =
new_offset - (self->current_offset + avail_samples);
@ -604,7 +604,7 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
silence_samples -= n_samples;
}
return ret;
discont = FALSE;
}
} else if (new_offset < self->current_offset + avail_samples) {
guint64 drop_samples = self->current_offset + avail_samples - new_offset;
@ -614,32 +614,48 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
GST_SECOND, rate)));
self->drop_samples = drop_samples;
return ret;
discont = FALSE;
}
}
/* We might end up in here also in gapless mode, if the above code decided
* that no silence is to be inserted, because e.g. the gap is too big */
GST_DEBUG_OBJECT (self, "Got %s: Current running time %" GST_TIME_FORMAT
", current end running time %" GST_TIME_FORMAT
", running time after discont %" GST_TIME_FORMAT,
self->current_offset == -1 ? "first buffer" : "discont",
GST_TIME_ARGS (current_rt), GST_TIME_ARGS (current_rt_end),
GST_TIME_ARGS (input_rt));
if (discont) {
/* We might end up in here also in gapless mode, if the above code decided
* that no silence is to be inserted, because e.g. the gap is too big */
GST_DEBUG_OBJECT (self,
"Got %s: Current running time %" GST_TIME_FORMAT
", current end running time %" GST_TIME_FORMAT
", running time after discont %" GST_TIME_FORMAT,
self->current_offset == -1 ? "first buffer" : "discont",
GST_TIME_ARGS (current_rt),
GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
if (self->strict_buffer_size) {
gst_adapter_clear (self->adapter);
ret = GST_FLOW_OK;
} else {
ret = gst_audio_buffer_split_output (self, TRUE, rate, bpf,
samples_per_buffer);
if (self->strict_buffer_size) {
gst_adapter_clear (self->adapter);
ret = GST_FLOW_OK;
} else {
ret =
gst_audio_buffer_split_output (self, TRUE, rate, bpf,
samples_per_buffer);
}
self->current_offset = 0;
self->accumulated_error = 0;
self->resync_pts = GST_BUFFER_PTS (buffer);
self->resync_rt = input_rt;
if (self->segment_pending) {
GstEvent *event;
self->out_segment = self->in_segment;
GST_DEBUG_OBJECT (self, "Updating output segment %" GST_SEGMENT_FORMAT,
&self->out_segment);
event = gst_event_new_segment (&self->out_segment);
gst_event_set_seqnum (event, self->segment_seqnum);
gst_pad_push_event (self->srcpad, event);
self->segment_pending = FALSE;
}
}
self->current_offset = 0;
self->accumulated_error = 0;
self->resync_pts = GST_BUFFER_PTS (buffer);
self->resync_rt = input_rt;
return ret;
}
@ -723,18 +739,6 @@ gst_audio_buffer_split_sink_chain (GstPad * pad, GstObject * parent,
return ret;
}
if (self->segment_pending) {
GstEvent *event;
self->out_segment = self->in_segment;
GST_DEBUG_OBJECT (self, "Updating output segment %" GST_SEGMENT_FORMAT,
&self->out_segment);
event = gst_event_new_segment (&self->out_segment);
gst_event_set_seqnum (event, self->segment_seqnum);
gst_pad_push_event (self->srcpad, event);
self->segment_pending = FALSE;
}
buffer =
gst_audio_buffer_split_clip_buffer_start_for_gapless (self, buffer, rate,
bpf);