Audacity 3.2.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MP3ExportOptionsEditor Class Referencefinal
Inheritance diagram for MP3ExportOptionsEditor:
[legend]
Collaboration diagram for MP3ExportOptionsEditor:
[legend]

Public Member Functions

 MP3ExportOptionsEditor (Listener *listener)
 
int GetOptionsCount () const override
 
bool GetOption (int index, ExportOption &option) const override
 
bool SetValue (int id, const ExportValue &value) override
 
bool GetValue (int id, ExportValue &value) const override
 
SampleRateList GetSampleRateList () const override
 
void Load (const audacity::BasicSettings &config) override
 
void Store (audacity::BasicSettings &config) const override
 
- Public Member Functions inherited from ExportOptionsEditor
virtual ~ExportOptionsEditor ()
 
virtual int GetOptionsCount () const =0
 
virtual bool GetOption (int index, ExportOption &option) const =0
 
virtual bool GetValue (ExportOptionID id, ExportValue &value) const =0
 
virtual bool SetValue (ExportOptionID id, const ExportValue &value)=0
 
virtual SampleRateList GetSampleRateList () const =0
 
virtual void Store (audacity::BasicSettings &settings) const =0
 
virtual void Load (const audacity::BasicSettings &config)=0
 

Private Member Functions

void OnModeChange (const std::string &mode)
 

Private Attributes

std::vector< ExportOptionmOptions
 
std::unordered_map< int, ExportValuemValues
 
ListenermListener {nullptr}
 

Additional Inherited Members

- Public Types inherited from ExportOptionsEditor
using SampleRateList = std::vector< int >
 

Detailed Description

Definition at line 272 of file ExportMP3.cpp.

Constructor & Destructor Documentation

◆ MP3ExportOptionsEditor()

MP3ExportOptionsEditor::MP3ExportOptionsEditor ( Listener listener)
inlineexplicit

Definition at line 279 of file ExportMP3.cpp.

281 , mListener(listener)
282 {
283 mValues.reserve(mOptions.size());
284 for(auto& option : mOptions)
285 mValues[option.id] = option.defaultValue;
286 }
const std::initializer_list< ExportOption > MP3Options
Definition: ExportMP3.cpp:222
std::unordered_map< int, ExportValue > mValues
Definition: ExportMP3.cpp:275
std::vector< ExportOption > mOptions
Definition: ExportMP3.cpp:274

References mOptions, and mValues.

Member Function Documentation

◆ GetOption()

bool MP3ExportOptionsEditor::GetOption ( int  index,
ExportOption option 
) const
inlineoverridevirtual

Implements ExportOptionsEditor.

Definition at line 293 of file ExportMP3.cpp.

294 {
295 if(index >= 0 && index < static_cast<int>(mOptions.size()))
296 {
297 option = mOptions[index];
298 return true;
299 }
300 return false;
301 }

References mOptions.

◆ GetOptionsCount()

int MP3ExportOptionsEditor::GetOptionsCount ( ) const
inlineoverridevirtual

Implements ExportOptionsEditor.

Definition at line 288 of file ExportMP3.cpp.

289 {
290 return static_cast<int>(mOptions.size());
291 }

References mOptions.

◆ GetSampleRateList()

SampleRateList MP3ExportOptionsEditor::GetSampleRateList ( ) const
inlineoverridevirtual

Implements ExportOptionsEditor.

Definition at line 355 of file ExportMP3.cpp.

356 {
357 // Retrieve preferences
358 int highrate = 48000;
359 int lowrate = 8000;
360
361 const auto rmode = *std::get_if<std::string>(&mValues.find(MP3OptionIDMode)->second);
362
363 if (rmode == "ABR") {
364 auto bitrate = *std::get_if<int>(&mValues.find(MP3OptionIDQualityABR)->second);
365 if (bitrate > 160) {
366 lowrate = 32000;
367 }
368 else if (bitrate < 32 || bitrate == 144) {
369 highrate = 24000;
370 }
371 }
372 else if (rmode == "CBR") {
373 auto bitrate = *std::get_if<int>(&mValues.find(MP3OptionIDQualityCBR)->second);
374
375 if (bitrate > 160) {
376 lowrate = 32000;
377 }
378 else if (bitrate < 32 || bitrate == 144) {
379 highrate = 24000;
380 }
381 }
382
383 SampleRateList result;
384 result.reserve(sampRates.size());
385 for(auto rate : sampRates)
386 if(rate >= lowrate && rate <= highrate)
387 result.push_back(rate);
388
389 return result;
390 }
static const std::vector< int > sampRates
Definition: ExportMP3.cpp:201
@ MP3OptionIDQualityABR
Definition: ExportMP3.cpp:217
@ MP3OptionIDQualityCBR
Definition: ExportMP3.cpp:218
@ MP3OptionIDMode
Definition: ExportMP3.cpp:214
std::vector< int > SampleRateList

References MP3OptionIDMode, MP3OptionIDQualityABR, MP3OptionIDQualityCBR, mValues, and sampRates.

◆ GetValue()

bool MP3ExportOptionsEditor::GetValue ( int  id,
ExportValue value 
) const
inlineoverride

Definition at line 344 of file ExportMP3.cpp.

345 {
346 const auto it = mValues.find(id);
347 if(it != mValues.end())
348 {
349 value = it->second;
350 return true;
351 }
352 return false;
353 }

References mValues.

◆ Load()

void MP3ExportOptionsEditor::Load ( const audacity::BasicSettings config)
inlineoverridevirtual

Implements ExportOptionsEditor.

Definition at line 392 of file ExportMP3.cpp.

