mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-25 12:40:01 +00:00
libutvideo: Move structs and includes to header
This is so the forthcoming encoder wrapper can share them. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
18794000c6
commit
d6e4e69a49
@ -28,25 +28,9 @@ extern "C" {
|
||||
#include "avcodec.h"
|
||||
}
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <utvideo/utvideo.h>
|
||||
#include <utvideo/Codec.h>
|
||||
|
||||
#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();
|
||||
|
42
libavcodec/libutvideo.h
Normal file
42
libavcodec/libutvideo.h
Normal file
@ -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 <stdlib.h>
|
||||
#include <utvideo/utvideo.h>
|
||||
#include <utvideo/Codec.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 *buffer;
|
||||
} UtVideoContext;
|
Loading…
Reference in New Issue
Block a user