[FFmpeg-devel] [PATCH 2/3] doc/examples/extract_mvs: make pkt local to the main function

Matthieu Bouron matthieu.bouron at gmail.com
Mon Apr 3 17:33:56 EEST 2017


---
 doc/examples/extract_mvs.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/doc/examples/extract_mvs.c b/doc/examples/extract_mvs.c
index d6730db3a2..552a7334cf 100644
--- a/doc/examples/extract_mvs.c
+++ b/doc/examples/extract_mvs.c
@@ -31,13 +31,11 @@ static const char *src_filename = NULL;
 
 static int video_stream_idx = -1;
 static AVFrame *frame = NULL;
-static AVPacket pkt;
 static int video_frame_count = 0;
 
-static int decode_packet(void)
+static int decode_packet(const AVPacket *pkt)
 {
-    if (pkt.stream_index == video_stream_idx) {
-        int ret = avcodec_send_packet(video_dec_ctx, &pkt);
+        int ret = avcodec_send_packet(video_dec_ctx, pkt);
         if (ret < 0) {
             fprintf(stderr, "Error while sending a packet to the decoder: %s\n", av_err2str(ret));
             return ret;
@@ -71,7 +69,6 @@ static int decode_packet(void)
                 av_frame_unref(frame);
             }
         }
-    }
 
     return 0;
 }
@@ -124,6 +121,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type)
 int main(int argc, char **argv)
 {
     int ret = 0;
+    AVPacket pkt = { 0 };
 
     if (argc != 2) {
         fprintf(stderr, "Usage: %s <video>\n", argv[0]);
@@ -162,21 +160,17 @@ int main(int argc, char **argv)
 
     printf("framenum,source,blockw,blockh,srcx,srcy,dstx,dsty,flags\n");
 
-    /* initialize packet, set data to NULL, let the demuxer fill it */
-    av_init_packet(&pkt);
-
     /* read frames from the file */
     while (av_read_frame(fmt_ctx, &pkt) >= 0) {
-        ret = decode_packet();
+        if (pkt.stream_index == video_stream_idx)
+            ret = decode_packet(&pkt);
         av_packet_unref(&pkt);
         if (ret < 0)
             break;
     }
 
     /* flush cached frames */
-    pkt.data = NULL;
-    pkt.size = 0;
-    decode_packet();
+    decode_packet(NULL);
 
 end:
     avcodec_free_context(&video_dec_ctx);
-- 
2.12.0



More information about the ffmpeg-devel mailing list