diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-02-20 22:54:21 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-02-20 22:54:21 +0100 |
commit | c4dc6c4c86a052b7ba53fa7ae0c1b0643ad70d0b (patch) | |
tree | 787f9105e6bbe968faaf7b083b03409f655147d1 | |
parent | 624fb5f96544fd39d69abc5cadbba3f801d673b1 (diff) | |
download | ffmpeg-c4dc6c4c86a052b7ba53fa7ae0c1b0643ad70d0b.tar.gz |
Fix bits_per_coded_sample when encoding png with frame-level multithreading.
Fixes ticket #2290.
-rw-r--r-- | libavcodec/pngenc.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c index 7ba14b2d0d..a401c78f77 100644 --- a/libavcodec/pngenc.c +++ b/libavcodec/pngenc.c @@ -244,12 +244,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, color_type = PNG_COLOR_TYPE_RGB; break; case AV_PIX_FMT_RGBA: - avctx->bits_per_coded_sample = 32; bit_depth = 8; color_type = PNG_COLOR_TYPE_RGB_ALPHA; break; case AV_PIX_FMT_RGB24: - avctx->bits_per_coded_sample = 24; bit_depth = 8; color_type = PNG_COLOR_TYPE_RGB; break; @@ -258,7 +256,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, color_type = PNG_COLOR_TYPE_GRAY; break; case AV_PIX_FMT_GRAY8: - avctx->bits_per_coded_sample = 0x28; bit_depth = 8; color_type = PNG_COLOR_TYPE_GRAY; break; @@ -267,12 +264,10 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, color_type = PNG_COLOR_TYPE_GRAY_ALPHA; break; case AV_PIX_FMT_MONOBLACK: - avctx->bits_per_coded_sample = bit_depth = 1; color_type = PNG_COLOR_TYPE_GRAY; break; case AV_PIX_FMT_PAL8: - avctx->bits_per_coded_sample = bit_depth = 8; color_type = PNG_COLOR_TYPE_PALETTE; break; @@ -437,6 +432,23 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, static av_cold int png_enc_init(AVCodecContext *avctx){ PNGEncContext *s = avctx->priv_data; + switch(avctx->pix_fmt) { + case AV_PIX_FMT_RGBA: + avctx->bits_per_coded_sample = 32; + break; + case AV_PIX_FMT_RGB24: + avctx->bits_per_coded_sample = 24; + break; + case AV_PIX_FMT_GRAY8: + avctx->bits_per_coded_sample = 0x28; + break; + case AV_PIX_FMT_MONOBLACK: + avctx->bits_per_coded_sample = 1; + break; + case AV_PIX_FMT_PAL8: + avctx->bits_per_coded_sample = 8; + } + avcodec_get_frame_defaults(&s->picture); avctx->coded_frame= &s->picture; ff_dsputil_init(&s->dsp, avctx); |