[FFmpeg-cvslog] Merge commit '59ab9e8ba1df7e3347a4cd2bd56c32e74aede802'

Clément Bœsch git at videolan.org
Tue Apr 4 12:47:35 EEST 2017


ffmpeg | branch: master | Clément Bœsch <cboesch at gopro.com> | Tue Apr  4 11:48:23 2017 +0200| [6db36a0227656057b43ab562dcabc2aa3fb8686f] | committer: Clément Bœsch

Merge commit '59ab9e8ba1df7e3347a4cd2bd56c32e74aede802'

* commit '59ab9e8ba1df7e3347a4cd2bd56c32e74aede802':
  examples/encode_video: allocate the packet dynamically

Merged-by: Clément Bœsch <cboesch at gopro.com>

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

 doc/examples/encode_video.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c
index f29e9fb..d2075c1 100644
--- a/doc/examples/encode_video.c
+++ b/doc/examples/encode_video.c
@@ -71,7 +71,7 @@ int main(int argc, char **argv)
     int i, ret, x, y;
     FILE *f;
     AVFrame *frame;
-    AVPacket pkt;
+    AVPacket *pkt;
     uint8_t endcode[] = { 0, 0, 1, 0xb7 };
 
     if (argc <= 2) {
@@ -96,6 +96,10 @@ int main(int argc, char **argv)
         exit(1);
     }
 
+    pkt = av_packet_alloc();
+    if (!pkt)
+        exit(1);
+
     /* put sample parameters */
     c->bit_rate = 400000;
     /* resolution must be a multiple of two */
@@ -147,10 +151,6 @@ int main(int argc, char **argv)
 
     /* encode 1 second of video */
     for (i = 0; i < 25; i++) {
-        av_init_packet(&pkt);
-        pkt.data = NULL;    // packet data will be allocated by the encoder
-        pkt.size = 0;
-
         fflush(stdout);
 
         /* make sure the frame data is writable */
@@ -177,11 +177,11 @@ int main(int argc, char **argv)
         frame->pts = i;
 
         /* encode the image */
-        encode(c, frame, &pkt, f);
+        encode(c, frame, pkt, f);
     }
 
     /* flush the encoder */
-    encode(c, NULL, &pkt, f);
+    encode(c, NULL, pkt, f);
 
     /* add sequence end code to have a real MPEG file */
     fwrite(endcode, 1, sizeof(endcode), f);
@@ -189,6 +189,7 @@ int main(int argc, char **argv)
 
     avcodec_free_context(&c);
     av_frame_free(&frame);
+    av_packet_free(&pkt);
 
     return 0;
 }


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

diff --cc doc/examples/encode_video.c
index f29e9fb,cb12836..d2075c1
--- a/doc/examples/encode_video.c
+++ b/doc/examples/encode_video.c
@@@ -70,12 -68,12 +70,12 @@@ int main(int argc, char **argv
      AVCodecContext *c= NULL;
      int i, ret, x, y;
      FILE *f;
 -    AVFrame *picture;
 +    AVFrame *frame;
-     AVPacket pkt;
+     AVPacket *pkt;
      uint8_t endcode[] = { 0, 0, 1, 0xb7 };
  
 -    if (argc <= 1) {
 -        fprintf(stderr, "Usage: %s <output file>\n", argv[0]);
 +    if (argc <= 2) {
 +        fprintf(stderr, "Usage: %s <output file> <codec name>\n", argv[0]);
          exit(0);
      }
      filename = argv[1];
@@@ -91,11 -88,12 +91,15 @@@
      }
  
      c = avcodec_alloc_context3(codec);
 -    picture = av_frame_alloc();
 +    if (!c) {
 +        fprintf(stderr, "Could not allocate video codec context\n");
 +        exit(1);
 +    }
  
+     pkt = av_packet_alloc();
+     if (!pkt)
+         exit(1);
+ 
      /* put sample parameters */
      c->bit_rate = 400000;
      /* resolution must be a multiple of two */
@@@ -146,11 -130,7 +150,7 @@@
      }
  
      /* encode 1 second of video */
 -    for(i=0;i<25;i++) {
 +    for (i = 0; i < 25; i++) {
-         av_init_packet(&pkt);
-         pkt.data = NULL;    // packet data will be allocated by the encoder
-         pkt.size = 0;
- 
          fflush(stdout);
  
          /* make sure the frame data is writable */
@@@ -174,10 -154,10 +174,10 @@@
              }
          }
  
 -        picture->pts = i;
 +        frame->pts = i;
  
          /* encode the image */
-         encode(c, frame, &pkt, f);
 -        encode(c, picture, pkt, f);
++        encode(c, frame, pkt, f);
      }
  
      /* flush the encoder */
@@@ -188,7 -168,8 +188,8 @@@
      fclose(f);
  
      avcodec_free_context(&c);
 -    av_frame_free(&picture);
 +    av_frame_free(&frame);
+     av_packet_free(&pkt);
  
      return 0;
  }



More information about the ffmpeg-cvslog mailing list