MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / ff_msmpeg4_decode_block

Function ff_msmpeg4_decode_block

libavcodec/msmpeg4dec.c:612–800  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

610}
611
612int ff_msmpeg4_decode_block(MSMP4DecContext *const ms, int16_t * block,
613 int n, int coded, const uint8_t *scan_table)
614{
615 H263DecContext *const h = &ms->h;
616 int level, i, last, run, run_diff;
617 int dc_pred_dir = -1; //unused but its passed around, so it needs to be initialized
618 const RLTable *rl;
619 const RL_VLC_ELEM *rl_vlc;
620 int qmul, qadd;
621
622 if (h->c.mb_intra) {
623 qmul=1;
624 qadd=0;
625
626 /* DC coef */
627 level = msmpeg4_decode_dc(ms, n, &dc_pred_dir);
628
629 if (level < 0){
630 av_log(h->c.avctx, AV_LOG_ERROR, "dc overflow- block: %d qscale: %d//\n", n, h->c.qscale);
631 if (h->c.inter_intra_pred)
632 level = 0;
633 }
634 if (n < 4) {
635 rl = &ff_rl_table[ms->rl_table_index];
636 if (level > 256 * h->c.y_dc_scale) {
637 av_log(h->c.avctx, AV_LOG_ERROR, "dc overflow+ L qscale: %d//\n", h->c.qscale);
638 if (!h->c.inter_intra_pred)
639 return -1;
640 }
641 } else {
642 rl = &ff_rl_table[3 + ms->rl_chroma_table_index];
643 if (level > 256 * h->c.c_dc_scale) {
644 av_log(h->c.avctx, AV_LOG_ERROR, "dc overflow+ C qscale: %d//\n", h->c.qscale);
645 if (!h->c.inter_intra_pred)
646 return -1;
647 }
648 }
649 block[0] = level;
650
651 run_diff = h->c.msmpeg4_version >= MSMP4_WMV1;
652 i = 0;
653 if (!coded) {
654 goto not_coded;
655 }
656 if (h->c.ac_pred) {
657 if (dc_pred_dir == 0)
658 scan_table = h->permutated_intra_v_scantable; /* left */
659 else
660 scan_table = h->permutated_intra_h_scantable; /* top */
661 } else {
662 scan_table = h->c.intra_scantable.permutated;
663 }
664 rl_vlc= rl->rl_vlc[0];
665 } else {
666 qmul = h->c.qscale << 1;
667 qadd = (h->c.qscale - 1) | 1;
668 i = -1;
669 rl = &ff_rl_table[3 + ms->rl_table_index];

Callers 4

msmpeg4v12_decode_mbFunction · 0.85
msmpeg4v34_decode_mbFunction · 0.85
wmv2_decode_inter_blockFunction · 0.85
wmv2_decode_mbFunction · 0.85

Calls 5

msmpeg4_decode_dcFunction · 0.85
av_logFunction · 0.85
show_bitsFunction · 0.85
get_bits_leftFunction · 0.85
ff_mpeg4_pred_acFunction · 0.85

Tested by

no test coverage detected