pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/48401: multimedia/mplayer fixups for skiping cd audio and video capture



>Number:         48401
>Category:       pkg
>Synopsis:       multimedia/mplayer fixups for skiping cd audio and video 
>capture
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Nov 23 05:10:00 +0000 2013
>Originator:     Nat Sloss
>Release:        pkgsrc-2013Q2
>Organization:
>Environment:
NetBSD beast 6.1.1_PATCH NetBSD 6.1.1_PATCH (PCIPAE) #22: Thu Nov 21 23:13:25 
EST 2013  build@microrusty:/usr/src/sys/arch/i386/compile/obj/PCIPAE i386
>Description:
Mplayer uses cdparanoia and I have found cdaudio playpack to be broken, the 
audio will skip no matter the -cache value.  After searching the net I found 
other people with the same problem that recommended to use libcdio instead.

Also I've included a patch for tv v4l2 encoding as I found one of the webcams I 
own would supply empty frames and this would distort viewing and encoding.
>How-To-Repeat:
Try the following:

mplayer cdda://1

You may find the audio will skip or stutter after one second.
>Fix:
Make libcdio the default for mplayer by applying these patches:

Index: pkgsrc/multimedia/mplayer-share/options.mk
===================================================================
RCS file: /cvsroot/pkgsrc/multimedia/mplayer-share/options.mk,v
retrieving revision 1.49
diff -u -r1.49 options.mk
--- pkgsrc/multimedia/mplayer-share/options.mk  16 Jan 2013 18:07:08 -0000      
1.49
+++ pkgsrc/multimedia/mplayer-share/options.mk  23 Nov 2013 04:54:59 -0000
@@ -53,6 +53,7 @@
 
 # OS-specific options.
 .if ${OPSYS} == "FreeBSD" || ${OPSYS} == "Linux" || ${OPSYS} == "NetBSD"
+PKG_SUPPORTED_OPTIONS+=        libcdio
 PKG_SUPPORTED_OPTIONS+=        cdparanoia
 .elif ${OPSYS} == "SunOS"
 PKG_SUPPORTED_OPTIONS+=        mlib
@@ -91,7 +92,7 @@
 # Define PKG_SUGGESTED_OPTIONS.
 # -------------------------------------------------------------------------
 
-.for o in cdparanoia dv esound gif jpeg \
+.for o in libcdio dv esound gif jpeg \
            dvdread dvdnav \
            lame mad mplayer-menu \
            mplayer-default-cflags mplayer-runtime-cpudetection \
@@ -137,6 +138,13 @@
 CONFIGURE_ARGS+=       --disable-caca
 .endif
 
+.if !empty(PKG_OPTIONS:Mlibcdio)
+CONFIGURE_ARGS+=       --enable-libcdio
+.  include "../../misc/libcdio/buildlink3.mk"
+.else
+CONFIGURE_ARGS+=       --disable-libcdio
+.endif
+
 .if !empty(PKG_OPTIONS:Mcdparanoia)
 CONFIGURE_ARGS+=       --enable-cdparanoia
 .  include "../../audio/cdparanoia/buildlink3.mk"
Index: pkgsrc/multimedia/mplayer-share/patches/patch-aa
===================================================================
RCS file: /cvsroot/pkgsrc/multimedia/mplayer-share/patches/patch-aa,v
retrieving revision 1.31
diff -u -r1.31 patch-aa
--- pkgsrc/multimedia/mplayer-share/patches/patch-aa    12 Jan 2013 11:55:35 
-0000      1.31
+++ pkgsrc/multimedia/mplayer-share/patches/patch-aa    23 Nov 2013 04:55:23 
-0000
@@ -8,8 +8,8 @@
   --enable-aa.
 o Add support for dvb capture on NetBSD.
 
---- configure.orig     2012-05-22 14:01:51.000000000 -0400
-+++ configure  2013-01-11 22:15:07.000000000 -0500
+--- configure.orig     2012-05-22 18:01:51.000000000 +0000
++++ configure
 @@ -1519,8 +1519,9 @@ if test -z "$_target" ; then
        alpha) host_arch=alpha ;;
        sun4*|sparc*) host_arch=sparc ;;
@@ -129,3 +129,11 @@
  
  if darwin; then
  
+@@ -5853,6 +5879,7 @@ if test "$_libcdio" = yes ; then
+     _cdparanoia=no
+     def_libcdio='#define CONFIG_LIBCDIO 1'
+     def_havelibcdio='yes'
++    libs_mplayer="${libs_mplayer} -lcdio -lcdio_cdda -lcdio_paranoia"
+ else
+     _libcdio=no
+     def_libcdio='#undef CONFIG_LIBCDIO'
--- /dev/null   2013-11-23 15:34:43.000000000 +1100
+++ pkgsrc/multimedia/mplayer-share/patches/patch-stream_stream__cdda.c 
2013-11-23 15:52:17.000000000 +1100
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- stream/stream_cdda.c.orig  2012-01-15 12:40:02.000000000 +0000
++++ stream/stream_cdda.c
+@@ -336,7 +336,7 @@ static int open_cdda(stream_t *st,int m,
+     cdd = cdda_identify_scsi(p->generic_dev,p->device,0,NULL);
+   else
+ #endif
+-#if defined(__NetBSD__)
++#if defined(__NetBSD__) && !defined(CONFIG_LIBCDIO)
+     cdd = cdda_identify_scsi(p->device,p->device,0,NULL);
+ #else
+     cdd = cdda_identify(p->device,0,NULL);
--- /dev/null   2013-11-23 15:34:43.000000000 +1100
+++ pkgsrc/multimedia/mplayer-share/patches/patch-stream_tvi__v4l2.c    
2013-11-23 15:52:18.000000000 +1100
@@ -0,0 +1,26 @@
+$NetBSD$
+
+--- stream/tvi_v4l2.c.orig     2011-06-26 14:42:35.000000000 +0000
++++ stream/tvi_v4l2.c
+@@ -1641,7 +1641,7 @@ static void *video_grabber(void *data)
+         buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+         buf.memory = V4L2_MEMORY_MMAP;
+         ret = ioctl(priv->video_fd, VIDIOC_DQBUF, &buf);
+-
++      
+         if (ret < 0) {
+             /*
+               if there's no signal, the buffer might me dequeued
+@@ -1675,6 +1675,12 @@ static void *video_grabber(void *data)
+             continue;
+         }
+ 
++      if (buf.bytesused == 0) {
++              if (buf.m.userptr)
++                    ioctl(priv->video_fd, VIDIOC_QBUF, &buf);
++              continue;
++      }
++                      
+         /* store the timestamp of the very first frame as reference */
+         if (!priv->frames++) {
+             if (!priv->tv_param->noaudio) 
pthread_mutex_lock(&priv->skew_mutex);



Home | Main Index | Thread Index | Old Index