<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.xiph.org/index.php?action=history&amp;feed=atom&amp;title=DaalaMeeting20140415</id>
	<title>DaalaMeeting20140415 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.xiph.org/index.php?action=history&amp;feed=atom&amp;title=DaalaMeeting20140415"/>
	<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=DaalaMeeting20140415&amp;action=history"/>
	<updated>2026-05-29T20:10:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=DaalaMeeting20140415&amp;diff=15406&amp;oldid=prev</id>
		<title>Daala-ts: Add word wrapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=DaalaMeeting20140415&amp;diff=15406&amp;oldid=prev"/>
		<updated>2015-02-07T00:04:11Z</updated>

		<summary type="html">&lt;p&gt;Add word wrapping&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:04, 7 February 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;style=&quot;white-space: pre-wrap; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;white-space: -moz-pre-wrap; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;white-space: -pre-wrap; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;white-space: -o-pre-wrap; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;word-wrap: break-word;&quot;&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Meeting 2014-04-15&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Meeting 2014-04-15&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key xiphwiki:diff:1.41:old-14620:rev-15406:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Daala-ts</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=DaalaMeeting20140415&amp;diff=14620&amp;oldid=prev</id>
		<title>Jack: Created page with &quot;&lt;pre&gt; # Meeting 2014-04-15  Mumble:  mf4.xiph.org:64738  # Agenda  - reviews - Discuss JM&#039;s experiments - Google meeting  # Attending  gmaxwell, unlord, jack, jmspeex, derf  # re...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=DaalaMeeting20140415&amp;diff=14620&amp;oldid=prev"/>
		<updated>2014-04-22T15:22:18Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; # Meeting 2014-04-15  Mumble:  mf4.xiph.org:64738  # Agenda  - reviews - Discuss JM&amp;#039;s experiments - Google meeting  # Attending  gmaxwell, unlord, jack, jmspeex, derf  # re...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# Meeting 2014-04-15&lt;br /&gt;
