# HG changeset patch # User arpi # Date 1019142188 0 # Node ID 0ff1b9ab7afc661860a62883edd0d2abd637a950 # Parent 6f3175f4151dc4f41e4053defe2f3f81a478ce6b slices+field pictures fixed, initial sig11 workaround diff -r 6f3175f4151d -r 0ff1b9ab7afc libmpcodecs/vd_libmpeg2.c --- a/libmpcodecs/vd_libmpeg2.c Thu Apr 18 14:45:43 2002 +0000 +++ b/libmpcodecs/vd_libmpeg2.c Thu Apr 18 15:03:08 2002 +0000 @@ -73,6 +73,8 @@ picture->pp_options=divx_quality; + memset(frames,0,3*sizeof(vo_frame_t)); + picture->forward_reference_frame=&frames[0]; picture->backward_reference_frame=&frames[1]; picture->temp_frame=&frames[2]; @@ -154,7 +156,9 @@ mp_image_t* mpi; int flags; if (picture->picture_coding_type == B_TYPE){ - flags=(!framedrop && vd_use_slices)?MP_IMGFLAG_DRAW_CALLBACK:0; + flags=(!framedrop && vd_use_slices && + picture->picture_structure==FRAME_PICTURE) ? + MP_IMGFLAG_DRAW_CALLBACK:0; picture->display_frame= picture->current_frame = picture->temp_frame; } else { @@ -179,6 +183,20 @@ picture->current_frame->base[1]=mpi->planes[1]; picture->current_frame->base[2]=mpi->planes[2]; picture->current_frame->mpi=mpi; // tricky! +#if 1 + if(!picture->forward_reference_frame->base[0]){ + // workaround for sig11 + picture->forward_reference_frame->base[0]=mpi->planes[0]; + picture->forward_reference_frame->base[1]=mpi->planes[1]; + picture->forward_reference_frame->base[2]=mpi->planes[2]; + } + if(!picture->backward_reference_frame->base[0]){ + // workaround for sig11 + picture->backward_reference_frame->base[0]=mpi->planes[0]; + picture->backward_reference_frame->base[1]=mpi->planes[1]; + picture->backward_reference_frame->base[2]=mpi->planes[2]; + } +#endif #ifdef MPEG12_POSTPROC mpi->qscale=&picture->current_frame->quant_store[1][1]; mpi->qstride=(MPEG2_MBC+1);