Audacity  2.2.2
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Attributes | List of all members
ExportPlugin Class Referenceabstract

#include <Export.h>

Inheritance diagram for ExportPlugin:
ExportCL ExportMP3 ExportPCM

Public Member Functions

 ExportPlugin ()
 
virtual ~ExportPlugin ()
 
int AddFormat ()
 Add a NEW entry to the list of formats this plug-in can export. More...
 
void SetFormat (const wxString &format, int index)
 
void SetDescription (const wxString &description, int index)
 
void AddExtension (const wxString &extension, int index)
 
void SetExtensions (const wxArrayString &extensions, int index)
 
void SetMask (const wxString &mask, int index)
 
void SetMaxChannels (unsigned maxchannels, unsigned index)
 
void SetCanMetaData (bool canmetadata, int index)
 
virtual int GetFormatCount ()
 
virtual wxString GetFormat (int index)
 
virtual wxString GetDescription (int index)
 
virtual wxString GetExtension (int index=0)
 Return the (first) file name extension for the sub-format. More...
 
virtual wxArrayString GetExtensions (int index=0)
 Return all the file name extensions used for the sub-format. More...
 
virtual wxString GetMask (int index)
 
virtual unsigned GetMaxChannels (int index)
 
virtual bool GetCanMetaData (int index)
 
virtual bool IsExtension (const wxString &ext, int index)
 
virtual bool DisplayOptions (wxWindow *parent, int format=0)
 
virtual wxWindow * OptionsCreate (wxWindow *parent, int format)=0
 
virtual bool CheckFileName (wxFileName &filename, int format=0)
 
virtual int SetNumExportChannels ()
 Exporter plug-ins may override this to specify the number of channels in exported file. -1 for unspecified. More...
 
virtual ProgressResult Export (AudacityProject *project, std::unique_ptr< ProgressDialog > &pDialog, unsigned channels, const wxString &fName, bool selectedOnly, double t0, double t1, MixerSpec *mixerSpec=NULL, const Tags *metadata=NULL, int subformat=0)=0
 called to export audio into a file. More...
 

Protected Member Functions

std::unique_ptr< MixerCreateMixer (const WaveTrackConstArray &inputTracks, const TimeTrack *timeTrack, double startTime, double stopTime, unsigned numOutChannels, size_t outBufferSize, bool outInterleaved, double outRate, sampleFormat outFormat, bool highQuality=true, MixerSpec *mixerSpec=NULL)
 

Static Protected Member Functions

static void InitProgress (std::unique_ptr< ProgressDialog > &pDialog, const wxString &title, const wxString &message)
 

Private Attributes

std::vector< FormatInfomFormatInfos
 

Detailed Description

Definition at line 60 of file Export.h.

Constructor & Destructor Documentation

ExportPlugin::ExportPlugin ( )

Definition at line 77 of file Export.cpp.

78 {
79 }
ExportPlugin::~ExportPlugin ( )
virtual

Definition at line 81 of file Export.cpp.

82 {
83 }

Member Function Documentation

void ExportPlugin::AddExtension ( const wxString &  extension,
int  index 
)

Definition at line 123 of file Export.cpp.

References mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

