\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book}

%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
\usepackage{ifthen}
\ifx\requestedLaTeXdate\undefined
\usepackage{array}
\else
\usepackage{array}[=2016-10-06]
\fi
%%
% Packages required by doxygen
\usepackage{fixltx2e}
\usepackage{calc}
\usepackage{doxygen}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\usepackage{multicol}
\usepackage{multirow}
\PassOptionsToPackage{warn}{textcomp}
\usepackage{textcomp}
\usepackage[nointegrals]{wasysym}
\usepackage[table]{xcolor}
\usepackage{ifpdf,ifxetex}

% Font selection
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{courier}
\usepackage{amssymb}
\usepackage{sectsty}
\renewcommand{\familydefault}{\sfdefault}
\allsectionsfont{%
  \fontseries{bc}\selectfont%
  \color{darkgray}%
}
\renewcommand{\DoxyLabelFont}{%
  \fontseries{bc}\selectfont%
  \color{darkgray}%
}
\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}

% Arguments of doxygenemoji:
% 1) ':<text>:' form of the emoji, already "LaTeX"-escaped
% 2) file with the name of the emoji without the .png extension
% in case image exist use this otherwise use the ':<text>:' form
\newcommand{\doxygenemoji}[2]{%
  \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
}
% Page & text layout
\usepackage{geometry}
\geometry{%
  a4paper,%
  top=2.5cm,%
  bottom=2.5cm,%
  left=2.5cm,%
  right=2.5cm%
}
\tolerance=750
\hfuzz=15pt
\hbadness=750
\setlength{\emergencystretch}{15pt}
\setlength{\parindent}{0cm}
\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
\doxynormalparskip
\makeatletter
\renewcommand{\paragraph}{%
  \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
    \normalfont\normalsize\bfseries\SS@parafont%
  }%
}
\renewcommand{\subparagraph}{%
  \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
    \normalfont\normalsize\bfseries\SS@subparafont%
  }%
}
\makeatother

\makeatletter
\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
\makeatother

