samer@44: % aacfile - audio signal from AAC file using faad samer@44: % samer@44: % aacfile :: samer@44: % path ~'path to AAC encoded audio file', samer@44: % options { bits :: natural/16 ~'requested sample resolution' } samer@44: % -> signal(C,R). samer@44: % samer@44: % Options are also passed to RAWPIPE samer@44: function s=aacfile(file,varargin) samer@44: opts=options('bits',16,varargin{:}); samer@44: % this is just to get format information - it's no good for getting data samer@50: s1=sndpipe(sprintf('faad -w %s',bash_arg(file))); samer@44: samer@44: % can't remember what's wrong with this... samer@44: % s=sndpipe(sprintf('faad -f 2 -w "%s" | sox -t raw -r %d -b 16 -c %d -e signed - -t au -',file,rate(s1),channels(s1)),'stringfn',@()sprintf('aacfile(''%s'')',file),varargin{:}); samer@44: switch opts.bits samer@44: case 16, bits_code=1; samer@44: case 24, bits_code=2; samer@44: case 32, bits_code=3; samer@44: otherwise, error('Illegal bits-per-sample'); samer@44: end samer@44: samer@44: s=rawpipe( sprintf('faad -f 2 -b %d -w %s',bits_code,bash_arg(file)), ... samer@44: audio_format(channels(s1),rate(s1),opts.bits), ... samer@44: 'stringfn',@()sprintf('aacfile(''%s'')',file), ... samer@44: opts); samer@44: end samer@44: