#------------------------------------------------------------------------ # # Copyright (c) 1997-1998 by Cornell University. # # See the file "license.txt" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # #------------------------------------------------------------------------ package require DvmBasic package require DvmAmap package require DvmWave source ../lib/wavelib.tcl if {$argc != 2} { puts "enter input 8 bit ulaw wav filename :" set inname [gets stdin] puts "enter output wav filename :" set outname [gets stdin] } else { set inname [lindex $argv 0] set outname [lindex $argv 1] } ### u-law to pcm mapping ## read u-law audio in buffer set wave [read_wave $inname] set hdr [lindex $wave 0] set audio [lindex $wave 1] set inbs [lindex $wave 2] # Apply map to convert u-law into PCM set utolinmap [audiomap_8to16_new] audiomap_8to16_init_ulaw_to_linear $utolinmap set outaudio [audio_16_new [audio_get_num_of_samples $audio]] audiomap_8to16_apply $utolinmap $audio $outaudio # Change hdr to be a valid PCM Wave header wave_hdr_set_format $hdr 1 wave_hdr_set_bits_per_sample $hdr 16 wave_hdr_set_bytes_per_sec $hdr [expr [wave_hdr_get_bytes_per_sec $hdr]*2] wave_hdr_set_block_align $hdr [expr [wave_hdr_get_block_align $hdr] * 2] wave_hdr_set_data_len $hdr [expr [wave_hdr_get_data_len $hdr] * 2] # Write the PCM audio in Wave format write_wave $hdr $outaudio $outname # Wrap up wave_hdr_free $hdr bitstream_free $inbs audio_free $outaudio audiomap_free $utolinmap