Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
@ 2022-03-18 22:19 James Almer
  2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 2/3] avformat/dfpwmdec: " James Almer
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: James Almer @ 2022-03-18 22:19 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/pcmdec.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
index dcd13787d5..a2bcfc2814 100644
--- a/libavformat/pcmdec.c
+++ b/libavformat/pcmdec.c
@@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
 #if CONFIG_SLN_DEMUXER
 static const AVOption sln_options[] = {
     { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
-    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
     { NULL },
 };
 
-- 
2.35.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 2/3] avformat/dfpwmdec: add support to set channel layout
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
@ 2022-03-18 22:19 ` James Almer
  2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 3/3] avformat/test/seek: set ch_layout instead of channels James Almer
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: James Almer @ 2022-03-18 22:19 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/dfpwmdec.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libavformat/dfpwmdec.c b/libavformat/dfpwmdec.c
index 9f935a422a..3bd8bc0e41 100644
--- a/libavformat/dfpwmdec.c
+++ b/libavformat/dfpwmdec.c
@@ -32,6 +32,7 @@ typedef struct DFPWMAudioDemuxerContext {
     AVClass *class;
     int sample_rate;
     int channels;
+    AVChannelLayout ch_layout;
 } DFPWMAudioDemuxerContext;
 
 static int dfpwm_read_header(AVFormatContext *s)
@@ -48,7 +49,13 @@ static int dfpwm_read_header(AVFormatContext *s)
     par->codec_type  = AVMEDIA_TYPE_AUDIO;
     par->codec_id    = s->iformat->raw_codec_id;
     par->sample_rate = s1->sample_rate;
-    par->ch_layout.nb_channels = s1->channels;
+    if (s1->channels)
+        par->ch_layout.nb_channels = s1->channels;
+    else {
+        int ret = av_channel_layout_copy(&par->ch_layout, &s1->ch_layout);
+        if (ret < 0)
+            return ret;
+    }
     par->bits_per_coded_sample = 1;
     par->block_align = 1;
 
@@ -58,7 +65,8 @@ static int dfpwm_read_header(AVFormatContext *s)
 
 static const AVOption dfpwm_options[] = {
     { "sample_rate", "", offsetof(DFPWMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 48000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
-    { "channels",    "", offsetof(DFPWMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "channels",    "", offsetof(DFPWMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "ch_layout",   "", offsetof(DFPWMAudioDemuxerContext, ch_layout), AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
     { NULL },
 };
 static const AVClass dfpwm_demuxer_class = {
-- 
2.35.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 3/3] avformat/test/seek: set ch_layout instead of channels
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
  2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 2/3] avformat/dfpwmdec: " James Almer
@ 2022-03-18 22:19 ` James Almer
  2022-03-18 22:41 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Andreas Rheinhardt
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: James Almer @ 2022-03-18 22:19 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/tests/seek.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/tests/seek.c b/libavformat/tests/seek.c
index e0067a64fc..94a72d9422 100644
--- a/libavformat/tests/seek.c
+++ b/libavformat/tests/seek.c
@@ -88,7 +88,7 @@ int main(int argc, char **argv)
         }
     }
 
-    av_dict_set(&format_opts, "channels", "1", 0);
+    av_dict_set(&format_opts, "ch_layout", "mono", 0);
     av_dict_set(&format_opts, "sample_rate", "22050", 0);
 
     if (argc < 2) {
-- 
2.35.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
  2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 2/3] avformat/dfpwmdec: " James Almer
  2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 3/3] avformat/test/seek: set ch_layout instead of channels James Almer
