static int dirac_parse(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size) { DiracParseContext *pc = s->priv_data; int next; *poutbuf = NULL; *poutbuf_size = 0; if (s->flags & PARSER_FLAG_COMPLETE_FRAMES) { next = buf_size; *poutbuf = buf; *poutbuf_size = buf_size; /* Assume that data has been packetized into an encapsulation unit. */ } else { next = find_frame_end(pc, buf, buf_size); if (!pc->is_synced && next == -1) { /* No frame start found yet. So throw away the entire buffer. */ return buf_size; } if (dirac_combine_frame(s, avctx, next, &buf, &buf_size) < 0) { return buf_size; } } *poutbuf = buf; *poutbuf_size = buf_size; return next; }
static int jpeg_parse(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size) { MJPEGParserContext *m = (MJPEGParserContext *)s->priv_data; ParseContext *pc = &m->pc; int next; if(s->flags & PARSER_FLAG_COMPLETE_FRAMES){ next= buf_size; }else{ next= find_frame_end(m, buf, buf_size); if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) { *poutbuf = NULL; *poutbuf_size = 0; return buf_size; } } *poutbuf = buf; *poutbuf_size = buf_size; return next; }
static int jpeg_parse(AVCodecParserContext *s, AVCodecContext *avctx, const uint8_t **poutbuf, int *poutbuf_size, const uint8_t *buf, int buf_size) { ParseContext *pc = s->priv_data; int next; next= find_frame_end(pc, buf, buf_size); if (ff_combine_frame(pc, next, &buf, &buf_size) < 0) { *poutbuf = NULL; *poutbuf_size = 0; return buf_size; } *poutbuf = buf; *poutbuf_size = buf_size; return next; }