惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
罗磊的独立博客
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
V
V2EX
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
量子位
MyScale Blog
MyScale Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
B
Blog

Arch Linux Forums

Avidemux crashes without strace / Applications & Desktop Environments how to apply patches with non-linux linends / Newbie Corner Replicating CachyOS on vanilla Arch (or at least getting close) / Arch Discussion What's arch linux GUI package manager ? / Newbie Corner Hibernation failing due to insufficient memory / System Administration profiledef.sh editting question / Installation trying to script kde plasma wallpaper settings / Programming & Scripting Looking for new Audacious package maintainer / Creating & Modifying Packages issues installing arch with LUKS2 encryption / Newbie Corner QEMU PXE booting does not work with OVMF.4m.fd / Applications & Desktop Environments Wired lan regular disconnect / Newbie Corner Need Help setting up ARCH in my G16 G634JZR iwlwifi started failing consistently, trying to determine root cause Windows randomly jumping between monitors after GNOME 50 update No display via DP or HDMI after boot. / Kernel & Hardware how to change acpi platform_profile? / Newbie Corner Linux denied all kernel modules which not loaded right now Use iPhone as Webcam for Arch Linux Video Output Failure on nvidia-580xx-dkms on TTY --> Desktop switch (Page 2) / Kernel & Hardware I was going to rant ..WINE32 Sabotage compliments of Arvind Krishna / Arch Discussion [SOLVED] LUKS drive auto unlocked by TPM when expected not to / Networking, Server, and Protection Hibernate/suspend from X = dark panel; from TTY = works (ASUS G14, hyb (Page 2) / Laptop Issues Headphone jack noise/buzz / Newbie Corner segmentation fault in cc1plus when building CLK / AUR Issues, Discussion & PKGBUILD Requests Console alternative to meld / GNU/Linux Discussion Problem with paru git clone / Newbie Corner XKB questions / Applications & Desktop Environments gnome-keyring-daemon is not working correctly / Applications & Desktop Environments [SOLVED] Steam opens and immediately closes constantly / Newbie Corner Firefox rounded edges on Sway / Applications & Desktop Environments
vlc cannot get the correct information of Audio CDs / Mul...
beiliangs · 2026-06-21 · via Arch Linux Forums

Hello everyone,

I tried to play a CD with vlc and found it fetched incorrect CDDB information. All CDs I have were matched to wrong titles and covers.

I checked the `PKGBUILD` file and vlc's source code and found that:

in `modules/access/cdda.c`,there is:

#ifdef HAVE_GCRYPT
static char * BuildMusicbrainzDiscID( const vcddev_toc_t *p_toc,
                                      int i_total, int i_first, int i_last )
{
    ...

    return out;
}
#else
# define BuildMusicbrainzDiscID(a, b, c, d) (NULL)
#endif

and in function `GetMusicbrainzInfo`:

    /* Build DISC ID based on SHA1 */
    char *psz_disc_id = BuildMusicbrainzDiscID( p_toc,
                                                i_total, i_first, i_last );
    if( psz_disc_id )
    {
        recording = musicbrainz_lookup_recording_by_discid( &cfg, psz_disc_id );
    }
    else /* Fuzzy lookup using TOC */
    {
        ...
    }

It means if macro `HAVE_GCRYPT` is undefined, function `BuildMusicbrainzDiscID` will always returns NULL and it falls back to fuzzy lookup in function `GetMusicbrainzInfo`, which is easier to get a wrong result.

And in `PKGBUILD`:

build() {
  local configure_options=(
    ....
    --disable-libgcrypt
    ....
  )

DO undefined `HAVE_GCRYPT` and DO returns a wrong result for me.

I tried to build from the source code with flag `--enable-libgcrypt` in `PKGBUILD` and then it works perfectly to get the correct information.
All of my changes:

makedepends=(
  libgcrypt    # add depend
  ...
)
build() {
  local configure_options=(
    ...
    --enable-libgcrypt    # replace `--disable-libgcrypt`
    ....
  )
package_vlc() {
  ...
  rmdir -v --ignore-fail-on-non-empty "$pkgdir/usr/lib/vlc/plugins/"{access{,_output},audio_{filter,output},codec,control,demux,gui,keystore,logger,meta_engine,misc,mux,notify,packetizer,services_discovery,spu,stream_{extractor,filter,out},text_renderer,vaapi,vdpau,video_{chroma,filter,output}}
# add flag `--ignore-fail-on-non-empty` to ignore errors in deleting empty directories
}

I don't know if these changes have any side effects to my system.
But I wonder why `libgcrypt` is excluded from vlc. As a widely included depend lib, exclude it will never make the system simpler.

What should I do next?