[vlc-commits] packetizer/dts_header: fix wrong usage of swab
Thomas Guillem
git at videolan.org
Wed Jul 11 14:12:18 CEST 2018
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Wed Jul 11 14:10:46 2018 +0200| [a5359226bea6501eaef7050d703762301e618238] | committer: Thomas Guillem
packetizer/dts_header: fix wrong usage of swab
Pointer should not overlap.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a5359226bea6501eaef7050d703762301e618238
---
modules/packetizer/dts_header.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/modules/packetizer/dts_header.c b/modules/packetizer/dts_header.c
index 943b062036..7a2b258a97 100644
--- a/modules/packetizer/dts_header.c
+++ b/modules/packetizer/dts_header.c
@@ -45,7 +45,8 @@ static void BufLeToBe( uint8_t *p_out, const uint8_t *p_in, int i_in )
}
}
-static int Buf14To16( uint8_t *p_out, const uint8_t *p_in, int i_in, int i_le )
+static int Buf14To16( uint8_t *p_out, const uint8_t *p_in, int i_in, int i_le,
+ int i_out_le )
{
unsigned char tmp, cur = 0;
int bits_in, bits_out = 0;
@@ -77,7 +78,10 @@ static int Buf14To16( uint8_t *p_out, const uint8_t *p_in, int i_in, int i_le )
if( bits_out == 8 )
{
- p_out[i_out] = cur;
+ if( i_out % 2 )
+ p_out[i_out - i_out_le] = cur;
+ else
+ p_out[i_out + i_out_le] = cur;
cur = 0;
bits_out = 0;
i_out++;
@@ -321,9 +325,7 @@ ssize_t vlc_dts_header_Convert14b16b( void *p_dst, size_t i_dst,
return -1;
int i_ret = Buf14To16( p_dst, p_src, i_src,
- bitstream_type == DTS_SYNC_CORE_14BITS_LE );
- if( b_out_le ) /* since Buf14To16 convert to BE */
- swab( p_dst, p_dst, i_ret );
+ bitstream_type == DTS_SYNC_CORE_14BITS_LE, b_out_le );
return i_ret;
}
@@ -353,7 +355,7 @@ int vlc_dts_header_Parse( vlc_dts_header_t *p_header,
{
uint8_t conv_buf[VLC_DTS_HEADER_SIZE];
Buf14To16( conv_buf, p_buffer, VLC_DTS_HEADER_SIZE,
- bitstream_type == DTS_SYNC_CORE_14BITS_LE );
+ bitstream_type == DTS_SYNC_CORE_14BITS_LE, 0 );
return dts_header_ParseCore( p_header, conv_buf, true );
}
case DTS_SYNC_SUBSTREAM:
More information about the vlc-commits
mailing list