more ongoing SAE-driven changes (too many too list here)

git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2715 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2007-11-26 17:20:34 +00:00
parent 90a5607604
commit 1268bf8b45
17 changed files with 272 additions and 95 deletions

View file

@ -25,6 +25,7 @@
#include <pbd/error.h>
#include <pbd/convert.h>
#include <gtkmm2ext/utils.h>
#include <ardour/profile.h>
#include "utils.h"
#include "add_route_dialog.h"
@ -70,6 +71,14 @@ AddRouteDialog::AddRouteDialog ()
if (track_mode_strings.empty()) {
track_mode_strings = I18N (track_mode_names);
if (ARDOUR::Profile->get_sae()) {
/* remove all but the first track mode (Normal) */
while (track_mode_strings.size() > 1) {
track_mode_strings.pop_back();
}
}
}
set_name ("AddRouteDialog");

View file

@ -95,6 +95,9 @@
<menuitem action='select-all-in-punch-range'/>
<menuitem action='select-all-in-loop-range'/>
<separator/>
<menuitem action='select-next-route'/>
<menuitem action='select-prev-route'/>
<separator/>
<menu action='EditCursorMovementOptions'>
<menuitem action='edit-cursor-to-next-region-start'/>
<menuitem action='edit-cursor-to-next-region-end'/>
@ -154,9 +157,6 @@
<menuitem action='ToggleMaximalEditor'/>
<separator/>
<menu name='ZoomFocus' action='ZoomFocus'>
<menuitem action='zoom-focus-left'/>
<menuitem action='zoom-focus-right'/>
<menuitem action='zoom-focus-center'/>
<menuitem action='zoom-focus-playhead'/>
<menuitem action='zoom-focus-edit'/>
<menuitem action='zoom-focus-mouse'/>
@ -208,6 +208,7 @@
<separator/>
<menuitem action='show-editor-mixer'/>
<menuitem action='SyncEditorAndMixerTrackOrder'/>
<menuitem action='ToggleMeasureVisibility'/>
<menuitem action='ToggleLogoVisibility'/>
<separator/>
<menuitem action='goto-editor'/>

View file

