/** * \brief init audio dec * \param handle pointer to player private data * \return 0 on success otherwise -1 if an error occurred */ int audio_decode_init(void **handle) { int ret; aml_audio_dec_t *audec; if (*handle) { adec_print("Existing an audio dec instance!Need not to create it !"); return -1; } audec = (aml_audio_dec_t *)malloc(sizeof(aml_audio_dec_t)); if (audec == NULL) { adec_print("malloc failed! not enough memory !"); return -1; } ret = audiodec_init(audec); if (ret) { adec_print("adec init failed!"); return -1; } *handle = (void *)audec; return 0; }
/** * \brief init audio dec * \param handle pointer to player private data * \return 0 on success otherwise -1 if an error occurred */ int audio_decode_init(void **handle, arm_audio_info *a_ainfo) { int ret; aml_audio_dec_t *audec; if (*handle) { adec_print("Existing an audio dec instance!Need not to create it !"); return -1; } audec = (aml_audio_dec_t *)malloc(sizeof(aml_audio_dec_t)); if (audec == NULL) { adec_print("malloc failed! not enough memory !"); return -1; } //set param for arm audio decoder memset(audec, 0, sizeof(aml_audio_dec_t)); audec->channels=a_ainfo->channels; audec->samplerate=a_ainfo->sample_rate; audec->format=a_ainfo->format; audec->adsp_ops.dsp_file_fd=a_ainfo->handle; audec->extradata_size=a_ainfo->extradata_size; audec->SessionID=a_ainfo->SessionID; audec->dspdec_not_supported = a_ainfo->dspdec_not_supported; audec->droppcm_flag = 0; if (a_ainfo->droppcm_flag) { audec->droppcm_flag = a_ainfo->droppcm_flag; a_ainfo->droppcm_flag = 0; } if(a_ainfo->extradata_size>0&&a_ainfo->extradata_size<=AUDIO_EXTRA_DATA_SIZE) memcpy((char*)audec->extradata,(char*)a_ainfo->extradata,a_ainfo->extradata_size); // adec_print("audio_decode_init pcodec = %d, pcodec->ctxCodec = %d!\n", pcodec, pcodec->ctxCodec); ret = audiodec_init(audec); if (ret) { adec_print("adec init failed!"); return -1; } *handle = (void *)audec; return 0; }