flacparse: Don't drop the last frame if it is followed by garbage
See bug #631814.
This commit is contained in:
parent
2c7c4fa9e4
commit
274414e3d6
@ -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…
x
Reference in New Issue
Block a user