Lines Matching refs:smk
93 SmackerContext *smk = s->priv_data; in smacker_read_header() local
106 smk->frames = avio_rl32(pb); in smacker_read_header()
115 smk->frames++; in smacker_read_header()
116 if (smk->frames > 0xFFFFFF) { in smacker_read_header()
117 av_log(s, AV_LOG_ERROR, "Too many frames: %"PRIu32"\n", smk->frames); in smacker_read_header()
134 smk->videoindex = st->index; in smacker_read_header()
143 st->duration = smk->frames; in smacker_read_header()
168 smk->indexes[i] = -1; in smacker_read_header()
176 smk->indexes[i] = ast->index; in smacker_read_header()
202 smk->duration_size[i] = 4; in smacker_read_header()
211 st->priv_data = av_malloc_array(smk->frames, sizeof(*smk->frm_size) + in smacker_read_header()
212 sizeof(*smk->frm_flags)); in smacker_read_header()
215 smk->frm_size = st->priv_data; in smacker_read_header()
216 smk->frm_flags = (void*)(smk->frm_size + smk->frames); in smacker_read_header()
219 for (i = 0; i < smk->frames; i++) { in smacker_read_header()
220 smk->frm_size[i] = avio_rl32(pb); in smacker_read_header()
222 if ((ret = ffio_read_size(pb, smk->frm_flags, smk->frames)) < 0 || in smacker_read_header()
234 SmackerContext *smk = s->priv_data; in smacker_read_packet() local
238 if (avio_feof(s->pb) || smk->cur_frame >= smk->frames) in smacker_read_packet()
242 if (!smk->next_audio_index) { in smacker_read_packet()
243 smk->frame_size = smk->frm_size[smk->cur_frame] & (~3); in smacker_read_packet()
244 smk->next_frame_pos = avio_tell(s->pb) + smk->frame_size; in smacker_read_packet()
245 flags = smk->frm_flags[smk->cur_frame]; in smacker_read_packet()
246 smk->flags = flags >> 1; in smacker_read_packet()
250 uint8_t *pal = smk->pal; in smacker_read_packet()
256 if (size > smk->frame_size) { in smacker_read_packet()
260 smk->frame_size -= size--; in smacker_read_packet()
294 smk->new_palette = 1; in smacker_read_packet()
298 for (int i = smk->next_audio_index; i < 7; i++) { in smacker_read_packet()
299 if (smk->flags & (1 << i)) { in smacker_read_packet()
303 if ((int)size < 4 + smk->duration_size[i] || size > smk->frame_size) { in smacker_read_packet()
308 smk->frame_size -= size; in smacker_read_packet()
311 if (smk->indexes[i] < 0 || in smacker_read_packet()
312 s->streams[smk->indexes[i]]->discard >= AVDISCARD_ALL) { in smacker_read_packet()
313 smk->aud_pts[i] += smk->duration_size[i] ? avio_rl32(s->pb) in smacker_read_packet()
315 avio_skip(s->pb, size - smk->duration_size[i]); in smacker_read_packet()
322 pkt->stream_index = smk->indexes[i]; in smacker_read_packet()
323 pkt->pts = smk->aud_pts[i]; in smacker_read_packet()
324 pkt->duration = smk->duration_size[i] ? AV_RL32(pkt->data) in smacker_read_packet()
326 smk->aud_pts[i] += pkt->duration; in smacker_read_packet()
327 smk->next_audio_index = i + 1; in smacker_read_packet()
332 if (s->streams[smk->videoindex]->discard >= AVDISCARD_ALL) { in smacker_read_packet()
336 if (smk->frame_size >= INT_MAX/2) { in smacker_read_packet()
340 if ((ret = av_new_packet(pkt, smk->frame_size + 769)) < 0) in smacker_read_packet()
342 flags = smk->new_palette; in smacker_read_packet()
343 if (smk->frm_size[smk->cur_frame] & 1) in smacker_read_packet()
346 memcpy(pkt->data + 1, smk->pal, 768); in smacker_read_packet()
347 ret = ffio_read_size(s->pb, pkt->data + 769, smk->frame_size); in smacker_read_packet()
350 pkt->stream_index = smk->videoindex; in smacker_read_packet()
351 pkt->pts = smk->cur_frame; in smacker_read_packet()
352 smk->next_audio_index = 0; in smacker_read_packet()
353 smk->new_palette = 0; in smacker_read_packet()
354 smk->cur_frame++; in smacker_read_packet()
358 avio_seek(s->pb, smk->next_frame_pos, SEEK_SET); in smacker_read_packet()
359 smk->next_audio_index = 0; in smacker_read_packet()
360 smk->cur_frame++; in smacker_read_packet()
367 SmackerContext *smk = s->priv_data; in smacker_read_seek() local
380 smk->cur_frame = 0; in smacker_read_seek()
381 smk->next_audio_index = 0; in smacker_read_seek()
382 smk->new_palette = 0; in smacker_read_seek()
383 memset(smk->pal, 0, sizeof(smk->pal)); in smacker_read_seek()
384 memset(smk->aud_pts, 0, sizeof(smk->aud_pts)); in smacker_read_seek()