Commit Graph

1362 Commits

Author SHA1 Message Date
casey langen
657208ae87 Moved curl and libressl dlls to the plugins directory for windows build. 2017-04-20 23:16:11 -07:00
casey langen
3c34c7a494 Fixed a bug in CddaIndexerSource where tracks may not get removed from
the library if the drive letter changes.
2017-04-19 23:19:56 -07:00
casey langen
a434cd14a1 Update README.md 2017-04-18 00:45:03 -07:00
casey langen
6bfbb6518b Update README.md 2017-04-18 00:43:16 -07:00
casey langen
0ed9c9b4d6 Added HttpDataStream, a new plugin that can provide an IDataStream from
an HTTP/HTTPS connection.

- Added libcurl and libressl as project dependencies.
- Added HttpDataStream (which uses libcurl and libressl). Includes an
  LruDiskCache so responses can be cached to disk for offline playback.
- Added new IEnvironment SDK interface. Plugins can query the
  environment for path information, data streams, or decoders. More
  functionality will be added over time.
- Fixed FlacDataDecoderFactory to handle the correct mime type
  (audio/flac, not audio/flag)
- Tweaked NomadDecoder.cpp to return the stream length immediately instead
  of waiting for an fseek().
2017-04-18 00:31:50 -07:00
casey langen
37fc0fe805 musik_uint64 -> uint64_t, musik_int64 -> int64_t. 2017-04-17 20:42:34 -07:00
casey langen
d1069a0d94 Added BindInt32, BindInt64, ColumnInt32, ColumnInt64 to make dealing
with different sized integers more explicit.
2017-04-17 20:39:55 -07:00
casey langen
d019ec3da9 Fixed some bugs in HttpServer relating to byte offset bounds checking
and status code handling.
2017-04-16 14:17:18 -07:00
Casey Langen
9ca0a865e2 Version bump to 0.12.0 2017-04-16 13:23:45 -07:00
casey langen
d305e266ce Fixed macOS compile. 2017-04-16 12:43:30 -07:00
casey langen
844b0d0537 Update README.md 2017-04-16 00:37:01 -07:00
casey langen
7caeb3c20f Update README.md 2017-04-16 00:36:31 -07:00
casey langen
8b2752abe5 Updated HttpServer to allow querying audio data by either id or
external_id.
2017-04-15 23:45:20 -07:00
casey langen
59946d3cea Data layer and IIndexerSource plugin updates:
1. Drop indexes before sync, then re-create after. This speeds up the
indexing process.

2. 'external_id' field now required for all tracks.

3. Added IIndexerSource::HasStableIds(). We use this as a hint to not
remove orphaned tracks from existing playlists when re-scanning.

4. Removed 'track_id' from 'playlist_tracks' table, and added
'track_external_id' and 'source_id' instead.

5. Indexer will only scan for plugins once now, during initialization.
2017-04-15 21:20:37 -07:00
Casey Langen
cb4c1adc5b Integrated libmicrohttpd into the websocket_remote plugin to serve track audio
data (not metadata). Clients using the websocket interface can use this to play
music locally, instead of just remotely.
2017-04-14 10:04:48 -07:00
casey langen
83b371103f Fixed some musikdroid bugs related to blank/empty artists/albums/titles. 2017-04-13 18:58:30 -07:00
Casey Langen
0fe6983706 Merge branch 'master' of github.com:clangen/musikcube 2017-04-09 12:20:42 -07:00
casey langen
63381607a9 Fixed broken "sync on startup" preference. 2017-04-09 12:20:15 -07:00
Casey Langen
ccb1fc8ef9 Indexer sources can now be interrupted, and failed sources can have their
transactions rolled back.
2017-04-09 12:10:40 -07:00
casey langen
1dd69725f5 Update README.md 2017-04-09 00:02:58 -07:00
casey langen
fb879e23eb Update README.md 2017-04-09 00:00:30 -07:00
casey langen
a459230eb9 Upgraded Visual Studio projects to use Windows SDK 10 and the VS141
tooling. Upgraded to boost 1.64.0 (B2). Also, cleaned up a bunch of
stale include and library paths in various projects.
2017-04-08 23:50:57 -07:00
casey langen
b3df1787c6 Version bump and CHANGELOG updates. 2017-04-04 07:33:13 -07:00
casey langen
23b8b3cc9e Fixed weird auto scroll behavior in NowPlayingLayout when manually
selecting a new play index. Also, added ListWindow::IsEntryVisible().
2017-04-03 20:56:54 -07:00
casey langen
82485ba6f3 - Created a denormalized "tracks_view" sqlite view that will come in
useful for things like dynamic playlists.
- Updated CategoryListQuery to initialize mappings statically, instead
  of during construction, locking a mutex.
2017-04-02 14:26:09 -07:00
casey langen
6241774454 A couple cross-compiler compatibility fixes: (1) no virtual destructor
in SDK interfaces, and (2) no method overloading.
2017-04-01 12:26:42 -07:00
casey langen
68b2d5c1d1 Fixed the album overlay's title string. 2017-04-01 11:13:12 -07:00
casey langen
e6d296334c - Fixed header offset calculation for real this time
- Added an [unknown album] header for search results without an album
name
2017-03-31 23:20:26 -07:00
casey langen
bf1af609b2 A massive overhaul to the CD Audio plugin:
- Integrated with the new IIndexerSource, IIndexerWriter, and
  IIndexerNotifier SDK interfaces