@ 2022-03-18 22:41 ` Andreas Rheinhardt
  2022-03-18 22:44   ` James Almer
  2022-03-18 22:47 ` [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one James Almer
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Andreas Rheinhardt @ 2022-03-18 22:41 UTC (permalink / raw)
  To: ffmpeg-devel

James Almer:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavformat/pcmdec.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
> index dcd13787d5..a2bcfc2814 100644
> --- a/libavformat/pcmdec.c
> +++ b/libavformat/pcmdec.c
> @@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
>  #if CONFIG_SLN_DEMUXER
>  static const AVOption sln_options[] = {
>      { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> -    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> +    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> +    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
>      { NULL },
>  };
>  

There is no avformat/slndec. And I presume it is possible to set an
unspecified channel layout via AV_OPT_TYPE_CHLAYOUT, so why don't you
deprecate the now redundant channels option?

- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
  2022-03-18 22:41 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Andreas Rheinhardt
@ 2022-03-18 22:44   ` James Almer
  2022-03-18 22:47     ` Andreas Rheinhardt
  0 siblings, 1 reply; 12+ messages in thread
From: James Almer @ 2022-03-18 22:44 UTC (permalink / raw)
  To: ffmpeg-devel

On 3/18/2022 7:41 PM, Andreas Rheinhardt wrote:
> James Almer:
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>>   libavformat/pcmdec.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
>> index dcd13787d5..a2bcfc2814 100644
>> --- a/libavformat/pcmdec.c
>> +++ b/libavformat/pcmdec.c
>> @@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
>>   #if CONFIG_SLN_DEMUXER
>>   static const AVOption sln_options[] = {
>>       { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> -    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> +    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> +    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
>>       { NULL },
>>   };
>>   
> 
> There is no avformat/slndec. And I presume it is possible to set an
> unspecified channel layout via AV_OPT_TYPE_CHLAYOUT, so why don't you
> deprecate the now redundant channels option?

There is no slndec, but it's the sln demuxer, so it seemed better than 
to write pcmdec. I can change it if you want.

And yes, I was going to deprecate the channels option, but in a separate 
patch(set).

> 
> - Andreas
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
  2022-03-18 22:44   ` James Almer
@ 2022-03-18 22:47     ` Andreas Rheinhardt
  0 siblings, 0 replies; 12+ messages in thread
From: Andreas Rheinhardt @ 2022-03-18 22:47 UTC (permalink / raw)
  To: ffmpeg-devel

James Almer:
> On 3/18/2022 7:41 PM, Andreas Rheinhardt wrote:
>> James Almer:
>>> Signed-off-by: James Almer <jamrial@gmail.com>
>>> ---
>>>   libavformat/pcmdec.c | 3 ++-
>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
>>> index dcd13787d5..a2bcfc2814 100644
>>> --- a/libavformat/pcmdec.c
>>> +++ b/libavformat/pcmdec.c
>>> @@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes
>>> VIDC",                            NULL,  VIDC)
>>>   #if CONFIG_SLN_DEMUXER
>>>   static const AVOption sln_options[] = {
>>>       { "sample_rate", "", offsetof(PCMAudioDemuxerContext,
>>> sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX,
>>> AV_OPT_FLAG_DECODING_PARAM },
>>> -    { "channels",    "", offsetof(PCMAudioDemuxerContext,
>>> channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX,
>>> AV_OPT_FLAG_DECODING_PARAM },
>>> +    { "channels",    "", offsetof(PCMAudioDemuxerContext,
>>> channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX,
>>> AV_OPT_FLAG_DECODING_PARAM },
>>> +    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext,
>>> ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0,
>>> AV_OPT_FLAG_DECODING_PARAM },
>>>       { NULL },
>>>   };
>>>   
>>
>> There is no avformat/slndec. And I presume it is possible to set an
>> unspecified channel layout via AV_OPT_TYPE_CHLAYOUT, so why don't you
>> deprecate the now redundant channels option?
> 
> There is no slndec, but it's the sln demuxer, so it seemed better than
> to write pcmdec. I can change it if you want.
> 

The naming convention contains the (main) file that is changed; the fact
that it is about the sln demuxer can (and should) be mentioned in the
commit title afterwards like: "avformat/pcmdec: Add support for channel
layouts for sln"

- Andreas
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
                   ` (2 preceding siblings ...)
  2022-03-18 22:41 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Andreas Rheinhardt
