summaryrefslogtreecommitdiff
path: root/bsp/nuvoton/libraries/nu_packages/AudioCodec/audio_test.c
blob: 9756f26ffdffb707e862a0f308511c26efa33a20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/**************************************************************************//**
*
* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date            Author       Notes
* 2020-1-16       Wayne        First version
*
******************************************************************************/

#include <rtconfig.h>

#if defined(PKG_USING_WAVPLAYER)

#include "wavrecorder.h"
#include "wavplayer.h"
#include "dfs_posix.h"

/*
  The routine just for test automatically.
  - For record function: Run it w/o parameter.
  - For replay function: Run it with parameter.
*/
static void audio_test(int argc, char **argv)
{
#define DEF_MAX_ARGV_NUM 8
    int smplrate[] = {8000, 11025, 16000, 22050, 32000, 44100, 48000};
    int smplbit[] = {16};
    int chnum[] = {1, 2};
    struct wavrecord_info info;
    char strbuf[128];
    int i, j, k;
    int bDoRecording = 1;
    struct stat stat_buf;

    if (argc > 1)
        bDoRecording = 0;

    for (i = 0; i < sizeof(smplrate) / sizeof(int); i++)
    {
        for (j = 0; j < sizeof(smplbit) / sizeof(int); j++)
        {
            for (k = 0; k < sizeof(chnum) / sizeof(int); k++)
            {
                snprintf(strbuf, sizeof(strbuf), "/mnt/sd0/%d_%d_%d.wav", smplrate[i], smplbit[j], chnum[k]);

                if (bDoRecording)
                {
                    rt_kprintf("Recording file at %s\n", strbuf);
                    info.uri = strbuf;
                    info.samplerate = smplrate[i];
                    info.samplebits = smplbit[j];
                    info.channels = chnum[k];
                    wavrecorder_start(&info);
                    rt_thread_mdelay(10000);
                    wavrecorder_stop();
                    rt_thread_mdelay(1000);
                }
                else
                {
                    if (stat((const char *)strbuf, &stat_buf) < 0)
                    {
                        rt_kprintf("%s non-exist.\n", strbuf);
                        continue;
                    }

                    rt_kprintf("Replay file at %s\n", strbuf);
                    wavplayer_play(strbuf);
                    rt_thread_mdelay(10000);
                    wavplayer_stop();
                }
            } // k
        } // j
    } // i
}

#ifdef FINSH_USING_MSH
    MSH_CMD_EXPORT(audio_test, Audio record / replay);
#endif
#endif /* PKG_USING_WAVPLAYER */