diff options
author | Måns Rullgård <mans@mansr.com> | 2007-02-05 19:55:15 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2007-02-05 19:55:15 +0000 |
commit | 8af23633a2821a94a7decff47d82369000fedd00 (patch) | |
tree | 90b8a97a5ddb52ac6f16b2376a2cb92cb6666097 | |
parent | ac49ddc60df866a042d9023b1d9230b3ab2c0cad (diff) | |
download | ffmpeg-8af23633a2821a94a7decff47d82369000fedd00.tar.gz |
cosmetics: don't needlessly open new blocks
Originally committed as revision 7836 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/dtsdec.c | 91 |
1 files changed, 43 insertions, 48 deletions
diff --git a/libavcodec/dtsdec.c b/libavcodec/dtsdec.c index df15f158c7..3c73b475af 100644 --- a/libavcodec/dtsdec.c +++ b/libavcodec/dtsdec.c @@ -208,10 +208,15 @@ dts_decode_frame(AVCodecContext * avctx, void *data, int *data_size, int bit_rate; int len; dts_state_t *state = avctx->priv_data; + level_t level; + sample_t bias; + int i; *data_size = 0; while(1) { + int length; + len = end - start; if(!len) break; @@ -225,60 +230,50 @@ dts_decode_frame(AVCodecContext * avctx, void *data, int *data_size, if(bufpos != buf + HEADER_SIZE) break; - { - int length; - - length = - dts_syncinfo(state, buf, &flags, &sample_rate, &bit_rate, - &frame_length); - if(!length) { - av_log(NULL, AV_LOG_INFO, "skip\n"); - for(bufptr = buf; bufptr < buf + HEADER_SIZE - 1; bufptr++) - bufptr[0] = bufptr[1]; - continue; - } - bufpos = buf + length; + length = dts_syncinfo(state, buf, &flags, &sample_rate, &bit_rate, + &frame_length); + if(!length) { + av_log(NULL, AV_LOG_INFO, "skip\n"); + for(bufptr = buf; bufptr < buf + HEADER_SIZE - 1; bufptr++) + bufptr[0] = bufptr[1]; + continue; } + bufpos = buf + length; + } + + flags = 2; /* ???????????? */ + level = CONVERT_LEVEL; + bias = CONVERT_BIAS; + + flags |= DTS_ADJUST_LEVEL; + if(dts_frame(state, buf, &flags, &level, bias)) { + av_log(avctx, AV_LOG_ERROR, "dts_frame() failed\n"); + goto end; } - { - level_t level; - sample_t bias; - int i; - - flags = 2; /* ???????????? */ - level = CONVERT_LEVEL; - bias = CONVERT_BIAS; - - flags |= DTS_ADJUST_LEVEL; - if(dts_frame(state, buf, &flags, &level, bias)) - goto error; - avctx->sample_rate = sample_rate; - avctx->channels = channels_multi(flags); - avctx->bit_rate = bit_rate; - for(i = 0; i < dts_blocks_num(state); i++) { - if(dts_block(state)) - goto error; - { - int chans; - - chans = channels_multi(flags); - convert2s16_multi(dts_samples(state), out_samples, - flags & (DTS_CHANNEL_MASK | DTS_LFE)); - - out_samples += 256 * chans; - *data_size += 256 * sizeof(int16_t) * chans; - } + avctx->sample_rate = sample_rate; + avctx->channels = channels_multi(flags); + avctx->bit_rate = bit_rate; + + for(i = 0; i < dts_blocks_num(state); i++) { + int chans; + + if(dts_block(state)) { + av_log(avctx, AV_LOG_ERROR, "dts_block() failed\n"); + goto end; } - bufptr = buf; - bufpos = buf + HEADER_SIZE; - return start - buff; - error: - av_log(NULL, AV_LOG_ERROR, "error\n"); - bufptr = buf; - bufpos = buf + HEADER_SIZE; + + chans = channels_multi(flags); + convert2s16_multi(dts_samples(state), out_samples, + flags & (DTS_CHANNEL_MASK | DTS_LFE)); + + out_samples += 256 * chans; + *data_size += 256 * sizeof(int16_t) * chans; } +end: + bufptr = buf; + bufpos = buf + HEADER_SIZE; return start - buff; } |