mm-video-v4l2: vdec: Retain lock while querying C2D filled length

On port reconfig, c2d is torn down & reopened. This can trigger a
race condition with any c2d call in the component context. Hold
the c2d lock while querying filled length to avoid this race
condition.

Change-Id: Icac85d41e5e39b510728537a980c7096d016358c
mm-video: vidc: Possibly send not-coded-VOPs to the driver

Previously we were dropping the not coded VOPs in the component because
the legacy hardware didn't support decoding it.  Since the hardware now
supports decoding N-C-VOPs, send it to the hardware if the client
insists on it being decoded.  A side effect of this is FBDs which have
duplicate YUVs and timestamps.  The client is expected deal with this
side effect.

CRs-Fixed: 714038
Change-Id: I44aa4f1f26568cf59cc76751802b8aa2373fcb69
mm-video: vidc: Ignore not coded VOPs only for DIVX content

Set the defaults for processing not coded VOPs based on the specs of
each codec.

CRs-Fixed: 714038
Change-Id: I8577cbe54efe1f12c1c0d59f75ed18c38755bc92
mm-video-v4l2: vidc: Enforce non-negative timestamp deltas

When in display order, timestamps should never step backwards during
normal playback, but this may occur if timestamp adjustment
overestimates the frame interval. In such cases, return the previous
timestamp again.

Change-Id: If04d2fc98eed517ceda2300a1463dc65d641348f