int ret, size;
while (!url_feof(pb)) {
int copyhdrsize = ctx->rtjpg_video ? HDRSIZE : 0;
+ uint64_t pos = url_ftell(pb);
ret = get_buffer(pb, hdr, HDRSIZE);
if (ret <= 0)
return ret ? ret : -1;
ret = av_new_packet(pkt, copyhdrsize + size);
if (ret < 0)
return ret;
- pkt->pos = url_ftell(pb) - copyhdrsize;
+ // HACK: we have no idea if it is a keyframe,
+ // but if we mark none seeking will not work at all.
+ pkt->flags |= PKT_FLAG_KEY;
+ pkt->pos = pos;
pkt->pts = AV_RL32(&hdr[4]);
pkt->stream_index = ctx->v_id;
memcpy(pkt->data, hdr, copyhdrsize);
break;
}
ret = av_get_packet(pb, pkt, size);
+ pkt->flags |= PKT_FLAG_KEY;
+ pkt->pos = pos;
pkt->pts = AV_RL32(&hdr[4]);
pkt->stream_index = ctx->a_id;
return ret;
nuv_packet,
NULL,
NULL,
+ .flags = AVFMT_GENERIC_INDEX,
};