Merge "media: Add xml entry for hevc with CQ codec"
diff --git a/conf_files/kona/media_codecs.xml b/conf_files/kona/media_codecs.xml
index ffb158e..50233a0 100644
--- a/conf_files/kona/media_codecs.xml
+++ b/conf_files/kona/media_codecs.xml
@@ -172,6 +172,7 @@
| | 3840 2160 120 220 3888000 |
| | 4096 2160 60 220 2073600 |
| | 8192 4320 24 220 3317760 |
+ | hevc.cq | 512 512 3825 220 3916800 3916800 |
| mpeg4-sw | 1280 720 30 4 108000 108000 |
| vp8 | 1280 720 60 70 216000 2073600 |
| | 1920 1088 60 70 489600 |
@@ -252,6 +253,7 @@
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="CQ" />
+ <Limit name="performance-point-512x512" value="3825" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.heic" type="image/vnd.android.heic" >
<Quirk name="requires-allocate-on-input-ports" />
@@ -335,7 +337,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.mpeg2" type="video/mpeg2" >
@@ -416,7 +417,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" >
@@ -452,7 +452,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<!-- Video Software -->
diff --git a/conf_files/kona/media_codecs_performance.xml b/conf_files/kona/media_codecs_performance.xml
index 4072536..29ecd0b 100644
--- a/conf_files/kona/media_codecs_performance.xml
+++ b/conf_files/kona/media_codecs_performance.xml
@@ -127,11 +127,11 @@
<Limit name="measured-frame-rate-1920x1080" range="248-248" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.vp9" type="video/x-vnd.on2.vp9" update="true">
- <Limit name="measured-frame-rate-320x240" range="1103-1262" />
- <Limit name="measured-frame-rate-640x360" range="1055-1163" />
- <Limit name="measured-frame-rate-1280x720" range="579-594" />
- <Limit name="measured-frame-rate-1920x1080" range="496-518" />
- <Limit name="measured-frame-rate-3840x2160" range="139-139" />
+ <Limit name="measured-frame-rate-320x240" range="330-450" />
+ <Limit name="measured-frame-rate-640x360" range="300-390" />
+ <Limit name="measured-frame-rate-1280x720" range="238-253" />
+ <Limit name="measured-frame-rate-1920x1080" range="175-225" />
+ <Limit name="measured-frame-rate-3840x2160" range="83-98" />
</MediaCodec>
<MediaCodec name="OMX.google.h264.decoder" type="video/avc" update="true">
<Limit name="measured-frame-rate-320x240" range="122-370" />
diff --git a/conf_files/kona/media_codecs_vendor.xml b/conf_files/kona/media_codecs_vendor.xml
index 496c906..52c55fa 100644
--- a/conf_files/kona/media_codecs_vendor.xml
+++ b/conf_files/kona/media_codecs_vendor.xml
@@ -172,6 +172,7 @@
| | 3840 2160 120 220 3888000 |
| | 4096 2160 60 220 2073600 |
| | 8192 4320 24 220 3317760 |
+ | hevc.cq | 512 512 3825 220 3916800 3916800 |
| mpeg4-sw | 1280 720 30 4 108000 108000 |
| vp8 | 1280 720 60 70 216000 2073600 |
| | 1920 1088 60 70 489600 |
@@ -253,6 +254,7 @@
<Limit name="concurrent-instances" max="16" />
<Limit name="quality" range="0-100" default="80" />
<Feature name="bitrate-modes" value="CQ" />
+ <Limit name="performance-point-512x512" value="3825" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.encoder.heic" type="image/vnd.android.heic" >
<Quirk name="requires-allocate-on-input-ports" />
@@ -336,7 +338,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.mpeg2" type="video/mpeg2" >
@@ -417,7 +418,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<MediaCodec name="OMX.qcom.video.decoder.hevc" type="video/hevc" >
@@ -453,7 +453,6 @@
<Feature name="secure-playback" required="true" />
<Limit name="concurrent-instances" max="3" />
<Limit name="performance-point-3840x2160" value="60" />
- <Limit name="performance-point-4096x2160" value="60" />
<Limit name="performance-point-4096x2304" value="60" />
</MediaCodec>
<!-- Video Software -->
diff --git a/conf_files/kona/mediacodec-seccomp.policy b/conf_files/kona/mediacodec-seccomp.policy
index 3bf11a3..0b75b84 100644
--- a/conf_files/kona/mediacodec-seccomp.policy
+++ b/conf_files/kona/mediacodec-seccomp.policy
@@ -17,3 +17,5 @@
timer_create: 1
timer_settime: 1
rt_sigtimedwait: 1
+readlink: 1
+open: 1
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp
index b7ca088..ca3674f 100644
--- a/libc2dcolorconvert/C2DColorConverter.cpp
+++ b/libc2dcolorconvert/C2DColorConverter.cpp
@@ -303,7 +303,6 @@
case YCbCr420P:
case YCrCb420P:
case NV12_2K:
- case NV12_512:
case NV12_128m:
case NV12_UBWC:
case TP10_UBWC:
@@ -486,7 +485,6 @@
return (C2D_COLOR_FORMAT_420_NV12 | C2D_FORMAT_MACROTILED);
case YCbCr420SP:
case NV12_2K:
- case NV12_512:
case NV12_128m:
return C2D_COLOR_FORMAT_420_NV12;
case YCbCr420P:
@@ -519,10 +517,8 @@
return ALIGN(width, ALIGN16);
case NV12_2K:
return ALIGN(width, ALIGN16);
- case NV12_512:
- return ALIGN(width, ALIGN512);
case NV12_128m:
- return ALIGN(width, ALIGN128);
+ return ALIGN(width, ALIGN512);
case YCbCr420P:
return ALIGN(width, ALIGN16);
case YCrCb420P:
@@ -553,10 +549,8 @@
size_t lumaSize = ALIGN(alignedw * height, ALIGN2K);
return lumaSize;
}
- case NV12_512:
- return ALIGN(width, ALIGN512) * ALIGN(height, ALIGN512);
case NV12_128m:
- return ALIGN(width, ALIGN128) * ALIGN(height, ALIGN32);
+ return ALIGN(width, ALIGN512) * ALIGN(height, ALIGN512);
case NV12_UBWC:
return ALIGN( VENUS_Y_STRIDE(COLOR_FMT_NV12_UBWC, width) *
VENUS_Y_SCANLINES(COLOR_FMT_NV12_UBWC, height), ALIGN4K) +
@@ -635,16 +629,11 @@
__FUNCTION__, width, height, size);
}
break;
- case NV12_512:
+ case NV12_128m:
alignedw = ALIGN(width, ALIGN512);
alignedh = ALIGN(height, ALIGN512);
size = ALIGN(alignedw * alignedh + (alignedw * ALIGN((height+1)/2, ALIGN256)), ALIGN4K);
break;
- case NV12_128m:
- alignedw = ALIGN(width, ALIGN128);
- alignedh = ALIGN(height, ALIGN32);
- size = ALIGN(alignedw * alignedh + (alignedw * ALIGN((height+1)/2, ALIGN16)), ALIGN4K);
- break;
case NV12_UBWC:
size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_UBWC, width, height);
break;
@@ -750,10 +739,8 @@
switch (format) {
case NV12_2K:
return ALIGN2K;
- case NV12_512:
- return ALIGN512;
case NV12_128m:
- return 1;
+ return ALIGN512;
case NV12_UBWC:
case TP10_UBWC:
return ALIGN4K;
@@ -771,7 +758,6 @@
case YCbCr420SP: //OR NV12
case YCbCr420P:
case NV12_2K:
- case NV12_512:
case NV12_128m:
case NV12_UBWC:
case TP10_UBWC:
@@ -801,7 +787,6 @@
case YCrCb420P:
case YCbCr420Tile:
case NV12_2K:
- case NV12_512:
case NV12_128m:
case NV12_UBWC:
case TP10_UBWC:
diff --git a/libc2dcolorconvert/C2DColorConverter.h b/libc2dcolorconvert/C2DColorConverter.h
index f677deb..d23c780 100644
--- a/libc2dcolorconvert/C2DColorConverter.h
+++ b/libc2dcolorconvert/C2DColorConverter.h
@@ -108,7 +108,6 @@
RGBA8888,
RGBA8888_UBWC,
NV12_2K,
- NV12_512,
NV12_128m,
NV12_UBWC,
TP10_UBWC,
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
index b808d75..b666cd6 100644
--- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
+++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
@@ -325,7 +325,7 @@
size_t offset;
size_t len;
uint32_t flags;
- int64_t time_stamp;
+ uint64_t time_stamp;
enum vdec_picture pic_type;
void *client_data;
struct vdec_picsize picsize;
diff --git a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
index a8e77f2..569d53d 100644
--- a/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
+++ b/mm-video-v4l2/vidc/venc/inc/video_encoder_device_v4l2.h
@@ -265,7 +265,7 @@
struct statistics {
struct timeval prev_tv;
int prev_fbd;
- int bytes_generated;
+ OMX_U32 bytes_generated;
};
enum rc_modes {
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 a45edbc..40ed324 100644
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
@@ -291,7 +291,6 @@
mMapPixelFormat2Converter.insert({
{HAL_PIXEL_FORMAT_RGBA_8888, RGBA8888},
{HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC, NV12_UBWC},
- {HAL_PIXEL_FORMAT_NV12_HEIF, NV12_512},
});
pthread_mutex_init(&m_lock, NULL);
@@ -5127,7 +5126,7 @@
private_handle_t::PRIV_FLAGS_ITU_R_601_FR : 0;
if (m_sOutPortDef.format.video.eCompressionFormat == OMX_VIDEO_CodingImageHEIC)
- c2dDestFmt = NV12_512;
+ c2dDestFmt = NV12_128m;
if (c2dcc.getConversionNeeded() &&
c2dcc.isPropChanged(m_sInPortDef.format.video.nFrameWidth,
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 a9cc8b2..ab2f301 100644
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -440,14 +440,14 @@
/* calc avg. fps, bitrate */
struct timeval tv;
gettimeofday(&tv,NULL);
- OMX_U64 time_diff = (tv.tv_sec * 1000000ULL + tv.tv_usec) -
- (stats.prev_tv.tv_sec * 1000000ULL + stats.prev_tv.tv_usec);
+ OMX_U64 time_diff = ((uint64_t) tv.tv_sec * (uint64_t) 1000000ULL + (uint64_t) tv.tv_usec) -
+ ((uint64_t) stats.prev_tv.tv_sec * (uint64_t) 1000000ULL + (uint64_t) stats.prev_tv.tv_usec);
if (time_diff >= 1000000) {
OMX_U32 num_fbd = omx->handle->fbd - stats.prev_fbd;
if (stats.prev_tv.tv_sec && num_fbd && time_diff) {
float framerate = num_fbd * 1000000/(float)time_diff;
- OMX_U32 bitrate = (stats.bytes_generated * 8 / num_fbd) * framerate;
- DEBUG_PRINT_INFO("stats: avg. fps %0.2f, bitrate %d",
+ OMX_U64 bitrate = (stats.bytes_generated * 8 / num_fbd) * framerate;
+ DEBUG_PRINT_INFO("stats: avg. fps %0.2f, bitrate %llu",
framerate, bitrate);
}
stats.prev_tv = tv;
@@ -935,7 +935,6 @@
switch (color_format) {
case NV12_128m:
- case NV12_512:
return venc_set_color_format((OMX_COLOR_FORMATTYPE)QOMX_COLOR_FORMATYUV420PackedSemiPlanar32m);
case NV12_UBWC:
return venc_set_color_format((OMX_COLOR_FORMATTYPE)QOMX_COLOR_FORMATYUV420PackedSemiPlanar32mCompressed);
@@ -1369,23 +1368,6 @@
fwrite(ptemp, m_sVenc_cfg.input_width, 1, m_debug.infile);
ptemp += stride;
}
- } else if (color_format == COLOR_FMT_NV12_512) {
- stride = VENUS_Y_STRIDE(color_format, m_sVenc_cfg.input_width);
- scanlines = VENUS_Y_SCANLINES(color_format, m_sVenc_cfg.input_height);
-
- for (i = 0; i < scanlines; i++) {
- fwrite(ptemp, stride, 1, m_debug.infile);
- ptemp += stride;
- }
- if (metadatamode == 1) {
- ptemp = pvirt + (stride * scanlines);
- } else {
- ptemp = (unsigned char *)pbuffer->pBuffer + (stride * scanlines);
- }
- for (i = 0; i < scanlines/2; i++) {
- fwrite(ptemp, stride, 1, m_debug.infile);
- ptemp += stride;
- }
} else if (color_format == COLOR_FMT_RGBA8888) {
stride = VENUS_RGB_STRIDE(color_format, m_sVenc_cfg.input_width);
scanlines = VENUS_RGB_SCANLINES(color_format, m_sVenc_cfg.input_height);
@@ -2686,8 +2668,8 @@
m_sVenc_cfg.inputformat = isUBWC ? V4L2_PIX_FMT_NV12_UBWC : V4L2_PIX_FMT_NV12;
DEBUG_PRINT_INFO("ENC_CONFIG: Input Color = NV12 %s", isUBWC ? "UBWC" : "Linear");
} else if (handle->format == HAL_PIXEL_FORMAT_NV12_HEIF) {
- m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12_512;
- DEBUG_PRINT_INFO("ENC_CONFIG: Input Color = NV12_512");
+ m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12;
+ DEBUG_PRINT_INFO("ENC_CONFIG: Input Color = NV12");
} else if (handle->format == HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS_UBWC) {
m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12_UBWC;
DEBUG_PRINT_INFO("ENC_CONFIG: Input Color = NV12_UBWC");
@@ -3018,9 +3000,6 @@
case V4L2_PIX_FMT_NV12:
color_format = COLOR_FMT_NV12;
break;
- case V4L2_PIX_FMT_NV12_512:
- color_format = COLOR_FMT_NV12_512;
- break;
case V4L2_PIX_FMT_NV12_UBWC:
color_format = COLOR_FMT_NV12_UBWC;
break;
@@ -3595,10 +3574,7 @@
}
if (m_codec == OMX_VIDEO_CodingImageHEIC)
- format = V4L2_PIX_FMT_NV12_512;
-
- if (m_codec == OMX_VIDEO_CodingImageHEIC)
- format = V4L2_PIX_FMT_NV12_512;
+ format = V4L2_PIX_FMT_NV12;
return format;
}
@@ -3644,10 +3620,7 @@
}
if (m_codec == OMX_VIDEO_CodingImageHEIC)
- m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12_512;
-
- if (m_codec == OMX_VIDEO_CodingImageHEIC)
- m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12_512;
+ m_sVenc_cfg.inputformat = V4L2_PIX_FMT_NV12;
memset(&fmt, 0, sizeof(fmt));
fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2_params.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2_params.cpp
index 8824c4c..561cf05 100755
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2_params.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2_params.cpp
@@ -55,17 +55,12 @@
*usage &= ~GRALLOC_USAGE_PRIVATE_ALLOC_UBWC;
DEBUG_PRINT_INFO("Clear UBWC consumer usage bits as 10-bit linear color requested");
}
- } else if (mUseLinearColorFormat & REQUEST_LINEAR_COLOR_8_BIT) {
+ } else if (mUseLinearColorFormat & REQUEST_LINEAR_COLOR_8_BIT ||
+ m_codec == OMX_VIDEO_CodingImageHEIC) {
*usage &= ~GRALLOC_USAGE_PRIVATE_ALLOC_UBWC;
DEBUG_PRINT_INFO("Clear UBWC consumer usage bits as 8-bit linear color requested");
}
- if (m_codec == OMX_VIDEO_CodingImageHEIC) {
- DEBUG_PRINT_INFO("Clear UBWC and set HEIF consumer usage bit");
- *usage &= ~GRALLOC_USAGE_PRIVATE_ALLOC_UBWC;
- *usage |= GRALLOC_USAGE_PRIVATE_HEIF_VIDEO;
- }
-
DEBUG_PRINT_INFO("venc_get_consumer_usage 0x%x", *usage);
}