Lines Matching full:g
55 static int gif_find_frame_end(GIFParseContext *g, const uint8_t *buf, in gif_find_frame_end() argument
61 if (!g->state) { in gif_find_frame_end()
64 g->state = GIF_HEADER; in gif_find_frame_end()
65 g->found_sig++; in gif_find_frame_end()
67 g->state = GIF_EXTENSION; in gif_find_frame_end()
68 g->found_start = 1; in gif_find_frame_end()
70 g->state = GIF_IMAGE; in gif_find_frame_end()
72 g->state = 0; in gif_find_frame_end()
73 g->found_end = 1; in gif_find_frame_end()
74 g->found_sig = 0; in gif_find_frame_end()
76 g->found_sig = 0; in gif_find_frame_end()
80 if (g->state == GIF_HEADER) { in gif_find_frame_end()
81 if (g->index == 10) { in gif_find_frame_end()
82 g->gct_flag = !!(buf[index] & 0x80); in gif_find_frame_end()
83 g->gct_size = 3 * (1 << ((buf[index] & 0x07) + 1)); in gif_find_frame_end()
85 if (g->index >= 12 + g->gct_flag * g->gct_size) { in gif_find_frame_end()
86 g->state = 0; in gif_find_frame_end()
87 g->index = 0; in gif_find_frame_end()
88 g->gct_flag = 0; in gif_find_frame_end()
89 g->gct_size = 0; in gif_find_frame_end()
92 g->index++; in gif_find_frame_end()
93 } else if (g->state == GIF_EXTENSION) { in gif_find_frame_end()
94 if (g->found_start && g->found_end && g->found_sig) { in gif_find_frame_end()
96 g->found_start = 0; in gif_find_frame_end()
97 g->found_end = 0; in gif_find_frame_end()
98 g->index = 0; in gif_find_frame_end()
99 g->gct_flag = 0; in gif_find_frame_end()
100 g->gct_size = 0; in gif_find_frame_end()
101 g->state = 0; in gif_find_frame_end()
104 if (g->index == 1) { in gif_find_frame_end()
105 g->etype = buf[index]; in gif_find_frame_end()
107 if (g->index >= 2) { in gif_find_frame_end()
108 g->block_size = buf[index]; in gif_find_frame_end()
109 g->index = 0; in gif_find_frame_end()
110 g->state = GIF_EXTENSION_BLOCK; in gif_find_frame_end()
113 g->index++; in gif_find_frame_end()
114 } else if (g->state == GIF_IMAGE_BLOCK) { in gif_find_frame_end()
115 if (!g->index) in gif_find_frame_end()
116 g->block_size = buf[index]; in gif_find_frame_end()
117 if (g->index >= g->block_size) { in gif_find_frame_end()
118 g->index = 0; in gif_find_frame_end()
119 if (!g->block_size) { in gif_find_frame_end()
120 g->state = 0; in gif_find_frame_end()
121 g->found_end = 1; in gif_find_frame_end()
125 g->index++; in gif_find_frame_end()
126 } else if (g->state == GIF_EXTENSION_BLOCK) { in gif_find_frame_end()
127 if (g->etype == GIF_GCE_EXT_LABEL) { in gif_find_frame_end()
128 if (g->index == 0) in gif_find_frame_end()
129 g->delay = 0; in gif_find_frame_end()
130 if (g->index >= 1 && g->index <= 2) { in gif_find_frame_end()
131 g->delay |= buf[index] << (8 * (g->index - 1)); in gif_find_frame_end()
134 if (g->index >= g->block_size) { in gif_find_frame_end()
135 g->block_size = buf[index]; in gif_find_frame_end()
136 g->index = 0; in gif_find_frame_end()
137 if (!g->block_size) in gif_find_frame_end()
138 g->state = 0; in gif_find_frame_end()
141 g->index++; in gif_find_frame_end()
142 } else if (g->state == GIF_IMAGE) { in gif_find_frame_end()
143 if (g->index == 8) { in gif_find_frame_end()
144 g->gct_flag = !!(buf[index] & 0x80); in gif_find_frame_end()
145 g->gct_size = 3 * (1 << ((buf[index] & 0x07) + 1)); in gif_find_frame_end()
147 if (g->index >= 10 + g->gct_flag * g->gct_size) { in gif_find_frame_end()
148 g->state = GIF_IMAGE_BLOCK; in gif_find_frame_end()
149 g->index = 0; in gif_find_frame_end()
150 g->gct_flag = 0; in gif_find_frame_end()
151 g->gct_size = 0; in gif_find_frame_end()
154 g->index++; in gif_find_frame_end()
165 GIFParseContext *g = s->priv_data; in gif_parse() local
168 next = gif_find_frame_end(g, buf, buf_size, avctx); in gif_parse()
169 if (ff_combine_frame(&g->pc, next, &buf, &buf_size) < 0) { in gif_parse()
175 s->duration = g->delay; in gif_parse()