aboutsummaryrefslogtreecommitdiffhomepage
path: root/video/image_writer.c
diff options
context:
space:
mode:
authorGravatar Martin Herkt <lachs0r@srsfckn.biz>2013-06-15 15:14:06 +0200
committerGravatar Martin Herkt <lachs0r@srsfckn.biz>2013-06-15 15:48:52 +0200
commit9b5a98676d18156d56fabae52dbc1d918e4401d4 (patch)
tree20ae40f29e87dd2238b9757b22c0d543fada22e1 /video/image_writer.c
parent3c12148668ac70366ec48af2c61777db744eba66 (diff)
image_writer: Add PNG filter option (default "mixed")
The use of filters prior to PNG compression can greatly improve compression ratio, with "mixed" (ImageMagick calls it "adaptive") typically achieving the best results.
Diffstat (limited to 'video/image_writer.c')
-rw-r--r--video/image_writer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/video/image_writer.c b/video/image_writer.c
index a65024124e..1791c01a38 100644
--- a/video/image_writer.c
+++ b/video/image_writer.c
@@ -46,6 +46,7 @@
const struct image_writer_opts image_writer_opts_defaults = {
.format = "jpg",
.png_compression = 7,
+ .png_filter = 5,
.jpeg_quality = 90,
.jpeg_optimize = 100,
.jpeg_smooth = 0,
@@ -65,6 +66,7 @@ const struct m_sub_options image_writer_conf = {
OPT_FLAG("jpeg-progressive", jpeg_progressive, 0),
OPT_FLAG("jpeg-baseline", jpeg_baseline, 0),
OPT_INTRANGE("png-compression", png_compression, 0, 0, 9),
+ OPT_INTRANGE("png-filter", png_filter, 0, 0, 5),
OPT_STRING("format", format, 0),
{0},
},
@@ -105,8 +107,10 @@ static int write_lavc(struct image_writer_ctx *ctx, mp_image_t *image, FILE *fp)
avctx->width = image->w;
avctx->height = image->h;
avctx->pix_fmt = imgfmt2pixfmt(image->imgfmt);
- if (ctx->writer->lavc_codec == AV_CODEC_ID_PNG)
+ if (ctx->writer->lavc_codec == AV_CODEC_ID_PNG) {
avctx->compression_level = ctx->opts->png_compression;
+ avctx->prediction_method = ctx->opts->png_filter;
+ }
if (avcodec_open2(avctx, codec, NULL) < 0) {
print_open_fail: