1
0
Fork 0
forked from len0rd/rockbox
Commit graph

273 commits

Author SHA1 Message Date
Solomon Peachy
9d3d925295 Revert "RFC: Get rid of mpegplayer plugin"
This reverts commit d25d24812e.

Change-Id: I1563223e343fb1e2eda72a45823b38350025ff93
2022-10-13 11:08:11 -04:00
Solomon Peachy
d25d24812e RFC: Get rid of mpegplayer plugin
It might have made sense once upon a time, but in today's world...

Change-Id: I5d638e6f7a2308c50ab12bd901338f02cf426aae
2022-10-02 11:57:20 -04:00
Solomon Peachy
05149cd4dc Fix a couple of warnings uncovered by GCC12
Change-Id: Ib628a27bfc6f95a822e46b931ccfbed90f41b122
2022-07-11 16:11:29 -04:00
William Wilgus
e1c5a3e296 fix uninitialized warning in libopus
likely this is truly a bug but I imagine much worse things
happen before this point in that case

Change-Id: If78465cf2ae1e5cf38ad7f087dd436b888bc9996
2022-06-21 22:05:17 -04:00
William Wilgus
79864c6ec2 add const to const * strings
I don't think this will amke any difference except maybe for hosted ports

Change-Id: I84f898aea92a6963901a6d889dd18b63f24c9a41
2022-05-03 23:00:58 -04:00
Aidan MacDonald
4dd3c2b33e codecs: m4a: improve seek accuracy
Seeking doesn't work well in M4A files with very few chunks due to
the seek method used (chunk based using the info in the 'stco' atom).
According to libm4a/demux.c the expected seek resolution using this
method is 1/4 to 1/2 seconds. However, ffmpeg generates files with a
1 megabyte chunk size, so the resolution is much worse than expected
on some files: around 30-40 seconds at 256kbps.

There was a bug with the seek position reported back to Rockbox: the
codec pretended it could seek exactly to the requested sample, but it
would only seek to the start of a chunk. This could leave the UI in a
confusing state because the real playback position was different from
what the elapsed time showed. Fix this by recalculating the reported
sample position using the chunk start.

To fix the low seek accuracy, use the table in the 'stsz' atom to skip
individual packets within a chunk. This is very accurate, but it takes
a lot of RAM to allocate the table. Currently the table is not allowed
to use more than half of the codec RAM, which should suffice for short
files on most targets. On files where the table is too large the codec
will fall back to the less accurate chunk-based seek method.

Change-Id: Ide38ea846c1cdd69691e9b1e1cd87eb0fa11cf78
2022-05-02 12:16:21 -04:00
Aidan MacDonald
9e93796407 buffering: remove bufgettail/bufcuttail
These operations can only be used in limited circumstances and have
exactly one user. bufgettail especially seems of dubious value; how
often do you need to read N bytes from the end of a file without
changing the file position?

strip_tags() was the only function using them, to strip off ID3v1
and APE tags off the end of buffered tracks. This would save only
32-192 bytes per track -- if the container format uses APE/ID3v1.
It hardly seems worth the effort.

Change-Id: I8fc3c1408517eda6126e75e76d76daea904b50eb
2022-04-20 16:51:49 -04:00
Aidan MacDonald
fca7b8e2ff Fix undefined behavior that blocks compiling with UBSan
Left shifts are not defined in C if they would cause signed overflow,
so these expressions get instrumented, which makes them unusable as
switch values and triggers compile errors when compiling with UBSan.

Change-Id: I0588d4be1e00ba1cfde0eac119ead368b20d10c9
2022-04-17 11:37:34 -04:00
William Wilgus
01d2979bce [COV] metadata module, fix uninit warnings #2
decrease size hit of initializing asf by using a union
remove init from bytes LE conversion in metadata common
-- bad idea for performance

Change-Id: I4514adc125e5da2b99d9f913ba74afd5f1345822
2022-03-20 09:56:44 -04:00
William Wilgus
2a88ec50cd [COV] metadata module, fix uninit warnings
Change-Id: Ifeb22642d7fb683542ff9dcfca0bc58c91ab5f38
2022-03-20 09:10:57 -04:00
William Wilgus
542609bb31 metadata.c fix red
comma, helpful

Change-Id: Iaa352cf1b542f1b805278af8560a6927684dc8d2
2022-03-14 17:38:55 -04:00
William Wilgus
9b4e784560 BUGFIX string_option parsers
fix bugs introduced in the switch over to using string_option
instead of if else strcmp trees,
embedded album art should work again
skin parser had an error for 'noborder' and 'nobar'

Change-Id: I957d81e5fa8467b33bbd93d63c4428c36100acca
2022-03-14 17:23:18 -04:00
William Wilgus
2352cef6d0 replace more strcmp if then trees with string_option()
1

