Skip to content

Commit 21551a8

Browse files
committed
Change to allow WaveFile and MP3Decoder to accept a file path
1 parent b6f67be commit 21551a8

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

shared-bindings/audiocore/WaveFile.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,24 @@
6969
//| a.play(wav)
7070
//| while a.playing:
7171
//| pass
72-
//| print("stopped")"""
72+
//| print("stopped")
73+
//|
74+
//| Support was added for taking a filename as parameter, instead of an opened file,
75+
//| and opening the file internally.
76+
//| """
7377
//| ...
7478
//|
7579
STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
7680
mp_arg_check_num(n_args, n_kw, 1, 2, false);
81+
mp_obj_t arg = args[0];
82+
83+
if (mp_obj_is_str(arg)) {
84+
arg = mp_call_function_2(MP_OBJ_FROM_PTR(&mp_builtin_open_obj), arg, MP_ROM_QSTR(MP_QSTR_rb));
85+
}
7786

7887
audioio_wavefile_obj_t *self = m_new_obj(audioio_wavefile_obj_t);
7988
self->base.type = &audioio_wavefile_type;
80-
if (!mp_obj_is_type(args[0], &mp_type_fileio)) {
89+
if (!mp_obj_is_type(arg, &mp_type_fileio)) {
8190
mp_raise_TypeError(translate("file must be a file opened in byte mode"));
8291
}
8392
uint8_t *buffer = NULL;
@@ -88,7 +97,7 @@ STATIC mp_obj_t audioio_wavefile_make_new(const mp_obj_type_t *type, size_t n_ar
8897
buffer = bufinfo.buf;
8998
buffer_size = mp_arg_validate_length_range(bufinfo.len, 8, 1024, MP_QSTR_buffer);
9099
}
91-
common_hal_audioio_wavefile_construct(self, MP_OBJ_TO_PTR(args[0]),
100+
common_hal_audioio_wavefile_construct(self, MP_OBJ_TO_PTR(arg),
92101
buffer, buffer_size);
93102

94103
return MP_OBJ_FROM_PTR(self);

shared-bindings/audiomp3/MP3Decoder.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,25 @@
8585
//| a.play(mp3)
8686
//| while a.playing:
8787
//| pass
88-
//| print("stopped")"""
88+
//| print("stopped")
89+
//|
90+
//| Support was added for taking a filename as parameter, instead of an opened file,
91+
//| and opening the file internally.
92+
//| """
8993
//| ...
9094
//|
95+
9196
STATIC mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
9297
mp_arg_check_num(n_args, n_kw, 1, 2, false);
98+
mp_obj_t arg = args[0];
99+
100+
if (mp_obj_is_str(arg)) {
101+
arg = mp_call_function_2(MP_OBJ_FROM_PTR(&mp_builtin_open_obj), arg, MP_ROM_QSTR(MP_QSTR_rb));
102+
}
93103

94104
audiomp3_mp3file_obj_t *self = m_new_obj(audiomp3_mp3file_obj_t);
95105
self->base.type = &audiomp3_mp3file_type;
96-
if (!mp_obj_is_type(args[0], &mp_type_fileio)) {
106+
if (!mp_obj_is_type(arg, &mp_type_fileio)) {
97107
mp_raise_TypeError(translate("file must be a file opened in byte mode"));
98108
}
99109
uint8_t *buffer = NULL;
@@ -104,7 +114,7 @@ STATIC mp_obj_t audiomp3_mp3file_make_new(const mp_obj_type_t *type, size_t n_ar
104114
buffer = bufinfo.buf;
105115
buffer_size = bufinfo.len;
106116
}
107-
common_hal_audiomp3_mp3file_construct(self, MP_OBJ_TO_PTR(args[0]),
117+
common_hal_audiomp3_mp3file_construct(self, MP_OBJ_TO_PTR(arg),
108118
buffer, buffer_size);
109119

110120
return MP_OBJ_FROM_PTR(self);

0 commit comments

Comments
 (0)