Merge commit '5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c'
authorClément Bœsch <u@pkh.me>
Wed, 29 Mar 2017 12:20:25 +0000 (14:20 +0200)
committerClément Bœsch <u@pkh.me>
Wed, 29 Mar 2017 12:21:52 +0000 (14:21 +0200)
* commit '5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c':
  examples/encode_video: use the AVFrame API for allocating the frame

Merged-by: Clément Bœsch <u@pkh.me>
1  2 
doc/examples/encode_video.c

@@@ -103,21 -88,13 +103,18 @@@ int main(int argc, char **argv
          exit(1);
      }
  
 -    picture->format = c->pix_fmt;
 -    picture->width  = c->width;
 -    picture->height = c->height;
 +    frame = av_frame_alloc();
 +    if (!frame) {
 +        fprintf(stderr, "Could not allocate video frame\n");
 +        exit(1);
 +    }
 +    frame->format = c->pix_fmt;
 +    frame->width  = c->width;
 +    frame->height = c->height;
  
-     /* the image can be allocated by any means and av_image_alloc() is
-      * just the most convenient way if av_malloc() is to be used */
-     ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height,
-                          c->pix_fmt, 32);
 -    ret = av_frame_get_buffer(picture, 32);
++    ret = av_frame_get_buffer(frame, 32);
      if (ret < 0) {
-         fprintf(stderr, "Could not allocate raw picture buffer\n");
 -        fprintf(stderr, "could not alloc the frame data\n");
++        fprintf(stderr, "Could not allocate the video frame data\n");
          exit(1);
      }
  
          pkt.size = 0;
  
          fflush(stdout);
 -        ret = av_frame_make_writable(picture);
+         /* make sure the frame data is writable */
++        ret = av_frame_make_writable(frame);
+         if (ret < 0)
+             exit(1);
          /* prepare a dummy image */
          /* Y */
 -        for(y=0;y<c->height;y++) {
 -            for(x=0;x<c->width;x++) {
 -                picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3;
 +        for (y = 0; y < c->height; y++) {
 +            for (x = 0; x < c->width; x++) {
 +                frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3;
              }
          }
  
      fclose(f);
  
      avcodec_free_context(&c);
-     av_freep(&frame->data[0]);
 -    av_frame_free(&picture);
 +    av_frame_free(&frame);
  
      return 0;
  }