comparison postprocess.c @ 78:47ff4bd209cd libpostproc

const
author michael
date Sat, 02 Feb 2008 21:24:54 +0000
parents d2cf9a69d443
children 8181b013dafa
comparison
equal deleted inserted replaced
77:13e4f6ebb206 78:47ff4bd209cd
641 #include "postprocess_template.c" 641 #include "postprocess_template.c"
642 #endif 642 #endif
643 643
644 // minor note: the HAVE_xyz is messed up after that line so do not use it. 644 // minor note: the HAVE_xyz is messed up after that line so do not use it.
645 645
646 static inline void postProcess(uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height, 646 static inline void postProcess(const uint8_t src[], int srcStride, uint8_t dst[], int dstStride, int width, int height,
647 QP_STORE_T QPs[], int QPStride, int isColor, pp_mode_t *vm, pp_context_t *vc) 647 const QP_STORE_T QPs[], int QPStride, int isColor, pp_mode_t *vm, pp_context_t *vc)
648 { 648 {
649 PPContext *c= (PPContext *)vc; 649 PPContext *c= (PPContext *)vc;
650 PPMode *ppMode= (PPMode *)vm; 650 PPMode *ppMode= (PPMode *)vm;
651 c->ppMode= *ppMode; //FIXME 651 c->ppMode= *ppMode; //FIXME
652 652
1019 memset(c, 0, sizeof(PPContext)); 1019 memset(c, 0, sizeof(PPContext));
1020 1020
1021 av_free(c); 1021 av_free(c);
1022 } 1022 }
1023 1023
1024 void pp_postprocess(uint8_t * src[3], int srcStride[3], 1024 void pp_postprocess(const uint8_t * src[3], const int srcStride[3],
1025 uint8_t * dst[3], int dstStride[3], 1025 uint8_t * dst[3], const int dstStride[3],
1026 int width, int height, 1026 int width, int height,
1027 QP_STORE_T *QP_store, int QPStride, 1027 const QP_STORE_T *QP_store, int QPStride,
1028 pp_mode_t *vm, void *vc, int pict_type) 1028 pp_mode_t *vm, void *vc, int pict_type)
1029 { 1029 {
1030 int mbWidth = (width+15)>>4; 1030 int mbWidth = (width+15)>>4;
1031 int mbHeight= (height+15)>>4; 1031 int mbHeight= (height+15)>>4;
1032 PPMode *mode = (PPMode*)vm; 1032 PPMode *mode = (PPMode*)vm;
1044 { 1044 {
1045 int i; 1045 int i;
1046 QP_store= c->forcedQPTable; 1046 QP_store= c->forcedQPTable;
1047 absQPStride = QPStride = 0; 1047 absQPStride = QPStride = 0;
1048 if(mode->lumMode & FORCE_QUANT) 1048 if(mode->lumMode & FORCE_QUANT)
1049 for(i=0; i<mbWidth; i++) QP_store[i]= mode->forcedQuant; 1049 for(i=0; i<mbWidth; i++) c->forcedQPTable[i]= mode->forcedQuant;
1050 else 1050 else
1051 for(i=0; i<mbWidth; i++) QP_store[i]= 1; 1051 for(i=0; i<mbWidth; i++) c->forcedQPTable[i]= 1;
1052 } 1052 }
1053 1053
1054 if(pict_type & PP_PICT_TYPE_QP2){ 1054 if(pict_type & PP_PICT_TYPE_QP2){
1055 int i; 1055 int i;
1056 const int count= mbHeight * absQPStride; 1056 const int count= mbHeight * absQPStride;
1057 for(i=0; i<(count>>2); i++){ 1057 for(i=0; i<(count>>2); i++){
1058 ((uint32_t*)c->stdQPTable)[i] = (((uint32_t*)QP_store)[i]>>1) & 0x7F7F7F7F; 1058 ((uint32_t*)c->stdQPTable)[i] = (((const uint32_t*)QP_store)[i]>>1) & 0x7F7F7F7F;
1059 } 1059 }
1060 for(i<<=2; i<count; i++){ 1060 for(i<<=2; i<count; i++){
1061 c->stdQPTable[i] = QP_store[i]>>1; 1061 c->stdQPTable[i] = QP_store[i]>>1;
1062 } 1062 }
1063 QP_store= c->stdQPTable; 1063 QP_store= c->stdQPTable;
1079 { 1079 {
1080 if (QPStride >= 0) { 1080 if (QPStride >= 0) {
1081 int i; 1081 int i;
1082 const int count= mbHeight * QPStride; 1082 const int count= mbHeight * QPStride;
1083 for(i=0; i<(count>>2); i++){ 1083 for(i=0; i<(count>>2); i++){
1084 ((uint32_t*)c->nonBQPTable)[i] = ((uint32_t*)QP_store)[i] & 0x3F3F3F3F; 1084 ((uint32_t*)c->nonBQPTable)[i] = ((const uint32_t*)QP_store)[i] & 0x3F3F3F3F;
1085 } 1085 }
1086 for(i<<=2; i<count; i++){ 1086 for(i<<=2; i<count; i++){
1087 c->nonBQPTable[i] = QP_store[i] & 0x3F; 1087 c->nonBQPTable[i] = QP_store[i] & 0x3F;
1088 } 1088 }
1089 } else { 1089 } else {