[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