--- Linux-DVB/DVB.xs 2006/05/24 21:00:09 1.6 +++ Linux-DVB/DVB.xs 2008/02/25 04:53:35 1.7 @@ -184,8 +184,8 @@ CONST (DMX_PES_SUBTITLE), CONST (DMX_PES_PCR), - CONST (DMX_SCRAMBLING_EV), - CONST (DMX_FRONTEND_EV), + //CONST (DMX_SCRAMBLING_EV), + //CONST (DMX_FRONTEND_EV), CONST (DMX_CHECK_CRC), CONST (DMX_ONESHOT), @@ -202,8 +202,8 @@ CONST (DMX_SOURCE_DVR2), CONST (DMX_SOURCE_DVR3), - CONST (DMX_SCRAMBLING_OFF), - CONST (DMX_SCRAMBLING_ON), + //CONST (DMX_SCRAMBLING_OFF), + //CONST (DMX_SCRAMBLING_ON), // constants defined by this file CONST (SCT_PAT), @@ -979,6 +979,7 @@ switch (table_id) { case SCT_NIT: + case SCT_NIT_OTHER: { U16 descriptor_end_offset; @@ -1024,41 +1025,43 @@ case SCT_EIT_PRESENT_OTHER: case SCT_EIT_SCHEDULE0...SCT_EIT_SCHEDULE15: //GCC case SCT_EIT_SCHEDULE_OTHER0...SCT_EIT_SCHEDULE_OTHER15: //GCC - DEC_I (hv, 16, service_id); - decode_field (2); - DEC_I (hv, 5, version_number); - DEC_I (hv, 1, current_next_indicator); - DEC_I (hv, 8, section_number); - DEC_I (hv, 8, last_section_number); - DEC_I (hv, 16, transport_stream_id); - DEC_I (hv, 16, original_network_id); - DEC_I (hv, 8, segment_last_section_number); - DEC_I (hv, 8, last_table_id); - - AV *events = newAV (); - HVS (hv, events, newRV_noinc ((SV *)events)); - - while (end - dec_ofs > 32) - { - long dll; - AV *desc; - HV *ev = newHV (); - av_push (events, newRV_noinc ((SV *)ev)); - - DEC_I (ev, 16, event_id); - DEC_I (ev, 16, start_time_mjd); - DEC_I (ev, 24, start_time_hms); - DEC_I (ev, 24, duration); - DEC_I (ev, 3, running_status); - DEC_I (ev, 1, free_CA_mode); - - dll = dec_ofs + (decode_field (12) << 3); - - desc = decode_descriptors (dll); - HVS (ev, descriptors, newRV_noinc ((SV *)desc)); - } + { + DEC_I (hv, 16, service_id); + decode_field (2); + DEC_I (hv, 5, version_number); + DEC_I (hv, 1, current_next_indicator); + DEC_I (hv, 8, section_number); + DEC_I (hv, 8, last_section_number); + DEC_I (hv, 16, transport_stream_id); + DEC_I (hv, 16, original_network_id); + DEC_I (hv, 8, segment_last_section_number); + DEC_I (hv, 8, last_table_id); + + AV *events = newAV (); + HVS (hv, events, newRV_noinc ((SV *)events)); + + while (end - dec_ofs > 32) + { + long dll; + AV *desc; + HV *ev = newHV (); + av_push (events, newRV_noinc ((SV *)ev)); + + DEC_I (ev, 16, event_id); + DEC_I (ev, 16, start_time_mjd); + DEC_I (ev, 24, start_time_hms); + DEC_I (ev, 24, duration); + DEC_I (ev, 3, running_status); + DEC_I (ev, 1, free_CA_mode); - decode_field (32); // skip CRC + dll = dec_ofs + (decode_field (12) << 3); + + desc = decode_descriptors (dll); + HVS (ev, descriptors, newRV_noinc ((SV *)desc)); + } + + decode_field (32); // skip CRC + } break;