@ -10,10 +10,10 @@
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
; (gtk_accel_path "<Actions>/Editor/Edit" "")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>comma")
(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "<Alt>KP_Decimal")
(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "KP_Decimal")
(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "KP_Divide")
(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "KP_Multiply")
(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave")
(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "1")
(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "2")
(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3")
; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
@ -73,6 +73,8 @@
; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
(gtk_accel_path "<Actions>/Editor/editor-paste" "<Control>v")
(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
(gtk_accel_path "<Actions>/Editor/select-next-route" "<Ctrl>Page_Down")
(gtk_accel_path "<Actions>/Editor/select-prev-route" "<Ctrl>Page_Up")
; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
@ -333,3 +335,5 @@
(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8")
(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
(gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4")

View file

@ -43,6 +43,7 @@
#include <ardour/location.h>
#include <ardour/panner.h>
#include <ardour/playlist.h>
#include <ardour/profile.h>
#include <ardour/session.h>
#include <ardour/session_playlist.h>
#include <ardour/utils.h>
@ -251,8 +252,12 @@ AudioTimeAxisView::append_extra_display_menu_items ()
waveform_items.push_back (RadioMenuElem (group, _("Traditional"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Traditional)));
traditional_item = static_cast<RadioMenuItem *> (&waveform_items.back());
waveform_items.push_back (RadioMenuElem (group, _("Rectified"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Rectified)));
rectified_item = static_cast<RadioMenuItem *> (&waveform_items.back());
if (!Profile->get_sae()) {
waveform_items.push_back (RadioMenuElem (group, _("Rectified"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Rectified)));
rectified_item = static_cast<RadioMenuItem *> (&waveform_items.back());
} else {
rectified_item = 0;
}
waveform_items.push_back (SeparatorElem());
@ -268,9 +273,11 @@ AudioTimeAxisView::append_extra_display_menu_items ()
AudioStreamView* asv = audio_view();
if (asv) {
ignore_toggle = true;
if (asv->get_waveform_shape() == Rectified)
if (asv->get_waveform_shape() == Rectified && rectified_item) {
rectified_item->set_active(true);
else traditional_item->set_active(true);
} else {
traditional_item->set_active(true);
}
if (asv->get_waveform_scale() == LogWaveform)
logscale_item->set_active(true);

View file

@ -318,6 +318,7 @@ Editor::Editor ()
_dragging_playhead = false;
_dragging_edit_point = false;
_dragging_hscrollbar = false;
select_new_marker = false;
scrubbing_direction = 0;
@ -489,7 +490,7 @@ Editor::Editor ()
CellRendererToggle* route_list_visible_cell = dynamic_cast<CellRendererToggle*>(route_list_display.get_column_cell_renderer (0));
route_list_visible_cell->property_activatable() = true;
route_list_visible_cell->property_radio() = false;
route_display_model->signal_row_deleted().connect (mem_fun (*this, &Editor::route_list_delete));
route_display_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_list_change));
route_display_model->signal_rows_reordered().connect (mem_fun (*this, &Editor::track_list_reorder));
@ -579,6 +580,10 @@ Editor::Editor ()
region_list_display.append_column (_("Regions"), region_list_columns.name);
region_list_display.set_headers_visible (false);
CellRendererText* region_name_cell = dynamic_cast<CellRendererText*>(region_list_display.get_column_cell_renderer (0));
region_name_cell->property_editable() = true;
region_name_cell->signal_edited().connect (mem_fun (*this, &Editor::region_name_edit));
region_list_display.get_selection()->set_select_function (mem_fun (*this, &Editor::region_list_selection_filter));
TreeViewColumn* tv_col = region_list_display.get_column(0);
@ -4226,3 +4231,37 @@ Editor::get_regions_for_action ()
tmp_regions = get_regions_at (where, selection->tracks);
return tmp_regions;
}
void
Editor::get_regions_corresponding_to (boost::shared_ptr<Region> region, vector<RegionView*>& regions)
{
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
RouteTimeAxisView* tatv;
if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) {
boost::shared_ptr<Playlist> pl;
vector<boost::shared_ptr<Region> > results;
RegionView* marv;
boost::shared_ptr<Diskstream> ds;
if ((ds = tatv->get_diskstream()) == 0) {
/* bus */
continue;
}
if ((pl = (ds->playlist())) != 0) {
pl->get_region_list_equivalent_regions (region, results);
}
for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) {
if ((marv = tatv->view()->find_view (*ir)) != 0) {
regions.push_back (marv);
}
}
}
}
}

View file

@ -763,13 +763,15 @@ class Editor : public PublicEditor
RegionListDisplayModelColumns region_list_columns;
Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Region> > region_list_display;
Glib::RefPtr<Gtk::TreeStore> region_list_model;
Glib::RefPtr<Gtk::ToggleAction> toggle_full_region_list_action;
Glib::RefPtr<Gtk::ToggleAction> toggle_show_auto_regions_action;
void region_list_selection_changed ();
bool region_list_selection_filter (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::Path& path, bool yn);
void region_name_edit (const Glib::ustring&, const Glib::ustring&);
void get_regions_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& regions);
Gtk::Menu *region_list_menu;
Gtk::ScrolledWindow region_list_scroller;
@ -1096,6 +1098,7 @@ class Editor : public PublicEditor
void set_punch_range (nframes_t start, nframes_t end, std::string cmd);
void add_location_from_playhead_cursor ();
bool select_new_marker;
void reverse_selection ();
void edit_envelope ();
@ -1969,6 +1972,8 @@ class Editor : public PublicEditor
void fast_update_strips ();
bool meters_running;
void select_next_route ();
void select_prev_route ();
};
#endif /* __ardour_editor_h__ */

View file

@ -149,6 +149,12 @@ Editor::register_actions ()
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "select-all-in-loop-range", _("Select All in Loop Range"), mem_fun(*this, &Editor::select_all_selectables_using_loop));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "select-next-route", _("Select Next Track/Bus"), mem_fun(*this, &Editor::select_next_route));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "select-prev-route", _("Select Previous Track/Bus"), mem_fun(*this, &Editor::select_prev_route));
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_action (editor_actions, "goto-mark-1", _("Locate to Mark 1"), bind (mem_fun (*this, &Editor::goto_nth_marker), 0));
ActionManager::session_sensitive_actions.push_back (act);

