Re: [libav-devel] [PATCH 17/24] examples/encode_video: use the AVFrame API for allocating the frame

2016-10-24 Thread Vittorio Giovara
On Thu, Oct 20, 2016 at 10:07 AM, Anton Khirnov  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();
> @@ -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;yheight;y++) {
> @@ -159,7 +165,6 @@ int main(int argc, char **argv)
>  fclose(f);
>
>  avcodec_free_context();
> -av_freep(>data[0]);
>  av_frame_free();
>
>  return 0;
> --

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


[libav-devel] [PATCH 17/24] examples/encode_video: use the AVFrame API for allocating the frame

2016-10-20 Thread Anton Khirnov
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();
@@ -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;yheight;y++) {
@@ -159,7 +165,6 @@ int main(int argc, char **argv)
 fclose(f);
 
 avcodec_free_context();
-av_freep(>data[0]);
 av_frame_free();
 
 return 0;
-- 
2.0.0

___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel