alsa output problem using libmad and mpga2fixed

*nix specific usage questions
curgan
New Cone
New Cone
Posts: 5
Joined: 07 Sep 2009 21:33

alsa output problem using libmad and mpga2fixed

Postby curgan » 07 Sep 2009 21:41

Hi All,

Using alsa as audio output i am getting a error like "audio output is starving (39734), playing silence".We know that mp3(libmad) decoding is in mpga2fixed filter.My questions re "Which thread handle this filter?Decoder or Alsa?" ,"What should i do for to fix this issue?"

Cheers
Celil

curgan
New Cone
New Cone
Posts: 5
Joined: 07 Sep 2009 21:33

Re: alsa output problem using libmad and mpga2fixed

Postby curgan » 07 Sep 2009 22:16

Update

I also checked pthread code for priority settings. From this code if you don't give "-rt-priority" option it seems all threads will have same priority.
So all threads will be prioritized by their own work. Input (disk access speed or network access or etc.) , Decoder(fixed-floating math time) , output(alsa buffersizes ,consume speed)

Am i missing something?

Code: Select all

int __vlc_thread_create( vlc_object_t *p_this, const char * psz_file, int i_line, const char *psz_name, void * ( *func ) ( vlc_object_t * ), int i_priority, bool b_wait ) { int i_ret; vlc_object_internals_t *p_priv = vlc_internals( p_this ); struct vlc_thread_boot *boot = malloc (sizeof (*boot)); if (boot == NULL) return errno; boot->entry = func; boot->object = p_this; vlc_object_lock( p_this ); /* Make sure we don't re-create a thread if the object has already one */ assert( !p_priv->b_thread ); #if defined( LIBVLC_USE_PTHREAD ) pthread_attr_t attr; pthread_attr_init (&attr); /* Block the signals that signals interface plugin handles. * If the LibVLC caller wants to handle some signals by itself, it should * block these before whenever invoking LibVLC. And it must obviously not * start the VLC signals interface plugin. * * LibVLC will normally ignore any interruption caused by an asynchronous * signal during a system call. But there may well be some buggy cases * where it fails to handle EINTR (bug reports welcome). Some underlying * libraries might also not handle EINTR properly. */ sigset_t set, oldset; sigemptyset (&set); sigdelset (&set, SIGHUP); sigaddset (&set, SIGINT); sigaddset (&set, SIGQUIT); sigaddset (&set, SIGTERM); sigaddset (&set, SIGPIPE); /* We don't want this one, really! */ pthread_sigmask (SIG_BLOCK, &set, &oldset); #ifndef __APPLE__ if( config_GetInt( p_this, "rt-priority" ) > 0 ) #endif { struct sched_param p = { .sched_priority = i_priority, }; int policy; /* Hack to avoid error msg */ if( config_GetType( p_this, "rt-offset" ) ) p.sched_priority += config_GetInt( p_this, "rt-offset" ); if( p.sched_priority <= 0 ) p.sched_priority += sched_get_priority_max (policy = SCHED_OTHER); else p.sched_priority += sched_get_priority_min (policy = SCHED_RR); pthread_attr_setschedpolicy (&attr, policy); pthread_attr_setschedparam (&attr, &p); } i_ret = pthread_create( &p_priv->thread_id, &attr, thread_entry, boot ); pthread_sigmask (SIG_SETMASK, &oldset, NULL); pthread_attr_destroy (&attr);

Rémi Denis-Courmont
Developer
Developer
Posts: 15266
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: alsa output problem using libmad and mpga2fixed

Postby Rémi Denis-Courmont » 08 Sep 2009 20:58

That message comes from the decoder tread.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

curgan
New Cone
New Cone
Posts: 5
Joined: 07 Sep 2009 21:33

Re: alsa output problem using libmad and mpga2fixed

Postby curgan » 09 Sep 2009 20:32

I know that my system is fast enough also libmad optimized for arch. Then what is your opinion about this problem?

curgan
New Cone
New Cone
Posts: 5
Joined: 07 Sep 2009 21:33

Re: alsa output problem using libmad and mpga2fixed

Postby curgan » 11 Sep 2009 16:36

if i re-added "AOUT_PTS_TOLERANCE" to if block problem fixed while playing song.But at start of song audio is choppy now. A old bug cause a new bug.
So doing this switched to old bug a need a fix for it. Any comments?

vlc/src/audio_output.c line 320

Code: Select all

/* Here we suppose that all buffers have the same duration - this is * generally true, and anyway if it's wrong it won't be a disaster. */ if ( p_buffer->start_date > start_date + (p_buffer->end_date - p_buffer->start_date)+ AOUT_PTS_TOLERANCE ) /* * + AOUT_PTS_TOLERANCE ) * There is no reason to want that, it just worsen the scheduling of * an audio sample after an output starvation (ie. on start or on resume) * --Gibalou */ { const mtime_t i_delta = p_buffer->start_date - start_date; aout_unlock_output_fifo( p_aout ); if ( !p_aout->output.b_starving ) msg_Dbg( p_aout, "audio output is starving (%"PRId64"), " "playing silence", i_delta ); p_aout->output.b_starving = 1; return NULL; }

Jean-Baptiste Kempf
Site Administrator
Site Administrator
Posts: 37523
Joined: 22 Jul 2005 15:29
VLC version: 4.0.0-git
Operating System: Linux, Windows, Mac
Location: Cone, France
Contact:

Re: alsa output problem using libmad and mpga2fixed

Postby Jean-Baptiste Kempf » 11 Sep 2009 18:56

Share on vlc-devel mailing list!
Jean-Baptiste Kempf
http://www.jbkempf.com/ - http://www.jbkempf.com/blog/category/Videolan
VLC media player developer, VideoLAN President and Sites administrator
If you want an answer to your question, just be specific and precise. Don't use Private Messages.


Return to “VLC media player for Linux and friends Troubleshooting”

Who is online

Users browsing this forum: Bing [Bot] and 6 guests