From: Topi Pohjolainen Date: Fri, 27 Apr 2012 14:23:54 +0000 (+0300) Subject: staging: msvdx: remove unused mb concealment support X-Git-Tag: 2.1b_release~166 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3fd0b66120b6fc15837f5479ad16d88bece80a56;p=kernel%2Fkernel-mfld-blackbay.git staging: msvdx: remove unused mb concealment support Signed-off-by: Topi Pohjolainen --- diff --git a/drivers/staging/mrst/imgv/psb_msvdxinit.c b/drivers/staging/mrst/imgv/psb_msvdxinit.c index cfdf08a..cda82c5 100644 --- a/drivers/staging/mrst/imgv/psb_msvdxinit.c +++ b/drivers/staging/mrst/imgv/psb_msvdxinit.c @@ -825,171 +825,6 @@ static ssize_t psb_msvdx_pmstate_show(struct device *dev, static DEVICE_ATTR(msvdx_pmstate, 0444, psb_msvdx_pmstate_show, NULL); -static void psb_msvdx_conceal_mb(char * ec_start, char * ref_start, - uint32_t start_err_mb, uint32_t end_err_mb, - uint32_t pic_width_mb, uint32_t stride, - uint32_t mb_width, uint32_t mb_height) -{ - int i, offset_start, offset_end, size, full_line_start, full_line_end, extra_line_start, extra_line_end; - char *src, *dst; - - (void)offset_end; - (void)offset_start; - - full_line_start = (start_err_mb / pic_width_mb) * stride * mb_height; - full_line_end = ((end_err_mb + 1) / pic_width_mb) * stride * mb_height; - extra_line_start = (start_err_mb % pic_width_mb) * mb_width; - extra_line_end = (end_err_mb + 1) % pic_width_mb * mb_width; - if (extra_line_start != 0) { - size = stride - extra_line_start; - src = ref_start + full_line_start + extra_line_start; - dst = ec_start + full_line_start + extra_line_start; - for (i = 0; i < mb_height; i++) { - memcpy(dst, src, size); - //memset(dst, 255, size); - src += stride; - dst += stride; - } - full_line_start += stride * mb_height; - } - src = ref_start + full_line_start; - dst = ec_start + full_line_start; - size = full_line_end - full_line_start; - memcpy(dst, src, size); - //memset(dst, 255, size); - if (extra_line_end != 0) { - size = extra_line_end; - src = ref_start + full_line_end; - dst = ec_start + full_line_end; - for (i = 0; i < mb_height; i++) { - memcpy(dst, src, size); - //memset(dst, 255, size); - src += stride; - dst += stride; - } - } -} - - -static void psb_msvdx_error_concealment(struct work_struct *data) -{ - uint32_t i; - int ret; - struct msvdx_private *msvdx_priv = container_of(data, struct msvdx_private, ec_work); - drm_psb_msvdx_frame_info_t *ec_frame = NULL; - drm_psb_msvdx_frame_info_t *ref_frame = NULL; - static struct ttm_bo_kmap_obj ec_kmap, ref_kmap; - struct ttm_buffer_object *ec_bo = NULL; - struct ttm_buffer_object *ref_bo = NULL; - struct ttm_object_file *tfile = msvdx_priv->tfile; - drm_psb_msvdx_decode_status_t *decode_status = NULL; - bool is_iomem; - char *ec_start, *ref_start; - - if (msvdx_priv->ec_fence > 0) - msvdx_priv->ref_pic_fence = msvdx_priv->ec_fence - 1; - else { - DRM_ERROR("Can't do error concealment for the first frame.\n"); - return; - } - - /*get the frame_info struct for error concealment frame*/ - for (i = 0; i < MAX_DECODE_BUFFERS; i++) { - if (msvdx_priv->frame_info[i].fence == msvdx_priv->ec_fence) { - ec_frame = &msvdx_priv->frame_info[i]; - break; - } - } - if (!ec_frame) { - DRM_ERROR("MSVDX: didn't find frame_info which matched the ec fence\n"); - return; - } - decode_status = &ec_frame->decode_status; - ec_bo = ttm_buffer_object_lookup(tfile, ec_frame->handle); - if (unlikely(ec_bo == NULL)) { - printk(KERN_ERR " : Could not find buffer object for setstatus.\n"); - return; - } - ret = ttm_bo_reserve(ec_bo, true, true, false, 0); - if (ret) { - DRM_ERROR("MSVDX ERROR CONCEALMENT: reserver failed.\n"); - return; - } - ret = ttm_bo_kmap(ec_bo, - 0, - (ec_frame->buffer_size + - PAGE_SIZE - 1) >> PAGE_SHIFT, - &ec_kmap); - if (ret) { - printk("MSVDX ERROR CONCEALMENT: ec kmap failed, %d.\n", ret); - return; - } - ec_start = (unsigned char *) ttm_kmap_obj_virtual(&ec_kmap, - &is_iomem); - - /*get the frame_info struct for reference frame*/ - for (i = 0; i < MAX_DECODE_BUFFERS; i++) { - if (msvdx_priv->frame_info[i].fence == msvdx_priv->ref_pic_fence) { - ref_frame = &msvdx_priv->frame_info[i]; - break; - } - } - if (!ref_frame) { - DRM_ERROR("MSVDX: didn't find frame_info which matched the ref fence\n"); - return; - } - ref_bo = ttm_buffer_object_lookup(tfile, ref_frame->handle); - if (unlikely(ref_bo == NULL)) { - printk(KERN_ERR " : Could not find buffer object for setstatus.\n"); - } - ret = ttm_bo_reserve(ref_bo, true, true, false, 0); - if (ret) { - DRM_ERROR("MSVDX ERROR CONCEALMENT: reserver failed.\n"); - return; - } - ret = ttm_bo_kmap(ref_bo, - 0, - (ref_frame->buffer_size + - PAGE_SIZE - 1) >> PAGE_SHIFT, - &ref_kmap); - if (ret) { - printk("MSVDX ERROR CONCEALMENT: ref kmap failed, %d.\n", ret); - return; - } - ref_start = (unsigned char *) ttm_kmap_obj_virtual(&ref_kmap, - &is_iomem); - - /*copy missing mb from ref picture to ec picture*/ - for (i = 0; i < decode_status->num_error_slice; i++) { - if ((decode_status->start_error_mb_list[i] >= ec_frame->size_mb) || - (decode_status->end_error_mb_list[i] >= ec_frame->size_mb) || - (decode_status->start_error_mb_list[i] > decode_status->end_error_mb_list[i])) - continue; - psb_msvdx_conceal_mb(ec_start, ref_start, - decode_status->start_error_mb_list[i], - decode_status->end_error_mb_list[i], - ec_frame->picture_width_mb, ec_frame->buffer_stride, - 16, 16); - psb_msvdx_conceal_mb(ec_start + ec_frame->buffer_size * 2 / 3, - ref_start + ec_frame->buffer_size * 2 / 3, - decode_status->start_error_mb_list[i], - decode_status->end_error_mb_list[i], - ec_frame->picture_width_mb, ec_frame->buffer_stride, - 16, 8); - } - - ttm_bo_kunmap(&ec_kmap); - ttm_bo_kunmap(&ref_kmap); - ttm_bo_unreserve(ec_bo); - ttm_bo_unreserve(ref_bo); - - if (ec_bo) - ttm_bo_unref(&ec_bo); - if (ref_bo) - ttm_bo_unref(&ref_bo); - -} - int psb_msvdx_init(struct drm_device *dev) { struct drm_psb_private *dev_priv = dev->dev_private;