# HG changeset patch # User reimar # Date 1122558204 0 # Node ID a1fd1a7eeb35fc20d2fab1386bdb4b5892068933 # Parent 2678255514ccaf524f74ec4ab3abfc7d56489a1f lavf demuxer with raw PCM fix (and a related hang) diff -r 2678255514cc -r a1fd1a7eeb35 libmpcodecs/ad_pcm.c --- a/libmpcodecs/ad_pcm.c Thu Jul 28 13:08:03 2005 +0000 +++ b/libmpcodecs/ad_pcm.c Thu Jul 28 13:43:24 2005 +0000 @@ -67,6 +67,8 @@ break; default: if(sh_audio->samplesize!=2) sh_audio->sample_format=AF_FORMAT_U8; } + if (!sh_audio->samplesize) // this would cause MPlayer to hang later + sh_audio->samplesize = 2; return 1; } diff -r 2678255514cc -r a1fd1a7eeb35 libmpdemux/demux_lavf.c --- a/libmpdemux/demux_lavf.c Thu Jul 28 13:08:03 2005 +0000 +++ b/libmpdemux/demux_lavf.c Thu Jul 28 13:43:24 2005 +0000 @@ -217,6 +217,16 @@ sh_audio->channels= codec->channels; sh_audio->samplerate= codec->sample_rate; sh_audio->i_bps= codec->bit_rate/8; + switch (codec->codec_id) { + case CODEC_ID_PCM_S8: + case CODEC_ID_PCM_U8: + sh_audio->samplesize = 1; + case CODEC_ID_PCM_S16LE: + case CODEC_ID_PCM_S16BE: + case CODEC_ID_PCM_U16LE: + case CODEC_ID_PCM_U16BE: + sh_audio->samplesize = 2; + } if(verbose>=1) print_wave_header(sh_audio->wf); if(demuxer->audio->id != i && demuxer->audio->id != -1) st->discard= AVDISCARD_ALL;