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, drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
GST_SECOND, rate))); GST_SECOND, rate)));
self->drop_samples = drop_samples; self->drop_samples = drop_samples;
return ret; discont = FALSE;
} else if (new_offset > self->current_offset + avail_samples) { } else if (new_offset > self->current_offset + avail_samples) {
guint64 silence_samples = guint64 silence_samples =
new_offset - (self->current_offset + avail_samples); new_offset - (self->current_offset + avail_samples);
@ -604,7 +604,7 @@ gst_audio_buffer_split_handle_discont (GstAudioBufferSplit * self,
silence_samples -= n_samples; silence_samples -= n_samples;
} }
return ret; discont = FALSE;
} }
} else if (new_offset < self->current_offset + avail_samples) { } else if (new_offset < self->current_offset + avail_samples) {
guint64 drop_samples = self->current_offset + avail_samples - new_offset; 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, drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
GST_SECOND, rate))); GST_SECOND, rate)));
self->drop_samples = drop_samples; self->drop_samples = drop_samples;
return ret; discont = FALSE;
} }
} }
/* We might end up in here also in gapless mode, if the above code decided if (discont) {
* that no silence is to be inserted, because e.g. the gap is too big */ /* We might end up in here also in gapless mode, if the above code decided
GST_DEBUG_OBJECT (self, "Got %s: Current running time %" GST_TIME_FORMAT * that no silence is to be inserted, because e.g. the gap is too big */
", current end running time %" GST_TIME_FORMAT GST_DEBUG_OBJECT (self,
", running time after discont %" GST_TIME_FORMAT, "Got %s: Current running time %" GST_TIME_FORMAT
self->current_offset == -1 ? "first buffer" : "discont", ", current end running time %" GST_TIME_FORMAT
GST_TIME_ARGS (current_rt), GST_TIME_ARGS (current_rt_end), ", running time after discont %" GST_TIME_FORMAT,
GST_TIME_ARGS (input_rt)); 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) { if (self->strict_buffer_size) {
gst_adapter_clear (self->adapter); gst_adapter_clear (self->adapter);
ret = GST_FLOW_OK; ret = GST_FLOW_OK;
} else { } else {
ret = gst_audio_buffer_split_output (self, TRUE, rate, bpf, ret =
samples_per_buffer); 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; return ret;
} }
@ -723,18 +739,6 @@ gst_audio_buffer_split_sink_chain (GstPad * pad, GstObject * parent,
return ret; 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 = buffer =
gst_audio_buffer_split_clip_buffer_start_for_gapless (self, buffer, rate, gst_audio_buffer_split_clip_buffer_start_for_gapless (self, buffer, rate,
bpf); bpf);