summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-04 17:42:59 +0000
committerhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-04 17:42:59 +0000
commit4a8453e1fac7ad04b585b786369a31d3213d1cf2 (patch)
treed910f815199775a9eb843c5f7b079bacc66b8232
parent05870e62a5c905f8ea54e4fca4f443146e8f4b0b (diff)
downloadchromium_src-4a8453e1fac7ad04b585b786369a31d3213d1cf2.zip
chromium_src-4a8453e1fac7ad04b585b786369a31d3213d1cf2.tar.gz
chromium_src-4a8453e1fac7ad04b585b786369a31d3213d1cf2.tar.bz2
Merge 226912 "Exynos decoder: workaround for wrong MFC output fo..."
> Exynos decoder: workaround for wrong MFC output format. > > EVDA currently uses NV12MT_16X16 (tiled) format for MFC output, while EVEA > uses NV12M (non-tiled) format. There appears to be a MFC driver or firmware > bug when VP8 decode and H264 encode run concurrently. > > Workaround is to force EVDA to use non-tiled format (NV12M) so that MFC > output format is the same for both EVEA and EVDA. > > BUG=302870 > TEST=verify corruption is fixed when tab casting VP8 playback, AND hardware decoder is used. > R=scherkus@chromium.org > > Review URL: https://codereview.chromium.org/25758003 TBR=hshi@chromium.org Review URL: https://codereview.chromium.org/25700011 git-svn-id: svn://svn.chromium.org/chrome/branches/1650/src@227032 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/common/gpu/media/exynos_video_decode_accelerator.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/content/common/gpu/media/exynos_video_decode_accelerator.cc b/content/common/gpu/media/exynos_video_decode_accelerator.cc
index edce5f3..554e760 100644
--- a/content/common/gpu/media/exynos_video_decode_accelerator.cc
+++ b/content/common/gpu/media/exynos_video_decode_accelerator.cc
@@ -384,10 +384,12 @@ bool ExynosVideoDecodeAccelerator::Initialize(
return false;
// MFC output format has to be setup before streaming starts.
+ // TODO(hshi): set format back to tiled (V4L2_PIX_FMT_NV12MT_16X16) when we
+ // fix the underlying driver/firmware issue. http://crbug.com/303300.
struct v4l2_format format;
memset(&format, 0, sizeof(format));
format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- format.fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12MT_16X16;
+ format.fmt.pix_mp.pixelformat = V4L2_PIX_FMT_NV12M;
IOCTL_OR_ERROR_RETURN_FALSE(mfc_fd_, VIDIOC_S_FMT, &format);
// Subscribe to the resolution change event.
@@ -2096,7 +2098,7 @@ bool ExynosVideoDecodeAccelerator::CreateBuffersForFormat(
mfc_output_buffer_size_[0] = format.fmt.pix_mp.plane_fmt[0].sizeimage;
mfc_output_buffer_size_[1] = format.fmt.pix_mp.plane_fmt[1].sizeimage;
mfc_output_buffer_pixelformat_ = format.fmt.pix_mp.pixelformat;
- DCHECK_EQ(mfc_output_buffer_pixelformat_, V4L2_PIX_FMT_NV12MT_16X16);
+ DCHECK_EQ(mfc_output_buffer_pixelformat_, V4L2_PIX_FMT_NV12M);
DVLOG(3) << "CreateBuffersForFormat(): new resolution: "
<< frame_buffer_size_.ToString();