Julien BLACHE
cd636cf42d
Add base64 decoding routine
2009-05-03 11:16:57 +02:00
Julien BLACHE
7a601d7daa
Enable streaming of transcoded content
2009-05-03 11:16:57 +02:00
Julien BLACHE
2c2498b6b4
Add transcoding infrastructure
2009-05-03 11:16:57 +02:00
Julien BLACHE
22092f555b
Add L_XCODE log domain
...
Log domain for anything transcoding-related.
2009-05-03 11:16:57 +02:00
Julien BLACHE
e5cc417e96
Add DJB hash function to misc.[ch] and use it
2009-05-03 11:16:51 +02:00
Julien BLACHE
0a1c4545dc
Move safe_ato[il]() to misc.[ch]
2009-04-30 14:46:37 +02:00
Julien BLACHE
91414c10d7
Use a hashtable for dmap fields lookup
...
The hashtable is built around an AVL tree and the DJB hash function;
the AVL tree is built at init time and the init routine checks for
collisions.
2009-04-30 13:57:40 +02:00
Julien BLACHE
c071a58c3c
Wire up DAAP support
2009-04-30 13:57:40 +02:00
Julien BLACHE
00876facde
Introduce DAAP protocol implementation
...
Same restrictions as RSP at the moment:
- no transcoding
- no authentication
2009-04-30 13:57:34 +02:00
Julien BLACHE
f332f992aa
Document HTTP client quirks known to mt-daapd
2009-04-28 18:00:27 +02:00
Julien BLACHE
651d946cc2
Implement RSP streaming.
2009-04-28 18:00:27 +02:00
Julien BLACHE
f05a55e7fc
Implement HTTP chunked streaming
...
Transcoding is not supported yet.
In the current state of affairs, we will crash if the client closes the
connection before the tranfser is done. This is a limitation of evhttp,
it is not possible to detect this condition. This will need to be fixed
in evhttp.
2009-04-28 18:00:21 +02:00
Julien BLACHE
5e8275a998
Wire up RSP support
2009-04-25 23:02:21 +02:00
Julien BLACHE
718631bab5
Introduce RSP protocol implementation
...
Lacks a couple of things:
- actual streaming
- transcoding
- authentication
2009-04-25 23:02:15 +02:00
Julien BLACHE
21209bd040
Make sp_parse() second argument (term) const
...
The term (filter) argument is strdup()'d and that copy gets destroyed by
the parsing.
2009-04-25 16:27:59 +02:00
Julien BLACHE
6ed689d1c9
Move FILTER_TYPE_* definitions to smart-parser.h, where they belong
2009-04-25 16:27:59 +02:00
Julien BLACHE
29db6de1bb
Fixup prototype for db_enum_fetch_row()
...
Second argument is actually a pointer to a pointer to a struct
db_media_file_info, and not a simple pointer.
That code sucks. Plain and simple. Will be taken out and shot at the
earliest occasion. Someone badly needs to take "Pointers 101", among
a lot of other 101 courses. Sigh.
2009-04-25 16:27:58 +02:00
Julien BLACHE
bdcb5b88dc
Rename struct tag_packed_m3ufile and struct tag_packed_mp3file
2009-04-25 16:27:58 +02:00
Julien BLACHE
5fc698c94f
Add L_RSP log domain
2009-04-25 16:27:58 +02:00
Julien BLACHE
9d1cd9117f
Enable new HTTP server alongside the old webserver
2009-04-25 16:27:58 +02:00
Julien BLACHE
095350e6eb
Introduce new evhttp-based HTTP server
2009-04-25 16:27:47 +02:00
Julien BLACHE
c9494a898e
Add L_HTTPD for new evhttp-based HTTPd implementation
2009-04-24 15:45:44 +02:00
Julien BLACHE
7afc55307d
Change prototype and return values for new file scanners
2009-04-24 15:45:44 +02:00
Julien BLACHE
92362068c6
Remove old file scanner (mp3-scanner)
2009-04-24 15:45:43 +02:00
Julien BLACHE
3a38e62f8a
Remove/replace mp3-scanner.h include
2009-04-24 15:45:43 +02:00
Julien BLACHE
1a0e1731e4
Remove iTunes XML playlist parsing code
2009-04-24 15:45:43 +02:00
Julien BLACHE
69d6acad37
Remove support for iTunes XML playlist
...
No plans for OS X nor Windows in the near future, and those are most
probably useless on other platforms.
2009-04-24 15:45:43 +02:00
Julien BLACHE
831016bb05
Use new m3u scanner
2009-04-24 15:45:43 +02:00
Julien BLACHE
1a0f1317e2
Add rewritten scan_static_playlist() as scan_m3u_playlist()
...
Get rid of the I/O layer, better code.
2009-04-24 15:45:43 +02:00
Julien BLACHE
4a9d89c007
Rename struct tag_m3ufile into struct playlist_info
2009-04-24 15:45:43 +02:00
Julien BLACHE
bc5a3db08a
Rename scan-url.c to filescanner_urlfile.c
2009-04-24 15:45:43 +02:00
Julien BLACHE
0a61b5a51d
Rewrite .pls/.url file parser
...
Get rid of the I/O layer, ameliorate bitrate parsing, restructure code.
2009-04-24 15:45:33 +02:00
Julien BLACHE
1eaa3979e6
Add missing db_deinit() calls
2009-04-20 16:41:06 +02:00
Julien BLACHE
c4f8c7c254
Use new file scanner
2009-04-20 16:41:06 +02:00
Julien BLACHE
c0e3c1bc5f
Introduce new file scanner
...
The new file scanner has inotify support and runs in its own thread, including
for performing the initial rescan.
2009-04-20 16:41:01 +02:00
Julien BLACHE
57c698fce9
Export scan_static_playlist()
2009-04-19 19:39:15 +02:00
Julien BLACHE
bbab963fe2
Use new conffile code in main.c; remove wrappers
2009-04-19 19:39:15 +02:00
Julien BLACHE
bacdddb82f
Use -v for version information
2009-04-19 19:39:11 +02:00
Julien BLACHE
5e48a8bb6a
Remove -k/kill_server option
2009-04-19 19:38:41 +02:00
Julien BLACHE
362db5003b
Remove config file conversion code
2009-04-19 19:37:48 +02:00
Julien BLACHE
8e4b2db99e
Export cfg structure
2009-04-19 19:37:47 +02:00
Julien BLACHE
e3ab6de328
Replace old config code, remove old code
...
Activate the new confuse-based config code, add compatibility functions
for the old config code.
2009-04-19 19:37:47 +02:00
Julien BLACHE
a17e23010a
Introduce new confuse-based conffile support
2009-04-19 19:37:47 +02:00
Julien BLACHE
9f2e088d57
Add more .gitignore stuff
2009-04-19 19:37:47 +02:00
Julien BLACHE
e8c9a04376
Remove OS abstraction layer
...
Migrate daemon startup code in main.c, migrate functions with a single
callsite to that file. Remove setpgrp() usage in favor of setsid(), remove
configure check for setpgrp().
2009-04-19 19:37:42 +02:00
Julien BLACHE
9d026442b2
Remove alternate plugin load paths
2009-04-19 19:37:41 +02:00
Julien BLACHE
3ec2cc0f00
Stop the TXT record encoding madness
...
Use a proper string array to pass the TXT record fields, get rid of the
encoding stuff.
Changes the plugin API.
2009-04-19 19:37:41 +02:00
Julien BLACHE
2e2dbc6964
Free mDNS group entries in mdns_deinit()
2009-04-19 19:37:41 +02:00
Julien BLACHE
b3b66449bc
Build the string list for the mDNS TXT record once in mdns_register
...
Instead of rebuilding the string list at every regitration, build it once
and for all in mdns_register().
2009-04-19 19:37:41 +02:00
Julien BLACHE
8718f856df
Remove unused, unfinished, useless UPnP code
2009-04-19 19:37:41 +02:00
Julien BLACHE
6db32640ef
Remove no-op os_deinit()
2009-04-19 19:37:41 +02:00
Julien BLACHE
54c01d3b57
Move signal processing to the main loop using signalfd
2009-04-19 19:37:41 +02:00
Julien BLACHE
0292b9c625
Fix memory leak
2009-04-19 19:37:41 +02:00
Julien BLACHE
39e5b11bec
Remove old Avahi mDNS backend
2009-04-19 19:37:41 +02:00
Julien BLACHE
97faadf6dd
Enable new mDNS backend
2009-04-19 19:37:35 +02:00
Julien BLACHE
97cb82faf7
Add new Avahi mDNS backend with libevent integration.
2009-04-08 14:57:34 +02:00
Julien BLACHE
8a351e5bf8
Manage explicit event bases
2009-04-08 14:57:29 +02:00
Julien BLACHE
02f960b25b
Fix Avahi races
...
Switch from custom thread + SimplePoll to ThreadedPoll, ensuring proper
locking of the polling thread.
2009-04-07 14:03:13 +02:00
Julien BLACHE
df0013a166
Introduce libevent for running the main loop
...
Start the gradual libevent conversion.
2009-04-07 12:53:04 +02:00
Julien BLACHE
3b4e0d8f74
Add missing ;
2009-04-07 11:40:14 +02:00
Julien BLACHE
b3cffd491d
Add and use io_urlencode() to replace %U format spec for io_open()
...
Stopgap to replace the %U modifier until something happens with the whole
io_* stuff.
2009-04-05 22:42:03 +02:00
Julien BLACHE
687be1cbb6
Remove compat.[ch]
2009-04-05 19:15:44 +02:00
Julien BLACHE
7098dfbab3
Fix various trivial compiler warnings
2009-04-05 19:03:29 +02:00
Julien BLACHE
ea36855793
Fix format specifiers for 64bit integers
...
Use "%" PRIu64 from inttypes.h instead of "%lld" which is incorrect on 64bit
platforms.
2009-04-05 18:54:59 +02:00
Julien BLACHE
f4721a6cec
Add explicit -export-dynamic
...
mt-daapd needs an explicit -export-dynamic so its symbols are made visible
to the plugins at load time.
2009-04-05 18:54:59 +02:00
Julien BLACHE
081a13bbea
Fix ffmpeg API breakage
...
avcodec_audio_decode() has been removed in favor of avcodec_decode_audio2();
output buffer size must be passed to the function.
2009-04-05 18:54:59 +02:00
Julien BLACHE
888bf11d2f
Replace %U format by %s
...
%s format specifier means the string must be URL encoded. Replace it by a
simple %s for the time being until plans about the I/O layer become clearer.
2009-04-05 18:54:59 +02:00
Julien BLACHE
e318858d44
Fill in type & codectype for .url/.pls
2009-04-05 18:54:59 +02:00
Julien BLACHE
c2ffed5e2b
Remove unused iconv-dependent code.
...
The code was mainly used by the MP3 scanner.
2009-04-05 18:54:59 +02:00
Julien BLACHE
d8a9772afc
Remove/replace non-gcc compiler-specific defines and pragmas
...
Remove MSVC-specific defines and pragmas, use __attribute__((packed)) where
needed.
2009-04-05 18:54:58 +02:00
Julien BLACHE
3dd76cf9e9
Remove unneeded prototypes
2009-04-05 18:54:58 +02:00
Julien BLACHE
625ffd2112
Work around ffmpeg bugs in metadata support for some formats
...
Fall back to the legacy format-specific scanners for WMA, FLAC and Musepack,
as ffmpeg doesn't report metadata for FLAC nor Musepack and has bugs with
some WMA variants.
2009-04-05 18:54:58 +02:00
Julien BLACHE
3a53a068af
Initialize ffmpeg in main()
...
ffmpeg needs to be initialized before scanning songs at startup. As a
consequence, the ffmpeg plugin does not need to call av_register_all()
itself anymore.
2009-04-05 18:54:58 +02:00
Julien BLACHE
c9107ed48c
Remove unneeded id3tag.h include
2009-04-05 18:54:58 +02:00
Julien BLACHE
f14ba228ec
Remove Ogg Vorbis file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
056f788c99
Remove MP3 file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
9f45181bb3
Remove AAC file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
84a132d166
Remove WAV file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
23802f1866
Remove AIFF file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
a3e83775b3
Enable ffmpeg file scanner
...
Replace all file scanners with the new ffmpeg file scanner. Keep pls and
url exceptions.
2009-04-05 18:54:49 +02:00
Julien BLACHE
8dce7ee0f3
Add comments pertaining to the type, codectype and description fields
...
Better document the type, codectype and description fields, noting they
equivalent DAAP fields and usage/restrictions.
2009-04-05 10:24:10 +02:00
Julien BLACHE
10037ff7cf
Rename struct tag_mp3file
...
That struct is badly named, rename it to struct media_file_info and keep
the typedef as-is for now.
2009-04-05 10:10:24 +02:00
Julien BLACHE
0187b5d405
Make ffmpeg mandatory
2009-04-05 10:06:03 +02:00
Julien BLACHE
f5dd1bec13
Add an ffmpeg-based file scanner
...
Use ffmpeg's (starting with SVN 20090301) new metadata API to extract
metadata from virtually all formats supported by ffmpeg. That will allow
to get rid of some dependencies and some open-coded routines that aren't
maintainable.
2009-04-05 09:51:40 +02:00
Julien BLACHE
2cb11e8f42
Fix typos in help output
2009-04-02 13:24:09 +02:00
Julien BLACHE
1b98e3c036
Fix Avahi mDNS backend
...
Fix Avahi polling:
- use avahi_simple_poll_loop() in rend-avahi.c:rend_poll() instead
of reinventing yet another type of wheel;
- start RendezVous thread after daemonizing, so the thread actually
runs after we've daemonized.
Also handle Avahi daemon restarts, as it's good practice and easy to do.
... And /that/, my friends, is how we do that ...
2009-04-02 13:22:23 +02:00
Julien BLACHE
464bd414a1
Properly guard bytes_written against NULL
...
ws_copyfile() can be called with bytes_copied == NULL but did not
check for this condition before using bytes_copied after an IO error,
leading to a segfault.
2009-04-02 13:17:16 +02:00
Julien BLACHE
46acba0edb
Fix ilst atom parsing
...
Fix ilst children parsing; when parsing children, we're already 8 bytes
into the ilst atom, so take that into account.
2009-04-02 13:16:07 +02:00
Julien BLACHE
93a97956a0
Change return type to boolean
...
Use a boolean return type instead of returning -1 with an unsigned return type.
2009-04-02 13:14:54 +02:00
Neil Spring
7565b02229
Properly reset XML scanner state between scans
...
Fix indexing of multiple XML files by resetting path_found for each
XML file.
2009-04-02 13:10:19 +02:00
Chris Pitchford
54d441f57c
Fix handling of URIs in io_open()
...
Fix io_open()'s handling of options in URI, fixing the "filenames with a
question mark are not scanned" bug.
Patch by Chris Pitchford, cpitchford on the Firefly forum.
2009-04-02 13:07:36 +02:00
Jeremy Kerr
7c1752d871
Fix a bad return value in ws_addarg()
...
Fix a bad return value in ws_addarg() when updating a header value,
leading the caller to believe an out of memory condition happened.
2009-04-02 13:01:19 +02:00
Nico Golde
567bd3ee03
Fix integer overflow, CVE-2008-1771
...
Fix integer overflow leading to heap-based buffer overflow causing a
remote Denial of Service and possibly allows to execute arbitrary code.
2009-04-02 12:59:31 +02:00
Nico Golde
5d227e85c5
Fixup taglib_tab_free_strings() invocation
...
Fixup taglib_tab_free_strings() invocation; the function never took an
argument to start with, so fix that up as it now breaks the build.
2009-04-02 12:29:49 +02:00
Julien BLACHE
b80b81adae
Don't clobber LIBS with -ldl
2009-04-02 12:18:53 +02:00
Julien BLACHE
3a55c153b8
Move wavstreamer to tools
2009-04-02 12:18:47 +02:00
Julien BLACHE
023e034020
Don't clobber LDFLAGS with iconv
2009-04-02 11:42:39 +02:00
Julien BLACHE
1c97e73351
Remove embedded copy of getopt
2009-04-02 11:08:41 +02:00
Julien BLACHE
cfdb37c07c
Remove Mac OS conditional code
2009-04-02 11:06:29 +02:00
Julien BLACHE
c3fb950737
Remove WIN32 conditional code
2009-04-02 11:04:33 +02:00