393 {
394 wxString mode;
395 if(config.Read(wxT("/FileFormats/MP3RateModeChoice"), &mode))
396 mValues[MP3OptionIDMode] = mode.ToStdString();
397 else
398 {
399 //attempt to recover from old-style preference
400 int index;
401 if(config.Read(wxT("/FileFormats/MP3RateMode"), &index))
403 }
404
405 config.Read(wxT("/FileFormats/MP3SetRate"), std::get_if<int>(&mValues[MP3OptionIDQualitySET]));
406 config.Read(wxT("/FileFormats/MP3AbrRate"), std::get_if<int>(&mValues[MP3OptionIDQualityABR]));
407 config.Read(wxT("/FileFormats/MP3CbrRate"), std::get_if<int>(&mValues[MP3OptionIDQualityCBR]));
408 config.Read(wxT("/FileFormats/MP3VbrRate"), std::get_if<int>(&mValues[MP3OptionIDQualityVBR]));
409
410 OnModeChange(*std::get_if<std::string>(&mValues[MP3OptionIDMode]));
411 }
wxT("CloseDown"))
@ MP3OptionIDQualityVBR
Definition: ExportMP3.cpp:216
@ MP3OptionIDQualitySET
Definition: ExportMP3.cpp:215
void OnModeChange(const std::string &mode)
Definition: ExportMP3.cpp:430
virtual bool Read(const wxString &key, bool *value) const =0

References mOptions, MP3OptionIDMode, MP3OptionIDQualityABR, MP3OptionIDQualityCBR, MP3OptionIDQualitySET, MP3OptionIDQualityVBR, mValues, OnModeChange(), audacity::BasicSettings::Read(), and wxT().

Here is the call graph for this function:

◆ OnModeChange()

void MP3ExportOptionsEditor::OnModeChange ( const std::string &  mode)
inlineprivate

Definition at line 430 of file ExportMP3.cpp.

431 {
436
437 if(mode == "SET")
439 else if(mode == "ABR")
441 else if(mode == "CBR")
443 else if(mode == "VBR")
445 }
A type that provides a description of an exporting option. Isn't allowed to change except non-type re...
Definition: ExportTypes.h:43
@ Hidden
Option is not used and may be hidden from the user.
Definition: ExportTypes.h:51

References ExportOption::Hidden, mOptions, MP3OptionIDQualityABR, MP3OptionIDQualityCBR, MP3OptionIDQualitySET, and MP3OptionIDQualityVBR.

Referenced by Load(), and SetValue().

Here is the caller graph for this function:

◆ SetValue()

bool MP3ExportOptionsEditor::SetValue ( int  id,
const ExportValue value 
)
inlineoverride

Definition at line 303 of file ExportMP3.cpp.

304 {
305 const auto it = mValues.find(id);
306 if(it == mValues.end())
307 return false;
308 if(value.index() != it->second.index())
309 return false;
310
311 it->second = value;
312
313 switch(id)
314 {
315 case MP3OptionIDMode:
316 {
317 const auto mode = *std::get_if<std::string>(&value);
318 OnModeChange(mode);
319 if(mListener)
320 {
327
329 }
330 } break;
335 {
336 if(mListener)
338 } break;
339 default: break;
340 }
341 return true;
342 }
virtual void OnExportOptionChangeEnd()=0
Called after OnExportOptionChange
virtual void OnExportOptionChangeBegin()=0
Called before OnExportOptionChange
virtual void OnExportOptionChange(const ExportOption &option)=0
Called when option change.
virtual void OnSampleRateListChange()=0

References mListener, mOptions, MP3OptionIDMode, MP3OptionIDQualityABR, MP3OptionIDQualityCBR, MP3OptionIDQualitySET, MP3OptionIDQualityVBR, mValues, ExportOptionsEditor::Listener::OnExportOptionChange(), ExportOptionsEditor::Listener::OnExportOptionChangeBegin(), ExportOptionsEditor::Listener::OnExportOptionChangeEnd(), OnModeChange(), and ExportOptionsEditor::Listener::OnSampleRateListChange().

Here is the call graph for this function:

◆ Store()

void MP3ExportOptionsEditor::Store ( audacity::BasicSettings config) const
inlineoverridevirtual

Implements ExportOptionsEditor.

Definition at line 413 of file ExportMP3.cpp.

414 {
415 auto it = mValues.find(MP3OptionIDMode);
416 config.Write(wxT("/FileFormats/MP3RateModeChoice"), wxString(*std::get_if<std::string>(&it->second)));
417
419 config.Write(wxT("/FileFormats/MP3SetRate"), *std::get_if<int>(&it->second));
421 config.Write(wxT("/FileFormats/MP3AbrRate"), *std::get_if<int>(&it->second));
423 config.Write(wxT("/FileFormats/MP3CbrRate"), *std::get_if<int>(&it->second));
425 config.Write(wxT("/FileFormats/MP3VbrRate"), *std::get_if<int>(&it->second));
426 }
virtual bool Write(const wxString &key, bool value)=0

References MP3OptionIDMode, MP3OptionIDQualityABR, MP3OptionIDQualityCBR, MP3OptionIDQualitySET, MP3OptionIDQualityVBR, mValues, audacity::BasicSettings::Write(), and wxT().

Here is the call graph for this function:

Member Data Documentation

◆ mListener

Listener* MP3ExportOptionsEditor::mListener {nullptr}
private

Definition at line 276 of file ExportMP3.cpp.

Referenced by SetValue().

◆ mOptions

std::vector<ExportOption> MP3ExportOptionsEditor::mOptions
private

◆ mValues

std::unordered_map<int, ExportValue> MP3ExportOptionsEditor::mValues
private

The documentation for this class was generated from the following file: