Fixed and documented example.c
[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
89202f71
JVH
17First you need to install some dependencies, for example on Ubuntu you would
18write:
d16f10bf 19```
89202f71
JVH
20sudo apt-get install autoconf automake libtool
21sudo apt-get install libao-dev libavahi-compat-libdnssd-dev
22```
23
24```
25./autogen.sh
d16f10bf
JVH
26./configure
27make
28sudo make install
29```
30
31Notice that libao is required in order to install the shairplay binary,
32otherwise only the library is compiled and installed.
33
34Usage
35-----
36
5d98fafe
JVH
37Check available options with ```shairplay --help```:
38
39```
40Usage: shairplay [OPTION...]
41
42 -a, --apname=AirPort Sets Airport name
43 -p, --password=secret Sets password
44 -o, --server_port=5000 Sets port for RAOP service
45 --ao_driver=driver Sets the ao driver (optional)
46 --ao_devicename=devicename Sets the ao device name (optional)
47 --ao_deviceid=id Sets the ao device id (optional)
48 -h, --help This help
49```
50
51Start the server with ```shairplay```, if you are connected to a Wi-Fi the
52server should show as an AirPort Express on your iOS devices and Mac OS X
53computers in the same network.
1a1958cf 54
2fa77735
JVH
55Related software
56----------------
8095e42a 57
2fa77735
JVH
58* [ShairPort](https://github.com/abrasive/shairport), original AirPort Express emulator
59* [ALAC](http://craz.net/programs/itunes/alac.html), ALAC decoder by David Hammerton
ce17dc8d
JVH
60
61Description
62-----------
63
64Short description about what each file in the main library does:
65
fb0fa0be 66```
57bb5c6c
JVH
67src/lib/base64.* - base64 encoder/decoder
68src/lib/dnssd.* - dnssd helper functions
69src/lib/http_parser.* - HTTP parser from joyent (nginx fork)
70src/lib/http_request.* - Request parser that uses http_parser
71src/lib/http_response.* - Extremely simple HTTP response serializer
72src/lib/httpd.* - Generic HTTP/RTSP server
73src/lib/logger.* - Logging related functions
74src/lib/netutils.* - Mostly socket related code
75src/lib/raop.* - Main RAOP handler, handles all RTSP stuff
76src/lib/raop_rtp.* - Handles the RAOP RTP related stuff (UDP/TCP)
77src/lib/raop_buffer.* - Parses and buffers RAOP packets, resend logic here
78src/lib/rsakey.* - Decrypts and parses the RSA key to bigints
79src/lib/rsapem.* - Converts the RSA PEM key to DER encoded bytes
80src/lib/sdp.* - Extremely simple RAOP specific SDP parser
81src/lib/utils.* - Utils for reading a file and handling strings
fb0fa0be 82```
ce17dc8d
JVH
83
84Short description about what each file in the Qt application does:
85
fb0fa0be 86```
ce17dc8d
JVH
87AirTV-Qt/main.cpp - Initializes the application
88AirTV-Qt/mainapplication.cpp - Creates the tray icon and starts RAOP
89AirTV-Qt/raopservice.cpp - Handles all communication with the library
90AirTV-Qt/raopcallbackhandler.cpp - Converts C callbacks to Qt callbacks
91AirTV-Qt/audiooutput.cpp - Takes care of the actual audio output
fb0fa0be 92```
ce17dc8d 93