On Thu, Oct 20, 2016 at 10:07 AM, Anton Khirnov <an...@khirnov.net> wrote:
> It is more efficient and so preferred over allocating the buffers
> manually.
> ---
>  doc/examples/encode_video.c | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c
> index bd10d40..b8c9631 100644
> --- a/doc/examples/encode_video.c
> +++ b/doc/examples/encode_video.c
> @@ -88,16 +88,16 @@ int main(int argc, char **argv)
>          exit(1);
>      }
>
> -    ret = av_image_alloc(picture->data, picture->linesize, c->width, 
> c->height,
> -                         c->pix_fmt, 32);
> -    if (ret < 0) {
> -        fprintf(stderr, "could not alloc raw picture buffer\n");
> -        exit(1);
> -    }
>      picture->format = c->pix_fmt;
>      picture->width  = c->width;
>      picture->height = c->height;
>
> +    ret = av_frame_get_buffer(picture, 32);
> +    if (ret < 0) {
> +        fprintf(stderr, "could not alloc the frame data\n");
> +        exit(1);
> +    }
> +
>      /* encode 1 second of video */
>      for(i=0;i<25;i++) {
>          av_init_packet(&pkt);
> @@ -105,6 +105,12 @@ int main(int argc, char **argv)
>          pkt.size = 0;
>
>          fflush(stdout);
> +
> +        /* make sure the frame data is writable */
> +        ret = av_frame_make_writable(picture);
> +        if (ret < 0)
> +            exit(1);
> +
>          /* prepare a dummy image */
>          /* Y */
>          for(y=0;y<c->height;y++) {
> @@ -159,7 +165,6 @@ int main(int argc, char **argv)
>      fclose(f);
>
>      avcodec_free_context(&c);
> -    av_freep(&picture->data[0]);
>      av_frame_free(&picture);
>
>      return 0;
> --

looks ok
-- 
Vittorio
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to