diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-09-04 12:36:41 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-09-04 17:34:26 +0200 |
commit | a162fa0772ab79fab503a7f2a5c7bb63e970cbfc (patch) | |
tree | d95fce4658d26e15fa7d4196edd3785765d364f0 /libavformat | |
parent | c8e38950e3aad0304ec861aa4985b866dceddc7c (diff) | |
download | ffmpeg-a162fa0772ab79fab503a7f2a5c7bb63e970cbfc.tar.gz |
avformat/yuv4mpegenc: Simplify writing global and packet headers
YUV4MPEG writes a string as header for both the file itself as well as
for every frame; these strings contain magic strings and these were up
until now included in the string to write via %s. Yet they are compile
time constants, so one can use the compile-time string concatentation
instead of inserting these strings at runtime.
Furthermore, the global header has been written via snprintf() to
a local buffer first before writing it. This can be simplified by using
avio_printf().
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/yuv4mpegenc.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c index c4781042bd..fdd020e13b 100644 --- a/libavformat/yuv4mpegenc.c +++ b/libavformat/yuv4mpegenc.c @@ -24,18 +24,15 @@ #include "internal.h" #include "yuv4mpeg.h" -#define Y4M_LINE_MAX 256 - static int yuv4_write_header(AVFormatContext *s) { AVStream *st; AVIOContext *pb = s->pb; int width, height; - int raten, rated, aspectn, aspectd, n; + int raten, rated, aspectn, aspectd, ret; char inter; const char *colorspace = ""; const char *colorrange = ""; - char buf[Y4M_LINE_MAX + 1]; int field_order; st = s->streams[0]; @@ -170,19 +167,15 @@ static int yuv4_write_header(AVFormatContext *s) break; } - /* construct stream header, if this is the first frame */ - n = snprintf(buf, Y4M_LINE_MAX, "%s W%d H%d F%d:%d I%c A%d:%d%s%s\n", - Y4M_MAGIC, width, height, raten, rated, inter, - aspectn, aspectd, colorspace, colorrange); - - if (n < 0) { + ret = avio_printf(pb, Y4M_MAGIC " W%d H%d F%d:%d I%c A%d:%d%s%s\n", + width, height, raten, rated, inter, + aspectn, aspectd, colorspace, colorrange); + if (ret < 0) { av_log(s, AV_LOG_ERROR, "Error. YUV4MPEG stream header write failed.\n"); - return AVERROR(EIO); + return ret; } - avio_write(pb, buf, strlen(buf)); - return 0; } @@ -200,7 +193,7 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) /* construct frame header */ - avio_printf(s->pb, "%s\n", Y4M_FRAME_MAGIC); + avio_printf(s->pb, Y4M_FRAME_MAGIC "\n"); width = st->codecpar->width; height = st->codecpar->height; |