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

Commit 0f694a12 authored by Ronghua Wu's avatar Ronghua Wu
Browse files

stagefright: fix fake-stride handling for H263 SW decoder

- Use outputBufferWidth/Height to init H263 decoder.
- Handle stride change when using fake stride.

Bug: 17773094
Bug: 17326758
Change-Id: I66ce7b9c650383456923d75417c590e3a8a814e7
parent c06cf18e
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -156,7 +156,8 @@ void SoftMPEG4::onQueueFilled(OMX_U32 /* portIndex */) {
                (mMode == MODE_MPEG4) ? MPEG4_MODE : H263_MODE;

            Bool success = PVInitVideoDecoder(
                    mHandle, vol_data, &vol_size, 1, mWidth, mHeight, mode);
                    mHandle, vol_data, &vol_size, 1,
                    outputBufferWidth(), outputBufferHeight(), mode);

            if (!success) {
                ALOGW("PVInitVideoDecoder failed. Unsupported content?");
@@ -321,7 +322,7 @@ bool SoftMPEG4::handlePortSettingsChange() {

            vol_data[0] = NULL;
            if (!PVInitVideoDecoder(
                    mHandle, vol_data, &vol_size, 1, mWidth, mHeight,
                    mHandle, vol_data, &vol_size, 1, outputBufferWidth(), outputBufferHeight(),
                    H263_MODE)) {
                notify(OMX_EventError, OMX_ErrorUndefined, 0, NULL);
                mSignalledError = true;
+8 −1
Original line number Diff line number Diff line
@@ -166,8 +166,15 @@ void SoftVideoDecoderOMXComponent::handlePortSettingsChange(
    bool sizeChanged = (width != mWidth || height != mHeight);
    bool updateCrop = (cropSettingsMode == kCropUnSet);
    bool cropChanged = (cropSettingsMode == kCropChanged);
    bool strideChanged = false;
    if (fakeStride) {
        OMX_PARAM_PORTDEFINITIONTYPE *def = &editPortInfo(kOutputPortIndex)->mDef;
        if (def->format.video.nStride != width || def->format.video.nSliceHeight != height) {
            strideChanged = true;
        }
    }

    if (sizeChanged || cropChanged) {
    if (sizeChanged || cropChanged || strideChanged) {
        mWidth = width;
        mHeight = height;