- if (s->start) {
- av_dict_set(&insamples->metadata, "lavfi.silence_end",
- av_ts2timestr(insamples->pts, &time_base), 0);
- av_dict_set(&insamples->metadata, "lavfi.silence_duration",
- av_ts2timestr(insamples->pts - s->start, &time_base), 0);
- av_log(s, AV_LOG_INFO,
- "silence_end: %s | silence_duration: %s\n",
- get_metadata_val(insamples, "lavfi.silence_end"),
- get_metadata_val(insamples, "lavfi.silence_duration"));
+ if (s->start[channel] > INT64_MIN) {
+ int64_t end_pts = insamples ? insamples->pts + av_rescale_q(current_sample / s->channels,
+ (AVRational){ 1, s->last_sample_rate }, time_base)
+ : s->frame_end;
+ int64_t duration_ts = end_pts - s->start[channel];
+ if (insamples) {
+ set_meta(insamples, s->mono ? channel + 1 : 0, "silence_end",
+ av_ts2timestr(end_pts, &time_base));
+ set_meta(insamples, s->mono ? channel + 1 : 0, "silence_duration",
+ av_ts2timestr(duration_ts, &time_base));
+ }
+ if (s->mono)
+ av_log(s, AV_LOG_INFO, "channel: %d | ", channel);
+ av_log(s, AV_LOG_INFO, "silence_end: %s | silence_duration: %s\n",
+ av_ts2timestr(end_pts, &time_base),
+ av_ts2timestr(duration_ts, &time_base));