Add signal handlers to shairplay to make it shut down gracefully
[deb_shairplay.git] / README.md
CommitLineData
1a1958cf
JVH
1Shairplay
2=========
fb0fa0be
JVH
3Free portable AirPlay server implementation similar to [ShairPort](https://github.com/abrasive/shairport).
4
5Currently only AirPort Express emulation is supported.
1a1958cf
JVH
6
7Disclaimer
8----------
9All the resources in this repository are written using only freely available
10information from the internet. The code and related resources are meant for
d16f10bf
JVH
11educational purposes only. It is the responsibility of the user to make sure
12all local laws are adhered to.
13
14Installation
15------------
16
17```
18./configure
19make
20sudo make install
21```
22
23Notice that libao is required in order to install the shairplay binary,
24otherwise only the library is compiled and installed.
25
26Usage
27-----
28
29Check available options with ```shairplay --help``` and start server with
30```shairplay```, if you are connected to a Wi-Fi the server should show as an
31AirPort Express on your iOS devices and Mac OS X computers in the same network.
1a1958cf 32
2fa77735
JVH
33Related software
34----------------
8095e42a 35
2fa77735
JVH
36* [ShairPort](https://github.com/abrasive/shairport), original AirPort Express emulator
37* [ALAC](http://craz.net/programs/itunes/alac.html), ALAC decoder by David Hammerton
ce17dc8d
JVH
38
39Description
40-----------
41
42Short description about what each file in the main library does:
43
fb0fa0be 44```
57bb5c6c
JVH
45src/lib/base64.* - base64 encoder/decoder
46src/lib/dnssd.* - dnssd helper functions
47src/lib/http_parser.* - HTTP parser from joyent (nginx fork)
48src/lib/http_request.* - Request parser that uses http_parser
49src/lib/http_response.* - Extremely simple HTTP response serializer
50src/lib/httpd.* - Generic HTTP/RTSP server
51src/lib/logger.* - Logging related functions
52src/lib/netutils.* - Mostly socket related code
53src/lib/raop.* - Main RAOP handler, handles all RTSP stuff
54src/lib/raop_rtp.* - Handles the RAOP RTP related stuff (UDP/TCP)
55src/lib/raop_buffer.* - Parses and buffers RAOP packets, resend logic here
56src/lib/rsakey.* - Decrypts and parses the RSA key to bigints
57src/lib/rsapem.* - Converts the RSA PEM key to DER encoded bytes
58src/lib/sdp.* - Extremely simple RAOP specific SDP parser
59src/lib/utils.* - Utils for reading a file and handling strings
fb0fa0be 60```
ce17dc8d
JVH
61
62Short description about what each file in the Qt application does:
63
fb0fa0be 64```
ce17dc8d
JVH
65AirTV-Qt/main.cpp - Initializes the application
66AirTV-Qt/mainapplication.cpp - Creates the tray icon and starts RAOP
67AirTV-Qt/raopservice.cpp - Handles all communication with the library
68AirTV-Qt/raopcallbackhandler.cpp - Converts C callbacks to Qt callbacks
69AirTV-Qt/audiooutput.cpp - Takes care of the actual audio output
fb0fa0be 70```
ce17dc8d 71