&lt;br /&gt;
Mumble:  mf4.xiph.org:64738&lt;br /&gt;
&lt;br /&gt;
# Agenda&lt;br /&gt;
&lt;br /&gt;
- reviews&lt;br /&gt;
- Discuss JM&amp;#039;s experiments&lt;br /&gt;
- Google meeting&lt;br /&gt;
&lt;br /&gt;
# Attending&lt;br /&gt;
&lt;br /&gt;
gmaxwell, unlord, jack, jmspeex, derf&lt;br /&gt;
&lt;br /&gt;
# reviews&lt;br /&gt;
&lt;br /&gt;
no one waiting on reviews&lt;br /&gt;
&lt;br /&gt;
# JM&amp;#039;s experiments&lt;br /&gt;
&lt;br /&gt;
- jm: did a bunch of experiments in random directions. see status update for the list. i tried splitting the lowest band in two. i tried both splitting along horiz and vert and putting the diagonal on either side. and i tried having horiz and vert in one band and diagonal in one band. that one was the worst of the two. splitting horizontal vs. vertical gave similar results--maybe slightly worse.&lt;br /&gt;
- derf: i assume the issue is overhead of the additional parameters.&lt;br /&gt;
- jm: i don&amp;#039;t know&lt;br /&gt;
- d: how do we answer that question?&lt;br /&gt;
- jm: i don&amp;#039;t know&lt;br /&gt;
- g: we could measure it while cheating with the additonal parameters&lt;br /&gt;
- jm: it was very close. let me get the numbers. i was getting stuff like some metrics being 0.6% better, psnrhvsm being 1% worse. that sort of scale.&lt;br /&gt;
# Google meeting&lt;br /&gt;
- d: i don&amp;#039;t know if you noticed the range of the changes the google team was talking about while we were there.&lt;br /&gt;
- u: it felt like a one way conversation. they would like us to prove these techniques would work in libvpx and they&amp;#039;d love to use them.&lt;br /&gt;
- d: they phrased it better than they have in the past. the way they put it was that they wanted to build a library of techniques and then pick the things that worked. i don&amp;#039;t think they quite fully understand that our techniques require some fundamental changes to the codec.&lt;br /&gt;
- d: ?? would they be upset if they took some of our ideas and the answer is absolutely no.&lt;br /&gt;
- u: they wanted us to show it would be an improvement in libvpx&lt;br /&gt;
- d: that&amp;#039;s what debargha wanted :)&lt;br /&gt;
- g: jim gave a different perspective on it. after we left the meeting we had some additional conversation about the ietf.&lt;br /&gt;
- d: they wanted to know what the ideal ask was. so i sent him an email with that.&lt;br /&gt;
- u: that sounds promising.&lt;br /&gt;
- jm: we should discuss lower level things with them like our investigations on entropy in block &lt;br /&gt;
- j: let&amp;#039;s make an etherpad for an agenda and get the next one schedule. put that item on there.&lt;br /&gt;
- d: i talked to them about june. will ping them.&lt;br /&gt;
- jm: in general we can talk about minor things we tried and things we are trying to figure it out.&lt;br /&gt;
- d: i tried to bring up metrics, but they didn&amp;#039;t seem to have any great ideas there either.&lt;br /&gt;
# JM&amp;#039;s experiments part 2&lt;br /&gt;
- jm: that splitting thing was worse with all metrics with activity masking.&lt;br /&gt;
- d: did you do interband masking?&lt;br /&gt;
- jm: i did not. that may be part of the problem. basically it was between 1 and 2% worse. i tried doing RDO tuning and i was able to improve all 4 metrics and the images look worse&lt;br /&gt;
- j: patent that and submit it to mpeg!&lt;br /&gt;
- jm: if i disable intra on every band except n=15 for 4x4 and 8x8 it&amp;#039;s a wash.&lt;br /&gt;
- d: it was like 0.3%.&lt;br /&gt;
- jm: less than that.&lt;br /&gt;
- d: it&amp;#039;s not a surprise that the current predictors are not doing much in HF.&lt;br /&gt;
- jm: my thought was that especially for 16x16, ?? trying to predict the first 15 properly. and not waste our nonzero coeffs on HF since we&amp;#039;re not going to nail that anyway.&lt;br /&gt;
- d: isn&amp;#039;t our training already doing that/&lt;br /&gt;
- jm: maybe for scalar it&amp;#039;s not such a bad idea but for pvq having one nonzero coeff in the high band is completely useless. if you predict just one HF coeff you don&amp;#039;t gain anything in pvq. in scalar you might have a tiny gain.&lt;br /&gt;
- g: i think if we&amp;#039;re not predicitng the HF then we lose a lot of what intra is supposed to gain us.&lt;br /&gt;
- jm: for 16x16 we&amp;#039;re not even able to predict the LFs enough that it becomes useful, so i don&amp;#039;t see how we&amp;#039;re going to predict HF anytime soon. one thing i was thinking aobut was can we do something along the lines of intra block prediction--predicting HF from LF?&lt;br /&gt;
- g: our original training tools were set up to assume a particular scan order and it added the previously scanned coeffs to the prediction&lt;br /&gt;
- jm: that won&amp;#039;t work for pvq. something linear is not going to work. i don&amp;#039;t see how something linear would work because if it did work, then the transform would suck. the dct is supposed to decorrelate all components. i don&amp;#039;t see how it is going to help to have something linear.&lt;br /&gt;
- d: the nonlinearity comes from a) you&amp;#039;re looking at the residue at a particular mode and b) biorthogonality issues, but those are probably minor.&lt;br /&gt;
- jm: even if there&amp;#039;s a biortho issue, it probably means your thing shouldn&amp;#039;t be orthogonal.&lt;br /&gt;
- u: whatever happened to the idea of undoing the lapping?&lt;br /&gt;
- d: i don&amp;#039;t know how to do and it wasn&amp;#039;t baked yet. i haven&amp;#039;t worked on it yet.&lt;br /&gt;
- jm: i couldn&amp;#039;t think of the entire system, but the general idea i had was something along the lines of trained VQ. training a codebook of HF (or one for each band), and then your codebook is 256 entries and based on the freq ???? that gives you a set of maybe 4 or 8 code vectors that are allowed given the low frequencies. it makes your search faster and what you need to code is not 8 bits but 2 or 4.&lt;br /&gt;
- d: i&amp;#039;ve been thinking of something along those lines for trying to use when the predictor is 0 or bad. somethign we could use to fill in HF to match whatever energy we had encoded. i hadn&amp;#039;t thought of coding it conditionally based on the LF stuff. i&amp;#039;m not sure how that would work.&lt;br /&gt;
- jm: i know a way it could work but it would be too complex. take the LF and do a quantization (k-means and figure out which vector is closer among a set of 256).&lt;br /&gt;
- d: that&amp;#039;s too complex. you could do it over 4.&lt;br /&gt;
- jm: my idea is to have just enough to be able to learn what happens if you have an edge in a particular direction.&lt;br /&gt;
- d: we could just classify &amp;quot;do i have an edge in a direction&amp;quot; for a small set of directions to start with right?&lt;br /&gt;
- jm: what do you mean?&lt;br /&gt;
- d: instead of learning 128 of these things, build a classifier that tells you that you have an edge in direction X for some small set of directions.&lt;br /&gt;
- jm: we need directions and offsets. this is not a predictor&lt;br /&gt;
- d: that makes it much more of a mess. i don&amp;#039;t know how to do that in the freq domain.&lt;br /&gt;
- jm: the other thing i thought about is instead of using trained VQ to classify the LF, using PVQ. But then the problem is that at most we&amp;#039;d be able to use three pulses and they&amp;#039;d end up in the lowest freqs so there wouldn&amp;#039;t be many combinations in practice.&lt;br /&gt;
- d: yep. i think you have almost no information about whether or not you have an edge.&lt;br /&gt;
- jm: the only thing i tried so far was the case where i didn&amp;#039;t code anything, just trying to predict. doing VQ with a codebook of 256 in the low band and using that to predict the high band. that had very little prediction effect. it&amp;#039;s quite possible that having just a few bits in the HF would have much more impact. i assume in many cases the HF could go one way or another but if you average them you get nothing.&lt;br /&gt;
- d: you&amp;#039;re going to run into phase issues&lt;br /&gt;
- jm: you resolve phase with ???. i tried to predict ??? with the sine coeffs. there are a few factors that are skewed by 25-75% but if you looked at overall we&amp;#039;d end up saving 0.1%. i haven&amp;#039;t looked at what we gain by coding.&lt;br /&gt;
- d: how would this work for inter?&lt;br /&gt;
- jm: why would you want to do this? MC should be a lot better than what we get out of this.&lt;br /&gt;
- d: it&amp;#039;s a lot better than what our inter is doing right now. but correlations in the HF is going to be around 75%. it&amp;#039;s a lot small than .99 which is what i would like.&lt;br /&gt;
- jm: i was tyring to get to a point where it&amp;#039;s better than no prediction at all, because that&amp;#039;s where we are now. ???&lt;br /&gt;
- g: the next thing we could look at is a time domain predictor&lt;br /&gt;
- d: have we measured the prediction power in the HF with the VP8 predictors? turn off lapping and use the DCT and we have the VP8 predictors implemented.&lt;br /&gt;
- jm: we see from h265.. the fruits image at ridiculous rate... we can see it&amp;#039;s possible to predict something.&lt;br /&gt;
- d: my question is if using the same metrics you&amp;#039;re using how it compares. that should tell us what is possible to do.&lt;br /&gt;
- jm: that&amp;#039;s totally different. right now we have nothing. doing anything at all is already better.&lt;br /&gt;
- d: but i want to know what is achievable.&lt;br /&gt;
- jm: i don&amp;#039;t know.&lt;br /&gt;
&lt;br /&gt;
# activity masking&lt;br /&gt;
&lt;br /&gt;
- d: i did some playing around but i didn&amp;#039;t find a whole lot. didn&amp;#039;t do that badly on the worst examples i could come up with. it does make text a little bit worse, but it&amp;#039;s more moving noise around and maybe adding some, more than severely degrading anything. it&amp;#039;s not that bad. i wanted to compare it to some of the scalar quant stuff i&amp;#039;ve been working on, but it&amp;#039;s not ready yet. you point out that we can reduce luma DC resolution at 4x4.&lt;br /&gt;
- jm: i was thinking the larger ones. probably all of them though.&lt;br /&gt;
- d: the way scalar quant matrices work is that DC needs more resolution than the first two AC coeffs.&lt;br /&gt;
- jm: one thing i experimented with was trying to have DC be much worse for luma and i found it surprising how much error we could tolerate in the DC. i suspected it was because in JPEG the error in DC causes more blocking and we dont&amp;#039; have the problem.&lt;br /&gt;
- d: humans are insensitive to DC shifts. we may be able to get away with worse than traditional codecs do there. i assume that we&amp;#039;re terrible on metrics on your images?&lt;br /&gt;
- jm: i didn&amp;#039;t even look. tim, you mentioned not being good on text. AM is only enabled on 8x8 and 16x16 and disabled on 4x4 because you don&amp;#039;t want to do it on edges. it would be interesting to see what it does on 4x4 but i haven&amp;#039;t really tried because i didn&amp;#039;t expect it to improve.&lt;br /&gt;
- d: i&amp;#039;ll turn it on and run it on the text again and we&amp;#039;ll find out.&lt;br /&gt;
- jm: http://jmvalin.ca/video/iena0.png http://jmvalin.ca/video/iena1.png http://jmvalin.ca/video/iena2.png http://jmvalin.ca/video/iena3.png&lt;br /&gt;
- jm: 0 is normal. changing resolution by 2^n. 8 is definitely extreme.&lt;br /&gt;
- d: did you just change the quantizer?&lt;br /&gt;
- jm: i only changed the quantizer. the effect is more noticeable on airforce.&lt;br /&gt;
- d: that&amp;#039;s because that image is only DC.&lt;br /&gt;
- g: you can see in #3 that there is a band of darkness in the upper left corner.&lt;br /&gt;
- d: what it suggests is that the sky in the other images happens to be close to a quantization interval.&lt;br /&gt;
- jm: one thing i considered also was look at having large steps except for the very first step. if you&amp;#039;re on a gradient you can code the small differences but for larger changes you don&amp;#039;t have that small of resolution. image 0 is 104kB. image 1 is 101.5kB. image 2 is 99kB. image 3 is 97kB. it&amp;#039;s about 2.5kB every time i double the error.&lt;br /&gt;
- d: a bit over 2%. it seems like the step size you needed to code gradients correctly depends on the slope of the gradient.&lt;br /&gt;
- jm: why would it?&lt;br /&gt;
- d: i have some huge gap in my dc quant levels. at some point i guess it&amp;#039;s slow enough we can take one step.&lt;br /&gt;
- jm: yes, i mean just in this region. i&amp;#039;ll show you airforce and you&amp;#039;ll see what i mean.&lt;br /&gt;
- jm: http://jmvalin.ca/video/air_dc0.png http://jmvalin.ca/video/air_dc1.png http://jmvalin.ca/video/air_dc2.png http://jmvalin.ca/video/air_dc3.png&lt;br /&gt;
- jm: Maybe most of the rate would be in that first step.&lt;br /&gt;
- d: Yes, but you keep pointing out how much the tails matter.&lt;br /&gt;
- jm: Because of scaling I don&amp;#039;t think we can even predict a flat image correctly when the block size changes&lt;br /&gt;
- d: We certantly need to do something about the scaling at least for DC&lt;br /&gt;
- g: So we use a table of scaling factors&lt;br /&gt;
- jm: There are too many even just for dc&lt;br /&gt;
- g: so we scale things to a common reference e.g. 16x16 and then scale back so it&amp;#039;s two multiplers per size&lt;br /&gt;
- d: there were reports on IRC that 4:4:4 was broken, anyone want to look at that?&lt;br /&gt;
- u: I&amp;#039;ll look at that, I think I noticed that a while ago and didn&amp;#039;t follow up on that&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jack</name></author>
	</entry>
</feed>