if (!tss->check_crc || mpegts_crc32(tss->section_buf, tss->section_h_size) == 0) tss->section_cb(tss->opaque, tss->section_buf, tss->section_h_size);
static void write_section_data(AVFormatContext *s, MpegTSFilter *tss1,                               const uint8_t *buf, int buf_size, int is_start){    MpegTSSectionFilter *tss = &tss1->u.section_filter;    int len;    unsigned int crc;        if (is_start) {        memcpy(tss->section_buf, buf, buf_size);        tss->section_index = buf_size;        tss->section_h_size = -1;        tss->end_of_section_reached = 0;    } else {        if (tss->end_of_section_reached)            return;        len = 4096 - tss->section_index;        if (buf_size < len)            len = buf_size;        memcpy(tss->section_buf + tss->section_index, buf, len);        tss->section_index += len;    }    /* compute section length if possible */    if (tss->section_h_size == -1 && tss->section_index >= 3) {        len = (((tss->section_buf[1] & 0xf) << 8) | tss->section_buf[2]) + 3;        if (len > 4096)            return;        tss->section_h_size = len;    }    if (tss->section_h_size != -1 && tss->section_index >= tss->section_h_size) {        if (tss->check_crc) {            crc = mpegts_crc32(tss->section_buf, tss->section_h_size);            if (crc != 0)                goto invalid_crc;        }        tss->section_cb(tss->opaque, tss->section_buf, tss->section_h_size);    invalid_crc:        tss->end_of_section_reached = 1;    }}