diff --git a/src/dash-3d/client.tex b/src/dash-3d/client.tex index 86b6063..fb5af28 100644 --- a/src/dash-3d/client.tex +++ b/src/dash-3d/client.tex @@ -172,13 +172,18 @@ Algorithm~\ref{d3:next-segment} details how our DASH client makes decisions. \SetKwFunction{Argmax}{argmax} \SetKwFunction{Filter}{filter} \SetKwFunction{EstimateNetwork}{estimate\_network\_parameters} + \SetKwFunction{Append}{append} \Input{Current index $i$, time $t_i$, viewpoint $v(t_i)$, buffer of already downloaded \texttt{segments} $\mathcal{B}_i$, MPD} \Output{Next segment $s^{*}_i$ to request, updated buffer $\mathcal{B}_{i+1}$} + \BlankLine{} (\Bw, \Rtt) \leftarrow{} \EstimateNetwork{}\; - \Candidates\leftarrow{}\AllSegments\newline\makebox[1cm]{}.\Filter{$\Segment\rightarrow\Segment\notin\DownloadedSegments\land\Segment\in\Frustum$}\; + \BlankLine{} + \Candidates\leftarrow{} \AllSegments\newline\makebox[1cm]{}.\Filter{$\Segment\rightarrow\Segment\notin\DownloadedSegments$}\newline\makebox[1cm]{}.\Filter{$\Segment\rightarrow\Segment\in\Frustum$}\; + \BlankLine{} \Segment\leftarrow{} \Argmax{\Candidates, \Segment\rightarrow{} $\Omega\left(\mathcal{U}(\Segment)\right)$}\; + \DownloadedSegments.\Append{\Segment}\; {\caption{Algorithm to identify the next segment to query\label{d3:next-segment}}} \end{algorithm} diff --git a/src/foreword/3d-model.tex b/src/foreword/3d-model.tex index 4a52576..86217d9 100644 --- a/src/foreword/3d-model.tex +++ b/src/foreword/3d-model.tex @@ -85,15 +85,15 @@ A typical 3D renderer follows Algorithm~\ref{f:renderer}. \SetKwFunction{Draw}{draw} \tcc{Initialization} - \For{\Object\in\Scene}{% - \LoadGeometry(\Object.\Geometry)\; - \LoadTexture(\Object.\Texture)\; + \For{$\Object\in\Scene$}{% + \LoadGeometry{\Object.\Geometry}\; + \LoadTexture{\Object.\Texture}\; } \BlankLine% \BlankLine% \tcc{Render loop} \While{\True}{% - \For{\Object\in\Scene}{% + \For{$\Object\in\Scene$}{% \BindTexture{\Object.\Texture}\; \Draw{\Object.\Geometry}\; } @@ -135,8 +135,8 @@ Algorithm~\ref{f:frustum-culling} is a variation of Algorithm~\ref{f:renderer} w \tcc{Initialization} \For{$\Object\in\Scene$}{% - \LoadGeometry(\Object.\Geometry)\; - \LoadTexture(\Object.\Texture)\; + \LoadGeometry{\Object.\Geometry}\; + \LoadTexture{\Object.\Texture}\; } \BlankLine% \BlankLine% diff --git a/src/main.tex b/src/main.tex index 49cfbf1..607ed7b 100644 --- a/src/main.tex +++ b/src/main.tex @@ -58,6 +58,12 @@ This version was compiled on \today{} at \currenttime{}. \input{plan} +\newpage +\listoffigures% +\listoftables% +\listofalgorithms% +\lstlistoflistings% + \bibliography{src/bib.bib} \end{document} diff --git a/src/system-bookmarks/bookmark.tex b/src/system-bookmarks/bookmark.tex index 7ae36fa..e6afce2 100644 --- a/src/system-bookmarks/bookmark.tex +++ b/src/system-bookmarks/bookmark.tex @@ -227,30 +227,50 @@ The three first values in the supplemental property are the camera position coor We build on the loader introduced in Algorithm~\ref{d3:next-segment} to implement a client adaptation logic. We include a bookmark adaptation logic such that (i) when a bookmark is hovered for the first time, the corresponding images (see Listing~\ref{sb:bookmark-as}) are downloaded, and (ii) when a bookmark is clicked, we switch from utility $\mathcal{U}$ to optimized utility $\mathcal{U}^*$ to determine which segments to download next. +\newcommand\mycommfont[1]{\footnotesize\ttfamily\textcolor{blue}{#1}} +\SetCommentSty{mycommfont} +\SetNoFillComment% \begin{algorithm}[th] \SetKwInOut{Input}{input} \SetKwInOut{Output}{output} - \Input{Current index $i$, time $t_i$, viewpoint $v(t_i)$, buffer of already downloaded \texttt{segments} $\mathcal{B}_i$, MPD} - \Output{Next segment $s^{*}_i$ to request, updated buffer $\mathcal{B}_{i+1}$} - \SetAlgoLined% - {- Estimate the bandwidth $\widehat{BW_i}$ and RTT $\widehat{\tau_i}$ \;} - {- Among all \texttt{segments} that are not already downloaded $s \in \mathcal{S} \backslash \mathcal{B}_i$, % \;} - % {- - keep the ones inside the upcoming viewing frustums $\mathcal{FC}=\mathbb{FC}(\widehat{v}(t_i)), t\in [t_i, t_i+\chi]$ thanks to a viewpoint predictor $t_i \rightarrow \hat{v}(t_i)$, a temporal horizon $\chi$ and a frustum culling operator $\mathbb{FC}$ \;} + \SetKw{Continue}{continue} + \SetKwData{Bw}{bw\_estimation} + \SetKwData{Rtt}{rtt\_estimation} + \SetKwData{Segment}{best\_segment} + \SetKwData{Candidates}{candidates} + \SetKwData{AllSegments}{all\_segments} + \SetKwData{DownloadedSegments}{downloaded\_segments} + \SetKwData{Frustum}{frustum} + \SetKwFunction{Argmax}{argmax} + \SetKwFunction{Filter}{filter} + \SetKwFunction{EstimateNetwork}{estimate\_network\_parameters} + \SetKwFunction{Append}{append} + \Input{Current index $i$, time $t_i$, viewpoint $v(t_i)$, buffer of already downloaded \texttt{segments}, MPD} + \Output{Next segment to request, updated buffer} + \BlankLine{} - {- Optimize a criterion $\Omega$ based on $\mathcal{U}$ values and well chosen viewpoint $v(t_i)$ to select the next segment to query } - {\begin{equation*} - s^{*}_i= \argmax{s \in \mathcal{S} \backslash \mathcal{B}_i \cap \mathcal{FC}} \Omega_{\theta_i} \Big(\mathcal{U}(s,v(t_i))\Big) \label{sb:eq1} - \end{equation*} \\ - given parameters $\theta_i$ that gathers both online parameters $(i,t_i,v(t_i),\widehat{BW_i}, \widehat{\tau_i}, \mathcal{B}_i)$ and offline metadata;} + \uIf{bookmark clicking}{% + \uIf{not optimal order fetched}{% + \Return{} optimal order segment\; + } + \Else{% + \Return{} next segment\; + } + } + \Else{% + \tcc{Loading policy from previous chapter} + (\Bw, \Rtt) \leftarrow{} \EstimateNetwork{}\; - {- Update the buffer $\mathcal{B}_{i+1}$ for the next decision: $s^{*}_i$ and lowest \texttt{representations} of $s^{*}_i$ are considered downloaded\;} - {- \Return{segment $s^{*}_i$, buffer $\mathcal{B}_{i+1}$}\;} + \BlankLine{} + \Candidates\leftarrow{} \AllSegments\newline\makebox[1cm]{}.\Filter{$\Segment\rightarrow\Segment\notin\DownloadedSegments$}\newline\makebox[1cm]{}.\Filter{$\Segment\rightarrow\Segment\in\Frustum$}\; + \BlankLine{} + \Segment\leftarrow{} \Argmax{\Candidates, \Segment\rightarrow{} $\Omega\left(\mathcal{U}(\Segment)\right)$}\; + \DownloadedSegments.\Append{\Segment}\; + \Return\Segment; + {\caption{Algorithm to identify the next segment to query\label{sb:next-segment}}} - {\caption{Algorithm to identify the next segment to query\label{sb:next-segment}}} + } \end{algorithm} -\todo[inline]{to be modified to include bookmarks} -