[Mplayer-cvslog] CVS: main/libmpeg2 decode.c,1.13,1.14

Arpi of Ize arpi at mplayer.dev.hu
Sat Sep 29 23:40:26 CEST 2001


Update of /cvsroot/mplayer/main/libmpeg2
In directory mplayer:/var/tmp.root/cvs-serv19857

Modified Files:
	decode.c 
Log Message:
mpeg2-interlaced patch by Ivan Kalvatchev <iive at yahoo.com>

Index: decode.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpeg2/decode.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- decode.c	23 Aug 2001 12:46:04 -0000	1.13
+++ decode.c	29 Sep 2001 21:40:24 -0000	1.14
@@ -182,12 +182,10 @@
         
 //        if(picture->picture_structure != FRAME_PICTURE) printf("Field! %d  \n",picture->second_field);
         
-	if(!framedrop)
-	if (((picture->picture_structure == FRAME_PICTURE) ||
-		 (picture->second_field))
-           ) {
+	    if(picture->picture_structure == FRAME_PICTURE) 
+	    {
 #ifdef MPEG12_POSTPROC
-	       if(picture->pp_options){
+	       if( (picture->pp_options) && (!framedrop) ){
                     // apply OpenDivX postprocess filter
             	    int stride[3];
             	    stride[0]=picture->coded_picture_width;
@@ -201,20 +199,23 @@
 		    output->draw_slice (frames[3].base, stride, 
                         picture->display_picture_width,
                         picture->display_picture_height, 0, 0);
-	       }// else
-#endif
-#if 0
-		if (picture->picture_coding_type != B_TYPE) {
+	       } 
+#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->forward_reference_frame->base,
+		    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);
-                }
-#endif
-	}
+                }else
+		is_frame_done=0;// we don't draw top fields
+    	    }
 #ifdef ARCH_X86
 	if (config.flags & MM_ACCEL_X86_MMX) emms();
 #endif
@@ -273,14 +274,16 @@
 		}
 	    }
 
-#if 1
 #ifdef MPEG12_POSTPROC
-	            if(picture->pp_options)
-			picture->current_frame->copy=NULL; else
-#endif
-		    picture->current_frame->copy=copy_slice;
+            if(picture->pp_options)
+		picture->current_frame->copy=NULL; 
+	    else
 #endif
-	    if(framedrop) picture->current_frame->copy=NULL;
+	    picture->current_frame->copy=copy_slice;
+
+
+	    if ((framedrop) || (picture->picture_structure != FRAME_PICTURE) )
+		picture->current_frame->copy=NULL;
 	    picture->current_frame->vo=output;
 	    picture->slice=0;
 




More information about the MPlayer-cvslog mailing list