public SliceHeader readPart1(BitReader in) {

    SliceHeader sh = new SliceHeader();
    sh.first_mb_in_slice = readUE(in, "SH: first_mb_in_slice");
    int sh_type = readUE(in, "SH: slice_type");
    sh.slice_type = SliceType.fromValue(sh_type % 5);
    sh.slice_type_restr = (sh_type / 5) > 0;

    sh.pic_parameter_set_id = readUE(in, "SH: pic_parameter_set_id");

    return sh;
  }