+ if (!avctx->block_align) {
+ avctx->block_align = tctx->frame_size + 7 >> 3;
+ } else if (avctx->block_align * 8 < tctx->frame_size) {
+ av_log(avctx, AV_LOG_ERROR, "Block align is %d bits, expected %d\n",
+ avctx->block_align * 8, tctx->frame_size);
+ return AVERROR_INVALIDDATA;
+ }
+ tctx->frames_per_packet = avctx->block_align * 8 / tctx->frame_size;
+ if (tctx->frames_per_packet > TWINVQ_MAX_FRAMES_PER_PACKET) {
+ av_log(avctx, AV_LOG_ERROR, "Too many frames per packet (%d)\n",
+ tctx->frames_per_packet);
+ return AVERROR_INVALIDDATA;
+ }
+
+ avpriv_float_dsp_init(&tctx->fdsp, avctx->flags & AV_CODEC_FLAG_BITEXACT);