Mercurial > mplayer.hg
changeset 36606:baa7a9f7ce9e
ad_libdca: support current libdca that does not provide a dts.h header.
author | reimar |
---|---|
date | Wed, 22 Jan 2014 19:38:44 +0000 |
parents | 76bf1d04f31b |
children | 6b17e4932555 |
files | configure libmpcodecs/ad_libdca.c |
diffstat | 2 files changed, 50 insertions(+), 50 deletions(-) [+] |
line wrap: on
line diff
--- a/configure Wed Jan 22 19:38:43 2014 +0000 +++ b/configure Wed Jan 22 19:38:44 2014 +0000 @@ -6664,7 +6664,7 @@ if test "$_libdca" = auto ; then _libdca=no for ld_dca in -ldca -ldts ; do - statement_check_broken stdint.h dts.h 'dts_init(0)' $ld_dca && + statement_check_broken stdint.h dca.h 'dca_init(0)' $ld_dca && extra_ldflags="$extra_ldflags $ld_dca" && _libdca=yes && break done fi
--- a/libmpcodecs/ad_libdca.c Wed Jan 22 19:38:43 2014 +0000 +++ b/libmpcodecs/ad_libdca.c Wed Jan 22 19:38:44 2014 +0000 @@ -31,7 +31,7 @@ #include "ad_internal.h" #include "dec_audio.h" -#include <dts.h> +#include <dca.h> static const ad_info_t info = { @@ -51,12 +51,12 @@ #define CONVERT_BIAS 0 static const char ch2flags[6] = { - DTS_MONO, - DTS_STEREO, - DTS_3F, - DTS_2F2R, - DTS_3F2R, - DTS_3F2R | DTS_LFE + DCA_MONO, + DCA_STEREO, + DCA_3F, + DCA_2F2R, + DCA_3F2R, + DCA_3F2R | DCA_LFE }; static inline int16_t convert(sample_t s) @@ -70,8 +70,8 @@ { int i; - switch(flags & (DTS_CHANNEL_MASK | DTS_LFE)){ - case DTS_MONO: + switch(flags & (DCA_CHANNEL_MASK | DCA_LFE)){ + case DCA_MONO: if (ch_out == 1) for(i = 0; i < 256; i++) s16[i] = convert(f[i]); @@ -81,22 +81,22 @@ s16[5*i+4] = convert(f[i]); } break; - case DTS_CHANNEL: - case DTS_STEREO: - case DTS_DOLBY: + case DCA_CHANNEL: + case DCA_STEREO: + case DCA_DOLBY: for(i = 0; i < 256; i++){ s16[2*i] = convert(f[i]); s16[2*i+1] = convert(f[i+256]); } break; - case DTS_3F: + case DCA_3F: for(i = 0; i < 256; i++){ s16[3*i] = convert(f[i+256]); s16[3*i+1] = convert(f[i+512]); s16[3*i+2] = convert(f[i]); } break; - case DTS_2F2R: + case DCA_2F2R: for(i = 0; i < 256; i++){ s16[4*i] = convert(f[i]); s16[4*i+1] = convert(f[i+256]); @@ -104,7 +104,7 @@ s16[4*i+3] = convert(f[i+768]); } break; - case DTS_3F2R: + case DCA_3F2R: for(i = 0; i < 256; i++){ s16[5*i] = convert(f[i+256]); s16[5*i+1] = convert(f[i+512]); @@ -113,16 +113,16 @@ s16[5*i+4] = convert(f[i]); } break; - case DTS_MONO | DTS_LFE: + case DCA_MONO | DCA_LFE: for(i = 0; i < 256; i++){ s16[6*i] = s16[6*i+1] = s16[6*i+2] = s16[6*i+3] = 0; s16[6*i+4] = convert(f[i]); s16[6*i+5] = convert(f[i+256]); } break; - case DTS_CHANNEL | DTS_LFE: - case DTS_STEREO | DTS_LFE: - case DTS_DOLBY | DTS_LFE: + case DCA_CHANNEL | DCA_LFE: + case DCA_STEREO | DCA_LFE: + case DCA_DOLBY | DCA_LFE: for(i = 0; i < 256; i++){ s16[6*i] = convert(f[i]); s16[6*i+1] = convert(f[i+256]); @@ -130,7 +130,7 @@ s16[6*i+5] = convert(f[i+512]); } break; - case DTS_3F | DTS_LFE: + case DCA_3F | DCA_LFE: for(i = 0; i < 256; i++){ s16[6*i] = convert(f[i+256]); s16[6*i+1] = convert(f[i+512]); @@ -139,7 +139,7 @@ s16[6*i+5] = convert(f[i+768]); } break; - case DTS_2F2R | DTS_LFE: + case DCA_2F2R | DCA_LFE: for(i = 0; i < 256; i++){ s16[6*i] = convert(f[i]); s16[6*i+1] = convert(f[i+256]); @@ -149,7 +149,7 @@ s16[6*i+5] = convert(f[1024]); } break; - case DTS_3F2R | DTS_LFE: + case DCA_3F2R | DCA_LFE: for(i = 0; i < 256; i++){ s16[6*i] = convert(f[i+256]); s16[6*i+1] = convert(f[i+512]); @@ -167,28 +167,28 @@ int lfe = 0; char lfestr[5] = ""; - if (flags & DTS_LFE) { + if (flags & DCA_LFE) { lfe = 1; strcpy(lfestr, "+lfe"); } mp_msg(MSGT_DECAUDIO, MSGL_V, "DTS: "); - switch(flags & DTS_CHANNEL_MASK){ - case DTS_MONO: + switch(flags & DCA_CHANNEL_MASK){ + case DCA_MONO: mp_msg(MSGT_DECAUDIO, MSGL_V, "1.%d (mono%s)", lfe, lfestr); break; - case DTS_CHANNEL: + case DCA_CHANNEL: mp_msg(MSGT_DECAUDIO, MSGL_V, "2.%d (channel%s)", lfe, lfestr); break; - case DTS_STEREO: + case DCA_STEREO: mp_msg(MSGT_DECAUDIO, MSGL_V, "2.%d (stereo%s)", lfe, lfestr); break; - case DTS_3F: + case DCA_3F: mp_msg(MSGT_DECAUDIO, MSGL_V, "3.%d (3f%s)", lfe, lfestr); break; - case DTS_2F2R: + case DCA_2F2R: mp_msg(MSGT_DECAUDIO, MSGL_V, "4.%d (2f+2r%s)", lfe, lfestr); break; - case DTS_3F2R: + case DCA_3F2R: mp_msg(MSGT_DECAUDIO, MSGL_V, "5.%d (3f+2r%s)", lfe, lfestr); break; default: @@ -199,7 +199,7 @@ static int dts_sync(sh_audio_t *sh, int *flags) { - dts_state_t *s = sh->context; + dca_state_t *s = sh->context; int length; int sample_rate; int frame_length; @@ -216,7 +216,7 @@ sh->a_in_buffer[sh->a_in_buffer_len++] = c; } - length = dts_syncinfo(s, sh->a_in_buffer, flags, &sample_rate, + length = dca_syncinfo(s, sh->a_in_buffer, flags, &sample_rate, &bit_rate, &frame_length); if(length >= HEADER_SIZE) @@ -237,7 +237,7 @@ static int decode_audio(sh_audio_t *sh, unsigned char *buf, int minlen, int maxlen) { - dts_state_t *s = sh->context; + dca_state_t *s = sh->context; int16_t *out_samples = (int16_t*)buf; int flags; level_t level; @@ -250,26 +250,26 @@ if(dts_sync(sh, &flags) < 0) return -1; /* EOF */ sh->a_in_buffer_len=0; - flags &= ~(DTS_CHANNEL_MASK | DTS_LFE); + flags &= ~(DCA_CHANNEL_MASK | DCA_LFE); flags |= ch2flags[sh->channels - 1]; level = CONVERT_LEVEL; bias = CONVERT_BIAS; - flags |= DTS_ADJUST_LEVEL; - if(dts_frame(s, sh->a_in_buffer, &flags, &level, bias)) { - mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dts_frame() failed\n"); + flags |= DCA_ADJUST_LEVEL; + if(dca_frame(s, sh->a_in_buffer, &flags, &level, bias)) { + mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dca_frame() failed\n"); goto end; } - nblocks = dts_blocks_num(s); + nblocks = dca_blocks_num(s); for(i = 0; i < nblocks; i++) { - if(dts_block(s)) { - mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dts_block() failed\n"); + if(dca_block(s)) { + mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dca_block() failed\n"); goto end; } - convert2s16_multi(dts_samples(s), out_samples, flags, sh->channels); + convert2s16_multi(dca_samples(s), out_samples, flags, sh->channels); out_samples += 256 * sh->channels; data_size += 256 * sizeof(int16_t) * sh->channels; @@ -291,20 +291,20 @@ static int init(sh_audio_t *sh) { - dts_state_t *s; + dca_state_t *s; int flags; int decoded_bytes; - s = dts_init(0); + s = dca_init(0); if(s == NULL) { - mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dts_init() failed\n"); + mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dca_init() failed\n"); return 0; } sh->context = s; if(dts_sync(sh, &flags) < 0) { - mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dts sync failed\n"); - dts_free(s); + mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dca sync failed\n"); + dca_free(s); return 0; } channels_info(flags); @@ -317,7 +317,7 @@ sh->a_buffer_len = decoded_bytes; else { mp_msg(MSGT_DECAUDIO, MSGL_ERR, "dts decode failed on first frame (up/downmix problem?)\n"); - dts_free(s); + dca_free(s); return 0; } @@ -326,9 +326,9 @@ static void uninit(sh_audio_t *sh) { - dts_state_t *s = sh->context; + dca_state_t *s = sh->context; - dts_free(s); + dca_free(s); } static int control(sh_audio_t *sh,int cmd,void* arg, ...)