X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fcljr.c;h=bb8ae2c7b52c2085c6add713f6c365f5d766a523;hb=a44cb89b0f53d55dd1814138ba6526ecaf985f12;hp=c17316b3e0951e5c01633938b634e5efc888df4a;hpb=934982c4ace1a3d5d627b518782ed092a456c49e;p=ffmpeg diff --git a/libavcodec/cljr.c b/libavcodec/cljr.c index c17316b3e09..bb8ae2c7b52 100644 --- a/libavcodec/cljr.c +++ b/libavcodec/cljr.c @@ -2,29 +2,35 @@ * Cirrus Logic AccuPak (CLJR) codec * Copyright (c) 2003 Alex Beregszaszi * - * This library is free software; you can redistribute it and/or + * This file is part of FFmpeg. + * + * FFmpeg 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 of the License, or (at your option) any later version. + * version 2.1 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, + * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - + /** * @file cljr.c * Cirrus Logic AccuPak codec. */ - + #include "avcodec.h" -#include "mpegvideo.h" +#include "dsputil.h" +#include "bitstream.h" + +/* Disable the encoder. */ +#undef CONFIG_CLJR_ENCODER +#define CONFIG_CLJR_ENCODER 0 typedef struct CLJRContext{ AVCodecContext *avctx; @@ -34,9 +40,9 @@ typedef struct CLJRContext{ GetBitContext gb; } CLJRContext; -static int decode_frame(AVCodecContext *avctx, +static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, - uint8_t *buf, int buf_size) + const uint8_t *buf, int buf_size) { CLJRContext * const a = avctx->priv_data; AVFrame *picture = data; @@ -51,7 +57,7 @@ static int decode_frame(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); return -1; } - p->pict_type= I_TYPE; + p->pict_type= FF_I_TYPE; p->key_frame= 1; init_get_bits(&a->gb, buf, buf_size); @@ -61,13 +67,13 @@ static int decode_frame(AVCodecContext *avctx, uint8_t *cb= &a->picture.data[1][ y*a->picture.linesize[1] ]; uint8_t *cr= &a->picture.data[2][ y*a->picture.linesize[2] ]; for(x=0; xwidth; x+=4){ - luma[3] = get_bits(&a->gb, 5) << 3; - luma[2] = get_bits(&a->gb, 5) << 3; - luma[1] = get_bits(&a->gb, 5) << 3; - luma[0] = get_bits(&a->gb, 5) << 3; - luma+= 4; - *(cb++) = get_bits(&a->gb, 6) << 2; - *(cr++) = get_bits(&a->gb, 6) << 2; + luma[3] = get_bits(&a->gb, 5) << 3; + luma[2] = get_bits(&a->gb, 5) << 3; + luma[1] = get_bits(&a->gb, 5) << 3; + luma[0] = get_bits(&a->gb, 5) << 3; + luma+= 4; + *(cb++) = get_bits(&a->gb, 6) << 2; + *(cr++) = get_bits(&a->gb, 6) << 2; } } @@ -75,11 +81,11 @@ static int decode_frame(AVCodecContext *avctx, *data_size = sizeof(AVPicture); emms_c(); - + return buf_size; } -#if 0 +#if CONFIG_CLJR_ENCODER static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data){ CLJRContext * const a = avctx->priv_data; AVFrame *pict = data; @@ -88,43 +94,45 @@ static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, int mb_x, mb_y; *p = *pict; - p->pict_type= I_TYPE; + p->pict_type= FF_I_TYPE; p->key_frame= 1; emms_c(); - + align_put_bits(&a->pb); while(get_bit_count(&a->pb)&31) put_bits(&a->pb, 8, 0); - + size= get_bit_count(&a->pb)/32; - + return size*4; } #endif -static void common_init(AVCodecContext *avctx){ +static av_cold void common_init(AVCodecContext *avctx){ CLJRContext * const a = avctx->priv_data; avctx->coded_frame= (AVFrame*)&a->picture; a->avctx= avctx; } -static int decode_init(AVCodecContext *avctx){ +static av_cold int decode_init(AVCodecContext *avctx){ common_init(avctx); - + avctx->pix_fmt= PIX_FMT_YUV411P; return 0; } -static int encode_init(AVCodecContext *avctx){ +#if CONFIG_CLJR_ENCODER +static av_cold int encode_init(AVCodecContext *avctx){ common_init(avctx); - + return 0; } +#endif AVCodec cljr_decoder = { "cljr", @@ -136,10 +144,10 @@ AVCodec cljr_decoder = { NULL, decode_frame, CODEC_CAP_DR1, + .long_name = NULL_IF_CONFIG_SMALL("Cirrus Logic AccuPak"), }; -#if 0 -#ifdef CONFIG_ENCODERS +#if CONFIG_CLJR_ENCODER AVCodec cljr_encoder = { "cljr", CODEC_TYPE_VIDEO, @@ -148,7 +156,6 @@ AVCodec cljr_encoder = { encode_init, encode_frame, //encode_end, + .long_name = NULL_IF_CONFIG_SMALL("Cirrus Logic AccuPak"), }; - -#endif //CONFIG_ENCODERS #endif