⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recording.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
📖 第 1 页 / 共 2 页
字号:
                    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 + -