[xiph-commits] r17972 - branches/theora-1.1/doc/spec

giles at svn.xiph.org giles at svn.xiph.org
Sat May 7 15:09:04 PDT 2011


Author: giles
Date: 2011-05-07 15:09:04 -0700 (Sat, 07 May 2011)
New Revision: 17972

Modified:
   branches/theora-1.1/doc/spec/
   branches/theora-1.1/doc/spec/Makefile.am
   branches/theora-1.1/doc/spec/spec.tex
Log:
Merge spec updates from trunk.



Property changes on: branches/theora-1.1/doc/spec
___________________________________________________________________
Added: svn:mergeinfo
   + /experimental/derf/theora-ptalarbvorm/doc/spec:16806-17444
/trunk/theora/doc/spec:14138-15320,15741,17445-17971

Modified: branches/theora-1.1/doc/spec/Makefile.am
===================================================================
--- branches/theora-1.1/doc/spec/Makefile.am	2011-05-07 20:26:20 UTC (rev 17971)
+++ branches/theora-1.1/doc/spec/Makefile.am	2011-05-07 22:09:04 UTC (rev 17972)
@@ -29,7 +29,7 @@
 if BUILD_SPEC
 # latex three times is the charm with references
 # long tables require the .aux file to start from scratch
-Theora.pdf : $(SPEC_SRCS) $(FIG_OBJS) vp3huff.tex spec.bib
+Theora.pdf : $(SPEC_SRCS) $(FIG_OBJS) vp3huff.tex
 	-$(RM) spec.aux
 	pdflatex -interaction nonstopmode spec.tex
 	bibtex spec.aux

Modified: branches/theora-1.1/doc/spec/spec.tex
===================================================================
--- branches/theora-1.1/doc/spec/spec.tex	2011-05-07 20:26:20 UTC (rev 17971)
+++ branches/theora-1.1/doc/spec/spec.tex	2011-05-07 22:09:04 UTC (rev 17972)
@@ -58,6 +58,16 @@
 \numberwithin{figure}{chapter}
 \numberwithin{table}{chapter}
 
+%Provide section numbering for \paragraph.
+\makeatletter
+\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
+ {-3.25ex plus -1ex minus -0.2ex}%
+ {1.5ex plus 0.2ex}%
+ {\normalfont\normalsize\bfseries}}
+\makeatother
+\stepcounter{secnumdepth}
+\stepcounter{tocdepth}
+
 \keepXColumns
 
 \pagestyle{headings}
@@ -105,7 +115,7 @@
 {\bf Example:} The value \bin{1110100} is equal to the decimal value 116.
 \end{verse}
 
-The prefix \hex{} indicates the the following value is to be interpreted as a
+The prefix \hex{} indicates the following value is to be interpreted as a
  hexadecimal number (base 16).
 \begin{verse}
 {\bf Example:} The value \hex{74} is equal to the decimal value 116.
@@ -4094,14 +4104,15 @@
 For INTER\_MV and INTER\_GOLDEN\_MV modes, a single motion vector is decoded
  and applied to each block.
 For INTER\_MV\_FOUR macro blocks, a motion vector is decoded for each coded
- luma block.
+ luma block, in raster order, not coded order.
 Uncoded luma blocks receive the default $(0,0)$ vector for the purposes of
  computing the chroma motion vectors.
 
 None of the remaining macro block coding modes require decoding motion vectors
  from the stream.
-INTRA mode does not use a motion-compensated predictor, and so requires no
- motion vector, and INTER\_NOMV and INTER\_GOLDEN\_NOMV modes use the default
+INTRA mode does not use a motion-compensated predictor, and thus does not
+ require a motion vector.
+Both the INTER\_NOMV and the INTER\_GOLDEN\_NOMV modes use the default
  vector $(0,0)$ for each block.
 This also includes all macro blocks with no coded luma blocks, as they are
  coded in INTER\_NOMV mode by definition.
@@ -4112,10 +4123,12 @@
 Thus no explicit motion vector needs to be decoded for these modes.
 Macro blocks coded in INTRA mode or one of the GOLDEN modes are not considered
  in this process.
+For macro blocks coded in INTER\_MV\_FOUR mode, this process uses the vector
+ from the last coded luma block in the macro block, again in raster order, not
+ coded order.
+This is usually the upper-right block.
 If an insufficient number of macro blocks have been coded in one of the INTER
  modes, then the $(0,0)$ vector is used instead.
-For macro blocks coded in INTER\_MV\_FOUR mode, the vector from the upper-right
- luma block is used, even if the upper-right block is not coded.
 
 The motion vectors are decoded from the stream as follows:
 
