[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