The vendor is about to check in a fix for this issue, the workaround is no longer needed
This commit is contained in:
@@ -90,7 +90,6 @@ private:
|
||||
kRequiresFlushCompleteEmulation = 16,
|
||||
kRequiresAllocateBufferOnOutputPorts = 32,
|
||||
kRequiresFlushBeforeShutdown = 64,
|
||||
kAlwaysAllocateOutputWithPadding = 128,
|
||||
};
|
||||
|
||||
struct BufferInfo {
|
||||
|
||||
@@ -219,11 +219,6 @@ sp<OMXCodec> OMXCodec::Create(
|
||||
if (!strcmp(componentName, "OMX.TI.AAC.decode")) {
|
||||
quirks |= kNeedsFlushBeforeDisable;
|
||||
quirks |= kRequiresFlushCompleteEmulation;
|
||||
|
||||
// The following is currently necessary for proper shutdown
|
||||
// behaviour, but NOT enabled by default in order to make the
|
||||
// bug reproducible...
|
||||
// quirks |= kRequiresFlushBeforeShutdown;
|
||||
}
|
||||
if (!strncmp(componentName, "OMX.qcom.video.encoder.", 23)) {
|
||||
quirks |= kRequiresLoadedToIdleAfterAllocation;
|
||||
@@ -245,15 +240,6 @@ sp<OMXCodec> OMXCodec::Create(
|
||||
quirks |= kRequiresAllocateBufferOnOutputPorts;
|
||||
}
|
||||
|
||||
if (!strcmp(componentName, "OMX.qcom.video.decoder.avc")) {
|
||||
// This decoder misreports the required output buffer size if
|
||||
// the content in question is not a multiple-16 width/height.
|
||||
|
||||
// XXX Not enabled by default to make the bug reproducible by
|
||||
// the vendor.
|
||||
// quirks |= kAlwaysAllocateOutputWithPadding;
|
||||
}
|
||||
|
||||
sp<OMXCodec> codec = new OMXCodec(
|
||||
omx, node, quirks, createEncoder, mime, componentName,
|
||||
source);
|
||||
@@ -848,25 +834,6 @@ status_t OMXCodec::allocateBuffersOnPort(OMX_U32 portIndex) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((portIndex == kPortIndexOutput)
|
||||
&& (mQuirks & kAlwaysAllocateOutputWithPadding)) {
|
||||
CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
|
||||
const OMX_VIDEO_PORTDEFINITIONTYPE *videoDef = &def.format.video;
|
||||
CHECK_EQ(videoDef->eColorFormat, OMX_QCOM_COLOR_FormatYVU420SemiPlanar);
|
||||
|
||||
OMX_U32 width = (videoDef->nFrameWidth + 15) & ~0x0f;
|
||||
OMX_U32 height = (videoDef->nFrameHeight + 15) & ~0x0f;
|
||||
|
||||
size_t newBufferSize = (width * height * 3) / 2;
|
||||
CHECK(newBufferSize >= def.nBufferSize);
|
||||
if (newBufferSize > def.nBufferSize) {
|
||||
CODEC_LOGV("Rounding up output buffersize from %ld to %ld "
|
||||
"to accomodate multiple-of-16 alignment.",
|
||||
def.nBufferSize, newBufferSize);
|
||||
}
|
||||
def.nBufferSize = newBufferSize;
|
||||
}
|
||||
|
||||
size_t totalSize = def.nBufferCountActual * def.nBufferSize;
|
||||
mDealer[portIndex] = new MemoryDealer(totalSize);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user