[FFmpeg-devel] [PATCH 1/2 v3] libopenmpt: add subsong support
Clément Bœsch
u at pkh.me
Tue Jul 19 18:59:56 EEST 2016
On Tue, Jul 19, 2016 at 04:39:11PM +0100, Josh de Kock wrote:
> ---
> libavformat/libopenmpt.c | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/libopenmpt.c b/libavformat/libopenmpt.c
> index 58a02be..670866f 100644
> --- a/libavformat/libopenmpt.c
> +++ b/libavformat/libopenmpt.c
> @@ -36,14 +36,19 @@ typedef struct OpenMPTContext {
> /* options */
> int sample_rate;
> int64_t layout;
> + int subsong;
> } OpenMPTContext;
>
> +
> +#define LIBOPENMPT_SUBSONG_DEFAULT -2
> +
not a really pretty value...
> #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_CHANNEL_LAYOUT, {.i64 = AV_CH_LAYOUT_STEREO}, 0, INT64_MAX, A|D},
> + {"subsong", "set subsong", OFFSET(subsong), AV_OPT_TYPE_INT, {.i64 = LIBOPENMPT_SUBSONG_DEFAULT}, -2, INT_MAX, A|D},
> {NULL}
> };
>
> @@ -88,6 +93,18 @@ static int read_header_openmpt(AVFormatContext *s)
> add_meta(s, "encoder", openmpt_module_get_metadata(openmpt->module, "tracker"));
> add_meta(s, "comment", openmpt_module_get_metadata(openmpt->module, "message"));
>
> + if (openmpt->subsong >= openmpt_module_get_num_subsongs(openmpt->module)) {
> + av_log(s, AV_LOG_ERROR, "Invalid subsong index: %d\n", openmpt->subsong);
> + return AVERROR(EINVAL);
> + }
> +
> + if (openmpt->subsong != LIBOPENMPT_SUBSONG_DEFAULT) {
> + if (openmpt->subsong >= 0) {
> + av_dict_set_int(&s->metadata, "track", openmpt->subsong + 1, 0);
> + }
> + openmpt_module_select_subsong(openmpt->module, openmpt->subsong);
no failure possible?
> + }
> +
you should add an AV_OPT_TYPE_CONST entry associated with "auto", which
will be much more accessible for users
[...]
--
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160719/cfe1e05b/attachment.sig>
More information about the ffmpeg-devel
mailing list