Exemple #1
0
static void
dump_section (GstMpegTsSection * section)
{
  switch (GST_MPEGTS_SECTION_TYPE (section)) {
    case GST_MPEGTS_SECTION_PAT:
      dump_pat (section);
      break;
    case GST_MPEGTS_SECTION_PMT:
      dump_pmt (section);
      break;
    case GST_MPEGTS_SECTION_TDT:
      dump_tdt (section);
      break;
    case GST_MPEGTS_SECTION_TOT:
      dump_tot (section);
      break;
    case GST_MPEGTS_SECTION_SDT:
      dump_sdt (section);
      break;
    case GST_MPEGTS_SECTION_NIT:
      dump_nit (section);
      break;
    case GST_MPEGTS_SECTION_BAT:
      dump_bat (section);
      break;
    case GST_MPEGTS_SECTION_EIT:
      dump_eit (section);
      break;
    default:
      g_printf ("     Unknown section type\n");
      break;
  }
}
Exemple #2
0
void
parse_table (GstMpegtsSection * section, void* data)
{
  ATS_METADATA* metadata; 
  metadata = (ATS_METADATA*)data;

  g_type_class_ref (GST_TYPE_MPEGTS_SECTION_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_SECTION_TABLE_ID);
  g_type_class_ref (GST_TYPE_MPEGTS_RUNNING_STATUS);
  g_type_class_ref (GST_TYPE_MPEGTS_DESCRIPTOR_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_DESCRIPTOR_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_ATSC_DESCRIPTOR_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_ISDB_DESCRIPTOR_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_MISC_DESCRIPTOR_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_ISO639_AUDIO_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_SERVICE_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_TELETEXT_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_STREAM_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_SECTION_DVB_TABLE_ID);
  g_type_class_ref (GST_TYPE_MPEGTS_SECTION_ATSC_TABLE_ID);
  g_type_class_ref (GST_TYPE_MPEGTS_SECTION_SCTE_TABLE_ID);
  g_type_class_ref (GST_TYPE_MPEGTS_MODULATION_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_CODE_RATE);
  g_type_class_ref (GST_TYPE_MPEGTS_CABLE_OUTER_FEC_SCHEME);
  g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_TRANSMISSION_MODE);
  g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_GUARD_INTERVAL);
  g_type_class_ref (GST_TYPE_MPEGTS_TERRESTRIAL_HIERARCHY);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_LINKAGE_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_DVB_LINKAGE_HAND_OVER_TYPE);
  g_type_class_ref (GST_TYPE_MPEGTS_COMPONENT_STREAM_CONTENT);
  g_type_class_ref (GST_TYPE_MPEGTS_CONTENT_NIBBLE_HI);
  switch (GST_MPEGTS_SECTION_TYPE (section)) {
  case GST_MPEGTS_SECTION_PAT:
    dump_pat (section, metadata);
    break;
  case GST_MPEGTS_SECTION_PMT:
    dump_pmt(section, data);
    break;
  case GST_MPEGTS_SECTION_SDT:
    dump_sdt (section, metadata);
    break;
  default:
    break;
  }
}
/**
 * called when new section arrives.
 */
static gboolean
_iface_mdw_demux_data_handler_new_data (
    MdwDemuxDataHandler *self, 
    const guint16 pid, 
    const gsize size, 
    const guint8* data) 
{
    g_assert( (CONVERT_8_TO_16(data[1], data[2]) & 0x0fff) == (size - 3));


    /* only one fuction per time (thread safe)*/
    static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
    g_static_mutex_lock (&mutex);

    #define TABLE_ID data[0]
    g_printf("********NEW DUMP********\n");
    g_printf("PID: %u 0x%04X\n", pid, pid);
    g_printf("PACKET SIZE: %u\n", (guint) size);
    g_printf("\n");
    g_printf("table id: %u 0x%02X (%s)\n", TABLE_ID, TABLE_ID, table_id_to_name(TABLE_ID));
    g_printf("syntax indication: %u\n", (data[1] & 0x80)?1:0);
    g_printf("private indication: %u\n", (data[1] & 0x40)?1:0);
    g_printf("reserved: %u\n", (data[1] & 0x30) >> 4);
    g_printf("section lenght: %u\n", CONVERT_8_TO_16(data[1],data[2]) & 0x0fff);
   
    #define PAT_ID 0x00
    #define PMT_ID 0x02
    switch (TABLE_ID)  {
        case PAT_ID:
            dump_pat(data, size);
            break;
        case PMT_ID:
            dump_pmt(data, size);
            break;
        default:
            dump_generic(data, size);
            break;
    }

    g_printf("********END DUMP********\n");

    g_static_mutex_unlock (&mutex);
    return TRUE;
}