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