diff options
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r-- | firmware/mpeg.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index ce1d995461..bb438a3ab4 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -2453,34 +2453,32 @@ static void stop_recording(void) | |||
2453 | resume_recording(); | 2453 | resume_recording(); |
2454 | } | 2454 | } |
2455 | 2455 | ||
2456 | void audio_set_recording_options(int frequency, int quality, | 2456 | void audio_set_recording_options(struct audio_recording_options *options) |
2457 | int source, int channel_mode, | ||
2458 | bool editable, int prerecord_time) | ||
2459 | { | 2457 | { |
2460 | bool is_mpeg1; | 2458 | bool is_mpeg1; |
2461 | 2459 | ||
2462 | is_mpeg1 = (frequency < 3)?true:false; | 2460 | is_mpeg1 = (options->rec_frequency < 3)?true:false; |
2463 | 2461 | ||
2464 | rec_version_index = is_mpeg1?3:2; | 2462 | rec_version_index = is_mpeg1?3:2; |
2465 | rec_frequency_index = frequency % 3; | 2463 | rec_frequency_index = options->rec_frequency % 3; |
2466 | 2464 | ||
2467 | shadow_encoder_control = (quality << 17) | | 2465 | shadow_encoder_control = (options->rec_quality << 17) | |
2468 | (rec_frequency_index << 10) | | 2466 | (rec_frequency_index << 10) | |
2469 | ((is_mpeg1?1:0) << 9) | | 2467 | ((is_mpeg1?1:0) << 9) | |
2470 | (((channel_mode * 2 + 1) & 3) << 6) | | 2468 | (((options->rec_channels * 2 + 1) & 3) << 6) | |
2471 | (1 << 5) /* MS-stereo */ | | 2469 | (1 << 5) /* MS-stereo */ | |
2472 | (1 << 2) /* Is an original */; | 2470 | (1 << 2) /* Is an original */; |
2473 | mas_writemem(MAS_BANK_D0, MAS_D0_ENCODER_CONTROL, &shadow_encoder_control,1); | 2471 | mas_writemem(MAS_BANK_D0, MAS_D0_ENCODER_CONTROL, &shadow_encoder_control,1); |
2474 | 2472 | ||
2475 | DEBUGF("mas_writemem(MAS_BANK_D0, ENCODER_CONTROL, %x)\n", shadow_encoder_control); | 2473 | DEBUGF("mas_writemem(MAS_BANK_D0, ENCODER_CONTROL, %x)\n", shadow_encoder_control); |
2476 | 2474 | ||
2477 | shadow_soft_mute = editable?4:0; | 2475 | shadow_soft_mute = options->rec_editable?4:0; |
2478 | mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute,1); | 2476 | mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute,1); |
2479 | 2477 | ||
2480 | DEBUGF("mas_writemem(MAS_BANK_D0, SOFT_MUTE, %x)\n", shadow_soft_mute); | 2478 | DEBUGF("mas_writemem(MAS_BANK_D0, SOFT_MUTE, %x)\n", shadow_soft_mute); |
2481 | 2479 | ||
2482 | shadow_io_control_main = ((1 << 10) | /* Monitoring ON */ | 2480 | shadow_io_control_main = ((1 << 10) | /* Monitoring ON */ |
2483 | ((source < 2)?1:2) << 8) | /* Input select */ | 2481 | ((options->rec_source < 2)?1:2) << 8) | /* Input select */ |
2484 | (1 << 5) | /* SDO strobe invert */ | 2482 | (1 << 5) | /* SDO strobe invert */ |
2485 | ((is_mpeg1?0:1) << 3) | | 2483 | ((is_mpeg1?0:1) << 3) | |
2486 | (1 << 2) | /* Inverted SIBC clock signal */ | 2484 | (1 << 2) | /* Inverted SIBC clock signal */ |
@@ -2489,7 +2487,7 @@ void audio_set_recording_options(int frequency, int quality, | |||
2489 | 2487 | ||
2490 | DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main); | 2488 | DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main); |
2491 | 2489 | ||
2492 | if(source == AUDIO_SRC_MIC) | 2490 | if(options->rec_source == AUDIO_SRC_MIC) |
2493 | { | 2491 | { |
2494 | /* Copy left channel to right (mono mode) */ | 2492 | /* Copy left channel to right (mono mode) */ |
2495 | mas_codec_writereg(8, 0x8000); | 2493 | mas_codec_writereg(8, 0x8000); |
@@ -2500,7 +2498,7 @@ void audio_set_recording_options(int frequency, int quality, | |||
2500 | mas_codec_writereg(8, 0); | 2498 | mas_codec_writereg(8, 0); |
2501 | } | 2499 | } |
2502 | 2500 | ||
2503 | prerecording_max_seconds = prerecord_time; | 2501 | prerecording_max_seconds = options->rec_prerecord_time; |
2504 | if(prerecording_max_seconds) | 2502 | if(prerecording_max_seconds) |
2505 | { | 2503 | { |
2506 | prerecording = true; | 2504 | prerecording = true; |