jpeg: rework and optimize parser.
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 20 Sep 2013 08:12:08 +0000 (10:12 +0200)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Fri, 20 Sep 2013 16:32:12 +0000 (18:32 +0200)
commitf52dfe57978789e2b2a654689807f91ffd8ac06e
treebd031b5b3edff043af6a9c1e4761bac11e0f5c16
parenta4aac6b89e70ed2ebb70051b3d5196184dab994a
jpeg: rework and optimize parser.

Split the input buffer data into decoder units that represent a JPEG
segment. Handle scan decoder unit specifically so that it can include
both the scan header (SOS) but also any other ECS or RSTi segment.

That way, we parse the input buffer stream only once at the gst-vaapi
level instead of (i) in gst_vaapi_decoder_jpeg_parse() to split the
stream into frames SOI .. EOI and (ii) in decode_buffer() to further
determine segment boundaries and decode them.

In practice, this is a +15 to +25% performance improvement.
gst-libs/gst/vaapi/gstvaapidecoder.c
gst-libs/gst/vaapi/gstvaapidecoder_jpeg.c
gst-libs/gst/vaapi/gstvaapidecoder_priv.h