Browse Source

tools/pktdumper: use av_packet_alloc() to allocate packets

Signed-off-by: James Almer <jamrial@gmail.com>
tags/n4.4
James Almer 4 years ago
parent
commit
32582a4e2a
1 changed files with 14 additions and 9 deletions
  1. +14
    -9
      tools/pktdumper.c

+ 14
- 9
tools/pktdumper.c View File

@@ -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.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
printf(PKTFILESUFF "\n", pktnum, pkt.stream_index, pkt.pts, pkt.size,
(pkt.flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
pkt->stream_index, pkt->pts, pkt->size,
(pkt->flags & AV_PKT_FLAG_KEY) ? 'K' : '_');
printf(PKTFILESUFF "\n", pktnum, pkt->stream_index, pkt->pts, pkt->size,
(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…
Cancel
Save