Merge change Ie3ffb526 into eclair
* changes: do not merge: The qcom video decoders always output yuv data after adjusting dimensions to be a multiple of 16.
This commit is contained in:
@@ -90,6 +90,7 @@ private:
|
||||
kRequiresFlushCompleteEmulation = 16,
|
||||
kRequiresAllocateBufferOnOutputPorts = 32,
|
||||
kRequiresFlushBeforeShutdown = 64,
|
||||
kOutputDimensionsAre16Aligned = 128,
|
||||
};
|
||||
|
||||
struct BufferInfo {
|
||||
|
||||
@@ -210,6 +210,7 @@ sp<OMXCodec> OMXCodec::Create(
|
||||
uint32_t quirks = 0;
|
||||
if (!strcmp(componentName, "OMX.PV.avcdec")) {
|
||||
quirks |= kWantsNALFragments;
|
||||
quirks |= kOutputDimensionsAre16Aligned;
|
||||
}
|
||||
if (!strcmp(componentName, "OMX.TI.MP3.decode")) {
|
||||
quirks |= kNeedsFlushBeforeDisable;
|
||||
@@ -231,6 +232,7 @@ sp<OMXCodec> OMXCodec::Create(
|
||||
// XXX Required on P....on only.
|
||||
quirks |= kRequiresAllocateBufferOnInputPorts;
|
||||
quirks |= kRequiresAllocateBufferOnOutputPorts;
|
||||
quirks |= kOutputDimensionsAre16Aligned;
|
||||
}
|
||||
|
||||
if (!strncmp(componentName, "OMX.TI.", 7)) {
|
||||
@@ -2386,7 +2388,7 @@ void OMXCodec::initOutputFormat(const sp<MetaData> &inputFormat) {
|
||||
CHECK(!"Unknown compression format.");
|
||||
}
|
||||
|
||||
if (!strcmp(mComponentName, "OMX.PV.avcdec")) {
|
||||
if (mQuirks & kOutputDimensionsAre16Aligned) {
|
||||
// This component appears to be lying to me.
|
||||
mOutputFormat->setInt32(
|
||||
kKeyWidth, (video_def->nFrameWidth + 15) & -16);
|
||||
|
||||
@@ -83,6 +83,11 @@ void QComHardwareRenderer::render(
|
||||
}
|
||||
|
||||
mISurface->postBuffer(offset);
|
||||
|
||||
// Since we cannot tell how long it'll take until surface flinger
|
||||
// has displayed the data onscreen, we'll just have to guess...
|
||||
// We must not return the buffer to the decoder before it's been displayed.
|
||||
usleep(25000);
|
||||
}
|
||||
|
||||
bool QComHardwareRenderer::getOffset(void *platformPrivate, size_t *offset) {
|
||||
|
||||
Reference in New Issue
Block a user