3 * Copyright (c) 2012 Carl Eugen Hoyos
5 * This file is part of FFmpeg.
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.
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.
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
25 static av_cold
int v408_decode_init(AVCodecContext
*avctx
)
27 avctx
->pix_fmt
= AV_PIX_FMT_YUVA444P
;
32 static int v408_decode_frame(AVCodecContext
*avctx
, void *data
,
33 int *got_frame
, AVPacket
*avpkt
)
36 const uint8_t *src
= avpkt
->data
;
37 uint8_t *y
, *u
, *v
, *a
;
40 if (avpkt
->size
< 4 * avctx
->height
* avctx
->width
) {
41 av_log(avctx
, AV_LOG_ERROR
, "Insufficient input data.\n");
42 return AVERROR(EINVAL
);
45 if ((ret
= ff_get_buffer(avctx
, pic
, 0)) < 0)
49 pic
->pict_type
= AV_PICTURE_TYPE_I
;
56 for (i
= 0; i
< avctx
->height
; i
++) {
57 for (j
= 0; j
< avctx
->width
; j
++) {
58 if (avctx
->codec_id
==AV_CODEC_ID_AYUV
) {
71 y
+= pic
->linesize
[0];
72 u
+= pic
->linesize
[1];
73 v
+= pic
->linesize
[2];
74 a
+= pic
->linesize
[3];
82 #if CONFIG_AYUV_DECODER
83 AVCodec ff_ayuv_decoder
= {
85 .long_name
= NULL_IF_CONFIG_SMALL("Uncompressed packed MS 4:4:4:4"),
86 .type
= AVMEDIA_TYPE_VIDEO
,
87 .id
= AV_CODEC_ID_AYUV
,
88 .init
= v408_decode_init
,
89 .decode
= v408_decode_frame
,
90 .capabilities
= CODEC_CAP_DR1
,
93 #if CONFIG_V408_DECODER
94 AVCodec ff_v408_decoder
= {
96 .long_name
= NULL_IF_CONFIG_SMALL("Uncompressed packed QT 4:4:4:4"),
97 .type
= AVMEDIA_TYPE_VIDEO
,
98 .id
= AV_CODEC_ID_V408
,
99 .init
= v408_decode_init
,
100 .decode
= v408_decode_frame
,
101 .capabilities
= CODEC_CAP_DR1
,