예제 #1
0
파일: jdmainct.c 프로젝트: Codyle/pcsx2
jinit_d_main_controller(j_decompress_ptr cinfo, boolean need_full_buffer)
{
	my_main_ptr main;
	int ci, rgroup, ngroups;
	jpeg_component_info *compptr;
	main = (my_main_ptr)
	       (*cinfo->mem->alloc_small)((j_common_ptr) cinfo, JPOOL_IMAGE,
	                                  SIZEOF(my_main_controller));
	cinfo->main = (struct jpeg_d_main_controller *) main;
	main->pub.start_pass = start_pass_main;
	if (need_full_buffer)		/* shouldn't happen */
		ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);
	/* Allocate the workspace.
	 * ngroups is the number of row groups we need.
	 */
	if (cinfo->upsample->need_context_rows) {
		if (cinfo->min_DCT_v_scaled_size < 2) /* unsupported, see comments above */
			ERREXIT(cinfo, JERR_NOTIMPL);
		alloc_funny_pointers(cinfo); /* Alloc space for xbuffer[] lists */
		ngroups = cinfo->min_DCT_v_scaled_size + 2;
	} else
		ngroups = cinfo->min_DCT_v_scaled_size;
	for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
	     ci++, compptr++) {
		rgroup = (compptr->v_samp_factor * compptr->DCT_v_scaled_size) /
		         cinfo->min_DCT_v_scaled_size; /* height of a row group of component */
		main->buffer[ci] = (*cinfo->mem->alloc_sarray)
		                   ((j_common_ptr) cinfo, JPOOL_IMAGE,
		                    compptr->width_in_blocks * compptr->DCT_h_scaled_size,
		                    (JDIMENSION)(rgroup * ngroups));
	}
}
예제 #2
0
jinit_d_main_controller (j_decompress_ptr cinfo, boolean need_full_buffer)
{
  my_main_ptr main;
__boundcheck_metadata_store((void *)(&main),(void *)((size_t)(&main)+sizeof(main)*8-1));

  int ci;
__boundcheck_metadata_store((void *)(&ci),(void *)((size_t)(&ci)+sizeof(ci)*8-1));
int  rgroup;
__boundcheck_metadata_store((void *)(&rgroup),(void *)((size_t)(&rgroup)+sizeof(rgroup)*8-1));
int  ngroups;
__boundcheck_metadata_store((void *)(&ngroups),(void *)((size_t)(&ngroups)+sizeof(ngroups)*8-1));

  jpeg_component_info *compptr;
__boundcheck_metadata_store((void *)(&compptr),(void *)((size_t)(&compptr)+sizeof(compptr)*8-1));


  main = (my_main_ptr)
    (*(void *(*)(j_common_ptr, int, size_t))(__boundcheck_ptr_reference(483,19,"jinit_d_main_controller",(void *)(cinfo->mem->alloc_small),(void *)cinfo->mem->alloc_small))) ((j_common_ptr) cinfo, JPOOL_IMAGE,
				SIZEOF(my_main_controller));
  cinfo->main = (struct jpeg_d_main_controller *) main;
  main->pub.start_pass = start_pass_main;

  if (need_full_buffer)		/* shouldn't happen */
    ERREXIT(cinfo, JERR_BAD_BUFFER_MODE);

  /* Allocate the workspace.
   * ngroups is the number of row groups we need.
   */
  if (cinfo->upsample->need_context_rows) {
    if (cinfo->min_DCT_scaled_size < 2) /* unsupported, see comments above */
      ERREXIT(cinfo, JERR_NOTIMPL);
    alloc_funny_pointers(cinfo); /* Alloc space for xbuffer[] lists */
    ngroups = cinfo->min_DCT_scaled_size + 2;
  } else {
    ngroups = cinfo->min_DCT_scaled_size;
  }

  for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
       ci++, compptr++) {
    rgroup = (compptr->v_samp_factor * compptr->DCT_scaled_size) /
      cinfo->min_DCT_scaled_size; /* height of a row group of component */
    main->buffer[_RV_insert_check(0,10,507,5,"jinit_d_main_controller",ci)] = (*(JSAMPARRAY (*)(j_common_ptr, int, JDIMENSION, JDIMENSION))(__boundcheck_ptr_reference(507,38,"jinit_d_main_controller",(void *)(cinfo->mem->alloc_sarray),(void *)cinfo->mem->alloc_sarray)))
			((j_common_ptr) cinfo, JPOOL_IMAGE,
			 compptr->width_in_blocks * compptr->DCT_scaled_size,
			 (JDIMENSION) (rgroup * ngroups));
  }
}