MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / seq_parse_frame_data

Function seq_parse_frame_data

libavformat/tiertexseq.c:124–181  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124static int seq_parse_frame_data(SeqDemuxContext *seq, ByteIOContext *pb)
125{
126 unsigned int offset_table[4], buffer_num[4];
127 TiertexSeqFrameBuffer *seq_buffer;
128 int i, e, err;
129
130 seq->current_frame_offs += SEQ_FRAME_SIZE;
131 url_fseek(pb, seq->current_frame_offs, SEEK_SET);
132
133 /* sound data */
134 seq->current_audio_data_offs = get_le16(pb);
135 if (seq->current_audio_data_offs) {
136 seq->current_audio_data_size = SEQ_AUDIO_BUFFER_SIZE * 2;
137 } else {
138 seq->current_audio_data_size = 0;
139 }
140
141 /* palette data */
142 seq->current_pal_data_offs = get_le16(pb);
143 if (seq->current_pal_data_offs) {
144 seq->current_pal_data_size = 768;
145 } else {
146 seq->current_pal_data_size = 0;
147 }
148
149 /* video data */
150 for (i = 0; i < 4; i++)
151 buffer_num[i] = get_byte(pb);
152
153 for (i = 0; i < 4; i++)
154 offset_table[i] = get_le16(pb);
155
156 for (i = 0; i < 3; i++) {
157 if (offset_table[i]) {
158 for (e = i + 1; e < 3 && offset_table[e] == 0; e++);
159 err = seq_fill_buffer(seq, pb, buffer_num[1 + i],
160 offset_table[i],
161 offset_table[e] - offset_table[i]);
162 if (err)
163 return err;
164 }
165 }
166
167 if (buffer_num[0] != 255) {
168 if (buffer_num[0] >= SEQ_NUM_FRAME_BUFFERS)
169 return AVERROR_INVALIDDATA;
170
171 seq_buffer = &seq->frame_buffers[buffer_num[0]];
172 seq->current_video_data_size = seq_buffer->fill_size;
173 seq->current_video_data_ptr = seq_buffer->data;
174 seq_buffer->fill_size = 0;
175 } else {
176 seq->current_video_data_size = 0;
177 seq->current_video_data_ptr = 0;
178 }
179
180 return 0;
181}

Callers 2

seq_read_headerFunction · 0.85
seq_read_packetFunction · 0.85

Calls 4

url_fseekFunction · 0.85
seq_fill_bufferFunction · 0.85
get_le16Function · 0.70
get_byteFunction · 0.70

Tested by

no test coverage detected