audioaggregator: improve readability in offset calculation

Don't reuse the offset variables will contain a sample offset for an
intermediate time value. Instead add a segment_pos variable of type
GstClockTime for this. Use The clock-time macros to check if we got
a valid time.
This commit is contained in:
Stefan Sauer 2017-10-15 10:29:20 +02:00
parent 17dfaf83dc
commit 7e4efce310

View file

@ -866,8 +866,9 @@ gst_audio_aggregator_queue_new_buffer (GstAudioAggregator * aagg,
if (pad->priv->output_offset == -1) {
GstClockTime start_running_time;
GstClockTime end_running_time;
guint64 start_output_offset;
guint64 end_output_offset;
GstClockTime segment_pos;
guint64 start_output_offset = -1;
guint64 end_output_offset = -1;
start_running_time =
gst_segment_to_running_time (&aggpad->segment,
@ -877,20 +878,20 @@ gst_audio_aggregator_queue_new_buffer (GstAudioAggregator * aagg,
GST_FORMAT_TIME, end_time);
/* Convert to position in the output segment */
start_output_offset =
segment_pos =
gst_segment_position_from_running_time (&agg->segment, GST_FORMAT_TIME,
start_running_time);
if (start_output_offset != -1)
if (GST_CLOCK_TIME_IS_VALID (segment_pos))
start_output_offset =
gst_util_uint64_scale (start_output_offset - agg->segment.start, rate,
gst_util_uint64_scale (segment_pos - agg->segment.start, rate,
GST_SECOND);
end_output_offset =
segment_pos =
gst_segment_position_from_running_time (&agg->segment, GST_FORMAT_TIME,
end_running_time);
if (end_output_offset != -1)
if (GST_CLOCK_TIME_IS_VALID (segment_pos))
end_output_offset =
gst_util_uint64_scale (end_output_offset - agg->segment.start, rate,
gst_util_uint64_scale (segment_pos - agg->segment.start, rate,
GST_SECOND);
if (start_output_offset == -1 && end_output_offset == -1) {