Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Subject: [FFmpeg-devel] [PATCH 003/281] lavu: support AVChannelLayout AVOptions
Date: Wed, 12 Jan 2022 22:49:25 -0300
Message-ID: <20220113015101.4-4-jamrial@gmail.com> (raw)
In-Reply-To: <20220113015101.4-1-jamrial@gmail.com>

From: Anton Khirnov <anton@khirnov.net>

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavutil/opt.c       | 126 +++++++++++++++++++++++++++++++++++++++++-
 libavutil/opt.h       |  12 ++++
 libavutil/tests/opt.c |   8 +--
 tests/ref/fate/opt    |  16 +++---
 4 files changed, 149 insertions(+), 13 deletions(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index d951edca9d..445537fbad 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -39,6 +39,7 @@
 #include "opt.h"
 #include "samplefmt.h"
 #include "bprint.h"
+#include "version.h"
 
 #include <float.h>
 
@@ -71,7 +72,11 @@ static int read_number(const AVOption *o, const void *dst, double *num, int *den
     case AV_OPT_TYPE_INT:
         *intnum = *(int *)dst;
         return 0;
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
     case AV_OPT_TYPE_DURATION:
     case AV_OPT_TYPE_INT64:
     case AV_OPT_TYPE_UINT64:
@@ -126,7 +131,11 @@ static int write_number(void *obj, const AVOption *o, void *dst, double num, int
         *(int *)dst = llrint(num / den) * intnum;
         break;
     case AV_OPT_TYPE_DURATION:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
     case AV_OPT_TYPE_INT64:{
         double d = num / den;
         if (intnum == 1 && d == (double)INT64_MAX) {
@@ -465,6 +474,16 @@ static int set_string_dict(void *obj, const AVOption *o, const char *val, uint8_
     return 0;
 }
 
+static int set_string_channel_layout(void *obj, const AVOption *o,
+                                     const char *val, void *dst)
+{
+    AVChannelLayout *channel_layout = dst;
+    av_channel_layout_uninit(channel_layout);
+    if (!val)
+        return 0;
+    return av_channel_layout_from_string(channel_layout, val);
+}
+
 int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
 {
     int ret = 0;
@@ -472,12 +491,17 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
     const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj);
     if (!o || !target_obj)
         return AVERROR_OPTION_NOT_FOUND;
+FF_DISABLE_DEPRECATION_WARNINGS
     if (!val && (o->type != AV_OPT_TYPE_STRING &&
                  o->type != AV_OPT_TYPE_PIXEL_FMT && o->type != AV_OPT_TYPE_SAMPLE_FMT &&
                  o->type != AV_OPT_TYPE_IMAGE_SIZE &&
                  o->type != AV_OPT_TYPE_DURATION && o->type != AV_OPT_TYPE_COLOR &&
-                 o->type != AV_OPT_TYPE_CHANNEL_LAYOUT && o->type != AV_OPT_TYPE_BOOL))
+#if FF_API_OLD_CHANNEL_LAYOUT
+                 o->type != AV_OPT_TYPE_CHANNEL_LAYOUT &&
+#endif
+                 o->type != AV_OPT_TYPE_BOOL))
         return AVERROR(EINVAL);
+FF_ENABLE_DEPRECATION_WARNINGS
 
     if (o->flags & AV_OPT_FLAG_READONLY)
         return AVERROR(EINVAL);
@@ -533,6 +557,8 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
         }
     case AV_OPT_TYPE_COLOR:
         return set_string_color(obj, o, val, dst);
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
         if (!val || !strcmp(val, "none")) {
             *(int64_t *)dst = 0;
@@ -546,6 +572,15 @@ int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
             return ret;
         }
         break;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+    case AV_OPT_TYPE_CHLAYOUT:
+        ret = set_string_channel_layout(obj, o, val, dst);
+        if (ret < 0) {
+            av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as channel layout\n", val);
+            ret = AVERROR(EINVAL);
+        }
+        return ret;
     case AV_OPT_TYPE_DICT:
         return set_string_dict(obj, o, val, dst);
     }
@@ -709,6 +744,8 @@ int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt,
     return set_format(obj, name, fmt, search_flags, AV_OPT_TYPE_SAMPLE_FMT, "sample", AV_SAMPLE_FMT_NB);
 }
 
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
 int av_opt_set_channel_layout(void *obj, const char *name, int64_t cl, int search_flags)
 {
     void *target_obj;
@@ -724,6 +761,8 @@ int av_opt_set_channel_layout(void *obj, const char *name, int64_t cl, int searc
     *(int64_t *)(((uint8_t *)target_obj) + o->offset) = cl;
     return 0;
 }
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
 
 int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val,
                         int search_flags)
@@ -744,6 +783,22 @@ int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val,
     return 0;
 }
 
+int av_opt_set_chlayout(void *obj, const char *name,
+                        const AVChannelLayout *channel_layout,
+                        int search_flags)
+{
+    void *target_obj;
+    const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj);
+    AVChannelLayout *dst;
+
+    if (!o || !target_obj)
+        return AVERROR_OPTION_NOT_FOUND;
+
+    dst = (AVChannelLayout*)((uint8_t*)target_obj + o->offset);
+
+    return av_channel_layout_copy(dst, channel_layout);
+}
+
 static void format_duration(char *buf, size_t size, int64_t d)
 {
     char *e;
@@ -872,10 +927,18 @@ int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val)
                        (int)((uint8_t *)dst)[0], (int)((uint8_t *)dst)[1],
                        (int)((uint8_t *)dst)[2], (int)((uint8_t *)dst)[3]);
         break;
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+
         i64 = *(int64_t *)dst;
         ret = snprintf(buf, sizeof(buf), "0x%"PRIx64, i64);
         break;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+    case AV_OPT_TYPE_CHLAYOUT:
+        ret = av_channel_layout_describe(dst, buf, sizeof(buf));
+        break;
     case AV_OPT_TYPE_DICT:
         if (!*(AVDictionary **)dst && (search_flags & AV_OPT_ALLOW_NULL)) {
             *out_val = NULL;
@@ -1017,6 +1080,8 @@ int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AV
     return get_format(obj, name, search_flags, out_fmt, AV_OPT_TYPE_SAMPLE_FMT, "sample");
 }
 
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
 int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int64_t *cl)
 {
     void *dst, *target_obj;
@@ -1033,6 +1098,24 @@ int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int
     *cl = *(int64_t *)dst;
     return 0;
 }
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
+
+int av_opt_get_chlayout(void *obj, const char *name, int search_flags, AVChannelLayout *cl)
+{
+    void *dst, *target_obj;
+    const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj);
+    if (!o || !target_obj)
+        return AVERROR_OPTION_NOT_FOUND;
+    if (o->type != AV_OPT_TYPE_CHLAYOUT) {
+        av_log(obj, AV_LOG_ERROR,
+               "The value for option '%s' is not a channel layout.\n", name);
+        return AVERROR(EINVAL);
+    }
+
+    dst = ((uint8_t*)target_obj) + o->offset;
+    return av_channel_layout_copy(cl, dst);
+}
 
 int av_opt_get_dict_val(void *obj, const char *name, int search_flags, AVDictionary **out_val)
 {
@@ -1225,7 +1308,12 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit,
             case AV_OPT_TYPE_COLOR:
                 av_log(av_log_obj, AV_LOG_INFO, "%-12s ", "<color>");
                 break;
+            case AV_OPT_TYPE_CHLAYOUT:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
             case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
                 av_log(av_log_obj, AV_LOG_INFO, "%-12s ", "<channel_layout>");
                 break;
             case AV_OPT_TYPE_BOOL:
@@ -1282,6 +1370,7 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit,
                    opt->type == AV_OPT_TYPE_IMAGE_SIZE ||
                    opt->type == AV_OPT_TYPE_STRING     ||
                    opt->type == AV_OPT_TYPE_DICT       ||
+                   opt->type == AV_OPT_TYPE_CHLAYOUT   ||
                    opt->type == AV_OPT_TYPE_VIDEO_RATE) &&
                   !opt->default_val.str)) {
             av_log(av_log_obj, AV_LOG_INFO, " (default ");
@@ -1334,11 +1423,16 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit,
             case AV_OPT_TYPE_STRING:
             case AV_OPT_TYPE_DICT:
             case AV_OPT_TYPE_VIDEO_RATE:
+            case AV_OPT_TYPE_CHLAYOUT:
                 av_log(av_log_obj, AV_LOG_INFO, "\"%s\"", opt->default_val.str);
                 break;
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
             case AV_OPT_TYPE_CHANNEL_LAYOUT:
                 av_log(av_log_obj, AV_LOG_INFO, "0x%"PRIx64, opt->default_val.i64);
                 break;
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
             }
             av_log(av_log_obj, AV_LOG_INFO, ")");
         }
