32 int loop_count, uint32_t *
palette)
39 if (sar.
num > 0 && sar.
den > 0) {
40 aspect = sar.
num * 64LL / sar.
den - 15;
41 if (aspect < 0 || aspect > 255)
54 for (i = 0; i < 256; i++) {
55 const uint32_t
v = palette[i] & 0xffffff;
65 if (loop_count >= 0 ) {
70 avio_write(pb,
"NETSCAPE2.0",
sizeof(
"NETSCAPE2.0") - 1);
99 "GIF muxer supports only a single video GIF stream.\n");
104 width = video_enc->
width;
105 height = video_enc->
height;
139 unsigned i, smallest_alpha = 0xff;
142 const uint32_t
v = palette[i];
143 if (v >> 24 < smallest_alpha) {
144 smallest_alpha = v >> 24;
145 transparent_color_index = i;
148 if (smallest_alpha < 128)
163 avio_w8(pb, transparent_color_index);
200 #define OFFSET(x) offsetof(GIFContext, x)
201 #define ENC AV_OPT_FLAG_ENCODING_PARAM
203 {
"loop",
"Number of times to loop the output: -1 - no loop, 0 - infinite loop",
OFFSET(
loop),
205 {
"final_delay",
"Force delay (in centiseconds) after the last frame",
OFFSET(last_delay),
220 .mime_type =
"image/gif",
228 .priv_class = &gif_muxer_class,