Git Product home page Git Product logo

Comments (8)

dericed avatar dericed commented on July 18, 2024

👀

from ffv1.

michaelni avatar michaelni commented on July 18, 2024

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 lowercase r is used in Section 3.7.2 to signify red, but from context that doesn't match. I suggest r_(i) needs some definition local to this section? Would reading the normative text of range-coding show me what r_(i) means?
  • What is R_(i)? Also undefined within this document? Down in Figure 15 R_(0) is referenced as Figure 15: The initial value for "Range". which is a caption I wrote as a guess. Is this accurate? Is R_(i) the same as what is referred to as range 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) and C_(i) are defined as the state and context, 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.

dericed avatar dericed commented on July 18, 2024

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 see R_(0) and L_(0), are there others that could be considered Range 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 in S_(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 as C_(i) != k ==> S_(i + 1, k) = S_(i, k).

from ffv1.

michaelni avatar michaelni commented on July 18, 2024

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 see R_(0) and L_(0), are there others that could be considered Range 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 in S_(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 as C_(i) != k ==> S_(i + 1, k) = S_(i, k).

whatever people prefer.

from ffv1.

dericed avatar dericed commented on July 18, 2024

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 with b_(i) = 0 <==> L_(i) < R_(i) - r_(i) and b_(i) = 1 <==> L_(i) >= R_(i) - r_(i). Is it possible that b_(i) = 0 and L_(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.

michaelni avatar michaelni commented on July 18, 2024

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 with b_(i) = 0 <==> L_(i) < R_(i) - r_(i) and b_(i) = 1 <==> L_(i) >= R_(i) - r_(i).

Is it possible that b_(i) = 0 and L_(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.

JeromeMartinez avatar JeromeMartinez commented on July 18, 2024

It looks like this issue can be closed (#260 is merged).

from ffv1.

mcr avatar mcr commented on July 18, 2024

please close.

from ffv1.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.