Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-17 Thread Luca Barbato
On 11/12/2012 01:25 AM, Luca Barbato wrote:
 All the non deprecated functions are in avpicture.c now.
 ---
  libavcodec/Makefile |   1 +
  libavcodec/avpicture.c  | 123 
 
  libavcodec/imgconvert.c |  85 -
  3 files changed, 124 insertions(+), 85 deletions(-)
  create mode 100644 libavcodec/avpicture.c
 

Ping.

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


Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-17 Thread Justin Ruggles
On 11/12/2012 08:11 PM, Luca Barbato wrote:
 On 11/12/2012 02:13 AM, Kieran Kunhya wrote:
 On Mon, Nov 12, 2012 at 1:09 AM, Kieran Kunhya kier...@ob-encoder.com 
 wrote:
 On Mon, Nov 12, 2012 at 12:25 AM, Luca Barbato lu_z...@gentoo.org wrote:
 All the non deprecated functions are in avpicture.c now.
 ---
  libavcodec/Makefile |   1 +
  libavcodec/avpicture.c  | 123 
 
  libavcodec/imgconvert.c |  85 -

 These functions are now lavc internal? av_image_alloc and similar were
 quite useful for custom get_buffer functions amongst
 other things.

 Oh ignore me, imgconvert.h is still there.
 
 It doesn't exist. The functions you are referring to are part of avutil
 already.
 
 The whole thing aims to remove
 
 av_picture_pad and av_picture_crop since they won't work on quite used
 pixel formats and are superceeded by swscale.
 
 avpicture_deinterlace since it is superceeded by yadif
 
 
 avcodec_find_best_pix_fmt* got a bit pointless since we aren't using
 pixel formats to describe the color model, so it is at best provides an
 hint.
 
 I have a patch to simplify it, but I doubt it is of any use so we might
 just remove it if nobody is using it.

What is libavfilter using for automatic pixel format negotiation? or
does it even do any kind of smart selection at all currently?

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


Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-12 Thread Luca Barbato
On 11/12/2012 02:13 AM, Kieran Kunhya wrote:
 On Mon, Nov 12, 2012 at 1:09 AM, Kieran Kunhya kier...@ob-encoder.com wrote:
 On Mon, Nov 12, 2012 at 12:25 AM, Luca Barbato lu_z...@gentoo.org wrote:
 All the non deprecated functions are in avpicture.c now.
 ---
  libavcodec/Makefile |   1 +
  libavcodec/avpicture.c  | 123 
 
  libavcodec/imgconvert.c |  85 -

 These functions are now lavc internal? av_image_alloc and similar were
 quite useful for custom get_buffer functions amongst
 other things.
 
 Oh ignore me, imgconvert.h is still there.

It doesn't exist. The functions you are referring to are part of avutil
already.

The whole thing aims to remove

av_picture_pad and av_picture_crop since they won't work on quite used
pixel formats and are superceeded by swscale.

avpicture_deinterlace since it is superceeded by yadif


avcodec_find_best_pix_fmt* got a bit pointless since we aren't using
pixel formats to describe the color model, so it is at best provides an
hint.

I have a patch to simplify it, but I doubt it is of any use so we might
just remove it if nobody is using it.

lu


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


[libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-11 Thread Luca Barbato
All the non deprecated functions are in avpicture.c now.
---
 libavcodec/Makefile |   1 +
 libavcodec/avpicture.c  | 123 
 libavcodec/imgconvert.c |  85 -
 3 files changed, 124 insertions(+), 85 deletions(-)
 create mode 100644 libavcodec/avpicture.c

diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 4d14aea..cab1a89 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -14,6 +14,7 @@ HEADERS = avcodec.h   
  \
 OBJS = allcodecs.o  \
audioconvert.o   \
avpacket.o   \
+   avpicture.o  \
bitstream.o  \
bitstream_filter.o   \
codec_desc.o \
diff --git a/libavcodec/avpicture.c b/libavcodec/avpicture.c
new file mode 100644
index 000..ec4e748
--- /dev/null
+++ b/libavcodec/avpicture.c
@@ -0,0 +1,123 @@
+/*
+ * AVPicture management routines
+ * Copyright (c) 2001, 2002, 2003 Fabrice Bellard
+ *
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * AVPicture management routines
+ */
+
+#include avcodec.h
+#include internal.h
+#include libavutil/common.h
+#include libavutil/pixdesc.h
+#include libavutil/imgutils.h
+#include libavutil/colorspace.h
+
+int avpicture_fill(AVPicture *picture, uint8_t *ptr,
+   enum AVPixelFormat pix_fmt, int width, int height)
+{
+int ret;
+
+if ((ret = av_image_check_size(width, height, 0, NULL))  0)
+return ret;
+
+if ((ret = av_image_fill_linesizes(picture-linesize, pix_fmt, width))  0)
+return ret;
+
+return av_image_fill_pointers(picture-data, pix_fmt,
+  height, ptr, picture-linesize);
+}
+
+int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
+ int width, int height,
+ unsigned char *dest, int dest_size)
+{
+int i, j, nb_planes = 0, linesizes[4];
+const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+int size = avpicture_get_size(pix_fmt, width, height);
+
+if (size  dest_size || size  0)
+return AVERROR(EINVAL);
+
+for (i = 0; i  desc-nb_components; i++)
+nb_planes = FFMAX(desc-comp[i].plane, nb_planes);
+
+nb_planes++;
+
+av_image_fill_linesizes(linesizes, pix_fmt, width);
+for (i = 0; i  nb_planes; i++) {
+int h, shift = (i == 1 || i == 2) ? desc-log2_chroma_h : 0;
+const unsigned char *s = src-data[i];
+h = (height + (1  shift) - 1)  shift;
+
+for (j = 0; j  h; j++) {
+memcpy(dest, s, linesizes[i]);
+dest += linesizes[i];
+s += src-linesize[i];
+}
+}
+
+if (desc-flags  PIX_FMT_PAL)
+memcpy((unsigned char *)(((size_t)dest + 3)  ~3),
+   src-data[1], 256 * 4);
+
+return size;
+}
+
+int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height)
+{
+const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
+AVPicture dummy_pict;
+int ret;
+
+if ((ret = av_image_check_size(width, height, 0, NULL))  0)
+return ret;
+if (desc-flags  PIX_FMT_PSEUDOPAL)
+// do not include palette for these pseudo-paletted formats
+return width * height;
+return avpicture_fill(dummy_pict, NULL, pix_fmt, width, height);
+}
+
+int avpicture_alloc(AVPicture *picture,
+enum AVPixelFormat pix_fmt, int width, int height)
+{
+int ret = av_image_alloc(picture-data, picture-linesize,
+ width, height, pix_fmt, 1);
+if (ret  0) {
+memset(picture, 0, sizeof(AVPicture));
+return ret;
+}
+
+return 0;
+}
+
+void avpicture_free(AVPicture *picture)
+{
+av_free(picture-data[0]);
+}
+
+void av_picture_copy(AVPicture *dst, const AVPicture *src,
+ enum AVPixelFormat pix_fmt, int width, int 

Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-11 Thread Kieran Kunhya
On Mon, Nov 12, 2012 at 12:25 AM, Luca Barbato lu_z...@gentoo.org wrote:
 All the non deprecated functions are in avpicture.c now.
 ---
  libavcodec/Makefile |   1 +
  libavcodec/avpicture.c  | 123 
 
  libavcodec/imgconvert.c |  85 -

These functions are now lavc internal? av_image_alloc and similar were
quite useful for custom get_buffer functions amongst
other things.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel


Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert

2012-11-11 Thread Kieran Kunhya
On Mon, Nov 12, 2012 at 1:09 AM, Kieran Kunhya kier...@ob-encoder.com wrote:
 On Mon, Nov 12, 2012 at 12:25 AM, Luca Barbato lu_z...@gentoo.org wrote:
 All the non deprecated functions are in avpicture.c now.
 ---
  libavcodec/Makefile |   1 +
  libavcodec/avpicture.c  | 123 
 
  libavcodec/imgconvert.c |  85 -

 These functions are now lavc internal? av_image_alloc and similar were
 quite useful for custom get_buffer functions amongst
 other things.

Oh ignore me, imgconvert.h is still there.
___
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel