[FFmpeg-devel] [PATCH] libavformat/riffenc: support raw avi for raw PAL8 or Gray8 pixel data

Ray 229135609 at qq.com
Mon Aug 16 12:54:44 EEST 2021


This is a my latest committed patch. Please ignore those similar mails I sent before.

> 2021年8月16日 下午5:01,rui.jiang <229135609 at qq.com> 写道:
> 
> add palette data in avi header when the input data is raw PAL8 or Gray8 pixel data and the output data is 8bit raw avi video;
> 
> Signed-off-by: rui.jiang <229135609 at qq.com>
> ---
> libavformat/riffenc.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/riffenc.c b/libavformat/riffenc.c
> index 43c8bf957a..bc654b3cd3 100644
> --- a/libavformat/riffenc.c
> +++ b/libavformat/riffenc.c
> @@ -228,7 +228,8 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecParameters *par,
>     pal_avi = !for_asf &&
>               (pix_fmt == AV_PIX_FMT_PAL8 ||
>                pix_fmt == AV_PIX_FMT_MONOWHITE ||
> -               pix_fmt == AV_PIX_FMT_MONOBLACK);
> +               pix_fmt == AV_PIX_FMT_MONOBLACK ||
> +               pix_fmt == AV_PIX_FMT_GRAY8);
> 
>     /* Size (not including the size of the color table or color masks) */
>     avio_wl32(pb, 40 + (ignore_extradata || pal_avi ? 0 : extradata_size));
> @@ -263,6 +264,13 @@ void ff_put_bmp_header(AVIOContext *pb, AVCodecParameters *par,
>                     avio_wl32(pb, 0xffffff);
>                 else if (i == 1 && pix_fmt == AV_PIX_FMT_MONOBLACK)
>                     avio_wl32(pb, 0xffffff);
> +                else if (pix_fmt == AV_PIX_FMT_PAL8 || pix_fmt == AV_PIX_FMT_GRAY8) {
> +                    /* Initialize palette */
> +                    avio_w8(pb,i);
> +                    avio_w8(pb,i);
> +                    avio_w8(pb,i);
> +                    avio_w8(pb,0);
> +                }
>                 else
>                     avio_wl32(pb, 0);
>             }
> -- 
> 2.30.1 (Apple Git-130)
> 



More information about the ffmpeg-devel mailing list