Jerome GORIN:
> -    skip_bits1(&s->gb); /* freeze picture release off */
> +    intra_flag = get_bits1(&s->gb); /* Intra 1 = I-frame, 0 = P-frame */
>  
> +    if (intra_flag){
> +        s->pict_type = AV_PICTURE_TYPE_I;
> +    }else{
> +        s->pict_type = AV_PICTURE_TYPE_P;
> +    }
> +    
>      format = get_bits1(&s->gb);
>  
>      // only 2 formats possible
> @@ -498,10 +504,8 @@ static int h261_decode_picture_header(H261DecContext *h)
>      if (skip_1stop_8data_bits(&s->gb) < 0)
>          return AVERROR_INVALIDDATA;
>  
> -    /* H.261 has no I-frames, but if we pass AV_PICTURE_TYPE_I for the first
> -     * frame, the codec crashes if it does not contain all I-blocks
> -     * (e.g. when a packet is lost). */
> -    s->pict_type = AV_PICTURE_TYPE_P;
> +
> +    

H.261 does not guarantee that a picture with the freeze picture release
bit set is an actual keyframe; the macroblocks can nevertheless be inter
coded (such a bitstream could cause a segfault with your patch because
it tries to access references that aren't there).

- Andreas

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to