Re: [libav-devel] [PATCH 3/4] avcodec: split avpicture from imgconvert
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
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
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
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
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
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