Change-Id: Ic89bbb2ab41068d09c7bd9caa5ba7f38749b9084
2022-03-13 14:31:02 -04:00
William Wilgus
a62d36d9e7 Warble builds define WARBLE fix metadata_common in warble builds
Change-Id: Ie5115162da5a06d917de09f75b90254bb30b7513
2022-03-13 11:41:30 -04:00
William Wilgus
77e4dd81f5 option_string clean-up and consolidate with metadata_common
Change-Id: I2649f6af37bd871fb8f181ae2f716ff0bcf1f65c
2022-03-13 10:55:47 -04:00
William Wilgus
a9c62f2c39 metadata_common.c optimize parse_tag
Change-Id: I84ad404fdcc9698b9d08e6e9c37929f4b7bf569f
2022-03-13 01:40:42 -05:00
William Wilgus
235e41578b metadata/mp3data.c init vars & add sanity checks
Change-Id: Idface0ea73c4a6f0d46a57bddf77db9475a972f4
2021-08-11 22:40:09 -04:00
William Wilgus
30945f1180 metadata/metadata_common.c check read for proper bytes read
Change-Id: I25d7c20d449cde4d5cfd3f57e00ff45f4c14f60b
2021-08-11 22:25:20 -04:00
William Wilgus
f05a7a10a6 metadata/metadata_common.c WS changes
Change-Id: Ieef86e94676c603a21cbb5af55e63ba628a09cdf
2021-08-11 22:16:19 -04:00
William Wilgus
7aa0e0a898 metadata/asf.c ensure variable init & add sanity checks
Change-Id: If4432549b843cafb000c3fedee12184d75da595b
2021-08-11 22:06:15 -04:00
William Wilgus
e3e72d6dba metadata/mp4.c fix small oversight / bug
didn't set the genre string to null on case entry
means read failure would leave genre string indeterminate

add explicit NULL & leave genre uninitialized

Change-Id: I1452a0b57985646c982ec80755d0df9d03745f1e
2021-08-11 08:29:02 -04:00
William Wilgus
c9e9558044 metadata/mp4.c check for read errors skip buffer appropriately
WIP

Change-Id: I770f0d911f7d9826e89d886892ff3913661a8151
2021-08-11 01:36:32 +00:00
William Wilgus
275c762bb2 As3525 wavpack_enc document some intentional switch fall through
Change-Id: I56bf439df2c05653d65f49238e886e4ef2291176
2021-08-08 09:27:27 -04:00
William Wilgus
0a6d7abd13 metadata/asap.c consolidate read char function and check return values
and a bit of cleanup using macros to make the code easier to follow

Change-Id: I2c5953a68a9f415453e508c14a9c1a5a1e84e6b5
2021-08-07 17:13:09 -04:00
William Wilgus
da778a1783 metadata/asap.c WS cleanup
Change-Id: Id3bc053a45eeea107a54dd47640fa3ceb4b04498
2021-08-07 17:07:32 -04:00
William Wilgus
57293f1fd9 metadata/vfx.c cleanup string and character handling
Change-Id: I7550d6db05b0d31a1433d0af9b2233f9dc3f5ee2
2021-08-07 04:50:14 +00:00
William Wilgus
603e749c1d metadata/smaf.c handle read errors
Change-Id: I450f1fc8e1b69ce09f9888f5384c3e23a93822a1
2021-08-07 02:53:28 +00:00
William Wilgus
8a8fd3d4a3 metadata/mp3data.c set data to 0 in case of read error
Change-Id: I15d4e3d3be4bf4531c892f4351355b0b2e8e0ca9
2021-08-06 20:55:11 -04:00
Aidan MacDonald
6b1b7b6016 Fix use of uninitialized variable in mp4 metadata parser
Change-Id: Idca69e7429af13609785755d4e152d87f471c462
2021-08-06 16:10:41 +00:00
Solomon Peachy
9f0f2c6658 metadata: Fix sign extension in get_uint64_le() routine
Change-Id: Ibd85cf72ac1babd1fa636c341b90b76bdfc0491b
2021-08-05 13:44:39 +00:00
Aidan MacDonald
005c414e5f Document intentional fallthroughs + fix harmless unintended ones
Change-Id: I1ca5b1027ec30cbf61093bab35b980196ed14e6b
2021-08-04 18:59:46 +00:00
William Wilgus
0501af8b06 metadata/flac.c fix potential buffer overrun
Change-Id: Iee12f251455c4fda9d91d10e466d17e5e02046b9
2021-08-02 03:00:01 +00:00
William Wilgus
247731fe8c id3tags.c check for buffer overrun
Change-Id: I74fde8e234fe85abfabefddcea7f10038167c715
2021-08-01 22:29:14 -04:00
Aidan MacDonald
2e9443104f rbcodec: Fix typo in makefile
Hopefully this will fix all those random build failures.

Change-Id: I02ff625c538a21f20b33874b4ab54ed8c893a433
2021-07-25 15:55:36 +01:00
Solomon Peachy
144d1b1e81 misc: Fix up a few warnings uncovered by LTO
* direct use of memcpy() instead of ci->memcpy() in flac and mod
 * uninitialized variable in mpegplayer

