diff --git a/cs/vcodec.tex b/cs/vcodec.tex new file mode 100644 index 0000000..23ec23e --- /dev/null +++ b/cs/vcodec.tex @@ -0,0 +1,228 @@ +\documentclass[11pt]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} % Fix weird character +\usepackage{geometry} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{gensymb} +\usepackage{spalign} +\usepackage{xfrac} +\usepackage{parskip} +\usepackage{float} % figure[H] +\usepackage[english]{babel} +\usepackage[style=ieee,backend=biber,urldate=iso,date=iso]{biblatex} +\usepackage[breaklinks=true,bookmarks=true,hidelinks]{hyperref} +\usepackage{tikz} +\usepackage{pgfplots} +\usepackage{circuitikz} +\usepackage{subcaption} +\usepackage[yyyymmdd]{datetime} +\usepackage{url} +\usetikzlibrary {arrows.meta} +\pgfplotsset{compat=newest,compat/show suggested version=false} + +% Custom shape +\makeatletter +\pgfdeclareshape{dflowpass}{ + \inheritsavedanchors[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \anchor{left}{\pgfpoint{-0.5cm}{0cm}} + \anchor{right}{\pgfpoint{0.5cm}{0cm}} + % Add more custom anchors if needed + \backgroundpath{ + % Draw the switch shape (rectangle with diagonal lines) + \pgfsetlinewidth{0.85pt} + \pgfpathrectanglecorners{\pgfpoint{-0.5cm}{-0.5cm}}{\pgfpoint{0.5cm}{0.5cm}} + \pgfpathmoveto{\pgfpoint{-0.35cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{0.15cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{0.35cm}{-0.2cm}} + \pgfusepath{draw} + } +} +\pgfdeclareshape{dfhighpass}{ + \inheritsavedanchors[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \anchor{left}{\pgfpoint{-0.5cm}{0cm}} + \anchor{right}{\pgfpoint{0.5cm}{0cm}} + \backgroundpath{ + % Draw the switch shape (rectangle with diagonal lines) + \pgfsetlinewidth{1pt} + \pgfpathrectanglecorners{\pgfpoint{-0.5cm}{-0.5cm}}{\pgfpoint{0.5cm}{0.5cm}} + \pgfpathmoveto{\pgfpoint{0.35cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{-0.15cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{-0.35cm}{-0.2cm}} + \pgfusepath{draw} + } +} +\pgfdeclareshape{dfbandpass}{ + \inheritsavedanchors[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \anchor{left}{\pgfpoint{-0.5cm}{0cm}} + \anchor{right}{\pgfpoint{0.5cm}{0cm}} + \backgroundpath{ + % Draw the switch shape (rectangle with diagonal lines) + \pgfsetlinewidth{1pt} + \pgfpathrectanglecorners{\pgfpoint{-0.5cm}{-0.5cm}}{\pgfpoint{0.5cm}{0.5cm}} + \pgfpathmoveto{\pgfpoint{-0.35cm}{-0.2cm}} + \pgfpathlineto{\pgfpoint{-0.20cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{0.15cm}{0.125cm}} + \pgfpathlineto{\pgfpoint{0.35cm}{-0.2cm}} + \pgfusepath{draw} + } +} +\pgfdeclareshape{quantizer}{ + \inheritsavedanchors[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \anchor{left}{\pgfpoint{-0.5cm}{0cm}} + \anchor{right}{\pgfpoint{0.5cm}{0cm}} + \backgroundpath{ + % Draw the switch shape (rectangle with diagonal lines) + \pgfsetlinewidth{0.8pt} + \pgfpathrectanglecorners{\pgfpoint{-0.5cm}{-0.5cm}}{\pgfpoint{0.5cm}{0.5cm}} + \pgfpathmoveto{\pgfpoint{-0.25cm}{-0.25cm}} + \pgfpathlineto{\pgfpoint{0cm}{-0.25cm}} + \pgfpathlineto{\pgfpoint{0cm}{0.25cm}} + \pgfpathlineto{\pgfpoint{0.25cm}{0.25cm}} + \pgfusepath{draw} + } +} +\pgfdeclareshape{quantamp}{ + \inheritsavedanchors[from=op amp] + \inheritanchorborder[from=op amp] + \inheritanchor[from=op amp]{center} + \inheritanchor[from=op amp]{+} + \inheritanchor[from=op amp]{-} + \inheritanchor[from=op amp]{out} + \inheritanchor[from=op amp]{up} + \inheritanchor[from=op amp]{down} + \backgroundpath{ + \pgfsetlinewidth{0.8pt} + \pgfpathmoveto{\pgfpoint{-0.5cm}{0.55cm}} + \pgfpathlineto{\pgfpoint{0.5cm}{0}} + \pgfpathlineto{\pgfpoint{-0.5cm}{-0.55cm}} + \pgfpathclose + \pgfpathmoveto{\pgfpoint{-0.35cm}{-0.2cm}} + \pgfpathlineto{\pgfpoint{-0.2cm}{-0.2cm}} + \pgfpathlineto{\pgfpoint{-0.2cm}{0.2cm}} + \pgfpathlineto{\pgfpoint{-0.05cm}{0.2cm}} + \pgfusepath{draw} + } +} +\pgfdeclareshape{decimation}{ + \inheritsavedanchors[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritanchor[from=rectangle]{center} + \anchor{left}{\pgfpoint{-0.5cm}{0.0cm}} + \anchor{right}{\pgfpoint{0.5cm}{0.0cm}} + \anchor{top}{\pgfpoint{0.0cm}{0.5cm}} + \anchor{bot}{\pgfpoint{0.0cm}{-0.5cm}} + \backgroundpath{ + \pgfsetlinewidth{0.8pt} + \pgfpathrectanglecorners{\pgfpoint{-0.5cm}{-0.5cm}}{\pgfpoint{0.5cm}{0.5cm}} + \pgfpathmoveto{\pgfpoint{-0.25cm}{0.25cm}} + \pgfpathlineto{\pgfpoint{-0.25cm}{-0.25cm}} + \pgfpathmoveto{\pgfpoint{-0.30cm}{-0.185cm}} + \pgfpathlineto{\pgfpoint{-0.25cm}{-0.25cm}} + \pgfpathlineto{\pgfpoint{-0.20cm}{-0.185cm}} + \pgfusepath{draw} + } +} +\makeatother + +\geometry{ + a4paper, + hmargin=2.54cm, + tmargin=1.27cm, + bmargin=1.27cm, + includeheadfoot +} +\setcounter{secnumdepth}{0} % Disable section numbering + +\begin{filecontents}{vcodec.bib} +@misc{wiki:mjpeg, + author = "{Wikipedia contributors}", + title = "Motion JPEG --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + howpublished = "\url{https://en.wikipedia.org/w/index.php?title=Motion_JPEG&oldid=1259055254}", + note = "[Online; accessed 20-December-2024]" +} +@misc{wiki:prores, + author = "{Wikipedia contributors}", + title = "Apple ProRes --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + howpublished = "\url{https://en.wikipedia.org/w/index.php?title=Apple_ProRes&oldid=1248322314}", + note = "[Online; accessed 20-December-2024]" +} +@misc{wiki:h264, + author = "{Wikipedia contributors}", + title = "Advanced Video Coding --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + howpublished = "\url{https://en.wikipedia.org/w/index.php?title=Advanced_Video_Coding&oldid=1251662394}", + note = "[Online; accessed 20-December-2024]" +} +@misc{wiki:h265, + author = "{Wikipedia contributors}", + title = "High Efficiency Video Coding --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + howpublished = "\url{https://en.wikipedia.org/w/index.php?title=High_Efficiency_Video_Coding&oldid=1258600452}", + note = "[Online; accessed 20-December-2024]" +} +@misc{wiki:av1, + author = "{Wikipedia contributors}", + title = "AV1 --- {Wikipedia}{,} The Free Encyclopedia", + year = "2024", + howpublished = "\url{https://en.wikipedia.org/w/index.php?title=AV1&oldid=1261928987}", + note = "[Online; accessed 20-December-2024]" +} +@misc{av1:tech, + title={A Technical Overview of AV1}, + author={Jingning Han and Bohan Li and Debargha Mukherjee and Ching-Han Chiang and Adrian Grange and Cheng Chen and Hui Su and Sarah Parker and Sai Deng and Urvang Joshi and Yue Chen and Yunqing Wang and Paul Wilkins and Yaowu Xu and James Bankoski}, + year={2021}, + eprint={2008.06091}, + archivePrefix={arXiv}, + primaryClass={eess.IV}, + url={https://arxiv.org/abs/2008.06091}, +} +\end{filecontents} +\addbibresource{vcodec.bib} + +\begin{document} +\section{Video Codec} + +\begin{itemize} + \item Motion JPEG (MJPEG)\cite{wiki:mjpeg} + \item Apple ProRes\cite{wiki:prores} + \item AVC (Advanced Video Coding) H.264\cite{wiki:h264} + \item HEVC (High Efficiency Video Coding) H.265\cite{wiki:h265} + \item AV1 (AOMedia Video 1)\cite{wiki:av1} +\end{itemize} + +With the slowdown in the growth of general CPU clock frequency and power +constraints on mobile devices in particular, next generation video compression +codecs are expected to rely heavily on dedicated hardware decoders. Therefore +during the AV1 development process, all the coding tools were carefully reviewed +for hardware considerations (e.g., latency, silicon area, etc.), which resulted +in a codec design well balanced for compression performance and hardware +feasibility. + +The AV1 codec supports input video signals in the 4:0:0 (monochrome), 4:2:0, +4:2:2, and 4:4:4 formats. The allowed pixel representations are 8-, 10-, and +12-bit. + +An adaptive interpolation filter scheme is used in VP9, where an inter-coded +block in VP9 can choose from three 8-tap interpolation filters that correspond +to different cutoff frequencies in a Hamming window in the frequency domain. + +Each direction can choose from 3 finite impulse response (FIR) filters, namely +SMOOTH, REGULAR, and SHARP in ascending order of cutoff frequencies. + +The SHARP filter continues to use an 8-tap FIR design to mitigate the ripple +effect near the cutoff frequency.\cite{av1:tech} + +\newpage +\printbibliography +\end{document} diff --git a/deploy.sh b/deploy.sh index 0ce3cce..2d149dd 100755 --- a/deploy.sh +++ b/deploy.sh @@ -41,9 +41,10 @@ EOF generate_file_index() { # Add files printf "" > $registry_path - find ./maths | grep .tex >> $registry_path + find ./cs | grep .tex >> $registry_path find ./dsp | grep .tex >> $registry_path find ./ee | grep .tex >> $registry_path + find ./maths | grep .tex >> $registry_path find ./misc | grep .tex >> $registry_path # Filter out dependencies from registry database @@ -117,7 +118,7 @@ parse_args() { prebuild() { # clean if [[ $is_clean = true ]] && [[ -e "$build_dir" ]]; then - rm -rf $build_dir + rm -rf $build_dir fi if [[ $is_clean = true ]] && [[ $is_production = true ]] && [[ -e "$dist_dir/pdf" ]]; then rm -rf "$dist_dir/pdf"