summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpcodecs/ad_pcm.c2
-rw-r--r--libmpdemux/demux_lavf.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/libmpcodecs/ad_pcm.c b/libmpcodecs/ad_pcm.c
index bd76e704c5..fed9c141ba 100644
--- a/libmpcodecs/ad_pcm.c
+++ b/libmpcodecs/ad_pcm.c
@@ -67,6 +67,8 @@ static int init(sh_audio_t *sh_audio)
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 --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index 439f2ba718..bc832b3c7e 100644
--- a/libmpdemux/demux_lavf.c
+++ b/libmpdemux/demux_lavf.c
@@ -217,6 +217,16 @@ int demux_open_lavf(demuxer_t *demuxer){
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;