[FFmpeg-devel] [PATCH 38/50] tools/pktdumper: use av_packet_alloc() to allocate packets

James Almer jamrial at gmail.com
Thu Feb 4 21:09:53 EET 2021


Signed-off-by: James Almer <jamrial at gmail.com>
---
 tools/pktdumper.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/tools/pktdumper.c b/tools/pktdumper.c
index 16a965b756..c51f5c8922 100644
--- a/tools/pktdumper.c
+++ b/tools/pktdumper.c
@@ -54,7 +54,7 @@ int main(int argc, char **argv)
     char fntemplate[FILENAME_BUF_SIZE];
     char pktfilename[FILENAME_BUF_SIZE];
     AVFormatContext *fctx = NULL;
-    AVPacket pkt;
+    AVPacket *pkt;
     int64_t pktnum  = 0;
     int64_t maxpkts = 0;
     int donotquit   = 0;
@@ -101,30 +101,35 @@ int main(int argc, char **argv)
         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;
         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) {
             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) {
                 fprintf(stderr, "write: error %d\n", err);
                 return 1;
             }
             close(fd);
         }
-        av_packet_unref(&pkt);
+        av_packet_unref(pkt);
         pktnum++;
         if (maxpkts && (pktnum >= maxpkts))
             break;
     }
 
+    av_packet_free(&pkt);
     avformat_close_input(&fctx);
 
     while (donotquit)
-- 
2.30.0



More information about the ffmpeg-devel mailing list