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();
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