diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-13 18:59:46 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-13 18:59:46 +0000 |
| commit | def2686d3573d08772c5ec7624ff007933966b7e (patch) | |
| tree | 01683bb221ced0a072fc270e033fda087c0a16af /src/lib/ffmpeg_decoder.cc | |
| parent | 9daefccbb0c86b9c54c84af9c0cc1ca6d8596350 (diff) | |
Fix regression when AVCodecContext's channel layout doesn't get set up by FFmpeg.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 9b89ffffc..46e851e37 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -120,11 +120,21 @@ FFmpegDecoder::setup_general () if (s->codec->codec_type == AVMEDIA_TYPE_VIDEO) { _video_stream = i; } else if (s->codec->codec_type == AVMEDIA_TYPE_AUDIO) { + + /* This is a hack; sometimes it seems that _audio_codec_context->channel_layout isn't set up, + so bodge it here. No idea why we should have to do this. + */ + + if (s->codec->channel_layout == 0) { + s->codec->channel_layout = av_get_default_channel_layout (s->codec->channels); + } + _audio_streams.push_back ( shared_ptr<AudioStream> ( new FFmpegAudioStream (stream_name (s), i, s->codec->sample_rate, s->codec->channel_layout) ) ); + } else if (s->codec->codec_type == AVMEDIA_TYPE_SUBTITLE) { _subtitle_streams.push_back ( shared_ptr<SubtitleStream> ( @@ -186,14 +196,6 @@ FFmpegDecoder::setup_audio () if (avcodec_open2 (_audio_codec_context, _audio_codec, 0) < 0) { throw DecodeError ("could not open audio decoder"); } - - /* This is a hack; sometimes it seems that _audio_codec_context->channel_layout isn't set up, - so bodge it here. No idea why we should have to do this. - */ - - if (_audio_codec_context->channel_layout == 0) { - _audio_codec_context->channel_layout = av_get_default_channel_layout (ffa->channels()); - } } void |
