34 #define SMACKER_PAL 0x01
35 #define SMACKER_FLAG_RING_FRAME 0x01
84 0x00, 0x04, 0x08, 0x0C, 0x10, 0x14, 0x18, 0x1C,
85 0x20, 0x24, 0x28, 0x2C, 0x30, 0x34, 0x38, 0x3C,
86 0x41, 0x45, 0x49, 0x4D, 0x51, 0x55, 0x59, 0x5D,
87 0x61, 0x65, 0x69, 0x6D, 0x71, 0x75, 0x79, 0x7D,
88 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9A, 0x9E,
89 0xA2, 0xA6, 0xAA, 0xAE, 0xB2, 0xB6, 0xBA, 0xBE,
90 0xC3, 0xC7, 0xCB, 0xCF, 0xD3, 0xD7, 0xDB, 0xDF,
91 0xE3, 0xE7, 0xEB, 0xEF, 0xF3, 0xF7, 0xFB, 0xFF
123 if (smk->
pts_inc > INT_MAX / 100) {
131 for(i = 0; i < 7; i++)
145 for(i = 0; i < 7; i++) {
151 if(smk->
frames > 0xFFFFFF) {
166 for(i = 0; i < smk->
frames; i++) {
169 for(i = 0; i < smk->
frames; i++) {
194 for(i = 0; i < 7; i++) {
232 "Cannot allocate %"PRIu32
" bytes of extradata\n",
275 int size, sz, t, off, j, pos;
279 memcpy(oldpal, pal, 768);
282 if(size + 1 > frame_size)
291 sz += (t & 0x7F) + 1;
292 pal += ((t & 0x7F) + 1) * 3;
296 if (off + j > 0x100) {
298 "Invalid palette update, offset=%d length=%d extends beyond palette size\n",
303 while(j-- && sz < 256) {
304 *pal++ = oldpal[off + 0];
305 *pal++ = oldpal[off + 1];
306 *pal++ = oldpal[off + 2];
323 for(i = 0; i < 7; i++) {
329 if (!size || size + 4LL > frame_size) {
348 if (frame_size < 0 || frame_size >= INT_MAX/2)
354 pkt->
data[0] = palchange;
355 memcpy(pkt->
data + 1, smk->
pal, 768);
357 if(ret != frame_size)
361 pkt->
size = ret + 769;
385 for(i = 0; i < 7; i++)