2020-07-13 14:52:02 +00:00
|
|
|
# Note! This is used by the www.rockbox.org infrastructure
|
|
|
|
# to know what targets/etc should be displayed, built, and so forth.
|
|
|
|
#
|
2019-10-28 04:54:52 +00:00
|
|
|
$publicrelease="3.15";
|
|
|
|
$releasedate="15 Nov 2019";
|
|
|
|
$releasenotes="/wiki/ReleaseNotes315";
|
2009-12-07 12:20:56 +00:00
|
|
|
|
2020-07-11 14:05:40 +00:00
|
|
|
################################################################
|
|
|
|
|
|
|
|
# 'modelname' => {
|
2020-04-07 12:36:37 +00:00
|
|
|
# name => 'Full Name',
|
2020-05-20 18:34:06 +00:00
|
|
|
# status => 1, # 0=retired, 1=unusable, 2=unstable, 3=stable
|
2020-04-07 12:36:37 +00:00
|
|
|
# ram => 2, # optional (used?)
|
|
|
|
# manual => 'modelname2', # optional (uses modelname2's manual)
|
|
|
|
# icon => 'modelname3', # optional (uses modelname3's icon)
|
2020-07-11 14:05:40 +00:00
|
|
|
# voice => 'modelname4' # optional (uses modelname4's voice)
|
2020-04-07 12:36:37 +00:00
|
|
|
# release => '3.14', # optional (final release version, if different from above)
|
|
|
|
# }
|
|
|
|
|
2009-12-07 12:20:56 +00:00
|
|
|
%builds = (
|
|
|
|
'archosfmrecorder' => {
|
|
|
|
name => 'Archos FM Recorder',
|
2020-07-15 23:40:55 +00:00
|
|
|
status => 0,
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2020-07-15 23:40:55 +00:00
|
|
|
release => '3.15',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'archosondiofm' => {
|
|
|
|
name => 'Archos Ondio FM',
|
2020-07-15 23:40:55 +00:00
|
|
|
status => 0,
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2020-07-15 23:40:55 +00:00
|
|
|
release => '3.15',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'archosondiosp' => {
|
|
|
|
name => 'Archos Ondio SP',
|
2020-07-15 23:40:55 +00:00
|
|
|
status => 0,
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2020-07-15 23:40:55 +00:00
|
|
|
release => '3.15',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'archosplayer' => {
|
|
|
|
name => 'Archos Player/Studio',
|
2020-07-15 23:40:55 +00:00
|
|
|
status => 0,
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2020-07-15 23:40:55 +00:00
|
|
|
release => '3.15',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'archosrecorder' => {
|
|
|
|
name => 'Archos Recorder v1',
|
2020-05-20 18:34:06 +00:00
|
|
|
status => 0, # Has not compiled since 2013
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2020-05-19 01:40:11 +00:00
|
|
|
release => '3.13', # Haven't had a proper release since then.
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'archosrecorderv2' => {
|
2020-04-07 12:36:37 +00:00
|
|
|
name => 'Archos Recorder v2',
|
2020-07-15 23:40:55 +00:00
|
|
|
status => 0,
|
2009-12-10 19:50:25 +00:00
|
|
|
ram => 2,
|
2009-12-17 13:53:17 +00:00
|
|
|
manual => "archosfmrecorder",
|
2020-07-15 23:40:55 +00:00
|
|
|
release => '3.15',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'cowond2' => {
|
|
|
|
name => 'Cowon D2',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'gigabeatfx' => {
|
|
|
|
name => 'Toshiba Gigabeat F/X',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'gigabeats' => {
|
|
|
|
name => 'Toshiba Gigabeat S',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'gogearhdd1630' => {
|
|
|
|
name => 'Philips GoGear HDD1630',
|
2016-09-22 20:28:42 +00:00
|
|
|
status => 3,
|
2010-11-02 21:46:59 +00:00
|
|
|
},
|
2010-11-02 21:58:19 +00:00
|
|
|
'gogearhdd6330' => {
|
|
|
|
name => 'Philips GoGear HDD6330',
|
2016-09-22 20:28:42 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'gogearsa9200' => {
|
|
|
|
name => 'Philips GoGear SA9200',
|
2016-09-22 20:28:42 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
2013-05-18 14:57:16 +00:00
|
|
|
'hifietma9' => {
|
|
|
|
name => 'HiFi E.T MA9',
|
|
|
|
status => 2,
|
|
|
|
},
|
2013-11-05 07:24:50 +00:00
|
|
|
'hifietma9c' => {
|
|
|
|
name => 'HiFi E.T MA9C',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'hifietma8' => {
|
|
|
|
name => 'HiFi E.T MA8',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'hifietma8c' => {
|
|
|
|
name => 'HiFi E.T MA8C',
|
|
|
|
status => 2,
|
|
|
|
},
|
2012-04-20 10:49:35 +00:00
|
|
|
'hifimanhm60x' => {
|
|
|
|
name => 'HiFiMAN HM-60x',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'hifimanhm801' => {
|
|
|
|
name => 'HiFiMAN HM-801',
|
|
|
|
status => 2,
|
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'iaudio7' => {
|
|
|
|
name => 'iAudio 7',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'iaudiom3' => {
|
|
|
|
name => 'iAudio M3',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iaudiom5' => {
|
|
|
|
name => 'iAudio M5',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iaudiox5' => {
|
|
|
|
name => 'iAudio X5',
|
|
|
|
status => 3,
|
|
|
|
},
|
2015-02-21 14:05:16 +00:00
|
|
|
'ibassodx50' => {
|
|
|
|
name => 'iBasso DX50',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'ibassodx90' => {
|
|
|
|
name => 'iBasso DX90',
|
|
|
|
status => 2,
|
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'ipod1g2g' => {
|
|
|
|
name => 'iPod 1st and 2nd gen',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipod3g' => {
|
|
|
|
name => 'iPod 3rd gen',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipod4g' => {
|
|
|
|
name => 'iPod 4th gen Grayscale',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipodcolor' => {
|
|
|
|
name => 'iPod color/Photo',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipodmini1g' => {
|
|
|
|
name => 'iPod Mini 1st gen',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipodmini2g' => {
|
|
|
|
name => 'iPod Mini 2nd gen',
|
|
|
|
status => 3,
|
|
|
|
icon => 'ipodmini1g',
|
2009-12-15 20:42:24 +00:00
|
|
|
manual => 'ipodmini1g',
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'ipodnano1g' => {
|
|
|
|
name => 'iPod Nano 1st gen',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'ipodnano2g' => {
|
|
|
|
name => 'iPod Nano 2nd gen',
|
2017-04-30 23:55:20 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
2010-10-30 21:50:20 +00:00
|
|
|
'ipodvideo' => {
|
|
|
|
name => 'iPod Video',
|
2009-12-07 12:20:56 +00:00
|
|
|
status => 3,
|
|
|
|
},
|
2012-07-01 19:06:52 +00:00
|
|
|
'ipod6g' => {
|
|
|
|
name => 'iPod 6th gen (Classic)',
|
2019-10-28 04:07:23 +00:00
|
|
|
status => 3,
|
2012-07-01 19:06:52 +00:00
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'iriverh10' => {
|
|
|
|
name => 'iriver H10 20GB',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iriverh10_5gb' => {
|
|
|
|
name => 'iriver H10 5GB',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iriverh100' => {
|
|
|
|
name => 'iriver H100/115',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iriverh120' => {
|
|
|
|
name => 'iriver H120/140',
|
|
|
|
status => 3,
|
|
|
|
icon => 'iriverh100',
|
|
|
|
manual => 'iriverh100',
|
|
|
|
},
|
|
|
|
'iriverh300' => {
|
|
|
|
name => 'iriver H320/340',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'iriverifp7xx' => {
|
|
|
|
name => 'iriver iFP-7xx',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'logikdax' => {
|
|
|
|
name => 'Logik DAX',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'lyreproto1' => {
|
|
|
|
name => 'Lyre Prototype 1',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'mini2440' => {
|
|
|
|
name => 'Mini 2440',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'meizum3' => {
|
|
|
|
name => 'Meizu M3',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'meizum6sl' => {
|
|
|
|
name => 'Meizu M6SL',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'meizum6sp' => {
|
|
|
|
name => 'Meizu M6SP',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'mrobe100' => {
|
|
|
|
name => 'Olympus M-Robe 100',
|
2014-01-12 23:58:24 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'mrobe500' => {
|
|
|
|
name => 'Olympus M-Robe 500',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'ondavx747' => {
|
|
|
|
name => 'Onda VX747',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'ondavx747p' => {
|
|
|
|
name => 'Onda VX747+',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'ondavx767' => {
|
|
|
|
name => 'Onda VX767',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'ondavx777' => {
|
|
|
|
name => 'Onda VX777',
|
|
|
|
status => 1,
|
|
|
|
},
|
2012-04-20 10:49:35 +00:00
|
|
|
'rk27generic' => {
|
|
|
|
name => 'Rockchip rk27xx',
|
|
|
|
status => 1,
|
2012-04-20 13:23:49 +00:00
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'samsungyh820' => {
|
|
|
|
name => 'Samsung YH-820',
|
2016-09-22 19:48:01 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'samsungyh920' => {
|
|
|
|
name => 'Samsung YH-920',
|
2016-09-22 19:48:01 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'samsungyh925' => {
|
|
|
|
name => 'Samsung YH-925',
|
2016-09-22 19:48:01 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
2012-01-29 12:54:46 +00:00
|
|
|
'samsungypr0' => {
|
|
|
|
name => 'Samsung YP-R0',
|
|
|
|
status => 2,
|
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'samsungyps3' => {
|
|
|
|
name => 'Samsung YP-S3',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'sansac100' => {
|
|
|
|
name => 'SanDisk Sansa c100',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'sansac200' => {
|
|
|
|
name => 'SanDisk Sansa c200',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'sansac200v2' => {
|
|
|
|
name => 'SanDisk Sansa c200 v2',
|
2012-03-28 22:03:04 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
icon => 'sansac200',
|
|
|
|
},
|
|
|
|
'sansaclip' => {
|
2010-03-25 20:16:34 +00:00
|
|
|
name => 'SanDisk Sansa Clip v1',
|
2010-09-06 18:48:04 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
|
|
|
'sansaclipv2' => {
|
|
|
|
name => 'SanDisk Sansa Clip v2',
|
2010-10-30 13:55:20 +00:00
|
|
|
status => 3,
|
2010-03-24 20:28:10 +00:00
|
|
|
icon => 'sansaclip',
|
|
|
|
},
|
|
|
|
'sansaclipplus' => {
|
|
|
|
name => 'SanDisk Sansa Clip+',
|
2010-10-30 13:55:20 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
2011-10-31 20:35:11 +00:00
|
|
|
'sansaclipzip' => {
|
|
|
|
name => 'SanDisk Sansa Clip Zip',
|
2013-02-09 15:36:19 +00:00
|
|
|
status => 3,
|
2011-10-31 20:35:11 +00:00
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'sansae200' => {
|
|
|
|
name => 'SanDisk Sansa e200',
|
|
|
|
status => 3,
|
|
|
|
},
|
|
|
|
'sansae200v2' => {
|
|
|
|
name => 'SanDisk Sansa e200 v2',
|
2010-02-03 21:11:39 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
icon => 'sansae200',
|
|
|
|
},
|
|
|
|
'sansafuze' => {
|
|
|
|
name => 'SanDisk Sansa Fuze',
|
2010-02-03 21:11:39 +00:00
|
|
|
status => 3,
|
2009-12-07 12:20:56 +00:00
|
|
|
},
|
2010-04-01 07:26:47 +00:00
|
|
|
'sansafuzev2' => {
|
|
|
|
name => 'SanDisk Sansa Fuze v2',
|
2010-10-30 13:55:20 +00:00
|
|
|
status => 3,
|
2010-04-01 07:26:47 +00:00
|
|
|
icon => 'sansafuze',
|
|
|
|
},
|
2012-01-27 19:19:07 +00:00
|
|
|
'sansafuzeplus' => {
|
|
|
|
name => 'SanDisk Sansa Fuze+',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 3,
|
2012-01-27 19:41:04 +00:00
|
|
|
icon => 'sansafuzeplus',
|
2012-01-27 19:19:07 +00:00
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'sansam200' => {
|
|
|
|
name => 'SanDisk Sansa m200',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'sansam200v4' => {
|
|
|
|
name => 'SanDisk Sansa m200 v4',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'sansaview' => {
|
|
|
|
name => 'SanDisk Sansa View',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'tatungtpj1022' => {
|
|
|
|
name => 'Tatung Elio TPJ-1022',
|
|
|
|
status => 1,
|
|
|
|
},
|
2010-02-18 10:30:00 +00:00
|
|
|
'vibe500' => {
|
|
|
|
name => 'Packard Bell Vibe 500',
|
2010-05-15 19:24:28 +00:00
|
|
|
status => 3,
|
2010-02-18 10:30:00 +00:00
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
'zenvision' => {
|
|
|
|
name => 'Creative Zen Vision',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'zenvisionm30gb' => {
|
|
|
|
name => 'Creative Zen Vision:M 30GB',
|
|
|
|
status => 1,
|
|
|
|
},
|
|
|
|
'zenvisionm60gb' => {
|
|
|
|
name => 'Creative Zen Vision:M 60GB',
|
|
|
|
status => 1,
|
|
|
|
},
|
2010-09-15 08:34:48 +00:00
|
|
|
'mpiohd200' => {
|
2010-04-29 20:09:19 +00:00
|
|
|
name => 'MPIO HD200',
|
2010-08-08 18:22:44 +00:00
|
|
|
status => 2,
|
2010-04-29 20:09:19 +00:00
|
|
|
},
|
2010-11-29 09:33:26 +00:00
|
|
|
'mpiohd300' => {
|
|
|
|
name => 'MPIO HD300',
|
2012-03-10 13:26:31 +00:00
|
|
|
status => 3,
|
2010-11-29 09:33:26 +00:00
|
|
|
},
|
2013-10-02 15:08:15 +00:00
|
|
|
'creativezenxfi2' => {
|
|
|
|
name => 'Creative Zen X-Fi2',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 2,
|
2013-10-02 15:08:15 +00:00
|
|
|
},
|
|
|
|
'creativezenxfi3' => {
|
|
|
|
name => 'Creative Zen X-Fi3',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 3,
|
2013-10-02 15:08:15 +00:00
|
|
|
},
|
2017-09-17 21:49:07 +00:00
|
|
|
'sonynwze350' => {
|
|
|
|
name => 'Sony NWZ-E350',
|
|
|
|
status => 2,
|
|
|
|
},
|
2013-10-02 15:08:15 +00:00
|
|
|
'sonynwze360' => {
|
|
|
|
name => 'Sony NWZ-E360',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 3,
|
2013-10-02 15:08:15 +00:00
|
|
|
},
|
|
|
|
'sonynwze370' => {
|
2016-09-21 19:39:46 +00:00
|
|
|
name => 'Sony NWZ-E370/E380',
|
|
|
|
status => 3,
|
2013-10-02 15:08:15 +00:00
|
|
|
},
|
2017-09-06 16:00:49 +00:00
|
|
|
'sonynwze450' => {
|
|
|
|
name => 'Sony NWZ-E450',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'sonynwze460' => {
|
|
|
|
name => 'Sony NWZ-E460',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'sonynwze470' => {
|
|
|
|
name => 'Sony NWZ-E470',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'sonynwze580' => {
|
|
|
|
name => 'Sony NWZ-E580',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'sonynwza10' => {
|
|
|
|
name => 'Sony NWZ-A10',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'sonynwa20' => {
|
|
|
|
name => 'Sony NW-A20',
|
|
|
|
status => 2,
|
|
|
|
},
|
2017-09-16 22:09:07 +00:00
|
|
|
'sonynwza860' => {
|
|
|
|
name => 'Sony NWZ-A860',
|
|
|
|
status => 2,
|
|
|
|
},
|
2017-09-17 12:35:58 +00:00
|
|
|
'sonynwzs750' => {
|
|
|
|
name => 'Sony NWZ-S750',
|
|
|
|
status => 2,
|
|
|
|
},
|
2013-11-12 16:24:20 +00:00
|
|
|
'creativezenxfi' => {
|
|
|
|
name => 'Creative Zen X-Fi',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 3
|
|
|
|
},
|
|
|
|
'creativezenxfistyle' => {
|
|
|
|
name => 'Creative Zen X-Fi Style',
|
|
|
|
status => 3
|
2013-11-12 16:24:20 +00:00
|
|
|
},
|
|
|
|
'creativezen' => {
|
|
|
|
name => 'Creative Zen',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 2
|
2013-11-12 16:24:20 +00:00
|
|
|
},
|
|
|
|
'creativezenmozaic' => {
|
|
|
|
name => 'Creative Zen Mozaic',
|
2016-09-21 19:39:46 +00:00
|
|
|
status => 3
|
2013-11-12 16:24:20 +00:00
|
|
|
},
|
2018-06-14 09:29:02 +00:00
|
|
|
'agptekrocker' => {
|
|
|
|
name => 'Agptek Rocker',
|
|
|
|
status => 2
|
2018-07-29 16:05:16 +00:00
|
|
|
},
|
2018-06-28 10:24:26 +00:00
|
|
|
'xduoox3' => {
|
|
|
|
name => 'xDuoo X3',
|
|
|
|
status => 2,
|
|
|
|
},
|
2020-04-07 12:36:37 +00:00
|
|
|
'xduoox3ii' => {
|
|
|
|
name => 'xDuoo X3ii',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'xduoox20' => {
|
|
|
|
name => 'xDuoo X20',
|
|
|
|
status => 2,
|
|
|
|
},
|
2018-06-29 20:09:28 +00:00
|
|
|
'ihifi770' => {
|
|
|
|
name => 'Xuelin iHIFI 770',
|
|
|
|
status => 2,
|
|
|
|
},
|
2020-04-12 01:45:11 +00:00
|
|
|
'ihifi770c' => {
|
2018-06-29 20:09:28 +00:00
|
|
|
name => 'Xuelin iHIFI 770C',
|
|
|
|
status => 2,
|
|
|
|
},
|
|
|
|
'ihifi800' => {
|
|
|
|
name => 'Xuelin iHIFI 800',
|
|
|
|
status => 2,
|
|
|
|
},
|
2009-12-07 12:20:56 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
sub manualname {
|
|
|
|
my $m = shift @_;
|
|
|
|
|
|
|
|
return $builds{$m}{manual} ? "$builds{$m}{manual}" : $m;
|
2020-04-07 12:36:37 +00:00
|
|
|
}
|
2009-12-07 12:20:56 +00:00
|
|
|
|
|
|
|
sub voicename {
|
|
|
|
my $m = shift @_;
|
|
|
|
|
|
|
|
return $builds{$m}{voice} ? "$builds{$m}{voice}" : $m;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub byname {
|
2009-12-07 12:51:34 +00:00
|
|
|
return uc $builds{$a}{name} cmp uc $builds{$b}{name};
|
2009-12-07 12:20:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub usablebuilds {
|
|
|
|
my @list;
|
|
|
|
|
|
|
|
for my $b (sort byname keys %builds) {
|
|
|
|
push @list, $b if ($builds{$b}{status} >= 2);
|
|
|
|
}
|
|
|
|
|
|
|
|
return @list;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub stablebuilds {
|
|
|
|
my @list;
|
|
|
|
|
|
|
|
for my $b (sort byname keys %builds) {
|
2012-09-10 21:22:01 +00:00
|
|
|
push @list, $b if ($builds{$b}{status} >= 3) or $builds{$b}{release};
|
2009-12-07 12:20:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return @list;
|
|
|
|
}
|
|
|
|
|
2012-02-25 14:26:11 +00:00
|
|
|
sub allbuilds {
|
|
|
|
my @list;
|
|
|
|
|
|
|
|
for my $b (sort byname keys %builds) {
|
|
|
|
push @list, $b if ($builds{$b}{status} >= 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
return @list;
|
|
|
|
}
|
|
|
|
|
2020-07-11 14:05:40 +00:00
|
|
|
################################################################
|
|
|
|
|
|
|
|
# 'voicename' => {
|
|
|
|
# lang => 'langname', # source rockbox .lang file
|
|
|
|
# name => 'Native Name ( English Name )', # descriptive text
|
2020-07-13 14:52:02 +00:00
|
|
|
# short => 'xx', # short iso621-ish text
|
2020-07-11 14:05:40 +00:00
|
|
|
# defengine => 'enginename', # which engine to prefer
|
|
|
|
# engines => { # supported engines
|
2020-07-13 14:52:02 +00:00
|
|
|
# enginenamea = '-opt1=x -opt2=y', # options for enginea
|
|
|
|
# enginenameb = '-lang=xx', # options for engineb
|
2020-07-11 14:05:40 +00:00
|
|
|
# },
|
2020-07-13 14:52:02 +00:00
|
|
|
# enabled => 1, # set to 0 or leave out to disable
|
2020-07-11 14:05:40 +00:00
|
|
|
# }
|
|
|
|
|
|
|
|
# A single source language file can have many voice variants.
|
|
|
|
# For example, Mandarin and Cantonese use the same "Chinese" script.
|
|
|
|
# Also, different genders or regional accents for the same language
|
|
|
|
|
|
|
|
%voices = (
|
2020-07-13 14:52:02 +00:00
|
|
|
# UK English always comes first; it's the "master"
|
2020-07-11 14:05:40 +00:00
|
|
|
'english' => {
|
|
|
|
'lang' => 'english',
|
|
|
|
'name' => 'UK English',
|
2020-07-13 14:52:02 +00:00
|
|
|
'short' => 'en-gb',
|
2020-07-11 14:05:40 +00:00
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'festival' => '--language english',
|
2020-07-13 14:52:02 +00:00
|
|
|
'espeak' => '-ven-gb -k 5',
|
2020-07-11 14:05:40 +00:00
|
|
|
'gtts' => '-l en-gb',
|
|
|
|
},
|
2020-07-13 14:52:02 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 14:05:40 +00:00
|
|
|
},
|
2020-07-11 17:52:14 +00:00
|
|
|
# Everything else in alphabetical order
|
2020-07-11 15:21:26 +00:00
|
|
|
'deutsch' => {
|
|
|
|
'lang' => 'deutsch',
|
|
|
|
'name' => 'Deutsch (German)',
|
|
|
|
'short' => 'de',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vde',
|
|
|
|
'gtts' => '-l de',
|
|
|
|
},
|
|
|
|
},
|
2020-07-11 14:05:40 +00:00
|
|
|
'english-us' => {
|
|
|
|
'lang' => 'english-us',
|
|
|
|
'name' => 'American English',
|
|
|
|
'short' => 'en-us',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'festival' => '--language english',
|
2020-07-13 14:52:02 +00:00
|
|
|
'espeak' => '-ven-us -k 5',
|
2020-07-11 14:05:40 +00:00
|
|
|
'gtts' => '-l en-us',
|
|
|
|
},
|
2020-07-13 14:52:02 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 14:05:40 +00:00
|
|
|
},
|
2020-07-25 00:31:52 +00:00
|
|
|
'francais' => {
|
|
|
|
'lang' => 'francais',
|
|
|
|
'name' => 'Français (French)',
|
|
|
|
'short' => 'fr',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vfr-fr',
|
|
|
|
'gtts' => '-l fr',
|
|
|
|
},
|
|
|
|
'enabled' => 1,
|
|
|
|
},
|
2020-07-11 14:05:40 +00:00
|
|
|
'greek' => {
|
|
|
|
'lang' => 'greek',
|
|
|
|
'name' => 'Ελληνικά (Greek)',
|
|
|
|
'short' => 'el',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vel',
|
|
|
|
'gtts' => '-l el',
|
|
|
|
},
|
2020-07-13 19:59:00 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 14:05:40 +00:00
|
|
|
},
|
2020-07-11 15:21:26 +00:00
|
|
|
'italiano' => {
|
|
|
|
'lang' => 'italiano',
|
|
|
|
'name' => 'Italiano (Italian)',
|
|
|
|
'short' => 'it',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vit',
|
|
|
|
'gtts' => '-l it',
|
|
|
|
},
|
2020-07-14 16:10:15 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 15:21:26 +00:00
|
|
|
},
|
|
|
|
'norsk' => {
|
|
|
|
'lang' => 'norsk',
|
|
|
|
'name' => 'Norsk (Norwegian)',
|
|
|
|
'short' => 'no',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vno',
|
|
|
|
'gtts' => '-l no',
|
|
|
|
},
|
|
|
|
},
|
2020-07-11 14:05:40 +00:00
|
|
|
'polski' => {
|
|
|
|
'lang' => 'polski',
|
|
|
|
'name' => 'Polski (Polish)',
|
|
|
|
'short' => 'pl',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vpl',
|
|
|
|
'gtts' => '-l pl',
|
|
|
|
},
|
2020-07-13 14:52:02 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 14:05:40 +00:00
|
|
|
},
|
|
|
|
'russian' => {
|
|
|
|
'lang' => 'russian',
|
|
|
|
'name' => 'Русский (Russian)',
|
|
|
|
'short' => 'ru',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vru',
|
|
|
|
'gtts' => '-l ru',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
'slovak' => {
|
|
|
|
'lang' => 'slovak',
|
|
|
|
'name' => 'Slovenský (Slovak)',
|
|
|
|
'short' => 'sk',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vsk',
|
|
|
|
'gtts' => '-l sk',
|
|
|
|
},
|
2020-07-13 19:59:00 +00:00
|
|
|
'enabled' => 1,
|
2020-07-11 14:05:40 +00:00
|
|
|
},
|
|
|
|
'srpski' => {
|
|
|
|
'lang' => 'srpski',
|
|
|
|
'name' => 'српски (Serbian)',
|
|
|
|
'short' => 'sr',
|
|
|
|
'defengine' => 'espeak',
|
|
|
|
'engines' => {
|
|
|
|
'espeak' => '-vsr',
|
|
|
|
'gtts' => '-l sr',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
sub bylang {
|
|
|
|
return uc $voices{$a}{lang} cmp uc $voices{$b}{lang};
|
|
|
|
}
|
|
|
|
|
|
|
|
sub allvoices {
|
|
|
|
my @list;
|
|
|
|
|
|
|
|
for my $b (sort bylang keys %voices) {
|
2020-07-13 14:52:02 +00:00
|
|
|
push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled});
|
2020-07-11 14:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return @list;
|
|
|
|
}
|
|
|
|
|
|
|
|
sub voicesforlang($) {
|
|
|
|
my $l = shift @_;
|
|
|
|
my @list;
|
|
|
|
|
|
|
|
for my $b (sort bylang keys %voices) {
|
2020-07-13 14:52:02 +00:00
|
|
|
push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled});
|
2020-07-11 14:05:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return @list;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-12-07 12:20:56 +00:00
|
|
|
1;
|