- if(get_bits_left(&gb)<0)
- return AVERROR_INVALIDDATA;
- if(i & stereo) {
- if(vlc[2].table)
- res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3);
- else
- res = 0;
- if (res < 0) {
- av_log(avctx, AV_LOG_ERROR, "invalid vlc\n");
- return AVERROR_INVALIDDATA;
- }
- val = h[2].values[res];
- if(vlc[3].table)
- res = get_vlc2(&gb, vlc[3].table, SMKTREE_BITS, 3);
- else
- res = 0;
- if (res < 0) {
- av_log(avctx, AV_LOG_ERROR, "invalid vlc\n");
- return AVERROR_INVALIDDATA;
- }
- val |= h[3].values[res] << 8;
- pred[1] += sign_extend(val, 16);
- *samples++ = pred[1];
- } else {
- if(vlc[0].table)
- res = get_vlc2(&gb, vlc[0].table, SMKTREE_BITS, 3);
- else
- res = 0;
- if (res < 0) {
- av_log(avctx, AV_LOG_ERROR, "invalid vlc\n");
- return AVERROR_INVALIDDATA;
- }
- val = h[0].values[res];
- if(vlc[1].table)
- res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);
- else
- res = 0;
- if (res < 0) {
- av_log(avctx, AV_LOG_ERROR, "invalid vlc\n");
- return AVERROR_INVALIDDATA;
- }
- val |= h[1].values[res] << 8;
- pred[0] += sign_extend(val, 16);
- *samples++ = pred[0];