@ 2022-03-18 22:47 ` James Almer
  2022-03-19 18:29   ` Michael Niedermayer
  2022-03-18 22:50 ` [FFmpeg-devel] [PATCH 1/4 v2] avformat/pcmdec: Add support for channel layouts for sln James Almer
  2022-03-19 13:52 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Anton Khirnov
  5 siblings, 1 reply; 12+ messages in thread
From: James Almer @ 2022-03-18 22:47 UTC (permalink / raw)
  To: ffmpeg-devel

This is cleaner and allows fine tuning which stream the option is applied to.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 fftools/ffmpeg.h     |  2 ++
 fftools/ffmpeg_opt.c | 84 ++++++++++++++++++--------------------------
 2 files changed, 36 insertions(+), 50 deletions(-)

diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index 6a19dc9c7c..1e14bf9fa9 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -96,6 +96,8 @@ typedef struct OptionsContext {
 
     SpecifierOpt *codec_names;
     int        nb_codec_names;
+    SpecifierOpt *audio_ch_layouts;
+    int        nb_audio_ch_layouts;
     SpecifierOpt *audio_channels;
     int        nb_audio_channels;
     SpecifierOpt *audio_sample_rate;
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 70e6502f22..f5c759c6d1 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -55,6 +55,7 @@
 
 static const char *const opt_name_codec_names[]               = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL};
 static const char *const opt_name_audio_channels[]            = {"ac", NULL};
+static const char *const opt_name_audio_ch_layouts[]          = {"channel_layout", NULL};
 static const char *const opt_name_audio_sample_rate[]         = {"ar", NULL};
 static const char *const opt_name_frame_rates[]               = {"r", NULL};
 static const char *const opt_name_max_frame_rates[]           = {"fpsmax", NULL};
@@ -1124,6 +1125,15 @@ static int open_input_file(OptionsContext *o, const char *filename)
             av_dict_set_int(&o->g->format_opts, "channels", o->audio_channels[o->nb_audio_channels - 1].u.i, 0);
         }
     }
+    if (o->nb_audio_ch_layouts) {
+        const AVClass *priv_class;
+        if (file_iformat && (priv_class = file_iformat->priv_class) &&
+            av_opt_find(&priv_class, "ch_layout", NULL, 0,
+                        AV_OPT_SEARCH_FAKE_OBJ)) {
+            av_dict_set(&o->g->format_opts, "ch_layout", o->audio_ch_layouts[o->nb_audio_ch_layouts - 1].u.str, 0);
+        }
+
+    }
     if (o->nb_frame_rates) {
         const AVClass *priv_class;
         /* set the format-level framerate option;
@@ -1946,6 +1956,7 @@ static OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, in
 
     if (!ost->stream_copy) {
         int channels = 0;
+        char *layout = NULL;
         char *sample_fmt = NULL;
 
         MATCH_PER_STREAM_OPT(audio_channels, i, channels, oc, st);
@@ -1954,6 +1965,27 @@ static OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, in
             audio_enc->ch_layout.nb_channels = channels;
         }
 
+        MATCH_PER_STREAM_OPT(audio_ch_layouts, str, layout, oc, st);
+        if (layout) {
+            if (av_channel_layout_from_string(&audio_enc->ch_layout, layout) < 0) {
+#if FF_API_OLD_CHANNEL_LAYOUT
+                uint64_t mask;
+                AV_NOWARN_DEPRECATED({
+                mask = av_get_channel_layout(layout);
+                })
+                if (!mask) {
+#endif
+                    av_log(NULL, AV_LOG_FATAL, "Unknown channel layout: %s\n", layout);
+                    exit_program(1);
+#if FF_API_OLD_CHANNEL_LAYOUT
+                }
+                av_log(NULL, AV_LOG_WARNING, "Channel layout '%s' uses a deprecated syntax.\n",
+                       layout);
+                av_channel_layout_from_mask(&audio_enc->ch_layout, mask);
+#endif
+            }
+        }
+
         MATCH_PER_STREAM_OPT(sample_fmts, str, sample_fmt, oc, st);
         if (sample_fmt &&
             (audio_enc->sample_fmt = av_get_sample_fmt(sample_fmt)) == AV_SAMPLE_FMT_NONE) {
@@ -3235,54 +3267,6 @@ static int opt_timecode(void *optctx, const char *opt, const char *arg)
     return ret;
 }
 
-static int opt_channel_layout(void *optctx, const char *opt, const char *arg)
-{
-    OptionsContext *o = optctx;
-    char layout_str[32];
-    char *stream_str;
-    char *ac_str;
-    int ret, ac_str_size;
-    AVChannelLayout layout = { 0 };
-
-    ret = av_channel_layout_from_string(&layout, arg);
-    if (ret < 0) {
-#if FF_API_OLD_CHANNEL_LAYOUT
-        uint64_t mask;
-        AV_NOWARN_DEPRECATED({
-        mask = av_get_channel_layout(arg);
-        })
-        if (!mask) {
-#endif
-        av_log(NULL, AV_LOG_ERROR, "Unknown channel layout: %s\n", arg);
-        return AVERROR(EINVAL);
-#if FF_API_OLD_CHANNEL_LAYOUT
-        }
-        av_log(NULL, AV_LOG_WARNING, "Channel layout '%s' uses a deprecated syntax.\n",
-               arg);
-        av_channel_layout_from_mask(&layout, mask);
-#endif
-    }
-
-    ret = opt_default_new(o, opt, arg);
-    if (ret < 0)
-        return ret;
-
-    /* set 'ac' option based on channel layout */
-    snprintf(layout_str, sizeof(layout_str), "%d", layout.nb_channels);
-    stream_str = strchr(opt, ':');
-    ac_str_size = 3 + (stream_str ? strlen(stream_str) : 0);
-    ac_str = av_mallocz(ac_str_size);
-    if (!ac_str)
-        return AVERROR(ENOMEM);
-    av_strlcpy(ac_str, "ac", 3);
-    if (stream_str)
-        av_strlcat(ac_str, stream_str, ac_str_size);
-    ret = parse_option(o, ac_str, layout_str, options);
-    av_free(ac_str);
-
-    return ret;
-}
-
 static int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
 {
     OptionsContext *o = optctx;
@@ -3827,8 +3811,8 @@ const OptionDef options[] = {
     { "sample_fmt",     OPT_AUDIO | HAS_ARG  | OPT_EXPERT | OPT_SPEC |
                         OPT_STRING | OPT_INPUT | OPT_OUTPUT,                       { .off = OFFSET(sample_fmts) },
         "set sample format", "format" },
-    { "channel_layout", OPT_AUDIO | HAS_ARG  | OPT_EXPERT | OPT_PERFILE |
-                        OPT_INPUT | OPT_OUTPUT,                                    { .func_arg = opt_channel_layout },
+    { "channel_layout", OPT_AUDIO | HAS_ARG  | OPT_EXPERT | OPT_SPEC |
+                        OPT_STRING | OPT_INPUT | OPT_OUTPUT,                       { .off = OFFSET(audio_ch_layouts) },
         "set channel layout", "layout" },
     { "af",             OPT_AUDIO | HAS_ARG  | OPT_PERFILE | OPT_OUTPUT,           { .func_arg = opt_audio_filters },
         "set audio filters", "filter_graph" },
-- 
2.35.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 1/4 v2] avformat/pcmdec: Add support for channel layouts for sln
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
                   ` (3 preceding siblings ...)
  2022-03-18 22:47 ` [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one James Almer
@ 2022-03-18 22:50 ` James Almer
  2022-03-19 13:52 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Anton Khirnov
  5 siblings, 0 replies; 12+ messages in thread
