mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 10:41:04 +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
|
||||
* header, which does not exist */
|
||||
/* For the last frame output everything to the end */
|
||||
if (G_UNLIKELY (gst_base_parse_get_drain (GST_BASE_PARSE (flacparse)))) {
|
||||
guint16 actual_crc = gst_flac_calculate_crc16 (data, size - 2);
|
||||
guint16 expected_crc = GST_READ_UINT16_BE (data + size - 2);
|
||||
if (flacparse->check_frame_checksums) {
|
||||
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;
|
||||
flacparse->block_size = block_size;
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in a new issue