- Added a simple capabilities model to the playback infrastructure. This
  is used to detect whether or not streams can be prefetched. For example,
  CDDA cannot because of seek times while playing tracks.
- Added bare-bones CddaDataModel that uses the win32 api to enumerate
  connected devices. This is used for disc fingerprinting (using the CDDB
  algorithm) and encapsulating data related to discs and tracks. Also,
  use the WM_DEVICECHANGE API to detect when new discs are inserted, or
  existing discs are removed.
- Don't install the global hotkey hook when running in a debugger.
- Added the ability for the user to configure seeking vs scrubbing when
  changing the playhead
2017-03-31 22:27:23 -07:00
casey langen
2dac91c429 Added SDK support for plugins that can index their own audio content.
- Added IIndexerSource interface: plugins will be able to implement this
  interface to add tracks to the library that will be indexed and
  maintained like all other tracks
- Added IIndexerWriter interface: IIndexerSource plugins will use this
  interface to add/remove/update track info with the main app
- Added IIndexerNotifier: interface used to notify the app that it needs
  to be re-indexed.
- Added "source_id" , "external_id", and "visible" column to the tracks
  table, with appropriate indexes.
- Updated all queries to take "source_id" and "visible" into account
- Extracted TrackMetadataQuery from TrackList. Never should have been
  there to begin with, but was due to some technical limitations that no
  longer exist.
- Fixed a really old indexer bug where the reported number of file scanned
  was not accurate. Strange this wasn't noticed before.
- Added "SetIndexerNotifier" injection method
- Fixed a bug in TrackMetadataQuery -- it was unnecessarily relying upon
  the paths table, which was causing query errors when the table was
  empty.
- Use a cache for local file paths instead of requiring an async round
  trip when adding/removing
- Remove use of manual "ANALYZE", it was causing strange performance
  degradation issues. Instead, move to a set of PRAGMAs that instructs
  sqlite to run these optimizations when necessary.
- Updated ::GetInt32 and ::GetUint32 return types to be explicit as to play
  more nicely with clang -- may as well, we're updating the SDK version
  anyway.
2017-03-31 21:45:14 -07:00
casey langen
c5e57094d5 Revert the off-by-1 "fix". It didn't actually fix anything, and
introduced a bug.
2017-03-29 23:46:21 -07:00
casey langen
9ce7f1a030 Fixed bug in ApplyHeaderOffset calculation. 2017-03-28 14:12:58 -07:00
casey langen
8c9117f437 Fixed some weirdness when reading CDDA data in Windows. The beginning of
tracks don't seem skip anymore.
2017-03-27 23:12:32 -07:00
casey langen
e49506fe3c Added Bill Gray's improved message pump patch. 2017-03-27 12:04:24 -07:00
casey langen
fb12405015 Fixed clang 7.3 compile error. 2017-03-27 10:30:45 -07:00
casey langen
52f9375ec4 dang 2017-03-27 00:50:52 -07:00
casey langen
9326b0723f Updated CHANGELOG for release, and tweaked the archive filenames. 2017-03-26 20:53:05 -07:00
casey langen
68a7e2994c Tweaked pdcurses message pump patch to avoid potential overflows. Also
updated musikboix.rc's FileDescription field to be more inline with what
other apps display here.
2017-03-26 12:06:14 -07:00
casey langen
b6514b05f2 Added a version metadata to musikbox.rc so the windows executable has
version information baked in.
2017-03-26 11:54:26 -07:00
casey langen
54f1097789 Use a stack to remember previously selected directories in the settings
layout. Updated CHANGELOG accordingly.
2017-03-26 00:18:49 -07:00
casey langen
45f6795ccf Updated CHANGELOG and fixed a couple compiler warnings. 2017-03-25 23:06:42 -07:00
casey langen
a3d2d54fc4 Added "jump to artist" and "jump to genre" options to "album header"
context menu. Added "jump to album", "jump to artist", and "jump to
genre" in track context menu.
2017-03-25 22:59:53 -07:00
casey langen
e3f4179978 Update README.md 2017-03-25 12:08:49 -07:00
casey langen
9241ba1e34 Small tweak to the main icon so it looks better in the taskbar. 2017-03-24 22:35:27 -07:00
casey langen
24e8d79b6f Fixed header offset bug in TrackListView. 2017-03-24 10:56:52 -07:00
casey langen
deb899b4f7 Wired TaskRunner library into musikdroid 2017-03-23 17:10:59 -07:00
casey langen
b9619ade2c * Tweaks to curses input polling to reduce CPU usage in Windows.
* Run Player thread in a higher prioirty in Windows
* Don't show the context menu on track row headers
2017-03-23 17:09:51 -07:00
casey langen
648edc92c8 Updated PDCurses's message pump to use way fewer CPU cycles. 2017-03-23 17:09:09 -07:00
casey langen
8f448e86ad - Fixed a bug in TrackListView where we may end up selecting the album
header after a rquery after being hidden, then re-displayed. ugh.
- Added explicit Interrupt() method to IDataStream because we're bumping
  the API version anyway
2017-03-22 22:59:50 -07:00
casey langen
0a271dbc25 Consolidated all messages into a single location. Unfortunate, but safer. 2017-03-22 19:07:09 -07:00