mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-28 04:31:06 +00:00
flacparse: Don't drop the last frame if it is followed by garbage
See bug #631814.
This commit is contained in:
parent
6e1d65d788
commit
f576c3f128
1 changed files with 10 additions and 5 deletions
|
@ -620,13 +620,18 @@ gst_flac_parse_frame_is_valid (GstFlacParse * flacparse, GstBuffer * buffer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For the last frame check the CRC16 instead of the following
|
/* For the last frame output everything to the end */
|
||||||
* header, which does not exist */
|
|
||||||
if (G_UNLIKELY (gst_base_parse_get_drain (GST_BASE_PARSE (flacparse)))) {
|
if (G_UNLIKELY (gst_base_parse_get_drain (GST_BASE_PARSE (flacparse)))) {
|
||||||
guint16 actual_crc = gst_flac_calculate_crc16 (data, size - 2);
|
if (flacparse->check_frame_checksums) {
|
||||||
guint16 expected_crc = GST_READ_UINT16_BE (data + size - 2);
|
guint16 actual_crc = gst_flac_calculate_crc16 (data, size - 2);
|
||||||
|
guint16 expected_crc = GST_READ_UINT16_BE (data + size - 2);
|
||||||
|
|
||||||
if (actual_crc == expected_crc) {
|
if (actual_crc == expected_crc) {
|
||||||
|
*ret = size;
|
||||||
|
flacparse->block_size = block_size;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
*ret = size;
|
*ret = size;
|
||||||
flacparse->block_size = block_size;
|
flacparse->block_size = block_size;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue