• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

AirTV-Qt/H03-May-2022-3,4021,962

include/H21-Sep-2015-10272

m4/H21-Sep-2015-156137

src/H21-Sep-2015-14,43310,073

.gitignoreH A D21-Sep-2015257 3128

LICENSEH A D21-Sep-2015417 1510

Makefile.amH A D21-Sep-201548 52

README.mdH A D21-Sep-20153.4 KiB9978

airport.keyH A D21-Sep-20151.6 KiB2423

autogen.shH A D21-Sep-201527 41

configure.acH A D21-Sep-20151.7 KiB8569

README.md

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