summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-12-13 18:59:46 +0000
committerCarl Hetherington <cth@carlh.net>2012-12-13 18:59:46 +0000
commitdef2686d3573d08772c5ec7624ff007933966b7e (patch)
tree01683bb221ced0a072fc270e033fda087c0a16af /src/lib/ffmpeg_decoder.cc
parent9daefccbb0c86b9c54c84af9c0cc1ca6d8596350 (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.cc18
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