~ubuntu-branches/ubuntu/trusty/libav/trusty

« back to all changes in this revision

Viewing changes to libavcodec/svq3.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Jonathan Nieder, Reinhard Tartler
  • Date: 2011-05-13 12:31:33 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (1.3.4 sid)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20110513123133-zqcsj91sf5489y4s
Tags: 4:0.7~beta2-1
[ Jonathan Nieder ]
* only install doc/APIChanges in *-dev and libav-doc packages
* move note on source package lineage to README.Debian
* install NEWS.Debian in libavcodec-dev
* use dpkg source format 3.0 (quilt)
* allow "debian/rules clean" as unprivileged user

[ Reinhard Tartler ]
* New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
438
438
    h->topright_samples_available = 0xFFFF;
439
439
 
440
440
    if (mb_type == 0) {           /* SKIP */
441
 
        if (s->pict_type == FF_P_TYPE || s->next_picture.mb_type[mb_xy] == -1) {
 
441
        if (s->pict_type == AV_PICTURE_TYPE_P || s->next_picture.mb_type[mb_xy] == -1) {
442
442
            svq3_mc_dir_part(s, 16*s->mb_x, 16*s->mb_y, 16, 16, 0, 0, 0, 0, 0, 0);
443
443
 
444
 
            if (s->pict_type == FF_B_TYPE) {
 
444
            if (s->pict_type == AV_PICTURE_TYPE_B) {
445
445
                svq3_mc_dir_part(s, 16*s->mb_x, 16*s->mb_y, 16, 16, 0, 0, 0, 0, 1, 1);
446
446
            }
447
447
 
502
502
            }else
503
503
                memset(&h->ref_cache[m][scan8[0] - 1*8 - 1], PART_NOT_AVAILABLE, 8);
504
504
 
505
 
            if (s->pict_type != FF_B_TYPE)
 
505
            if (s->pict_type != AV_PICTURE_TYPE_B)
506
506
                break;
507
507
        }
508
508
 
509
509
        /* decode motion vector(s) and form prediction(s) */
510
 
        if (s->pict_type == FF_P_TYPE) {
 
510
        if (s->pict_type == AV_PICTURE_TYPE_P) {
511
511
            if (svq3_mc_dir(h, (mb_type - 1), mode, 0, 0) < 0)
512
512
                return -1;
513
 
        } else {        /* FF_B_TYPE */
 
513
        } else {        /* AV_PICTURE_TYPE_B */
514
514
            if (mb_type != 2) {
515
515
                if (svq3_mc_dir(h, 0, mode, 0, 0) < 0)
516
516
                    return -1;
609
609
        mb_type = MB_TYPE_INTRA16x16;
610
610
    }
611
611
 
612
 
    if (!IS_INTER(mb_type) && s->pict_type != FF_I_TYPE) {
 
612
    if (!IS_INTER(mb_type) && s->pict_type != AV_PICTURE_TYPE_I) {
613
613
        for (i = 0; i < 4; i++) {
614
614
            memset(s->current_picture.motion_val[0][b_xy + i*h->b_stride], 0, 4*2*sizeof(int16_t));
615
615
        }
616
 
        if (s->pict_type == FF_B_TYPE) {
 
616
        if (s->pict_type == AV_PICTURE_TYPE_B) {
617
617
            for (i = 0; i < 4; i++) {
618
618
                memset(s->current_picture.motion_val[1][b_xy + i*h->b_stride], 0, 4*2*sizeof(int16_t));
619
619
            }
622
622
    if (!IS_INTRA4x4(mb_type)) {
623
623
        memset(h->intra4x4_pred_mode+h->mb2br_xy[mb_xy], DC_PRED, 8);
624
624
    }
625
 
    if (!IS_SKIP(mb_type) || s->pict_type == FF_B_TYPE) {
 
625
    if (!IS_SKIP(mb_type) || s->pict_type == AV_PICTURE_TYPE_B) {
626
626
        memset(h->non_zero_count_cache + 8, 0, 4*9*sizeof(uint8_t));
627
627
        s->dsp.clear_blocks(h->mb);
628
628
    }
629
629
 
630
 
    if (!IS_INTRA16x16(mb_type) && (!IS_SKIP(mb_type) || s->pict_type == FF_B_TYPE)) {
 
630
    if (!IS_INTRA16x16(mb_type) && (!IS_SKIP(mb_type) || s->pict_type == AV_PICTURE_TYPE_B)) {
631
631
        if ((vlc = svq3_get_ue_golomb(&s->gb)) >= 48){
632
632
            av_log(h->s.avctx, AV_LOG_ERROR, "cbp_vlc=%d\n", vlc);
633
633
            return -1;
635
635
 
636
636
        cbp = IS_INTRA(mb_type) ? golomb_to_intra4x4_cbp[vlc] : golomb_to_inter_cbp[vlc];
637
637
    }
638
 
    if (IS_INTRA16x16(mb_type) || (s->pict_type != FF_I_TYPE && s->adaptive_quant && cbp)) {
 
638
    if (IS_INTRA16x16(mb_type) || (s->pict_type != AV_PICTURE_TYPE_I && s->adaptive_quant && cbp)) {
639
639
        s->qscale += svq3_get_se_golomb(&s->gb);
640
640
 
641
641
        if (s->qscale > 31){
941
941
 
942
942
    if (avctx->debug&FF_DEBUG_PICT_INFO){
943
943
        av_log(h->s.avctx, AV_LOG_DEBUG, "%c hpel:%d, tpel:%d aqp:%d qp:%d, slice_num:%02X\n",
944
 
               av_get_pict_type_char(s->pict_type), h->halfpel_flag, h->thirdpel_flag,
 
944
               av_get_picture_type_char(s->pict_type), h->halfpel_flag, h->thirdpel_flag,
945
945
               s->adaptive_quant, s->qscale, h->slice_num);
946
946
    }
947
947
 
948
948
    /* for skipping the frame */
949
949
    s->current_picture.pict_type = s->pict_type;
950
 
    s->current_picture.key_frame = (s->pict_type == FF_I_TYPE);
 
950
    s->current_picture.key_frame = (s->pict_type == AV_PICTURE_TYPE_I);
951
951
 
952
952
    /* Skip B-frames if we do not have reference frames. */
953
 
    if (s->last_picture_ptr == NULL && s->pict_type == FF_B_TYPE)
954
 
        return 0;
955
 
#if FF_API_HURRY_UP
956
 
    /* Skip B-frames if we are in a hurry. */
957
 
    if (avctx->hurry_up && s->pict_type == FF_B_TYPE)
958
 
        return 0;
959
 
    /* Skip everything if we are in a hurry >= 5. */
960
 
    if (avctx->hurry_up >= 5)
961
 
        return 0;
962
 
#endif
963
 
    if (  (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type == FF_B_TYPE)
964
 
        ||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != FF_I_TYPE)
 
953
    if (s->last_picture_ptr == NULL && s->pict_type == AV_PICTURE_TYPE_B)
 
954
        return 0;
 
955
    if (  (avctx->skip_frame >= AVDISCARD_NONREF && s->pict_type == AV_PICTURE_TYPE_B)
 
956
        ||(avctx->skip_frame >= AVDISCARD_NONKEY && s->pict_type != AV_PICTURE_TYPE_I)
965
957
        || avctx->skip_frame >= AVDISCARD_ALL)
966
958
        return 0;
967
959
 
968
960
    if (s->next_p_frame_damaged) {
969
 
        if (s->pict_type == FF_B_TYPE)
 
961
        if (s->pict_type == AV_PICTURE_TYPE_B)
970
962
            return 0;
971
963
        else
972
964
            s->next_p_frame_damaged = 0;
975
967
    if (ff_h264_frame_start(h) < 0)
976
968
        return -1;
977
969
 
978
 
    if (s->pict_type == FF_B_TYPE) {
 
970
    if (s->pict_type == AV_PICTURE_TYPE_B) {
979
971
        h->frame_num_offset = (h->slice_num - h->prev_frame_num);
980
972
 
981
973
        if (h->frame_num_offset < 0) {
1024
1016
 
1025
1017
            mb_type = svq3_get_ue_golomb(&s->gb);
1026
1018
 
1027
 
            if (s->pict_type == FF_I_TYPE) {
 
1019
            if (s->pict_type == AV_PICTURE_TYPE_I) {
1028
1020
                mb_type += 8;
1029
 
            } else if (s->pict_type == FF_B_TYPE && mb_type >= 4) {
 
1021
            } else if (s->pict_type == AV_PICTURE_TYPE_B && mb_type >= 4) {
1030
1022
                mb_type += 4;
1031
1023
            }
1032
1024
            if (mb_type > 33 || svq3_decode_mb(h, mb_type)) {
1038
1030
                ff_h264_hl_decode_mb (h);
1039
1031
            }
1040
1032
 
1041
 
            if (s->pict_type != FF_B_TYPE && !s->low_delay) {
 
1033
            if (s->pict_type != AV_PICTURE_TYPE_B && !s->low_delay) {
1042
1034
                s->current_picture.mb_type[s->mb_x + s->mb_y*s->mb_stride] =
1043
 
                    (s->pict_type == FF_P_TYPE && mb_type < 8) ? (mb_type - 1) : -1;
 
1035
                    (s->pict_type == AV_PICTURE_TYPE_P && mb_type < 8) ? (mb_type - 1) : -1;
1044
1036
            }
1045
1037
        }
1046
1038
 
1049
1041
 
1050
1042
    MPV_frame_end(s);
1051
1043
 
1052
 
    if (s->pict_type == FF_B_TYPE || s->low_delay) {
 
1044
    if (s->pict_type == AV_PICTURE_TYPE_B || s->low_delay) {
1053
1045
        *(AVFrame *) data = *(AVFrame *) &s->current_picture;
1054
1046
    } else {
1055
1047
        *(AVFrame *) data = *(AVFrame *) &s->last_picture;