[FFmpeg-trac] #8584(ffmpeg:new): Wrong disposal on first frame of transparent gif

FFmpeg trac at avcodec.org
Thu Mar 26 23:47:40 EET 2020


#8584: Wrong disposal on first frame of transparent gif
-------------------------------------+-------------------------------------
             Reporter:  RedError     |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  ffmpeg       |                  Version:  git-
             Keywords:  gif,         |  master
  disposal, tranparency, generated   |               Blocked By:
  GIF files                          |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 When creating a transparent gif with ffmpeg, the first frame has a wrong
 "Gif Disposal" value ("Do Not Dispose" instead of "Restore to Background")
 and thus is always overlayed on the second frame.

 How to reproduce:
 {{{
 ffmpeg -i "slowsmoke.gif" -gifflags 0 -vf "[0:v] split [a][b]; [a]
 palettegen [p]; [b][p] paletteuse [r]" "slowsmoke ffmpeg.gif" -y
 }}}
 Input:
 [[Image(https://i.ibb.co/mzSx63y/slowsmoke.gif)]]
 Output:
 [[Image(https://i.imgur.com/cnd96Wq.gif)]]
 ffmpeg version git-2020-03-24-e5d25d1
 Downloaded from https://ffmpeg.zeranoe.com/builds/

 Transparent gif "slowsmoke.gif" provided in attachment, also available
 here: https://i.ibb.co/mzSx63y/slowsmoke.gif

 Additional details:
 * Gimp shows the second frame as being "combine". Editing that information
 allows the gif to be fixed. This proves that it is indeed the frame
 disposal that is in cause.
 [[Image(https://i.imgur.com/GFD9AgG.png)]]
 * -gifflags +offsetting leaves additional traces (by reducing the redraw
 area), so it's better disabled with -gifflags 0 like I did, but that
 doesn't actually fix the underlying first frame disposal issue.
 [[Image(https://i.imgur.com/MNtPeA1.gif)]]
 * -gifflags -transdiff or +transdiff doesn't actually do anything for
 transparent gifs.

 Attached:
 Report file from ffmpeg
 Input image (transparent gif with movement between the first two frames)

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8584>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list