Change-Id: I2d08682d5f66c319780e69e3ff63d600c61d8f5a
2021-07-15 18:37:42 +00:00
Solomon Peachy
2e9b93dc5d build: Nuke the ASMFLAGS workaround for gcc 3.4.x
Change-Id: I0f21e9539d39afd54916fa8d84ce798eef474a2c
2021-07-08 20:47:30 -04:00
Solomon Peachy
2ff3425ab1 build: Rename SHARED_LDFLAG to SHARED_LDFLAGS
Change-Id: Icb81c72fbcfcdad624112a386ba38a40a830d18f
2021-07-08 19:53:05 -04:00
Solomon Peachy
2ed4bf8a43 FS#13299: Handle MP3 files with more than 128K of headers before audio data
Encountered a file with ~600K of ID3v1 headers.

Optimize the potential overhead by minimizing reverse seeks.

Change-Id: I972dbf1af1c36659f19c7ab4eed0b9149c642880
2021-06-16 17:37:29 -04:00
Solomon Peachy
fa9ddd5af9 Revert "FS#13299: Simplify VBR frame parsing in the metadata decoder."
This reverts commit 756c0d2ac8.

Change-Id: I5f98972f69e7645239fd9218c9d4eeb9bd2ec7a5
2021-06-16 16:58:47 -04:00
Solomon Peachy
756c0d2ac8 FS#13299: Simplify VBR frame parsing in the metadata decoder.
The old code would seek forward by the frame length, expecting to see a
frame header there, perform a validity check, and then seek back to the
current header.

Unfortunately this doesn't handle situations where there is extra padding
between the frames, leading us to potentially read garbage, causing the
validity tests to fail and rejecting the file outright.

Instead, keep track of the previous valid header/position, and if we find
"valid" headers in a row return the first after seeking back to it.

This change allows the file referenced in FS13299 to be properly parsed, but
further work is needed to get the file to be playable.  (file reports itself
as layer 1, variable bit rate, variable sample rate!)

Change-Id: I85f61a6360cc041a172db4b7a6b5516e5b60ceee
2021-06-13 12:13:03 -04:00
Solomon Peachy
942b1dd072 FS13094: Fix a divide-by-zero crash parsing zero-length WMA/ASF files
Change-Id: I2e90692327c69c4467a586b23b877c596b8d2c40
2021-05-12 18:22:06 -04:00
William Wilgus
14c6bb798d Sync opus codec to upstream git
Change-Id: I0cfcc0005c4ad7bfbb1aaf454188ce70fb043dc1
2021-04-23 14:23:04 +00:00
amachronic
0fb333c85e rbcodec: Fix typo in include guard
Change-Id: I503ace58fb46e803c66b92113d2be7daebeb8b71
2021-04-06 17:27:06 +01:00
Christian Soffke
a8846e3003 Increase id3v2 max item size on high mem targets
As per multiple user requests:
https://forums.rockbox.org/index.php/topic,53319.msg

The acceptable size for id3v2 fields currently maxes out at
240 bytes on targets with more than 2MB of memory.

The comments field, especially for Podcasts, can sometimes
contain significantly more characters than Rockbox allows.

The limit for devices with more than 8MB of memory
is increased to 500 bytes for individual fields, and
to 1800 bytes for the buffer containing all fields.

Change-Id: I4593372229158756f102f67bcc4a43e64f632d58
2021-03-22 02:50:51 +00:00
Solomon Peachy
2628155fc9 Clean up places that use #if defined(CPU_ARM | CPU_COLDFIRE | CPU_MIPS)
Since that encompasses _all_ of our native targets in a post-archos world,
either replace it with #if (CONFIG_PLATFORM & PLATFORM_NATIVE) or
delete it altogher as appropriate.

Change-Id: I9128a456e850d5c96a9e05806aad3acd923f90c5
2021-03-04 14:14:33 +00:00
William Wilgus
2cde135cfe flac fix dumb typo
Change-Id: Ic6269ca35374bcb1d6a5ad2c1848a1718fa4e01c
2021-03-03 02:58:34 +00:00
William Wilgus
118191479d Nudge flac towards upstream FS#13266 -- Fix the Yellow still?
Change-Id: I76056b1a682db055857d759d2ebffae111a8a4c0
2021-03-02 19:47:07 -05:00
William Wilgus
2252bde144 Nudge flac towards upstream FS#13266 -- Fix Yellow
unused variables

Change-Id: I69e1435941da6207c75d0f3cb862dee296a5cc1a
2021-03-02 19:20:39 -05:00
William Wilgus
a017219488 Nudge flac towards upstream FS#13266
Some flac encoded files contain junk that our decoder
picked up

upstream has some sign and overflow fixes too

Change-Id: I5857b2fe56906a48f04944cdfee8fe2306f2c3fd
2021-03-02 23:48:05 +00:00
Solomon Peachy
7418ec5009 FS#13267: Fix crash when enabling Perceptual Bass Enhancment during playback
I think the assumption is that during playback, the DSP is already running
so it assumes PBE needs to be flushed before it is properly enabled.

Change-Id: I2bac3d02c80f97c8d9ce26a575175f6344a8e86a
2021-03-01 19:02:22 +00:00