vp8: fix check for disabling the loop filter (again).

Improve condition to disable the loop filter. The previous heuristic
used to check all filter levels, for all segments. It turns out that
only the base filter_level value defined in the frame header needs
to be checked.

This fixes 00-comprehensive-013.
This commit is contained in:
Gwenole Beauchesne 2014-04-22 17:25:15 +02:00
parent de02a5c190
commit 01c78c4b20

View file

@ -273,7 +273,7 @@ fill_picture (GstVaapiDecoderVp8 * decoder, GstVaapiPicture * picture)
GstVp8Parser *const parser = &priv->parser;
GstVp8FrameHdr *const frame_hdr = &priv->frame_hdr;
GstVp8Segmentation *const seg = &parser->segmentation;
gint i, filter_levels;
gint i;
/* Fill in VAPictureParameterBufferVP8 */
pic_param->frame_width = priv->width;
@ -330,12 +330,8 @@ fill_picture (GstVaapiDecoderVp8 * decoder, GstVaapiPicture * picture)
/* In decoding, the only loop filter settings that matter are those
in the frame header (9.1) */
filter_levels = pic_param->loop_filter_level[0];
if (seg->segmentation_enabled) {
for (i = 1; i < 4; i++)
filter_levels |= pic_param->loop_filter_level[i];
}
pic_param->pic_fields.bits.loop_filter_disable = filter_levels == 0;
pic_param->pic_fields.bits.loop_filter_disable =
frame_hdr->loop_filter_level == 0;
pic_param->prob_skip_false = frame_hdr->prob_skip_false;
pic_param->prob_intra = frame_hdr->prob_intra;