% Headers & footers
\usepackage{fancyhdr}
\pagestyle{fancyplain}
\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
\fancyhead[CE]{\fancyplain{}{}}
\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
\fancyhead[CO]{\fancyplain{}{}}
\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
\fancyfoot[LE]{\fancyplain{}{}}
\fancyfoot[CE]{\fancyplain{}{}}
\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
\fancyfoot[CO]{\fancyplain{}{}}
\fancyfoot[RO]{\fancyplain{}{}}
\renewcommand{\footrulewidth}{0.4pt}
\renewcommand{\chaptermark}[1]{%
  \markboth{#1}{}%
}
\renewcommand{\sectionmark}[1]{%
  \markright{\thesection\ #1}%
}

% Indices & bibliography
\usepackage{natbib}
\usepackage[titles]{tocloft}
\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{5}
\makeindex

\usepackage{newunicodechar}
  \newunicodechar{⁻}{${}^{-}$}% Superscript minus
  \newunicodechar{²}{${}^{2}$}% Superscript two
  \newunicodechar{³}{${}^{3}$}% Superscript three

% Hyperlinks (required, but should be loaded last)
\ifpdf
  \usepackage[pdftex,pagebackref=true]{hyperref}
\else
  \ifxetex
    \usepackage[pagebackref=true]{hyperref}
  \else
    \usepackage[ps2pdf,pagebackref=true]{hyperref}
  \fi
\fi

\hypersetup{%
  colorlinks=true,%
  linkcolor=blue,%
  citecolor=blue,%
  unicode%
}

% Custom commands
\newcommand{\clearemptydoublepage}{%
  \newpage{\pagestyle{empty}\cleardoublepage}%
}

\usepackage{caption}
\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}

\usepackage{etoc}
\etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
\renewcommand{\numberline}[1]{#1~}
%===== C O N T E N T S =====

\begin{document}

% Titlepage & ToC
\hypersetup{pageanchor=false,
             bookmarksnumbered=true,
             pdfencoding=unicode
            }
\pagenumbering{alph}
\begin{titlepage}
\vspace*{7cm}
\begin{center}%
{\Large Doxygen Book }\\
\vspace*{1cm}
{\large Generated by Doxygen 1.8.17}\\
\end{center}
\end{titlepage}
\clearemptydoublepage
\pagenumbering{roman}
\tableofcontents
\clearemptydoublepage
\pagenumbering{arabic}
\hypersetup{pageanchor=true}

%--- Begin generated contents ---
\chapter{nnstreamer}
\label{index}\hypertarget{index}{}\input{index}
\chapter{Todo List}
\label{todo}
\Hypertarget{todo}
\input{todo}
\chapter{Bug List}
\label{bug}
\Hypertarget{bug}
\input{bug}
\chapter{Namespace Index}
\input{namespaces}
\chapter{Class Index}
\input{annotated}
\chapter{File Index}
\input{files}
\chapter{Namespace Documentation}
\input{namespacennstreamer}
\chapter{Class Documentation}
\input{struct__FilterTransformData}
\input{struct__GstDataRepoSink}
\input{struct__GstDataRepoSinkClass}
\input{struct__GstDataRepoSrc}
\input{struct__GstDataRepoSrcClass}
\input{struct__GstEdgeSink}
\input{struct__GstEdgeSinkClass}
\input{struct__GstEdgeSrc}
\input{struct__GstEdgeSrcClass}
\input{struct__GstJoin}
\input{struct__GstJoinClass}
\input{struct__GstJoinPad}
\input{struct__GstJoinPadClass}
\input{struct__GstMQTTMessageHdr}
\input{struct__GstMqttSink}
\input{struct__GstMqttSinkClass}
\input{struct__GstMqttSrc}
\input{struct__GstMqttSrcClass}
\input{struct__GstTensorAggregator}
\input{struct__GstTensorAggregatorClass}
\input{struct__GstTensorConverter}
\input{struct__GstTensorConverterClass}
\input{struct__GstTensorCrop}
\input{struct__GstTensorCropClass}
\input{struct__GstTensorDebug}
\input{struct__GstTensorDebugClass}
\input{struct__GstTensorDecoder}
\input{struct__GstTensorDecoderClass}
\input{struct__GstTensorDecoderDef}
\input{struct__GstTensorDemux}
\input{struct__GstTensorDemuxClass}
\input{struct__GstTensorFilter}
\input{struct__GstTensorFilterClass}
\input{struct__GstTensorFilterCombination}
\input{struct__GstTensorFilterFramework}
\input{struct__GstTensorFilterFrameworkEventData}
\input{struct__GstTensorFilterFrameworkInfo}
\input{struct__GstTensorFilterFrameworkStatistics}
\input{struct__GstTensorFilterPrivate}
\input{struct__GstTensorFilterProperties}
\input{struct__GstTensorFilterStatistics}
\input{struct__GstTensorIf}
\input{struct__GstTensorIfClass}
\input{struct__GstTensorMerge}
\input{struct__GstTensorMergeClass}
\input{struct__GstTensorMux}
\input{struct__GstTensorMuxClass}
\input{struct__GstTensorQueryClient}
\input{struct__GstTensorQueryClientClass}
\input{struct__GstTensorQueryServerSink}
\input{struct__GstTensorQueryServerSinkClass}
\input{struct__GstTensorQueryServerSrc}
\input{struct__GstTensorQueryServerSrcClass}
\input{struct__GstTensorRate}
\input{struct__GstTensorRateClass}
\input{struct__GstTensorRepoSink}
\input{struct__GstTensorRepoSinkClass}
\input{struct__GstTensorRepoSrc}
\input{struct__GstTensorRepoSrcClass}
\input{struct__GstTensorSink}
\input{struct__GstTensorSinkClass}
\input{struct__GstTensorSparseDec}
\input{struct__GstTensorSparseDecClass}
\input{struct__GstTensorSparseEnc}
\input{struct__GstTensorSparseEncClass}
\input{struct__GstTensorSplit}
\input{struct__GstTensorSplitClass}
\input{struct__GstTensorSrcIIO}
\input{struct__GstTensorSrcIIOChannelProperties}
\input{struct__GstTensorSrcIIOClass}
\input{struct__GstTensorSrcIIODeviceProperties}
\input{struct__GstTensorTrainer}
\input{struct__GstTensorTrainerClass}
\input{struct__GstTensorTrainerEventNotifier}
\input{struct__GstTensorTrainerFramework}
\input{struct__GstTensorTrainerFrameworkInfo}
\input{struct__GstTensorTrainerProperties}
\input{struct__GstTensorTransform}
\input{struct__GstTensorTransformClass}
\input{struct__GTensorFilterSingle}
\input{struct__GTensorFilterSingleClass}
\input{struct__GTensorFilterSinglePrivate}
\input{struct__internal__data}
\input{struct__NNStreamer__custom__class}
\input{struct__NNStreamerExternalConverter}
\input{struct__NnstWatchdog}
\input{struct__ntp__packet__t}
\input{struct__ntp__timestamp__t}
\input{struct__tensor__merge__linear}
\input{struct__tensor__sync__basepad__data}
\input{struct__tensor__time__sync__data}
\input{struct__tensor__transform__arithmetic}
\input{struct__tensor__transform__clamp}
\input{struct__tensor__transform__dimchg}
\input{struct__tensor__transform__padding}
\input{struct__tensor__transform__stand}
\input{struct__tensor__transform__transpose}
\input{struct__tensor__transform__typecast}
\input{structconfdata}
\input{structconverter__custom__cb__s}
\input{structcustom__cb__s}
\input{structdecoder__custom__cb__s}
\input{structdump__buf}
\input{structgst__tensor__aggregation__data__s}
\input{structGstMetaQuery}
\input{structGstSparseTensorInfo}
\input{structGstTensorAllocator}
\input{structGstTensorAllocatorClass}
\input{structGstTensorCollectPadData}
\input{structGstTensorCropPadData}
\input{structGstTensorExtraInfo}
\input{structGstTensorFilterSharedModelRepresentation}
\input{structGstTensorInfo}
\input{structGstTensorMemory}
\input{structGstTensorMetaInfo}
\input{structGstTensorPad}
\input{structGstTensorQueryEdgeInfo}
\input{structGstTensorQueryServer}
\input{structGstTensorRepo}
\input{structGstTensorRepoData}
\input{structGstTensorsConfig}
\input{structGstTensorsInfo}
\input{structparse__accl__args}
\input{structruntime__data}
\input{structsubplugin__conf}
\input{structsubplugin__info__s}
\input{structtensor__crop__info__s}
\input{structtensor__data__s}
\input{uniontensor__element}
\input{structtensor__if__sv__s}
\input{structtensor__region__s}
\input{structtensor__transform__operator__s}
\input{structvstr__helper}
\chapter{File Documentation}
\input{gstdatarepo_8c}
\input{gstdatarepo_8h}
\input{gstdatareposink_8c}
\input{gstdatareposink_8h}
\input{gstdatareposrc_8c}
\input{gstdatareposrc_8h}
\input{edge__common_8c}
\input{edge__common_8h}
\input{edge__elements_8c}
\input{edge__sink_8c}
\input{edge__sink_8h}
\input{edge__src_8c}
\input{edge__src_8h}
\input{gstjoin_8c}
\input{gstjoin_8h}
\input{mqttcommon_8h}
\input{mqttelements_8c}
\input{mqttsink_8c}
\input{mqttsink_8h}
\input{mqttsrc_8c}
\input{mqttsrc_8h}
\input{ntputil_8c}
\input{ntputil_8h}
\input{gsttensor__aggregator_8c}
\input{gsttensor__aggregator_8h}
\input{gsttensor__converter_8c}
\input{gsttensor__converter_8h}
\input{gsttensor__converter__media__info__audio_8h}
\input{gsttensor__converter__media__info__video_8h}
\input{gsttensor__converter__media__no__audio_8h}
\input{gsttensor__converter__media__no__video_8h}
\input{gsttensor__crop_8c}
\input{gsttensor__crop_8h}
\input{gsttensor__debug_8c}
\input{gsttensor__debug_8h}
\input{gsttensor__decoder_8c}
\input{gsttensor__decoder_8h}
\input{gsttensor__demux_8c}
\input{gsttensor__demux_8h}
\input{gsttensor__if_8c}
\input{gsttensor__if_8h}
\input{gsttensor__merge_8c}
\input{gsttensor__merge_8h}
\input{gsttensor__mux_8c}
\input{gsttensor__mux_8h}
\input{gsttensor__rate_8c}
\input{gsttensor__rate_8h}
\input{gsttensor__repo_8c}
\input{gsttensor__repo_8h}
\input{gsttensor__reposink_8c}
\input{gsttensor__reposink_8h}
\input{gsttensor__reposrc_8c}
\input{gsttensor__reposrc_8h}
\input{gsttensor__sink_8c}
\input{gsttensor__sink_8h}
\input{gsttensor__sparsedec_8c}
\input{gsttensor__sparsedec_8h}
\input{gsttensor__sparseenc_8c}
\input{gsttensor__sparseenc_8h}
\input{gsttensor__sparseutil_8c}
\input{gsttensor__sparseutil_8h}
\input{gsttensor__split_8c}
\input{gsttensor__split_8h}
\input{gsttensor__srciio_8c}
\input{gsttensor__srciio_8h}
\input{gsttensor__trainer_8c}
\input{gsttensor__trainer_8h}
\input{gsttensor__transform_8c}
\input{gsttensor__transform_8h}
\input{ignore__warning_8sh}
\input{hw__accel_8c}
\input{hw__accel_8h}
\input{nnstreamer__plugin__api_8h}
\input{nnstreamer__plugin__api__converter_8h}
\input{nnstreamer__plugin__api__decoder_8h}
\input{nnstreamer__plugin__api__filter_8h}
\input{nnstreamer__plugin__api__trainer_8h}
\input{nnstreamer__plugin__api__util_8h}
\input{nnstreamer__util_8h}
\input{tensor__converter__custom_8h}
\input{tensor__decoder__custom_8h}
\input{tensor__filter__custom_8h}
\input{tensor__filter__custom__easy_8h}
\input{tensor__if_8h}
\input{tensor__typedef_8h}
\input{ml__agent_8c}
\input{ml__agent_8h}
\input{nnstreamer__conf_8c}
\input{nnstreamer__conf_8h}
\input{nnstreamer__internal_8h}
\input{nnstreamer__log_8c}
\input{nnstreamer__log_8h}
\input{nnstreamer__plugin__api__impl_8c}
\input{nnstreamer__plugin__api__util__impl_8c}
\input{nnstreamer__subplugin_8c}
\input{nnstreamer__subplugin_8h}
\input{nnstreamer__watchdog_8c}
\input{nnstreamer__watchdog_8h}
\input{nnstreamer_8c}
\input{tensor__allocator_8c}
\input{tensor__common_8h}
\input{tensor__data_8c}
\input{tensor__data_8h}
\input{tensor__filter_8c}
\input{tensor__filter_8h}
\input{tensor__filter__common_8c}
\input{tensor__filter__common_8h}
\input{tensor__filter__custom_8c}
\input{tensor__filter__custom__easy_8c}
\input{tensor__filter__single_8c}
\input{tensor__filter__single_8h}
\input{tensor__filter__support__cc_8cc}
\input{tensor__meta_8c}
\input{tensor__meta_8h}
\input{tensor__query__client_8c}
\input{tensor__query__client_8h}
\input{tensor__query__common_8c}
\input{tensor__query__common_8h}
\input{tensor__query__server_8c}
\input{tensor__query__server_8h}
\input{tensor__query__serversink_8c}
\input{tensor__query__serversink_8h}
\input{tensor__query__serversrc_8c}
\input{tensor__query__serversrc_8h}
%--- End generated contents ---

% Index
\backmatter
\newpage
\phantomsection
\clearemptydoublepage
\addcontentsline{toc}{chapter}{\indexname}
\printindex

\end{document}
