h264: fix decoding multiple fields per packet with slice threads
authorAnton Khirnov <anton@khirnov.net>
Sun, 12 Jun 2016 12:22:50 +0000 (14:22 +0200)
committerAnton Khirnov <anton@khirnov.net>
Fri, 15 Jul 2016 13:33:54 +0000 (15:33 +0200)
commit4a9bab3db0d9ec449ebc8b5e823374d1d1df7761
tree496394aa8226d1b340b40104f34ff8bb57f1d715
parentf450cc7bc595155bacdb9f5d2414a076ccf81b4a
h264: fix decoding multiple fields per packet with slice threads

Since we only know whether a NAL unit corresponds to a new field after
parsing the slice header, this requires reorganizing the calls to slice
parsing, per-slice/field/frame init and actual decoding.

In the previous code, the function for slice header decoding also
immediately started a new field/frame as necessary, so any slices
already queued for decoding would no longer be decodable.

After this patch, we first parse the slice header, and if we determine
that a new field needs to be started we decode all the queued slices.
libavcodec/h264_slice.c
libavcodec/h264dec.c
libavcodec/h264dec.h