View file

@ -135,6 +135,11 @@ Editor::add_new_location (Location *location)
newpair.second = lam;
location_markers.insert (newpair);
if (select_new_marker && location->is_mark()) {
selection->set (lam->start);
select_new_marker = false;
}
}
void

View file

@ -1508,6 +1508,8 @@ Editor::add_location_from_playhead_cursor ()
nframes_t where = session->audible_frame();
select_new_marker = true;
session->locations()->next_available_name(markername,"mark");
Location *location = new Location (where, where, markername, Location::IsMark);
session->begin_reversible_command (_("add marker"));
@ -4192,3 +4194,56 @@ Editor::trim_region (bool front)
}
commit_reversible_command ();
}
struct EditorOrderRouteSorter {
bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
/* use of ">" forces the correct sort order */
return a->order_key ("editor") < b->order_key ("editor");
}
};
void
Editor::select_next_route()
{
if (selection->tracks.empty()) {
selection->set (track_views.front());
return;
}
TimeAxisView* current = selection->tracks.front();
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
if (*i == current) {
++i;
if (i != track_views.end()) {
selection->set (*i);
} else {
selection->set (*(track_views.begin()));
}
break;
}
}
}
void
Editor::select_prev_route()
{
if (selection->tracks.empty()) {
selection->set (track_views.front());
return;
}
TimeAxisView* current = selection->tracks.front();
for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) {
if (*i == current) {
++i;
if (i != track_views.rend()) {
selection->set (*i);
} else {
selection->set (*(track_views.rbegin()));
}
break;
}
}
}

View file

@ -38,6 +38,7 @@
#include "ardour_ui.h"
#include "gui_thread.h"
#include "actions.h"
#include "region_view.h"
#include "utils.h"
#include "i18n.h"
@ -632,3 +633,30 @@ Editor::region_list_selection_filter (const RefPtr<TreeModel>& model, const Tree
return true;
}
void
Editor::region_name_edit (const Glib::ustring& path, const Glib::ustring& new_text)
{
boost::shared_ptr<Region> region;
TreeIter iter;
if ((iter = region_list_model->get_iter (path))) {
region = (*iter)[region_list_columns.region];
(*iter)[region_list_columns.name] = new_text;
}
/* now mapover everything */
if (region) {
vector<RegionView*> equivalents;
get_regions_corresponding_to (region, equivalents);
for (vector<RegionView*>::iterator i = equivalents.begin(); i != equivalents.end(); ++i) {
if (new_text != (*i)->region()->name()) {
(*i)->region()->set_name (new_text);
}
}
}
}

View file

