Move internal function ff_set_systematic_pal() to libavcore, and

rename it ff_set_systematic_pal2().

Originally committed as revision 25712 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Stefano Sabatini 2010-11-09 22:22:36 +00:00
parent a29039aef3
commit ed5d30d91c
8 changed files with 85 additions and 44 deletions

View File

@ -33,7 +33,7 @@
#define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 94
#define LIBAVCODEC_VERSION_MICRO 3
#define LIBAVCODEC_VERSION_MICRO 4
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \

View File

@ -37,6 +37,7 @@
#include "libavutil/colorspace.h"
#include "libavutil/pixdesc.h"
#include "libavcore/imgutils.h"
#include "libavcore/internal.h"
#if HAVE_MMX && HAVE_YASM
#include "x86/dsputil_mmx.h"
@ -456,46 +457,11 @@ int ff_is_hwaccel_pix_fmt(enum PixelFormat pix_fmt)
return av_pix_fmt_descriptors[pix_fmt].flags & PIX_FMT_HWACCEL;
}
#if LIBAVCODEC_VERSION_MAJOR < 53
int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt){
int i;
for(i=0; i<256; i++){
int r,g,b;
switch(pix_fmt) {
case PIX_FMT_RGB8:
r= (i>>5 )*36;
g= ((i>>2)&7)*36;
b= (i&3 )*85;
break;
case PIX_FMT_BGR8:
b= (i>>6 )*85;
g= ((i>>3)&7)*36;
r= (i&7 )*36;
break;
case PIX_FMT_RGB4_BYTE:
r= (i>>3 )*255;
g= ((i>>1)&3)*85;
b= (i&1 )*255;
break;
case PIX_FMT_BGR4_BYTE:
b= (i>>3 )*255;
g= ((i>>1)&3)*85;
r= (i&1 )*255;
break;
case PIX_FMT_GRAY8:
r=b=g= i;
break;
default:
return -1;
}
pal[i] = b + (g<<8) + (r<<16);
}
return 0;
return ff_set_systematic_pal2(pal, pix_fmt);
}
#if LIBAVCODEC_VERSION_MAJOR < 53
int ff_fill_linesize(AVPicture *picture, enum PixelFormat pix_fmt, int width)
{
return av_image_fill_linesizes(picture->linesize, pix_fmt, width);
@ -909,7 +875,7 @@ int avpicture_alloc(AVPicture *picture,
goto fail;
avpicture_fill(picture, ptr, pix_fmt, width, height);
if(picture->data[1] && !picture->data[2])
ff_set_systematic_pal((uint32_t*)picture->data[1], pix_fmt);
ff_set_systematic_pal2((uint32_t*)picture->data[1], pix_fmt);
return 0;
fail:

View File

@ -36,8 +36,9 @@ int ff_fill_pointer(AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt,
attribute_deprecated
int ff_get_plane_bytewidth(enum PixelFormat pix_fmt, int width, int plane);
attribute_deprecated
int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt);
#endif
int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt);
#endif /* AVCODEC_IMGCONVERT_H */

View File

@ -29,6 +29,7 @@
#include "raw.h"
#include "libavutil/intreadwrite.h"
#include "libavcore/imgutils.h"
#include "libavcore/internal.h"
typedef struct RawVideoContext {
uint32_t palette[AVPALETTE_COUNT];
@ -83,7 +84,7 @@ static av_cold int raw_init_decoder(AVCodecContext *avctx)
else if (avctx->pix_fmt == PIX_FMT_NONE && avctx->bits_per_coded_sample)
avctx->pix_fmt = find_pix_fmt(pix_fmt_bps_avi, avctx->bits_per_coded_sample);
ff_set_systematic_pal(context->palette, avctx->pix_fmt);
ff_set_systematic_pal2(context->palette, avctx->pix_fmt);
context->length = avpicture_get_size(avctx->pix_fmt, avctx->width, avctx->height);
if((avctx->bits_per_coded_sample == 4 || avctx->bits_per_coded_sample == 2) &&
avctx->pix_fmt==PIX_FMT_PAL8 &&

View File

@ -30,6 +30,7 @@
#include "libavutil/crc.h"
#include "libavutil/pixdesc.h"
#include "libavcore/imgutils.h"
#include "libavcore/internal.h"
#include "libavcore/samplefmt.h"
#include "avcodec.h"
#include "dsputil.h"
@ -323,7 +324,7 @@ int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic){
buf->data[i] = buf->base[i] + FFALIGN((buf->linesize[i]*EDGE_WIDTH>>v_shift) + (EDGE_WIDTH>>h_shift), stride_align[i]);
}
if(size[1] && !size[2])
ff_set_systematic_pal((uint32_t*)buf->data[1], s->pix_fmt);
ff_set_systematic_pal2((uint32_t*)buf->data[1], s->pix_fmt);
buf->width = s->width;
buf->height = s->height;
buf->pix_fmt= s->pix_fmt;

View File

@ -28,7 +28,7 @@
#define LIBAVCORE_VERSION_MAJOR 0
#define LIBAVCORE_VERSION_MINOR 12
#define LIBAVCORE_VERSION_MICRO 0
#define LIBAVCORE_VERSION_MICRO 1
#define LIBAVCORE_VERSION_INT AV_VERSION_INT(LIBAVCORE_VERSION_MAJOR, \
LIBAVCORE_VERSION_MINOR, \

View File

@ -22,6 +22,7 @@
*/
#include "imgutils.h"
#include "internal.h"
#include "libavutil/pixdesc.h"
void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4],
@ -120,6 +121,46 @@ int av_image_fill_pointers(uint8_t *data[4], enum PixelFormat pix_fmt, int heigh
return total_size;
}
int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt)
{
int i;
for (i = 0; i < 256; i++) {
int r, g, b;
switch (pix_fmt) {
case PIX_FMT_RGB8:
r = (i>>5 )*36;
g = ((i>>2)&7)*36;
b = (i&3 )*85;
break;
case PIX_FMT_BGR8:
b = (i>>6 )*85;
g = ((i>>3)&7)*36;
r = (i&7 )*36;
break;
case PIX_FMT_RGB4_BYTE:
r = (i>>3 )*255;
g = ((i>>1)&3)*85;
b = (i&1 )*255;
break;
case PIX_FMT_BGR4_BYTE:
b = (i>>3 )*255;
g = ((i>>1)&3)*85;
r = (i&1 )*255;
break;
case PIX_FMT_GRAY8:
r = b = g = i;
break;
default:
return AVERROR(EINVAL);
}
pal[i] = b + (g<<8) + (r<<16);
}
return 0;
}
typedef struct ImgUtils {
const AVClass *class;
int log_offset;

31
libavcore/internal.h Normal file
View File

@ -0,0 +1,31 @@
/*
* 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.1 of the License, or (at your option) any later version.
*
* 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 FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCORE_INTERNAL_H
#define AVCORE_INTERNAL_H
/**
* @file
* internal functions
*/
#include "avcore.h"
int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt);
#endif /* AVCORE_INTERNAL_H */