Hi there,
In the function VP8Decimate() there is an if/else that separates two cases:
1. if (rd_opt > RD_OPT_NONE):
For a given macroblock, the rate and distortion of different prediction modes are measured + reconstruction of that MB.
2. else:
Only distortion measurements are performed + reconstruction of that MB.
The comment before the “else” says that:
// At this point we have heuristically decided intra16 / intra4.
// For method >= 2, pick the best intra4/intra16 based on SSE (~tad slower).
// For method <= 1, we don't re-examine the decision but just go ahead with
// quantization/reconstruction.
There is necessarily a previous decision regarding the prediction mode in that MB? Could not be the first time that it is evaluated??
From what I understand, when inside StatLoop() → OneStatPass() → VP8Decimate, if method < 3 then rd_opt=RD_OPT_NONE, so the evaluation in VP8Decimate goes to the “else” branch. However, this will be the first time that that MB is checked, so no previous decisions have been made. Is this right?
Depending on the method (0..6) used, in the main loop of VP8EncLoop(), it could also be the first time that a MB is visited, if inside StatLoop() not all macroblocks have been evaluated (fast mode).
Can someone please clarify those scenarios?
Thanks!
Pablo
Hi there,
In the function VP8Decimate() there is an if/else that separates two cases:
1. if (rd_opt > RD_OPT_NONE):
For a given macroblock, the rate and distortion of different prediction modes are measured + reconstruction of that MB.
2. else:
Only distortion measurements are performed + reconstruction of that MB.
The comment before the “else” says that:
// At this point we have heuristically decided intra16 / intra4.
// For method >= 2, pick the best intra4/intra16 based on SSE (~tad slower).
// For method <= 1, we don't re-examine the decision but just go ahead with
// quantization/reconstruction.
There is necessarily a previous decision regarding the prediction mode in that MB? Could not be the first time that it is evaluated??
From what I understand, when inside StatLoop() → OneStatPass() → VP8Decimate, if method < 3 then rd_opt=RD_OPT_NONE, so the evaluation in VP8Decimate goes to the “else” branch. However, this will be the first time that that MB is checked, so no previous decisions have been made. Is this right?
Depending on the method (0..6) used, in the main loop of VP8EncLoop(), it could also be the first time that a MB is visited, if inside StatLoop() not all macroblocks have been evaluated (fast mode).
Can someone please clarify those scenarios?
Thanks!
Pablo
--
You received this message because you are subscribed to the Google Groups "WebP Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to webp-discuss...@webmproject.org.
To post to this group, send email to webp-d...@webmproject.org.
Visit this group at https://groups.google.com/a/webmproject.org/group/webp-discuss/.
For more options, visit https://groups.google.com/a/webmproject.org/d/optout.
Hi skal,Ok! That makes sense, much clearer now.The analysis pass is the one that is actually implemented with multithreading support, right? Do you know if all the macroblocks could be analyzed in parallel in this stage??