'Reads the program_config_element()
Raises BitReaderError'

def __init__(self, r):

    self.element_instance_tag = r.bits(4)
    self.object_type = r.bits(2)
    self.sampling_frequency_index = r.bits(4)
    num_front_channel_elements = r.bits(4)
    num_side_channel_elements = r.bits(4)
    num_back_channel_elements = r.bits(4)
    num_lfe_channel_elements = r.bits(2)
    num_assoc_data_elements = r.bits(3)
    num_valid_cc_elements = r.bits(4)
    mono_mixdown_present = r.bits(1)
    if (mono_mixdown_present == 1):
        r.skip(4)
    stereo_mixdown_present = r.bits(1)
    if (stereo_mixdown_present == 1):
        r.skip(4)
    matrix_mixdown_idx_present = r.bits(1)
    if (matrix_mixdown_idx_present == 1):
        r.skip(3)
    elms = ((num_front_channel_elements + num_side_channel_elements) + num_back_channel_elements)
    channels = 0
    for i in xrange(elms):
        channels += 1
        element_is_cpe = r.bits(1)
        if element_is_cpe:
            channels += 1
        r.skip(4)
    channels += num_lfe_channel_elements
    self.channels = channels
    r.skip((4 * num_lfe_channel_elements))
    r.skip((4 * num_assoc_data_elements))
    r.skip((5 * num_valid_cc_elements))
    r.align()
    comment_field_bytes = r.bits(8)
    r.skip((8 * comment_field_bytes))
