From patchwork Thu Jan 13 01:49:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 33313 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp14551iog; Wed, 12 Jan 2022 17:56:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJyha+r+N0vGyfWChJV18GkbhzcL35trOjhZU6hSuBb965uDqCtCnFmHQohExcRt8tE/M2sl X-Received: by 2002:a50:fe89:: with SMTP id d9mr2206858edt.252.1642038990472; Wed, 12 Jan 2022 17:56:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642038990; cv=none; d=google.com; s=arc-20160816; b=prZjR3Gire2FBnfGK16qf0eYG/Xyzjak0UUD3HoJ3M3qsaqv8rW2aUhujVF4uPs2x6 PAfSeLRaY5lcl1JMy/04eg96MMeAyKIB+LVPEVuHfrqifhYGrZ0pzzGkUibQSAOBaanp 5uI6MvJ+6XIZ/yxKBHj16I6knyrQHlXKeoNOGI4OnAVdyYZpRGTHEnmOtbynldoz1GY4 03aOs1TF8QxkQqek2BdJXNqYXXb1djC4jhqYSAnqvKks5eKjS4xPxhO4zqHQ4FJELvts aC5S9gcw5Og8w4piNhXNJcU7lCC/SZckMBLcoCYiaFdQQZjdaZLxe9oq0ylPGDByoFJM JaCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=6rqvFEzR/whYImrDXUYSGCPo3DPF48q9Pp4J83COK3A=; b=RFAHwjzam5+kQI0lbyfBYteBi+gk3JSl98wFmfXQAcCpLqu/+tNtIab8RIsq9KGGyi pVKuuC6HVKum2ZHTtd/Xe1bTTTJRTptr030WQI6JtmANrqopVwOfcDYGMs4WbVW+A61a f8cGhJCuI+tRIwMalGDjB/WEXLwwB+84+fSNp//mn/+IgEXj4FUOnw5C/bh3arVHAY2A vSBudb5thDCUBS4lGK4wSzpZA98S1CRBePlqv7qa6clNm3SzS850cUTixa5GWDpLue7K syrkk5cv1oEtJP7Gkr4IHpSSobmBEFQ7qR/JAeXBU0gWjHuhPtfLPazXPu2dUJSo6WSG +6dg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="JuHAlVl/"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e1si784091ejs.857.2022.01.12.17.56.30; Wed, 12 Jan 2022 17:56:30 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="JuHAlVl/"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A54D768AFFD; Thu, 13 Jan 2022 03:52:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49D3F68AFF0 for ; Thu, 13 Jan 2022 03:52:29 +0200 (EET) Received: by mail-qt1-f178.google.com with SMTP id y17so5308944qtx.9 for ; Wed, 12 Jan 2022 17:52:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Jt8fPmXav12innG2yef/hDd6aUkfUteWqLLclk8WZF0=; b=JuHAlVl/rWOA0ZZZShWARlkEAizY9lDTB6r8qjhcVq/bL68BHtI02WWlHuCwAeSlVd +WqYcv5hvfbm2lQ77gklffwqfpHC8fZDsg8zHEoJMKT0uMfj0eCqJMwW33Me8FQ29uQC z5Kwe8ArZqfUhcKHtu8mYVsDTnCVTiu6CBzhaljdlKB7p2bvE5FVJ7XvurNx51IOq131 Ok0Fgxzu/47ExeyRkCIEo+PXEFzAo09vpK7xPGZiXGucSldAZnLCSb4iiEQIp+qoRob2 8js1nONV/bS1z/p3z+QwZz8oGOlU0KjN6Q2Ps9U8CRXP7b1i7AfbU8trJCaKAwwelQBU o2kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jt8fPmXav12innG2yef/hDd6aUkfUteWqLLclk8WZF0=; b=JuiZM15h665smQZLs0nlRwTyEst8yIP9MyovM++qANhdH4z3Mk51Adpf7LVRfzghpQ 9WWjrAx0SWeQlAp/y8GW5hS3UDbiaUUgKJwfMrTvnbalekgmYRVwh0MtDHeHpL2Vyc/C fK4BnaC8aq4zc3h+Bt+uo8flWXS/DrfaE5fmfE5xza3q1CZknXQUcdc9HPHXlhUoHHee DcfTf7VVZwvj/XPtGHHV8KDgo0AnG41G46lg1Lr52OAyn3AcFDTVOsjeMtl8KV6f6xiz m3L4bmYk32bgh4hIDP0jfs5RkevOUo+UYsKBEuL8DR/UGg2W7WWMQKcKiHN4GT9E/iz6 HMJQ== X-Gm-Message-State: AOAM532PSU3K/586s9UPrfia3QPCxEKUk/DGPuWtYFYPQjWuWHbUTHnn gOIV9GyS6bLwz6KZcJ6IxsAAkmOMj8c= X-Received: by 2002:a05:622a:2ca:: with SMTP id a10mr1990803qtx.483.1642038747584; Wed, 12 Jan 2022 17:52:27 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id i21sm1204710qti.31.2022.01.12.17.52.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jan 2022 17:52:27 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jan 2022 22:49:45 -0300 Message-Id: <20220113015101.4-24-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220113015101.4-1-jamrial@gmail.com> References: <20220113015101.4-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 023/281] alsa: convert to new channel layout API X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: NS4r0NdVVGjx Signed-off-by: James Almer --- libavdevice/alsa.c | 19 +++++++++++-------- libavdevice/alsa_dec.c | 3 ++- libavdevice/alsa_enc.c | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/libavdevice/alsa.c b/libavdevice/alsa.c index ee282fac16..5396858427 100644 --- a/libavdevice/alsa.c +++ b/libavdevice/alsa.c @@ -124,7 +124,7 @@ switch(format) {\ case FORMAT_F32: s->reorder_func = alsa_reorder_f32_out_ ##layout; break;\ } -static av_cold int find_reorder_func(AlsaData *s, int codec_id, uint64_t layout, int out) +static av_cold int find_reorder_func(AlsaData *s, int codec_id, AVChannelLayout *layout, int out) { int format; @@ -133,7 +133,8 @@ static av_cold int find_reorder_func(AlsaData *s, int codec_id, uint64_t layout, return AVERROR(ENOSYS); /* reordering is not needed for QUAD or 2_2 layout */ - if (layout == AV_CH_LAYOUT_QUAD || layout == AV_CH_LAYOUT_2_2) + if (!av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_QUAD) || + !av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_2_2)) return 0; switch (codec_id) { @@ -154,11 +155,13 @@ static av_cold int find_reorder_func(AlsaData *s, int codec_id, uint64_t layout, default: return AVERROR(ENOSYS); } - if (layout == AV_CH_LAYOUT_5POINT0_BACK || layout == AV_CH_LAYOUT_5POINT0) + if (!av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT0_BACK) || + !av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT0)) PICK_REORDER(50) - else if (layout == AV_CH_LAYOUT_5POINT1_BACK || layout == AV_CH_LAYOUT_5POINT1) + else if (!av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT1_BACK) || + !av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT1)) PICK_REORDER(51) - else if (layout == AV_CH_LAYOUT_7POINT1) + else if (!av_channel_layout_compare(layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_7POINT1)) PICK_REORDER(71) return s->reorder_func ? 0 : AVERROR(ENOSYS); @@ -169,13 +172,13 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, int channels, enum AVCodecID *codec_id) { AlsaData *s = ctx->priv_data; + AVChannelLayout *layout = &ctx->streams[0]->codecpar->ch_layout; const char *audio_device; int res, flags = 0; snd_pcm_format_t format; 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; if (ctx->url[0] == 0) audio_device = "default"; else audio_device = ctx->url; @@ -271,10 +274,10 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, snd_pcm_hw_params_free(hw_params); - if (channels > 2 && layout) { + if (channels > 2 && layout->order != AV_CHANNEL_ORDER_UNSPEC) { 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); + av_channel_layout_describe(layout, name, sizeof(name)); av_log(ctx, AV_LOG_WARNING, "ALSA channel layout unknown or unimplemented for %s %s.\n", name, mode == SND_PCM_STREAM_PLAYBACK ? "playback" : "capture"); } diff --git a/libavdevice/alsa_dec.c b/libavdevice/alsa_dec.c index e93f31b146..79d37b5f56 100644 --- a/libavdevice/alsa_dec.c +++ b/libavdevice/alsa_dec.c @@ -82,7 +82,8 @@ static av_cold int audio_read_header(AVFormatContext *s1) st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; st->codecpar->codec_id = codec_id; st->codecpar->sample_rate = s->sample_rate; - st->codecpar->channels = s->channels; + st->codecpar->ch_layout.nb_channels = s->channels; + st->codecpar->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; st->codecpar->frame_size = s->frame_size; avpriv_set_pts_info(st, 64, 1, 1000000); /* 64 bits pts in us */ /* microseconds instead of seconds, MHz instead of Hz */ diff --git a/libavdevice/alsa_enc.c b/libavdevice/alsa_enc.c index a783d8eca1..fc5e5d9c94 100644 --- a/libavdevice/alsa_enc.c +++ b/libavdevice/alsa_enc.c @@ -64,7 +64,7 @@ static av_cold int audio_write_header(AVFormatContext *s1) sample_rate = st->codecpar->sample_rate; codec_id = st->codecpar->codec_id; res = ff_alsa_open(s1, SND_PCM_STREAM_PLAYBACK, &sample_rate, - st->codecpar->channels, &codec_id); + st->codecpar->ch_layout.nb_channels, &codec_id); if (sample_rate != st->codecpar->sample_rate) { av_log(s1, AV_LOG_ERROR, "sample rate %d not available, nearest is %d\n",