This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

mpscalar -> scalar issue ?

Hi,

My link chain consists of

decoder -> mpscalar->scaler->nsf->dsp->encoder


When I use a sample which starts at a resolution of 2592X1944 and then in the middle switches to a resolution of 1920x1080 (in other words, the mpscalar no longer needs to be used for the 2nd part of the stream) the scalar returns an error, asserts, and stops.

The error is -3 (FVID2_EINVALID_PARAMS) and its returned from the call to FVID2_processFrames in function SclrLink_drvSubmitData


Is there some operation I need to perform on the scalar when the MPSCALAR is no longer being used on the frames and is merely "pass through" ???


I should mention I am using DVRRDK_03.50.00.08

many thanks!

Aaron

  • If you start with resolution of 1920x1080 or lesser does it work ?

    The issue you are seeing looks to be issue with scaler link handling runtime format change.

    When switching from MPScale resolution to 1920x1080 MpScaler is bypassed and the frame format changes from

    YUV422I to YUV420SP assuming your frame originally came from decoder.

    Can you check updating SclrLink_drvUpdateRtParams to update the rtParam->memType and rtParam->dataFormat

        rtParam->memType  = rtChInfo->memType;
        rtParam->dataFormat = rtChInfo->dataFormat;


    Also add debug Vps_prints in SclrLink_drvUpdateRtParams to confirm width/height/pitch/dataFormat is correctly updated.

  • thank you very much for your suggestion --- the problem seemed to be here in the file sclrLink_drv.c

    in SclrLink_drvMakeFrameLists I needed to add:

                    if (pInFrameInfo->rtChInfo.dataFormat != rtChInfo->dataFormat)
                    {
                        rtChInfo->dataFormat = pInFrameInfo->rtChInfo.dataFormat;
                        rtParamUpdatePerFrame = TRUE;
                    }
                    if (pInFrameInfo->rtChInfo.memType != rtChInfo->memType)
                    {
                        rtChInfo->memType = pInFrameInfo->rtChInfo.memType;
                        rtParamUpdatePerFrame = TRUE;
                    }

    inside this case:  if ((pInFrameInfo != NULL) && (pInFrameInfo->rtChInfoUpdate == TRUE))

    ALSO as you suggested in SclrLink_drvUpdateRtParams I added

        rtParam->memType    = rtChInfo->memType;
        rtParam->dataFormat = rtChInfo->dataFormat;

    THANKS!