Exemplo n.º 1
0
static void g_convert_float32_to_int24(t_wav_float32 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count)
{
    t_wav_uint32 n;
    for(n=0; n<p_sample_count; n++)
    {
        write_int24(p_output,(t_wav_int32) ( p_sample_buffer[n] * 0x800000 ));
        p_output += 3;
    }
}
Exemplo n.º 2
0
static void g_convert_int16_to_int24(t_wav_int16 const * p_sample_buffer,t_wav_uint8 * p_output,t_wav_uint32 p_sample_count)
{
    t_wav_uint32 n;
    for(n=0; n<p_sample_count; n++)
    {
        write_int24(p_output,(t_wav_int32) p_sample_buffer[n] << 8 );
        p_output += 3;
    }
}
Exemplo n.º 3
0
static bool write_FUN_chunk(IOStream *ios, size_t chunk_size)
{
    if (!chunk_begin(ios, "FUN ", chunk_size))
        return false;

    Function *functions = (Function*)AR_data(&ar_functions);
    size_t nfunction = AR_size(&ar_functions), n, i;

    if (!write_int32(ios, (int)nfunction))
        return false;

    /* Write function headers */
    for (n = 0; n < nfunction; ++n)
    {
        if (!write_int16(ios, 0) ||
            !write_int8(ios, functions[n].nret) ||
            !write_int8(ios, functions[n].nparam))
        {
            return false;
        }
    }

    /* Write function instructions */
    for (n = 0; n < nfunction; ++n)
    {
        Instruction *ins = functions[n].instrs;
        for (i = 0; (int)i < functions[n].ninstr; ++i)
        {
            assert(ins[i].opcode == (ins[i].opcode&255));
            assert(ins[i].argument >= -0x00800000 && ins[i].argument <= 0x007fffff);
            if (!write_int8(ios, ins[i].opcode) ||
                !write_int24(ios, ins[i].argument))
                return false;
        }
        if (!write_int32(ios, 0))
            return false;
    }

    return chunk_end(ios, chunk_size);
}