ffmpeg | branch: master | Andrey Utkin <andrey.krieger.ut...@gmail.com> | Wed Jul 23 16:12:39 2014 +0300| [b6a6459a24c6279502abeae064c28c1187fd0b0f] | committer: Michael Niedermayer
lavd/lavfi: work with non-mappable files for graph_file option Example of non-mappable file is /dev/stdin. Previously passing it as graph_file value returned error. Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b6a6459a24c6279502abeae064c28c1187fd0b0f --- libavdevice/lavfi.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c index d1904dd..f1c88ac 100644 --- a/libavdevice/lavfi.c +++ b/libavdevice/lavfi.c @@ -115,23 +115,23 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx) } if (lavfi->graph_filename) { - uint8_t *file_buf, *graph_buf; - size_t file_bufsize; - ret = av_file_map(lavfi->graph_filename, - &file_buf, &file_bufsize, 0, avctx); + AVBPrint graph_file_pb; + AVIOContext *avio = NULL; + ret = avio_open(&avio, lavfi->graph_filename, AVIO_FLAG_READ); if (ret < 0) - goto end; - - /* create a 0-terminated string based on the read file */ - graph_buf = av_malloc(file_bufsize + 1); - if (!graph_buf) { - av_file_unmap(file_buf, file_bufsize); - FAIL(AVERROR(ENOMEM)); + FAIL(ret); + av_bprint_init(&graph_file_pb, 0, AV_BPRINT_SIZE_UNLIMITED); + ret = avio_read_to_bprint(avio, &graph_file_pb, INT_MAX); + avio_close(avio); + av_bprint_chars(&graph_file_pb, '\0', 1); + if (!ret && !av_bprint_is_complete(&graph_file_pb)) + ret = AVERROR(ENOMEM); + if (ret) { + av_bprint_finalize(&graph_file_pb, NULL); + FAIL(ret); } - memcpy(graph_buf, file_buf, file_bufsize); - graph_buf[file_bufsize] = 0; - av_file_unmap(file_buf, file_bufsize); - lavfi->graph_str = graph_buf; + if ((ret = av_bprint_finalize(&graph_file_pb, &lavfi->graph_str))) + FAIL(ret); } if (!lavfi->graph_str) _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog