X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fgif.c;h=1083710d5cdaea8576dfe3aa660d69e8d96e9651;hb=9a0ddd09e737545711e209591bc95891e3615543;hp=21de168262ce8e3d16e41f04bc6b84603cfd1600;hpb=bb270c0896b39e1ae9277355e3c120ed3feb64a3;p=ffmpeg diff --git a/libavformat/gif.c b/libavformat/gif.c index 21de168262c..1083710d5cd 100644 --- a/libavformat/gif.c +++ b/libavformat/gif.c @@ -1,20 +1,22 @@ /* - * Animated GIF encoder + * Animated GIF muxer * Copyright (c) 2000 Fabrice Bellard. * - * This library is free software; you can redistribute it and/or + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* @@ -113,9 +115,6 @@ static void gif_put_bits_rev(PutBitContext *s, int n, unsigned int value) unsigned int bit_buf; int bit_cnt; -#ifdef STATS - st_out_bit_counts[st_current_index] += n; -#endif // printf("put_bits=%d %x\n", n, value); assert(n == 32 || value < (1U << n)); @@ -187,7 +186,7 @@ static int gif_image_write_header(ByteIOContext *pb, /* the global palette */ if (!palette) { - put_buffer(pb, (unsigned char *)gif_clut, 216*3); + put_buffer(pb, (const unsigned char *)gif_clut, 216*3); for(i=0;i<((256-216)*3);i++) put_byte(pb, 0); } else { @@ -342,8 +341,10 @@ static int gif_write_header(AVFormatContext *s) // rate = video_enc->time_base.den; } - /* XXX: is it allowed ? seems to work so far... */ - video_enc->pix_fmt = PIX_FMT_RGB24; + if (video_enc->pix_fmt != PIX_FMT_RGB24) { + av_log(s, AV_LOG_ERROR, "ERROR: gif only handles the rgb24 pixel format. Use -pix_fmt rgb24.\n"); + return AVERROR_IO; + } gif_image_write_header(pb, width, height, loop_count, NULL); @@ -404,20 +405,7 @@ static int gif_write_trailer(AVFormatContext *s) return 0; } -/* better than nothing gif image writer */ -int gif_write(ByteIOContext *pb, AVImageInfo *info) -{ - gif_image_write_header(pb, info->width, info->height, AVFMT_NOOUTPUTLOOP, - (uint32_t *)info->pict.data[1]); - gif_image_write_image(pb, 0, 0, info->width, info->height, - info->pict.data[0], info->pict.linesize[0], - PIX_FMT_PAL8); - put_byte(pb, 0x3b); - put_flush_packet(pb); - return 0; -} - -static AVOutputFormat gif_oformat = { +AVOutputFormat gif_muxer = { "gif", "GIF Animation", "image/gif", @@ -429,12 +417,3 @@ static AVOutputFormat gif_oformat = { gif_write_packet, gif_write_trailer, }; - -extern AVInputFormat gif_iformat; - -int gif_init(void) -{ - av_register_output_format(&gif_oformat); - av_register_input_format(&gif_iformat); - return 0; -}