Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6453027 authored by Lajos Molnar's avatar Lajos Molnar Committed by Android Git Automerger
Browse files

am d8ba6ef1: am 38a97bd7: stagefright: keep alignment restrictions for SoftVideoDecoder

* commit 'd8ba6ef1':
  stagefright: keep alignment restrictions for SoftVideoDecoder
parents 51d74bb3 d8ba6ef1
Loading
Loading
Loading
Loading
+14 −21
Original line number Diff line number Diff line
@@ -149,7 +149,9 @@ void SoftVideoDecoderOMXComponent::updatePortDefinitions(bool updateCrop, bool u

    // when output format changes, input buffer size does not actually change
    if (updateInputSize) {
        inDef->nBufferSize = max(outDef->nBufferSize / mMinCompressionRatio, mMinInputBufferSize);
        inDef->nBufferSize = max(
                outDef->nBufferSize / mMinCompressionRatio,
                max(mMinInputBufferSize, inDef->nBufferSize));
    }

    if (updateCrop) {
@@ -388,30 +390,21 @@ OMX_ERRORTYPE SoftVideoDecoderOMXComponent::internalSetParameter(
            uint32_t newHeight = video_def->nFrameHeight;
            if (newWidth != oldWidth || newHeight != oldHeight) {
                bool outputPort = (newParams->nPortIndex == kOutputPortIndex);
                def->format.video.nFrameWidth =
                    (mIsAdaptive && outputPort) ? mAdaptiveMaxWidth : newWidth;
                def->format.video.nFrameHeight =
                    (mIsAdaptive && outputPort) ? mAdaptiveMaxHeight : newHeight;
                if (outputPort) {
                    def->format.video.nStride = def->format.video.nFrameWidth;
                    def->format.video.nSliceHeight = def->format.video.nFrameHeight;
                    def->nBufferSize =
                        def->format.video.nStride * def->format.video.nSliceHeight * 3 / 2;


                    OMX_PARAM_PORTDEFINITIONTYPE *inDef = &editPortInfo(kInputPortIndex)->mDef;
                    // increase input buffer size if required
                    inDef->nBufferSize =
                        max(def->nBufferSize / mMinCompressionRatio, inDef->nBufferSize);

                    // only update (essentially crop) if size changes
                    mWidth = newWidth;
                    mHeight = newHeight;
                    mCropLeft = 0;
                    mCropTop = 0;
                    mCropWidth = newWidth;
                    mCropHeight = newHeight;
                }

                    updatePortDefinitions(true /* updateCrop */, true /* updateInputSize */);
                    // reset buffer size based on frame size
                    newParams->nBufferSize = def->nBufferSize;
                } else {
                    // For input port, we only set nFrameWidth and nFrameHeight. Buffer size
                    // is updated when configuring the output port using the max-frame-size,
                    // though client can still request a larger size.
                    def->format.video.nFrameWidth = newWidth;
                    def->format.video.nFrameHeight = newHeight;
                }
            }
            return SimpleSoftOMXComponent::internalSetParameter(index, params);
        }