if (s->cur_offset == 0) {
if (s->fetch_timestamp){ s->fetch_timestamp=0;
int av_parser_parse(AVCodecParserContext *s,                     AVCodecContext *avctx,                    uint8_t **poutbuf, int *poutbuf_size,                     const uint8_t *buf, int buf_size,                    int64_t pts, int64_t dts){    int index, i, k;    uint8_t dummy_buf[FF_INPUT_BUFFER_PADDING_SIZE];        if (buf_size == 0) {        /* padding is always necessary even if EOF, so we add it here */        memset(dummy_buf, 0, sizeof(dummy_buf));        buf = dummy_buf;    } else {        /* add a new packet descriptor */        k = (s->cur_frame_start_index + 1) & (AV_PARSER_PTS_NB - 1);        s->cur_frame_start_index = k;        s->cur_frame_offset[k] = s->cur_offset;        s->cur_frame_pts[k] = pts;        s->cur_frame_dts[k] = dts;        /* fill first PTS/DTS */        if (s->cur_offset == 0) {            s->last_pts = pts;            s->last_dts = dts;        }    }    /* WARNING: the returned index can be negative */    index = s->parser->parser_parse(s, avctx, poutbuf, poutbuf_size, buf, buf_size);    /* update the file pointer */    if (*poutbuf_size) {        /* fill the data for the current frame */        s->frame_offset = s->last_frame_offset;        s->pts = s->last_pts;        s->dts = s->last_dts;                /* offset of the next frame */        s->last_frame_offset = s->cur_offset + index;        /* find the packet in which the new frame starts. It           is tricky because of MPEG video start codes           which can begin in one packet and finish in           another packet. In the worst case, an MPEG           video start code could be in 4 different           packets. */        k = s->cur_frame_start_index;        for(i = 0; i < AV_PARSER_PTS_NB; i++) {            if (s->last_frame_offset >= s->cur_frame_offset[k])                break;            k = (k - 1) & (AV_PARSER_PTS_NB - 1);        }        s->last_pts = s->cur_frame_pts[k];        s->last_dts = s->cur_frame_dts[k];    }    if (index < 0)        index = 0;    s->cur_offset += index;    return index;}