Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'Rockbox:master' into master

authored by

Tsiry Sandratraina and committed by
GitHub
9ab6c282 8166aa9f

+84 -6
+4
apps/features.txt
··· 229 229 disk_storage 230 230 #endif 231 231 232 + #if (CONFIG_STORAGE & STORAGE_SD) 233 + sd_storage 234 + #endif 235 + 232 236 #if defined(HAS_REMOTE_BUTTON_HOLD) 233 237 remote_button_hold 234 238 #endif
+7 -3
apps/playback.c
··· 58 58 #include "pcm_mixer.h" 59 59 #endif 60 60 61 + #ifdef SIMULATOR 62 + #include <strings.h> 63 + #endif 64 + 61 65 /* TODO: The audio thread really is doing multitasking of acting like a 62 66 consumer and producer of tracks. It may be advantageous to better 63 67 logically separate the two functions. I won't go that far just yet. */ ··· 1269 1273 } 1270 1274 id3->skip_resume_adjustments = skip_resume_adjustments; 1271 1275 } 1272 - 1276 + 1273 1277 id3_write(PLAYING_ID3, id3); 1274 1278 1275 1279 if (!resume_info && id3) ··· 2761 2765 skip_pending = TRACK_SKIP_AUTO; 2762 2766 2763 2767 int id3_hid = 0; 2764 - if (audio_can_change_track(&trackstat, &id3_hid)) 2768 + if (audio_can_change_track(&trackstat, &id3_hid)) 2765 2769 { 2766 2770 audio_begin_track_change( 2767 2771 single_mode_do_pause(id3_hid) ··· 3243 3247 bool finish_load = cur_info.audio_hid < 0; 3244 3248 if (finish_load) 3245 3249 { 3246 - // track is not yet loaded so simply update resume details for upcoming finish_load_track and quit 3250 + // track is not yet loaded so simply update resume details for upcoming finish_load_track and quit 3247 3251 playing_id3_sync(&cur_info, &(struct audio_resume_info){ time, 0 }, true); 3248 3252 return; 3249 3253 }
+3 -1
firmware/asm/thread.h
··· 46 46 * give a decent amount of space and hope for the best... 47 47 * FIXME: this isn't a great solution. */ 48 48 #undef MINSIGSTKSZ 49 - #define MINSIGSTKSZ 16384 49 + #endif 50 + #ifndef MINSIGSTKSZ 51 + #define MINSIGSTKSZ 16384 50 52 #endif 51 53 /* MINSIGSTKSZ for the OS to deliver the signal + 0x3000 for us */ 52 54 #define DEFAULT_STACK_SIZE (MINSIGSTKSZ+0x3000) /* Bytes */
+12
firmware/export/config.h
··· 635 635 #endif 636 636 #endif 637 637 638 + #if defined(__PCTOOL__) || defined(SIMULATOR) 639 + #ifndef CONFIG_PLATFORM 640 + #define CONFIG_PLATFORM PLATFORM_HOSTED 641 + #endif 642 + #endif 643 + 638 644 #ifndef CONFIG_PLATFORM 639 645 #define CONFIG_PLATFORM PLATFORM_NATIVE 640 646 #endif ··· 1256 1262 #ifndef SIMULATOR 1257 1263 #if defined(HAVE_USBSTACK) || (CONFIG_STORAGE & STORAGE_NAND) || (CONFIG_STORAGE & STORAGE_RAMDISK) 1258 1264 #define STORAGE_GET_INFO 1265 + #endif 1266 + #endif 1267 + 1268 + #if defined(HAVE_SIGALTSTACK_THREADS) 1269 + #ifndef _XOPEN_SOURCE 1270 + #define _XOPEN_SOURCE 600 /* For sigaltstack */ 1259 1271 #endif 1260 1272 #endif 1261 1273
+1 -1
firmware/include/string-extra.h
··· 30 30 #include "memset16.h" 31 31 32 32 #if defined(WIN32) || defined(APPLICATION) \ 33 - || defined(__PCTOOL__) 33 + || defined(__PCTOOL__) || defined(SIMULATOR) 34 34 #ifndef mempcpy 35 35 #define mempcpy __builtin_mempcpy 36 36 #endif
-1
firmware/target/hosted/sdl/pcm-sdl.c
··· 104 104 105 105 void pcm_play_dma_start(const void *addr, size_t size) 106 106 { 107 - pcm_dma_apply_settings_nolock(); 108 107 109 108 pcm_data = addr; 110 109 pcm_data_size = size;
+5
lib/rbcodec/metadata/aac.c
··· 132 132 } 133 133 #endif 134 134 } 135 + else 136 + { 137 + return false; 138 + } 139 + 135 140 entry->length = (unsigned long)((entry->filesize * 8LL + (entry->bitrate >> 1)) / entry->bitrate); 136 141 137 142 return true;
+52
manual/getting_started/installation.tex
··· 268 268 \end{description} 269 269 } 270 270 271 + \subsection{Storage/Capacity Limits} 272 + 273 + \opt{disk_storage}{ 274 + Rockbox supports very large drive capacities when used with GPT partitioning on devices that utilize ATA storage, but due to the limitations of the FAT32 filesystem, individual paritions cannot exceed 2TiB. Additionally, there may be underlying platform limitations that make it difficult, if not impossible, utilize a drive larger than some arbitrary size or boot from a drive using GPT partitioning. 275 + 276 + \opt{ipod6g}{ 277 + For example, the stock Apple firmware on earlier 6th generation iPod Classic models\footnote{MB029, MB145, MB147, MB150} is limited to drives no larger than 128GiB, and booting into the Apple firmware firmware with larger drive sizes will result in massive data corruption. Later 6th generation iPod Classic models\footnote{MB562, MB565, MC293, MC297} (sometimes referred to as ``7th gen'') do not have this issue. Rockbox itself will function correctly on all 6th/7th generation iPod Classi models. 278 + } 279 + 280 + \note{In practice, no Rockbox-capable device can currently handle total drive capacities exceeding 2TiB.} 281 + } 282 + 283 + \opt{sd_storage}{ 284 + Rockbox does not currently support SDUC cards, ie those with capacities 285 + exceeding 2TiB. However, this is purely a software limitation with 286 + Rockbox's SD card drivers, and will be addressed in a future release. 287 + 288 + \note{SD cards exceeding 32GiB are pre-formated using the exFAT filesystem with GPT paritioning. 289 + Before they can be used with Rockbox, they must be reformatted with FAT32.} 290 + } 291 + 292 + \opt{disk_storage,sd_storage}{ 293 + \note{The disk format utility included with all versions Microsoft Windows released to date will refuse to create/format FAT32 partitons exceeding 32GiB, so users of larger storage devices will need an alternative tool. Options include GParted Live\footnote{\url{https://gparted.org/}}\opt{ipod}{ or performing a restore using iTunes on Windows}. \opt{sd_storage}{Addtionally, devices that support removable storage typically have a built-in format tool that can be used.}} 294 + } 295 + 296 + \opt{disk_storage}{ 297 + \subsection{Flash/SSD mods} 298 + It is common to replace the device's original mechanical hard drive with 299 + some sort of solid-state storage. Older versions of Rockbox (3.15 or prior) do \emph{not} work properly with many 300 + of these so-called ``flash mods'', the most common symptom being data corruption on write-heavy operations. All 301 + known data integrity issues have been resolved, but each type of adapter still has its own quirks: 302 + \begin{description} 303 + \item[Compact Flash.] True Compact Flash cards \emph{natively} implement the ATA command set, including 304 + advanced power management and the \emph{removeable} attribute. They are performant, reliable, and physically 305 + robust, but tend to be expensive and not available in larger sizes. 306 + \item[SATA.] These are fast, reliable, and available in high capacities, but are typically optimized for high performance 307 + at the expense of power consumption.. However, as they implement the full ATA command set, we are able 308 + to aggressively power them down when not being actively used. 309 + \item[Single Secure Digital (SD).] While these adapters come in different form factors from multiple vendors, 310 + they are all based on the same basic design. The ATA command set is incompletely emulated, notably lacking 311 + support for the \emph{mandatory} ATA power management commands that Rockbox uses to flush caches and safely 312 + transition the device in and out of low power states. Additionally, SD cards vary widely in quality 313 + and power consumption with the resultant effects on data longevity and battery life. Finally, these SD adapters do not support 2TiB or larger SDUC cards. 314 + \item[Dual/Quad SD.] These are similar to the above, only allowing use of mulitiple SD cards to 315 + increase the overall storage capacity. While typically described as JBOD\footnote{Just a Bunch Of Disks}, this is not accurate as each card is not individually accessable. Instead, the adapter claims to be to be a single logical drive of the combined capacity of the individual cards in a RAID0-like manner. Consquently, if any one card fails, all data on all other cards is most likely permenantly lost. Given the quality and power management concerns mentioned earlier, this means use of multiple SD cards in one of these adapters is the least reliable/robust and the most power hungry of the various SSD mods. Finally, in another violation of the ATA specification, these ATA-SD adapters fail to properly support LBA48 addressing, meaning that no matter which combination of cards is used, they simply will not work if their combined capacity exceeds 2TiB. 316 + \end{description} 317 + 318 + \note{All of these flash/SSD mods take up less physical space in the device enclosure than the original hard drive, so care must be taken to ensure they are securely mounted and resistant to the vibration and impacts that typically occur in portable devices. Ribbon cables are particularly vulnerable.} 319 + 320 + It is also worth noting that you will not likely see improved data transfer rates when using solid-state storage; the underlying \dap{} hardware is simply too slow to materially benefit. However, the improved access times should help the \dap{} to feel much more responsive. 321 + } 322 + 271 323 \section{Installing Rockbox}\label{sec:installing_rockbox}\index{Installation} 272 324 There are two ways to install Rockbox: automated and manual. The automated 273 325 way is the preferred method of installing Rockbox for the majority of