diff options
author | tytan652 | 2023-03-25 13:40:19 +0100 |
---|---|---|
committer | tytan652 | 2023-03-25 13:40:19 +0100 |
commit | 2c38d9de24b501473b402fa9bf4730d0c4b6a4f5 (patch) | |
tree | c8c48ebf03c23114924ea598bb3c14b6081c43bf | |
parent | ac10fad2e8ee3f39e800549bec5171a9444cd205 (diff) | |
download | aur-2c38d9de24b501473b402fa9bf4730d0c4b6a4f5.tar.gz |
build: Fix FLAC playback
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 8 | ||||
-rw-r--r-- | fix-flac-playback.patch | 92 |
3 files changed, 100 insertions, 4 deletions
@@ -1,7 +1,7 @@ pkgbase = vlc-luajit pkgdesc = Multi-platform MPEG, VCD/DVD, and DivX player built with luajit for OBS Studio compatibility pkgver = 3.0.18 - pkgrel = 5 + pkgrel = 6 url = https://www.videolan.org/vlc/ arch = i686 arch = x86_64 @@ -175,8 +175,10 @@ pkgbase = vlc-luajit source = https://download.videolan.org/vlc/3.0.18/vlc-3.0.18.tar.xz source = update-vlc-plugin-cache.hook source = libplacebo-5.patch + source = fix-flac-playback.patch sha512sums = 6fc8fdaa7e8862ad7133d69b3dab99ab9cd3945846a6ce5e2379b7f68ee9accd385c53b8573fc7c82f732c24678b4932b1154d2ad8accf06305f2f578d6fcd8e sha512sums = b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3 sha512sums = a06b04a8b059dbbef77d27435bd5bec3c26f937390bd112b0843385587e866e617c3dd0e66f99eed5fa4a91bc5f0fd9b5623f65b2f2435a54456dde2aa96209b + sha512sums = 10801260f94c38b57d1c5666dc1772296537dbfd11d132e46fce98c3b185d9c3861a0b4e9076091990bf035525ed4f67376d4766eae63059f025c76251b6379b pkgname = vlc-luajit @@ -5,7 +5,7 @@ _vlcver=3.0.18 # optional fixup version including hyphen _vlcfixupver= pkgver=${_vlcver}${_vlcfixupver//-/.r} -pkgrel=5 +pkgrel=6 pkgdesc='Multi-platform MPEG, VCD/DVD, and DivX player built with luajit for OBS Studio compatibility' url='https://www.videolan.org/vlc/' arch=('i686' 'x86_64' 'aarch64') @@ -122,10 +122,12 @@ provides=("${_name}=${pkgver}") options=('!emptydirs') source=(https://download.videolan.org/${_name}/${_vlcver}/${_name}-${_vlcver}${_vlcfixupver}.tar.xz 'update-vlc-plugin-cache.hook' - 'libplacebo-5.patch') + 'libplacebo-5.patch' + 'fix-flac-playback.patch') sha512sums=('6fc8fdaa7e8862ad7133d69b3dab99ab9cd3945846a6ce5e2379b7f68ee9accd385c53b8573fc7c82f732c24678b4932b1154d2ad8accf06305f2f578d6fcd8e' 'b247510ffeadfd439a5dadd170c91900b6cdb05b5ca00d38b1a17c720ffe5a9f75a32e0cb1af5ebefdf1c23c5acc53513ed983a736e8fa30dd8fad237ef49dd3' - 'a06b04a8b059dbbef77d27435bd5bec3c26f937390bd112b0843385587e866e617c3dd0e66f99eed5fa4a91bc5f0fd9b5623f65b2f2435a54456dde2aa96209b') + 'a06b04a8b059dbbef77d27435bd5bec3c26f937390bd112b0843385587e866e617c3dd0e66f99eed5fa4a91bc5f0fd9b5623f65b2f2435a54456dde2aa96209b' + '10801260f94c38b57d1c5666dc1772296537dbfd11d132e46fce98c3b185d9c3861a0b4e9076091990bf035525ed4f67376d4766eae63059f025c76251b6379b') prepare() { cd ${_name}-${_vlcver} diff --git a/fix-flac-playback.patch b/fix-flac-playback.patch new file mode 100644 index 000000000000..bdd5921a2e01 --- /dev/null +++ b/fix-flac-playback.patch @@ -0,0 +1,92 @@ +From c2dd4bfefe079e49db1789eb76be3885e4fc31b4 Mon Sep 17 00:00:00 2001 +From: Francois Cartegnie <fcvlcdev@free.fr> +Date: Mon, 7 Nov 2022 15:02:57 +0100 +Subject: [PATCH] packetizer: flac: fix CRC from emulated sync + +also skips some memcpy + +refs #27454 #27477 + +(cherry picked from commit c14b5aa6a7bd3aa25fa951e2b4136aff70f5702a) +--- + modules/packetizer/flac.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/modules/packetizer/flac.c b/modules/packetizer/flac.c +index 8998f5dac0f..bfb504f004e 100644 +--- a/modules/packetizer/flac.c ++++ b/modules/packetizer/flac.c +@@ -78,6 +78,7 @@ struct decoder_sys_t + + size_t i_last_frame_size; + uint16_t crc; ++ size_t i_buf_offset; /* in final buffer before crc check / validation / retry */ + size_t i_buf; + uint8_t *p_buf; + +@@ -386,6 +387,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + p_sys->headerinfo = headerinfo; + p_sys->i_state = STATE_NEXT_SYNC; + p_sys->i_offset = FLAC_FRAME_SIZE_MIN; ++ p_sys->i_buf_offset = 0; + p_sys->crc = 0; + + /* We have to read until next frame sync code to compute current frame size +@@ -461,6 +463,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + block_SkipBytes( &p_sys->bytestream, FLAC_HEADER_SIZE_MAX + 2 ); + block_BytestreamFlush( &p_sys->bytestream ); + p_sys->crc = 0; ++ p_sys->i_buf_offset = 0; + p_sys->i_offset = 0; + p_sys->i_state = STATE_NOSYNC; + p_sys->i_next_block_flags |= BLOCK_FLAG_DISCONTINUITY; +@@ -484,10 +487,12 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + } + + /* Copy from previous sync point up to to current (offset) */ +- block_PeekOffsetBytes( &p_sys->bytestream, 0, p_sys->p_buf, p_sys->i_offset ); ++ block_PeekOffsetBytes( &p_sys->bytestream, p_sys->i_buf_offset, ++ &p_sys->p_buf[p_sys->i_buf_offset], ++ p_sys->i_offset - p_sys->i_buf_offset ); + + /* update crc to include this data chunk */ +- for( size_t i = 0; i < p_sys->i_offset - 2; i++ ) ++ for( size_t i = p_sys->i_buf_offset; i < p_sys->i_offset - 2; i++ ) + p_sys->crc = flac_crc16( p_sys->crc, p_sys->p_buf[i] ); + + uint16_t stream_crc = GetWBE(&p_sys->p_buf[p_sys->i_offset - 2]); +@@ -497,6 +502,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + /* Add the 2 last bytes which were not the CRC sum, and go for next sync point */ + p_sys->crc = flac_crc16( p_sys->crc, p_sys->p_buf[p_sys->i_offset - 2] ); + p_sys->crc = flac_crc16( p_sys->crc, p_sys->p_buf[p_sys->i_offset - 1] ); ++ p_sys->i_buf_offset = p_sys->i_offset; + p_sys->i_offset += 1; + p_sys->i_state = !pp_block ? STATE_NOSYNC : STATE_NEXT_SYNC; + break; /* continue */ +@@ -513,6 +519,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + block_BytestreamFlush( &p_sys->bytestream ); + p_sys->i_offset = 0; + p_sys->crc = 0; ++ p_sys->i_buf_offset = 0; + + if( block_BytestreamRemaining(&p_sys->bytestream) > 0 || pp_block == NULL /* drain */) + p_sys->i_state = STATE_SEND_DATA; +@@ -553,6 +560,7 @@ static block_t *Packetize(decoder_t *p_dec, block_t **pp_block) + else + free( p_sys->p_buf ); + ++ p_sys->i_buf_offset = 0; + p_sys->i_buf = 0; + p_sys->p_buf = NULL; + p_sys->i_offset = 0; +@@ -587,6 +595,7 @@ static int Open(vlc_object_t *p_this) + p_sys->b_stream_info = false; + p_sys->i_last_frame_size = FLAC_FRAME_SIZE_MIN; + p_sys->headerinfo.i_pts = VLC_TS_INVALID; ++ p_sys->i_buf_offset = 0; + p_sys->i_buf = 0; + p_sys->p_buf = NULL; + p_sys->i_next_block_flags = 0; +-- +GitLab + |