# HG changeset patch # User iive # Date 1068256569 0 # Node ID 8770be0a5bb5bea8f363dc8df398b0e8562302bc # Parent e250b0e9e6084e8ab3ef9cb81c85b4a571713255 aspect change does not flush buffers diff -r e250b0e9e608 -r 8770be0a5bb5 libmpcodecs/vd_ffmpeg.c --- a/libmpcodecs/vd_ffmpeg.c Sat Nov 08 01:33:38 2003 +0000 +++ b/libmpcodecs/vd_ffmpeg.c Sat Nov 08 01:56:09 2003 +0000 @@ -389,7 +389,9 @@ float aspect= avctx->aspect_ratio; #endif - if ( aspect != ctx->last_aspect || + // it is possible another vo buffers to be used after vo config() + // lavc reset its buffers on width/heigh change but not on aspect change!!! + if (// aspect != ctx->last_aspect || avctx->width != sh->disp_w || avctx->height != sh->disp_h || !ctx->vo_inited) @@ -833,6 +835,8 @@ pic->type= FF_BUFFER_TYPE_USER; render=(xvmc_render_state_t*)mpi->priv;//same as data[2] + if(verbose > 4) + printf("vd_ffmpeg::mc_get_buffer (render=%p)\n",render); assert(render != 0); assert(render->magic == MP_XVMC_RENDER_MAGIC); render->state |= MP_XVMC_STATE_PREDICTION; @@ -858,11 +862,11 @@ //printf("R%X %X\n", pic->linesize[0], pic->data[0]); //mark the surface as not requared for prediction render=(xvmc_render_state_t*)pic->data[2];//same as mpi->priv + if(verbose > 4) + printf("vd_ffmpeg::mc_release_buffer (render=%p)\n",render); assert(render!=NULL); assert(render->magic==MP_XVMC_RENDER_MAGIC); render->state&=~MP_XVMC_STATE_PREDICTION; - if(verbose > 4) - printf("vd_ffmpeg::mc_release buffer (render=%p)\n",render); for(i=0; i<4; i++){ pic->data[i]= NULL; }