[FFmpeg-devel] [PATCH] flac: add GIF image support
leo60228
leo at 60228.dev
Thu Jan 28 23:56:17 EET 2021
The FLAC specification requires GIF images to contain their number of
colors. While I can't find a specific reference to that effect, I'm
assuming that's why GIF images were previously unsupported. This was
implemented by just writing AVPALETTE_COUNT for paletted images.
---
Changelog | 1 +
libavformat/flacenc.c | 10 ++++++----
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/Changelog b/Changelog
index e8ee74775e..3ff783c61d 100644
--- a/Changelog
+++ b/Changelog
@@ -61,6 +61,7 @@ version <next>:
- shear filter
- kirsch filter
- colortemperature filter
+- GIF support in FLAC
version 4.3:
diff --git a/libavformat/flacenc.c b/libavformat/flacenc.c
index 1c983486aa..c156d13b14 100644
--- a/libavformat/flacenc.c
+++ b/libavformat/flacenc.c
@@ -151,11 +151,16 @@ static int flac_write_picture(struct AVFormatContext *s, AVPacket *pkt)
avio_wb32(pb, st->codecpar->width);
avio_wb32(pb, st->codecpar->height);
+
if ((pixdesc = av_pix_fmt_desc_get(st->codecpar->format)))
avio_wb32(pb, av_get_bits_per_pixel(pixdesc));
else
avio_wb32(pb, 0);
- avio_wb32(pb, 0);
+
+ if (st->codecpar->format == AV_PIX_FMT_PAL8)
+ avio_wb32(pb, AVPALETTE_COUNT);
+ else
+ avio_wb32(pb, 0);
avio_wb32(pb, pkt->size);
avio_write(pb, pkt->data, pkt->size);
@@ -218,9 +223,6 @@ static int flac_init(struct AVFormatContext *s)
if (!(st->disposition & AV_DISPOSITION_ATTACHED_PIC)) {
av_log(s, AV_LOG_WARNING, "Video stream #%d is not an attached picture. Ignoring\n", i);
continue;
- } else if (st->codecpar->codec_id == AV_CODEC_ID_GIF) {
- av_log(s, AV_LOG_ERROR, "GIF image support is not implemented.\n");
- return AVERROR_PATCHWELCOME;
} else if (!c->write_header) {
av_log(s, AV_LOG_ERROR, "Can't write attached pictures without a header.\n");
return AVERROR(EINVAL);
--
2.28.0
More information about the ffmpeg-devel
mailing list