[Mplayer-cvslog] CVS: main/postproc postprocess.c,1.75,1.76 postprocess_template.c,1.71,1.72 postprocess.h,1.32,1.33 postprocess_internal.h,1.2,1.3
Michael Niedermayer CVS
michael at mplayerhq.hu
Sun Jan 5 20:10:45 CET 2003
Update of /cvsroot/mplayer/main/postproc
In directory mail:/var/tmp.root/cvs-serv20641/postproc
Modified Files:
postprocess.c postprocess_template.c postprocess.h
postprocess_internal.h
Log Message:
YUV 411/422/444 support for pp
Index: postprocess.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess.c,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -r1.75 -r1.76
--- postprocess.c 29 Dec 2002 00:57:23 -0000 1.75
+++ postprocess.c 5 Jan 2003 19:10:42 -0000 1.76
@@ -753,6 +753,13 @@
memset(c, 0, sizeof(PPContext));
c->cpuCaps= cpuCaps;
+ if(cpuCaps&PP_FORMAT){
+ c->hChromaSubSample= cpuCaps&0x3;
+ c->vChromaSubSample= (cpuCaps>>4)&0x3;
+ }else{
+ c->hChromaSubSample= 1;
+ c->vChromaSubSample= 1;
+ }
reallocBuffers(c, width, height, stride);
@@ -795,7 +802,6 @@
if(c->stride < minStride)
reallocBuffers(c, width, height, minStride);
-
if(QP_store==NULL || (mode->lumMode & FORCE_QUANT))
{
@@ -840,8 +846,8 @@
postProcess(src[0], srcStride[0], dst[0], dstStride[0],
width, height, QP_store, QPStride, 0, mode, c);
- width = (width +1)>>1;
- height = (height+1)>>1;
+ width = (width )>>c->hChromaSubSample;
+ height = (height)>>c->vChromaSubSample;
if(mode->chromMode)
{
Index: postprocess_template.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess_template.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- postprocess_template.c 30 Dec 2002 23:00:02 -0000 1.71
+++ postprocess_template.c 5 Jan 2003 19:10:42 -0000 1.72
@@ -2663,6 +2663,9 @@
int i;
#endif
+ const int qpHShift= isColor ? 4-c.hChromaSubSample : 4;
+ const int qpVShift= isColor ? 4-c.vChromaSubSample : 4;
+
//FIXME remove
uint64_t * const yHistogram= c.yHistogram;
uint8_t * const tempSrc= c.tempSrc;
@@ -2846,8 +2849,8 @@
uint8_t *tempBlock1= c.tempBlocks;
uint8_t *tempBlock2= c.tempBlocks + 8;
#endif
- int8_t *QPptr= isColor ? &QPs[(y>>3)*QPStride] :&QPs[(y>>4)*QPStride];
- int8_t *nonBQPptr= isColor ? &c.nonBQPTable[(y>>3)*mbWidth] :&c.nonBQPTable[(y>>4)*mbWidth];
+ int8_t *QPptr= &QPs[(y>>qpVShift)*QPStride];
+ int8_t *nonBQPptr= &c.nonBQPTable[(y>>qpVShift)*mbWidth];
int QP=0;
/* can we mess with a 8x16 block from srcBlock/dstBlock downwards and 1 line upwards
if not than use a temporary buffer */
@@ -2886,8 +2889,8 @@
#endif
if(isColor)
{
- QP= QPptr[x>>3];
- c.nonBQP= nonBQPptr[x>>3];
+ QP= QPptr[x>>qpHShift];
+ c.nonBQP= nonBQPptr[x>>qpHShift];
}
else
{
Index: postprocess.h
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- postprocess.h 2 Nov 2002 14:20:05 -0000 1.32
+++ postprocess.h 5 Jan 2003 19:10:42 -0000 1.33
@@ -43,11 +43,17 @@
pp_mode_t *pp_get_mode_by_name_and_quality(char *name, int quality);
void pp_free_mode(pp_mode_t *mode);
-pp_context_t *pp_get_context(int width, int height, int cpuCaps);
+pp_context_t *pp_get_context(int width, int height, int flags);
void pp_free_context(pp_context_t *ppContext);
#define PP_CPU_CAPS_MMX 0x80000000
#define PP_CPU_CAPS_MMX2 0x20000000
#define PP_CPU_CAPS_3DNOW 0x40000000
+
+#define PP_FORMAT 0x00000008
+#define PP_FORMAT_420 (0x00000011|PP_FORMAT)
+#define PP_FORMAT_422 (0x00000001|PP_FORMAT)
+#define PP_FORMAT_411 (0x00000002|PP_FORMAT)
+#define PP_FORMAT_444 (0x00000000|PP_FORMAT)
#endif
Index: postprocess_internal.h
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/postprocess_internal.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- postprocess_internal.h 29 Dec 2002 00:57:23 -0000 1.2
+++ postprocess_internal.h 5 Jan 2003 19:10:42 -0000 1.3
@@ -119,6 +119,9 @@
int cpuCaps;
int stride; //size of some buffers (needed to realloc them if needed)
+
+ int hChromaSubSample;
+ int vChromaSubSample;
PPMode ppMode;
} PPContext;
More information about the MPlayer-cvslog
mailing list