static int y4m_read_stream_header_line_cb(y4m_cb_reader_t * fd, y4m_stream_info_t *i,char *line,int n) { int err; /* start with a clean slate */ y4m_clear_stream_info(i); /* read the header line */ for (; n < Y4M_LINE_MAX; n++) { if (y4m_read_cb(fd, line+n, 1)) return Y4M_ERR_SYSTEM; if (line[n] == '\n') { line[n] = '\0'; /* Replace linefeed by end of string */ break; } } /* look for keyword in header */ if (strncmp(line, Y4M_MAGIC, strlen(Y4M_MAGIC))) return Y4M_ERR_MAGIC; if (n >= Y4M_LINE_MAX) return Y4M_ERR_HEADER; if ((err = y4m_parse_stream_tags(line + strlen(Y4M_MAGIC), i)) != Y4M_OK) return err; return Y4M_OK; }
int y4m_read_stream_header(int fd, y4m_stream_info_t *i) { char line[Y4M_LINE_MAX]; char *p; int n; int err; /* start with a clean slate */ y4m_clear_stream_info(i); /* read the header line */ for (n = 0, p = line; n < Y4M_LINE_MAX; n++, p++) { if (read(fd, p, 1) < 1) return Y4M_ERR_SYSTEM; if (*p == '\n') { *p = '\0'; /* Replace linefeed by end of string */ break; } } if (n >= Y4M_LINE_MAX) return Y4M_ERR_HEADER; /* look for keyword in header */ if (strncmp(line, Y4M_MAGIC, strlen(Y4M_MAGIC))) return Y4M_ERR_MAGIC; if ((err = y4m_parse_stream_tags(line + strlen(Y4M_MAGIC), i)) != Y4M_OK) return err; return Y4M_OK; }
void y4m_init_stream_info(y4m_stream_info_t *info) { if (info == NULL) return; /* init substructures */ y4m_init_xtag_list(&(info->x_tags)); /* set defaults */ y4m_clear_stream_info(info); }