ports/90001: mplayer bsdbt848 does not handle SECAM norm
Vladimir Kushnir
vkushnir at i.kiev.ua
Mon Dec 5 23:30:04 UTC 2005
>Number: 90001
>Category: ports
>Synopsis: mplayer bsdbt848 does not handle SECAM norm
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Dec 05 23:30:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Vladimir Kushnir
>Release: -CURRENT
>Organization:
BITP
>Environment:
FreeBSD kushnir1.kiev.ua 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Mon Dec 5 04:07:02 EET 2005 root at kushnir1.kiev.ua:/usr/obj/usr/src/sys/KUSHNIR amd64
>Description:
MPlayer (multimedia/mplayer) cannot change TV norm to SCAM but uses PAL instead
>How-To-Repeat:
Run mplayer with "-v -tv norm=SECAM" or "-v -tv norm=2". It doesn't change norm and reports of
tv.c: norm_from_string(SECAM): Bogus norm parameter, setting PAL.
The reason: mplayer's tvi_bsdbt848.c uses ioctl METEORSFMT which doe nothing for METEOR_FMT_SECAM
>Fix:
Use ioctl BT848SFMT instead:
*** libmpdemux/tvi_bsdbt848.c.orig Tue Dec 6 01:11:38 2005
--- libmpdemux/tvi_bsdbt848.c Mon Dec 5 20:12:28 2005
***************
*** 299,309 ****
int req_mode = (int)*(void **)arg;
u_short tmp_fps;
! priv->iformat = METEOR_FMT_AUTOMODE;
if(req_mode == TV_NORM_PAL)
{
! priv->iformat = METEOR_FMT_PAL;
priv->maxheight = PAL_HEIGHT;
priv->maxwidth = PAL_WIDTH;
priv->maxfps = PAL_FPS;
--- 299,309 ----
int req_mode = (int)*(void **)arg;
u_short tmp_fps;
! priv->iformat = BT848_IFORM_F_AUTO;
if(req_mode == TV_NORM_PAL)
{
! priv->iformat = BT848_IFORM_F_PALBDGHI;
priv->maxheight = PAL_HEIGHT;
priv->maxwidth = PAL_WIDTH;
priv->maxfps = PAL_FPS;
***************
*** 324,330 ****
if(req_mode == TV_NORM_NTSC)
{
! priv->iformat = METEOR_FMT_NTSC;
priv->maxheight = NTSC_HEIGHT;
priv->maxwidth = NTSC_WIDTH;
priv->maxfps = NTSC_FPS;
--- 324,330 ----
if(req_mode == TV_NORM_NTSC)
{
! priv->iformat = BT848_IFORM_F_NTSCM;
priv->maxheight = NTSC_HEIGHT;
priv->maxwidth = NTSC_WIDTH;
priv->maxfps = NTSC_FPS;
***************
*** 348,356 ****
}
}
! if(req_mode == TV_NORM_SECAM) priv->iformat = METEOR_FMT_SECAM;
! if(ioctl(priv->btfd, METEORSFMT, &priv->iformat) < 0)
{
perror("format:ioctl");
return(TVI_CONTROL_FALSE);
--- 348,375 ----
}
}
! if(req_mode == TV_NORM_SECAM)
! {
! priv->iformat = BT848_IFORM_F_SECAM;
! priv->maxheight = PAL_HEIGHT;
! priv->maxwidth = PAL_WIDTH;
! priv->maxfps = PAL_FPS;
! priv->fps = PAL_FPS;
!
! if(priv->fps > priv->maxfps) priv->fps = priv->maxfps;
!
! if(priv->geom.rows > priv->maxheight)
! {
! priv->geom.rows = priv->maxheight;
! }
!
! if(priv->geom.columns > priv->maxwidth)
! {
! priv->geom.columns = priv->maxwidth;
! }
! }
! if(ioctl(priv->btfd, BT848SFMT, &priv->iformat) < 0)
{
perror("format:ioctl");
return(TVI_CONTROL_FALSE);
***************
*** 481,487 ****
priv->videoready = TRUE;
priv->btdev = strdup("/dev/bktr0");
priv->immediatemode = FALSE;
! priv->iformat = METEOR_FMT_PAL;
priv->maxheight = PAL_HEIGHT;
priv->maxwidth = PAL_WIDTH;
priv->maxfps = PAL_FPS;
--- 500,506 ----
priv->videoready = TRUE;
priv->btdev = strdup("/dev/bktr0");
priv->immediatemode = FALSE;
! priv->iformat = BT848_IFORM_F_PALBDGHI;
priv->maxheight = PAL_HEIGHT;
priv->maxwidth = PAL_WIDTH;
priv->maxfps = PAL_FPS;
***************
*** 506,512 ****
}
if(priv->videoready == TRUE &&
! ioctl(priv->btfd, METEORSFMT, &priv->iformat) < 0)
{
perror("FMT:ioctl");
}
--- 525,531 ----
}
if(priv->videoready == TRUE &&
! ioctl(priv->btfd, BT848SFMT, &priv->iformat) < 0)
{
perror("FMT:ioctl");
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list