Skip to content

Commit 46f1a07

Browse files
committed
add channels and bits_per_sample to audioio.WaveFile
1 parent 7dc6b1d commit 46f1a07

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

shared-bindings/audioio/WaveFile.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,43 @@ const mp_obj_property_t audioio_wavefile_sample_rate_obj = {
138138
(mp_obj_t)&mp_const_none_obj},
139139
};
140140

141+
//| .. attribute:: bits_per_sample
142+
//|
143+
//| Bits per sample. (read only)
144+
//|
145+
STATIC mp_obj_t audioio_wavefile_obj_get_bits_per_sample(mp_obj_t self_in) {
146+
audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in);
147+
raise_error_if_deinited(common_hal_audioio_wavefile_deinited(self));
148+
return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_wavefile_get_bits_per_sample(self));
149+
}
150+
MP_DEFINE_CONST_FUN_OBJ_1(audioio_wavefile_get_bits_per_sample_obj, audioio_wavefile_obj_get_bits_per_sample);
151+
152+
const mp_obj_property_t audioio_wavefile_bits_per_sample_obj = {
153+
.base.type = &mp_type_property,
154+
.proxy = {(mp_obj_t)&audioio_wavefile_get_bits_per_sample_obj,
155+
(mp_obj_t)&mp_const_none_obj,
156+
(mp_obj_t)&mp_const_none_obj},
157+
};
158+
159+
//| .. attribute:: channels
160+
//|
161+
//| Number of audio channels. (read only)
162+
//|
163+
STATIC mp_obj_t audioio_wavefile_obj_get_channel_count(mp_obj_t self_in) {
164+
audioio_wavefile_obj_t *self = MP_OBJ_TO_PTR(self_in);
165+
raise_error_if_deinited(common_hal_audioio_wavefile_deinited(self));
166+
return MP_OBJ_NEW_SMALL_INT(common_hal_audioio_wavefile_get_channel_count(self));
167+
}
168+
MP_DEFINE_CONST_FUN_OBJ_1(audioio_wavefile_get_channel_count_obj, audioio_wavefile_obj_get_channel_count);
169+
170+
const mp_obj_property_t audioio_wavefile_channel_count_obj = {
171+
.base.type = &mp_type_property,
172+
.proxy = {(mp_obj_t)&audioio_wavefile_get_channel_count_obj,
173+
(mp_obj_t)&mp_const_none_obj,
174+
(mp_obj_t)&mp_const_none_obj},
175+
};
176+
177+
141178
STATIC const mp_rom_map_elem_t audioio_wavefile_locals_dict_table[] = {
142179
// Methods
143180
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&audioio_wavefile_deinit_obj) },
@@ -146,6 +183,8 @@ STATIC const mp_rom_map_elem_t audioio_wavefile_locals_dict_table[] = {
146183

147184
// Properties
148185
{ MP_ROM_QSTR(MP_QSTR_sample_rate), MP_ROM_PTR(&audioio_wavefile_sample_rate_obj) },
186+
{ MP_ROM_QSTR(MP_QSTR_bits_per_sample), MP_ROM_PTR(&audioio_wavefile_bits_per_sample_obj) },
187+
{ MP_ROM_QSTR(MP_QSTR_channels), MP_ROM_PTR(&audioio_wavefile_channel_count_obj) },
149188
};
150189
STATIC MP_DEFINE_CONST_DICT(audioio_wavefile_locals_dict, audioio_wavefile_locals_dict_table);
151190

shared-bindings/audioio/WaveFile.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,7 @@ void common_hal_audioio_wavefile_deinit(audioio_wavefile_obj_t* self);
4040
bool common_hal_audioio_wavefile_deinited(audioio_wavefile_obj_t* self);
4141
uint32_t common_hal_audioio_wavefile_get_sample_rate(audioio_wavefile_obj_t* self);
4242
void common_hal_audioio_wavefile_set_sample_rate(audioio_wavefile_obj_t* self, uint32_t sample_rate);
43+
uint8_t common_hal_audioio_wavefile_get_bits_per_sample(audioio_wavefile_obj_t* self);
44+
uint8_t common_hal_audioio_wavefile_get_channel_count(audioio_wavefile_obj_t* self);
4345

4446
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_AUDIOIO_WAVEFILE_H

shared-module/audioio/WaveFile.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ void common_hal_audioio_wavefile_set_sample_rate(audioio_wavefile_obj_t* self,
141141
self->sample_rate = sample_rate;
142142
}
143143

144+
uint8_t common_hal_audioio_wavefile_get_bits_per_sample(audioio_wavefile_obj_t* self) {
145+
return self->bits_per_sample;
146+
}
147+
148+
uint8_t common_hal_audioio_wavefile_get_channel_count(audioio_wavefile_obj_t* self) {
149+
return self->channel_count;
150+
}
151+
144152
bool audioio_wavefile_samples_signed(audioio_wavefile_obj_t* self) {
145153
return self->bits_per_sample > 8;
146154
}

0 commit comments

Comments
 (0)