summaryrefslogtreecommitdiff
path: root/mm-video-v4l2
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-10-08 23:22:07 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-10-08 23:22:07 -0700
commit957a446ff270e7a04070ab83d5c03b1f35be1a74 (patch)
tree959d5d4dcbdda4023e5053b6bfd1ce43d5e4f345 /mm-video-v4l2
parentb1b13d3239350008376ee97f0f0ac00995a8d726 (diff)
parent5751d2ffaaa333f78ac89a17245ed521f9a587ff (diff)
downloadmedia-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.cpp12
-rwxr-xr-xmm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp6
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 : \