From c5b93b3e1ecf574238ac933df8da8bdb8b5fa236 Mon Sep 17 00:00:00 2001 From: arpi Date: Thu, 18 Apr 2002 15:03:08 +0000 Subject: slices+field pictures fixed, initial sig11 workaround git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5676 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vd_libmpeg2.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'libmpcodecs') diff --git a/libmpcodecs/vd_libmpeg2.c b/libmpcodecs/vd_libmpeg2.c index 45158fc02b..30de55112a 100644 --- a/libmpcodecs/vd_libmpeg2.c +++ b/libmpcodecs/vd_libmpeg2.c @@ -73,6 +73,8 @@ if(gCpuCaps.has3DNow) 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 @@ static mp_image_t* parse_chunk (sh_video_t* sh, int code, uint8_t * buffer, int 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 @@ static mp_image_t* parse_chunk (sh_video_t* sh, int code, uint8_t * buffer, int 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); -- cgit v1.2.3