mirror of https://github.com/mpv-player/mpv
Make sure that a qstride of 0 (intentional or not) does not completely break
the code (crash if malloc(0) != NULL, otherwise wrong qscales used for B-frames). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30405 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
570f1f5dec
commit
7725c6d73b
|
@ -533,9 +533,15 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts)
|
||||||
|
|
||||||
vf->priv->mpeg2= mpi->qscale_type;
|
vf->priv->mpeg2= mpi->qscale_type;
|
||||||
if(mpi->pict_type != 3 && mpi->qscale && !vf->priv->qp){
|
if(mpi->pict_type != 3 && mpi->qscale && !vf->priv->qp){
|
||||||
if(!vf->priv->non_b_qp)
|
int w = mpi->qstride;
|
||||||
vf->priv->non_b_qp= malloc(mpi->qstride * ((mpi->h + 15) >> 4));
|
int h = (mpi->h + 15) >> 4;
|
||||||
fast_memcpy(vf->priv->non_b_qp, mpi->qscale, mpi->qstride * ((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(w*h);
|
||||||
|
fast_memcpy(vf->priv->non_b_qp, mpi->qscale, w*h);
|
||||||
}
|
}
|
||||||
if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){
|
if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){
|
||||||
char *qp_tab= vf->priv->non_b_qp;
|
char *qp_tab= vf->priv->non_b_qp;
|
||||||
|
|
|
@ -480,9 +480,15 @@ static int put_image(struct vf_instance_s* vf, mp_image_t *mpi, double pts){
|
||||||
|
|
||||||
vf->priv->mpeg2= mpi->qscale_type;
|
vf->priv->mpeg2= mpi->qscale_type;
|
||||||
if(mpi->pict_type != 3 && mpi->qscale && !vf->priv->qp){
|
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)
|
if(!vf->priv->non_b_qp)
|
||||||
vf->priv->non_b_qp= malloc(mpi->qstride * ((mpi->h + 15) >> 4));
|
vf->priv->non_b_qp= malloc(w*h);
|
||||||
fast_memcpy(vf->priv->non_b_qp, mpi->qscale, mpi->qstride * ((mpi->h + 15) >> 4));
|
fast_memcpy(vf->priv->non_b_qp, mpi->qscale, w*h);
|
||||||
}
|
}
|
||||||
if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){
|
if(vf->priv->log2_count || !(mpi->flags&MP_IMGFLAG_DIRECT)){
|
||||||
char *qp_tab= vf->priv->non_b_qp;
|
char *qp_tab= vf->priv->non_b_qp;
|
||||||
|
|
Loading…
Reference in New Issue