- if ((ret = av_new_packet(pkt, offset)) < 0)
- return ret;
-
- pkt->pos = pos;
-
- if (avio_read(pb, pkt->data, pkt->size) < pkt->size) {
- av_packet_unref(pkt);
- return AVERROR_EOF;
- }
+ if ((ret = av_get_packet(pb, pkt, offset)) != offset)
+ return ret < 0 ? ret : AVERROR_EOF;