124 {
125  mFormatInfos[index].mExtensions.Add(extension);
126 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
int ExportPlugin::AddFormat ( )

Add a NEW entry to the list of formats this plug-in can export.

To configure the format use SetFormat, SetCanMetaData etc with the index of the format.

Returns
The number of formats currently set up. This is one more than the index of the newly added format.

Definition at line 97 of file Export.cpp.

References mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

98 {
99  FormatInfo nf;
100  mFormatInfos.push_back(nf);
101  return mFormatInfos.size();
102 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
bool ExportPlugin::CheckFileName ( wxFileName &  filename,
int  format = 0 
)
virtual

Reimplemented in ExportMP3, and ExportPCM.

Definition at line 85 of file Export.cpp.

Referenced by ExportPCM::CheckFileName().

86 {
87  return true;
88 }
std::unique_ptr< Mixer > ExportPlugin::CreateMixer ( const WaveTrackConstArray inputTracks,
const TimeTrack timeTrack,
double  startTime,
double  stopTime,
unsigned  numOutChannels,
size_t  outBufferSize,
bool  outInterleaved,
double  outRate,
sampleFormat  outFormat,
bool  highQuality = true,
MixerSpec mixerSpec = NULL 
)
protected

Definition at line 235 of file Export.cpp.

Referenced by ExportCL::Export(), ExportPCM::Export(), and ExportMP3::Export().

241 {
242  // MB: the stop time should not be warped, this was a bug.
243  return std::make_unique<Mixer>(inputTracks,
244  // Throw, to stop exporting, if read fails:
245  true,
246  Mixer::WarpOptions(timeTrack),
247  startTime, stopTime,
248  numOutChannels, outBufferSize, outInterleaved,
249  outRate, outFormat,
250  highQuality, mixerSpec);
251 }
bool ExportPlugin::DisplayOptions ( wxWindow *  parent,
int  format = 0 
)
virtual

Definition at line 210 of file Export.cpp.

211 {
212  return false;
213 }
virtual ProgressResult ExportPlugin::Export ( AudacityProject project,
std::unique_ptr< ProgressDialog > &  pDialog,
unsigned  channels,
const wxString &  fName,
bool  selectedOnly,
double  t0,
double  t1,
MixerSpec mixerSpec = NULL,
const Tags metadata = NULL,
int  subformat = 0 
)
pure virtual

called to export audio into a file.

Parameters
pDialogTo be initialized with pointer to a NEW ProgressDialog if it was null, otherwise gives an existing dialog to be reused (working around a problem in wxWidgets for Mac; see bug 1600)
selectedOnlySet to true if all tracks should be mixed, to false if only the selected tracks should be mixed and exported.
metadataA Tags object that will over-ride the one in *project and be used to tag the file that is exported.
subformatControl which of the multiple formats this exporter is capable of exporting should be used. Used where a single export plug-in handles a number of related formats, but they have separate entries in the Format drop-down list box. For example, the options to export to "Other PCM", "AIFF 16 Bit" and "WAV 16 Bit" are all the same libsndfile export plug-in, but with subformat set to 0, 1, and 2 respectively.
Returns
ProgressResult::Failed or ProgressResult::Cancelled if export fails to complete for any reason, in which case this function is responsible for alerting the user. Otherwise ProgressResult::Success or ProgressResult::Stopped

Implemented in ExportMP3, ExportPCM, and ExportCL.

bool ExportPlugin::GetCanMetaData ( int  index)
virtual

Definition at line 191 of file Export.cpp.

References mFormatInfos.

192 {
193  return mFormatInfos[index].mCanMetaData;
194 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
wxString ExportPlugin::GetDescription ( int  index)
virtual

Definition at line 153 of file Export.cpp.

References mFormatInfos.

Referenced by GetMask().

154 {
155  return mFormatInfos[index].mDescription;
156 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
wxString ExportPlugin::GetExtension ( int  index = 0)
virtual

Return the (first) file name extension for the sub-format.

Parameters
indexThe sub-format for which the extension is wanted

Reimplemented in ExportPCM.

Definition at line 158 of file Export.cpp.

References mFormatInfos.

Referenced by ExportPCM::GetExtension(), and IsExtension().

159 {
160  return mFormatInfos[index].mExtensions[0];
161 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
wxArrayString ExportPlugin::GetExtensions ( int  index = 0)
virtual

Return all the file name extensions used for the sub-format.

Parameters
indexthe sub-format for which the extension is required

Definition at line 163 of file Export.cpp.

References mFormatInfos.

Referenced by GetMask(), and IsExtension().

164 {
165  return mFormatInfos[index].mExtensions;
166 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
wxString ExportPlugin::GetFormat ( int  index)
virtual

Definition at line 148 of file Export.cpp.

References mFormatInfos.

149 {
150  return mFormatInfos[index].mFormat;
151 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
int ExportPlugin::GetFormatCount ( )
virtual

Definition at line 104 of file Export.cpp.

References mFormatInfos.

Referenced by IsExtension().

105 {
106  return mFormatInfos.size();
107 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
wxString ExportPlugin::GetMask ( int  index)
virtual

Definition at line 168 of file Export.cpp.

References exts, GetDescription(), GetExtensions(), and mFormatInfos.

169 {
170  if (!mFormatInfos[index].mMask.IsEmpty()) {
171  return mFormatInfos[index].mMask;
172  }
173 
174  wxString mask = GetDescription(index) + wxT("|");
175 
176  // Build the mask
177  // wxString ext = GetExtension(index);
178  wxArrayString exts = GetExtensions(index);
179  for (size_t i = 0; i < exts.GetCount(); i++) {
180  mask += wxT("*.") + exts[i] + wxT(";");
181  }
182 
183  return mask;
184 }
static const wxChar * exts[]
Definition: ImportFLAC.cpp:53
virtual wxString GetDescription(int index)
Definition: Export.cpp:153
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
virtual wxArrayString GetExtensions(int index=0)
Return all the file name extensions used for the sub-format.
Definition: Export.cpp:163
unsigned ExportPlugin::GetMaxChannels ( int  index)
virtual

Definition at line 186 of file Export.cpp.

References mFormatInfos.

187 {
188  return mFormatInfos[index].mMaxChannels;
189 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
void ExportPlugin::InitProgress ( std::unique_ptr< ProgressDialog > &  pDialog,
const wxString &  title,
const wxString &  message 
)
staticprotected

Definition at line 253 of file Export.cpp.

References ProgressDialog::Reinit(), and ProgressDialog::SetMessage().

Referenced by ExportCL::Export(), ExportPCM::Export(), and ExportMP3::Export().

255 {
256  if (!pDialog)
257  pDialog = std::make_unique<ProgressDialog>( title, message );
258  else {
259  pDialog->SetTitle( title );
260  pDialog->SetMessage( message );
261  pDialog->Reinit();
262  }
263 }
void SetMessage(const wxString &message)
bool ExportPlugin::IsExtension ( const wxString &  ext,
int  index 
)
virtual

Definition at line 196 of file Export.cpp.

References GetExtension(), GetExtensions(), and GetFormatCount().

Referenced by ExportPCM::CheckFileName().

197 {
198  bool isext = false;
199  for (int i = index; i < GetFormatCount(); i = GetFormatCount())
200  {
201  wxString defext = GetExtension(i);
202  wxArrayString defexts = GetExtensions(i);
203  int indofext = defexts.Index(ext, false);
204  if (defext == wxT("") || (indofext != wxNOT_FOUND))
205  isext = true;
206  }
207  return isext;
208 }
virtual int GetFormatCount()
Definition: Export.cpp:104
virtual wxString GetExtension(int index=0)
Return the (first) file name extension for the sub-format.
Definition: Export.cpp:158
virtual wxArrayString GetExtensions(int index=0)
Return all the file name extensions used for the sub-format.
Definition: Export.cpp:163
wxWindow * ExportPlugin::OptionsCreate ( wxWindow *  parent,
int  format 
)
pure virtual

Implemented in ExportMP3, ExportPCM, and ExportCL.

Definition at line 215 of file Export.cpp.

References _(), ShuttleGuiBase::AddTitle(), eIsCreatingFromPrefs, ShuttleGuiBase::EndHorizontalLay(), ShuttleGui::Prop(), safenew, and ShuttleGuiBase::StartHorizontalLay().

Referenced by ExportPCM::OptionsCreate().

216 {
217  wxASSERT(parent); // To justify safenew
218  wxPanel *p = safenew wxPanelWrapper(parent, wxID_ANY);
220 
221  S.StartHorizontalLay(wxCENTER);
222  {
223  S.StartHorizontalLay(wxCENTER, 0);
224  {
225  S.Prop(1).AddTitle(_("No format specific options"));
226  }
227  S.EndHorizontalLay();
228  }
229  S.EndHorizontalLay();
230 
231  return p;
232 }
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI...
Definition: ShuttleGui.h:409
#define safenew
Definition: Audacity.h:230
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop")).Raw()), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom")).Raw()), OnMoveTrack)#define SET_TRACK_NAME_PLUGIN_SYMBOLclass SetTrackNameCommand:public AudacityCommand
void ExportPlugin::SetCanMetaData ( bool  canmetadata,
int  index 
)

Definition at line 143 of file Export.cpp.

References mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

144 {
145  mFormatInfos[index].mCanMetaData = canmetadata;
146 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
void ExportPlugin::SetDescription ( const wxString &  description,
int  index 
)

Definition at line 118 of file Export.cpp.

References mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

119 {
120  mFormatInfos[index].mDescription = description;
121 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
void ExportPlugin::SetExtensions ( const wxArrayString &  extensions,
int  index 
)

Definition at line 128 of file Export.cpp.

References mFormatInfos.

Referenced by ExportPCM::ExportPCM().

129 {
130  mFormatInfos[index].mExtensions = extensions;
131 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
void ExportPlugin::SetFormat ( const wxString &  format,
int  index 
)
Parameters
indexThe plugin to set the format for (range 0 to one less than the count of formats)

Definition at line 113 of file Export.cpp.

References format, and mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

114 {
115  mFormatInfos[index].mFormat = format;
116 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
int format
Definition: ExportPCM.cpp:56
void ExportPlugin::SetMask ( const wxString &  mask,
int  index 
)

Definition at line 133 of file Export.cpp.

References mFormatInfos.

134 {
135  mFormatInfos[index].mMask = mask;
136 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
void ExportPlugin::SetMaxChannels ( unsigned  maxchannels,
unsigned  index 
)

Definition at line 138 of file Export.cpp.

References mFormatInfos.

Referenced by ExportCL::ExportCL(), ExportMP3::ExportMP3(), and ExportPCM::ExportPCM().

139 {
140  mFormatInfos[index].mMaxChannels = maxchannels;
141 }
std::vector< FormatInfo > mFormatInfos
Definition: Export.h:146
virtual int ExportPlugin::SetNumExportChannels ( )
inlinevirtual

Exporter plug-ins may override this to specify the number of channels in exported file. -1 for unspecified.

Reimplemented in ExportMP3.

Definition at line 99 of file Export.h.

99 { return -1; }

Member Data Documentation

std::vector<FormatInfo> ExportPlugin::mFormatInfos
private

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