mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 00:36:51 +00:00
Revert "audiobuffersplit: Update out_segment even without discont"
This reverts commit c0dc65d40a
.
This commit is contained in:
parent
9426eaae6a
commit
28b64bc28a
1 changed files with 38 additions and 34 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue