forked from FFmpeg/FFmpeg
tools/pktdumper: use av_packet_alloc() to allocate packets
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
b76ff693f6
commit
32582a4e2a
1 changed files with 14 additions and 9 deletions
|
@ -54,7 +54,7 @@ int main(int argc, char **argv)
|
||||||
char fntemplate[FILENAME_BUF_SIZE];
|
char fntemplate[FILENAME_BUF_SIZE];
|
||||||
char pktfilename[FILENAME_BUF_SIZE];
|
char pktfilename[FILENAME_BUF_SIZE];
|
||||||
AVFormatContext *fctx = NULL;
|
AVFormatContext *fctx = NULL;
|
||||||
AVPacket pkt;
|
AVPacket *pkt;
|
||||||
int64_t pktnum = 0;
|
int64_t pktnum = 0;
|
||||||
int64_t maxpkts = 0;
|
int64_t maxpkts = 0;
|
||||||
int donotquit = 0;
|
int donotquit = 0;
|
||||||
|
@ -101,30 +101,35 @@ int main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_init_packet(&pkt);
|
pkt = av_packet_alloc();
|
||||||
|
if (!pkt) {
|
||||||
|
fprintf(stderr, "av_packet_alloc: error %d\n", AVERROR(ENOMEM));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
while ((err = av_read_frame(fctx, &pkt)) >= 0) {
|
while ((err = av_read_frame(fctx, pkt)) >= 0) {
|
||||||
int fd;
|
int fd;
|
||||||
snprintf(pktfilename, sizeof(pktfilename), fntemplate, pktnum,
|
snprintf(pktfilename, sizeof(pktfilename), fntemplate, pktnum,
|
||||||
pkt.stream_index, pkt.pts, pkt.size,
|
pkt->stream_index, pkt->pts, pkt->size,
|
||||||
(pkt.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
(pkt->flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
||||||
printf(PKTFILESUFF "\n", pktnum, pkt.stream_index, pkt.pts, pkt.size,
|
printf(PKTFILESUFF "\n", pktnum, pkt->stream_index, pkt->pts, pkt->size,
|
||||||
(pkt.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
(pkt->flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
|
||||||
if (!nowrite) {
|
if (!nowrite) {
|
||||||
fd = open(pktfilename, O_WRONLY | O_CREAT, 0644);
|
fd = open(pktfilename, O_WRONLY | O_CREAT, 0644);
|
||||||
err = write(fd, pkt.data, pkt.size);
|
err = write(fd, pkt->data, pkt->size);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
fprintf(stderr, "write: error %d\n", err);
|
fprintf(stderr, "write: error %d\n", err);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
av_packet_unref(&pkt);
|
av_packet_unref(pkt);
|
||||||
pktnum++;
|
pktnum++;
|
||||||
if (maxpkts && (pktnum >= maxpkts))
|
if (maxpkts && (pktnum >= maxpkts))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
av_packet_free(&pkt);
|
||||||
avformat_close_input(&fctx);
|
avformat_close_input(&fctx);
|
||||||
|
|
||||||
while (donotquit)
|
while (donotquit)
|
||||||
|
|
Loading…
Add table
Reference in a new issue