opusparse: do not drop preskip and gain from OpusHead header

https://bugzilla.gnome.org/show_bug.cgi?id=753275
This commit is contained in:
Vincent Penquerc'h 2017-05-05 11:05:40 +01:00
parent c91689db2a
commit 413406d28a

View file

@ -366,28 +366,20 @@ gst_opus_parse_parse_frame (GstBaseParse * base, GstBaseParseFrame * frame)
}
if (!(frame->flags & GST_BASE_PARSE_FRAME_FLAG_QUEUE)) {
if (FALSE && parse->id_header && parse->comment_header) {
guint16 pre_skip;
gst_buffer_map (parse->id_header, &map, GST_MAP_READWRITE);
pre_skip = GST_READ_UINT16_LE (map.data + 10);
if (pre_skip != parse->pre_skip) {
GST_DEBUG_OBJECT (parse,
"Fixing up pre-skip %u -> %" G_GUINT64_FORMAT, pre_skip,
parse->pre_skip);
GST_WRITE_UINT16_LE (map.data + 10, parse->pre_skip);
}
gst_buffer_unmap (parse->id_header, &map);
caps =
gst_codec_utils_opus_create_caps_from_header (parse->id_header,
parse->comment_header);
} else {
GstCaps *sink_caps;
guint32 sample_rate = 48000;
guint8 n_channels, n_streams, n_stereo_streams, channel_mapping_family;
guint8 channel_mapping[256];
GstBuffer *id_header;
guint16 pre_skip = 0;
gint16 gain = 0;
if (parse->id_header) {
gst_buffer_map (parse->id_header, &map, GST_MAP_READWRITE);
pre_skip = GST_READ_UINT16_LE (map.data + 10);
gain = GST_READ_UINT16_LE (map.data + 16);
gst_buffer_unmap (parse->id_header, &map);
}
sink_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (parse));
if (!sink_caps
@ -409,10 +401,9 @@ gst_opus_parse_parse_frame (GstBaseParse * base, GstBaseParseFrame * frame)
id_header =
gst_codec_utils_opus_create_header (sample_rate, n_channels,
channel_mapping_family, n_streams, n_stereo_streams,
channel_mapping, parse->pre_skip, 0);
channel_mapping, pre_skip, gain);
caps = gst_codec_utils_opus_create_caps_from_header (id_header, NULL);
gst_buffer_unref (id_header);
}
gst_buffer_replace (&parse->id_header, NULL);
gst_buffer_replace (&parse->comment_header, NULL);