This codebase implements the system described in the paper:
Proactive Energy-Aware Adaptive Video Streaming on Mobile Devices
Jiayi Meng, Qiang Xu, Y. Charlie Hu
-
Clone Puffer.
-
Compile Puffer by following its documentation.
-
Enter the
Server
directory. -
Copy
abr/mpc_proactive_sim.hh
andabr/mpc_proactive_sim.cc
to Puffer'ssrc/abr
.
NOTE: put the pre-trained power models for network and video decoding and displaying in abr/mpc_proactive_sim.hh
and abr/mpc_proactive_sim.cc
respectively.
-
Add two files above to Puffer's
src/media-server/Makefile.am
to compile Puffer with the newly added energy-aware proactive algorithm. -
Enable puffer to return client's playback information back to the energy-aware proactive algorithm and register the new algorithm, by copying files under the
media-server
directory in this repo to the directory of Puffer'ssrc/media-server/
.
More details about adding new algorithm can be found here.
-
Compile puffer.
-
Copy
settings.yml
to<puffer>/src
. Run puffer withsettings.yml
, using the command below. We provide onesettings.yml
in the repo as one example.
Put your custom max_power_budget
in settings.yml
.
cd <puffer>
./src/media-server/run_servers src/settings.yml
More details about the settings can be found here.
-
Change the ip address of the server in
MainActivity.java
. -
Build the android project under the
Client
directory in Android Studio.
@inproceedings{meng2021proactive, title={Proactive Energy-Aware Adaptive Video Streaming on Mobile Devices}, author={Meng, Jiayi and Qiang, Xu and Hu, Y. Charlie}, booktitle={2021 ${$USENIX$}$ Annual Technical Conference (${$USENIX$}$${$ATC$}$ 21)}, year={2021} }