[FFmpeg-cvslog] flvenc: Check whether seeking back to the header succeeded
Björn Axelsson
git at videolan.org
Fri Dec 21 14:11:32 CET 2012
ffmpeg | branch: master | Björn Axelsson <bjorn.axelsson at intinor.se> | Thu Dec 13 14:48:25 2012 +0100| [1eaff98c8320d9ba48fbaec2a558f31f4104de98] | committer: Martin Storsjö
flvenc: Check whether seeking back to the header succeeded
The FLV muxer tries to update the header in write_trailer, which is
impossible if writing to a pipe or network stream. Don't write header
data if seeking to the header fails.
Signed-off-by: Martin Storsjö <martin at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1eaff98c8320d9ba48fbaec2a558f31f4104de98
---
libavformat/flvenc.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c
index 8aeea96..ff6d14a 100644
--- a/libavformat/flvenc.c
+++ b/libavformat/flvenc.c
@@ -403,10 +403,14 @@ static int flv_write_trailer(AVFormatContext *s)
file_size = avio_tell(pb);
/* update information */
- avio_seek(pb, flv->duration_offset, SEEK_SET);
- put_amf_double(pb, flv->duration / (double)1000);
- avio_seek(pb, flv->filesize_offset, SEEK_SET);
- put_amf_double(pb, file_size);
+ if (avio_seek(pb, flv->duration_offset, SEEK_SET) < 0)
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct duration.\n");
+ else
+ put_amf_double(pb, flv->duration / (double)1000);
+ if (avio_seek(pb, flv->filesize_offset, SEEK_SET) < 0)
+ av_log(s, AV_LOG_WARNING, "Failed to update header with correct filesize.\n");
+ else
+ put_amf_double(pb, file_size);
avio_seek(pb, file_size, SEEK_SET);
return 0;
More information about the ffmpeg-cvslog
mailing list