[Audio_test]修复了回调方法的实现
1.修复了回调方法的实现
2.修复了录音功能的bug
3.修改了程序选项
Change-Id: Ib8688ddb0966c2d6c40422fac7d7f82a52ed76c3
diff --git a/mbtk/mbtk_lib/src/mbtk_audio_alsa.c b/mbtk/mbtk_lib/src/mbtk_audio_alsa.c
index 83d2585..d654c6a 100755
--- a/mbtk/mbtk_lib/src/mbtk_audio_alsa.c
+++ b/mbtk/mbtk_lib/src/mbtk_audio_alsa.c
@@ -79,12 +79,6 @@
void *cb_data;
};
-struct player_cb_s
-{
- mbtk_audio_player_cb_func _cb;
- void *cb_data;
-};
-
static struct mopen_audio_t *internal_hdl = NULL;
@@ -306,6 +300,7 @@
{
first_set = 1;
mbtk_audio_set_status(hdl, AUDIO_RUNNING);
+ audio_play_cb(pcxt, AUD_PLAYER_RESUME);
}
pthread_mutex_lock(&pcxt->_stream_mutex);
@@ -316,7 +311,7 @@
if(ret < pcxt->pcm_packet_size)
printf("pcm %d - %d\n", pcxt->pipe_data, ret);
- rc = pcxt->stream_out->write(pcxt->stream_out, data, ret);
+ rc = pcxt->stream_out->write(pcxt->stream_out, data, bufsize);
if (rc < 0) {
printf("%s: error writing (child).\n", __FUNCTION__);
break;
@@ -335,7 +330,7 @@
/* printf("close pcxt->fd!\n"); */
}
if (audio_play_cb)
- audio_play_cb(pcxt, 5);
+ audio_play_cb(pcxt, AUD_PLAYER_FINISHED);
pcxt->pid = 0;
// mbtk_audio_set_status(hdl, AUDIO_STOP);
mbtk_audio_set_status(hdl, AUDIO_OPEN);
@@ -365,7 +360,7 @@
}
if (pcxt->pid == 0) {
if (audio_play_cb)
- audio_play_cb(pcxt, 0);
+ audio_play_cb(pcxt, AUD_PLAYER_START);
mbtk_audio_set_status(pcxt, AUDIO_RUNNING);
ret = pthread_create(&pcxt->pid, NULL, mbtk_play_pthread, hdl);
if (ret != 0)
@@ -625,7 +620,7 @@
}
-int mbtk_audio_play_file(void *dev_hdl, int file_fd, int offset, mbtk_audio_player_cb_func cb_func)
+int mbtk_audio_play_file(void *dev_hdl, int file_fd, int offset)
{
unsigned bufsize = 0;
char *data = NULL;
@@ -635,7 +630,7 @@
int ret;
struct mopen_audio_t *pcxt = (struct mopen_audio_t *)dev_hdl;
- struct player_cb_s *_usrData = NULL;
+ _play_callback audio_play_cb = (_play_callback)pcxt->usrData;
if (NULL == dev_hdl || NULL == internal_hdl)
return -1;
@@ -643,9 +638,6 @@
return -2;
// file_data_sz = mbtk_wav_pcm16Le_check(file_fd);
- _usrData = malloc(sizeof(struct player_cb_s));
- _usrData->_cb = cb_func;
- _usrData->cb_data = NULL;
bufsize = pcxt->pcm_packet_size;
data = calloc(1, bufsize);
if (!data) {
@@ -679,28 +671,29 @@
while(AUDIO_PAUSE == pcxt->state)
{
usleep(80000);
- _usrData->_cb((int)pcxt, AUD_PLAYER_PAUSE);
+ audio_play_cb(pcxt, AUD_PLAYER_PAUSE);
}
if ((0 == first_set || AUDIO_RESUME == pcxt->state))
{
first_set = 1;
mbtk_audio_set_status(dev_hdl, AUDIO_RUNNING);
- _usrData->_cb((int)pcxt, AUD_PLAYER_RESUME);
+ audio_play_cb(pcxt, AUD_PLAYER_RESUME);
}
ret = pcxt->stream_out->write(pcxt->stream_out, data, bufsize);
if (ret < 0) {
printf("%s: error writing (child).\n", __FUNCTION__);
- _usrData->_cb((int)pcxt, AUD_PLAYER_ERROR);
+ audio_play_cb(pcxt, AUD_PLAYER_ERROR);
break;
} else if (ret < (signed int)pcxt->pcm_packet_size) {
printf("%s: wrote less than buffer size, rc=%d.\n", __FUNCTION__, ret);
- _usrData->_cb((int)pcxt, AUD_PLAYER_LESSDATA);
+ audio_play_cb(pcxt, AUD_PLAYER_LESSDATA);
break;
}
}
- _usrData->_cb((int)pcxt, AUD_PLAYER_FINISHED);
+ if (audio_play_cb)
+ audio_play_cb(pcxt, AUD_PLAYER_FINISHED);
printf("file_data_sz :%d - all_size: %d\n", file_data_sz, all_size);
mbtk_audio_set_status(dev_hdl, AUDIO_OPEN);