Lines Matching refs:seq
70 /* there's no real header in a .seq file, the only thing they have in common */
83 static int seq_init_frame_buffers(SeqDemuxContext *seq, AVIOContext *pb)
95 seq_buffer = &seq->frame_buffers[i];
103 seq->frame_buffers_count = i;
107 static int seq_fill_buffer(SeqDemuxContext *seq, AVIOContext *pb, int buffer_num, unsigned int data_offs, int data_size)
114 seq_buffer = &seq->frame_buffers[buffer_num];
118 avio_seek(pb, seq->current_frame_offs + data_offs, SEEK_SET);
126 static int seq_parse_frame_data(SeqDemuxContext *seq, AVIOContext *pb)
132 seq->current_frame_offs += SEQ_FRAME_SIZE;
133 avio_seek(pb, seq->current_frame_offs, SEEK_SET);
136 seq->current_audio_data_offs = avio_rl16(pb);
137 if (seq->current_audio_data_offs) {
138 seq->current_audio_data_size = SEQ_AUDIO_BUFFER_SIZE * 2;
140 seq->current_audio_data_size = 0;
144 seq->current_pal_data_offs = avio_rl16(pb);
145 if (seq->current_pal_data_offs) {
146 seq->current_pal_data_size = 768;
148 seq->current_pal_data_size = 0;
161 err = seq_fill_buffer(seq, pb, buffer_num[1 + i],
173 seq_buffer = &seq->frame_buffers[buffer_num[0]];
174 seq->current_video_data_size = seq_buffer->fill_size;
175 seq->current_video_data_ptr = seq_buffer->data;
178 seq->current_video_data_size = 0;
179 seq->current_video_data_ptr = 0;
188 SeqDemuxContext *seq = s->priv_data;
191 av_freep(&seq->frame_buffers[i].data);
199 SeqDemuxContext *seq = s->priv_data;
204 rc = seq_init_frame_buffers(seq, pb);
208 seq->current_frame_offs = 0;
212 rc = seq_parse_frame_data(seq, pb);
217 seq->current_frame_pts = 0;
219 seq->audio_buffer_full = 0;
227 seq->video_stream_index = st->index;
241 seq->audio_stream_index = st->index;
257 SeqDemuxContext *seq = s->priv_data;
260 if (!seq->audio_buffer_full) {
261 rc = seq_parse_frame_data(seq, pb);
266 if (seq->current_pal_data_size + seq->current_video_data_size != 0) {
267 rc = av_new_packet(pkt, 1 + seq->current_pal_data_size
268 + seq->current_video_data_size);
273 if (seq->current_pal_data_size) {
275 avio_seek(pb, seq->current_frame_offs + seq->current_pal_data_offs, SEEK_SET);
276 if (avio_read(pb, &pkt->data[1], seq->current_pal_data_size) != seq->current_pal_data_size)
279 if (seq->current_video_data_size) {
281 memcpy(&pkt->data[1 + seq->current_pal_data_size],
282 seq->current_video_data_ptr,
283 seq->current_video_data_size);
285 pkt->stream_index = seq->video_stream_index;
286 pkt->pts = seq->current_frame_pts;
289 seq->audio_buffer_full = 1;
295 if (seq->current_audio_data_offs == 0) /* end of data reached */
298 avio_seek(pb, seq->current_frame_offs + seq->current_audio_data_offs, SEEK_SET);
299 rc = av_get_packet(pb, pkt, seq->current_audio_data_size);
303 pkt->stream_index = seq->audio_stream_index;
304 seq->current_frame_pts++;
306 seq->audio_buffer_full = 0;