From: James Almer @ 2022-03-18 22:50 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/pcmdec.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
index dcd13787d5..a2bcfc2814 100644
--- a/libavformat/pcmdec.c
+++ b/libavformat/pcmdec.c
@@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
 #if CONFIG_SLN_DEMUXER
 static const AVOption sln_options[] = {
     { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
-    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
+    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
     { NULL },
 };
 
-- 
2.35.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
  2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
                   ` (4 preceding siblings ...)
  2022-03-18 22:50 ` [FFmpeg-devel] [PATCH 1/4 v2] avformat/pcmdec: Add support for channel layouts for sln James Almer
@ 2022-03-19 13:52 ` Anton Khirnov
  2022-03-20 17:06   ` James Almer
  5 siblings, 1 reply; 12+ messages in thread
From: Anton Khirnov @ 2022-03-19 13:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Quoting James Almer (2022-03-18 23:19:05)
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavformat/pcmdec.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
> index dcd13787d5..a2bcfc2814 100644
> --- a/libavformat/pcmdec.c
> +++ b/libavformat/pcmdec.c
> @@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
>  #if CONFIG_SLN_DEMUXER
>  static const AVOption sln_options[] = {
>      { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> -    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> +    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
> +    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
>      { NULL },
>  };
>  
> -- 
> 2.35.1

For what purpose? The demuxer doesn't do anything with the value.

-- 
Anton Khirnov
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one
  2022-03-18 22:47 ` [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one James Almer
@ 2022-03-19 18:29   ` Michael Niedermayer
  2022-03-20 18:03     ` James Almer
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Niedermayer @ 2022-03-19 18:29 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 672 bytes --]

On Fri, Mar 18, 2022 at 07:47:48PM -0300, James Almer wrote:
> This is cleaner and allows fine tuning which stream the option is applied to.
> 
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  fftools/ffmpeg.h     |  2 ++
>  fftools/ffmpeg_opt.c | 84 ++++++++++++++++++--------------------------
>  2 files changed, 36 insertions(+), 50 deletions(-)

Not sure its intended or not but
This changes the output of

./ffmpeg -channel_layout 3.0 -ac 3 -f u8 -i /dev/zero -t 1 /tmp/file-old.wav

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is what and why we do it that matters, not just one of them.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout
  2022-03-19 13:52 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Anton Khirnov
@ 2022-03-20 17:06   ` James Almer
  0 siblings, 0 replies; 12+ messages in thread
From: James Almer @ 2022-03-20 17:06 UTC (permalink / raw)
  To: ffmpeg-devel



On 3/19/2022 10:52 AM, Anton Khirnov wrote:
> Quoting James Almer (2022-03-18 23:19:05)
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>>   libavformat/pcmdec.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/pcmdec.c b/libavformat/pcmdec.c
>> index dcd13787d5..a2bcfc2814 100644
>> --- a/libavformat/pcmdec.c
>> +++ b/libavformat/pcmdec.c
>> @@ -170,7 +170,8 @@ PCMDEF(vidc,  "PCM Archimedes VIDC",                            NULL,  VIDC)
>>   #if CONFIG_SLN_DEMUXER
>>   static const AVOption sln_options[] = {
>>       { "sample_rate", "", offsetof(PCMAudioDemuxerContext, sample_rate), AV_OPT_TYPE_INT, {.i64 = 8000}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> -    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> +    { "channels",    "", offsetof(PCMAudioDemuxerContext, channels),    AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_DECODING_PARAM },
>> +    { "ch_layout",   "", offsetof(PCMAudioDemuxerContext, ch_layout),   AV_OPT_TYPE_CHLAYOUT, {.str = "mono"}, 0, 0, AV_OPT_FLAG_DECODING_PARAM },
>>       { NULL },
>>   };
>>   
>> -- 
>> 2.35.1
> 
> For what purpose? The demuxer doesn't do anything with the value.

The demuxer calls pcm_read_header() as init, which uses it.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one
  2022-03-19 18:29   ` Michael Niedermayer
@ 2022-03-20 18:03     ` James Almer
  0 siblings, 0 replies; 12+ messages in thread
From: James Almer @ 2022-03-20 18:03 UTC (permalink / raw)
  To: ffmpeg-devel



On 3/19/2022 3:29 PM, Michael Niedermayer wrote:
> On Fri, Mar 18, 2022 at 07:47:48PM -0300, James Almer wrote:
>> This is cleaner and allows fine tuning which stream the option is applied to.
>>
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>>   fftools/ffmpeg.h     |  2 ++
>>   fftools/ffmpeg_opt.c | 84 ++++++++++++++++++--------------------------
>>   2 files changed, 36 insertions(+), 50 deletions(-)
> 
> Not sure its intended or not but
> This changes the output of
> 
No, it's probably not intended.

> ./ffmpeg -channel_layout 3.0 -ac 3 -f u8 -i /dev/zero -t 1 /tmp/file-old.wav

I assume (since i can't test) that a 2.1 layout is being set instead, if 
any.
Guess i need to change how and with what priority "channels" and 
"ch_layout" in pcm demuxer are parsed.

> 
> thx
> 
> [...]
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-03-20 18:04 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-18 22:19 [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout James Almer
2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 2/3] avformat/dfpwmdec: " James Almer
2022-03-18 22:19 ` [FFmpeg-devel] [PATCH 3/3] avformat/test/seek: set ch_layout instead of channels James Almer
2022-03-18 22:41 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Andreas Rheinhardt
2022-03-18 22:44   ` James Almer
2022-03-18 22:47     ` Andreas Rheinhardt
2022-03-18 22:47 ` [FFmpeg-devel] [PATCH 4/4] ffmpeg: replace custom channel_layout code with an SpecifierOpt based one James Almer
2022-03-19 18:29   ` Michael Niedermayer
2022-03-20 18:03     ` James Almer
2022-03-18 22:50 ` [FFmpeg-devel] [PATCH 1/4 v2] avformat/pcmdec: Add support for channel layouts for sln James Almer
2022-03-19 13:52 ` [FFmpeg-devel] [PATCH 1/3] avformat/slndec: add support to set channel layout Anton Khirnov
2022-03-20 17:06   ` James Almer

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git