Update of /cvsroot/audacity/audacity-src/src/export
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv14746

Modified Files:
        ExportFLAC.cpp 
Log Message:
Add compression level

Index: ExportFLAC.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/export/ExportFLAC.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- ExportFLAC.cpp      12 Apr 2007 00:14:02 -0000      1.11
+++ ExportFLAC.cpp      26 Apr 2007 05:50:50 -0000      1.12
@@ -41,6 +41,29 @@
 
 #define SAMPLES_PER_RUN 8192
 
+static struct
+{
+   bool        do_exhaustive_model_search;
+   bool        do_escape_coding;
+   bool        do_mid_side_stereo;
+   bool        loose_mid_side_stereo;
+   unsigned    qlp_coeff_precision;
+   unsigned    min_residual_partition_order;
+   unsigned    max_residual_partition_order;
+   unsigned    rice_parameter_search_dist;
+   unsigned    max_lpc_order;
+} flacLevels[] = {
+   {  false,   false,   false,   false,   0, 2, 2, 0, 0  },
+   {  false,   false,   true,    true,    0, 2, 2, 0, 0  },
+   {  false,   false,   true,    false,   0, 0, 3, 0, 0  },
+   {  false,   false,   false,   false,   0, 3, 3, 0, 6  },
+   {  false,   false,   true,    true,    0, 3, 3, 0, 8  },
+   {  false,   false,   true,    false,   0, 3, 3, 0, 8  },
+   {  false,   false,   true,    false,   0, 0, 4, 0, 8  },
+   {  true,    false,   true,    false,   0, 0, 6, 0, 8  },
+   {  true,    false,   true,    false,   0, 0, 6, 0, 12 },
+};
+
 bool ExportFLAC(AudacityProject *project,
                 int numChannels, wxString fName,
                 bool selectionOnly, double t0, double t1, MixerSpec *mixerSpec)
@@ -54,9 +77,12 @@
 
    Tags *tags = project->GetTags();
 
+   int levelPref;
+   gPrefs->Read(wxT("/FileFormats/FLACLevel"), &levelPref, 5);
+
    wxString bitDepthPref =
       gPrefs->Read(wxT("/FileFormats/FLACBitDepth"), wxT("16"));
-   
+
    FLAC::Encoder::File *encoder= new FLAC::Encoder::File();
    encoder->set_filename(OSFILENAME(fName));
    encoder->set_channels(numChannels);
@@ -72,6 +98,21 @@
        format=int16Sample;
        encoder->set_bits_per_sample(16);
    }
+
+   // Duplicate the flac command line compression levels
+   if (levelPref < 0 || levelPref > 8) {
+      levelPref = 5;
+   }
+   
encoder->set_do_exhaustive_model_search(flacLevels[levelPref].do_exhaustive_model_search);
+   encoder->set_do_escape_coding(flacLevels[levelPref].do_escape_coding);
+   encoder->set_do_mid_side_stereo(flacLevels[levelPref].do_mid_side_stereo);
+   
encoder->set_loose_mid_side_stereo(flacLevels[levelPref].loose_mid_side_stereo);
+   encoder->set_qlp_coeff_precision(flacLevels[levelPref].qlp_coeff_precision);
+   
encoder->set_min_residual_partition_order(flacLevels[levelPref].min_residual_partition_order);
+   
encoder->set_max_residual_partition_order(flacLevels[levelPref].max_residual_partition_order);
+   
encoder->set_rice_parameter_search_dist(flacLevels[levelPref].rice_parameter_search_dist);
+   encoder->set_max_lpc_order(flacLevels[levelPref].max_lpc_order);
+
    encoder->init();
    
    int numWaveTracks;
@@ -148,6 +189,17 @@
    /// 
    void PopulateOrExchange(ShuttleGui & S)
    {
+      wxArrayString flacLevelNames, flacLevelLabels;
+      flacLevelLabels.Add(wxT("0")); flacLevelNames.Add(_("0 (fastest)"));
+      flacLevelLabels.Add(wxT("1")); flacLevelNames.Add(_("1"));
+      flacLevelLabels.Add(wxT("2")); flacLevelNames.Add(_("2"));
+      flacLevelLabels.Add(wxT("3")); flacLevelNames.Add(_("3"));
+      flacLevelLabels.Add(wxT("4")); flacLevelNames.Add(_("4"));
+      flacLevelLabels.Add(wxT("5")); flacLevelNames.Add(_("5"));
+      flacLevelLabels.Add(wxT("6")); flacLevelNames.Add(_("6"));
+      flacLevelLabels.Add(wxT("7")); flacLevelNames.Add(_("7"));
+      flacLevelLabels.Add(wxT("8")); flacLevelNames.Add(_("8 (best)"));
+
       wxArrayString flacBitDepthNames, flacBitDepthLabels;
       flacBitDepthLabels.Add(wxT("16")); flacBitDepthNames.Add(_("16 bit"));
       flacBitDepthLabels.Add(wxT("24")); flacBitDepthNames.Add(_("24 bit"));
@@ -158,6 +210,8 @@
          {
             S.StartTwoColumn();
             {
+               S.TieChoice(_("Level:"), wxT("/FileFormats/FLACLevel"),
+                           wxT("5"), flacLevelNames, flacLevelLabels);
                S.TieChoice(_("Bit depth:"), wxT("/FileFormats/FLACBitDepth"),
                            wxT("16"), flacBitDepthNames, flacBitDepthLabels);
             }


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to