Exemple #1
0
static int
avc_parse_nal_units(sbuf_t *sb, const uint8_t *buf_in, int size)
{
  const uint8_t *p = buf_in;
  const uint8_t *end = p + size;
  const uint8_t *nal_start, *nal_end;

  //printf("CONVERT SIZE %d\n", size);

  size = 0;
  nal_start = avc_find_startcode(p, end);
  while (nal_start < end) {
    while(!*(nal_start++));
    nal_end = avc_find_startcode(nal_start, end);
    /*printf("%4d bytes  %5d : %d\n", nal_end - nal_start,
      nal_start - buf_in,
      nal_end   - buf_in);*/

    int l = nal_end - nal_start;

    if (l) {
      sbuf_put_be32(sb, l);
      sbuf_append(sb, nal_start, l);
      size += 4 + l;
    }
    nal_start = nal_end;
  }
  return size;
}
Exemple #2
0
static int avc_parse_nal_units(sbuf_t *sb, const uint8_t *buf_in, int size)
{
  const uint8_t *p = buf_in;
  const uint8_t *end = p + size;
  const uint8_t *nal_start, *nal_end;

  size = 0;
  nal_start = avc_find_startcode(p, end);
  for (;;) {
    while (nal_start < end && !*(nal_start++));
    if (nal_start == end)
      break;
    
    nal_end = avc_find_startcode(nal_start, end);

    int l = nal_end - nal_start;

    sbuf_put_be32(sb, l);
    sbuf_append(sb, nal_start, l);
    size += 4 + l;
    nal_start = nal_end;
  }
  return size;
}