Comments (8)
👀
from ffv1.
Here are my questions based on reading this part:
- How does the formula relate, if at all, to the introductory text? Is the formula used to "encode binary digits efficiently"?
I do not understand the question
- What is
r_(i)
? A lowercaser
is used in Section 3.7.2 to signifyred
, but from context that doesn't match. I suggestr_(i)
needs some definition local to this section? Would reading the normative text of range-coding show me whatr_(i)
means?- What is
R_(i)
? Also undefined within this document? Down in Figure 15R_(0)
is referenced asFigure 15: The initial value for "Range".
which is a caption I wrote as a guess. Is this accurate? IsR_(i)
the same as what is referred to asrange
in this example of range-coding.
R_(i) is the range at symbol i, that is then split in 2 ranges one in case the ith symbol is a 0 and one in case its a 1. r_(i) is the range for the case its a 1 R_(i) - r_(i) for the 0 case
S_(0,i)
andC_(i)
are defined as thestate
andcontext
, which is helpful but another sentence that relates these terms as components of range-coding would be helpful.
Do you understand what is meant by state and context ? iam asking as i do not know if that needs more verbose explaning or something else ?
Its not clear to me what exactly needs more explaning just that something needs more
from ffv1.
Thanks @michaelni, this is really helpful and I'm hoping to send a PR soon. In the meanwhile I have a few more questions.
Please correct any of my understanding here if wrong or could be better clarified.
-
IIUC, in the context of the range coder, a
State
is the period from which the Range coder state variables were initialized until the next initialization (such as at a keyframe) or the end of the coding. -
Regarding
Range coder state variables
can we denote these values clearly? I seeR_(0)
andL_(0)
, are there others that could be consideredRange coder state variables
?j_(0)
? -
What is
t_(i)
? It is used in several formulae but what does it represent? -
What does
k
represent, as inS_(i + 1, k) = S_(i, k) <== C_(i) != k
? -
Any objection if I change the direction of the implications from
<==
to==>
? I think the==>
might be more "readable", such asC_(i) != k ==> S_(i + 1, k) = S_(i, k)
.
from ffv1.
Thanks @michaelni, this is really helpful and I'm hoping to send a PR soon. In the meanwhile I have a few more questions.
Please correct any of my understanding here if wrong or could be better clarified.
- IIUC, in the context of the range coder, a
State
is the period from which the Range coder state variables were initialized until the next initialization (such as at a keyframe) or the end of the coding.- Regarding
Range coder state variables
can we denote these values clearly? I seeR_(0)
andL_(0)
, are there others that could be consideredRange coder state variables
?j_(0)
?
for the range coder each context (for examle a context may be a specific black&white checkered background surrounding the to be coded sample) has a state for each binary symbol that is coded. This state can change each time a symbol is coded with that context. all other states are unchanged. so these states generally change multiple times in a frame.
This is different from the "state" of the range coder which would include range / low / position in bitstream. I think we never use the term "state" to refer to that more encompassing thing and i think we should use different terms for the 2 to avoid confusion
- What is
t_(i)
? It is used in several formulae but what does it represent?
t as in "temporary"
- What does
k
represent, as inS_(i + 1, k) = S_(i, k) <== C_(i) != k
?
k is the same concept as in for example
for all k in N for which k has no divisors except itself and 1, k is a prime
- Any objection if I change the direction of the implications from
<==
to==>
? I think the==>
might be more "readable", such asC_(i) != k ==> S_(i + 1, k) = S_(i, k)
.
whatever people prefer.
from ffv1.
Thanks @michaelni. Based on the main branch I'll update my reading notes and questions.
I know understand the introduction to section 3.8.1.1 better and the definition list of values. The following paragraph describes the initialization of several variables which are then expressed in Figures 11 through 13.
At this point though, I think an additional few sentence would be helpful between Figures 13 (the last of the initialization formula) and Figure 14. So here's my questions to try to understand what could help here?
-
Of figures 14 through 20, could they be intuitively grouped together? What would those groups be?
-
Do I understand correctly that figures 14 through 20 are relevant to reading (decoding) but not to writing (encoding)?
-
Figure 15 is the only place where
<==>
is used withb_(i) = 0 <==> L_(i) < R_(i) - r_(i)
andb_(i) = 1 <==> L_(i) >= R_(i) - r_(i)
. Is it possible thatb_(i) = 0
andL_(i) >= R_(i) - r_(i)
? Am curious why this formula uses<==>
rather than==>
. -
Could you suggest a definition for
l_(i)
? -
In the Figure 18 caption
A pseudo-code description of the initial states in Range Binary mode.
is 'initial states' the right word or should this be 'initialization of Range coder state variables'?
from ffv1.
At this point though, I think an additional few sentence would be helpful between Figures 13 (the last of the initialization formula) and Figure 14. So here's my questions to try to understand what could help here?
Something like: The following equations define how the range coder variables evolve as it reads or writes symbols
- Of figures 14 through 20, could they be intuitively grouped together? What would those groups be?
14: positioning the range split based on the state
15: linking the decoded symbol, updated state and updated range
16: carrying over the unchanged states
17: linking the range coder with the bytestream read/write
- Do I understand correctly that figures 14 through 20 are relevant to reading (decoding) but not to writing (encoding)?
I would not say that. That to me sounds like pi is about converting the circumference of a circle to its radius but not its radius to its circumference
- Figure 15 is the only place where
<==>
is used withb_(i) = 0 <==> L_(i) < R_(i) - r_(i)
andb_(i) = 1 <==> L_(i) >= R_(i) - r_(i)
.
Is it possible that
b_(i) = 0
andL_(i) >= R_(i) - r_(i)
? Am curious why this formula uses<==>
rather than==>
.
no, the subrange we are in is tied to the symbol that comes out or goes into the coder, the same way a read bit from a bitstream would be tied to the symbol a huffman de/encoder would in/output
- Could you suggest a definition for
l_(i)
?
The L and l are the Low value, the difference is the location in the computation. One is before decoding a symbol the other afterwards, one before potentially reading the next byte one after. The relation of L and l is similar to R, r and t
- In the Figure 18 caption
A pseudo-code description of the initial states in Range Binary mode.
is 'initial states' the right word or should this be 'initialization of Range coder state variables'?
"initialization of Range coder variables" sounds better considering the existing use of terms i think.
from ffv1.
It looks like this issue can be closed (#260 is merged).
from ffv1.
please close.
from ffv1.
Related Issues (20)
- 4.6.2. plane_pixel_height has incorrect information on chroma planes
- Quant tables: reference decoder relies too much on reference encoder HOT 3
- [v4] Consider adding prediction to inter mode HOT 5
- sign_extend is used but not defined HOT 1
- Spec allows >8bit depth in Golomb-Rice mode but nothing can make this HOT 3
- IEEE CRC-32 referenced in spec is not a standard IEEE CRC-32 HOT 8
- JPEG2000-RCT transform equations are incomplete / don't match reference HOT 1
- few instances of lines too long HOT 2
- [v4] Consider other RCTs HOT 5
- section 3.8.1.2 needs to define get_rac HOT 8
- section 3.8.1.1 should have pseudocode HOT 16
- [v4] slices HOT 5
- Build produces pages of warnings and errors HOT 8
- Nothing in the Makefile removes the genarated *.svg files HOT 1
- add list of ffv4 goals and promises
- Renaming of the repo to ffv1-specification HOT 4
- FFV1 CUDA accelerated version HOT 7
- Handling of odd dimensions, subsampling and more than 1 slice
- remove exceptions from FFV1 version 4? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ffv1.