Libav doesn't have AV_OPT_TYPE_CHANNEL_LAYOUT so use strings instead to maintain consistency. --- libavformat/libopenmpt.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/libavformat/libopenmpt.c b/libavformat/libopenmpt.c index 58a02be..17eb611 100644 --- a/libavformat/libopenmpt.c +++ b/libavformat/libopenmpt.c @@ -35,15 +35,16 @@ typedef struct OpenMPTContext { double duration; /* options */ int sample_rate; - int64_t layout; + const char *layout; + int subsong; } OpenMPTContext; #define OFFSET(x) offsetof(OpenMPTContext, x) #define A AV_OPT_FLAG_AUDIO_PARAM #define D AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { - {"sample_rate", "set sample rate", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = 48000}, 1000, INT_MAX, A|D}, - {"layout", "set channel layout", OFFSET(layout), AV_OPT_TYPE_CHANNEL_LAYOUT, {.i64 = AV_CH_LAYOUT_STEREO}, 0, INT64_MAX, A|D}, + {"sample_rate", "set sample rate", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.i64 = 48000}, 1000, INT_MAX, A | D}, + {"layout", "set channel layout", OFFSET(layout), AV_OPT_TYPE_STRING, {.i64 = .str = "stereo"}, 0, INT64_MAX, A | D}, {NULL} }; @@ -70,17 +71,24 @@ static int read_header_openmpt(AVFormatContext *s) OpenMPTContext *openmpt = s->priv_data; int64_t size = avio_size(s->pb); char *buf = av_malloc(size); + int64_t layout; if (!buf) return AVERROR(ENOMEM); size = avio_read(s->pb, buf, size); + layout = av_get_channel_layout(openmpt->layout); + if (!layout){ + av_log(s, AV_LOG_ERROR, "Invalid channel layout: %s\n", openmpt->layout); + return AVERROR(EINVAL); + } + openmpt->module = openmpt_module_create_from_memory(buf, size, openmpt_logfunc, s, NULL); av_freep(&buf); if (!openmpt->module) - return AVERROR_INVALIDDATA; + return AVERROR_INVALIDDATA; - openmpt->channels = av_get_channel_layout_nb_channels(openmpt->layout); + openmpt->channels = av_get_channel_layout_nb_channels(layout); openmpt->duration = openmpt_module_get_duration_seconds(openmpt->module); add_meta(s, "artist", openmpt_module_get_metadata(openmpt->module, "artist")); -- 2.7.4 (Apple Git-66) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel