예제 #1
0
파일: BINDIL.C 프로젝트: StevenKTurner/IPO
void main (int argc, char *argv[])
{
	SE p;
	IMAGE im;
	int k;

	if (argc < 4)
	{
	  printf ("BinDil <input> <Structuring element> <output>\n");
	  exit(1);
	}

/* Read the structuring element */
	k = get_se (argv[2], &p);
	if (!k)
	{
	  printf ("Bad structuring element, file name '%s'.\n", argv[2]);
	  exit (2);
	}
	printf ("BinDil: Perform a binary dilation on image '%s'.\n", 
		argv[1]);
	printf ("Structuring element is:\n");
	print_se (p);

/* Read the input image */
	if (read_pbm (argv[1], &im) == 0) exit(3);

/* Perform the dilation */
	bin_dilate (im, p);

/* Write the result to the specified file */
	write_pbm (argv[3], im);
}
예제 #2
0
파일: parser.c 프로젝트: drcz/drczlang
SE *get_cdr() {
  SE *hd,*tl;
  get_token();
  if(token.type==TRPAR) return NIL;
  hd=get_se();
  tl=get_cdr();
  return new_cons(hd,tl);
}
예제 #3
0
파일: parser.c 프로젝트: drcz/drczlang
SE *get_se()
{
  switch(token.type)
    {
    case TEOF: return new_sym(strdup("#eof"));
    case TNUM: return new_num(atoi(token.buf));
    case TSYM: return new_sym(strdup(token.buf));
    case TQUOTE: get_token(); /* ! */
                 return new_cons(new_sym(strdup("quote")),
                                 new_cons(get_se(),NIL));
    case TLPAR: return get_cdr();
    default: break; /* err! */
    }
 return NIL; /* notreached */
}
예제 #4
0
static void slice_header(struct h265_private *p)
{
	int i;

	p->slice.first_slice_segment_in_pic_flag = get_u(p->regs, 1);

	if (p->nal_unit_type >= 16 && p->nal_unit_type <= 23)
		p->slice.no_output_of_prior_pics_flag = get_u(p->regs, 1);

	p->slice.slice_pic_parameter_set_id = get_ue(p->regs);

	if (!p->slice.first_slice_segment_in_pic_flag)
	{
		if (p->info->dependent_slice_segments_enabled_flag)
			p->slice.dependent_slice_segment_flag = get_u(p->regs, 1);

		p->slice.slice_segment_address = get_u(p->regs, ceil_log2(PicSizeInCtbsY));
	}

	if (!p->slice.dependent_slice_segment_flag)
	{
		p->slice.pic_output_flag = 1;
		p->slice.num_ref_idx_l0_active_minus1 = p->info->num_ref_idx_l0_default_active_minus1;
		p->slice.num_ref_idx_l1_active_minus1 = p->info->num_ref_idx_l1_default_active_minus1;
		p->slice.collocated_from_l0_flag = 1;
		p->slice.slice_deblocking_filter_disabled_flag = p->info->pps_deblocking_filter_disabled_flag;
		p->slice.slice_beta_offset_div2 = p->info->pps_beta_offset_div2;
		p->slice.slice_tc_offset_div2 = p->info->pps_tc_offset_div2;
		p->slice.slice_loop_filter_across_slices_enabled_flag = p->info->pps_loop_filter_across_slices_enabled_flag;

		skip_bits(p->regs, p->info->num_extra_slice_header_bits);

		p->slice.slice_type = get_ue(p->regs);

		if (p->info->output_flag_present_flag)
			p->slice.pic_output_flag = get_u(p->regs, 1);

		if (p->info->separate_colour_plane_flag == 1)
			p->slice.colour_plane_id = get_u(p->regs, 2);

		if (p->nal_unit_type != 19 && p->nal_unit_type != 20)
		{
			p->slice.slice_pic_order_cnt_lsb = get_u(p->regs, p->info->log2_max_pic_order_cnt_lsb_minus4 + 4);

			p->slice.short_term_ref_pic_set_sps_flag = get_u(p->regs, 1);

			skip_bits(p->regs, p->info->NumShortTermPictureSliceHeaderBits);

			if (p->info->long_term_ref_pics_present_flag)
				skip_bits(p->regs, p->info->NumLongTermPictureSliceHeaderBits);

			if (p->info->sps_temporal_mvp_enabled_flag)
				p->slice.slice_temporal_mvp_enabled_flag = get_u(p->regs, 1);
		}

		if (p->info->sample_adaptive_offset_enabled_flag)
		{
			p->slice.slice_sao_luma_flag = get_u(p->regs, 1);
			p->slice.slice_sao_chroma_flag = get_u(p->regs, 1);
		}

		if (p->slice.slice_type == SLICE_P || p->slice.slice_type == SLICE_B)
		{
			p->slice.num_ref_idx_active_override_flag = get_u(p->regs, 1);

			if (p->slice.num_ref_idx_active_override_flag)
			{
				p->slice.num_ref_idx_l0_active_minus1 = get_ue(p->regs);
				if (p->slice.slice_type == SLICE_B)
					p->slice.num_ref_idx_l1_active_minus1 = get_ue(p->regs);
			}

			if (p->info->lists_modification_present_flag && p->info->NumPocTotalCurr > 1)
				ref_pic_lists_modification(p);

			if (p->slice.slice_type == SLICE_B)
				p->slice.mvd_l1_zero_flag = get_u(p->regs, 1);

			if (p->info->cabac_init_present_flag)
				p->slice.cabac_init_flag = get_u(p->regs, 1);

			if (p->slice.slice_temporal_mvp_enabled_flag)
			{
				if (p->slice.slice_type == SLICE_B)
					p->slice.collocated_from_l0_flag = get_u(p->regs, 1);

				if ((p->slice.collocated_from_l0_flag && p->slice.num_ref_idx_l0_active_minus1 > 0) || (!p->slice.collocated_from_l0_flag && p->slice.num_ref_idx_l1_active_minus1 > 0))
					p->slice.collocated_ref_idx = get_ue(p->regs);
			}

			if ((p->info->weighted_pred_flag && p->slice.slice_type == SLICE_P) || (p->info->weighted_bipred_flag && p->slice.slice_type == SLICE_B))
				pred_weight_table(p);

			p->slice.five_minus_max_num_merge_cand = get_ue(p->regs);
		}

		p->slice.slice_qp_delta = get_se(p->regs);

		if (p->info->pps_slice_chroma_qp_offsets_present_flag)
		{
			p->slice.slice_cb_qp_offset = get_se(p->regs);
			p->slice.slice_cr_qp_offset = get_se(p->regs);
		}

		if (p->info->deblocking_filter_override_enabled_flag)
			p->slice.deblocking_filter_override_flag = get_u(p->regs, 1);

		if (p->slice.deblocking_filter_override_flag)
		{
			p->slice.slice_deblocking_filter_disabled_flag = get_u(p->regs, 1);

			if (!p->slice.slice_deblocking_filter_disabled_flag)
			{
				p->slice.slice_beta_offset_div2 = get_se(p->regs);
				p->slice.slice_tc_offset_div2 = get_se(p->regs);
			}
		}

		if (p->info->pps_loop_filter_across_slices_enabled_flag && (p->slice.slice_sao_luma_flag || p->slice.slice_sao_chroma_flag || !p->slice.slice_deblocking_filter_disabled_flag))
			p->slice.slice_loop_filter_across_slices_enabled_flag = get_u(p->regs, 1);
	}

	if (p->info->tiles_enabled_flag || p->info->entropy_coding_sync_enabled_flag)
	{
		p->slice.num_entry_point_offsets = get_ue(p->regs);

		if (p->slice.num_entry_point_offsets > 0)
		{
			p->slice.offset_len_minus1 = get_ue(p->regs);

			for (i = 0; i < p->slice.num_entry_point_offsets; i++)
				p->slice.entry_point_offset_minus1[i] = get_u(p->regs, p->slice.offset_len_minus1 + 1);
		}
	}

	if (p->info->slice_segment_header_extension_present_flag)
		skip_bits(p->regs, get_ue(p->regs) * 8);
}
예제 #5
0
static void pred_weight_table(struct h265_private *p)
{
	int i, j;

	p->slice.luma_log2_weight_denom = get_ue(p->regs);
	if (p->info->chroma_format_idc != 0)
		p->slice.delta_chroma_log2_weight_denom = get_se(p->regs);

	for (i = 0; i <= p->slice.num_ref_idx_l0_active_minus1; i++)
		p->slice.luma_weight_l0_flag[i] = get_u(p->regs, 1);

	if (p->info->chroma_format_idc != 0)
		for (i = 0; i <= p->slice.num_ref_idx_l0_active_minus1; i++)
			p->slice.chroma_weight_l0_flag[i] = get_u(p->regs, 1);

	for (i = 0; i <= p->slice.num_ref_idx_l0_active_minus1; i++)
	{
		if (p->slice.luma_weight_l0_flag[i])
		{
			p->slice.delta_luma_weight_l0[i] = get_se(p->regs);
			p->slice.luma_offset_l0[i] = get_se(p->regs);
		}

		if (p->slice.chroma_weight_l0_flag[i])
		{
			for (j = 0; j < 2; j++)
			{
				p->slice.delta_chroma_weight_l0[i][j] = get_se(p->regs);
				p->slice.delta_chroma_offset_l0[i][j] = get_se(p->regs);
			}
		}
	}

	if (p->slice.slice_type == SLICE_B)
	{
		for (i = 0; i <= p->slice.num_ref_idx_l1_active_minus1; i++)
			p->slice.luma_weight_l1_flag[i] = get_u(p->regs, 1);

		if (p->info->chroma_format_idc != 0)
			for (i = 0; i <= p->slice.num_ref_idx_l1_active_minus1; i++)
				p->slice.chroma_weight_l1_flag[i] = get_u(p->regs, 1);

		for (i = 0; i <= p->slice.num_ref_idx_l1_active_minus1; i++)
		{
			if (p->slice.luma_weight_l1_flag[i])
			{
				p->slice.delta_luma_weight_l1[i] = get_se(p->regs);
				p->slice.luma_offset_l1[i] = get_se(p->regs);
			}

			if (p->slice.chroma_weight_l1_flag[i])
			{
				for (j = 0; j < 2; j++)
				{
					p->slice.delta_chroma_weight_l1[i][j] = get_se(p->regs);
					p->slice.delta_chroma_offset_l1[i][j] = get_se(p->regs);
				}
			}
		}
	}
}
예제 #6
0
파일: parser.c 프로젝트: drcz/drczlang
SE *_read_se() {
  get_token();
  return get_se();
}