1This file does not list all bugs which: 2 3- are known but rarely encountered, 4- are not visible to the user, 5- are programming errors detectable only with the aid of testing tools, 6- are benign, or 7- have been reported but not yet confirmed to be attributable to MOC. 8 9It also does not contain many "To Do" items as these are often quite fluid 10and can evolve rapidly over time. 11 12The MOC Maintainer does hold a master list containing bugs, feature requests, 13program change requests and future requirements, and once it is possible to 14generate this file from that list automatically it may be updated more 15frequently so it is current and comprehensive. 16 17 18Known Bugs: 19 20* Character set problems: 21 - Do we assume filesystem in UTF-8? It's incorrect. 22 - id3tags v2.3 with UTF-16 are not properly handled by libid3tag, taglib 23 has no problems. Need to use libtag here? 24 - Recognition of ID3 tags v1 is broken (example: small.mp3). [node/234] 25 - Perhaps MOC can add support for the frame field_type to differentiate 26 between ID3_FIELD_TYPE_LATIN1 and ID3_FIELD_TYPE_STRING. [node/234] 27 - Some national characters in file and directory names don't get displayed 28 correctly. 29* Program crashes: 30 - I have a problem with MOC 2.4.0 on FreeBSD 6.1-PRERELEASE. When I build 31 MOC with musepack (libmpcdec) support MOC always core dumps on exit. 32 (This may have been fixed by other storage-related patches and will be 33 removed in MOC 2.7 if no one has confirmed it still exists.) 34 - Using DB_THREAD in combination with DB_CREATE and DB_PRIVATE seems to 35 cause a segfault on OpenWRT. The circumvention is to configure MOC on 36 OpenWRT with '--disable-cache' or set the MOC configuration option 37 'TagsCacheSize' to zero. 38* Valgrind-detected memory problems: 39 - libasound: memory leaks 40 - libdb: uninitialised parameter storage 41 - libffmpeg: uninitialised storage in conditions and reads 42 - libgme: uninitialised storage in conditions and reads 43 - libmagic: uninitialised storage in reads 44 - librcc: uninitialised storage in conditions 45 - libspeex: uninitialised storage in conditions and reads 46 - The problems above occur in libraries but it needs to be determined 47 whether they somehow arise from MOC's misuse of them. 48 - There are many data race and mutex handling problems (particularly 49 around the time of file-to-file transitions), but these are not visible 50 to the users and difficult to solve without compromising gapless playback. 51* Directory and playlists: 52 - When sorting by file name (directories), put files beginning with a 53 non-alphanumeric character at the top. 54 - mocp -a playlist.pls should not sort added files. [node/240] 55 - Client does not show changes when a file's tags are updated by another 56 program. 57 - Client continues to show file names after ReadTags is toggled when 58 MOC is started with 'ShowTime=yes' and 'ReadTags=no'. 59* Decoder problems: 60 - Seeking in some formats does not work in the FFmpeg decoder because of 61 the limitations of the FFmpeg libraries (and seeking is disabled for 62 them). FLV also has seeking issues and is disabled but will be enabled 63 if SEEK_IN_DECODER is set in the FFmpeg decoder plug-in. (This may be 64 parameterised in due course.) 65 - Some decoders do not currently pass the MD5 sum or sample count checks. 66 - The duration of some AAC audios is incorrectly reported. This problem 67 arises from the limitations of the format, but MOC now makes much more 68 accurate guesses. 69 70 71Transitional Code Removal (after 2.5): 72 73* Remove deprecated option TagsIconv. 74* Remove changed option name for OSSMixerChannel. 75* Remove changed option name for ALSAMixer. 76* Remove changed option type for SidPlay2_StartAtStart. 77* Remove changed option type for SidPlay2_PlaySubTunes. 78* Remove changed option type for QueueNextSongReturn. 79* Remove changed option type for SoundDriver. 80* Remove changed option format for Layouts. 81* Remove deprecated autogen.sh file. 82* Remove POSIX.1-2001 minimum compliance requirement warning. 83* Remove ISO C99 capable compiler requirement warning. 84* Remove Autoconf version 2.64 requirement warning. 85* Remove FLAC version 1.1.3 requirement warning. 86* Remove FFmpeg/LibAV raised requirement warning. 87* Remove Berkeley DB version 4.1 requirement warning. 88* Remove libcurl version 7.15.1 requirement warning. 89* Remove ALSA version 1.0.11 requirement warning. 90* Remove POPT requirement warning. 91* Remove TagLib version 1.5 requirement warning. 92* Remove Musepack libmpc (instead of libmpcdec) requirement warning. 93* Remove XZ requirement warning. 94 95 96FFmpeg/LibAV Support Changes (after 2.5): 97 98* Remove deprecated ffmpeg-config support. 99* Raise minimum FFmpeg/LibAV requirement to version 1.0/10.0. 100* Remove supporting code for previous releases. 101 102 103Pending 2.6 Changes: 104 105* Require at least FLAC version 1.1.3. 106* Require POSIX.1-2001 minimum compliance. 107* Require ISO C99 capable compiler. 108* Require at least Autoconf version 2.64. 109* Require at least Berkeley DB version 4.1. 110* Require at least libcurl version 7.15.1. 111* Require at least ALSA version 1.0.11. 112* Require the POPT library (libpopt). 113* Require at least TagLib version 1.5. 114* Require Musepack libmpc (instead of libmpcdec). 115* Replace curl-config version checking with pkg-config. 116* Make XZ the default compression for the 'make dist' target. 117 118 119Pending 2.7 Changes: 120 121* Remove FreeBSD program crash bug if no one has confirmed it still exists. 122* Remove 'ALSAStutterDefeat' start-up warning. 123 124 125Future Wishlist (items marked with $ are bigger changes requiring more time): 126 127* Move TODO to moc.daper.net/roadmap . 128* A string-valued variable "TitleFormatString", similar to "FormatString". 129 I'd suggest all the same %-escapes, plus: 130 %F -- expands to (the expansion of) the current FormatString 131 if there is a song playing or paused, and empty string if stopped. 132 %S -- expands to play/stop/pause. 133* Command line option to play from a specified file/first from the last 134 added files. [node/286] 135* Multiple file selection to move many files at once up and down. [node/288] 136* Review strcat()/strcpy()/sprintf() usage, change to 137 strncat()/strncpy()/snprintf() where possible. 138* More side menus: many directory/playlist views. 139* LADSPA/LV2 140* Editing the title of an item on the playlist (for Internet streams). 141*$ Media library: tree-like menu for artists and albums. 142* Seek by a % value (also using keys for 10%, 20%, etc). 143* Ability to play from a playlist made of items found after searching. 144* JACK: intelligent behaviour when we get disconnected from the server 145 - detect it, try connect and exit if it fails. 146* FastGo instead of FastDir: go to a directory, URL or a playlist. 147* Read tags for sndfile formats. 148*$ http://www.peercast.org/ 149* Crossfade. 150* Command to see all information about a file with all tags, also all 151 information about an internet stream (from IceCast headers like icy-url, 152 icy-pub). 153*$ Lyrics downloaded from the Internet. 154* lirc. 155* Don't use PATH_MAX. 156* Seek forward using the content of the output buffer. 157*$ Locales. 158*$ Song ratings or something like Q in XMMS. 159* Configurable sorting. 160* Add a key for switching sort modes. 161*$ Equalizer like in Beep Media Player 162*$ Make equal volume level for every song like in http://volnorm.sourceforge.net 163*$ Replaygain. 164* Seek to arbitrary position (by typing a number). 165*$ VQF (like http://www.csn.ul.ie/~mel/projects/linux/vqfplugin/). 166*$ ESD. 167*$ CUE-sheet. 168* Command line option to delete the currently played item from the playlist. 169* Scripting. 170* Some options can be changed at run-time using a menu. 171* posix_fadvise() with POSIX_FADV_WILLNEED instead of the input buffer thread 172 for files. 173* Recording played sound to a file. 174* Upgrade TiMidity decoder plug-in to TiMidity++. This would add support 175 for soundfonts (.sf2) which are now more common. 176 177 178Maybe Never: 179 180* Say about ignored options that affects server when the server is not being 181 run. 182* Funny ASCII equalizer. 183* Mouse support. [node/743] 184