diff options
author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-10-08 23:22:07 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-10-08 23:22:07 -0700 |
commit | 957a446ff270e7a04070ab83d5c03b1f35be1a74 (patch) | |
tree | 959d5d4dcbdda4023e5053b6bfd1ce43d5e4f345 /mm-video-v4l2 | |
parent | b1b13d3239350008376ee97f0f0ac00995a8d726 (diff) | |
parent | 5751d2ffaaa333f78ac89a17245ed521f9a587ff (diff) | |
download | media-957a446ff270e7a04070ab83d5c03b1f35be1a74.tar.gz |
Merge "mm-video-v4l2: vidc: venc: Optimize color align function"
Diffstat (limited to 'mm-video-v4l2')
-rw-r--r-- | mm-video-v4l2/vidc/venc/src/omx_video_base.cpp | 12 | ||||
-rwxr-xr-x | mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp index 76c68919..7083538c 100644 --- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp +++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp @@ -4756,7 +4756,17 @@ int omx_video::alloc_map_ion_memory(int size, } else { alloc_data->len = (size + (SZ_4K - 1)) & ~(SZ_4K - 1); alloc_data->align = SZ_4K; - alloc_data->flags = (flag & ION_FLAG_CACHED ? ION_FLAG_CACHED : 0); + alloc_data->flags = (flag & ION_FLAG_CACHED); + + /* If color format is Vanilla NV12, we will need to use caching for optimal + color alignment performance. + */ + + if (m_sInPortDef.format.video.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar) + { + DEBUG_PRINT_HIGH("Enabling cacheing for this buffer"); + alloc_data->flags = ION_FLAG_CACHED; + } alloc_data->heap_id_mask = (ION_HEAP(MEM_HEAP_ID) | ION_HEAP(ION_IOMMU_HEAP_ID)); DEBUG_PRINT_HIGH("ION ALLOC unsec buf: size %u align %u flags %x", diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp index 1d8ea80a..791cdb00 100755 --- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp +++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp @@ -3593,17 +3593,19 @@ bool venc_dev::venc_color_align(OMX_BUFFERHEADERTYPE *buffer, src_buf += width * height; dst_buf += y_stride * y_scanlines; for (int line = height / 2 - 1; line >= 0; --line) { + /* Align the length to 16 for better memove performance. */ memmove(dst_buf + line * uv_stride, src_buf + line * width, - width); + ALIGN(width, 16)); } dst_buf = src_buf = buffer->pBuffer; //Copy the Y next for (int line = height - 1; line > 0; --line) { + /* Align the length to 16 for better memove performance. */ memmove(dst_buf + line * y_stride, src_buf + line * width, - width); + ALIGN(width, 16)); } } else { DEBUG_PRINT_ERROR("Failed to align Chroma. from %u to %u : \ |