[Mplayer-cvslog] CVS: main/libvo vo_dxr3.c,1.75,1.76

Arpi arpi at thot.banki.hu
Thu Mar 28 16:15:00 CET 2002


Hi,

hey, this is PURE COSMETICS!
time to read docs/tech/cvs-howto.txt AGAIN

> Update of /cvsroot/mplayer/main/libvo
> In directory mplayer:/var/tmp.root/cvs-serv7762/libvo
> 
> Modified Files:
> 	vo_dxr3.c 
> Log Message:
> lego++ bug fixed by XorA
> 
> 
> Index: vo_dxr3.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libvo/vo_dxr3.c,v
> retrieving revision 1.75
> retrieving revision 1.76
> diff -u -r1.75 -r1.76
> --- vo_dxr3.c	26 Mar 2002 18:47:42 -0000	1.75
> +++ vo_dxr3.c	28 Mar 2002 15:05:51 -0000	1.76
> @@ -121,20 +121,20 @@
>  #endif
>  
>  LIBVO_EXTERN (dxr3)
> +
>  /* codec control */
> -enum MpegCodec
> -{
> -  MPG_CODEC_NON,
> -  MPG_CODEC_AVCODEC,
> -  MPG_CODEC_FAME
> +enum MpegCodec {
> +	MPG_CODEC_NON,
> +	MPG_CODEC_AVCODEC,
> +	MPG_CODEC_FAME
>  };
>  
> -#if defined(USE_LIBFAME)
> -static int mpeg_codec = MPG_CODEC_FAME;
> -#elif defined(USE_LIBAVCODEC)
> +#if defined(USE_LIBAVCODEC)
>  static int mpeg_codec = MPG_CODEC_AVCODEC;
> +#elif defined(USE_LIBFAME)
> +static int mpeg_codec = MPG_CODEC_FAME;
>  #else
> -statuc int mpeg_codec = MPG_CODEC_NONE;
> +static int mpeg_codec = MPG_CODEC_NONE;
>  #endif
>  
>  /* Resolutions and positions */
> @@ -304,107 +304,110 @@
>  		picture_linesize[0] = s_width;
>  		picture_linesize[1] = s_width / 2;
>  		picture_linesize[2] = s_width / 2;
> -		switch(mpeg_codec)
> -		{
> +		switch (mpeg_codec) {
>  #ifdef USE_LIBFAME
>  		case MPG_CODEC_FAME:
> -		  printf("VO: [dxr3] Using FAME\n");
> -		fame_ctx = fame_open();
> -		if (!fame_ctx) {
> -			printf("VO: [dxr3] Cannot open libFAME!\n");
> -			return -1;
> -		}
> +			printf("VO: [dxr3] Using FAME\n");
> +			fame_ctx = fame_open();
> +			if (!fame_ctx) {
> +				printf("VO: [dxr3] Cannot open libFAME!\n");
> +				return -1;
> +			}
>  
> -		fame_obj = fame_get_object(fame_ctx, "motion/pmvfast");
> -		fame_register(fame_ctx, "motion", fame_obj);
> +			fame_obj = fame_get_object(fame_ctx, "motion/pmvfast");
> +			fame_register(fame_ctx, "motion", fame_obj);
> +			
> +			memset(&fame_params, 0, sizeof(fame_parameters_t));
> +			fame_params.width = s_width;
> +			fame_params.height = s_height;
> +			fame_params.coding = "IPPPPPPP";
> +			fame_params.quality = 90;
> +			fame_params.bitrate = 0;
> +			fame_params.slices_per_frame = 1;
> +			fame_params.frames_per_sequence = (int) (vo_fps + 0.5);
> +			fame_params.shape_quality = 100;
> +			fame_params.search_range = (int) (vo_fps + 0.5);
> +			fame_params.verbose = 0;
> +			fame_params.profile = NULL;
>  		
> -		fame_params.width = s_width;
> -		fame_params.height = s_height;
> -		fame_params.coding = "IPPPPPPP";
> -		fame_params.quality = 90;
> -		fame_params.bitrate = 0;
> -		fame_params.slices_per_frame = 1;
> -		fame_params.frames_per_sequence = (int) (vo_fps + 0.5);
> -		fame_params.shape_quality = 100;
> -		fame_params.search_range = (int) (vo_fps + 0.5);
> -		fame_params.verbose = 0;
> -		fame_params.profile = NULL;
> -		
> -		if (vo_fps < 24.0) {
> -		    fame_params.frame_rate_num = 24000;
> -		    fame_params.frame_rate_den = 1001;
> -		} else if (vo_fps < 25.0) {
> -		    fame_params.frame_rate_num = 24;
> -		    fame_params.frame_rate_den = 1;
> -		} else if (vo_fps < 29.0) {
> -		    fame_params.frame_rate_num = 25;
> -		    fame_params.frame_rate_den = 1;
> -		} else if (vo_fps < 30.0) {
> -		    fame_params.frame_rate_num = 30000;
> -		    fame_params.frame_rate_den = 1001;
> -		} else if (vo_fps < 50.0) {
> -		    fame_params.frame_rate_num = 30;
> -		    fame_params.frame_rate_den = 1;
> -		} else if (vo_fps < 55.0) {
> -		    fame_params.frame_rate_num = 50;
> -		    fame_params.frame_rate_den = 1;
> -		} else if (vo_fps < 60.0) {
> -		    fame_params.frame_rate_num = 60000;
> -		    fame_params.frame_rate_den = 1001;
> -		} else {
> -		    fame_params.frame_rate_num = 60;
> -		    fame_params.frame_rate_den = 1;
> -		}
> -		
> -		outbuf = malloc(100000);
> -		fame_init(fame_ctx, &fame_params, outbuf, 100000);
> -
> -		fame_yuv.w = s_width;
> -		fame_yuv.h = s_height;
> -		fame_yuv.y = picture_data[0];
> -		fame_yuv.u = picture_data[1];
> -		fame_yuv.v = picture_data[2];
> -		break;
> +			if (vo_fps < 24.0) {
> +				fame_params.frame_rate_num = 24000;
> +				fame_params.frame_rate_den = 1001;
> +			} else if (vo_fps < 25.0) {
> +				fame_params.frame_rate_num = 24;
> +				fame_params.frame_rate_den = 1;
> +			} else if (vo_fps < 29.0) {
> +				fame_params.frame_rate_num = 25;
> +				fame_params.frame_rate_den = 1;
> +			} else if (vo_fps < 30.0) {
> +				fame_params.frame_rate_num = 30000;
> +				fame_params.frame_rate_den = 1001;
> +			} else if (vo_fps < 50.0) {
> +				fame_params.frame_rate_num = 30;
> +				fame_params.frame_rate_den = 1;
> +			} else if (vo_fps < 55.0) {
> +				fame_params.frame_rate_num = 50;
> +				fame_params.frame_rate_den = 1;
> +			} else if (vo_fps < 60.0) {
> +				fame_params.frame_rate_num = 60000;
> +				fame_params.frame_rate_den = 1001;
> +			} else {
> +				fame_params.frame_rate_num = 60;
> +				fame_params.frame_rate_den = 1;
> +			}
> +			
> +			outbuf = malloc(100000);
> +			fame_init(fame_ctx, &fame_params, outbuf, 100000);
> +
> +			fame_yuv.w = s_width;
> +			fame_yuv.h = s_height;
> +			fame_yuv.y = picture_data[0];
> +			fame_yuv.u = picture_data[1];
> +			fame_yuv.v = picture_data[2];
> +			break;
>  #endif
>  #ifdef USE_LIBAVCODEC
>  		case MPG_CODEC_AVCODEC:
> -		  printf("VO: [dxr3] Using AVCODEC\n");
> -		avc_codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
> -		if (!avc_codec) {
> -			printf("VO: [dxr3] Unable to find mpeg1video codec\n");
> -			uninit();
> -			return -1;
> -		}
> -		avc_context = malloc(sizeof(AVCodecContext));
> -		memset(avc_context, 0, sizeof(AVCodecContext));
> -		avc_context->width = s_width;
> -		avc_context->height = s_height;
> -		ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &ioval);
> -		if (ioval == EM8300_VIDEOMODE_NTSC) {
> -			avc_context->gop_size = 18;
> -		} else {
> -			avc_context->gop_size = 15;
> -		}
> -		avc_context->frame_rate = (int) (vo_fps * FRAME_RATE_BASE);
> -		avc_context->bit_rate = 6e6;
> -		avc_context->flags = CODEC_FLAG_HQ | CODEC_FLAG_QSCALE;
> -		avc_context->quality = 2;
> -		avc_context->pix_fmt = PIX_FMT_YUV420P;
> -		if (avcodec_open(avc_context, avc_codec) < 0) {
> -			printf("VO: [dxr3] Unable to open codec\n");
> -			uninit();
> -			return -1;
> -		}
> -		/* Create a pixel buffer and set up pointers for color components */
> -		memset(&avc_picture, 0, sizeof(avc_picture));
> -		avc_picture.linesize[0] = picture_linesize[0];
> -		avc_picture.linesize[1] = picture_linesize[1];
> -		avc_picture.linesize[2] = picture_linesize[2];
> +			printf("VO: [dxr3] Using AVCODEC\n");
> +			avc_codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO);
> +			if (!avc_codec) {
> +				printf("VO: [dxr3] Unable to find mpeg1video codec\n");
> +				uninit();
> +				return -1;
> +			}
> +			if (avc_context) {
> +				free(avc_context);
> +			}
> +			avc_context = malloc(sizeof(AVCodecContext));
> +			memset(avc_context, 0, sizeof(AVCodecContext));
> +			avc_context->width = s_width;
> +			avc_context->height = s_height;
> +			ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &ioval);
> +			if (ioval == EM8300_VIDEOMODE_NTSC) {
> +				avc_context->gop_size = 18;
> +			} else {
> +				avc_context->gop_size = 15;
> +			}
> +			avc_context->frame_rate = (int) (vo_fps * FRAME_RATE_BASE);
> +			avc_context->bit_rate = 6e6;
> +			avc_context->flags = CODEC_FLAG_HQ | CODEC_FLAG_QSCALE;
> +			avc_context->quality = 2;
> +			avc_context->pix_fmt = PIX_FMT_YUV420P;
> +			if (avcodec_open(avc_context, avc_codec) < 0) {
> +				printf("VO: [dxr3] Unable to open codec\n");
> +				uninit();
> +				return -1;
> +			}
> +			/* Create a pixel buffer and set up pointers for color components */
> +			memset(&avc_picture, 0, sizeof(avc_picture));
> +			avc_picture.linesize[0] = picture_linesize[0];
> +			avc_picture.linesize[1] = picture_linesize[1];
> +			avc_picture.linesize[2] = picture_linesize[2];
>  		
> -		avc_picture.data[0] = picture_data[0];
> -		avc_picture.data[1] = picture_data[1];
> -		avc_picture.data[2] = picture_data[2];
> -		break;
> +			avc_picture.data[0] = picture_data[0];
> +			avc_picture.data[1] = picture_data[1];
> +			avc_picture.data[2] = picture_data[2];
> +			break;
>  #endif
>  		}
>  
> @@ -472,19 +475,18 @@
>  		int size, srcStride = (img_format == IMGFMT_YUY2) ? (v_width * 2) : (v_wi
> dth * 3);
>  		sws->swScale(sws, src, &srcStride, 0, v_height, picture_data, picture_lin
> esize);
>  		draw_osd();
> -		switch(mpeg_codec)
> -		{
> +		switch (mpeg_codec) {
>  #ifdef USE_LIBFAME
>  		case MPG_CODEC_FAME:
> -		size = fame_encode_frame(fame_ctx, &fame_yuv, NULL);
> -		write(fd_video, outbuf, size);
> -		break;
> +			size = fame_encode_frame(fame_ctx, &fame_yuv, NULL);
> +			write(fd_video, outbuf, size);
> +			break;
>  #endif
>  #ifdef USE_LIBAVCODEC
>  		case MPG_CODEC_AVCODEC:
> -		size = avcodec_encode_video(avc_context, picture_data[0], avc_outbuf_size
> , &avc_picture);
> -		write(fd_video, picture_data[0], size);
> -		break;
> +			size = avcodec_encode_video(avc_context, picture_data[0], avc_outbuf_siz
> e, &avc_picture);
> +			write(fd_video, picture_data[0], size);
> +			break;
>  #endif
>  		}
>  		return 0;
> @@ -494,27 +496,26 @@
>  
>  static void flip_page(void)
>  {
> -  int size;
> +	int size;
>  	if (!noprebuf) {
>  		ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts);
>  	}
>  	if (img_format == IMGFMT_YV12) {
> -		switch(mpeg_codec)
> -		{
> +		switch (mpeg_codec) {
>  #ifdef USE_LIBFAME
>  		case MPG_CODEC_FAME:
> -		size = fame_encode_frame(fame_ctx, &fame_yuv, NULL);
> -		write(fd_video, outbuf, size);
> -		break;
> +			size = fame_encode_frame(fame_ctx, &fame_yuv, NULL);
> +			write(fd_video, outbuf, size);
> +			break;
>  #endif
>  #ifdef USE_LIBAVCODEC
>  		case MPG_CODEC_AVCODEC:
> -		size = avcodec_encode_video(avc_context, picture_data[0], avc_outbuf_size
> , &avc_picture);
> -		if (!noprebuf) {
> -			ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts);
> -		}
> -		write(fd_video, picture_data[0], size);
> -		break;
> +			size = avcodec_encode_video(avc_context, picture_data[0], avc_outbuf_siz
> e, &avc_picture);
> +			if (!noprebuf) {
> +				ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts);
> +			}
> +			write(fd_video, picture_data[0], size);
> +			break;
>  #endif
>  		}
>  	}
> @@ -536,21 +537,20 @@
>  		freeSwsContext(sws);
>  	}
>  
> -	switch(mpeg_codec)
> -	{
> +	switch (mpeg_codec) {
>  #ifdef USE_LIBFAME
>  	case MPG_CODEC_FAME:
> -	if (fame_ctx) {
> -		fame_close(fame_ctx);
> -	}
> -	break;
> +		if (fame_ctx) {
> +			fame_close(fame_ctx);
> +		}
> +		break;
>  #endif
>  #ifdef USE_LIBAVCODEC
>  	case MPG_CODEC_AVCODEC:
> -	if (avc_context) {
> -		avcodec_close(avc_context);
> -	}
> -	break;
> +		if (avc_context) {
> +			avcodec_close(avc_context);
> +		}
> +		break;
>  #endif
>  	}
>  	if (picture_data[0]) {
> @@ -579,35 +579,40 @@
>  
>  	GetCpuCaps(&cpucaps);
>  	/* Open the control interface */
> -	if (arg && !strncmp("noprebuf", arg,8)) {
> +	if (arg && !strncmp("noprebuf", arg, 8)) {
>  		printf("VO: [dxr3] Disabling prebuffering.\n");
>  		noprebuf = 1;
>  		fdflags |= O_NONBLOCK;
> -		arg=strchr(arg,':');
> -		if(arg) arg++;
> +		arg = strchr(arg, ':');
> +		if (arg) {
> +			arg++;
> +		}
>  	}
>  
> -	if(cpucaps.has3DNowExt)
> -	{
> -		printf("VO: [dxr3] fast AMD special disabling prebuffering.\n");
> +	if (cpucaps.has3DNowExt) {
> +		printf("VO: [dxr3] Fast AMD special disabling prebuffering.\n");
>  		noprebuf = 1;
>  		fdflags |= O_NONBLOCK;
>  	}
>  
>  #if defined(USE_LIBFAME)
>  	printf("VO: [dxr3] FAME supported\n");
> -	if (arg && !strncmp("fame",arg,4)) {
> -	  mpeg_codec=MPG_CODEC_FAME;
> -	  arg=strchr(arg,':');
> -	  if(arg) arg++;
> +	if (arg && !strncmp("fame", arg, 4)) {
> +		mpeg_codec = MPG_CODEC_FAME;
> +		arg = strchr(arg, ':');
> +		if (arg) {
> +			arg++;
> +		}
>  	}
>  #endif
>  #if defined(USE_LIBAVCODEC)
>  	printf("VO: [dxr3] AVCODEC supported\n");
> -	if (arg && !strncmp("avcodec",arg,7)) {
> -	  mpeg_codec=MPG_CODEC_AVCODEC;
> -	  arg=strchr(arg,':');
> -	  if(arg) arg++;
> +	if (arg && !strncmp("avcodec", arg, 7)) {
> +		mpeg_codec = MPG_CODEC_AVCODEC;
> +		arg = strchr(arg, ':');
> +		if (arg) {
> +			arg++;
> +		}
>  	}
>  #endif
>  
> @@ -673,11 +678,12 @@
>  		}
>  	}
>  
> -	if(mpeg_codec==MPG_CODEC_AVCODEC)
> -	{
> +#if defined(USE_LIBAVCODEC)
> +	if (mpeg_codec == MPG_CODEC_AVCODEC && !avc_context) {
>  		avcodec_init();
>  		avcodec_register_all();
>  	}
> +#endif
>  	
>  	return 0;
>  }
> 
> _______________________________________________
> Mplayer-cvslog mailing list
> Mplayer-cvslog at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog
> 
> 


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-cvslog mailing list