diff options
Diffstat (limited to 'libmpcodecs/vf_spp.c')
-rw-r--r-- | libmpcodecs/vf_spp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libmpcodecs/vf_spp.c b/libmpcodecs/vf_spp.c index 85d7ff9fc1..8dfcf41b5c 100644 --- a/libmpcodecs/vf_spp.c +++ b/libmpcodecs/vf_spp.c @@ -475,9 +475,15 @@ static int put_image(struct vf_instance* vf, mp_image_t *mpi, double pts){ vf->priv->mpeg2= mpi->qscale_type; if(mpi->pict_type != 3 && mpi->qscale && !vf->priv->qp){ + int w = mpi->qstride; + int h = (mpi->h + 15) >> 4; + if (!w) { + w = (mpi->w + 15) >> 4; + h = 1; + } if(!vf->priv->non_b_qp) - vf->priv->non_b_qp= malloc(mpi->qstride * ((mpi->h + 15) >> 4)); - fast_memcpy(vf->priv->non_b_qp, mpi->qscale, mpi->qstride * ((mpi->h + 15) >> 4)); + vf->priv->non_b_qp= malloc(w*h); + fast_memcpy(vf->priv->non_b_qp, mpi->qscale, w*h); } if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){ char *qp_tab= vf->priv->non_b_qp; |