📄 recording.c
字号:
else update_countdown = 1; /* Update immediately */ } break; case SYS_USB_CONNECTED: /* Only accept USB connection when not recording */ if(mpeg_status() != MPEG_STATUS_RECORD) { usb_screen(); done = true; been_in_usb_mode = true; } break; } peak_meter_peek(); if(TIME_AFTER(current_tick, timeout)) { lcd_setfont(FONT_SYSFIXED); timeout = current_tick + HZ/10; seconds = mpeg_recorded_time() / HZ; update_countdown--; if(update_countdown == 0 || seconds > last_seconds) { unsigned int dseconds, dhours, dminutes; int pos = 0; update_countdown = 5; last_seconds = seconds; lcd_clear_display(); hours = seconds / 3600; minutes = (seconds - (hours * 3600)) / 60; snprintf(buf, 32, "%s %02d:%02d:%02d", str(LANG_RECORDING_TIME), hours, minutes, seconds%60); lcd_puts(0, 0, buf); dseconds = rec_timesplit_seconds(); if(mpeg_status() & MPEG_STATUS_PRERECORD) { snprintf(buf, 32, "%s...", str(LANG_RECORD_PRERECORD)); } else { /* Display the split interval if the record timesplit is active */ if (global_settings.rec_timesplit) { /* Display the record timesplit interval rather than the file size if the record timer is active */ dhours = dseconds / 3600; dminutes = (dseconds - (dhours * 3600)) / 60; snprintf(buf, 32, "%s %02d:%02d", str(LANG_RECORD_TIMESPLIT_REC), dhours, dminutes); } else snprintf(buf, 32, "%s %s", str(LANG_RECORDING_SIZE), num2max5(mpeg_num_recorded_bytes(), buf2)); } lcd_puts(0, 1, buf); /* We will do file splitting regardless, since the OFF setting really means 24 hours. This is to make sure that the recorded files don't get too big. */ if (mpeg_status() && (seconds >= dseconds)) { mpeg_new_file(rec_create_filename(path_buffer)); update_countdown = 1; last_seconds = 0; } peak_meter_draw(0, 8 + h*2, LCD_WIDTH, h); /* Show mic gain if input source is Mic */ if(global_settings.rec_source == 0) { snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN), fmt_gain(SOUND_MIC_GAIN, global_settings.rec_mic_gain, buf2, sizeof(buf2))); if (global_settings.invert_cursor && (pos++ == cursor)) lcd_puts_style(0, 3, buf, STYLE_INVERT); else lcd_puts(0, 3, buf); } else { if(global_settings.rec_source == SOURCE_LINE) { gain = MAX(global_settings.rec_left_gain, global_settings.rec_right_gain); snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_GAIN), fmt_gain(SOUND_LEFT_GAIN, gain, buf2, sizeof(buf2))); if (global_settings.invert_cursor && (pos++ == cursor)) lcd_puts_style(0, 3, buf, STYLE_INVERT); else lcd_puts(0, 3, buf); snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_LEFT), fmt_gain(SOUND_LEFT_GAIN, global_settings.rec_left_gain, buf2, sizeof(buf2))); if (global_settings.invert_cursor && (pos++ == cursor)) lcd_puts_style(0, 4, buf, STYLE_INVERT); else lcd_puts(0, 4, buf); snprintf(buf, 32, "%s: %s", str(LANG_RECORDING_RIGHT), fmt_gain(SOUND_RIGHT_GAIN, global_settings.rec_right_gain, buf2, sizeof(buf2))); if (global_settings.invert_cursor && (pos++ == cursor)) lcd_puts_style(0, 5, buf, STYLE_INVERT); else lcd_puts(0, 5, buf); } } if(global_settings.rec_source != SOURCE_SPDIF) put_cursorxy(0, 3 + cursor, true); snprintf(buf, 32, "%s %s [%d]", freq_str[global_settings.rec_frequency], global_settings.rec_channels? str(LANG_CHANNEL_MONO):str(LANG_CHANNEL_STEREO), global_settings.rec_quality); lcd_puts(0, 6, buf); status_draw(true); lcd_update(); } else { lcd_clearrect(0, 8 + h*2, LCD_WIDTH, h); peak_meter_draw(0, 8 + h*2, LCD_WIDTH, h); lcd_update_rect(0, 8 + h*2, LCD_WIDTH, h); } } if(mpeg_status() & MPEG_STATUS_ERROR) { done = true; } } if(mpeg_status() & MPEG_STATUS_ERROR) { status_set_playmode(STATUS_STOP); splash(0, true, str(LANG_DISK_FULL)); status_draw(true); lcd_update(); mpeg_error_clear(); while(1) { button = button_get(true); if(button == (BUTTON_OFF | BUTTON_REL)) break; } } mpeg_init_playback(); mpeg_sound_channel_config(global_settings.channel_config); mpeg_sound_set(SOUND_BASS, global_settings.bass); mpeg_sound_set(SOUND_TREBLE, global_settings.treble); mpeg_sound_set(SOUND_BALANCE, global_settings.balance); mpeg_sound_set(SOUND_VOLUME, global_settings.volume); mpeg_sound_set(SOUND_LOUDNESS, global_settings.loudness); mpeg_sound_set(SOUND_SUPERBASS, global_settings.bass_boost); mpeg_sound_set(SOUND_AVC, global_settings.avc); lcd_setfont(FONT_UI); if (have_recorded) reload_directory(); return been_in_usb_mode;}bool f2_rec_screen(void){ bool exit = false; bool used = false; int w, h; char buf[32]; lcd_setfont(FONT_SYSFIXED); lcd_getstringsize("A",&w,&h); while (!exit) { char* ptr=NULL; lcd_clear_display(); /* Recording quality */ lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_QUALITY)); snprintf(buf, 32, "%d", global_settings.rec_quality); lcd_putsxy(0, LCD_HEIGHT/2-h, buf); lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); /* Frequency */ snprintf(buf, sizeof buf, "%s:", str(LANG_RECORDING_FREQUENCY)); lcd_getstringsize(buf,&w,&h); lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf); ptr = freq_str[global_settings.rec_frequency]; lcd_getstringsize(ptr, &w, &h); lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr); lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow], LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true); /* Channel mode */ switch ( global_settings.rec_channels ) { case 0: ptr = str(LANG_CHANNEL_STEREO); break; case 1: ptr = str(LANG_CHANNEL_MONO); break; } lcd_getstringsize(str(LANG_RECORDING_CHANNELS), &w, &h); lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_CHANNELS)); lcd_getstringsize(str(LANG_F2_MODE), &w, &h); lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, str(LANG_F2_MODE)); lcd_getstringsize(ptr, &w, &h); lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr); lcd_bitmap(bitmap_icons_7x8[Icon_FastForward], LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true); lcd_update(); switch (button_get(true)) { case BUTTON_LEFT: case BUTTON_F2 | BUTTON_LEFT: global_settings.rec_quality++; if(global_settings.rec_quality > 7) global_settings.rec_quality = 0; used = true; break; case BUTTON_DOWN: case BUTTON_F2 | BUTTON_DOWN: global_settings.rec_frequency++; if(global_settings.rec_frequency > 5) global_settings.rec_frequency = 0; used = true; break; case BUTTON_RIGHT: case BUTTON_F2 | BUTTON_RIGHT: global_settings.rec_channels++; if(global_settings.rec_channels > 1) global_settings.rec_channels = 0; used = true; break; case BUTTON_F2 | BUTTON_REL: if ( used ) exit = true; used = true; break; case BUTTON_F2 | BUTTON_REPEAT: used = true; break; case SYS_USB_CONNECTED: usb_screen(); return true; } } mpeg_set_recording_options(global_settings.rec_frequency, global_settings.rec_quality, global_settings.rec_source, global_settings.rec_channels, global_settings.rec_editable, global_settings.rec_prerecord_time); set_gain(); settings_save(); lcd_setfont(FONT_UI); return false;}bool f3_rec_screen(void){ bool exit = false; bool used = false; int w, h; char *src_str[] = { str(LANG_RECORDING_SRC_MIC), str(LANG_RECORDING_SRC_LINE), str(LANG_RECORDING_SRC_DIGITAL) }; lcd_setfont(FONT_SYSFIXED); lcd_getstringsize("A",&w,&h); while (!exit) { char* ptr=NULL; lcd_clear_display(); /* Recording source */ lcd_putsxy(0, LCD_HEIGHT/2 - h*2, str(LANG_RECORDING_SOURCE)); ptr = src_str[global_settings.rec_source]; lcd_getstringsize(ptr, &w, &h); lcd_putsxy(0, LCD_HEIGHT/2-h, ptr); lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward], LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true); lcd_update(); switch (button_get(true)) { case BUTTON_LEFT: case BUTTON_F3 | BUTTON_LEFT: global_settings.rec_source++; if(global_settings.rec_source > 2) global_settings.rec_source = 0; used = true; break; case BUTTON_F3 | BUTTON_REL: if ( used ) exit = true; used = true; break; case BUTTON_F3 | BUTTON_REPEAT: used = true; break; case SYS_USB_CONNECTED: usb_screen(); return true; } } mpeg_set_recording_options(global_settings.rec_frequency, global_settings.rec_quality, global_settings.rec_source, global_settings.rec_channels, global_settings.rec_editable, global_settings.rec_prerecord_time); set_gain(); settings_save(); lcd_setfont(FONT_UI); return false;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -