示例#1
0
DvevmStRetCode
dvtb_sphDec1Init(DvevmStSphDec1Info *sd)
{
	DvevmStRetCode retCode = DVEVM_ST_SUCCESS;

	ASSERT(sd != NULL);
	ASSERT(sd->ceHdl != NULL);
	ASSERT(sd->sdecName[0] != 0);

	if (NULL == (sd->sdecHdl = SPHDEC1_create(sd->ceHdl, sd->sdecName, &sd->sdecParams)))
	{
		SYS_ERROR("Unable to initialize Speech Decoder\n");
		retCode = DVEVM_ST_FAIL;
	}
	else
	{
		if (DVEVM_ST_FAIL == dvtb_allocSingleBufCmem(&sd->inBuf.start, sd->inBuf.size))
		{
			SYS_ERROR("Unable to allocate memory for In Buffer\n");
			retCode = DVEVM_ST_FAIL;
		}
		else if (DVEVM_ST_FAIL == dvtb_allocSingleBufCmem(&sd->outBuf.start, sd->outBuf.size))
		{
			SYS_ERROR("Unable to allocate memory for Out Buffer\n");
			retCode = DVEVM_ST_FAIL;
		}
	}

	if (DVEVM_ST_FAIL == retCode)
		dvtb_sphDec1Cleanup(sd);

	return retCode;
}
示例#2
0
/*
 *  ======== ceapp_init ========
 */
int ceapp_init(void *params)
{
    int status = -1;    /* nonzero means failure */

    /* initialize Codec Engine runtime first */
    /* This function has been moved to main() in main.c */
    //CERuntime_init();

    /* reset, load, and start DSP Engine */
    if ((ceHandle = Engine_open(engineName, NULL, NULL)) == NULL) {
        printf("CEapp-> ERROR: can't open engine %s\n", engineName);
        goto init_end;
    }
    else
    {
        printf("CEapp-> Engine Opened: %s\n", engineName);
    }

    /*  dump contents of DSP trace -- this is a "pull" trace dumping: we read
     *  DSP's trace log whenever we think there might be something there.
     */
    traceDump(ceHandle);

    /* allocate and initialize audio decoder on the engine */
    decHandle = SPHDEC1_create(ceHandle, decoderName, params);
    if (decHandle == NULL) {
        printf("CEapp-> ERROR: can't open codec %s\n", decoderName);
        goto init_end;
    }
    else
    {
        printf("CEapp-> Codec opened %s\n", decoderName);
    }
    traceDump(ceHandle);

    status = 0;     /* success */

init_end:

    return status;
}
示例#3
0
/*
 *  ======== smain ========
 */
Int smain(Int argc, String argv[])
{
    Engine_Handle ce = NULL;
    SPHDEC1_Handle dec = NULL;
    SPHENC1_Handle enc = NULL;
    SPHDEC1_Params decParams;
    SPHENC1_Params encParams;

    FILE *in = NULL;
    FILE *out = NULL;
    String inFile, outFile;

    if (argc <= 1) {
        inFile = "../in.dat";
        outFile = "../out.dat";
    }
    else if (argc == 3) {
        progName = argv[0];
        inFile = argv[1];
        outFile = argv[2];
    }
    else {
        fprintf(stderr, usage, argv[0]);
        exit(1);
    }

    GT_0trace(curMask, GT_1CLASS, "App-> Application started.\n");

    /* allocate input, encoded, and output buffers */
    inBuf = (XDAS_Int8 *)Memory_contigAlloc(IFRAMESIZE, BUFALIGN);
    encodedBuf = (XDAS_Int8 *)Memory_contigAlloc(EFRAMESIZE, BUFALIGN);
    outBuf = (XDAS_Int8 *)Memory_contigAlloc(OFRAMESIZE, BUFALIGN);
    versionBuf = (XDAS_Int8 *)Memory_contigAlloc(MAXVERSIONSIZE, BUFALIGN);

    if ((inBuf == NULL) || (encodedBuf == NULL) || (outBuf == NULL) ||
        (versionBuf == NULL)) {

        goto end;
    }

    /* open file streams for input and output */
    if ((in = fopen(inFile, "rb")) == NULL) {
        printf("App-> ERROR: can't read file %s\n", inFile);
        goto end;
    }
    if ((out = fopen(outFile, "wb")) == NULL) {
        printf("App-> ERROR: can't write to file %s\n", outFile);
        goto end;
    }

    /* reset, load, and start DSP Engine */
    if ((ce = Engine_open(engineName, NULL, NULL)) == NULL) {
        fprintf(stderr, "%s: error: can't open engine %s\n",
            progName, engineName);
        goto end;
    }

    /* allocate and initialize decoder in the engine */
    decParams.size = sizeof(decParams);
    decParams.compandingLaw = ISPEECH1_PCM_COMPAND_ULAW;
    /* no other create params are meaningful for PCM decoders */

    dec = SPHDEC1_create(ce, decoderName, &decParams);
    if (dec == NULL) {
        printf( "App-> ERROR: can't open codec %s\n", decoderName);
        goto end;
    }

    /* allocate and initialize encoder in the engine */
    encParams.size = sizeof(encParams);
    encParams.frameSize = IFRAMESIZE;
    encParams.compandingLaw = ISPEECH1_PCM_COMPAND_ULAW;
    /* no other create params are meaningful for PCM encoders */

    enc = SPHENC1_create(ce, encoderName, &encParams);
    if (enc == NULL) {
        fprintf(stderr, "%s: error: can't open codec %s\n",
            progName, encoderName);
        goto end;
    }

    /* use engine to encode, then decode the data */
    encode_decode(enc, dec, in, out);

end:
    /* teardown the codecs */
    if (enc) {
        SPHENC1_delete(enc);
    }
    if (dec) {
        SPHDEC1_delete(dec);
    }

    /* close the engine */
    if (ce) {
        Engine_close(ce);
    }

    /* close the files */
    if (in) {
        fclose(in);
    }
    if (out) {
        fclose(out);
    }

    /* free buffers */
    if (inBuf) {
        Memory_contigFree(inBuf, IFRAMESIZE);
    }
    if (encodedBuf) {
        Memory_contigFree(encodedBuf, EFRAMESIZE);
    }
    if (outBuf) {
        Memory_contigFree(outBuf, OFRAMESIZE);
    }
    if (versionBuf) {
        Memory_contigFree(versionBuf, MAXVERSIONSIZE);
    }

    GT_0trace(curMask, GT_1CLASS, "app done.\n");
    return (0);
}