Revision 6d7e6b26 libavcodec/h264.c

View differences:

libavcodec/h264.c
2087 2087
    }
2088 2088

  
2089 2089
    for(j=0; j<2; j++){
2090
        int id_list[16];
2090 2091
        int *ref2frm= h->ref2frm[h->slice_num&(MAX_SLICES-1)][j];
2092
        for(i=0; i<16; i++){
2093
            id_list[i]= 60;
2094
            if(h->ref_list[j][i].data[0]){
2095
                int k;
2096
                uint8_t *base= h->ref_list[j][i].base[0];
2097
                for(k=0; k<h->short_ref_count; k++)
2098
                    if(h->short_ref[k]->base[0] == base){
2099
                        id_list[i]= k;
2100
                        break;
2101
                    }
2102
                for(k=0; k<h->long_ref_count; k++)
2103
                    if(h->long_ref[k] && h->long_ref[k]->base[0] == base){
2104
                        id_list[i]= h->short_ref_count + k;
2105
                        break;
2106
                    }
2107
            }
2108
        }
2109

  
2091 2110
        ref2frm[0]=
2092 2111
        ref2frm[1]= -1;
2093 2112
        for(i=0; i<16; i++)
2094
            ref2frm[i+2]= 4*h->ref_list[j][i].frame_num
2113
            ref2frm[i+2]= 4*id_list[i]
2095 2114
                          +(h->ref_list[j][i].reference&3);
2096 2115
        ref2frm[18+0]=
2097 2116
        ref2frm[18+1]= -1;
2098 2117
        for(i=16; i<48; i++)
2099
            ref2frm[i+4]= 4*h->ref_list[j][i].frame_num
2118
            ref2frm[i+4]= 4*id_list[(i-16)>>1]
2100 2119
                          +(h->ref_list[j][i].reference&3);
2101 2120
    }
2102 2121

  

Also available in: Unified diff