---
 libavdevice/alsa.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libavdevice/alsa.c b/libavdevice/alsa.c
index d394e4377d..cf080d7eef 100644
--- a/libavdevice/alsa.c
+++ b/libavdevice/alsa.c
@@ -194,7 +194,7 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, 
snd_pcm_stream_t mode,
     snd_pcm_t *h;
     snd_pcm_hw_params_t *hw_params;
     snd_pcm_uframes_t buffer_size, period_size;
-    uint64_t layout = ctx->streams[0]->codecpar->channel_layout;
+    uint64_t layout = ctx->streams[0]->codecpar->ch_layout.u.mask;
 
     if (ctx->filename[0] == 0) audio_device = "default";
     else                       audio_device = ctx->filename;
@@ -292,10 +292,12 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, 
snd_pcm_stream_t mode,
 
     if (channels > 2 && layout) {
         if (find_reorder_func(s, *codec_id, layout, mode == 
SND_PCM_STREAM_PLAYBACK) < 0) {
-            char name[128];
-            av_get_channel_layout_string(name, sizeof(name), channels, layout);
+            char *chlstr = 
av_channel_layout(&ctx->streams[0]->codecpar->ch_layout);
+            if (!chlstr)
+                goto fail1;
             av_log(ctx, AV_LOG_WARNING, "ALSA channel layout unknown or 
unimplemented for %s %s.\n",
-                   name, mode == SND_PCM_STREAM_PLAYBACK ? "playback" : 
"capture");
+                   chlstr, mode == SND_PCM_STREAM_PLAYBACK ? "playback" : 
"capture");
+            av_free(chlstr);
         }
         if (s->reorder_func) {
             s->reorder_buf_size = buffer_size;
-- 
2.12.0

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

Reply via email to