pvq_encoding.lyx 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890
  1. #LyX 2.1 created this file. For more info see http://www.lyx.org/
  2. \lyxformat 474
  3. \begin_document
  4. \begin_header
  5. \textclass article
  6. \use_default_options true
  7. \maintain_unincluded_children false
  8. \language english
  9. \language_package default
  10. \inputencoding auto
  11. \fontencoding global
  12. \font_roman default
  13. \font_sans default
  14. \font_typewriter default
  15. \font_math auto
  16. \font_default_family default
  17. \use_non_tex_fonts false
  18. \font_sc false
  19. \font_osf false
  20. \font_sf_scale 100
  21. \font_tt_scale 100
  22. \graphics default
  23. \default_output_format default
  24. \output_sync 0
  25. \bibtex_command default
  26. \index_command default
  27. \paperfontsize default
  28. \use_hyperref false
  29. \papersize default
  30. \use_geometry false
  31. \use_package amsmath 1
  32. \use_package amssymb 1
  33. \use_package cancel 0
  34. \use_package esint 1
  35. \use_package mathdots 1
  36. \use_package mathtools 0
  37. \use_package mhchem 1
  38. \use_package stackrel 0
  39. \use_package stmaryrd 0
  40. \use_package undertilde 0
  41. \cite_engine basic
  42. \cite_engine_type default
  43. \biblio_style plain
  44. \use_bibtopic false
  45. \use_indices false
  46. \paperorientation portrait
  47. \suppress_date false
  48. \justification true
  49. \use_refstyle 1
  50. \index Index
  51. \shortcut idx
  52. \color #008000
  53. \end_index
  54. \secnumdepth 3
  55. \tocdepth 3
  56. \paragraph_separation indent
  57. \paragraph_indentation default
  58. \quotes_language english
  59. \papercolumns 1
  60. \papersides 1
  61. \paperpagestyle default
  62. \tracking_changes false
  63. \output_changes false
  64. \html_math_output 0
  65. \html_css_as_file 0
  66. \html_be_strict false
  67. \end_header
  68. \begin_body
  69. \begin_layout Title
  70. PVQ Encoding with Non-Uniform Distribution
  71. \end_layout
  72. \begin_layout Author
  73. Jean-Marc Valin, Timothy B.
  74. Terriberry
  75. \end_layout
  76. \begin_layout Section
  77. Introduction
  78. \end_layout
  79. \begin_layout Standard
  80. The pyramid vector quantizer (PVQ) is common form of algebraic vector quantizati
  81. on.
  82. It is useful in the context of both audio and video compression.
  83. The PVQ codebook is defined
  84. \end_layout
  85. \begin_layout Standard
  86. \begin_inset Formula
  87. \begin{equation}
  88. S\left(N,K\right)=\left\{ \mathbf{y}\in\mathbb{Z^{N}}:\sum_{i=0}^{N-1}\left|y_{i}\right|=K\right\} \ ,
  89. \end{equation}
  90. \end_inset
  91. the set of all integer vectors in
  92. \begin_inset Formula $N$
  93. \end_inset
  94. dimensions for which the sum of absolute values equals
  95. \begin_inset Formula $K$
  96. \end_inset
  97. .
  98. When all codevectors are considered to have equal probability, several
  99. methods
  100. \begin_inset space ~
  101. \end_inset
  102. \begin_inset CommandInset citation
  103. LatexCommand cite
  104. key "Fischer,FPC"
  105. \end_inset
  106. exist to convert between any codevector and an index
  107. \begin_inset Formula $J$
  108. \end_inset
  109. in the range
  110. \begin_inset Formula $[0,\, V(N,K)-1]$
  111. \end_inset
  112. , where
  113. \begin_inset Formula $V(N,K)$
  114. \end_inset
  115. is the number of elements in
  116. \begin_inset Formula $S(N,K)$
  117. \end_inset
  118. .
  119. The index is then easily coded in a bit-stream, possibly with the use of
  120. a range coder
  121. \begin_inset space ~
  122. \end_inset
  123. \begin_inset CommandInset citation
  124. LatexCommand cite
  125. key "RFC6716"
  126. \end_inset
  127. to allow for fractional bits since
  128. \begin_inset Formula $V(N,K)$
  129. \end_inset
  130. is generally not a power of two.
  131. The equal-probability case is common for audio.
  132. For video, transform coefficients (e.g.
  133. DCT) or any prediction residual for a block tend to have widely different
  134. distributions.
  135. For this reason, using a uniform probability model.
  136. This document proposes a way to efficiently encode the result of PVQ quantizati
  137. on with such non-uniform distributions.
  138. \end_layout
  139. \begin_layout Section
  140. Non-Uniform Distribution
  141. \end_layout
  142. \begin_layout Standard
  143. The non-uniform probability distribution of the codevectors requires building
  144. a probability model.
  145. For any codebook of reasonable size, explicitly modelling the distribution
  146. of
  147. \begin_inset Formula $J$
  148. \end_inset
  149. itself is impractical since
  150. \begin_inset Formula $V(N,K)$
  151. \end_inset
  152. can easily exceed 32
  153. \begin_inset space ~
  154. \end_inset
  155. bits.
  156. Instead, we use parametric models for the distribution of
  157. \begin_inset Formula $\left|y_{i}\right|$
  158. \end_inset
  159. as a function of
  160. \begin_inset Formula $i$
  161. \end_inset
  162. .
  163. Sections
  164. \begin_inset space ~
  165. \end_inset
  166. \begin_inset CommandInset ref
  167. LatexCommand ref
  168. reference "sub:Coefficient-model"
  169. \end_inset
  170. and
  171. \begin_inset space ~
  172. \end_inset
  173. \begin_inset CommandInset ref
  174. LatexCommand ref
  175. reference "sub:Run-Length-Model"
  176. \end_inset
  177. present two possible models for encoding non-uniform PVQ parameters.
  178. Both models assume the use of a range/arithmetic coder, ideally one that
  179. is capable of encoding non-binary symbols.
  180. In most cases, the probability distribution functions (pdf) can be stored
  181. in a lookup table in the form of cumulative distribution functions (cdf)
  182. that can be used directly by the encoder and decoder.
  183. \end_layout
  184. \begin_layout Subsection
  185. Coefficient Magnitude Model
  186. \end_layout
  187. \begin_layout Standard
  188. \begin_inset CommandInset label
  189. LatexCommand label
  190. name "sub:Coefficient-model"
  191. \end_inset
  192. The coefficient magnitude (CM) model is based on the expected absolute value
  193. of the coefficient
  194. \begin_inset Formula $i$
  195. \end_inset
  196. \end_layout
  197. \begin_layout Standard
  198. \begin_inset Formula
  199. \begin{equation}
  200. \sigma_{i}=E\left\{ \left|y_{i}\right|\right\} =\sum_{k=0}^{\infty}p_{i}(k)\ ,
  201. \end{equation}
  202. \end_inset
  203. where
  204. \begin_inset Formula $p_{i}\left(k\right)$
  205. \end_inset
  206. is the probability that
  207. \begin_inset Formula $\left|y_{i}\right|=k$
  208. \end_inset
  209. .
  210. We assume that
  211. \begin_inset Formula $y$
  212. \end_inset
  213. is the result of quantizing
  214. \begin_inset Formula $x$
  215. \end_inset
  216. to the nearest integer, where
  217. \begin_inset Formula $x$
  218. \end_inset
  219. follows a Laplace distribution
  220. \begin_inset Formula
  221. \begin{equation}
  222. p\left(x\right)=r^{-\left|x\right|}\ .
  223. \end{equation}
  224. \end_inset
  225. Assuming the positive quantization thresholds are
  226. \begin_inset Formula $\theta+k,\, k\in\mathbb{N}$
  227. \end_inset
  228. , we have
  229. \begin_inset Formula
  230. \begin{equation}
  231. p\left(k\right)=\left\{ \begin{array}{ll}
  232. 1-r^{\theta} & ,\ k=0\\
  233. r^{\theta}\left(1-r\right)r^{k-1}\quad & ,\ k\neq0
  234. \end{array}\right.\ .
  235. \end{equation}
  236. \end_inset
  237. The value of
  238. \begin_inset Formula $r$
  239. \end_inset
  240. is obtained by modelling
  241. \begin_inset Formula $\sigma_{i}$
  242. \end_inset
  243. .
  244. By assuming
  245. \begin_inset Formula $\theta=1$
  246. \end_inset
  247. , we can have a simple relation for
  248. \begin_inset Formula $r$
  249. \end_inset
  250. \begin_inset Formula
  251. \begin{equation}
  252. r=\frac{\sigma_{i}}{1+\sigma_{i}}\ .\label{eq:r-vs-sigma}
  253. \end{equation}
  254. \end_inset
  255. We can still use
  256. \begin_inset Formula $\theta\neq1$
  257. \end_inset
  258. to model
  259. \begin_inset Formula $p\left(k\right)$
  260. \end_inset
  261. itself, in which case
  262. \begin_inset space ~
  263. \end_inset
  264. \begin_inset CommandInset ref
  265. LatexCommand eqref
  266. reference "eq:r-vs-sigma"
  267. \end_inset
  268. becomes an approximation.
  269. Typically,
  270. \begin_inset Formula $\theta$
  271. \end_inset
  272. is in the range
  273. \begin_inset Formula $\left[\frac{1}{2},1\right]$
  274. \end_inset
  275. .
  276. For efficiency reasons, we pre-compute the cdf corresponding to
  277. \begin_inset Formula $p\left(k\right)$
  278. \end_inset
  279. for different values of
  280. \begin_inset Formula $r$
  281. \end_inset
  282. .
  283. \end_layout
  284. \begin_layout Standard
  285. If all values
  286. \begin_inset Formula $y_{i}$
  287. \end_inset
  288. are identically distributed, then all expectiations
  289. \begin_inset Formula $\sigma_{i}$
  290. \end_inset
  291. are equal and simply
  292. \begin_inset Formula $\sigma_{i}=K/N$
  293. \end_inset
  294. .
  295. In practice, we assume that the values
  296. \begin_inset Formula $y_{i}$
  297. \end_inset
  298. are in decreasing order of expected value and make the approximation
  299. \begin_inset Formula
  300. \begin{equation}
  301. \sigma_{0}=\alpha K/N\ ,
  302. \end{equation}
  303. \end_inset
  304. where
  305. \begin_inset Formula $\alpha$
  306. \end_inset
  307. represents how uneven the distributions are (
  308. \begin_inset Formula $\alpha=1$
  309. \end_inset
  310. corresponds to identical distributions).
  311. Knowing
  312. \begin_inset Formula $\alpha$
  313. \end_inset
  314. , we can obtain
  315. \begin_inset Formula $\sigma_{0}$
  316. \end_inset
  317. ,
  318. \begin_inset Formula $r_{0}$
  319. \end_inset
  320. and thus
  321. \begin_inset Formula $p_{0}\left(k\right)$
  322. \end_inset
  323. , making it possible to encode (and decode using the same process)
  324. \begin_inset Formula $y_{0}$
  325. \end_inset
  326. .
  327. Knowing the value of
  328. \begin_inset Formula $y_{0}$
  329. \end_inset
  330. , we can encode
  331. \begin_inset Formula $y_{1}$
  332. \end_inset
  333. using
  334. \begin_inset Formula
  335. \begin{align}
  336. N^{\left(1\right)} & =N-1\nonumber \\
  337. K^{\left(1\right)} & =K-\left|y_{0}\right|\ .
  338. \end{align}
  339. \end_inset
  340. The process can be applied recursively until
  341. \begin_inset Formula $K=0$
  342. \end_inset
  343. or
  344. \begin_inset Formula $N=1$
  345. \end_inset
  346. .
  347. The coefficient
  348. \begin_inset Formula $\alpha$
  349. \end_inset
  350. is assumed constant across a vector and adapted between vectors based on
  351. the observed expectation
  352. \begin_inset Formula $\sigma_{i}$
  353. \end_inset
  354. as a function of
  355. \begin_inset Formula $K$
  356. \end_inset
  357. and
  358. \begin_inset Formula $N$
  359. \end_inset
  360. .
  361. Similar to a linear regression, we have
  362. \begin_inset Formula
  363. \begin{equation}
  364. \alpha=\frac{S_{y}}{S_{E}}\ ,
  365. \end{equation}
  366. \end_inset
  367. where for new vector, we update
  368. \begin_inset Formula $S_{y}$
  369. \end_inset
  370. and
  371. \begin_inset Formula $S_{E}$
  372. \end_inset
  373. as
  374. \begin_inset Formula
  375. \begin{align}
  376. S_{y} & \leftarrow\left(1-\eta\right)S_{y}+\eta\sum\left|y_{i}\right|\\
  377. S_{E} & \leftarrow\left(1-\eta\right)S_{E}+\eta\sum\left(K^{\left(i\right)}/N^{\left(i\right)}\right)\ ,
  378. \end{align}
  379. \end_inset
  380. where
  381. \begin_inset Formula $\eta$
  382. \end_inset
  383. controls the adaptation rate.
  384. \end_layout
  385. \begin_layout Standard
  386. The total number of symbols coded with this approach is equal to the position
  387. \begin_inset Formula $i_{last}$
  388. \end_inset
  389. of the last non-zero component of
  390. \begin_inset Formula $\mathbf{y}$
  391. \end_inset
  392. .
  393. \end_layout
  394. \begin_layout Subsection
  395. Run-Length Model
  396. \end_layout
  397. \begin_layout Standard
  398. \begin_inset CommandInset label
  399. LatexCommand label
  400. name "sub:Run-Length-Model"
  401. \end_inset
  402. For long sparse vectors, the method in Section
  403. \begin_inset space ~
  404. \end_inset
  405. \begin_inset CommandInset ref
  406. LatexCommand ref
  407. reference "sub:Coefficient-model"
  408. \end_inset
  409. is inefficient in terms of symbols coded.
  410. In those cases the run-length (RL) model models
  411. \begin_inset Formula $q(n)$
  412. \end_inset
  413. , the probability of
  414. \begin_inset Formula $y_{n}$
  415. \end_inset
  416. being the first non-zero coefficient in
  417. \begin_inset Formula $\mathbf{y}$
  418. \end_inset
  419. , as a truncated exponential distribution
  420. \begin_inset Formula
  421. \begin{equation}
  422. q\left(n\right)=C_{1}\left\{ \begin{array}{ll}
  423. r^{-n}\quad & ,\ n<N\\
  424. 0 & ,\ n\geq N
  425. \end{array}\right.\ ,
  426. \end{equation}
  427. \end_inset
  428. where
  429. \begin_inset Formula $C_{1}$
  430. \end_inset
  431. is a normalization constant.
  432. We then model the expected value of
  433. \begin_inset Formula $q(n)$
  434. \end_inset
  435. as
  436. \begin_inset Formula
  437. \begin{equation}
  438. \sigma_{n}=E\left[q\left(n\right)\right]=\beta\cdot\frac{N}{K}\ ,
  439. \end{equation}
  440. \end_inset
  441. where
  442. \begin_inset Formula $\beta=1$
  443. \end_inset
  444. represents the case where non-zero coefficients are distributed evenly
  445. in the vector (typically,
  446. \begin_inset Formula $\beta<1$
  447. \end_inset
  448. ).
  449. \end_layout
  450. \begin_layout Standard
  451. The relationship between
  452. \begin_inset Formula $\sigma_{n}$
  453. \end_inset
  454. and
  455. \begin_inset Formula $r$
  456. \end_inset
  457. is given by
  458. \begin_inset Formula
  459. \begin{equation}
  460. \sigma_{n}=\frac{r^{N}-Nr+N-1}{r^{N-1}\left(1-r\right)^{N}}\ ,
  461. \end{equation}
  462. \end_inset
  463. so computing
  464. \begin_inset Formula $r$
  465. \end_inset
  466. from
  467. \family roman
  468. \series medium
  469. \shape up
  470. \size normal
  471. \emph off
  472. \bar no
  473. \strikeout off
  474. \uuline off
  475. \uwave off
  476. \noun off
  477. \color none
  478. \begin_inset Formula $\sigma_{n}$
  479. \end_inset
  480. is not easy.
  481. We use the approximation
  482. \begin_inset Formula
  483. \begin{equation}
  484. r\approx\frac{\sigma_{n}}{1+\sigma_{n}}+\frac{8\sigma_{n}^{2}}{\left(N+1\right)\left(N-1\right)^{2}}\ .
  485. \end{equation}
  486. \end_inset
  487. \end_layout
  488. \begin_layout Standard
  489. Once the position
  490. \begin_inset Formula $n$
  491. \end_inset
  492. of the first non-zero coefficient is coded, one pulse is subtracted from
  493. that position and the process is restarted with
  494. \begin_inset Formula
  495. \begin{align}
  496. N^{(1)} & =N-n\nonumber \\
  497. K^{(1)} & =K-1\ .
  498. \end{align}
  499. \end_inset
  500. If multiple pulses are present at a certain position, then we encode a position
  501. of zero for each pulse that follows the first pulse.
  502. \end_layout
  503. \begin_layout Standard
  504. Because the sign is fixed once a pulse is already present at a certain
  505. position, the probability of adding a pulse is divided by two.
  506. The distribution then becomes
  507. \begin_inset Formula
  508. \begin{equation}
  509. q(n)=C_{2}\left\{ \begin{array}{ll}
  510. 1/2\quad & ,\ n=0\\
  511. r^{-n} & ,\ 0<n<N\\
  512. 0 & ,\ n\geq N
  513. \end{array}\right..
  514. \end{equation}
  515. \end_inset
  516. The
  517. \begin_inset Formula $\beta$
  518. \end_inset
  519. parameters is adapted in a similar way as the
  520. \begin_inset Formula $\alpha$
  521. \end_inset
  522. parameter in
  523. \begin_inset CommandInset ref
  524. LatexCommand ref
  525. reference "sub:Coefficient-model"
  526. \end_inset
  527. :
  528. \begin_inset Formula
  529. \begin{equation}
  530. \beta=\frac{S_{p}}{S_{N}}\ ,
  531. \end{equation}
  532. \end_inset
  533. where for each new vector, we update
  534. \begin_inset Formula $S_{p}$
  535. \end_inset
  536. and
  537. \begin_inset Formula $S_{N}$
  538. \end_inset
  539. as
  540. \begin_inset Formula
  541. \begin{align}
  542. S_{p} & \leftarrow\left(1-\eta\right)S_{p}+\eta\sum n^{(i)}K^{(i)}\\
  543. S_{N} & \leftarrow\left(1-\eta\right)S_{N}+\eta\sum N^{\left(i\right)}\ ,
  544. \end{align}
  545. \end_inset
  546. where
  547. \begin_inset Formula $\eta$
  548. \end_inset
  549. controls the adaptation rate.
  550. \end_layout
  551. \begin_layout Subsection
  552. Model Combinations
  553. \end_layout
  554. \begin_layout Standard
  555. It is possible to combine the CM and RL models to improve coding performance
  556. and computational efficiency.
  557. For small values of
  558. \begin_inset Formula $K$
  559. \end_inset
  560. , the RL model tends to have similar efficiency as the CM model, but a much
  561. lower complexity due to the smaller number of symbols.
  562. For larger
  563. \begin_inset Formula $K$
  564. \end_inset
  565. values, the RL model tends to lose efficiency and becomes more complex.
  566. Because
  567. \begin_inset Formula $K$
  568. \end_inset
  569. is known in advance, the encoder can choose between CM and RL at run-time
  570. based on
  571. \begin_inset Formula $K$
  572. \end_inset
  573. .
  574. The decoder has access to the same information and can thus choose the
  575. same model as the encoder.
  576. It is even possible to use both models on the same vector, switching from
  577. from CM to RL once
  578. \begin_inset Formula $K^{\left(n\right)}$
  579. \end_inset
  580. becomes smaller than an encoder-decoder-agreed threshold
  581. \begin_inset Formula $K_{T}$
  582. \end_inset
  583. .
  584. \end_layout
  585. \begin_layout Section
  586. Coding K
  587. \end_layout
  588. \begin_layout Standard
  589. In some contexts, the value of
  590. \begin_inset Formula $K$
  591. \end_inset
  592. is agreed on between the encoder and decoder.
  593. If not, then we need to code
  594. \begin_inset Formula $K$
  595. \end_inset
  596. explicitly.
  597. In the proposed implementation, the pdf of
  598. \begin_inset Formula $K$
  599. \end_inset
  600. is adapted based on the data for
  601. \begin_inset Formula $K<15$
  602. \end_inset
  603. .
  604. For
  605. \begin_inset Formula $K\geq15$
  606. \end_inset
  607. , an exponentially-decaying distribution is assumed.
  608. The model is also conditioned on the expected value of
  609. \begin_inset Formula $K$
  610. \end_inset
  611. .
  612. \end_layout
  613. \begin_layout Bibliography
  614. \begin_inset CommandInset bibitem
  615. LatexCommand bibitem
  616. key "PVQ-draft"
  617. \end_inset
  618. J.-M.
  619. Valin,
  620. \begin_inset Quotes eld
  621. \end_inset
  622. Pyramid Vector Quantization for Video Coding
  623. \begin_inset Quotes erd
  624. \end_inset
  625. , IETF draft, 2013.
  626. http://tools.ietf.org/html/draft-valin-videocodec-pvq-00
  627. \end_layout
  628. \begin_layout Bibliography
  629. \begin_inset CommandInset bibitem
  630. LatexCommand bibitem
  631. key "Fischer"
  632. \end_inset
  633. T.
  634. R.
  635. Fischer,
  636. \begin_inset Quotes eld
  637. \end_inset
  638. A Pyramid Vector Quantizer
  639. \begin_inset Quotes erd
  640. \end_inset
  641. , in
  642. \emph on
  643. IEEE Trans.
  644. on Information Theory
  645. \emph default
  646. , Vol.
  647. 32, 1986, pp.
  648. 568-583.
  649. \end_layout
  650. \begin_layout Bibliography
  651. \begin_inset CommandInset bibitem
  652. LatexCommand bibitem
  653. key "FPC"
  654. \end_inset
  655. J.
  656. P.
  657. Ashley, E.
  658. M.
  659. Cruz-Zeno, U.
  660. Mittal, and W.
  661. Peng,
  662. \begin_inset Quotes eld
  663. \end_inset
  664. Wideband Coding of Speech Using a Scalable Pulse Codebook,
  665. \begin_inset Quotes erd
  666. \end_inset
  667. in
  668. \emph on
  669. Proc.
  670. IEEE Workshop on Speech Coding
  671. \emph default
  672. , 2000, pp.
  673. 148–15.
  674. \end_layout
  675. \begin_layout Bibliography
  676. \begin_inset CommandInset bibitem
  677. LatexCommand bibitem
  678. key "RFC6716"
  679. \end_inset
  680. Valin, J.-M., Vos.
  681. K., Terriberry, T.B.,
  682. \begin_inset Quotes eld
  683. \end_inset
  684. Definition of the Opus codec
  685. \begin_inset Quotes erd
  686. \end_inset
  687. , RFC 6716, Internet Engineering Task Force, 2012.
  688. \end_layout
  689. \end_body
  690. \end_document