@@ -14,9 +14,73 @@ const val EXTENSION_M4A = 0
1414const val EXTENSION_MP3 = 1
1515const val EXTENSION_OGG = 2
1616
17- val BITRATES = arrayListOf (32000 , 64000 , 96000 , 128000 , 160000 , 192000 , 256000 , 320000 )
18- const val DEFAULT_BITRATE = 192000
19- const val SAMPLE_RATE = 48000
17+ val BITRATES_MP3 = arrayListOf (
18+ 8000 , 16000 , 24000 , 32000 , 64000 , 96000 , 128000 , 160000 , 192000 , 256000 , 320000
19+ )
20+ val BITRATES_M4A = arrayListOf (
21+ 8000 , 14000 , 24000 , 28000 , 32000 , 64000 , 96000 , 128000 , 160000 , 192000 , 288000
22+ )
23+ val BITRATES_OPUS = arrayListOf (
24+ 8000 , 16000 , 24000 , 32000 , 64000 , 96000 , 128000 , 160000 , 192000 , 256000 , 320000
25+ )
26+ val BITRATES = mapOf (
27+ EXTENSION_M4A to BITRATES_M4A ,
28+ EXTENSION_MP3 to BITRATES_MP3 ,
29+ EXTENSION_OGG to BITRATES_OPUS
30+ )
31+ const val DEFAULT_BITRATE = 96000
32+
33+ val SAMPLING_RATES_MP3 = arrayListOf (8000 , 11025 , 12000 , 16000 , 22050 , 24000 , 32000 , 44100 , 48000 )
34+ val SAMPLING_RATES_M4A = arrayListOf (11025 , 12000 , 16000 , 22050 , 24000 , 32000 , 44100 , 48000 )
35+ val SAMPLING_RATES_OPUS = arrayListOf (8000 , 12000 , 16000 , 24000 , 48000 )
36+ val SAMPLING_RATES = mapOf (
37+ EXTENSION_M4A to SAMPLING_RATES_M4A ,
38+ EXTENSION_MP3 to SAMPLING_RATES_MP3 ,
39+ EXTENSION_OGG to SAMPLING_RATES_OPUS
40+ )
41+ const val DEFAULT_SAMPLING_RATE = 48000
42+
43+ // sampling rate -> [min bitrate, max bitrate]
44+ // according to https://redmine.digispot.ru/projects/support-eng/wiki/Recommended_Sampling_Rate_and_Bitrate_Combinations_for_AAC_codec
45+ val SAMPLING_RATE_BITRATE_LIMITS_M4A = mapOf (
46+ 11025 to arrayListOf (8000 , 15999 ),
47+ 12000 to arrayListOf (8000 , 15999 ),
48+ 16000 to arrayListOf (8000 , 31999 ),
49+ 22050 to arrayListOf (24000 , 31999 ),
50+ 24000 to arrayListOf (24000 , 31999 ),
51+ 32000 to arrayListOf (32000 , 160000 ),
52+ 44100 to arrayListOf (56000 , 160000 ),
53+ 48000 to arrayListOf (56000 , 288000 )
54+ )
55+
56+ // according to https://svn.code.sf.net/p/lame/svn/trunk/lame/doc/html/detailed.html#b
57+ val SAMPLING_RATE_BITRATE_LIMITS_MP3 = mapOf (
58+ 8000 to arrayListOf (8000 , 64000 ),
59+ 11025 to arrayListOf (8000 , 64000 ),
60+ 12000 to arrayListOf (8000 , 64000 ),
61+ 16000 to arrayListOf (8000 , 160000 ),
62+ 22050 to arrayListOf (8000 , 160000 ),
63+ 24000 to arrayListOf (8000 , 160000 ),
64+ 32000 to arrayListOf (32000 , 320000 ),
65+ 44100 to arrayListOf (32000 , 320000 ),
66+ 48000 to arrayListOf (32000 , 320000 )
67+ )
68+
69+ // OPUS has only recommendations for bitrate, no limits: https://www.rfc-editor.org/rfc/rfc7587#section-3.1.1
70+ // only minimum value is set according to them
71+ val SAMPLING_RATE_BITRATE_LIMITS_OPUS = mapOf (
72+ 8000 to arrayListOf (8000 , 320000 ),
73+ 12000 to arrayListOf (16000 , 320000 ),
74+ 16000 to arrayListOf (28000 , 320000 ),
75+ 24000 to arrayListOf (48000 , 320000 ),
76+ 48000 to arrayListOf (64000 , 320000 )
77+ )
78+
79+ val SAMPLING_RATE_BITRATE_LIMITS = mapOf (
80+ EXTENSION_M4A to SAMPLING_RATE_BITRATE_LIMITS_M4A ,
81+ EXTENSION_MP3 to SAMPLING_RATE_BITRATE_LIMITS_MP3 ,
82+ EXTENSION_OGG to SAMPLING_RATE_BITRATE_LIMITS_OPUS
83+ )
2084
2185const val RECORDING_RUNNING = 0
2286const val RECORDING_STOPPED = 1
@@ -31,6 +95,7 @@ const val SAVE_RECORDINGS = "save_recordings"
3195const val EXTENSION = " extension"
3296const val AUDIO_SOURCE = " audio_source"
3397const val BITRATE = " bitrate"
98+ const val SAMPLING_RATE = " sampling_rate"
3499const val RECORD_AFTER_LAUNCH = " record_after_launch"
35100const val USE_RECYCLE_BIN = " use_recycle_bin"
36101const val LAST_RECYCLE_BIN_CHECK = " last_recycle_bin_check"
0 commit comments