8000 Merge pull request #10036 from jepler/audiosample-better-properties · jepler/circuitpython@9e08417 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9e08417

Browse files
authored
Merge pull request adafruit#10036 from jepler/audiosample-better-properties
audio: reduce code size
2 parents d788645 + e15eba0 commit 9e08417

File tree

52 files changed

+388
-835
lines changed
  • shared-module
  • Some content is hidden

    Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

    52 files changed

    +388
    -835
    lines changed

    ports/atmel-samd/audio_dma.c

    Lines changed: 2 additions & 2 deletions
    Original file line numberDiff line numberDiff line change
    @@ -251,7 +251,7 @@ audio_dma_result audio_dma_setup_playback(audio_dma_t *dma,
    251251
    }
    252252

    253253

    254-
    if (audiosample_bits_per_sample(sample) == 16) {
    254+
    if (audiosample_get_bits_per_sample(sample) == 16) {
    255255
    dma->beat_size = 2;
    256256
    dma->bytes_per_sample = 2;
    257257
    } else {
    @@ -262,7 +262,7 @@ audio_dma_result audio_dma_setup_playback(audio_dma_t *dma,
    262262
    }
    263263
    }
    264264
    // Transfer both channels at once.
    265-
    if (!single_channel_output && audiosample_channel_count(sample) == 2) {
    265+
    if (!single_channel_output && audiosample_get_channel_count(sample) == 2) {
    266266
    dma->beat_size *= 2;
    267267
    }
    268268

    ports/atmel-samd/audio_dma.h

    Lines changed: 1 addition & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -10,6 +10,7 @@
    1010
    #include "py/obj.h"
    1111
    #include "shared-module/audiocore/RawSample.h"
    1212
    #include "shared-module/audiocore/WaveFile.h"
    13+
    #include "shared-module/audiocore/__init__.h"
    1314
    #include "supervisor/background_callback.h"
    1415

    1516
    typedef struct {
    @@ -40,10 +41,6 @@ typedef enum {
    4041
    AUDIO_DMA_MEMORY_ERROR,
    4142
    } audio_dma_result;
    4243

    43-
    uint32_t audiosample_sample_rate(mp_obj_t sample_obj);
    44-
    uint8_t audiosample_bits_per_sample(mp_obj_t sample_obj);
    45-
    uint8_t audiosample_channel_count(mp_obj_t sample_obj);
    46-
    4744
    void audio_dma_init(audio_dma_t *dma);
    4845
    void audio_dma_reset(void);
    4946

    ports/atmel-samd/common-hal/audiobusio/I2SOut.c

    Lines changed: 4 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -216,10 +216,10 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    216216
    mp_raise_RuntimeError(MP_ERROR_TEXT("Clock unit in use"));
    217217
    }
    218218
    #endif
    219-
    uint8_t bits_per_sample = audiosample_bits_per_sample(sample);
    219+
    uint8_t bits_per_sample = audiosample_get_bits_per_sample(sample);
    220220
    // We always output stereo so output twice as many bits.
    221221
    uint16_t bits_per_sample_output = bits_per_sample * 2;
    222-
    uint16_t divisor = 48000000 / (bits_per_sample_output * audiosample_sample_rate(sample));
    222+
    uint16_t divisor = 48000000 / (bits_per_sample_output * audiosample_get_sample_rate(sample));
    223223
    // Find a free GCLK to generate the MCLK signal.
    224224
    uint8_t gclk = find_free_gclk(divisor);
    225225
    if (gclk > GCLK_GEN_NUM) {
    @@ -235,7 +235,7 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    235235
    } else {
    236236
    clkctrl |= I2S_CLKCTRL_FSOUTINV | I2S_CLKCTRL_BITDELAY_I2S;
    237237
    }
    238-
    uint8_t channel_count = audiosample_channel_count(sample);
    238+
    uint8_t channel_count = audiosample_get_channel_count(sample);
    239239
    if (channel_count > 2) {
    240240
    mp_raise_ValueError(MP_ERROR_TEXT("Too many channels in sample"));
    241241
    }
    @@ -245,7 +245,7 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    245245
    #ifdef SAM_D5X_E5X
    246246
    uint32_t serctrl = (self->clock_unit << I2S_RXCTRL_CLKSEL_Pos) | I2S_TXCTRL_TXSAME_SAME;
    247247
    #endif
    248-
    if (audiosample_channel_count(sample) == 1) {
    248+
    if (audiosample_get_channel_count(sample) == 1) {
    249249
    serctrl |= SERCTRL(MONO_MONO);
    250250
    } else {
    251251
    serctrl |= SERCTRL(MONO_STEREO);

    ports/atmel-samd/common-hal/audioio/AudioOut.c

    Lines changed: 4 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -333,7 +333,7 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
    333333
    common_hal_audioio_audioout_stop(self);
    334334
    }
    335335
    audio_dma_result result = AUDIO_DMA_OK;
    336-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    336+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    337337
    #ifdef SAMD21
    338338
    const uint32_t max_sample_rate = 350000;
    339339
    #endif
    @@ -364,12 +364,12 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
    364364
    right_channel_reg = (uint32_t)&DAC->DATABUF[0].reg;
    365365
    }
    366366

    367-
    size_t num_channels = audiosample_channel_count(sample);
    367+
    size_t num_channels = audiosample_get_channel_count(sample);
    368368

    369369
    if (num_channels == 2 &&
    370370
    // Are DAC channels sequential?
    371371
    left_channel_reg + 2 == right_channel_reg &&
    372-
    audiosample_bits_per_sample(sample) == 16) {
    372+
    audiosample_get_bits_per_sample(sample) == 16) {
    373373
    result = audio_dma_setup_playback(&self->left_dma, sample, loop, false, 0,
    374374
    false /* output unsigned */,
    375375
    left_channel_reg,
    @@ -403,7 +403,7 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
    403403
    }
    404404
    }
    405405
    Tc *timer = tc_insts[self->tc_index];
    406-
    set_timer_frequency(timer, audiosample_sample_rate(sample));
    406+
    set_timer_frequency(timer, audiosample_get_sample_rate(sample));
    407407
    timer->COUNT16.CTRLBSET.reg = TC_CTRLBSET_CMD_RETRIGGER;
    408408
    while (timer->COUNT16.STATUS.bit.STOP == 1) {
    409409
    }

    ports/espressif/common-hal/audiobusio/__init__.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -149,8 +149,8 @@ void port_i2s_play(i2s_t *self, mp_obj_t sample, bool loop) {
    149149
    port_i2s_pause(self);
    150150
    self->sample = sample;
    151151
    self->loop = loop;
    152-
    self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
    153-
    self->channel_count = audiosample_channel_count(sample);
    152+
    self->bytes_per_sample = audiosample_get_bits_per_sample(sample) / 8;
    153+
    self->channel_count = audiosample_get_channel_count(sample);
    154154
    bool single_buffer;
    155155
    bool samples_signed;
    156156
    uint32_t max_buffer_length;
    @@ -164,7 +164,7 @@ void port_i2s_play(i2s_t *self, mp_obj_t sample, bool loop) {
    164164

    165165
    audiosample_reset_buffer(self->sample, false, 0);
    166166

    167-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    167+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    168168
    i2s_std_clk_config_t clk_config = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate);
    169169
    CHECK_ESP_RESULT(i2s_channel_reconfig_std_clock(self->handle, &clk_config));
    170170

    ports/espressif/common-hal/audioio/AudioOut.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -595,16 +595,16 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
    595595

    596596
    self->sample = sample;
    597597
    self->looping = loop;
    598-
    freq_hz = audiosample_sample_rate(self->sample);
    598+
    freq_hz = audiosample_get_sample_rate(self->sample);
    599599

    600600
    if (freq_hz != self->freq_hz) {
    601601
    common_hal_audioio_audioout_deinit(self);
    602602
    self->freq_hz = freq_hz;
    603603
    audioout_init(self);
    604604
    }
    605605

    606-
    samples_size = audiosample_bits_per_sample(self->sample);
    607-
    channel_count = audiosample_channel_count(self->sample);
    606+
    samples_size = audiosample_get_bits_per_sample(self->sample);
    607+
    channel_count = audiosample_get_channel_count(self->sample);
    608608
    audiosample_get_buffer_structure(self->sample, false,
    609609
    &_single_buffer, &samples_signed,
    610610
    &_max_buffer_length, &_spacing);

    ports/espressif/mpconfigport.mk

    Lines changed: 0 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -337,6 +337,3 @@ USB_NUM_IN_ENDPOINTS = 5
    337337

    338338
    # Usually lots of flash space available
    339339
    CIRCUITPY_MESSAGE_COMPRESSION_LEVEL ?= 1
    340-
    341-
    CIRCUITPY_AUDIOMP3 ?= 1
    342-
    CIRCUITPY_AUDIOMP3_USE_PORT_ALLOCATOR ?= 1

    ports/mimxrt10xx/common-hal/audiobusio/__init__.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -374,11 +374,11 @@ static void set_sai_clocking_for_sample_rate(uint32_t sample_rate) {
    374374
    void port_i2s_play(i2s_t *self, mp_obj_t sample, bool loop) {
    375375
    self->sample = sample;
    376376< 10000 /td>
    self->loop = loop;
    377-
    self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
    378-
    self->channel_count = audiosample_channel_count(sample);
    377+
    self->bytes_per_sample = audiosample_get_bits_per_sample(sample) / 8;
    378+
    self->channel_count = audiosample_get_channel_count(sample);
    379379
    int instance = SAI_GetInstance(self->peripheral);
    380380
    i2s_playing |= (1 << instance);
    381-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    381+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    382382
    if (sample_rate != self->sample_rate) {
    383383
    if (__builtin_popcount(i2s_playing) <= 1) {
    384384
    // as this is the first/only i2s instance playing audio, we can

    ports/nordic/common-hal/audiobusio/I2SOut.c

    Lines changed: 2 additions & 2 deletions
    Original file line numberDiff line numberDiff line change
    @@ -240,8 +240,8 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    240240

    241241
    self->sample = sample;
    242242
    self->loop = loop;
    243-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    244-
    self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
    243+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    244+
    self->bytes_per_sample = audiosample_get_bits_per_sample(sample) / 8;
    245245

    246246
    uint32_t max_buffer_length;
    247247
    bool single_buffer, samples_signed;

    ports/nordic/common-hal/audiopwmio/PWMAudioOut.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -223,15 +223,15 @@ void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self,
    223223
    self->sample = sample;
    224224
    self->loop = loop;
    225225

    226-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    227-
    self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
    226+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    227+
    self->bytes_per_sample = audiosample_get_bits_per_sample(sample) / 8;
    228228

    229229
    uint32_t max_buffer_length;
    230230
    uint8_t spacing;
    231231
    audiosample_get_buffer_structure(sample, /* single channel */ false,
    232232
    &self->single_buffer, &self->signed_to_unsigned, &max_buffer_length,
    233233
    &spacing);
    234-
    self->sample_channel_count = audiosample_channel_count(sample);
    234+
    self->sample_channel_count = audiosample_get_channel_count(sample);
    235235

    236236
    mp_arg_validate_length_max(max_buffer_length, UINT16_MAX, MP_QSTR_buffer);
    237237

    ports/raspberrypi/audio_dma.c

    Lines changed: 2 additions & 2 deletions
    Original file line numberDiff line numberDiff line change
    @@ -203,7 +203,7 @@ audio_dma_result audio_dma_setup_playback(
    203203
    dma->output_signed = output_signed;
    204204
    dma->sample_spacing = 1;
    205205
    dma->output_resolution = output_resolution;
    206-
    dma->sample_resolution = audiosample_bits_per_sample(sample);
    206+
    dma->sample_resolution = audiosample_get_bits_per_sample(sample);
    207207
    dma->output_register_address = output_register_address;
    208208
    dma->swap_channel = swap_channel;
    209209

    @@ -250,7 +250,7 @@ audio_dma_result audio_dma_setup_playback(
    250250
    dma->output_size = 1;
    251251
    }
    252252
    // Transfer both channels at once.
    253-
    if (!single_channel_output && audiosample_channel_count(sample) == 2) {
    253+
    if (!single_channel_output && audiosample_get_channel_count(sample) == 2) {
    254254
    dma->output_size *= 2;
    255255
    }
    256256
    enum dma_channel_transfer_size dma_size = DMA_SIZE_8;

    ports/raspberrypi/common-hal/audiobusio/I2SOut.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -232,7 +232,7 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    232232
    common_hal_audiobusio_i2sout_stop(self);
    233233
    }
    234234

    235-
    uint8_t bits_per_sample = audiosample_bits_per_sample(sample);
    235+
    uint8_t bits_per_sample = audiosample_get_bits_per_sample(sample);
    236236
    // Make sure we transmit a minimum of 16 bits.
    237237
    // TODO: Maybe we need an intermediate object to upsample instead. This is
    238238
    // only needed for some I2S devices that expect at least 8.
    @@ -242,8 +242,8 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t *self,
    242242
    // We always output stereo so output twice as many bits.
    243243
    uint16_t bits_per_sample_output = bits_per_sample * 2;
    244244
    size_t clocks_per_bit = 6;
    245-
    uint32_t frequency = bits_per_sample_output * audiosample_sample_rate(sample);
    246-
    uint8_t channel_count = audiosample_channel_count(sample);
    245+
    uint32_t frequency = bits_per_sample_output * audiosample_get_sample_rate(sample);
    246+
    uint8_t channel_count = audiosample_get_channel_count(sample);
    247247
    if (channel_count > 2) {
    248248
    mp_raise_ValueError(MP_ERROR_TEXT("Too many channels in sample."));
    249249
    }

    ports/raspberrypi/common-hal/audiopwmio/PWMAudioOut.c

    Lines changed: 1 addition & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -187,7 +187,7 @@ void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self,
    187187
    // to trigger the DMA. Each has a 16 bit fractional divisor system clock * X / Y where X and Y
    188188
    // are 16-bit.
    189189

    190-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    190+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    191191

    192192
    uint32_t system_clock = common_hal_mcu_processor_get_frequency();
    193193
    uint32_t best_denominator;

    ports/stm/common-hal/audiopwmio/PWMAudioOut.c

    Lines changed: 3 additions & 3 deletions
    Original file line numberDiff line numberDiff line change
    @@ -240,16 +240,16 @@ void common_hal_audiopwmio_pwmaudioout_play(audiopwmio_pwmaudioout_obj_t *self,
    240240
    self->sample = sample;
    241241
    self->loop = loop;
    242242

    243-
    uint32_t sample_rate = audiosample_sample_rate(sample);
    244-
    self->bytes_per_sample = audiosample_bits_per_sample(sample) / 8;
    243+
    uint32_t sample_rate = audiosample_get_sample_rate(sample);
    244+
    self->bytes_per_sample = audiosample_get_bits_per_sample(sample) / 8;
    245245

    246246
    uint32_t max_buffer_length;
    247247
    uint8_t spacing;
    248248
    bool single_buffer;
    249249
    bool samples_signed;
    250250
    audiosample_get_buffer_structure(sample, /* single channel */ false,
    251251
    &single_buffer, &samples_signed, &max_buffer_length, &spacing);
    252-
    self->sample_channel_count = audiosample_channel_count(sample);
    252+
    self->sample_channel_count = audiosample_get_channel_count(sample);
    253253
    self->sample_offset = (samples_signed ? 0x8000 : 0) - self->quiescent_value;
    254254

    255255
    free_buffers(self);

    ports/unix/variants/coverage/mpconfigvariant.mk

    Lines changed: 0 additions & 1 deletion
    Original file line numberDiff line numberDiff line change
    @@ -144,7 +144,6 @@ CFLAGS += \
    144144
    -DCIRCUITPY_AUDIOFILTERS=1 \
    145145
    -DCIRCUITPY_AUDIOMIXER=1 \
    146146
    -DCIRCUITPY_AUDIOMP3=1 \
    147-
    -DCIRCUITPY_AUDIOMP3_USE_PORT_ALLOCATOR=0 \
    148147
    -DCIRCUITPY_AUDIOCORE_DEBUG=1 \
    149148
    -DCIRCUITPY_BITMAPTOOLS=1 \
    150149
    -DCIRCUITPY_CODEOP=1 \

    shared-bindings/audiocore/RawSample.c

    Lines changed: 2 additions & 29 deletions
    Original file line numberDiff line numberDiff line change
    @@ -12,6 +12,7 @@
    1212
    #include "py/runtime.h"
    1313
    #include "shared-bindings/util.h"
    1414
    #include "shared-bindings/audiocore/RawSample.h"
    15+
    #include "shared-bindings/audiocore/__init__.h"
    1516

    1617
    //| class RawSample:
    1718
    //| """A raw audio sample buffer in memory"""
    @@ -120,12 +121,6 @@ static mp_obj_t audioio_rawsample_deinit(mp_obj_t self_in) {
    120121
    }
    121122
    static MP_DEFINE_CONST_FUN_OBJ_1(audioio_rawsample_deinit_obj, audioio_rawsample_deinit);
    122123

    123-
    static void check_for_deinit(audioio_rawsample_obj_t *self) {
    124-
    if (common_hal_audioio_rawsample_deinited(self)) {
    125-
    raise_deinited_error();
    126-
    }
    127-
    }
    128-
    129124
    //| def __enter__(self) -> RawSample:
    130125
    //| """No-op used by Context Managers."""
    131126
    //| ...
    @@ -151,24 +146,6 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(audioio_rawsample___exit___obj, 4, 4,
    151146
    //| change it."""
    152147
    //|
    153148
    //|
    154-
    static mp_obj_t audioio_rawsample_obj_get_sample_rate(mp_obj_t self_in) {
    155-
    audioio_rawsample_obj_t *self = MP_OBJ_TO_PTR(self_in);
    156-
    check_for_deinit(self);
    157-
    return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_rawsample_get_sample_rate(self));
    158-
    }
    159-
    MP_DEFINE_CONST_FUN_OBJ_1(audioio_rawsample_get_sample_rate_obj, audioio_rawsample_obj_get_sample_rate);
    160-
    161-
    static mp_obj_t audioio_rawsample_obj_set_sample_rate(mp_obj_t self_in, mp_obj_t sample_rate) {
    162-
    audioio_rawsample_obj_t *self = MP_OBJ_TO_PTR(self_in);
    163-
    check_for_deinit(self);
    164-
    common_hal_audioio_rawsample_set_sample_rate(self, mp_obj_get_int(sample_rate));
    165-
    return mp_const_none;
    166-
    }
    167-
    MP_DEFINE_CONST_FUN_OBJ_2(audioio_rawsample_set_sample_rate_obj, audioio_rawsample_obj_set_sample_rate);
    168-
    169-
    MP_PROPERTY_GETSET(audioio_rawsample_sample_rate_obj,
    170-
    (mp_obj_t)&audioio_rawsample_get_sample_rate_obj,
    171-
    (mp_obj_t)&audioio_rawsample_set_sample_rate_obj);
    172149

    173150
    static const mp_rom_map_elem_t audioio_rawsample_locals_dict_table[] = {
    174151
    // Methods
    @@ -177,18 +154,14 @@ static const mp_rom_map_elem_t audioio_rawsample_locals_dict_table[] = {
    177154
    { MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&audioio_rawsample___exit___obj) },
    178155

    179156
    // Properties
    180-
    { MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audioio_rawsample_sample_rate_obj) },
    157+
    AUDIOSAMPLE_FIELDS,
    181158
    };
    182159
    static MP_DEFINE_CONST_DICT(audioio_rawsample_locals_dict, audioio_rawsample_locals_dict_table);
    183160

    184161
    static const audiosample_p_t audioio_rawsample_proto = {
    185162
    MP_PROTO_IMPLEMENT(MP_QSTR_protocol_audiosample)
    186-
    .sample_rate = (audiosample_sample_rate_fun)common_hal_audioio_rawsample_get_sample_rate,
    187-
    .bits_per_sample = (audiosample_bits_per_sample_fun)common_hal_audioio_rawsample_get_bits_per_sample,
    188-
    .channel_count = (audiosample_channel_count_fun)common_hal_audioio_rawsample_get_channel_count,
    189163
    .reset_buffer = (audiosample_reset_buffer_fun)audioio_rawsample_reset_buffer,
    190164
    .get_buffer = (audiosample_get_buffer_fun)audioio_rawsample_get_buffer,
    191-
    .get_buffer_structure = (audiosample_get_buffer_structure_fun)audioio_rawsample_get_buffer_structure,
    192165
    };
    193166

    194167
    MP_DEFINE_CONST_OBJ_TYPE(

    0 commit comments

    Comments
     (0)
    0