summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2018-06-30 22:56:32 +0300
committerMichael Bestas <mkbestas@lineageos.org>2018-06-30 22:56:45 +0300
commit5866fde349723133db9171642bed2134ad708f6d (patch)
tree35a91f770d8557db7ca304e101feac1ee5282d02
parent3159153cd0100ad3891316372bc321dfc60039f5 (diff)
parent9cd7ef4124f04a59cfbfbee540fdf3e6bd0cb13d (diff)
downloadandroid_hardware_qcom_media-lineage-15.1-caf-8998.tar.gz
android_hardware_qcom_media-lineage-15.1-caf-8998.tar.bz2
android_hardware_qcom_media-lineage-15.1-caf-8998.zip
Merge tag 'LA.UM.6.4.r1-09000-8x98.0' of https://source.codeaurora.org/quic/la/platform/hardware/qcom/media into lineage-15.1-caf-8998lineage-15.1-caf-8998
"LA.UM.6.4.r1-09000-8x98.0" Change-Id: I5a8cfc652700269ac7e17f4e789408f9e23b1397
-rw-r--r--mm-core/inc/QOMX_AudioExtensions.h16
-rw-r--r--mm-core/inc/QOMX_AudioIndexExtensions.h3
-rw-r--r--mm-core/src/msm8953/registry_table_android.c27
-rw-r--r--mm-core/src/msm8998/registry_table.c18
-rw-r--r--mm-core/src/sdm660/registry_table_android.c16
-rw-r--r--mm-video-v4l2/vidc/vdec/inc/omx_vdec.h2
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp44
-rw-r--r--mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp23
8 files changed, 96 insertions, 53 deletions
diff --git a/mm-core/inc/QOMX_AudioExtensions.h b/mm-core/inc/QOMX_AudioExtensions.h
index 71797b1b..dab06142 100644
--- a/mm-core/inc/QOMX_AudioExtensions.h
+++ b/mm-core/inc/QOMX_AudioExtensions.h
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------------
-Copyright (c) 2009, 2011, 2015, 2017 The Linux Foundation. All rights reserved.
+Copyright (c) 2009, 2011, 2015, 2017-2018 The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -98,6 +98,7 @@ typedef enum QOMX_AUDIO_CODINGTYPE {
QOMX_AUDIO_CodingEVRCB = 0x7F000001,
QOMX_AUDIO_CodingEVRCWB = 0x7F000002,
QOMX_AUDIO_CodingFLAC = 0x7F000003,
+ QOMX_AUDIO_CodingMPEGH = 0x7F000004,
QOMX_AUDIO_CodingMax = 0x7FFFFFFF
}QOMX_AUDIO_CODINGTYPE;
@@ -581,6 +582,19 @@ typedef struct QOMX_AUDIO_PARAM_DSD_TYPE {
OMX_U32 nBitsPerSample;
} QOMX_AUDIO_PARAM_DSD_TYPE;
+typedef struct QOMX_AUDIO_PARAM_MPEGH_TYPE {
+ OMX_U32 nSize;
+ OMX_VERSIONTYPE nVersion;
+ OMX_U32 nPortIndex;
+ OMX_U32 nSampleRate; /** Sent In-Band as well and can be redundant For Decoder, **/
+ OMX_U32 nBitRate; /** Sent In-Band as well and can be redundant For Decoder, **/
+ OMX_U32 nSamplesPerFrame; /** Sent In-Band as well and can be redundant For Decoder, **/
+ OMX_U32 nDFrames; /** No of Dependent Frames; if 10;every 11 frame is seekable
+ - Specific to Encoder; Redundant for Decoder **/
+ OMX_U32 nHOAOrder; /** HOA Order - Specific to Encoder; May be redundant for
+ Decoder **/
+} QOMX_AUDIO_PARAM_MPEGH_TYPE;
+
enum {
kKeyIndexAlacFrameLength = 0,
kKeyIndexAlacCompatibleVersion = 4,
diff --git a/mm-core/inc/QOMX_AudioIndexExtensions.h b/mm-core/inc/QOMX_AudioIndexExtensions.h
index 34e4667c..8e83c076 100644
--- a/mm-core/inc/QOMX_AudioIndexExtensions.h
+++ b/mm-core/inc/QOMX_AudioIndexExtensions.h
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------------
-Copyright (c) 2009, 2015 The Linux Foundation. All rights reserved.
+Copyright (c) 2009, 2015, 2018 The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -75,6 +75,7 @@ typedef enum QOMX_AUDIO_EXTENSIONS_INDEXTYPE
QOMX_IndexParamAudioApe = 0x7F200009, /** "OMX.Qualcomm.index.audio.ape" */
QOMX_IndexParamAudioFlacDec = 0x7F20000A, /** "OMX.Qualcomm.index.audio.flacdec**/
QOMX_IndexParamAudioDsdDec = 0x7F20000B, /** "OMX.Qualcomm.index.audio.Dsddec**/
+ QOMX_IndexParamAudioMpegh = 0x7F20000C, /** "OMX.Qualcomm.index.audio.mpegh**/
QOMX_IndexParamAudioUnused = 0x7F2FFFFF
} QOMX_AUDIO_EXTENSIONS_INDEXTYPE;
diff --git a/mm-core/src/msm8953/registry_table_android.c b/mm-core/src/msm8953/registry_table_android.c
index 5c563772..8721fa16 100644
--- a/mm-core/src/msm8953/registry_table_android.c
+++ b/mm-core/src/msm8953/registry_table_android.c
@@ -270,6 +270,20 @@ omx_core_cb_type core[] =
}
},
{
+ "OMX.qcom.video.decoder.vp9.secure",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxVdec.so",
+ {
+ "video_decoder.vp9"
+ }
+ },
+
+ {
"OMX.qcom.audio.decoder.amrnb",
NULL, // Create instance function
// Unique instance handle
@@ -678,19 +692,6 @@ omx_core_cb_type core[] =
}
},
{
- "OMX.qcom.video.decoder.vp9.secure",
- NULL, // Create instance function
- // Unique instance handle
- {
- NULL
- },
- NULL, // Shared object library handle
- "libOmxVdec.so",
- {
- "video_decoder.vp9"
- }
- },
- {
"OMX.qcom.file.muxer",
NULL, // Create instance function
// Unique instance handle
diff --git a/mm-core/src/msm8998/registry_table.c b/mm-core/src/msm8998/registry_table.c
index be1e2260..8527a032 100644
--- a/mm-core/src/msm8998/registry_table.c
+++ b/mm-core/src/msm8998/registry_table.c
@@ -1,5 +1,5 @@
/*--------------------------------------------------------------------------
-Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
+Copyright (c) 2016 - 2018, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
@@ -481,6 +481,22 @@ omx_core_cb_type core[] =
}
},
{
+ "OMX.qcom.audio.encoder.mpegh",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxMpeghEncSw.so",
+ {
+ "audio_encoder.mpegh"
+ }
+ },
+ {
"OMX.qcom.audio.encoder.evrc",
NULL, // Create instance function
// Unique instance handle
diff --git a/mm-core/src/sdm660/registry_table_android.c b/mm-core/src/sdm660/registry_table_android.c
index e6c8d24e..be0cfb26 100644
--- a/mm-core/src/sdm660/registry_table_android.c
+++ b/mm-core/src/sdm660/registry_table_android.c
@@ -608,6 +608,22 @@ omx_core_cb_type core[] =
}
},
{
+ "OMX.qcom.audio.encoder.mpegh",
+ NULL, // Create instance function
+ // Unique instance handle
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ NULL, // Shared object library handle
+ "libOmxMpeghEncSw.so",
+ {
+ "audio_encoder.mpegh"
+ }
+ },
+ {
"OMX.qcom.audio.encoder.evrc",
NULL, // Create instance function
// Unique instance handle
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
index e32d79a8..7fae231e 100644
--- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
+++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
@@ -50,6 +50,7 @@ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <cutils/atomic.h>
#include <qdMetaData.h>
#include <color_metadata.h>
+#define STRINGIFY_ENUMS
#include <media/msm_media_info.h>
static ptrdiff_t x;
@@ -78,6 +79,7 @@ extern "C" {
#endif // _ANDROID_
#if defined (_ANDROID_HONEYCOMB_) || defined (_ANDROID_ICS_)
+#define STRINGIFY_ENUMS
#include <media/hardware/HardwareAPI.h>
#endif
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 2ac3144b..582234d8 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -5501,20 +5501,34 @@ OMX_ERRORTYPE omx_vdec::get_config(OMX_IN OMX_HANDLETYPE hComp,
VALIDATE_OMX_PARAM_DATA(configData, DescribeColorAspectsParams);
DescribeColorAspectsParams *params = (DescribeColorAspectsParams *)configData;
- print_debug_color_aspects(&(m_client_color_space.sAspects), "GetConfig Client");
- print_debug_color_aspects(&(m_internal_color_space.sAspects), "GetConfig Internal");
-
if (params->bRequestingDataSpace) {
DEBUG_PRINT_HIGH("Does not handle dataspace request");
return OMX_ErrorUnsupportedSetting;
}
- if (m_internal_color_space.bDataSpaceChanged == OMX_TRUE) {
- DEBUG_PRINT_LOW("Updating Client's color aspects with internal");
- memcpy(&(m_client_color_space.sAspects),
- &(m_internal_color_space.sAspects), sizeof(ColorAspects));
- m_internal_color_space.bDataSpaceChanged = OMX_FALSE;
- }
- memcpy(&(params->sAspects), &(m_client_color_space.sAspects), sizeof(ColorAspects));
+
+ print_debug_color_aspects(&(m_client_color_space.sAspects), "GetConfig Client");
+ print_debug_color_aspects(&(m_internal_color_space.sAspects), "GetConfig Internal");
+
+ // For VPX, use client-color if specified.
+ // For the rest, try to use the stream-color if present
+ bool preferClientColor = (output_capability == V4L2_PIX_FMT_VP8 ||
+ output_capability == V4L2_PIX_FMT_VP9);
+
+ const ColorAspects &preferredColor = preferClientColor ?
+ m_client_color_space.sAspects : m_internal_color_space.sAspects;
+ const ColorAspects &defaultColor = preferClientColor ?
+ m_internal_color_space.sAspects : m_client_color_space.sAspects;
+
+ params->sAspects.mPrimaries = preferredColor.mPrimaries != ColorAspects::PrimariesUnspecified ?
+ preferredColor.mPrimaries : defaultColor.mPrimaries;
+ params->sAspects.mTransfer = preferredColor.mTransfer != ColorAspects::TransferUnspecified ?
+ preferredColor.mTransfer : defaultColor.mTransfer;
+ params->sAspects.mMatrixCoeffs = preferredColor.mMatrixCoeffs != ColorAspects::MatrixUnspecified ?
+ preferredColor.mMatrixCoeffs : defaultColor.mMatrixCoeffs;
+ params->sAspects.mRange = preferredColor.mRange != ColorAspects::RangeUnspecified ?
+ preferredColor.mRange : defaultColor.mRange;
+
+ print_debug_color_aspects(&(params->sAspects), "GetConfig");
break;
}
@@ -11164,9 +11178,10 @@ void omx_vdec::convert_color_space_info(OMX_U32 primaries, OMX_U32 range,
}
}
-void omx_vdec::print_debug_color_aspects(ColorAspects *aspects, const char *prefix) {
- DEBUG_PRINT_HIGH("%s : Color aspects : Primaries = %d Range = %d Transfer = %d MatrixCoeffs = %d",
- prefix, aspects->mPrimaries, aspects->mRange, aspects->mTransfer, aspects->mMatrixCoeffs);
+void omx_vdec::print_debug_color_aspects(ColorAspects *a, const char *prefix) {
+ DEBUG_PRINT_HIGH("%s : Color aspects : Primaries = %d(%s) Range = %d(%s) Tx = %d(%s) Matrix = %d(%s)",
+ prefix, a->mPrimaries, asString(a->mPrimaries), a->mRange, asString(a->mRange),
+ a->mTransfer, asString(a->mTransfer), a->mMatrixCoeffs, asString(a->mMatrixCoeffs));
}
void omx_vdec::prepare_color_aspects_metadata(OMX_U32 primaries, OMX_U32 range,
@@ -11278,6 +11293,8 @@ bool omx_vdec::handle_color_space_info(void *data,
if (vpx_color_space_payload->color_space == 0) {
*color_space = ITU_R_601;
+ aspects->mPrimaries = ColorAspects::PrimariesBT601_6_525;
+ aspects->mRange = ColorAspects::RangeLimited;
} else {
DEBUG_PRINT_ERROR("Unsupported Color space for VP8");
break;
@@ -11352,7 +11369,6 @@ bool omx_vdec::handle_color_space_info(void *data,
m_internal_color_space.sAspects.mMatrixCoeffs != aspects->mMatrixCoeffs ||
m_internal_color_space.sAspects.mRange != aspects->mRange) {
memcpy(&(m_internal_color_space.sAspects), aspects, sizeof(ColorAspects));
- m_internal_color_space.bDataSpaceChanged = OMX_TRUE;
m_color_mdata.colorPrimaries = color_mdata->colorPrimaries;
m_color_mdata.range = color_mdata->range;
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 0c690a32..194bd0f0 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
@@ -2007,32 +2007,9 @@ bool venc_dev::venc_set_param(void *paramData, OMX_INDEXTYPE index)
}
m_sOutput_buff_property.datasize = fmt.fmt.pix_mp.plane_fmt[0].sizeimage;
-
- m_sOutput_buff_property.actualcount = portDefn->nBufferCountActual;
- bufreq.memory = V4L2_MEMORY_USERPTR;
- bufreq.count = portDefn->nBufferCountActual;
- bufreq.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
-
- if (ioctl(m_nDriver_fd,VIDIOC_REQBUFS, &bufreq)) {
- DEBUG_PRINT_ERROR("VIDIOC_REQBUFS CAPTURE_MPLANE Failed");
- return false;
- }
-
- if (bufreq.count == portDefn->nBufferCountActual)
- m_sOutput_buff_property.mincount = m_sOutput_buff_property.actualcount = bufreq.count;
-
- if (portDefn->nBufferCountActual >= m_sOutput_buff_property.mincount)
- m_sOutput_buff_property.actualcount = portDefn->nBufferCountActual;
-
- if (fmt.fmt.pix_mp.num_planes > 1)
- output_extradata_info.count = m_sOutput_buff_property.actualcount;
-
}
-
DEBUG_PRINT_LOW("input: actual: %u, min: %u, count_req: %u",
(unsigned int)portDefn->nBufferCountActual, (unsigned int)m_sInput_buff_property.mincount, bufreq.count);
- DEBUG_PRINT_LOW("Output: actual: %u, min: %u, count_req: %u",
- (unsigned int)portDefn->nBufferCountActual, (unsigned int)m_sOutput_buff_property.mincount, bufreq.count);
} else if (portDefn->nPortIndex == PORT_INDEX_OUT) {
m_sVenc_cfg.dvs_height = portDefn->format.video.nFrameHeight;
m_sVenc_cfg.dvs_width = portDefn->format.video.nFrameWidth;