MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / init_prec

Function init_prec

libavcodec/jpeg2000.c:275–390  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

273}
274
275static int init_prec(AVCodecContext *avctx,
276 Jpeg2000Band *band,
277 Jpeg2000ResLevel *reslevel,
278 Jpeg2000Component *comp,
279 Jpeg2000CodingStyle *codsty,
280 int precno, int bandno, int reslevelno,
281 int log2_band_prec_width,
282 int log2_band_prec_height)
283{
284 Jpeg2000Prec *prec = band->prec + precno;
285 int nb_codeblocks, cblkno;
286
287 prec->decoded_layers = 0;
288
289 /* TODO: Explain formula for JPEG200 DCINEMA. */
290 /* TODO: Verify with previous count of codeblocks per band */
291
292 /* Compute P_x0 */
293 prec->coord[0][0] = ((reslevel->coord[0][0] >> reslevel->log2_prec_width) + precno % reslevel->num_precincts_x) *
294 (1 << log2_band_prec_width);
295
296 /* Compute P_y0 */
297 prec->coord[1][0] = ((reslevel->coord[1][0] >> reslevel->log2_prec_height) + precno / reslevel->num_precincts_x) *
298 (1 << log2_band_prec_height);
299
300 /* Compute P_x1 */
301 prec->coord[0][1] = prec->coord[0][0] +
302 (1 << log2_band_prec_width);
303 prec->coord[0][0] = FFMAX(prec->coord[0][0], band->coord[0][0]);
304 prec->coord[0][1] = FFMIN(prec->coord[0][1], band->coord[0][1]);
305
306 /* Compute P_y1 */
307 prec->coord[1][1] = prec->coord[1][0] +
308 (1 << log2_band_prec_height);
309 prec->coord[1][0] = FFMAX(prec->coord[1][0], band->coord[1][0]);
310 prec->coord[1][1] = FFMIN(prec->coord[1][1], band->coord[1][1]);
311
312 prec->nb_codeblocks_width =
313 ff_jpeg2000_ceildivpow2(prec->coord[0][1],
314 band->log2_cblk_width)
315 - (prec->coord[0][0] >> band->log2_cblk_width);
316 prec->nb_codeblocks_height =
317 ff_jpeg2000_ceildivpow2(prec->coord[1][1],
318 band->log2_cblk_height)
319 - (prec->coord[1][0] >> band->log2_cblk_height);
320
321
322 /* Tag trees initialization */
323 prec->cblkincl =
324 ff_jpeg2000_tag_tree_init(prec->nb_codeblocks_width,
325 prec->nb_codeblocks_height);
326 if (!prec->cblkincl)
327 return AVERROR(ENOMEM);
328
329 prec->zerobits =
330 ff_jpeg2000_tag_tree_init(prec->nb_codeblocks_width,
331 prec->nb_codeblocks_height);
332 if (!prec->zerobits)

Callers 1

init_bandFunction · 0.85

Calls 4

ff_jpeg2000_ceildivpow2Function · 0.85
av_callocFunction · 0.85
av_codec_is_encoderFunction · 0.85

Tested by

no test coverage detected