summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2020-07-02 09:15:08 +0300
committerTim-Philipp Müller <tim@centricular.com>2020-10-14 15:29:31 +0100
commit35ed3dc9c53e178bc469fde2017960c709982e5a (patch)
tree9512167d6d71ec1a4ac5ff25761372d142391eff
parent8fc8117edd759ed12524548c604246cd3bf06d16 (diff)
downloadgstreamer-plugins-good-35ed3dc9c53e178bc469fde2017960c709982e5a.tar.gz
flacenc: Pass audio info from set_format() to query_total_samples() explicitly
This fixes writing of the seek table header. gst_audio_encoder_get_audio_info() will still return old/unset audio info until set_format() has actually returned, which then results in query_total_samples() to always return 0. Thanks to Jacob Kauffmann for debugging this and finding the main cause. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/756 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/661>
-rw-r--r--ext/flac/gstflacenc.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c
index d31de07d8..ff3de47a0 100644
--- a/ext/flac/gstflacenc.c
+++ b/ext/flac/gstflacenc.c
@@ -809,11 +809,10 @@ gst_flac_enc_getcaps (GstAudioEncoder * enc, GstCaps * filter)
}
static guint64
-gst_flac_enc_peer_query_total_samples (GstFlacEnc * flacenc, GstPad * pad)
+gst_flac_enc_peer_query_total_samples (GstFlacEnc * flacenc, GstPad * pad,
+ GstAudioInfo * info)
{
gint64 duration;
- GstAudioInfo *info =
- gst_audio_encoder_get_audio_info (GST_AUDIO_ENCODER (flacenc));
GST_DEBUG_OBJECT (flacenc, "querying peer for DEFAULT format duration");
if (gst_pad_peer_query_duration (pad, GST_FORMAT_DEFAULT, &duration)
@@ -862,7 +861,7 @@ gst_flac_enc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
flacenc->channel_reorder_map);
total_samples = gst_flac_enc_peer_query_total_samples (flacenc,
- GST_AUDIO_ENCODER_SINK_PAD (enc));
+ GST_AUDIO_ENCODER_SINK_PAD (enc), info);
FLAC__stream_encoder_set_bits_per_sample (flacenc->encoder,
GST_AUDIO_INFO_DEPTH (info));