[FFmpeg-cvslog] Merge commit '728ea23cce07467b732f538c87c13da13dd6dcf3'

James Almer git at videolan.org
Tue Apr 4 20:50:06 EEST 2017


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Tue Apr  4 14:41:23 2017 -0300| [52bce9a13ddca52921c8a32ffcdd2d97b15d0f4d] | committer: James Almer

Merge commit '728ea23cce07467b732f538c87c13da13dd6dcf3'

* commit '728ea23cce07467b732f538c87c13da13dd6dcf3':
  examples/decode_video: switch to the new decoding API

Merged-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=52bce9a13ddca52921c8a32ffcdd2d97b15d0f4d
---

 doc/examples/decode_video.c | 45 +++++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 22 deletions(-)

diff --git a/doc/examples/decode_video.c b/doc/examples/decode_video.c
index 980add3..5c1c42c 100644
--- a/doc/examples/decode_video.c
+++ b/doc/examples/decode_video.c
@@ -52,28 +52,31 @@ static void decode(AVCodecContext *dec_ctx, AVFrame *frame, AVPacket *pkt,
                    const char *filename)
 {
     char buf[1024];
-    int ret, got_picture;
+    int ret;
+
+    ret = avcodec_send_packet(dec_ctx, pkt);
+    if (ret < 0) {
+        fprintf(stderr, "Error sending a packet for decoding\n");
+        exit(1);
+    }
 
-    while (pkt->size > 0) {
-        ret = avcodec_decode_video2(dec_ctx, frame, &got_picture, pkt);
-        if (ret < 0) {
-            fprintf(stderr, "Error while decoding frame %d\n", dec_ctx->frame_number);
+    while (ret >= 0) {
+        ret = avcodec_receive_frame(dec_ctx, frame);
+        if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
+            return;
+        else if (ret < 0) {
+            fprintf(stderr, "Error during decoding\n");
             exit(1);
         }
-        if (got_picture) {
-            printf("saving frame %3d\n", dec_ctx->frame_number);
-            fflush(stdout);
-
-            /* the picture is allocated by the decoder. no need to
-               free it */
-            snprintf(buf, sizeof(buf), filename, dec_ctx->frame_number);
-            pgm_save(frame->data[0], frame->linesize[0],
-                     frame->width, frame->height, buf);
-        }
-        if (pkt->data) {
-            pkt->size -= ret;
-            pkt->data += ret;
-        }
+
+        printf("saving frame %3d\n", dec_ctx->frame_number);
+        fflush(stdout);
+
+        /* the picture is allocated by the decoder. no need to
+           free it */
+        snprintf(buf, sizeof(buf), filename, dec_ctx->frame_number);
+        pgm_save(frame->data[0], frame->linesize[0],
+                 frame->width, frame->height, buf);
     }
 }
 
@@ -170,9 +173,7 @@ int main(int argc, char **argv)
      }
 
     /* flush the decoder */
-    avpkt.data = NULL;
-    avpkt.size = 0;
-    decode(c, frame, &avpkt, outfilename);
+    decode(c, frame, NULL, outfilename);
 
     fclose(f);
 


======================================================================

diff --cc doc/examples/decode_video.c
index 980add3,7414643..5c1c42c
--- a/doc/examples/decode_video.c
+++ b/doc/examples/decode_video.c
@@@ -165,14 -161,12 +168,12 @@@ int main(int argc, char **argv
              data_size -= ret;
  
              if (avpkt.size)
 -                decode(c, picture, &avpkt, outfilename);
 -        }
 -    }
 +                decode(c, frame, &avpkt, outfilename);
 +         }
 +     }
  
      /* flush the decoder */
-     avpkt.data = NULL;
-     avpkt.size = 0;
-     decode(c, frame, &avpkt, outfilename);
 -    decode(c, picture, NULL, outfilename);
++    decode(c, frame, NULL, outfilename);
  
      fclose(f);
  



More information about the ffmpeg-cvslog mailing list