|
|
|
@ -234,6 +234,14 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, |
|
|
|
|
|
|
|
|
|
is_progressive = !!(avctx->flags & CODEC_FLAG_INTERLACED_DCT); |
|
|
|
|
switch(avctx->pix_fmt) { |
|
|
|
|
case PIX_FMT_RGBA64BE: |
|
|
|
|
bit_depth = 16; |
|
|
|
|
color_type = PNG_COLOR_TYPE_RGB_ALPHA; |
|
|
|
|
break; |
|
|
|
|
case PIX_FMT_RGB48BE: |
|
|
|
|
bit_depth = 16; |
|
|
|
|
color_type = PNG_COLOR_TYPE_RGB; |
|
|
|
|
break; |
|
|
|
|
case PIX_FMT_RGBA: |
|
|
|
|
bit_depth = 8; |
|
|
|
|
color_type = PNG_COLOR_TYPE_RGB_ALPHA; |
|
|
|
@ -418,6 +426,11 @@ AVCodec ff_png_encoder = { |
|
|
|
|
.priv_data_size = sizeof(PNGEncContext), |
|
|
|
|
.init = png_enc_init, |
|
|
|
|
.encode = encode_frame, |
|
|
|
|
.pix_fmts= (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGBA, PIX_FMT_PAL8, PIX_FMT_GRAY8, PIX_FMT_GRAY8A, PIX_FMT_GRAY16BE, PIX_FMT_MONOBLACK, PIX_FMT_NONE}, |
|
|
|
|
.pix_fmts= (const enum PixelFormat[]){PIX_FMT_RGB24, PIX_FMT_RGBA, |
|
|
|
|
PIX_FMT_RGB48BE, PIX_FMT_RGBA64BE, |
|
|
|
|
PIX_FMT_PAL8, |
|
|
|
|
PIX_FMT_GRAY8, PIX_FMT_GRAY8A, |
|
|
|
|
PIX_FMT_GRAY16BE, |
|
|
|
|
PIX_FMT_MONOBLACK, PIX_FMT_NONE}, |
|
|
|
|
.long_name= NULL_IF_CONFIG_SMALL("PNG image"), |
|
|
|
|
}; |
|
|
|
|