[FFmpeg-devel] [PATCH 2/2] avformat/concatdec: add support for very long line sizes
Nicolas George
george at nsup.org
Sun Feb 11 15:45:34 EET 2018
Marton Balint (2018-02-10):
> Fixes ticket #6761.
>
> Signed-off-by: Marton Balint <cus at passwd.hu>
> ---
> libavformat/concatdec.c | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c
> index 178fac86cb..3e41a62a36 100644
> --- a/libavformat/concatdec.c
> +++ b/libavformat/concatdec.c
> @@ -24,6 +24,7 @@
> #include "libavutil/opt.h"
> #include "libavutil/parseutils.h"
> #include "libavutil/timestamp.h"
> +#include "libavutil/bprint.h"
Nit: alphabetic order.
> #include "avformat.h"
> #include "internal.h"
> #include "url.h"
> @@ -386,18 +387,18 @@ static int concat_read_close(AVFormatContext *avf)
> static int concat_read_header(AVFormatContext *avf)
> {
> ConcatContext *cat = avf->priv_data;
> - uint8_t buf[4096];
> + AVBPrint bp;
> uint8_t *cursor, *keyword;
> - int ret, line = 0, i;
> + int line = 0, i;
> unsigned nb_files_alloc = 0;
> ConcatFile *file = NULL;
> - int64_t time = 0;
> + int64_t ret, time = 0;
>
> - while (1) {
> - if ((ret = ff_get_line(avf->pb, buf, sizeof(buf))) <= 0)
> - break;
> + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
> +
> + while ((ret = ff_read_line_to_bprint_overwrite(avf->pb, &bp)) >= 0) {
> line++;
> - cursor = buf;
> + cursor = bp.str;
> keyword = get_keyword(&cursor);
> if (!*keyword || *keyword == '#')
> continue;
> @@ -473,7 +474,7 @@ static int concat_read_header(AVFormatContext *avf)
> FAIL(AVERROR_INVALIDDATA);
> }
> }
> - if (ret < 0)
> + if (ret != AVERROR_EOF && ret < 0)
> goto fail;
> if (!cat->nb_files)
> FAIL(AVERROR_INVALIDDATA);
> @@ -499,9 +500,11 @@ static int concat_read_header(AVFormatContext *avf)
> MATCH_ONE_TO_ONE;
> if ((ret = open_file(avf, 0)) < 0)
> goto fail;
> + av_bprint_finalize(&bp, NULL);
> return 0;
>
> fail:
> + av_bprint_finalize(&bp, NULL);
> concat_read_close(avf);
> return ret;
> }
LGTM, thanks.
Regards,
--
Nicolas George
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180211/f949e736/attachment.sig>
More information about the ffmpeg-devel
mailing list