diff options
author | iive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-11-08 01:56:09 +0000 |
---|---|---|
committer | iive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-11-08 01:56:09 +0000 |
commit | 4924d714bc57ad87a464a39f095931b62885e416 (patch) | |
tree | 13f581a04954a80ebef9642d78de9acb21be714d /libmpcodecs | |
parent | 26924f104be15a5b579cc8e6a5e996cda68bfeaa (diff) | |
download | mpv-4924d714bc57ad87a464a39f095931b62885e416.tar.bz2 mpv-4924d714bc57ad87a464a39f095931b62885e416.tar.xz |
aspect change does not flush buffers
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11415 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index fe21232947..b13ca25f35 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -389,7 +389,9 @@ static int init_vo(sh_video_t *sh){ 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 @@ static int mc_get_buffer(AVCodecContext *avctx, AVFrame *pic){ 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 @@ static void mc_release_buffer(AVCodecContext *avctx, AVFrame *pic){ //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; } |