* Encode scalefactors. */
| 375 | * Encode scalefactors. |
| 376 | */ |
| 377 | static void encode_scale_factors(AVCodecContext *avctx, AACEncContext *s, |
| 378 | SingleChannelElement *sce) |
| 379 | { |
| 380 | int off = sce->sf_idx[0], diff; |
| 381 | int i, w; |
| 382 | |
| 383 | for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { |
| 384 | for (i = 0; i < sce->ics.max_sfb; i++) { |
| 385 | if (!sce->zeroes[w*16 + i]) { |
| 386 | diff = sce->sf_idx[w*16 + i] - off + SCALE_DIFF_ZERO; |
| 387 | if (diff < 0 || diff > 120) |
| 388 | av_log(avctx, AV_LOG_ERROR, "Scalefactor difference is too big to be coded\n"); |
| 389 | off = sce->sf_idx[w*16 + i]; |
| 390 | put_bits(&s->pb, ff_aac_scalefactor_bits[diff], ff_aac_scalefactor_code[diff]); |
| 391 | } |
| 392 | } |
| 393 | } |
| 394 | } |
| 395 | |
| 396 | /** |
| 397 | * Encode pulse data. |
no test coverage detected