Exemple #1
0
void sequence_scalable_extension()
{
  int i;

  sequence_scalable_extension_present = 1;
  zprintf(1, "  sequence_scalable_extension_id = %01X\n", getbits(4));
  scalable_mode = getbits(2);
  zprintf(2, "  scalable_mode = %d\n", scalable_mode);
  zprintf(2, "  layer_id = %d\n", getbits(4));
  if (scalable_mode == SPATIAL_SCALABILITY)
  {
    zprintf(2, "  lower_layer_prediction_horizontal_size = %d\n", getbits(14));
    zprintf(2, "  marker bit = %d\n", get1bit());
    zprintf(2, "  lower_layer_prediction_vertical_size = %d\n", getbits(14));
    zprintf(2, "  horizontal_subsampling_factor_m = %d\n", getbits(5));
    zprintf(2, "  horizontal_subsampling_factor_n = %d\n", getbits(5));
    zprintf(2, "  vertical_subsampling_factor_m = %d\n", getbits(5));
    zprintf(2, "  vertical_subsampling_factor_n = %d\n", getbits(5));
  }
  if (scalable_mode == TEMPORAL_SCALABILITY)
  {
    i = get1bit();
    zprintf(2, "  picture_mux_enable = %d\n", i);
    if (i)
      zprintf(2, "  mux_to_progressive_sequence = %d\n", get1bit());
    zprintf(2, "  picture_mux_order = %d\n", getbits(3));
    zprintf(2, "  picture_mux_factor = %d\n", getbits(3));
  }
  next_start_code();
}
Exemple #2
0
void slice()
{
  slice_vertical_position = getbits(8);
  zprintf(3, "\nslice_start_code = 0x000001%02X\n", slice_vertical_position);
  if (vertical_size > 2800)
  {
    slice_vertical_position_extension = getbits(3);
    zprintf(3, "  slice_vertical_position_extension = %d\n", slice_vertical_position_extension);
	 mb_row = (slice_vertical_position_extension << 7) + slice_vertical_position - 1;
  }
  else
	 mb_row = slice_vertical_position - 1;
  previous_macroblock_address = (mb_row * mb_width) - 1;

  if (sequence_scalable_extension_present == 1)
    if (scalable_mode == DATA_PARTITIONING)
      zprintf(3, "  priority_breakpoint = %d\n", getbits(7));
  zprintf(3, "  quantiser_scale_code = %d\n", getbits(5));
  if (nextbits(1) == 1)
  {
    zprintf(3, "  intra_slice_flag = %d\n", get1bit());
    zprintf(3, "  intra_slice = %d\n", get1bit());
    zprintf(3, "  reserve_bits = %d\n", getbits(7));
    while (nextbits(1) == 1)
    {
      zprintf(3, "  extra_bit_slice = %d\n", get1bit());
      zprintf(3, "  extra_information_slice = %d\n", getbits(8));
    }
  }
  zprintf(3, "  extra_bit_slice = %d\n", get1bit());
//  do
//    macroblock();
//  while (nextbits(23) != 0);
  next_start_code();
}
Exemple #3
0
void picture_header()
{
  int i;

  zprintf(1, "\npicture_header = 0x000001%02X\n", getbits(8));
  zprintf(2, "  temporal_reference = %d\n", getbits(10));
  i = getbits(3);
  zprintf(2, "  picture_coding_type = %d\n", i);
  zprintf(2, "  vbv_delay = %d\n", getbits(16));
  if (i == 2 || i == 3)
  {
    zprintf(2, "  full_pel_forward_vector = %d\n", get1bit());
    zprintf(2, "  forward_f_code = %d\n", getbits(3));
  }
  if (i == 3)
  {
    zprintf(2, "  full_pel_backward_vector = %d\n", get1bit());
    zprintf(2, "  backward_f_code = %d\n", getbits(3));
  }
  while (nextbits(1) == 1)
  {
    zprintf(2, "  extra_bit_picture = %d\n", get1bit());
    zprintf(2, "  extra_information_picture = %d\n", getbits(8));
  }
  zprintf(2, "  extra_bit_picture = %d\n", get1bit());
  next_start_code();
}
Exemple #4
0
void group_of_pictures_header()
{
  zprintf(1, "\ngroup_start_code = 0x000001%02X\n", getbits(8));
  zprintf(2, "  drop_frame_flag = %d\n", get1bit());
  zprintf(2, "  time_code_hours = %d\n", getbits(5));
  zprintf(2, "  time_code_minutes = %d\n", getbits(6));
  zprintf(2, "  marker_bit = %d\n", get1bit());
  zprintf(2, "  time_code_seconds = %d\n", getbits(6));
  zprintf(2, "  time_code_pictures = %d\n", getbits(6));
  zprintf(2, "  closed_gop = %d\n", get1bit());
  zprintf(2, "  broken_link = %d\n", get1bit());
  next_start_code();
}
Exemple #5
0
void picture_spatial_scalable_extension()
{
  zprintf(1, "  picture_spatial_scalable_extension_id = %01X\n", getbits(4));
  zprintf(2, "  lower_layer_temporal_reference = %d\n", getbits(10));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  lower_layer_horizontal_offset = %d\n", getbits(15));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  lower_layer_vertical_offset = %d\n", getbits(15));
  zprintf(2, "  spatial_temporal_weight_code_table_index = %d\n", getbits(2));
  zprintf(2, "  lower_layer_progressive_frame = %d\n", get1bit());
  zprintf(2, "  lower_layer_deinterlaced_field_select = %d\n", get1bit());
  next_start_code();
}
Exemple #6
0
void picture_temporal_scalable_extension()
{
  zprintf(1, "  picture_temporal_scalable_extension_id = %01X\n", getbits(4));
  zprintf(2, "  reference_select_code = %d\n", getbits(2));
  zprintf(2, "  forward_temporal_reference = %d\n", getbits(10));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  backward_temporal_reference = %d\n", getbits(10));
  next_start_code();
}
Exemple #7
0
void sequence_display_extension()
{
  int i;

  zprintf(1, "  sequence_display_extension_id = %01X\n", getbits(4));
  zprintf(2, "  video_format = %d\n", getbits(3));
  i = get1bit();
  zprintf(2, "  colour_description = %d\n", i);
  if (i)
  {
    zprintf(2, "  colour_primaries = %d\n", getbits(8));
    zprintf(2, "  transfer_characteristics = %d\n", getbits(8));
    zprintf(2, "  matrix_coefficients = %d\n", getbits(8));
  }
  zprintf(2, "  display_horizontal_size = %d\n", getbits(14));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  display_vertical_size = %d\n", getbits(14));
  next_start_code();
}
Exemple #8
0
void sequence_extension()
{
  sequence_extensions++;
  zprintf(1, "\nextension_start_code = 0x000001%02X\n", getbits(8));
  zprintf(2, "  sequence_extension_id = %d\n", getbits(4));
  zprintf(2, "  profile_and_level_indication = %d\n", getbits(8));
  progressive_sequence = get1bit();
  zprintf(2, "  progressive_sequence = %d\n", progressive_sequence);
  zprintf(2, "  chroma_format = %d\n", getbits(2));
  zprintf(2, "  horizontal_size_extension = %d\n", getbits(2));
  zprintf(2, "  vertical_size_extension = %d\n", getbits(2));
  zprintf(2, "  bit_rate_extension = %d\n", getbits(12));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  vbv_buffer_size_extension = %d\n", getbits(8));
  zprintf(2, "  low_delay = %d\n", get1bit());
  zprintf(2, "  frame_rate_extension_n = %d\n", getbits(2));
  zprintf(2, "  frame_rate_extension_d = %d\n", getbits(5));
  next_start_code();
}
Exemple #9
0
/* --- entry point --- */
int	bitcmp ( unsigned char *bs1, unsigned char *bs2, int n )
{
/* --------------------------------------------------------------------------
Allocations and Declarations
-------------------------------------------------------------------------- */
int	icmp = 0;		/* returned to caller */
int	nbytes = n/8,		/* #full bytes we can compare with memcmp()*/
	nbits  = n%8,  ibit=0;	/* #trailing bits in last byte, index */
/* --------------------------------------------------------------------------
compare leading bytes, then trailing bits
-------------------------------------------------------------------------- */
if ( nbytes > 0 ) icmp = memcmp(bs1,bs2,nbytes); /* compare leading bytes */
if ( icmp == 0 )		/* leading bytes identical */
 if ( nbits > 0 )		/* and we have trailing bits */
  for ( ibit=0; ibit<nbits; ibit++ ) /* check each bit */
   { icmp = (int)get1bit(bs1[nbytes],ibit) - (int)get1bit(bs2[nbytes],ibit);
     if ( icmp != 0 ) break; }	/* done at first unmatched bit */
return ( icmp );		/* back to caller with -1,0,+1 */
} /* --- end-of-function bitcmp() --- */
Exemple #10
0
void picture_display_extension()
{
  int i, number_of_frame_centre_offsets;

  zprintf(1, "  picture_display_extension_id = %01X\n", getbits(4));
  if ((progressive_sequence == 1) || (picture_structure == 3))
	 number_of_frame_centre_offsets = 1;
  else
	 if (repeat_first_field == 1)
		number_of_frame_centre_offsets = 3;
	 else
		number_of_frame_centre_offsets = 2;
  for (i = 0; i < number_of_frame_centre_offsets; i++)
  {
    zprintf(2, "  frame_centre_horizontal_offset = %d\n", getbits(16));
    zprintf(2, "  marker bit = %d\n", get1bit());
    zprintf(2, "  frame_centre_vertical_offset = %d\n", getbits(16));
    zprintf(2, "  marker bit = %d\n", get1bit());
  }
  next_start_code();
}
Exemple #11
0
void quant_matrix_extension()
{
  int i;

  zprintf(1, "  quant_matrix_extension_id = %01X\n", getbits(4));
  i = get1bit();
  zprintf(2, "  load_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d intra_quantiser_matrix bytes = %d\n", i);
  }
  i = get1bit();
  zprintf(2, "  load_non_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d non_intra_quantiser_matrix bytes = %d\n", i);
  }
  i = get1bit();
  zprintf(2, "  load_chroma_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d chroma_intra_quantiser_matrix bytes = %d\n", i);
  }
  i = get1bit();
  zprintf(2, "  load_chroma_non_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d chroma_non_intra_quantiser_matrix bytes = %d\n", i);
  }
  next_start_code();
}
Exemple #12
0
void sequence_header()
{
  int i;

  sequence_headers++;
  zprintf(1, "\n\nsequence_header_code = 0x000001%02X\n", getbits(8));
  horizontal_size = getbits(12);
  mb_width = horizontal_size / 16;
  if (mb_width % 16)
    mb_width++;
  zprintf(2, "  horizontal_size_value = %d\n", horizontal_size);
  vertical_size = getbits(12);
  zprintf(2, "  vertical_size_value = %d\n", vertical_size);
  zprintf(2, "  aspect_ratio_information = %d\n", getbits(4));
  zprintf(2, "  frame_rate_code = %d\n", getbits(4));
  zprintf(2, "  bit_rate_value = %d\n", getbits(18));
  zprintf(2, "  marker bit = %d\n", get1bit());
  zprintf(2, "  vbv_buffer_size_value = %d\n", getbits(10));
  zprintf(2, "  constrained_parameters_flag = %d\n", get1bit());
  i = get1bit();
  zprintf(2, "  load_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d intra_quantiser_matrix bytes = %d\n", i);
  }
  i = get1bit();
  zprintf(2, "  load_non_intra_quantiser_matrix = %d\n", i);
  if (i)
  {
    for (i = 0; i < 64; i++)
      getbits(8);
    zprintf(2, "    read %d non_intra_quantiser_matrix bytes = %d\n", i);
  }
  next_start_code();
}
Exemple #13
0
void III_get_side_info(bit_stream bs, T si, frame fr_ps) {
    int ch, gr, i;
    int stereo = fr_ps->stereo;
    
    si->main_data_begin = (unsigned)getbits(bs, 9);
    if (stereo == 1) {
        si->private_bits = (unsigned)getbits(bs, 5);
    } else {
        si->private_bits = (unsigned)getbits(bs, 3);
    }
    
    for (ch = 0; ch < stereo; ch++) {
        for (i = 0; i < 4; i++) {
            si->ch[ch].scfsi[i] = get1bit(bs);
        }
    }
    
    for (gr = 0; gr < 2; gr++) {
        for (ch = 0; ch < stereo; ch++) {
            si->ch[ch].gr[gr].part2_3_length = (unsigned)getbits(bs, 12);
            si->ch[ch].gr[gr].big_values = (unsigned)getbits(bs, 9);
            si->ch[ch].gr[gr].global_gain = (unsigned)getbits(bs, 8);
            si->ch[ch].gr[gr].scalefac_compress = (unsigned)getbits(bs, 4);
            si->ch[ch].gr[gr].window_switching_flag = get1bit(bs);
            if (si->ch[ch].gr[gr].window_switching_flag) {
                si->ch[ch].gr[gr].block_type = (unsigned)getbits(bs, 2);
                si->ch[ch].gr[gr].mixed_block_flag = get1bit(bs);
                for (i = 0; i < 2; i++) {
                    si->ch[ch].gr[gr].table_select[i] = (unsigned)getbits(bs, 5);
                }
                for (i = 0; i < 3; i++) {
                    si->ch[ch].gr[gr].subblock_gain[i] = (unsigned)getbits(bs, 3);
                }
                
                if (si->ch[ch].gr[gr].block_type == 0) {//Set region_count parameters since they are implicit in this case.
                    printf("Side info bad: block_type == 0 in split block.\n");
                    exit(0);
                } else if (si->ch[ch].gr[gr].block_type == 2 && si->ch[ch].gr[gr].mixed_block_flag == 0) {
                    si->ch[ch].gr[gr].region0_count = 8;//MI 9;
                } else {
                    si->ch[ch].gr[gr].region0_count = 7;//MI 8;
                }
                si->ch[ch].gr[gr].region1_count = 20 - si->ch[ch].gr[gr].region0_count;
            } else {
                for (i = 0; i < 3; i++) {
                    si->ch[ch].gr[gr].table_select[i] = (unsigned)getbits(bs, 5);
                }
                si->ch[ch].gr[gr].region0_count = (unsigned)getbits(bs, 4);
                si->ch[ch].gr[gr].region1_count = (unsigned)getbits(bs, 3);
                si->ch[ch].gr[gr].block_type = 0;
            }
            si->ch[ch].gr[gr].preflag = get1bit(bs);
            si->ch[ch].gr[gr].scalefac_scale = get1bit(bs);
            si->ch[ch].gr[gr].count1table_select = get1bit(bs);
        }
    }
}
Exemple #14
0
void header()
{
  int i;

  printf("\nbyte count = %.0f\n", bitcount() / 8.0);
  i = getbits(12);
  if (i != SYNCWORD)
  {
    printf("Syncword not found, bits = %03X\n", i);
    exit(1);
  }
  syncwords++;
  zprintf(1, "syncword = %03X\n", i);
  zprintf(1, "  ID = %d\n", get1bit());
  layer = getbits(2);
  zprintf(1, "  layer = %d\n", layer);
  protection = get1bit();
  zprintf(1, "  protection_bit = %d\n", protection);
  bit_rate = getbits(4);
  zprintf(1, "  bitrate_index = %d\n", bit_rate);
  freq = getbits(2);
  zprintf(1, "  sampling_frequency = %d\n", freq);
  padding_bit = get1bit();
  zprintf(1, "  padding_bit = %d\n", padding_bit);
  private_bit = get1bit();
  zprintf(1, "  private_bit = %d\n", private_bit);
  mode = getbits(2);
  zprintf(1, "  mode = %d\n", mode);
  mode_ext = getbits(2);
  zprintf(1, "  mode_extension = %d\n", mode_ext);
  copyright = get1bit();
  zprintf(1, "  copyright = %d\n", copyright);
  original = get1bit();
  zprintf(1, "  original/home = %d\n", original);
  emphasis = getbits(2);
  zprintf(1, "  emphasis = %d\n", emphasis);
}
Exemple #15
0
void picture_coding_extension()
{
  int i;

  zprintf(1, "\nextension_start_code = 0x000001%02X\n", getbits(8));
  zprintf(1, "  picture_coding_extension_id = %01X\n", getbits(4));
  zprintf(2, "  f_code[0][0] forward horizontal = %d\n", getbits(4));
  zprintf(2, "  f_code[0][1] forward vertical = %d\n", getbits(4));
  zprintf(2, "  f_code[1][0] backward horizontal = %d\n", getbits(4));
  zprintf(2, "  f_code[1][1] backward vertical = %d\n", getbits(4));
  zprintf(2, "  intra_dc_precision = %d\n", getbits(2));
  picture_structure = getbits(2);
  zprintf(2, "  picture_structure = %d\n", picture_structure);
  zprintf(2, "  top_field_first = %d\n", get1bit());
  zprintf(2, "  frame_pred_frame_dct = %d\n", get1bit());
  zprintf(2, "  concealment_motion_vectors = %d\n", get1bit());
  zprintf(2, "  q_scale_type= %d\n", get1bit());
  zprintf(2, "  intra_vlc_format = %d\n", get1bit());
  zprintf(2, "  alternate_scan = %d\n", get1bit());
  repeat_first_field = get1bit();
  zprintf(2, "  repeat_first_field = %d\n", repeat_first_field);
  zprintf(2, "  chroma_420_type = %d\n", get1bit());
  zprintf(2, "  progressive_frame = %d\n", get1bit());
  i = get1bit();
  zprintf(2, "  composite_display_flag = %d\n", i);
  if (i)
  {
    zprintf(2, "  v_axis = %d\n", get1bit());
    zprintf(2, "  field_sequence = %d\n", getbits(3));
    zprintf(2, "  sub_carrier = %d\n", get1bit());
    zprintf(2, "  burst_amplitude = %d\n", getbits(7));
    zprintf(2, "  sub_carrier_phase = %d\n", getbits(8));
  }
  next_start_code();
}
Exemple #16
0
void ancillary_data()
{
  if ((layer == 1) || (layer == 2))
    while ((nextbits(12) != SYNCWORD) && !end_bs())
      get1bit();
}