Browse Source

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
tags/n0.8
Stefano Sabatini 14 years ago
parent
commit
ed5d30d91c
8 changed files with 84 additions and 43 deletions
  1. +1
    -1
      libavcodec/avcodec.h
  2. +4
    -38
      libavcodec/imgconvert.c
  3. +2
    -1
      libavcodec/imgconvert.h
  4. +2
    -1
      libavcodec/rawdec.c
  5. +2
    -1
      libavcodec/utils.c
  6. +1
    -1
      libavcore/avcore.h
  7. +41
    -0
      libavcore/imgutils.c
  8. +31
    -0
      libavcore/internal.h

+ 1
- 1
libavcodec/avcodec.h 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, \


+ 4
- 38
libavcodec/imgconvert.c 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:


+ 2
- 1
libavcodec/imgconvert.h 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);
#endif

attribute_deprecated
int ff_set_systematic_pal(uint32_t pal[256], enum PixelFormat pix_fmt);
#endif

#endif /* AVCODEC_IMGCONVERT_H */

+ 2
- 1
libavcodec/rawdec.c 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 &&


+ 2
- 1
libavcodec/utils.c 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;


+ 1
- 1
libavcore/avcore.h 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, \


+ 41
- 0
libavcore/imgutils.c 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
- 0
libavcore/internal.h 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 */

Loading…
Cancel
Save