1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:38:12 +00:00
serenity/Userland/Libraries/LibAudio
Zaggy1024 e087d35cd8 LibAudio: Accurately skip MP3 frames using the actual header size
Prevously, the header size was used to calculate the `slot_count` field
of `MP3::Header`, but `build_seek_table()` just used the maximum size
of the header instead, causing it not to seek far enough, and in cases
where a possible sync code occurred two bytes before the next frame, it
would read that possible sync code as if it was a real frame. It would
then either reject it due to bad field values, or could possibly skip
over the next real frame due to a larger calculated frame size in the
bogus frame.

By fixing this issue, we now properly calculate the duration of MP3
files where these fake sync codes occur. In the case of the raw file
for this podcast:

https://changelog.com/podcast/554

the duration goes from 1:21:57 to 1:22:47, which is the real duration
according to the player user interface.
2023-08-26 18:43:23 -04:00
..
CMakeLists.txt LibAudio: Add a FLAC encoder 2023-08-12 12:25:26 -06:00
ConnectionToManagerServer.cpp AudioServer+Userland: Separate audio IPC into normal client and manager 2023-06-25 00:16:44 +02:00
ConnectionToManagerServer.h AudioServer+Userland: Separate audio IPC into normal client and manager 2023-06-25 00:16:44 +02:00
ConnectionToServer.cpp AudioServer+Userland: Decouple client sample rates from device rate 2023-07-01 23:27:24 +01:00
ConnectionToServer.h Userland: Rename Core::Object to Core::EventReceiver 2023-08-06 20:39:51 +02:00
Encoder.h LibAudio: Generalize an encoder interface 2023-08-12 12:25:26 -06:00
FlacLoader.cpp LibAudio: Add a FLAC encoder 2023-08-12 12:25:26 -06:00
FlacLoader.h LibAudio: Optimize FlacLoader by avoiding allocations 2023-07-06 19:13:36 +01:00
FlacTypes.h LibAudio: Add a FLAC encoder 2023-08-12 12:25:26 -06:00
FlacWriter.cpp LibAudio: Write final FLAC audio data instead of discarding it 2023-08-16 01:10:35 +02:00
FlacWriter.h LibAudio: Use channel coupling for stereo FLAC encoding 2023-08-16 01:10:35 +02:00
Forward.h LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
GenericTypes.cpp LibAudio: Don't return a seek point if it is after the desired sample 2023-07-06 14:27:57 +01:00
GenericTypes.h LibAudio: Prevent multiple kinds of buffer overruns in FLAC picture load 2023-07-04 12:47:08 +02:00
Loader.cpp LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
Loader.h LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
LoaderError.h LibAudio: Stop using and remove LOADER_TRY 2023-07-04 13:24:17 -06:00
Metadata.cpp LibAudio: Add a generic audio metadata container 2023-03-13 12:35:17 -04:00
Metadata.h LibAudio: Add a generic audio metadata container 2023-03-13 12:35:17 -04:00
MP3HuffmanTables.h LibAudio: Handle bitstream errors in MP3 Huffman decode 2023-07-02 02:15:32 +02:00
MP3Loader.cpp LibAudio: Accurately skip MP3 frames using the actual header size 2023-08-26 18:43:23 -04:00
MP3Loader.h LibAudio: Skip ID3 tags before synchronizing to MP3 frames 2023-08-26 18:43:23 -04:00
MP3Tables.h LibAudio+LibDSP: Switch samples to 32-bit float instead of 64-bit float 2022-05-07 20:20:16 +02:00
MP3Types.h LibAudio: Accurately skip MP3 frames using the actual header size 2023-08-26 18:43:23 -04:00
MultiChannel.h LibAudio: Optimize FlacLoader by avoiding allocations 2023-07-06 19:13:36 +01:00
PlaybackStream.cpp LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
PlaybackStream.h LibAudio: Create a playback class with a PulseAudio implementation 2023-08-04 13:49:36 -06:00
PlaybackStreamPulseAudio.cpp LibAudio: Remove the strong reference to the PulseAudio control thread 2023-08-07 10:40:34 -06:00
PlaybackStreamPulseAudio.h LibAudio: Remove the strong reference to the PulseAudio control thread 2023-08-07 10:40:34 -06:00
PulseAudioWrappers.cpp LibAudio: Add a test for creating and destructing a PlaybackStream 2023-08-07 10:40:34 -06:00
PulseAudioWrappers.h LibAudio: Add a test for creating and destructing a PlaybackStream 2023-08-07 10:40:34 -06:00
QOALoader.cpp LibAudio: Stop using and remove LOADER_TRY 2023-07-04 13:24:17 -06:00
QOALoader.h LibAudio: Extract loader stream creation from the plugins 2023-06-27 15:28:22 +01:00
QOATypes.cpp LibAudio: Implement the Quite Okay Audio format 2023-03-10 04:07:14 -07:00
QOATypes.h LibAudio: Implement the Quite Okay Audio format 2023-03-10 04:07:14 -07:00
Queue.h LibAudio+Userland: Remove Audio::LegacyBuffer 2022-05-03 23:09:20 +02:00
Resampler.h LibAudio: Tolerate a file sample rate lower than the AudioServer's 2022-12-31 00:04:34 +01:00
RIFFTypes.cpp LibAudio: Load WAV metadata 2023-05-31 16:23:07 +02:00
RIFFTypes.h LibAudio: Load WAV metadata 2023-05-31 16:23:07 +02:00
Sample.h Piano: Use Sample struct from LibDSP 2023-08-04 12:56:27 +02:00
SampleFormats.cpp LibAudio: Add integer sample format-specific support 2023-08-12 12:25:26 -06:00
SampleFormats.h LibAudio: Add integer sample format-specific support 2023-08-12 12:25:26 -06:00
UserSampleQueue.cpp LibAudio: Prevent int overflow in the user buffer queue 2022-12-31 00:08:05 +01:00
UserSampleQueue.h Everywhere: Remove unused includes of AK/Format.h 2023-01-02 20:27:20 -05:00
VorbisComment.cpp LibAudio: Update stream APIs used when reading audio metadata 2023-03-13 12:46:42 -04:00
VorbisComment.h LibAudio: Detect and read FLAC metadata 2023-03-13 12:35:17 -04:00
WavLoader.cpp LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
WavLoader.h LibAudio: Use ReadonlyBytes instead of Bytes for buffer parameters 2023-07-20 08:02:12 +01:00
WavWriter.cpp LibAudio: Use Encoder interface for WavWriter 2023-08-12 12:25:26 -06:00
WavWriter.h LibAudio: Use Encoder interface for WavWriter 2023-08-12 12:25:26 -06:00