Mercurial > mplayer.hg
changeset 2253:0cc88042ff21
enable postprocess for interlaced fields
author | iive |
---|---|
date | Thu, 18 Oct 2001 15:43:35 +0000 |
parents | 6697e0568f87 |
children | 6e5b548790c9 |
files | libmpeg2/decode.c |
diffstat | 1 files changed, 37 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpeg2/decode.c Thu Oct 18 11:48:46 2001 +0000 +++ b/libmpeg2/decode.c Thu Oct 18 15:43:35 2001 +0000 @@ -168,6 +168,35 @@ ++picture->slice; } +void draw_frame(vo_functions_t * output) +{ +int stride[3]; + + stride[0]=picture->coded_picture_width; + stride[1]=stride[2]=stride[0]/2; +#ifdef MPEG12_POSTPROC + if( picture->pp_options ) + {// apply postprocess filter + 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 + { + output->draw_slice ((picture->picture_coding_type == B_TYPE) ? + picture->current_frame->base : + picture->forward_reference_frame->base, + stride, + picture->display_picture_width, + picture->display_picture_height, 0, 0); + } +} static int in_slice_flag=0; @@ -186,36 +215,15 @@ if(picture->picture_structure == FRAME_PICTURE) { #ifdef MPEG12_POSTPROC - if( (picture->pp_options) && (!framedrop) ){ - // apply 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); - } + if( (picture->pp_options) && (!framedrop) ) + draw_frame(output); #endif - }else{ - if( (picture->second_field) && (!framedrop) ) - { - int stride[3]; - stride[0]=picture->coded_picture_width; - stride[1]=stride[2]=stride[0]/2; - output->draw_slice ((picture->picture_coding_type == B_TYPE) ? - picture->current_frame->base : - picture->forward_reference_frame->base, - stride, - picture->display_picture_width, - picture->display_picture_height, 0, 0); - }else - is_frame_done=0;// we don't draw top fields + }else + { + if( (picture->second_field) && (!framedrop) ) + draw_frame(output); + else + is_frame_done=0;// we don't draw first fields } #ifdef ARCH_X86 if (config.flags & MM_ACCEL_X86_MMX) emms();