\documentclass{report}

\usepackage[a4paper]{geometry}

\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[cyr]{aeguill}
\usepackage{xspace}
\usepackage{hyperref}
\usepackage{svg}

\usepackage[nottoc, notlof, notlot]{tocbibind}

\setlength{\parindent}{2em}
\setlength{\parskip}{0.5em}
\renewcommand{\baselinestretch}{1.4}

\usepackage{minted}
\usepackage{verbatim}

\usemintedstyle{tango}
% TODO: handle reference name
\makeatletter
\newenvironment{code}[2]
 {\VerbatimEnvironment
  %\begin{listing}[H]
  \begin{minted}[frame=lines,framesep=2mm,linenos,label=#2]{#1}}
 {\end{minted}
  %\end{listing}
 }
\makeatother

\usepackage{titlesec}
% \titleformat
% {\chapter} % command
% [block] % shape
% {\bfseries\Large} % format
% {Chapitre \ \thechapter} % label
% {0ex} % sep
% {
%     \rule{\textwidth}{1pt}
%     \centering
% } % before-code
% [
% \centering
% \vspace{-1.5ex}%
% \rule{\textwidth}{0.3pt}
% ] % after-code
\titleformat{\chapter}[frame]
{\normalfont}
{\filright
\large
\enspace Chapitre \thechapter\enspace}
{8pt}
{\Large\bfseries\filcenter}

\titlespacing{\chapter}{0pc}{-5pc}{2pc}

\newcommand{\inltype}[1]{\texttt{\detokenize{#1}}}

\begin{document}

\title{{\Huge{Rapport de stage --- VideoLabs}} \\
Renforcement de la sécurité d'un lecteur vidéo multiplate-forme par séparation des privilèges}
\author{Alexandre Janniaux}
\date{19 septembre 2018}

\maketitle

\clearpage
\section*{Remerciements}
\input{chapters/thanks}

\tableofcontents

\chapter*{Introduction}
\input{chapters/vlc_introduction}

\part{VLC-sandbox, sécurité par isolation et limitation des capacités}
\chapter{Qu'est-ce que le sandboxing}
\input{chapters/what_is_sandboxing}

\chapter{Pourquoi faire du sandboxing dans VLC}
\input{chapters/why_sandboxing}

\part{Fonctionnement de VLC}
\chapter{Architecture modulaire}
\input{chapters/vlc_explanations}

\part{Abstractions apportées dans la sandbox}
\chapter{Question d'architecture: broker vs orchestrateur}
\input{chapters/sandbox_architecture}

\chapter{Communication inter-processus}
\input{chapters/sandbox_ipc}

\chapter{Gestion des messages reçus: boucle événementielle}
\input{chapters/sandbox_eventloop}

\chapter{Gestion des blocs mémoires}
\input{chapters/sandbox_memory_blocks}

\chapter{Technique de sandboxing naïve, isolation par module}
\input{chapters/sandbox_pattern_modules}

\chapter{Gestion des objets de libvlccore, design pattern}
\input{chapters/sandbox_pattern_libvlccore}

\part{Implémentation de la sandbox sous Linux}
\chapter{Passage de descripteur de fichiers entre processus}
\input{chapters/linux_file_descriptor}

\chapter{Gestion asynchrone des messages reçus}
\input{chapters/linux_eventloop}

% \chapter{Routage des messages dans les différents modèles}
%
% \chapter{Gestion des accès et permissions via socket unix et descripteur de fichiers}


\part{Implémentation de la sandbox sous Windows}
\chapter{Passage de descripteur de fichiers entre processus}
\input{chapters/windows_ipc}

\chapter{Gestion asynchrone des messages reçus}
\input{chapters/windows_eventloop}

%\chapter{Routage des messages dans le modèle broker}
%
%\chapter{Gestion des accès et de la mémoire via ACL}


\part{Finalisation et optimisation d'un moteur de rendu pour la réalité virtuelle}
\chapter{Qu'est-ce que la réalité virtuelle}

\chapter{Objectifs du projet}
\input{chapters/cinema.tex}


\part{Missions subsidiaires}

\chapter{Ajout de fonctionnalités mineures et correction de bogues}
\input{chapters/other_bug_features}

\chapter{Implémentation d'un encodeur matériel sous Android}
\input{chapters/other_android_mediacodec}

\chapter{Ajout du support d'égaliseur externe sur Android}

\chapter{Amélioration d'un module d'extraction de flux vidéos depuis des torrents}
\input{chapters/torrent}


\bibliographystyle{plain}
\bibliography{bibliography}

\end{document}
