Пример #1
0
/*****************************************************************************
 * main
 *****************************************************************************/
int main(int i_argc, char* pa_argv[])
{
    int i_fd;
    int ret = 1;
    uint8_t data[188];
    dvbpsi_t *p_dvbpsi;
    bool b_ok;

    if(i_argc != 2)
        return 1;

    i_fd = open(pa_argv[1], 0);
    if (i_fd < 0)
        return 1;

    p_dvbpsi = dvbpsi_new(&message, DVBPSI_MSG_DEBUG);
    if (p_dvbpsi == NULL)
        goto out;

    if (!dvbpsi_chain_demux_new(p_dvbpsi, NewSubtable, DelSubtable, NULL))
        goto out;

    b_ok = ReadPacket(i_fd, data);

    while(b_ok)
    {
        uint16_t i_pid = ((uint16_t)(data[1] & 0x1f) << 8) + data[2];
        if(i_pid == 0x11)
            dvbpsi_packet_push(p_dvbpsi, data);
        b_ok = ReadPacket(i_fd, data);
    }

    ret = 0;

out:
    if (p_dvbpsi)
    {
        if (!dvbpsi_chain_demux_delete(p_dvbpsi))
            ret = 1;
        dvbpsi_delete(p_dvbpsi);
    }
    close(i_fd);
    return ret;
}
Пример #2
0
/*****************************************************************************
 * main
 *****************************************************************************/
int main(int argc, char *argv[])
{
	AStdData *fp = Stdin;
	AStdFile _fp;
	uint8_t  data[188];
	dvbpsi_t *p_dvbpsi;
	bool b_ok;

	(void)DumpDescriptors;

	if (argc > 1) {
		if (_fp.open(argv[1], "rb")) fp = &_fp;
		else {
			fprintf(stderr, "Failed to open file '%s' for reading\n", argv[1]);
			exit(1);
		}
	}

	p_dvbpsi = dvbpsi_new(&message, DVBPSI_MSG_WARN);
	if (p_dvbpsi) {
		if (dvbpsi_AttachDemux(p_dvbpsi, newsubtable, NULL)) {
			b_ok = ReadPacket(*fp, data, sizeof(data));

			while (b_ok)
			{
				uint16_t pid = ((uint16_t)(data[1] & 0x1f) << 8) + data[2];
				if (pid == 0x12) dvbpsi_packet_push(p_dvbpsi, data);
				b_ok = ReadPacket(*fp, data, sizeof(data));
			}

			dvbpsi_DetachDemux(p_dvbpsi);
		}
		else fprintf(stderr, "Failed to attach demux to dvbpsi handler\n");

		dvbpsi_delete(p_dvbpsi);
	}
	else fprintf(stderr, "Failed to create new dvbpsi handler\n");

	_fp.close();

	return 0;
}
Пример #3
0
/*****************************************************************************
 * main
 *****************************************************************************/
int main(int i_argc, char* pa_argv[])
{
  int i_fd;
  uint8_t data[188];
  dvbpsi_t *p_dvbpsi;
  bool b_ok;

  if (i_argc != 2)
      return 1;

  i_fd = open(pa_argv[1], 0);
  if (i_fd < 0)
      return 1;

  p_dvbpsi = dvbpsi_new(&message, DVBPSI_MSG_DEBUG);
  if (p_dvbpsi == NULL)
      goto out;

  if (!dvbpsi_pat_attach(p_dvbpsi, DumpPAT, NULL))
      goto out;

  b_ok = ReadPacket(i_fd, data);

  while(b_ok)
  {
    uint16_t i_pid = ((uint16_t)(data[1] & 0x1f) << 8) + data[2];
    if(i_pid == 0x0)
      dvbpsi_packet_push(p_dvbpsi, data);
    b_ok = ReadPacket(i_fd, data);
  }

out:
  if (p_dvbpsi)
  {
    dvbpsi_pat_detach(p_dvbpsi);
    dvbpsi_delete(p_dvbpsi);
  }
  close(i_fd);

  return 0;
}