[FFmpeg-devel] [PATCH]Write transparent colour to pal8 gif

Michael Niedermayer michaelni at gmx.at
Wed Dec 7 03:40:31 CET 2011


On Wed, Dec 07, 2011 at 02:22:38AM +0100, Carl Eugen Hoyos wrote:
> Hi!
> 
> Attached allows to write transparent gif if the original file had a palette as 
> in ticket 715.
> Tested with:
> ffmpeg -i 11.png -vcodec gif -f image2 out.gif
> 
> Please comment, Carl Eugen

>  gif.c |   16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 20cc35d190a3b3e94fda434ac5aef2f5111e8ed7  patchgifalpha.diff
> diff --git a/libavcodec/gif.c b/libavcodec/gif.c
> index 8736f0f..655f2c7 100644
> --- a/libavcodec/gif.c
> +++ b/libavcodec/gif.c
> @@ -62,7 +62,7 @@ static int gif_image_write_header(AVCodecContext *avctx,
>                                    uint8_t **bytestream, uint32_t *palette)
>  {
>      int i;
> -    unsigned int v;
> +    unsigned int v, use_transparency = 0, alpha = 0;
>  
>      bytestream_put_buffer(bytestream, "GIF", 3);
>      bytestream_put_buffer(bytestream, "89a", 3);
> @@ -77,8 +77,22 @@ static int gif_image_write_header(AVCodecContext *avctx,
>      for(i=0;i<256;i++) {
>          v = palette[i];
>          bytestream_put_be24(bytestream, v);
> +        if ((v >> 24) < 0xFF - use_transparency) {
> +            use_transparency = 0xFF - (v >> 24);

id write
smallest_alpha = 0xFF;

if(smallest_alpha > v >> 24){
    smallest_alpha = v >> 24
    ...
}

if(smallest_alpha< ?){
    ...

either way, LGTM

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Rewriting code that is poorly written but fully understood is good.
Rewriting code that one doesnt understand is a sign that one is less smart
then the original author, trying to rewrite it will not make it better.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20111207/acd60b8a/attachment.asc>


More information about the ffmpeg-devel mailing list