Mercurial > octave-nkf
view libinterp/dldfcn/audioinfo.cc @ 19537:36a26a131209
Apply Octave coding style to audio project additions
* libinterp/dldfcn/__player_audioplayer__.cc,
libinterp/dldfcn/__recorder_audiorecorder__.cc,
libinterp/dldfcn/audiodevinfo.cc, libinterp/dldfcn/audioinfo.cc,
libinterp/dldfcn/audioread.cc, libinterp/dldfcn/audiowrite.cc,
libinterp/dldfcn/player_class.cc, libinterp/dldfcn/player_class.h,
libinterp/dldfcn/recorder_class.cc, libinterp/dldfcn/recorder_class.h,
scripts/audio/@audioplayer/__get_properties__.m,
scripts/audio/@audioplayer/audioplayer.m,
scripts/audio/@audioplayer/display.m, scripts/audio/@audioplayer/get.m,
scripts/audio/@audioplayer/isplaying.m, scripts/audio/@audioplayer/pause.m,
scripts/audio/@audioplayer/play.m,
scripts/audio/@audioplayer/playblocking.m,
scripts/audio/@audioplayer/resume.m, scripts/audio/@audioplayer/set.m,
scripts/audio/@audioplayer/stop.m, scripts/audio/@audioplayer/subsasgn.m,
scripts/audio/@audioplayer/subsref.m,
scripts/audio/@audiorecorder/__get_properties__.m,
scripts/audio/@audiorecorder/audiorecorder.m,
scripts/audio/@audiorecorder/display.m, scripts/audio/@audiorecorder/get.m,
scripts/audio/@audiorecorder/getaudiodata.m,
scripts/audio/@audiorecorder/getplayer.m,
scripts/audio/@audiorecorder/isrecording.m,
scripts/audio/@audiorecorder/pause.m, scripts/audio/@audiorecorder/play.m,
scripts/audio/@audiorecorder/record.m,
scripts/audio/@audiorecorder/recordblocking.m,
scripts/audio/@audiorecorder/resume.m, scripts/audio/@audiorecorder/set.m,
scripts/audio/@audiorecorder/stop.m,
scripts/audio/@audiorecorder/subsasgn.m,
scripts/audio/@audiorecorder/subsref.m: Apply consistent Octave indentation,
spacing, and quoting styles. Strip trailing whitespace. Remove braces from
one-line if-else blocks. Simplify some variable declarations.
author | Mike Miller <mtmiller@ieee.org> |
---|---|
date | Thu, 03 Oct 2013 07:52:58 -0400 |
parents | 1f551d169db2 |
children | ce02743b6f2a |
line wrap: on
line source
/* Copyright (C) 2013 Vytautas JanĨauskas This file is part of Octave. Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Octave; see the file COPYING. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include "oct.h" #include "ov-struct.h" #ifdef HAVE_SNDFILE #include <sndfile.h> #endif DEFUN_DLD (audioinfo, args, , "-*- texinfo -*-\n\ @deftypefn{Loadable Function} info = audioinfo (@var{filename})\n\ \n\ Return information about an audio file specified by @var{filename}.\ \n\ @end deftypefn") { octave_scalar_map retval; if (args.length () != 1 || not args(0).is_string ()) { print_usage (); return octave_value (retval); } #ifdef HAVE_SNDFILE Matrix audio; SNDFILE *file; SF_INFO info; info.format = 0; int start, end; file = sf_open (args(0).string_value ().c_str (), SFM_READ, &info); retval.assign ("Filename", args(0).string_value ()); retval.assign ("CompressionMethod", ""); retval.assign ("NumChannels", info.channels); retval.assign ("SampleRate", info.samplerate); retval.assign ("TotalSamples", info.frames); retval.assign ("Duration", (float)info.frames / (float)info.samplerate); int bits; if (info.format & SF_FORMAT_PCM_S8) bits = 8; else if (info.format & SF_FORMAT_PCM_U8) bits = 8; else if (info.format & SF_FORMAT_PCM_16) bits = 16; else if (info.format & SF_FORMAT_PCM_24) bits = 24; else if (info.format & SF_FORMAT_PCM_32) bits = 32; else bits = -1; retval.assign ("BitsPerSample", bits); retval.assign ("BitRate", -1); retval.assign ("Title", sf_get_string (file, SF_STR_TITLE)); retval.assign ("Artist", sf_get_string (file, SF_STR_ARTIST)); retval.assign ("Comment", sf_get_string (file, SF_STR_COMMENT)); #else error ("sndfile not found on your system and thus audioinfo is not functional"); #endif return octave_value (retval); }