@@ -1388,7 +1482,11 @@ void av_opt_set_defaults2(void *s, int mask, int flags)
             case AV_OPT_TYPE_INT64:
             case AV_OPT_TYPE_UINT64:
             case AV_OPT_TYPE_DURATION:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
             case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
             case AV_OPT_TYPE_PIXEL_FMT:
             case AV_OPT_TYPE_SAMPLE_FMT:
                 write_number(s, opt, dst, 1, 1, opt->default_val.i64);
@@ -1421,6 +1519,9 @@ void av_opt_set_defaults2(void *s, int mask, int flags)
             case AV_OPT_TYPE_BINARY:
                 set_string_binary(s, opt, opt->default_val.str, dst);
                 break;
+            case AV_OPT_TYPE_CHLAYOUT:
+                set_string_channel_layout(s, opt, opt->default_val.str, dst);
+                break;
             case AV_OPT_TYPE_DICT:
                 set_string_dict(s, opt, opt->default_val.str, dst);
                 break;
@@ -1745,7 +1846,11 @@ static int opt_size(enum AVOptionType type)
     case AV_OPT_TYPE_FLAGS:
         return sizeof(int);
     case AV_OPT_TYPE_DURATION:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
     case AV_OPT_TYPE_INT64:
     case AV_OPT_TYPE_UINT64:
         return sizeof(int64_t);
@@ -1819,6 +1924,9 @@ int av_opt_copy(void *dst, const void *src)
             ret2 = av_dict_copy(ddict, *sdict, 0);
             if (ret2 < 0)
                 ret = ret2;
