summaryrefslogtreecommitdiffstats
path: root/libavcodec/h264_parser.c
Commit message (Collapse)AuthorAgeFilesLines
* avcodec/h264_parser: Reduce needed history for parsing mb indexMichael Niedermayer2018-06-251-8/+11
| | | | | | | | | | This fixes a bug/regression with very small packets Fixes: output_file Regression since: 0782fb6bcb32fe3ab956a99af4cc472ff81da0c2 Reported-by: Thierry Foucu <tfoucu@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h264: Increase field_poc to 64bit in ff_h264_init_poc() to detect ↵Michael Niedermayer2018-02-171-1/+3
| | | | | | | | | | overflows Fixes: Integer overflow Fixes: 5746/clusterfuzz-testcase-minimized-6270097623613440 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h264_sei: remove redundant prefix to H264SEIFramePacking fieldsJames Almer2017-12-011-1/+1
| | | | | | Cosmetic change. Signed-off-by: James Almer <jamrial@gmail.com>
* h2645_parse: Allocate a single buffer per packetKieran Kunhya2017-11-041-4/+9
| | | | | Drastically reduces memory usage on pathological streams. Fixes ticket #6789
* h264_sei: Add namespace prefix to all SEI valuesMark Thompson2017-09-121-13/+13
| | | | | | | This avoids confusion with equivalent H.265 SEI values when both are being used at the same time. (cherry picked from commit 6ea220cbeec8863e2006a03b73bed52db2b13ee7)
* avcodec/h264_parse: Check picture structure when initializing weight tableMichael Niedermayer2017-06-101-1/+1
| | | | | | | | Fixes: runtime error: index 49 out of bounds for type 'int [48][2][2]' Fixes: 2159/clusterfuzz-testcase-minimized-5267945972301824 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h264_sei: Check actual presence of SEI picture timing instead of ↵Michael Niedermayer2017-02-151-2/+2
| | | | | | implying it Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavc/h264_parser: export field order in more casesRodger Combs2016-10-241-1/+15
|
* avcodec/h264_parser: fix for possible overflowPaul B Mahol2016-09-141-2/+2
| | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avcodec/h264_parser: set missing pts for top/bottom field framesPaul B Mahol2016-09-141-0/+22
| | | | | | Adopted from 4eb49fdde8f84d54a763cfb5d355527b525ee2bf revert. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* avcodec/h264_parser: Factor get_avc_nalsize() outMichael Niedermayer2016-08-201-21/+1
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/h2645: Fix NAL unit paddingMichael Niedermayer2016-08-181-1/+1
| | | | | | | | | The parser changes have lost the support for the needed padding, this adds it back Fixes out of array reads Fixes: 03ea21d271abc8acf428d42ace51d8b4/asan_heap-oob_3358eef_5692_16f0cc01ab5225e9ce591659e5c20e35.mkv Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Merge commit '5c2fb561d94fc51d76ab21d6f7cc5b6cc3aa599c'James Almer2016-08-011-18/+18
|\ | | | | | | | | | | | | | | | | | | | | | | | | * commit '5c2fb561d94fc51d76ab21d6f7cc5b6cc3aa599c': h264: add H264_ prefix to the NAL unit types Conflicts: libavcodec/h264_parse.c libavcodec/h264_parser.c libavcodec/h264_slice.c libavcodec/h264dec.c Merged-by: James Almer <jamrial@gmail.com>
| * h264: add H264_ prefix to the NAL unit typesAnton Khirnov2016-06-211-14/+14
| | | | | | | | | | This will prevent conflicts e.g. in code that deals with both h264 and hevc.
* | Merge commit 'b24dafe10572254ff0decc18b0d7c3d3707d5a29'James Almer2016-08-011-1/+1
|\ \ | |/ | | | | | | | | | | * commit 'b24dafe10572254ff0decc18b0d7c3d3707d5a29': lavc: drop unnecessary h264dec.h includes Merged-by: James Almer <jamrial@gmail.com>
| * lavc: drop unnecessary h264dec.h includesAnton Khirnov2016-06-211-1/+1
| |
* | Merge commit 'f638b67e5790735f34620bf82025c9b9d6fc7216'James Almer2016-08-011-0/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | * commit 'f638b67e5790735f34620bf82025c9b9d6fc7216': h264: move the parameter set definitions to a new header file Conflicts: libavcodec/h264_parse.h libavcodec/h264_ps.c libavcodec/h264dec.h Merged-by: James Almer <jamrial@gmail.com>
| * h264: move the parameter set definitions to a new header fileAnton Khirnov2016-06-211-0/+1
| | | | | | | | | | The PS parsing code is independent from the decoder, so it makes more sense for it to have its own separate header.
* | Merge commit '251cbb44003caf179fb17afbb8a6c56643c2a646'Clément Bœsch2016-07-291-0/+1
|\ \ | |/ | | | | | | | | | | * commit '251cbb44003caf179fb17afbb8a6c56643c2a646': h264: create a new header for common h264 definitions Merged-by: Clément Bœsch <u@pkh.me>
| * h264: create a new header for common h264 definitionsAnton Khirnov2016-06-211-0/+1
| | | | | | | | | | | | Move the NAL unit types into it. This will allow to stop including the whole decoder-specific h264dec.h in some code that is unrelated to the decoder and only needs some enum values.
* | Merge commit '9df889a5f116c1ee78c2f239e0ba599c492431aa'Clément Bœsch2016-07-291-1/+1
|\ \ | |/ | | | | | | | | | | * commit '9df889a5f116c1ee78c2f239e0ba599c492431aa': h264: rename h264.[ch] to h264dec.[ch] Merged-by: Clément Bœsch <u@pkh.me>
| * h264: rename h264.[ch] to h264dec.[ch]Anton Khirnov2016-06-211-1/+1
| | | | | | | | This is more consistent with the naming of other decoders.
* | avcodec/h264_parser: Set sps/pps_refMichael Niedermayer2016-07-021-2/+15
| | | | | | | | | | | | | | | | Fixes use of freed memory Should fix valgrind failures of fate-h264-skip-nointra Found-by: logan Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* | h264: make H264ParamSets sps constBenoit Fouet2016-06-301-1/+1
| |
* | Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'Clément Bœsch2016-06-211-1/+1
|\ \ | |/ | | | | | | | | | | * commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb': cosmetics: Fix spelling mistakes Merged-by: Clément Bœsch <u@pkh.me>
| * cosmetics: Fix spelling mistakesVittorio Giovara2016-05-041-1/+1
| | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | lavc/h264_ps: add ff_h264_ps_uninit and use itMatthieu Bouron2016-06-201-7/+1
| |
* | lavc/h264_parser: replace AVCodecContext with logging ctx in scan_mmco_reset()Clément Bœsch2016-06-201-6/+6
| |
* | lavc/h264: add a logging ctx to ff_h264_pred_weight_table()Clément Bœsch2016-06-201-1/+1
| |
* | Merge commit '72da8d9bb24d1b1bf74c2f1108650c0da0054d2e'Clément Bœsch2016-06-191-63/+38
|\ \ | |/ | | | | | | | | | | * commit '72da8d9bb24d1b1bf74c2f1108650c0da0054d2e': h264_parser: remove the remaining dependencies on the h264 decoder Merged-by: Clément Bœsch <u@pkh.me>
| * h264_parser: remove the remaining dependencies on the h264 decoderAnton Khirnov2016-04-241-62/+36
| |
* | lavc/h264: move history parsing variable to H264ParseContextClément Bœsch2016-06-191-7/+9
| | | | | | | | This makes h264_find_frame_end() not depend on H264Context anymore.
* | lavc/h264_parser: pass logctx to h264_find_frame_end()Clément Bœsch2016-06-191-5/+5
| | | | | | | | This helps removing the H264Context from the H264ParseContext.
* | Merge commit '98c97994c5b90bdae02accb155eeceeb5224b8ef'Clément Bœsch2016-06-191-29/+32
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '98c97994c5b90bdae02accb155eeceeb5224b8ef': h264: decouple extradata parsing from the decoder Main changes: - move get_avc_nalsize() inside h264_parser.c and make it use H264ParseContext instead of H264Context. This helps fixing fate-flv-demux. - Also use is_avc/nal_length_size from the H264ParseContext in various places instead of the H264Context one as that's the fields now filled by ff_h264_decode_extradata() - h264_parse: dont fail decode_extradata_ps() due to nal split failure. Change by Michael to fix decoding of h264/ref_10.avi. Merged-by: Clément Bœsch <u@pkh.me> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
| * h264: decouple extradata parsing from the decoderAnton Khirnov2016-04-241-1/+5
| | | | | | | | This will allow decoupling the parser from the decoder.
* | Merge commit '728d90a0c1973661a9e73da697bf4f90c9d19577'Clément Bœsch2016-06-181-15/+14
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '728d90a0c1973661a9e73da697bf4f90c9d19577': h264: decouple h264_sei from the h264 decoder Main changes: - SEI decoding doesn't have access to the debug flag in the codec context so a few logging are dropped. - naming of quincunx_sampling_flag and frame_packing_arrangement_type are kept as they are in FFmpeg instead of respectively quincunx_subsampling and arrangement_type used in Libav because the former match the specifications. - don't reset the x264 build info once read in order to fix fate-h264-lossless (change by Hendrik) - H264Context.has_recovery_point and deprecated AVCodecContext.dtg_active_format are set after ff_h264_sei_decode() based on the SEI state since ff_h264_sei_decode() doesn't have access to H264Context anymore. - frame_packing_arrangement_type is not checked against <= 0 in decode_postinit() since it is always read as a positive value with get_bits(). This fixes a -Wtype-limits warning by GCC spotted by Michael. Side Notes: - tested that ffprobe on the file from ticket #3652 still returns 4 keyframes - tested that playback from ticket #3063 still works Merged-by: Clément Bœsch <clement@stupeflix.com> Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * h264: decouple h264_sei from the h264 decoderAnton Khirnov2016-04-241-9/+13
| | | | | | | | | | Make the SEI parsing independent of the H264Context, to allow decoupling the parser from the decoder.
* | Merge commit 'c8dcff0cdb17d0aa03ac729eba12d1a20f1f59c8'Clément Bœsch2016-06-121-16/+18
|\ \ | |/ | | | | | | | | | | * commit 'c8dcff0cdb17d0aa03ac729eba12d1a20f1f59c8': h264: factor out calculating the POC count into a separate file Merged-by: Clément Bœsch <u@pkh.me>
| * h264: factor out calculating the POC count into a separate fileAnton Khirnov2016-04-241-16/+18
| | | | | | | | This will allow decoupling the parser from the decoder.
* | Merge commit '113aeee6aed35cb786a9f6d69b0cb210f498b9da'Clément Bœsch2016-06-121-2/+3
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | * commit '113aeee6aed35cb786a9f6d69b0cb210f498b9da': h264_parser: move the H264DSPContext to the parser context H264Context is kept locally as it is currently needed for logging (h->avctx as log context) and for is_avc and nal_length_size. These later fields will later be obtained when the extradata parsing is decoupled from the decoder. This code will be updated accordingly when that commit is merged. Merged-by: Clément Bœsch <u@pkh.me>
| * h264_parser: move the H264DSPContext to the parser contextAnton Khirnov2016-04-241-3/+3
| |
* | Merge commit '3176217c60ca7828712985092d9102d331ea4f3d'Clément Bœsch2016-06-121-31/+73
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '3176217c60ca7828712985092d9102d331ea4f3d': h264: decouple h264_ps from the h264 decoder Main changes: - a local GetBitContext is created for the various ff_h264_decode_seq_parameter_set() attempts - just like the old code, remove_sps() is adjusted so it doesn't remove the pps. Fixes decode with Ticket #631 http://ffmpeg.org/pipermail/ffmpeg-user/attachments/20111108/dae58f17/attachment.mp4 but see next point as well. - ff_h264_update_thread_context() is updated to work even when SPS isn't set as it breaks current skip_frame code. This makes sure we can still decode the sample from ticket #631 without the need for -flags2 +chunks. (Thanks to Michael) - keep {sps,pps}_ref pointers that stay alive even when the active pps/sps get removed from the available lists (patch by michaelni with additionnal frees in ff_h264_free_context() from mateo) - added a check on sps in avpriv_h264_has_num_reorder_frames() to fix crashes with mpegts_with_dvbsubs.ts from Ticket #4074 http://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket4074/mpegts_with_dvbsubs.ts - in h264_parser.c:h264_parse(), after the ff_h264_decode_extradata() is called, the pps and sps from the local parser context are updated with the pps and sps from the used h264context. This fixes fate-flv-demux. - in h264_slice.c, "PPS changed between slices" error is not triggered anymore in one condition as it makes fate-h264-xavc-4389 fails with THREADS=N (Thanks to Michael) Merged-by: Clément Bœsch <clement@stupeflix.com> Merged-by: Michael Niedermayer <michael@niedermayer.cc> Merged-by: Matthieu Bouron <matthieu.bouron@stupeflix.com>
| * h264: decouple h264_ps from the h264 decoderAnton Khirnov2016-04-241-29/+44
| | | | | | | | | | | | | | | | | | Make the SPS/PPS parsing independent of the H264Context, to allow decoupling the parser from the decoder. The change is modelled after the one done earlier for HEVC. Move the dequant buffers to the PPS to avoid complex checks whether they changed and an expensive copy for frame threads.
* | Merge commit '44d16df413878588659dd8901bba016b5a869fd1'Hendrik Leppkes2016-05-271-34/+32
|\ \ | |/ | | | | | | | | | | * commit '44d16df413878588659dd8901bba016b5a869fd1': h264_parser: eliminate H264SliceContext usage Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * h264_parser: eliminate H264SliceContext usageAnton Khirnov2016-04-241-34/+32
| | | | | | | | It is no longer needed for anything.
* | Merge commit 'a6e27f7add2698fdd89911632b570c3d0c3f2aaa'Derek Buitenhuis2016-05-171-4/+6
|\ \ | |/ | | | | | | | | | | * commit 'a6e27f7add2698fdd89911632b570c3d0c3f2aaa': h264: factor out parsing the reference count into a separate file Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * h264: factor out parsing the reference count into a separate fileAnton Khirnov2016-04-241-4/+6
| | | | | | | | This will allow decoupling the parser from the decoder.
* | Merge commit 'e9f884416c76558098fc1f63825b293956e8483c'Derek Buitenhuis2016-05-171-0/+3
|\ \ | |/ | | | | | | | | | | * commit 'e9f884416c76558098fc1f63825b293956e8483c': h264: move reading direct_spatial_mv_pred out of ff_set_ref_count() Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
| * h264: move reading direct_spatial_mv_pred out of ff_set_ref_count()Anton Khirnov2016-04-241-0/+3
| | | | | | | | | | It has nothing to do with the reference count and so does not belong in this function.
* | Merge commit '8d0cc8ca97678f4ca87948ebabcbaab5a4f4c1f6'Hendrik Leppkes2016-05-171-12/+27
|\ \ | |/ | | | | | | | | | | * commit '8d0cc8ca97678f4ca87948ebabcbaab5a4f4c1f6': h264_parser: switch to h2645_parse for NAL unescaping Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
OpenPOWER on IntegriCloud