/******************************************************************************
 * function : Start Ao
 ******************************************************************************/
HI_S32 SAMPLE_COMM_AUDIO_StartAo(AUDIO_DEV AoDevId, AO_CHN AoChn,
		AIO_ATTR_S *pstAioAttr, AUDIO_RESAMPLE_ATTR_S *pstAoReSmpAttr) {
	HI_S32 s32Ret;

	s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, pstAioAttr);
	if (HI_SUCCESS != s32Ret) {
		printf("%s: HI_MPI_AO_SetPubAttr(%d) failed with %#x!\n", __FUNCTION__,
				AoDevId, s32Ret);
		return HI_FAILURE;
	}
	s32Ret = HI_MPI_AO_Enable(AoDevId);
	if (HI_SUCCESS != s32Ret) {
		printf("%s: HI_MPI_AO_Enable(%d) failed with %#x!\n", __FUNCTION__,
				AoDevId, s32Ret);
		return HI_FAILURE;
	}
	s32Ret = HI_MPI_AO_EnableChn(AoDevId, AoChn);
	if (HI_SUCCESS != s32Ret) {
		printf("%s: HI_MPI_AO_EnableChn(%d) failed with %#x!\n", __FUNCTION__,
				AoChn, s32Ret);
		return HI_FAILURE;
	}

	if (NULL != pstAoReSmpAttr) {
		s32Ret = HI_MPI_AO_DisableReSmp(AoDevId, AoChn);
		s32Ret |= HI_MPI_AO_EnableReSmp(AoDevId, AoChn, pstAoReSmpAttr);
		if (HI_SUCCESS != s32Ret) {
			printf("%s: HI_MPI_AO_EnableReSmp(%d,%d) failed with %#x!\n",
					__FUNCTION__, AoDevId, AoChn, s32Ret);
			return HI_FAILURE;
		}
	}

	return HI_SUCCESS;
}
Example #2
0
static int ao_start(AUDIO_DEV AoDevId, AO_CHN AoChn, AIO_ATTR_S *pstAioAttr)
{
    HI_S32 s32Ret = HI_FAILURE;

    s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, pstAioAttr);
    CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret);

    s32Ret = HI_MPI_AO_Enable(AoDevId);
    CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret);

    s32Ret = HI_MPI_AO_EnableChn(AoDevId, AoChn);
    CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret);

    return HI_SUCCESS;
}
int Hi3511AoutSetup(int nChannel, void *param)
{
	HI_S32 s32ret;
	AIO_ATTR_S stAttr;

	stAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
	stAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000;
	stAttr.enSoundmode = AUDIO_SOUND_MODE_MOMO;
	stAttr.enWorkmode =AIO_MODE_I2S_MASTER ;//AIO_MODE_I2S_SLAVE
	
	stAttr.u32EXFlag = 0;
	//stAttr.u32FrmNum = 5;
	stAttr.u32FrmNum = 10;//add by liujw
	stAttr.u32PtNumPerFrm = 160;
    
	s32ret = HI_MPI_AO_SetPubAttr(0, &stAttr);
	if(HI_SUCCESS != s32ret)
	{
		printf("set ao %d attr err:0x%x::%s  %d\n", 0, s32ret, __FILE__, __LINE__);
		return -1;
	}
    #if 1   //add code by liujw 12-3-2
	s32ret = HI_MPI_AO_Enable(0);
	if(HI_SUCCESS != s32ret)
	{
		printf("enable ao dev %d err:0x%x\n", 0, s32ret);
		return -1;
	}
	#endif
	s32ret = HI_MPI_AO_EnableChn(0, 0);
	if(HI_SUCCESS != s32ret)
	{
		printf("enable ai chn %d err:0x%x\n", nChannel, s32ret);
		return -1;
	}
	g_Hi3511_aout_open_flag = 1;	//add by liujw
	
	return 0;
}
Example #4
0
int adec_ao (AIO_ATTR_S *pstAioAttr)
{
	HI_S32 		sret;
	int 		ret = FAILURE;
	AUDIO_DEV 	aoDev = 0;
	AO_CHN		aoChn = 0;
	ADEC_CHN	adChn = 0;
	int acodec_fd = 0;
	unsigned int i2s_fs_sel = 0;
	
	//-----------Set CFG-------------
	acodec_fd = open (ACODEC_FILE,O_RDWR);
	if (acodec_fd < 0)
	{
		printf ("open[%s] error[%s]\n", ACODEC_FILE, strerror (errno));
		return ret;
	}

	if (ioctl (acodec_fd, ACODEC_SOFT_RESET_CTRL))
	{
		printf ("reset codec error\n");
		return ret;
	}

	i2s_fs_sel = 0x18;//AUDIO_SAMPLE_RATE_8000

	if (ioctl (acodec_fd, ACODEC_SET_I2S1_FS,&i2s_fs_sel))
	{
		printf ("set acodec sample rate failure\n");
		return ret;
	}

	close (acodec_fd);

	//-------------Start Adec-------------
	ADEC_CHN_ATTR_S stAdecAttr;

	stAdecAttr.enType = PT_G711A;
	stAdecAttr.u32BufSize = 20;
	stAdecAttr.enMode = ADEC_MODE_STREAM;

	if (PT_ADPCMA == stAdecAttr.enType)
	{
		ADEC_ATTR_ADPCM_S stAdpcm;
		stAdecAttr.pValue = &stAdpcm;
		stAdpcm.enADPCMType = 0;
		printf ("-----------I do not Play Pcm\n");
	}
	else if (PT_G711A == stAdecAttr.enType || PT_G711U == stAdecAttr.enType)
	{
		ADEC_ATTR_G711_S stAdecG711;
		stAdecAttr.pValue = &stAdecG711;
	}
	else
	{
		printf ("Undefine Type\n");
		return ret;
	}

	sret = HI_MPI_ADEC_CreateChn(adChn, &stAdecAttr);
	if (sret != HI_SUCCESS)
	{
		printf ("HI_MPI_ADEC_CreateChn error[%x]\n", sret);
		return ret;
	}

	//----------------------Start Ao-----------
	sret = HI_MPI_AO_SetPubAttr (aoDev, pstAioAttr);
	if (sret != SUCCESS)
	{
		printf ("HI_MPI_AO_SetPubAttr error[%x]\n", sret);
		return ret;
	}

	sret = HI_MPI_AO_Enable (aoDev);
	if (sret != SUCCESS)
	{
		printf ("HI_MPI_AO_Enable error[%x]\n", sret);
		return ret;
	}

	sret = HI_MPI_AO_EnableChn (aoDev, aoChn);
	if (sret != SUCCESS)
	{
		printf ("HI_MPI_AO_EnableChn error[%x]\n", sret);
		return ret;
	}

	//-------- SAMPLE_COMM_AUDIO_AoBindAdec
	MPP_CHN_S stSrcChn,stDestChn;

	stSrcChn.enModId = HI_ID_ADEC;
	stSrcChn.s32DevId = 0;
	stSrcChn.s32ChnId = adChn;
	stDestChn.enModId = HI_ID_AO;
	stDestChn.s32DevId = aoDev;
	stDestChn.s32ChnId = aoChn;

	sret = HI_MPI_SYS_Bind (&stSrcChn, &stDestChn);
	if (sret != HI_SUCCESS)
	{
		printf ("HI_MPI_SYS_Bind error [%x]\n", sret);
		return ret;
	}
	printf ("HI_MPI_SYS_Bind success\n");

	//--------------SAMPLE_COMM_AUDIO_AdecProc
	int AdChn = adChn;
	FILE *pfd = NULL;
	AUDIO_STREAM_S stAudioStream;
	HI_U32 u32Len = 324;
	HI_U32 u32ReadLen;
	HI_S32 s32AdecChn = AdChn;
	HI_U8 *pu8AudioStream = NULL;

	pfd = fopen ("/root/ap_down.voice", "r");
	if (pfd == NULL)
	{
		printf ("open file error[%s]\n", strerror (errno));
		return -1;
	}
	printf ("open file success\n");
	pu8AudioStream = (HI_U8*)malloc(sizeof(HI_U8)*MAX_AUDIO_STREAM_LEN);

	while (1)
	{
		stAudioStream.pStream = pu8AudioStream;
		u32ReadLen = fread(stAudioStream.pStream, 1, u32Len, pfd/*文件FD*/);
		if (u32ReadLen <= 0)
		{
			printf ("read complete\n");
			break;
		}
		stAudioStream.u32Len = u32ReadLen; 
		sret = HI_MPI_ADEC_SendStream(s32AdecChn, &stAudioStream, HI_TRUE);
		if (sret != HI_SUCCESS)
		{
			printf ("HI_MPI_ADEC_SendStream error [%x]\n", sret);
			break;
		}
	}
	free(pu8AudioStream);
	fclose(pfd);

	printf ("Wow, it ok\n");
	return 0;
}
Example #5
0
HI_S32 unidoli_start_ao(AUDIO_DEV AoDevId, HI_S32 s32AoChnCnt,
                                 AIO_ATTR_S* pstAioAttr, HI_VOID* pstAoVqeAttr, HI_U32 u32AoVqeType)
{
    HI_S32 i;
    HI_S32 s32Ret;

    s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, pstAioAttr);
    if (HI_SUCCESS != s32Ret)
    {
        printf("%s: HI_MPI_AO_SetPubAttr(%d) failed with %#x!\n", __FUNCTION__, \
               AoDevId, s32Ret);
        return HI_FAILURE;
    }

    s32Ret = HI_MPI_AO_Enable(AoDevId);
    if (HI_SUCCESS != s32Ret)
    {
        printf("%s: HI_MPI_AO_Enable(%d) failed with %#x!\n", __FUNCTION__, AoDevId, s32Ret);
        return HI_FAILURE;
    }

    for (i = 0; i < s32AoChnCnt; i++)
    {
        s32Ret = HI_MPI_AO_EnableChn(AoDevId, i/(pstAioAttr->enSoundmode + 1));
        if (HI_SUCCESS != s32Ret)
        {
            printf("%s: HI_MPI_AO_EnableChn(%d) failed with %#x!\n", __FUNCTION__, i, s32Ret);
            return HI_FAILURE;
        }

        if (NULL != pstAoVqeAttr)
        {
            HI_BOOL bAoVqe = HI_TRUE;
            switch (u32AoVqeType)
            {
                case 0:
                    s32Ret = HI_SUCCESS;
                    bAoVqe = HI_FALSE;
                    break;
                case 1:
                    s32Ret = HI_MPI_AO_SetVqeAttr(AoDevId, i, (AO_VQE_CONFIG_S *)pstAoVqeAttr);
                    break;
                default:
                    s32Ret = HI_FAILURE;
                    break;
    }
            if (s32Ret)
            {
                printf("%s: SetAoVqe%d(%d,%d) failed with %#x\n", __FUNCTION__, u32AoVqeType, AoDevId, i, s32Ret);
                return s32Ret;
            }
            if (bAoVqe)
            {
                s32Ret = HI_MPI_AO_EnableVqe(AoDevId, i);
                if (s32Ret)
                {
                    printf("%s: HI_MPI_AI_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AoDevId, i, s32Ret);
                    return s32Ret;
                }
            }
        }
    }
    return HI_SUCCESS;
}