summaryrefslogtreecommitdiff
path: root/apps/recorder
diff options
context:
space:
mode:
Diffstat (limited to 'apps/recorder')
-rw-r--r--apps/recorder/radio.c47
-rw-r--r--apps/recorder/recording.c75
2 files changed, 69 insertions, 53 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index ab0c1eb004..519e919964 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -172,9 +172,10 @@ bool radio_screen(void)
172 172
173 mpeg_set_recording_options(global_settings.rec_frequency, 173 mpeg_set_recording_options(global_settings.rec_frequency,
174 global_settings.rec_quality, 174 global_settings.rec_quality,
175 1 /* Line In */, 175 1, /* Line In */
176 global_settings.rec_channels, 176 global_settings.rec_channels,
177 global_settings.rec_editable); 177 global_settings.rec_editable,
178 global_settings.rec_prerecord_time);
178 179
179 180
180 mpeg_set_recording_gain(mpeg_sound_default(SOUND_LEFT_GAIN), 181 mpeg_set_recording_gain(mpeg_sound_default(SOUND_LEFT_GAIN),
@@ -230,7 +231,7 @@ bool radio_screen(void)
230 switch(button) 231 switch(button)
231 { 232 {
232 case BUTTON_OFF: 233 case BUTTON_OFF:
233 if(mpeg_status()) 234 if(mpeg_status() == MPEG_STATUS_RECORD)
234 { 235 {
235 mpeg_stop(); 236 mpeg_stop();
236 status_set_playmode(STATUS_STOP); 237 status_set_playmode(STATUS_STOP);
@@ -244,17 +245,16 @@ bool radio_screen(void)
244 break; 245 break;
245 246
246 case BUTTON_F3: 247 case BUTTON_F3:
247 /* Only act if the mpeg is stopped */ 248 if(mpeg_status() == MPEG_STATUS_RECORD)
248 if(!mpeg_status())
249 { 249 {
250 have_recorded = true; 250 mpeg_new_file(rec_create_filename());
251 mpeg_record(rec_create_filename());
252 status_set_playmode(STATUS_RECORD);
253 update_screen = true; 251 update_screen = true;
254 } 252 }
255 else 253 else
256 { 254 {
257 mpeg_new_file(rec_create_filename()); 255 have_recorded = true;
256 mpeg_record(rec_create_filename());
257 status_set_playmode(STATUS_RECORD);
258 update_screen = true; 258 update_screen = true;
259 } 259 }
260 last_seconds = 0; 260 last_seconds = 0;
@@ -353,11 +353,12 @@ bool radio_screen(void)
353 353
354 case SYS_USB_CONNECTED: 354 case SYS_USB_CONNECTED:
355 /* Only accept USB connection when not recording */ 355 /* Only accept USB connection when not recording */
356 if(!mpeg_status()) 356 if(mpeg_status() != MPEG_STATUS_RECORD)
357 { 357 {
358 usb_screen(); 358 usb_screen();
359 fmradio_set_status(0); 359 fmradio_set_status(0);
360 have_recorded = true; /* Refreshes the browser later on */ 360 screen_freeze = true; /* Cosmetic: makes sure the
361 radio screen doesn't redraw */
361 done = true; 362 done = true;
362 } 363 }
363 break; 364 break;
@@ -368,6 +369,8 @@ bool radio_screen(void)
368 if(!screen_freeze) 369 if(!screen_freeze)
369 { 370 {
370 lcd_setmargins(0, 8); 371 lcd_setmargins(0, 8);
372
373 /* Only display the peak meter when not recording */
371 if(!mpeg_status()) 374 if(!mpeg_status())
372 { 375 {
373 lcd_clearrect(0, 8 + fh*(top_of_screen + 3), LCD_WIDTH, fh); 376 lcd_clearrect(0, 8 + fh*(top_of_screen + 3), LCD_WIDTH, fh);
@@ -415,7 +418,7 @@ bool radio_screen(void)
415 str(LANG_CHANNEL_MONO)); 418 str(LANG_CHANNEL_MONO));
416 lcd_puts(0, top_of_screen + 2, buf); 419 lcd_puts(0, top_of_screen + 2, buf);
417 420
418 if(mpeg_status()) 421 if(mpeg_status() == MPEG_STATUS_RECORD)
419 { 422 {
420 hours = seconds / 3600; 423 hours = seconds / 3600;
421 minutes = (seconds - (hours * 3600)) / 60; 424 minutes = (seconds - (hours * 3600)) / 60;
@@ -424,6 +427,12 @@ bool radio_screen(void)
424 hours, minutes, seconds%60); 427 hours, minutes, seconds%60);
425 lcd_puts(0, top_of_screen + 3, buf); 428 lcd_puts(0, top_of_screen + 3, buf);
426 } 429 }
430 else
431 {
432 snprintf(buf, 32, "%s %02d",
433 str(LANG_RECORD_PRERECORD), seconds%60);
434 lcd_puts(0, top_of_screen + 3, buf);
435 }
427 436
428 /* Only force the redraw if update_screen is true */ 437 /* Only force the redraw if update_screen is true */
429 status_draw(update_screen); 438 status_draw(update_screen);
@@ -687,7 +696,19 @@ bool radio_delete_preset(void)
687 696
688static bool fm_recording_settings(void) 697static bool fm_recording_settings(void)
689{ 698{
690 return recording_menu(true); 699 bool ret;
700
701 ret = recording_menu(true);
702 if(!ret)
703 {
704 mpeg_set_recording_options(global_settings.rec_frequency,
705 global_settings.rec_quality,
706 1, /* Line In */
707 global_settings.rec_channels,
708 global_settings.rec_editable,
709 global_settings.rec_prerecord_time);
710 }
711 return ret;
691} 712}
692 713
693bool radio_menu(void) 714bool radio_menu(void)
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index d94508e547..bc26ff8495 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -160,7 +160,8 @@ bool recording_screen(void)
160 global_settings.rec_quality, 160 global_settings.rec_quality,
161 global_settings.rec_source, 161 global_settings.rec_source,
162 global_settings.rec_channels, 162 global_settings.rec_channels,
163 global_settings.rec_editable); 163 global_settings.rec_editable,
164 global_settings.rec_prerecord_time);
164 165
165 set_gain(); 166 set_gain();
166 167
@@ -174,7 +175,7 @@ bool recording_screen(void)
174 switch(button) 175 switch(button)
175 { 176 {
176 case BUTTON_OFF: 177 case BUTTON_OFF:
177 if(mpeg_status()) 178 if(mpeg_status() & MPEG_STATUS_RECORD)
178 { 179 {
179 mpeg_stop(); 180 mpeg_stop();
180 status_set_playmode(STATUS_STOP); 181 status_set_playmode(STATUS_STOP);
@@ -190,7 +191,7 @@ bool recording_screen(void)
190 191
191 case BUTTON_PLAY: 192 case BUTTON_PLAY:
192 /* Only act if the mpeg is stopped */ 193 /* Only act if the mpeg is stopped */
193 if(!mpeg_status()) 194 if(!(mpeg_status() & MPEG_STATUS_RECORD))
194 { 195 {
195 have_recorded = true; 196 have_recorded = true;
196 mpeg_record(rec_create_filename()); 197 mpeg_record(rec_create_filename());
@@ -305,13 +306,16 @@ bool recording_screen(void)
305 if (recording_menu(false)) 306 if (recording_menu(false))
306 return SYS_USB_CONNECTED; 307 return SYS_USB_CONNECTED;
307 settings_save(); 308 settings_save();
309
308 mpeg_set_recording_options(global_settings.rec_frequency, 310 mpeg_set_recording_options(global_settings.rec_frequency,
309 global_settings.rec_quality, 311 global_settings.rec_quality,
310 global_settings.rec_source, 312 global_settings.rec_source,
311 global_settings.rec_channels, 313 global_settings.rec_channels,
312 global_settings.rec_editable); 314 global_settings.rec_editable,
315 global_settings.rec_prerecord_time);
313 316
314 set_gain(); 317 set_gain();
318
315 update_countdown = 1; /* Update immediately */ 319 update_countdown = 1; /* Update immediately */
316 320
317 lcd_setfont(FONT_SYSFIXED); 321 lcd_setfont(FONT_SYSFIXED);
@@ -319,7 +323,7 @@ bool recording_screen(void)
319 break; 323 break;
320 324
321 case BUTTON_F2: 325 case BUTTON_F2:
322 if(!mpeg_status()) 326 if(mpeg_status() != MPEG_STATUS_RECORD)
323 { 327 {
324 if (f2_rec_screen()) 328 if (f2_rec_screen())
325 { 329 {
@@ -332,7 +336,7 @@ bool recording_screen(void)
332 break; 336 break;
333 337
334 case BUTTON_F3: 338 case BUTTON_F3:
335 if(!mpeg_status()) 339 if(mpeg_status() != MPEG_STATUS_RECORD)
336 { 340 {
337 if (f3_rec_screen()) 341 if (f3_rec_screen())
338 { 342 {
@@ -346,14 +350,12 @@ bool recording_screen(void)
346 350
347 case SYS_USB_CONNECTED: 351 case SYS_USB_CONNECTED:
348 /* Only accept USB connection when not recording */ 352 /* Only accept USB connection when not recording */
349 if(!mpeg_status()) 353 if(mpeg_status() != MPEG_STATUS_RECORD)
350 { 354 {
351 usb_screen(); 355 usb_screen();
352 have_recorded = true; /* Refreshes the browser later on */ 356 have_recorded = true; /* Refreshes the browser later on */
353 done = true; 357 done = true;
354 } 358 }
355 lcd_setfont(FONT_SYSFIXED);
356 lcd_setmargins(global_settings.invert_cursor ? 0 : w, 8);
357 break; 359 break;
358 } 360 }
359 361
@@ -387,21 +389,28 @@ bool recording_screen(void)
387 389
388 dseconds = rec_timesplit_seconds(); 390 dseconds = rec_timesplit_seconds();
389 391
390 /* Display the split interval if the record timesplit 392 if(mpeg_status() & MPEG_STATUS_PRERECORD)
391 is active */
392 if (global_settings.rec_timesplit)
393 { 393 {
394 /* Display the record timesplit interval rather than 394 snprintf(buf, 32, "%s...", str(LANG_RECORD_PRERECORD));
395 the file size if the record timer is active */
396 dhours = dseconds / 3600;
397 dminutes = (dseconds - (dhours * 3600)) / 60;
398 snprintf(buf, 32, "%s %02d:%02d",
399 str(LANG_RECORD_TIMESPLIT_REC),
400 dhours, dminutes);
401 } 395 }
402 else 396 else
403 snprintf(buf, 32, "%s %s", str(LANG_RECORDING_SIZE), 397 {
404 num2max5(mpeg_num_recorded_bytes(), buf2)); 398 /* Display the split interval if the record timesplit
399 is active */
400 if (global_settings.rec_timesplit)
401 {
402 /* Display the record timesplit interval rather than
403 the file size if the record timer is active */
404 dhours = dseconds / 3600;
405 dminutes = (dseconds - (dhours * 3600)) / 60;
406 snprintf(buf, 32, "%s %02d:%02d",
407 str(LANG_RECORD_TIMESPLIT_REC),
408 dhours, dminutes);
409 }
410 else
411 snprintf(buf, 32, "%s %s", str(LANG_RECORDING_SIZE),
412 num2max5(mpeg_num_recorded_bytes(), buf2));
413 }
405 lcd_puts(0, 1, buf); 414 lcd_puts(0, 1, buf);
406 415
407 /* We will do file splitting regardless, since the OFF 416 /* We will do file splitting regardless, since the OFF
@@ -622,7 +631,8 @@ bool f2_rec_screen(void)
622 global_settings.rec_quality, 631 global_settings.rec_quality,
623 global_settings.rec_source, 632 global_settings.rec_source,
624 global_settings.rec_channels, 633 global_settings.rec_channels,
625 global_settings.rec_editable); 634 global_settings.rec_editable,
635 global_settings.rec_prerecord_time);
626 636
627 set_gain(); 637 set_gain();
628 638
@@ -671,22 +681,6 @@ bool f3_rec_screen(void)
671 used = true; 681 used = true;
672 break; 682 break;
673 683
674 case BUTTON_DOWN:
675 case BUTTON_F3 | BUTTON_DOWN:
676 global_settings.rec_frequency++;
677 if(global_settings.rec_frequency > 5)
678 global_settings.rec_frequency = 0;
679 used = true;
680 break;
681
682 case BUTTON_RIGHT:
683 case BUTTON_F3 | BUTTON_RIGHT:
684 global_settings.rec_channels++;
685 if(global_settings.rec_channels > 1)
686 global_settings.rec_channels = 0;
687 used = true;
688 break;
689
690 case BUTTON_F3 | BUTTON_REL: 684 case BUTTON_F3 | BUTTON_REL:
691 if ( used ) 685 if ( used )
692 exit = true; 686 exit = true;
@@ -707,10 +701,11 @@ bool f3_rec_screen(void)
707 global_settings.rec_quality, 701 global_settings.rec_quality,
708 global_settings.rec_source, 702 global_settings.rec_source,
709 global_settings.rec_channels, 703 global_settings.rec_channels,
710 global_settings.rec_editable); 704 global_settings.rec_editable,
705 global_settings.rec_prerecord_time);
711 706
712 set_gain(); 707 set_gain();
713 708
714 settings_save(); 709 settings_save();
715 lcd_setfont(FONT_UI); 710 lcd_setfont(FONT_UI);
716 711