|
|
|
@ -4505,22 +4505,38 @@ status_t ACodec::setupAVCEncoderParameters(const sp<AMessage> &msg) {
|
|
|
|
|
status_t ACodec::configureImageGrid(
|
|
|
|
|
const sp<AMessage> &msg, sp<AMessage> &outputFormat) {
|
|
|
|
|
int32_t tileWidth, tileHeight, gridRows, gridCols;
|
|
|
|
|
if (!msg->findInt32("tile-width", &tileWidth) ||
|
|
|
|
|
!msg->findInt32("tile-height", &tileHeight) ||
|
|
|
|
|
!msg->findInt32("grid-rows", &gridRows) ||
|
|
|
|
|
!msg->findInt32("grid-cols", &gridCols)) {
|
|
|
|
|
OMX_BOOL useGrid = OMX_FALSE;
|
|
|
|
|
if (msg->findInt32("tile-width", &tileWidth) &&
|
|
|
|
|
msg->findInt32("tile-height", &tileHeight) &&
|
|
|
|
|
msg->findInt32("grid-rows", &gridRows) &&
|
|
|
|
|
msg->findInt32("grid-cols", &gridCols)) {
|
|
|
|
|
useGrid = OMX_TRUE;
|
|
|
|
|
} else {
|
|
|
|
|
// when bEnabled is false, the tile info is not used,
|
|
|
|
|
// but clear out these too.
|
|
|
|
|
tileWidth = tileHeight = gridRows = gridCols = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!mIsImage && !useGrid) {
|
|
|
|
|
return OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
OMX_VIDEO_PARAM_ANDROID_IMAGEGRIDTYPE gridType;
|
|
|
|
|
InitOMXParams(&gridType);
|
|
|
|
|
gridType.nPortIndex = kPortIndexOutput;
|
|
|
|
|
gridType.bEnabled = OMX_TRUE;
|
|
|
|
|
gridType.bEnabled = useGrid;
|
|
|
|
|
gridType.nTileWidth = tileWidth;
|
|
|
|
|
gridType.nTileHeight = tileHeight;
|
|
|
|
|
gridType.nGridRows = gridRows;
|
|
|
|
|
gridType.nGridCols = gridCols;
|
|
|
|
|
|
|
|
|
|
ALOGV("sending image grid info to component: bEnabled %d, tile %dx%d, grid %dx%d",
|
|
|
|
|
gridType.bEnabled,
|
|
|
|
|
gridType.nTileWidth,
|
|
|
|
|
gridType.nTileHeight,
|
|
|
|
|
gridType.nGridRows,
|
|
|
|
|
gridType.nGridCols);
|
|
|
|
|
|
|
|
|
|
status_t err = mOMXNode->setParameter(
|
|
|
|
|
(OMX_INDEXTYPE)OMX_IndexParamVideoAndroidImageGrid,
|
|
|
|
|
&gridType, sizeof(gridType));
|
|
|
|
@ -4541,6 +4557,13 @@ status_t ACodec::configureImageGrid(
|
|
|
|
|
(OMX_INDEXTYPE)OMX_IndexParamVideoAndroidImageGrid,
|
|
|
|
|
&gridType, sizeof(gridType));
|
|
|
|
|
|
|
|
|
|
ALOGV("received image grid info from component: bEnabled %d, tile %dx%d, grid %dx%d",
|
|
|
|
|
gridType.bEnabled,
|
|
|
|
|
gridType.nTileWidth,
|
|
|
|
|
gridType.nTileHeight,
|
|
|
|
|
gridType.nGridRows,
|
|
|
|
|
gridType.nGridCols);
|
|
|
|
|
|
|
|
|
|
if (err == OK && gridType.bEnabled) {
|
|
|
|
|
outputFormat->setInt32("tile-width", gridType.nTileWidth);
|
|
|
|
|
outputFormat->setInt32("tile-height", gridType.nTileHeight);
|
|
|
|
|