1/* 2 * AVPicture management routines 3 * Copyright (c) 2001, 2002, 2003 Fabrice Bellard 4 * 5 * This file is part of FFmpeg. 6 * 7 * FFmpeg is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * FFmpeg is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public 18 * License along with FFmpeg; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 */ 21 22/** 23 * @file 24 * AVPicture management routines 25 */ 26 27#include "avcodec.h" 28#include "internal.h" 29#include "libavutil/common.h" 30#include "libavutil/pixdesc.h" 31#include "libavutil/imgutils.h" 32#include "libavutil/internal.h" 33#include "libavutil/colorspace.h" 34 35#if FF_API_AVPICTURE 36FF_DISABLE_DEPRECATION_WARNINGS 37int avpicture_fill(AVPicture *picture, const uint8_t *ptr, 38 enum AVPixelFormat pix_fmt, int width, int height) 39{ 40 return av_image_fill_arrays(picture->data, picture->linesize, 41 ptr, pix_fmt, width, height, 1); 42} 43 44int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, int width, int height, 45 unsigned char *dest, int dest_size) 46{ 47 return av_image_copy_to_buffer(dest, dest_size, 48 (const uint8_t * const*)src->data, src->linesize, 49 pix_fmt, width, height, 1); 50} 51 52int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height) 53{ 54 return av_image_get_buffer_size(pix_fmt, width, height, 1); 55} 56 57int avpicture_alloc(AVPicture *picture, 58 enum AVPixelFormat pix_fmt, int width, int height) 59{ 60 int ret = av_image_alloc(picture->data, picture->linesize, 61 width, height, pix_fmt, 1); 62 if (ret < 0) { 63 memset(picture, 0, sizeof(AVPicture)); 64 return ret; 65 } 66 67 return 0; 68} 69 70void avpicture_free(AVPicture *picture) 71{ 72 av_freep(&picture->data[0]); 73} 74 75void av_picture_copy(AVPicture *dst, const AVPicture *src, 76 enum AVPixelFormat pix_fmt, int width, int height) 77{ 78 av_image_copy(dst->data, dst->linesize, (const uint8_t **)src->data, 79 src->linesize, pix_fmt, width, height); 80} 81FF_ENABLE_DEPRECATION_WARNINGS 82#endif /* FF_API_AVPICTURE */ 83