[Libva] problem with encoding with vaapi

Ratin ratin3 at gmail.com
Tue Feb 26 16:58:18 PST 2013


I am trying to encode bitstreams from a YUV file same way as avcenc does, I
followed pretty much all the steps in my code except I am forcing I-frame
only, but my file won't play on mplayer and error out with messages like :

FPS forced to be 30.000  (ftime: 0.033).
Starting playback...
[h264 @ 0x7ffff1591a80]top block unavailable for requested intra4x4 mode -1
at 0 0
[h264 @ 0x7ffff1591a80]error while decoding MB 0 0, bytestream (60613)
[h264 @ 0x7ffff1591a80]concealing 1584 DC, 1584 AC, 1584 MV errors
VDec: vo config request - 704 x 576 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 704x576 => 704x576 Planar YV12
[h264 @ 0x7ffff1591a80]top block unavailable for requested intra4x4 mode -1
at 0 0
[h264 @ 0x7ffff1591a80]error while decoding MB 0 0, bytestream (59875)
[h264 @ 0x7ffff1591a80]mmco: unref short failure
[h264 @ 0x7ffff1591a80]concealing 1584 DC, 1584 AC, 1584 MV errors
[h264 @ 0x7ffff1591a80]number of reference frames exceeds max (probably
corrupt input), discarding one
[h264 @ 0x7ffff1591a80]top block unavailable for requested intra4x4 mode -1
at 0 0
[h264 @ 0x7ffff1591a80]error while decoding MB 0 0, bytestream (59896)


I stepped thru the libav code to find where its having issues and problem
is in this function:

int ff_h264_check_intra4x4_pred_mode(H264Context *h){
    MpegEncContext * const s = &h->s;
    static const int8_t top [12]= {-1, 0,LEFT_DC_PRED,-1,-1,-1,-1,-1, 0};
    static const int8_t left[12]= { 0,-1, TOP_DC_PRED, 0,-1,-1,-1,
0,-1,DC_128_PRED};
    int i;

    if(!(h->top_samples_available&0x8000)){
        for(i=0; i<4; i++){
            int status= top[ h->intra4x4_pred_mode_cache[scan8[0] + i] ];
            if(status<0){
                av_log(h->s.avctx, AV_LOG_ERROR, "top block unavailable for
requested intra4x4 mode %d at %d %d\n", status, s->mb_x, s->mb_y);
                return -1;
            } else if(status){
                h->intra4x4_pred_mode_cache[scan8[0] + i]= status;
            }
        }
    }

> p i
> 2
> p  status
> -1
> p   h->intra4x4_pred_mode_cache[scan8[0] + i]
> 6

My question is what would cause something like this? When I look at the
bitstream, it all looks normal, the headers look ok.

Ratin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libva/attachments/20130226/b7f367bf/attachment.html>


More information about the Libva mailing list