1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-13 22:21:11 +02:00
Commit Graph

63 Commits

Author SHA1 Message Date
Paul Licameli
4ca3e7096f Track factory cleanup (#646)
* Don't need TrackFactory to make LabelTrack

* Don't need TrackFactory to make NoteTrack

* Don't need TrackFactory to make TimeTrack, or ZoomInfo in the factory

* Remove some forward declarations

* Rename TrackFactory as WaveTrackFactory, move it out of Track.cpp
2020-08-22 18:44:49 -05:00
Leland Lucius
6d08c600df Bail on any error when checking for valid MP3 frames 2020-08-11 10:10:51 -05:00
Leland Lucius
dffa24cf69 Bug 2445 - Cryptic, unhelpful, error message when importing malformed MP3 file 2020-08-09 13:24:48 -05:00
Leland Lucius
56b1b5c31f Bug 2445 - Cryptic, unhelpful, error message when importing malformed MP3 file 2020-08-09 13:23:09 -05:00
Leland Lucius
f09f03e44b Skip APE and Lyrics tags in MP3 importer
In addition, CheckMP3 was updated to use the mad header decoder
to more easily scan for valid MP3 frames.
2020-08-08 03:38:38 -05:00
Leland Lucius
3276234ae8 Bug 2484 - OPUS import fails 2020-06-16 09:05:29 -05:00
Paul Licameli
da93757401 Remove ImportRaw.h from other headers 2020-06-13 12:19:38 -04:00
Leland Lucius
35e88d995b Bug 421 - Crash importing malformed MP3 file using libmad
This adds LAME tag handling and bad MP3 detection, but
it's pretty much a complete rewrite, so plenty of testing
is needed.
2020-05-23 22:03:41 -05:00
Paul Licameli
c941647db6 Replace last wxProgressDialog with ProgressDialog; remove all wx/progdlg.h 2020-05-22 20:44:08 -04:00
Paul Licameli
b1b8b034c8 Reimplement import plugin registation without sequence numbers 2020-02-01 08:39:52 -05:00
Paul Licameli
7592227f14 Remove uses of GetActiveProject in import 2020-01-02 13:11:17 -05:00
Paul Licameli
0300b49b37 TranslatableString for importer stream info...
... fixing some missed translations in OGG (and GStreamer too, if you care)
2019-12-18 10:42:52 -05:00
Paul Licameli
d32d464471 Uses of TranslatableString in src/import 2019-12-14 01:48:15 -05:00
Paul Licameli
e2cf1d93c2 Import.cpp does not depend on subclasses of ImportPlugin...
... freeing 15 files from the big strongly connected component:

ImportFFmpeg & ODDecodeFFMpegTask (still in a cycle of two)
ImportFLAC
ImportGStreamer
ImportLOF
ImportMIDI
ImportMP3
ImportOGG
ImportPCM
ImportQT
ProjectFileManager
ProjectFSCK
ProjectManager
ProjectSelectionManager
ODDecodeFlacTask

And eight header files in src/import are deleted.

This breaks a lot of cycles because Import, which is still in the big component,
no longer includes ImportLOF, which recursively uses ProjectManager. A
registration system for the subclasses of ImportFileHandle allows that
recursion without the cyclic compilation dependencies.
2019-06-09 12:10:52 -04:00
Paul Licameli
0b85251885 Fewer inclusions of AudioIO.h and Import.h 2019-06-06 12:53:20 -04:00
Paul Licameli
6c57948d8f Remove unnecessary #include-s from .cpp files...
... Unnecessary because transitively included.

But each .cpp file still includes its own .h file near the top to ensure
that it compiles indenendently, even if it is reincluded transitively later.
2019-05-16 17:21:00 -04:00
Paul Licameli
0b733eed3f Remove (or comment) ProgressDialog.h in headers...
... For ImportPlugin, use unique_ptr not Maybe to hold it, and take constructors
out-of-line.
2019-04-04 09:47:57 -04:00
Paul Licameli
f45300f032 This is only comments, in files where USE_ macros are tested...
... following the comment convention used in the preceding commit.
2019-03-22 12:38:30 -04:00
Paul Licameli
a30000cf74 Use type aliases FilePath, FilePaths...
... for wxString and wxArrayStringEx, holding file paths (absolute or relative,
directory or plain file); to be replaced later with different types

(not yet using std::vector, becase of some uses of wxArrayString::Index with
two arguments)
2019-03-15 15:18:11 -04:00
Paul Licameli
485b6bb425 Use type aliases FileExtension, FileExtensions...
... for wxString and wxArrayStringEx, holding file extensions (without dot);
to be replaced later with different types

(not yet using std::vector, becase of some uses of wxArrayString::Index with
two arguments)

And simplify some constructions of arrays
2019-03-15 15:18:11 -04:00
Paul Licameli
2db49dc1f0 Use standard library style members of wxArrayString (and wxString) ...
... which will make it easier to change the types of those containers to
std::vectors of other string-like classes

for wxString,

IsEmpty => empty
Clear => clear
Alloc => reserve

for wxArrayString,

Count => size
GetCount => size
IsEmpty => empty
Add => push_back
Clear => clear
Empty => clear
Sort => std::sort (only with default comparator)
SetCount => resize
Last => back
Item => operator []
Alloc => reserve
2019-03-10 14:43:57 -04:00
Paul Licameli
7c25e555ac Fix warning about redefinition of a macro 2018-11-15 11:23:16 -05:00
Paul Licameli
894f6f4f63 Remove SetLinked() and SetChannel() from importers 2018-10-01 13:42:36 -04:00
Paul Licameli
31d46ae624 Importer functions return a vector of vector of pointers to tracks...
... grouping the channels; rather than one flat vector.

OGG, GStreamer and FFmpeg import were written to allow multiple multi-channel
tracks; others always imported one group of channels.

All of that is reflected in the results returned by the importers, though it
makes no difference yet in AudacityProject::AddImportedTracks (where the
results are used).
2018-10-01 13:42:35 -04:00
Paul Licameli
b8a8712ba0 make_movable -> std::make_unique 2018-05-10 00:56:36 -04:00
James Crook
b60fae4470 Fix some warnings on mac
These are mostly missing 'overrides'
2018-04-07 20:28:27 +01:00
Paul Licameli
2ea5741e2e Redo format setting choices in Quality preferences 2018-03-25 14:46:53 -04:00
andheh
7a30222f49 fixed indentation warning in ImportMP3.cpp 2018-03-06 21:30:38 +00:00
andheh
9f8d3a48d4 fixed a "signed vs. unsigned" warning in ImportMP3.cpp 2018-03-06 21:30:36 +00:00
Paul Licameli
ccb4bbac33 Translate "Message" as default title of message box...
... This required a sweeping change of all calls to wxMessageBox!  But it seems
safe to me, despite the great number of touched files.
2018-01-01 17:50:02 -05:00
Paul Licameli
4d978bcefb Use wxPrintf not printf 2017-12-16 11:54:32 -05:00
Paul Licameli
2626f6cd5b Exception safety in: subclasses of ImportFileHandle 2017-03-21 14:11:27 -04:00
Paul Licameli
6525bb18cf Translate exceptions to error codes in callback functions...
... That is what the library protocols allow, and libraries may be written
in C and might corrupt their state if C++ exceptions pass through them.
2017-03-17 17:53:01 -04:00
Paul Licameli
9314fe0cc0 Remove naked malloc (or similar) and free in: import 2017-03-17 17:52:52 -04:00
Paul Licameli
88cac8cd7e Remove naked new[] in: import 2017-03-17 17:52:46 -04:00
Paul Licameli
aa0d55ac83 Use enum class ProgressResult, don't interconvert with int or bool 2017-03-17 17:52:24 -04:00
Paul Licameli
81285ee0c1 More const and override 2017-03-17 17:52:20 -04:00
Chris Cannam
30eaa0d52c Fix truncated decode of mp3 files on import
The MAD decoder will not decode the final frame in an mp3 stream unless
it has a small amount of padding afterwards (MAD_BUFFER_GUARD bytes,
actually 8). Without this, it loses sync before returning any decoded
data from the final frame. The result is that the imported audio is
truncated by up to 1152 samples.

This commit addresses that by using a final round of input callback
calls to provide the last MAD_BUFFER_GUARD bytes after the underlying
file has reached eof. The logic is based on madplay.
2016-11-26 17:41:07 +00:00
Paul Licameli
67cec5ad83 Make many counts of tracks and channels unsigned...
... And in some places where a library uses signed types, assert that
the reported number is not negative.

What led me to this, is that there are many places where a size_t value for
an allocation is the product of a number of channels and some other number.
2016-09-07 10:11:41 -04:00
Paul Licameli
0b31690ace Return wide type from ImportFileHandle::GetFileUncompressedBytes()...
... and use override.  But this function isn't (yet?) used anywhere.
2016-09-06 12:39:57 -04:00
Paul Licameli
79c79f9cd3 Remove many mentions of sampleCount with auto and decltype...
... This makes much code agnostic about how other things (functions and
arguments) are typed.

Many of these neeed to become size_t instead of sampleCount.
2016-08-24 14:50:45 -04:00
Paul Licameli
28f0b11376 Use arrays of smart pointers to import plugins 2016-08-11 11:51:33 -04:00
Paul Licameli
7d89e5ff68 Pass containers by ref to import plugin factories, use STL idiom 2016-08-11 11:51:33 -04:00
Paul Licameli
924df495ff Make headers in import directory self-contained 2016-08-11 11:51:33 -04:00
Paul Licameli
f82ff73578 Remove some naked new amd delete in: import and export 2016-08-08 07:53:28 -04:00
Paul Licameli
59af732763 Mac build fixes; and implement deleters for our imitation unique_ptr 2016-04-10 14:15:51 -04:00
Paul Licameli
9c18d3853d ImportFileHandle::GetStreamInfo returns reference. Don't dereference NULLs. 2016-04-09 16:18:29 -04:00
Paul Licameli
e6e7b73043 ImportFileHandles 2016-04-06 14:56:04 -04:00
Paul Licameli
824ff647f8 Import functions return containers of smart pointers to new tracks 2016-03-26 15:41:27 -04:00
Paul Licameli
5ef4dd46a5 TrackFactory functions return std::unique_ptr, although some callers...
... release() them for now.
2016-03-26 11:50:12 -04:00