Mercurial > mplayer.hg
diff libmpeg2/decode.c @ 41:0d76b2b962ad
added mpeg 1/2 postprocessing
author | arpi_esp |
---|---|
date | Mon, 05 Mar 2001 23:02:30 +0000 |
parents | 846535ace7a2 |
children | b7b038ee3fde |
line wrap: on
line diff
--- a/libmpeg2/decode.c Mon Mar 05 15:33:10 2001 +0000 +++ b/libmpeg2/decode.c Mon Mar 05 23:02:30 2001 +0000 @@ -51,7 +51,7 @@ static int drop_flag = 0; static int drop_frame = 0; -#ifdef POSTPROC +#ifdef MPEG12_POSTPROC int quant_store[MBR+1][MBC+1]; // [Review] #endif @@ -86,7 +86,7 @@ motion_comp_init (); } -static vo_frame_t frames[3]; +static vo_frame_t frames[4]; void mpeg2_allocate_image_buffers (picture_t * picture) { @@ -100,7 +100,11 @@ buff_size = frame_size + (frame_size/4)*2; // 4Y + 1U + 1V // allocate images in YV12 format +#ifdef MPEG12_POSTPROC + for(i=0;i<4;i++){ +#else for(i=0;i<3;i++){ +#endif base = shmem_alloc(buff_size); frames[i].base[0] = base; frames[i].base[1] = base + frame_size * 5 / 4; @@ -114,13 +118,6 @@ picture->backward_reference_frame=&frames[1]; picture->current_frame=&frames[2]; -#ifdef POSTPROC - base = shmem_alloc(buff_size); - picture->pp_frame[0] = base; - picture->pp_frame[1] = base + frame_size * 5 / 4; - picture->pp_frame[2] = base + frame_size; -#endif - } static void copy_slice (vo_frame_t * frame, uint8_t ** src){ @@ -157,6 +154,23 @@ if (((picture->picture_structure == FRAME_PICTURE) || (picture->second_field)) ) { +#ifdef MPEG12_POSTPROC + if(picture->pp_options){ + // apply OpenDivX postprocess filter + int stride[3]; + stride[0]=picture->coded_picture_width; + stride[1]=stride[2]=stride[0]/2; + postprocess((picture->picture_coding_type == B_TYPE) ? + picture->current_frame->base : + picture->forward_reference_frame->base, + stride[0], frames[3].base, stride[0], + picture->coded_picture_width, picture->coded_picture_height, + &quant_store[1][1], (MBC+1), picture->pp_options); + output->draw_slice (frames[3].base, stride, + picture->display_picture_width, + picture->display_picture_height, 0, 0); + } else +#endif #if 1 if (picture->picture_coding_type != B_TYPE) { int stride[3]; @@ -215,6 +229,10 @@ } else { if (picture->picture_coding_type == B_TYPE){ picture->current_frame = &frames[2]; +#ifdef MPEG12_POSTPROC + if(picture->pp_options) + picture->current_frame->copy=NULL; else +#endif picture->current_frame->copy=copy_slice; } else { picture->current_frame = picture->forward_reference_frame;