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

Function evc_read_packet

libavformat/evcdec.c:145–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143}
144
145static int evc_read_packet(AVFormatContext *s, AVPacket *pkt)
146{
147 int ret;
148 uint32_t nalu_size;
149 int au_end_found = 0;
150 EVCDemuxContext *const c = s->priv_data;
151
152 while(!au_end_found) {
153 uint8_t buf[EVC_NALU_LENGTH_PREFIX_SIZE];
154
155 if (avio_feof(s->pb))
156 goto end;
157
158 ret = ffio_ensure_seekback(s->pb, EVC_NALU_LENGTH_PREFIX_SIZE);
159 if (ret < 0)
160 return ret;
161
162 ret = avio_read(s->pb, buf, EVC_NALU_LENGTH_PREFIX_SIZE);
163 if (ret < 0)
164 return ret;
165 if (ret != EVC_NALU_LENGTH_PREFIX_SIZE)
166 return AVERROR_INVALIDDATA;
167
168 nalu_size = evc_read_nal_unit_length(buf, EVC_NALU_LENGTH_PREFIX_SIZE);
169 if (!nalu_size || nalu_size > INT_MAX)
170 return AVERROR_INVALIDDATA;
171
172 avio_seek(s->pb, -EVC_NALU_LENGTH_PREFIX_SIZE, SEEK_CUR);
173
174 ret = av_get_packet(s->pb, pkt, nalu_size + EVC_NALU_LENGTH_PREFIX_SIZE);
175 if (ret < 0)
176 return ret;
177 if (ret != (nalu_size + EVC_NALU_LENGTH_PREFIX_SIZE))
178 return AVERROR_INVALIDDATA;
179
180end:
181 ret = av_bsf_send_packet(c->bsf, pkt);
182 if (ret < 0) {
183 av_log(s, AV_LOG_ERROR, "Failed to send packet to "
184 "evc_frame_merge filter\n");
185 return ret;
186 }
187
188 ret = av_bsf_receive_packet(c->bsf, pkt);
189 if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
190 av_log(s, AV_LOG_ERROR, "evc_frame_merge filter failed to "
191 "send output packet\n");
192
193 if (ret != AVERROR(EAGAIN))
194 au_end_found = 1;
195 }
196
197 return ret;
198}
199
200static int evc_read_close(AVFormatContext *s)
201{

Callers

nothing calls this directly

Calls 9

avio_feofFunction · 0.85
ffio_ensure_seekbackFunction · 0.85
avio_readFunction · 0.85
avio_seekFunction · 0.85
av_get_packetFunction · 0.85
av_bsf_send_packetFunction · 0.85
av_logFunction · 0.85
av_bsf_receive_packetFunction · 0.85
evc_read_nal_unit_lengthFunction · 0.70

Tested by

no test coverage detected