+ subtitle_region_object *object = region->objects;
+ while (object)
+ {
+ if (object->object_id == object_id)
+ {
+ if (object_coding_method == 0)
+ {
+ int top_field_data_blocklength, bottom_field_data_blocklength;
+ int i=1, line, linep;
+
+ top_field_data_blocklength = *segment++ << 8;
+ top_field_data_blocklength |= *segment++;
+
+ bottom_field_data_blocklength = *segment++ << 8;
+ bottom_field_data_blocklength |= *segment++;
+// eDebug("%d / %d bytes", top_field_data_blocklength, bottom_field_data_blocklength);
+ processed_length += 4;
+
+ // its working on cyfra channels.. but hmm in EN300743 the default table is 0, 7, 8, 15
+ map_2_to_4_bit_table[0] = 0;
+ map_2_to_4_bit_table[1] = 8;
+ map_2_to_4_bit_table[2] = 7;
+ map_2_to_4_bit_table[3] = 15;
+
+ // this map is realy untested...
+ map_2_to_8_bit_table[0] = 0;
+ map_2_to_8_bit_table[1] = 0x88;
+ map_2_to_8_bit_table[2] = 0x77;
+ map_2_to_8_bit_table[3] = 0xff;
+
+ map_4_to_8_bit_table[0] = 0;
+ for (; i < 16; ++i)
+ map_4_to_8_bit_table[i] = i * 0x11;
+
+ i = 0;
+ line = 0;
+ linep = 0;
+ while (i < top_field_data_blocklength)
+ {
+ int len;
+ len = subtitle_process_pixel_data(region, object, &line, &linep, segment);
+ if (len < 0)
+ return -1;
+ segment += len;
+ processed_length += len;
+ i += len;
+ }