int rebuild_jpg_config_para(jpeg_data_t *jpeg_data,jpegdec_config_t *config) { int ret = 0; switch(sMode){ case KEEP_SIZE: case KEEPASPECTRATIO: case SCRETCHFULLSCREEN: ret = compute_keep_ratio(jpeg_data,config); break; break; case KEEPASPECTRATIOWITHCROP: ret = compute_keep_ratio_by_expanding(jpeg_data,config); if(ret < 0){ ret = compute_keep_ratio(jpeg_data,config); } break; default: break; } if(config->dec_h<2) { ALOGD("too small to decode with hwjpeg decoder.\n"); return -1; } return 0; }
int rebuild_jpg_config_para(jpeg_data_t *jpeg_data,jpegdec_config_t *config) { int ret = 0; if((scale_w*jpeg_data->info.height)!= (scale_h*jpeg_data->info.width)){ sMode = IGNOREASPECTRATIO; }else{ sMode = KEEPASPECTRATIO; } #ifdef JPEG_DBG printf("current sMode is %d\n",sMode); #endif switch(sMode){ case KEEPASPECTRATIO: ret = compute_keep_ratio(jpeg_data,config); break; case IGNOREASPECTRATIO: ret = compute_keep_ratio_by_expanding(jpeg_data,config); if(ret < 0){ ret = compute_keep_ratio(jpeg_data,config); } break; case KEEPASPECTRATIOBYEXPANDING: ret = compute_keep_ratio_by_expanding(jpeg_data,config); if(ret < 0){ ret = compute_keep_ratio(jpeg_data,config); } break; default: break; } if(config->dec_h<2) { printf("too small to decode with hwjpeg decoder.\n"); return -1; } config->canvas_width = CANVAS_ALIGNED(config->dec_w); planes[0] = (unsigned char *)CMEM_alloc(0, config->canvas_width * config->dec_h, &cmemParm); planes[1] = (unsigned char *)CMEM_alloc(0, CANVAS_ALIGNED((config->canvas_width/2)) *config->dec_h/2, &cmemParm); planes[2] = (unsigned char *)CMEM_alloc(0, CANVAS_ALIGNED((config->canvas_width/2)) * config->dec_h/2, &cmemParm); if ((!planes[0]) || (!planes[1]) || (!planes[2])) { printf("Not enough memory\n"); if (planes[0]) CMEM_free(planes[0], &cmemParm); if (planes[1]) CMEM_free(planes[1], &cmemParm); if (planes[2]) CMEM_free(planes[2], &cmemParm); return -1; } config->addr_y = CMEM_getPhys(planes[0]); config->addr_u = CMEM_getPhys(planes[1]); config->addr_v = CMEM_getPhys(planes[2]); if(config->dec_w==0 ||config->dec_h==0) { config->dec_w= jpeg_data->info.width; config->dec_h= jpeg_data->info.height; } // scaleSize(config->dec_w, config->dec_h, jpeg_data->info.width, jpeg_data->info.height, (Qt::AspectRatioMode)config->opt); config->opt = 0; config->dec_x = 0; config->dec_y = 0; config->angle = CLKWISE_0; clear_plane(0,config); clear_plane(1,config); clear_plane(2,config); return 0; }