@@ -5397,13 +5410,13 @@
 \locvar{W}        & \multicolumn{1}{p{40pt}}{Integer Array} &
                                7 & Yes & A 4-element array of the weights to
  apply to each neighboring DC value. \\
-\locvar{PDIV}     & Integer &  8 & No  & The valud to divide the weighted sum
+\locvar{PDIV}     & Integer &  8 & No  & The value to divide the weighted sum
  by. \\
 \locvar{\bj}      & Integer & 36 & No  & The index of a neighboring block in
  coded order. \\
 \locvar{\mbi}     & Integer & 32 & No  & The index of the macro block
  containing block \bitvar{\bi}. \\
-\locvar{\mbi}     & Integer & 32 & No  & The index of the macro block
+\locvar{\mbj}     & Integer & 32 & No  & The index of the macro block
  containing block \locvar{\bj}. \\
 \locvar{\rfi}     & Integer &  2 & No  & The index of the reference frame
  indicated by the coding mode for macro block \locvar{\mbi}. \\
@@ -5515,7 +5528,7 @@
 Otherwise, assign $\locvar{P}[1]$ the value zero.
 
 \item
-If block \bitvar{\bi} is not along the the bottom edge of the coded frame:
+If block \bitvar{\bi} is not along the bottom edge of the coded frame:
 \begin{enumerate}
 \item
 Assign \locvar{\bj} the coded-order index of block \bitvar{\bi}'s lower
@@ -5594,7 +5607,7 @@
 \multicolumn{1}{p{25pt}}{\centering$\locvar{P}[1]$ (DL)} &
 \multicolumn{1}{p{25pt}}{\centering$\locvar{P}[2]$ (D)} &
 \multicolumn{1}{p{25pt}}{\centering$\locvar{P}[3]$ (DR)} &
-\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[3]$ (L)} &
+\multicolumn{1}{p{25pt}}{\centering$\locvar{W}[0]$ (L)} &
 \multicolumn{1}{p{25pt}}{\centering$\locvar{W}[1]$ (DL)} &
 \multicolumn{1}{p{25pt}}{\centering$\locvar{W}[2]$ (D)} &
 \multicolumn{1}{p{25pt}}{\centering$\locvar{W}[3]$ (DR)} &
@@ -6282,6 +6295,14 @@
 Some operations may be re-ordered, but the result must be precisely equivalent.
 This is a design decision that limits some avenues of decoder optimization, but
  prevents any drift in the prediction loop.
+The full inverse DCT described in this section is only used when there is at
+ least one non-zero AC coefficient.
+Otherwise, a special DC-only case is used, which is described below in
+ step~\ref{step:dc-only-idct} of Section~\ref{sub:recon}.
+The DC-only special case is not exactly equivalent to applying the full inverse
+ transform, because it avoids the intermediate multiplications and truncation,
+ and it MUST be used in place of the full transform to ensure bit-exact decode.
+
 Theora uses a 16-bit integerized approximation of of the 8-point 1D inverse DCT
  based on the Chen factorization \cite{CSF77}.
 It requires 16 multiplications and 26 additions and subtractions.
@@ -7012,6 +7033,7 @@
  Section~\ref{sub:predhalfpel}.
 \end{enumerate}
 \item
+\label{step:dc-only-idct}
 If $\bitvar{NCOEFFS}[\locvar{\bi}]$ is less than 2:
 \begin{enumerate}
 \item
@@ -7731,7 +7753,8 @@
 \item
 If \locvar{FTYPE} is non-zero (inter frame), using \bitvar{PF}, \bitvar{NMBS},
  \locvar{MBMODES}, \bitvar{NBS}, and \locvar{BCODED}, decode the motion vectors
- into \locvar{MVECTS} using the procedure given in Section~\ref{sub:mv-decode}.
+ into \locvar{MVECTS} using the procedure given in
+ Section~\ref{sub:mb-mv-decode}.
 \item
 Using \bitvar{NBS}, \locvar{BCODED}, and \locvar{NQIS}, decode the block-level
  \qi\ values into \locvar{QIIS} using the procedure given in
@@ -8117,7 +8140,7 @@
 \begin{align*}
 \bitvar{NQRS}    = & \{ \{1, 1, 1\}, \{1, 1, 1\} \} \\
 \bitvar{QRSIZES} = &
- \{ \{ \{1\}, \{1\}, \{1\} \}, \{ \{1\}, \{1\}, \{1\} \} \} \\
+ \{ \{ \{63\}, \{63\}, \{63\} \}, \{ \{63\}, \{63\}, \{63\} \} \} \\
 \bitvar{QRBMIS}  = &
  \{ \{ \{0, 0\}, \{1, 1\}, \{1, 1\} \}, \{ \{2, 2\}, \{2, 2\}, \{2, 2\} \} \} \\
 \end{align*}



More information about the commits mailing list