@ -558,40 +558,18 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
return commit;
}
void
Editor::set_selected_regionview_from_region_list (boost::shared_ptr<Region> region, Selection::Operation op)
{
vector<RegionView*> all_equivalent_regions;
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
RouteTimeAxisView* tatv;
if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) {
boost::shared_ptr<Playlist> pl;
vector<boost::shared_ptr<Region> > results;
RegionView* marv;
boost::shared_ptr<Diskstream> ds;
if ((ds = tatv->get_diskstream()) == 0) {
/* bus */
continue;
}
if ((pl = (ds->playlist())) != 0) {
pl->get_region_list_equivalent_regions (region, results);
}
for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) {
if ((marv = tatv->view()->find_view (*ir)) != 0) {
all_equivalent_regions.push_back (marv);
}
}
}
get_regions_corresponding_to (region, all_equivalent_regions);
if (all_equivalent_regions.empty()) {
return;
}
switch (op) {
case Selection::Toggle:
/* XXX this is not correct */

View file

@ -38,6 +38,7 @@
#include <ardour/audioengine.h>
#include <ardour/gdither.h>
#include <ardour/utils.h>
#include <ardour/profile.h>
#include "export_dialog.h"
#include "ardour_ui.h"
@ -318,30 +319,52 @@ ExportDialog::ExportDialog(PublicEditor& e)
format_table.set_col_spacings (5);
format_table.set_row_spacings (5);
format_table.attach (channel_count_label, 0, 1, 0, 1);
format_table.attach (channel_count_combo, 1, 2, 0, 1);
int row = 0;
format_table.attach (channel_count_label, 0, 1, row, row+1);
format_table.attach (channel_count_combo, 1, 2, row, row+1);
row++;
format_table.attach (header_format_label, 0, 1, 1, 2);
format_table.attach (header_format_combo, 1, 2, 1, 2);
format_table.attach (header_format_label, 0, 1, row, row+1);
format_table.attach (header_format_combo, 1, 2, row, row+1);
format_table.attach (bitdepth_format_label, 0, 1, 2, 3);
format_table.attach (bitdepth_format_combo, 1, 2, 2, 3);
row++;
format_table.attach (endian_format_label, 0, 1, 3, 4);
format_table.attach (endian_format_combo, 1, 2, 3, 4);
format_table.attach (bitdepth_format_label, 0, 1, row, row+1);
format_table.attach (bitdepth_format_combo, 1, 2, row, row+1);
format_table.attach (sample_rate_label, 0, 1, 4, 5);
format_table.attach (sample_rate_combo, 1, 2, 4, 5);
row++;
format_table.attach (src_quality_label, 0, 1, 5, 6);
format_table.attach (src_quality_combo, 1, 2, 5, 6);
if (!Profile->get_sae()) {
format_table.attach (endian_format_label, 0, 1, row, row+1);
format_table.attach (endian_format_combo, 1, 2, row, row+1);
row++;
}
format_table.attach (dither_type_label, 0, 1, 6, 7);
format_table.attach (dither_type_combo, 1, 2, 6, 7);
format_table.attach (sample_rate_label, 0, 1, row, row+1);
format_table.attach (sample_rate_combo, 1, 2, row, row+1);
format_table.attach (cue_file_label, 0, 1, 7, 8);
format_table.attach (cue_file_combo, 1, 2, 7, 8);
format_table.attach (cuefile_only_checkbox, 0, 2, 8, 9);
row++;
if (!Profile->get_sae()) {
format_table.attach (src_quality_label, 0, 1, row, row+1);
format_table.attach (src_quality_combo, 1, 2, row, row+1);
row++;
}
format_table.attach (dither_type_label, 0, 1, row, row+1);
format_table.attach (dither_type_combo, 1, 2, row, row+1);
row++;
if (!Profile->get_sae()) {
format_table.attach (cue_file_label, 0, 1, row, row+1);
format_table.attach (cue_file_combo, 1, 2, row, row+1);
row++;
format_table.attach (cuefile_only_checkbox, 0, 2, row, row+1);
}
file_entry.set_name ("ExportFileDisplay");
@ -918,7 +941,7 @@ ExportDialog::do_export ()
return;
}
if (export_cd_markers_allowed) {
if (!Profile->get_sae() && export_cd_markers_allowed) {
if (cue_file_combo.get_active_text () != _("None")) {
do_export_cd_markers (file_entry.get_text(), cue_file_combo.get_active_text ());
}
@ -1212,10 +1235,12 @@ ExportDialog::initSpec(string &filepath)
spec.format = 0;
spec.format |= sndfile_header_format_from_string (header_format_combo.get_active_text ());
if ((spec.format & SF_FORMAT_WAV) == 0) {
/* RIFF/WAV specifies endianess */
spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ());
if (!Profile->get_sae()) {
if ((spec.format & SF_FORMAT_WAV) == 0) {
/* RIFF/WAV specifies endianess */
spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ());
}
}
spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ());
@ -1237,17 +1262,21 @@ ExportDialog::initSpec(string &filepath)
spec.sample_rate = session->frame_rate();
}
string src_str = src_quality_combo.get_active_text();
if (src_str == _("fastest")) {
spec.src_quality = SRC_ZERO_ORDER_HOLD;
} else if (src_str == _("linear")) {
spec.src_quality = SRC_LINEAR;
} else if (src_str == _("better")) {
spec.src_quality = SRC_SINC_FASTEST;
} else if (src_str == _("intermediate")) {
spec.src_quality = SRC_SINC_MEDIUM_QUALITY;
} else {
if (Profile->get_sae()) {
spec.src_quality = SRC_SINC_BEST_QUALITY;
} else {
string src_str = src_quality_combo.get_active_text();
if (src_str == _("fastest")) {
spec.src_quality = SRC_ZERO_ORDER_HOLD;
} else if (src_str == _("linear")) {
spec.src_quality = SRC_LINEAR;
} else if (src_str == _("better")) {
spec.src_quality = SRC_SINC_FASTEST;
} else if (src_str == _("intermediate")) {
spec.src_quality = SRC_SINC_MEDIUM_QUALITY;
} else {
spec.src_quality = SRC_SINC_BEST_QUALITY;
}
}
string dither_str = dither_type_combo.get_active_text();

View file

@ -42,6 +42,7 @@
#include <ardour/panner.h>
#include <ardour/send.h>
#include <ardour/insert.h>
#include <ardour/profile.h>
#include <ardour/ladspa_plugin.h>
#include <ardour/connection.h>
#include <ardour/session_connection.h>
@ -992,7 +993,9 @@ MixerStrip::build_route_ops_menu ()
build_remote_control_menu ();
items.push_back (SeparatorElem());
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
if (!Profile->get_sae()) {
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
}
items.push_back (SeparatorElem());
items.push_back (MenuElem (_("Remove"), mem_fun(*this, &RouteUI::remove_this_route)));

View file

@ -50,6 +50,7 @@
#include <ardour/session.h>
#include <ardour/session_playlist.h>
#include <ardour/utils.h>
#include <ardour/profile.h>
#include "ardour_ui.h"
#include "route_time_axis.h"
@ -416,7 +417,9 @@ RouteTimeAxisView::build_display_menu ()
items.push_back (SeparatorElem());
build_remote_control_menu ();
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
if (!Profile->get_sae()) {
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
}
build_automation_action_menu ();
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
@ -446,10 +449,10 @@ RouteTimeAxisView::build_display_menu ()
if (get_diskstream()->alignment_style() == CaptureTime)
align_capture_item->set_active();
items.push_back (MenuElem (_("Alignment"), *alignment_menu));
get_diskstream()->AlignmentStyleChanged.connect (
mem_fun(*this, &RouteTimeAxisView::align_style_changed));
if (!Profile->get_sae()) {
items.push_back (MenuElem (_("Alignment"), *alignment_menu));
get_diskstream()->AlignmentStyleChanged.connect (mem_fun(*this, &RouteTimeAxisView::align_style_changed));
}
RadioMenuItem::Group mode_group;
items.push_back (RadioMenuElem (mode_group, _("Normal mode"),

View file

@ -28,7 +28,7 @@ using std::string;
// Use this define when initializing arrarys for use in sndfile_*_format()
#define SNDFILE_STR_LENGTH 32
#define SNDFILE_HEADER_FORMATS 7
#define SNDFILE_HEADER_FORMATS 5
extern const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1];
extern const char * const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1];

View file

@ -149,8 +149,19 @@ Auditioner::audition_region (boost::shared_ptr<Region> region)
_panner->reset (n_outputs(), _diskstream->n_channels());
length = the_region->length();
_diskstream->seek (0);
current_frame = 0;
int dir;
nframes_t offset = the_region->sync_offset (dir);
/* can't audition from a negative sync point */
if (dir < 0) {
offset = 0;
}
_diskstream->seek (offset);
current_frame = offset;
g_atomic_int_set (&_active, 1);
}

View file

@ -33,33 +33,27 @@ using namespace std;
const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = {
N_("WAV"),
N_("AIFF"),
N_("raw (no header)"),
N_("PAF (Ensoniq Paris)"),
N_("AU (Sun/NeXT)"),
N_("IRCAM"),
N_("CAF"),
N_("W64 (64 bit WAV)"),
N_("raw (no header)"),
0
};
const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = {
N_(".wav"),
N_(".aiff"),
N_(".raw"),
N_(".paf"),
N_(".au"),
N_(".ircam"),
N_(".caf"),
N_(".w64"),
N_(".raw"),
0
};
int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = {
SF_FORMAT_WAV,
SF_FORMAT_AIFF,
SF_FORMAT_RAW,
SF_FORMAT_PAF,
SF_FORMAT_AU,
SF_FORMAT_IRCAM,
SF_FORMAT_W64
SF_FORMAT_CAF,
SF_FORMAT_W64,
SF_FORMAT_RAW
};
const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = {