From d6e4e69a4993e8f2fe1f7e8227ac388039d886d2 Mon Sep 17 00:00:00 2001 From: Derek Buitenhuis Date: Sat, 3 Mar 2012 19:53:59 -0500 Subject: [PATCH] libutvideo: Move structs and includes to header This is so the forthcoming encoder wrapper can share them. Signed-off-by: Derek Buitenhuis Signed-off-by: Michael Niedermayer --- libavcodec/libutvideo.cpp | 34 +++++++++---------------------- libavcodec/libutvideo.h | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 25 deletions(-) create mode 100644 libavcodec/libutvideo.h diff --git a/libavcodec/libutvideo.cpp b/libavcodec/libutvideo.cpp index 1089d3e879..443a77ea9d 100644 --- a/libavcodec/libutvideo.cpp +++ b/libavcodec/libutvideo.cpp @@ -28,25 +28,9 @@ extern "C" { #include "avcodec.h" } -#include -#include -#include - +#include "libutvideo.h" #include "get_bits.h" -typedef struct { - uint32_t version; - uint32_t original_format; - uint32_t frameinfo_size; - uint32_t flags; -} UtVideoExtra; - -typedef struct { - CCodec *codec; - unsigned int buf_size; - uint8_t *output; -} UtVideoContext; - static av_cold int utvideo_decode_init(AVCodecContext *avctx) { UtVideoContext *utv = (UtVideoContext *)avctx->priv_data; @@ -91,9 +75,9 @@ static av_cold int utvideo_decode_init(AVCodecContext *avctx) /* Only allocate the buffer once */ utv->buf_size = avpicture_get_size(avctx->pix_fmt, avctx->width, avctx->height); - utv->output = (uint8_t *)av_malloc(utv->buf_size * sizeof(uint8_t)); + utv->buffer = (uint8_t *)av_malloc(utv->buf_size * sizeof(uint8_t)); - if (utv->output == NULL) { + if (utv->buffer == NULL) { av_log(avctx, AV_LOG_ERROR, "Unable to allocate output buffer.\n"); return -1; } @@ -143,26 +127,26 @@ static int utvideo_decode_frame(AVCodecContext *avctx, void *data, pic->key_frame = 1; /* Decode the frame */ - utv->codec->DecodeFrame(utv->output, avpkt->data, true); + utv->codec->DecodeFrame(utv->buffer, avpkt->data, true); /* Set the output data depending on the colorspace */ switch (avctx->pix_fmt) { case PIX_FMT_YUV420P: pic->linesize[0] = w; pic->linesize[1] = pic->linesize[2] = w / 2; - pic->data[0] = utv->output; - pic->data[2] = utv->output + (w * h); + pic->data[0] = utv->buffer; + pic->data[2] = utv->buffer + (w * h); pic->data[1] = pic->data[2] + (w * h / 4); break; case PIX_FMT_YUYV422: pic->linesize[0] = w * 2; - pic->data[0] = utv->output; + pic->data[0] = utv->buffer; break; case PIX_FMT_BGR24: case PIX_FMT_RGB32: /* Make the linesize negative, since Ut Video uses bottom-up BGR */ pic->linesize[0] = -1 * w * (avctx->pix_fmt == PIX_FMT_BGR24 ? 3 : 4); - pic->data[0] = utv->output + utv->buf_size + pic->linesize[0]; + pic->data[0] = utv->buffer + utv->buf_size + pic->linesize[0]; break; } @@ -178,7 +162,7 @@ static av_cold int utvideo_decode_close(AVCodecContext *avctx) /* Free output */ av_freep(&avctx->coded_frame); - av_freep(&utv->output); + av_freep(&utv->buffer); /* Finish decoding and clean up the instance */ utv->codec->DecodeEnd(); diff --git a/libavcodec/libutvideo.h b/libavcodec/libutvideo.h new file mode 100644 index 0000000000..0b98b7cd06 --- /dev/null +++ b/libavcodec/libutvideo.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2011-2012 Derek Buitenhuis + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; + * version 2 of the License. + * + * FFmpeg 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 + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Known FOURCCs: + * 'ULY0' (YCbCr 4:2:0), 'ULY2' (YCbCr 4:2:2), 'ULRG' (RGB), 'ULRA' (RGBA) + */ + +#include +#include +#include + +typedef struct { + uint32_t version; + uint32_t original_format; + uint32_t frameinfo_size; + uint32_t flags; +} UtVideoExtra; + +typedef struct { + CCodec *codec; + unsigned int buf_size; + uint8_t *buffer; +} UtVideoContext;