+        } else if (o->type == AV_OPT_TYPE_CHLAYOUT) {
+            if (field_dst != field_src)
+                ret = av_channel_layout_copy(field_dst, field_src);
         } else {
             int size = opt_size(o->type);
             if (size < 0)
@@ -1882,7 +1990,11 @@ int av_opt_query_ranges_default(AVOptionRanges **ranges_arg, void *obj, const ch
     case AV_OPT_TYPE_DOUBLE:
     case AV_OPT_TYPE_DURATION:
     case AV_OPT_TYPE_COLOR:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
         break;
     case AV_OPT_TYPE_STRING:
         range->component_min = 0;
@@ -1962,12 +2074,24 @@ int av_opt_is_set_to_default(void *obj, const AVOption *o)
     case AV_OPT_TYPE_PIXEL_FMT:
     case AV_OPT_TYPE_SAMPLE_FMT:
     case AV_OPT_TYPE_INT:
+#if FF_API_OLD_CHANNEL_LAYOUT
+FF_DISABLE_DEPRECATION_WARNINGS
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
+FF_ENABLE_DEPRECATION_WARNINGS
+#endif
     case AV_OPT_TYPE_DURATION:
     case AV_OPT_TYPE_INT64:
     case AV_OPT_TYPE_UINT64:
         read_number(o, dst, NULL, NULL, &i64);
         return o->default_val.i64 == i64;
+    case AV_OPT_TYPE_CHLAYOUT: {
+        AVChannelLayout ch_layout = { 0 };
+        if (o->default_val.str) {
+            if ((ret = av_channel_layout_from_string(&ch_layout, o->default_val.str)) < 0)
+                return ret;
+        }
+        return !av_channel_layout_compare((AVChannelLayout *)dst, &ch_layout);
+    }
     case AV_OPT_TYPE_STRING:
         str = *(char **)dst;
         if (str == o->default_val.str) //2 NULLs
diff --git a/libavutil/opt.h b/libavutil/opt.h
index 2820435eec..461b5d3b6b 100644
--- a/libavutil/opt.h
+++ b/libavutil/opt.h
@@ -29,6 +29,7 @@
 
 #include "rational.h"
 #include "avutil.h"
+#include "channel_layout.h"
 #include "dict.h"
 #include "log.h"
 #include "pixfmt.h"
@@ -237,8 +238,11 @@ enum AVOptionType{
     AV_OPT_TYPE_VIDEO_RATE, ///< offset must point to AVRational
     AV_OPT_TYPE_DURATION,
     AV_OPT_TYPE_COLOR,
+#if FF_API_OLD_CHANNEL_LAYOUT
     AV_OPT_TYPE_CHANNEL_LAYOUT,
+#endif
     AV_OPT_TYPE_BOOL,
+    AV_OPT_TYPE_CHLAYOUT,
 };
 
 /**
@@ -693,7 +697,11 @@ int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_
 int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags);
 int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags);
 int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags);
+#if FF_API_OLD_CHANNEL_LAYOUT
+attribute_deprecated
 int av_opt_set_channel_layout(void *obj, const char *name, int64_t ch_layout, int search_flags);
+#endif
+int av_opt_set_chlayout(void *obj, const char *name, const AVChannelLayout *layout, int search_flags);
 /**
  * @note Any old dictionary present is discarded and replaced with a copy of the new one. The
  * caller still owns val is and responsible for freeing it.
@@ -748,7 +756,11 @@ int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_
 int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt);
 int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt);
 int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRational *out_val);
+#if FF_API_OLD_CHANNEL_LAYOUT
+attribute_deprecated
 int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int64_t *ch_layout);
+#endif
+int av_opt_get_chlayout(void *obj, const char *name, int search_flags, AVChannelLayout *layout);
 /**
  * @param[out] out_val The returned dictionary is a copy of the actual value and must
  * be freed with av_dict_free() by the caller
diff --git a/libavutil/tests/opt.c b/libavutil/tests/opt.c
index e6ea892373..5799e45c6a 100644
--- a/libavutil/tests/opt.c
+++ b/libavutil/tests/opt.c
@@ -41,7 +41,7 @@ typedef struct TestContext {
     enum AVSampleFormat sample_fmt;
     int64_t duration;
     uint8_t color[4];
-    int64_t channel_layout;
+    AVChannelLayout channel_layout;
     void *binary;
     int binary_size;
     void *binary1;
@@ -81,7 +81,7 @@ static const AVOption test_options[]= {
     {"video_rate", "set videorate",      OFFSET(video_rate),     AV_OPT_TYPE_VIDEO_RATE,     { .str = "25" },                   0,         INT_MAX, 1 },
     {"duration",   "set duration",       OFFSET(duration),       AV_OPT_TYPE_DURATION,       { .i64 = 1000 },                   0, INT64_MAX, 1 },
     {"color",      "set color",          OFFSET(color),          AV_OPT_TYPE_COLOR,          { .str = "pink" },                 0,         0, 1 },
-    {"cl",         "set channel layout", OFFSET(channel_layout), AV_OPT_TYPE_CHANNEL_LAYOUT, { .i64 = AV_CH_LAYOUT_HEXAGONAL }, 0, INT64_MAX, 1 },
+    {"cl",         "set channel layout", OFFSET(channel_layout), AV_OPT_TYPE_CHLAYOUT,       { .str = "hexagonal" },            0,         0, 1 },
     {"bin",        "set binary value",   OFFSET(binary),         AV_OPT_TYPE_BINARY,         { .str="62696e00" },               0,         0, 1 },
     {"bin1",       "set binary value",   OFFSET(binary1),        AV_OPT_TYPE_BINARY,         { .str=NULL },                     0,         0, 1 },
     {"bin2",       "set binary value",   OFFSET(binary2),        AV_OPT_TYPE_BINARY,         { .str="" },                       0,         0, 1 },
@@ -138,7 +138,7 @@ int main(void)
         printf("sample_fmt=%s\n", av_get_sample_fmt_name(test_ctx.sample_fmt));
         printf("duration=%"PRId64"\n", test_ctx.duration);
         printf("color=%d %d %d %d\n", test_ctx.color[0], test_ctx.color[1], test_ctx.color[2], test_ctx.color[3]);
-        printf("channel_layout=%"PRId64"=%"PRId64"\n", test_ctx.channel_layout, (int64_t)AV_CH_LAYOUT_HEXAGONAL);
+        printf("channel_layout=%"PRId64"=%"PRId64"\n", test_ctx.channel_layout.u.mask, (int64_t)AV_CH_LAYOUT_HEXAGONAL);
         if (test_ctx.binary)
             printf("binary=%x %x %x %x\n", ((uint8_t*)test_ctx.binary)[0], ((uint8_t*)test_ctx.binary)[1], ((uint8_t*)test_ctx.binary)[2], ((uint8_t*)test_ctx.binary)[3]);
         printf("binary_size=%d\n", test_ctx.binary_size);
@@ -280,7 +280,7 @@ int main(void)
             "color=blue",
             "color=0x223300",
             "color=0x42FF07AA",
-            "cl=stereo+downmix",
+            "cl=FL+FR",
             "cl=foo",
             "bin=boguss",
             "bin=111",
diff --git a/tests/ref/fate/opt b/tests/ref/fate/opt
index aac3fa0e7e..832f9cc8a9 100644
--- a/tests/ref/fate/opt
+++ b/tests/ref/fate/opt
@@ -33,7 +33,7 @@ TestContext AVOptions:
   -video_rate        <video_rate> E.......... set videorate (default "25")
   -duration          <duration>   E.......... set duration (default 0.001)
   -color             <color>      E.......... set color (default "pink")
-  -cl                <channel_layout> E.......... set channel layout (default 0x137)
+  -cl                <channel_layout> E.......... set channel layout (default "hexagonal")
   -bin               <binary>     E.......... set binary value
   -bin1              <binary>     E.......... set binary value
   -bin2              <binary>     E.......... set binary value
@@ -115,7 +115,7 @@ name: sample_fmt  get: s16              set: OK               get: s16
 name: video_rate  get: 25/1             set: OK               get: 25/1             OK
 name: duration    get: 0.001            set: OK               get: 0.001            OK
 name: color       get: 0xffc0cbff       set: OK               get: 0xffc0cbff       OK
-name: cl          get: 0x137            set: OK               get: 0x137            OK
+name: cl          get: hexagonal        set: OK               get: hexagonal        OK
 name: bin         get: 62696E00         set: OK               get: 62696E00         OK
 name: bin1        get:                  set: OK               get:                  OK
 name: bin2        get:                  set: OK               get:                  OK
@@ -129,7 +129,7 @@ name: dict1       get:                  set: OK               get:
 name: dict2       get: happy=\:-)       set: OK               get: happy=\:-)       OK
 
 Test av_opt_serialize()
-num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=0x137,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-)
+num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-)
 Setting entry with key 'num' to value '0'
 Setting entry with key 'toggle' to value '1'
 Setting entry with key 'rational' to value '1/1'
@@ -142,7 +142,7 @@ Setting entry with key 'sample_fmt' to value 's16'
 Setting entry with key 'video_rate' to value '25/1'
 Setting entry with key 'duration' to value '0.001'
 Setting entry with key 'color' to value '0xffc0cbff'
-Setting entry with key 'cl' to value '0x137'
+Setting entry with key 'cl' to value 'hexagonal'
 Setting entry with key 'bin' to value '62696E00'
 Setting entry with key 'bin1' to value ''
 Setting entry with key 'bin2' to value ''
@@ -154,7 +154,7 @@ Setting entry with key 'bool2' to value 'true'
 Setting entry with key 'bool3' to value 'false'
 Setting entry with key 'dict1' to value ''
 Setting entry with key 'dict2' to value 'happy=\:-)'
-num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=0x137,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-)
+num=0,toggle=1,rational=1/1,string=default,escape=\\\=\,,flags=0x00000001,size=200x300,pix_fmt=0bgr,sample_fmt=s16,video_rate=25/1,duration=0.001,color=0xffc0cbff,cl=hexagonal,bin=62696E00,bin1=,bin2=,num64=1,flt=0.333333,dbl=0.333333,bool1=auto,bool2=true,bool3=false,dict1=,dict2=happy\=\\:-)
 
 Testing av_set_options_string()
 Setting options string ''
@@ -296,9 +296,9 @@ OK    'color=0x223300'
 Setting options string 'color=0x42FF07AA'
 Setting entry with key 'color' to value '0x42FF07AA'
 OK    'color=0x42FF07AA'
-Setting options string 'cl=stereo+downmix'
-Setting entry with key 'cl' to value 'stereo+downmix'
-OK    'cl=stereo+downmix'
+Setting options string 'cl=FL+FR'
+Setting entry with key 'cl' to value 'FL+FR'
+OK    'cl=FL+FR'
 Setting options string 'cl=foo'
 Setting entry with key 'cl' to value 'foo'
 Unable to parse option value "foo" as channel layout
-- 
2.34.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".

  parent reply	other threads:[~2022-01-13  1:52 UTC|newest]

Thread overview: 337+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-13  1:49 [FFmpeg-devel] [PATCH 000/281 v3] New channel layout API James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 001/281] Add a new " James Almer
2022-01-13 14:08   ` Lynne
2022-01-16 11:27   ` Nicolas George
2022-01-16 22:54     ` Marton Balint
2022-01-17 13:22       ` James Almer
2022-01-17 20:18         ` Marton Balint
2022-01-17 20:27           ` James Almer
2022-01-17 13:53       ` Nicolas George
2022-01-17 13:54         ` James Almer
2022-01-17 13:56           ` Nicolas George
2022-01-17 14:02             ` James Almer
2022-01-17 16:50               ` Nicolas George
2022-01-17 16:52                 ` James Almer
2022-01-17 16:54                   ` Nicolas George
2022-01-17 16:57                     ` James Almer
2022-01-17 17:55                       ` Nicolas George
2022-01-17 13:32     ` James Almer
2022-01-17 13:51       ` Nicolas George
2022-01-17 14:12         ` James Almer
2022-01-17 16:48           ` Nicolas George
2022-01-17 16:50             ` James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 002/281] fate: add a channel_layout API test James Almer
2022-01-13  1:49 ` James Almer [this message]
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 004/281] lavc: deprecate channel count/layout changing side data James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 005/281] avframe: switch to the new channel layout API James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 006/281] avcodecpar: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 007/281] lavf: add a temporary compat layer for the channel layout API change James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 008/281] lavf: convert the generic layer to the new channel layout James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 009/281] 3dostr: convert to new channel layout API James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 010/281] 4xm: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 011/281] aa: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 012/281] aax: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 013/281] ace: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 014/281] acm: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 015/281] act: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 016/281] adp: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 017/281] ads: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 018/281] adxdec: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 019/281] aea: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 020/281] afc: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 021/281] aiff: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 022/281] aixdec: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 023/281] alsa: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 024/281] alp: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 025/281] amr: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 026/281] amv: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 027/281] apc: " James Almer
2022-01-26 13:41   ` Anton Khirnov
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 028/281] ape: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 029/281] apm: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 030/281] aptxdec: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 031/281] argo: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 032/281] ast: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 033/281] au: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 034/281] avr: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 035/281] bethsoftvid: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 036/281] bfi: " James Almer
2022-01-13  1:49 ` [FFmpeg-devel] [PATCH 037/281] bink: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 038/281] bit: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 039/281] bmv: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 040/281] boa: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 041/281] brstm: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 042/281] caf: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 043/281] cdxl: " James Almer
2022-01-26 13:53   ` Anton Khirnov
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 044/281] codec2: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 045/281] dash: " James Almer
2022-01-26 13:56   ` Anton Khirnov
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 046/281] dcstr: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 047/281] derf: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 048/281] dhav: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 049/281] dtshddec: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 050/281] dsicin: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 051/281] dshow: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 052/281] dss: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 053/281] dsfdec: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 054/281] dv: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 055/281] eac: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 056/281] electronicarts: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 057/281] epafdec: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 058/281] flac: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 059/281] flic: " James Almer
2022-01-27  7:46   ` Anton Khirnov
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 060/281] flv: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 061/281] framehash: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 062/281] fsb: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 063/281] fwse: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 064/281] g722: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 065/281] g723_1: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 066/281] g726: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 067/281] g729: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 068/281] gdv: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 069/281] genh: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 070/281] gsm: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 071/281] gxf: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 072/281] hca: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 073/281] hcom: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 074/281] hls_sample_encryption: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 075/281] idcin: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 076/281] idroq: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 077/281] iff: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 078/281] ifv: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 079/281] ilbc: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 080/281] imx: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 081/281] ircam: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 082/281] ipmovie: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 083/281] iss: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 084/281] jack: port " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 085/281] jvdec: convert " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 086/281] kvag: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 087/281] avdevice/lavfi: " James Almer
2022-01-13  1:50 ` [FFmpeg-devel] [PATCH 088/281] libcdio: port " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 089/281] lvf: convert " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 090/281] lxfdec: " James Almer
2022-01-27 15:19   ` Tomas Härdin
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 091/281] matroska: " James Almer
2022-01-21 19:52   ` Andreas Rheinhardt
2022-01-21 20:20     ` James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 092/281] mca: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 093/281] mm: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 094/281] mmf: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 095/281] moflex: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 096/281] mov: " James Almer
2022-01-28 10:08   ` Anton Khirnov
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 097/281] movenc-test: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 098/281] mp3: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 099/281] mpc: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 100/281] mpc8: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 101/281] mpeg: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 102/281] mpegenc: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 103/281] mpegtsenc: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 104/281] msf: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 105/281] mtaf: " James Almer
2022-01-13  1:55 ` [FFmpeg-devel] [PATCH 106/281] musx: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 107/281] mvdec: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 108/281] mvi: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 109/281] mxf: " James Almer
2022-01-19 19:06   ` Tomas Härdin
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 110/281] mxg: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 111/281] nistspheredec: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 112/281] nspdec: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 113/281] nsvdec: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 114/281] nutdec: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 115/281] nuv: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 116/281] ogg: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 117/281] oma: " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 118/281] oss: port " James Almer
2022-01-13  1:56 ` [FFmpeg-devel] [PATCH 119/281] paf: convert " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 089/281] lvf: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 120/281] pcm: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 121/281] pmp: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 122/281] pp_bnk: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 123/281] psxstr: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 124/281] pvf: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 125/281] qcp: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 126/281] r3d: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 127/281] rawenc: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 128/281] redspark: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 129/281] riff: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 130/281] rl2: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 131/281] rm: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 132/281] rpl: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 133/281] rsd: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 134/281] rso: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 135/281] rtp: " James Almer
2022-01-28 14:15   ` Anton Khirnov
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 136/281] sbg: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 137/281] scd: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 138/281] sdp: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 139/281] sdr2: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 140/281] sds: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 141/281] sdx: " James Almer
2022-01-13  1:57 ` [FFmpeg-devel] [PATCH 142/281] segafilm: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 143/281] sga: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 144/281] sierravmd: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 145/281] siff: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 146/281] smacker: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 147/281] smjpegenc: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 148/281] smoothstreaming: " James Almer
2022-01-13  1:58 ` [FFmpeg-devel] [PATCH 149/281] smush: " James Almer
2022-01-13  1:59 ` [FFmpeg-devel] [PATCH 089/281] lvf: " James Almer
2022-01-13  1:59 ` [FFmpeg-devel] [PATCH 150/281] sol: " James Almer
2022-01-13  1:59 ` [FFmpeg-devel] [PATCH 151/281] sox: " James Almer
2022-01-13  1:59 ` [FFmpeg-devel] [PATCH 152/281] svag: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 153/281] svs: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 154/281] swf: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 155/281] tak: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 156/281] thp: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 157/281] tiertexseq: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 158/281] tmv: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 159/281] tta: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 160/281] uncodedframecrcenc: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 161/281] vag: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 162/281] vividas: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 163/281] vivo: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 164/281] voc: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 165/281] vpk: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 166/281] vqf: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 167/281] wav: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 168/281] wc3movie: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 169/281] westwood: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 170/281] wtv: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 171/281] wv: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 172/281] xa: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 173/281] xmv: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 174/281] xwma: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 175/281] yop: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 176/281] wsd: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 177/281] wve: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 178/281] xvag: " James Almer
2022-01-13  2:00 ` [FFmpeg-devel] [PATCH 179/281] lavf: drop the channel layout compat layer for old-style (de)muxers James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 180/281] lavc: switch to the new channel layout API James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 181/281] 8svx: convert to " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 182/281] aac: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 183/281] ac3: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 184/281] adpcm: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 185/281] adx: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 186/281] alac: " James Almer
2022-02-09  9:40   ` Anton Khirnov
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 187/281] als: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 188/281] amr: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 189/281] aptx: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 190/281] atrac1: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 191/281] atrac3: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 192/281] atrac3plus: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 193/281] atrac9: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 194/281] apedec: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 195/281] audiotoolbox: " James Almer
2022-02-21 14:22   ` Anton Khirnov
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 196/281] binkaudio: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 197/281] bmvaudio: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 198/281] cng: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 199/281] cook: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 200/281] dca: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 201/281] dolby_e: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 202/281] dpcm: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 203/281] dsd: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 204/281] dsicinav: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 205/281] dss_sp: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 206/281] dst: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 207/281] dvaudio: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 208/281] evrc: " James Almer
2022-01-13  2:02 ` [FFmpeg-devel] [PATCH 209/281] fastaudio: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 210/281] ffwavesynth: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 211/281] flac: " James Almer
2022-02-23 10:24   ` Anton Khirnov
2022-02-23 11:51     ` James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 212/281] g722: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 213/281] g723_1: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 214/281] g726: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 215/281] g729: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 216/281] gsmdec: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 217/281] hca: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 218/281] hcom: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 219/281] ilbc: " James Almer
2022-01-13  2:04 ` [FFmpeg-devel] [PATCH 220/281] imc: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 221/281] interplayacm: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 222/281] libcelt: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 223/281] libcodec2: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 224/281] libfdk-aac: " James Almer
2022-02-25 11:18   ` Anton Khirnov
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 225/281] libilbc: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 226/281] libgsm: " James Almer
2022-02-25 11:20   ` Anton Khirnov
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 227/281] libmp3lame: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 228/281] libopencore-amr: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 229/281] libopus: " James Almer
2022-02-25 11:46   ` Anton Khirnov
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 230/281] libshine: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 231/281] libspeexdec: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 232/281] libtwolame: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 233/281] libvo-amrwbenc: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 234/281] libvorbis: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 235/281] mace: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 236/281] metasound: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 237/281] mf: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 238/281] mlp: " James Almer
2022-01-13  2:05 ` [FFmpeg-devel] [PATCH 239/281] mpc7: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 240/281] mpc8: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 241/281] mpegaudio: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 242/281] nellymoser: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 243/281] on2avc: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 244/281] opus: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 245/281] pafaudio: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 246/281] pcm: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 247/281] qcelpdec: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 248/281] qdmc: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 249/281] qdm2: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 250/281] ra144: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 251/281] ra288: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 252/281] ralf: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 253/281] roqaudioenc: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 254/281] s302m: " James Almer
2022-01-13  2:06 ` [FFmpeg-devel] [PATCH 255/281] sbc: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 256/281] shorten: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 257/281] sipr: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 258/281] siren: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 259/281] smacker: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 260/281] sonic: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 261/281] speex: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 262/281] tak: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 263/281] truespeech: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 264/281] tta: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 265/281] twinvq: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 266/281] vima: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 267/281] vmdaudio: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 268/281] vorbis: " James Almer
2022-01-13  2:07 ` [FFmpeg-devel] [PATCH 269/281] wavpack: " James Almer
2022-03-07 10:42   ` Anton Khirnov
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 270/281] wma: " James Almer
2022-03-07 10:26   ` Anton Khirnov
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 271/281] ws-snd1: " James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 272/281] lavc: drop temporary compat wrappers for channel layout API change James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 273/281] lavf: Add non diegetic stream disposition flag James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 274/281] swresample: convert to new channel layout API James Almer
2022-01-19 17:20   ` Andreas Rheinhardt
2022-01-19 17:29     ` James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 275/281] avfilter: " James Almer
2022-02-14 15:49   ` Anton Khirnov
2022-02-15 11:50   ` Anton Khirnov
2022-02-15 12:27     ` James Almer
2022-02-15 12:34       ` Anton Khirnov
2022-02-15 18:52     ` James Almer
2022-02-16 18:15   ` Anton Khirnov
2022-02-18 13:07     ` James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 276/281] avdevice/lavfi: remove call to deprecated function av_buffersink_get_channel_layout() James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 277/281] ffmpeg: convert to new channel layout-API James Almer
2022-01-13 18:29   ` Michael Niedermayer
2022-01-13 18:40     ` James Almer
2022-01-13 19:44       ` James Almer
2022-01-15 13:47         ` Michael Niedermayer
2022-01-15 16:04           ` James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 278/281] ffprobe: " James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 279/281] channel_layout: add support for Ambisonic James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 280/281] opus: export mapping family 2 (Ambisonic) as Ambisonic layout James Almer
2022-01-13  2:09 ` [FFmpeg-devel] [PATCH 281/281] mov: Implement spatial audio support James Almer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220113015101.4-4-jamrial@gmail.com \
    --to=jamrial@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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