ffmpeg | branch: master | Derek Buitenhuis <derek.buitenh...@gmail.com> | Tue Apr 26 14:04:03 2016 +0100| [b5c10c4c9274b06a7bd6f6e1f0f4c129aa6e892c] | committer: Derek Buitenhuis
Merge commit '52ec149fbee57b6ca817049c9706212a0774a32c' * commit '52ec149fbee57b6ca817049c9706212a0774a32c': h2645_parse: change the AVCodecContext* parameter to void* Merged-by: Derek Buitenhuis <derek.buitenh...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5c10c4c9274b06a7bd6f6e1f0f4c129aa6e892c --- libavcodec/h2645_parse.c | 14 +++++++------- libavcodec/h2645_parse.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 58c9118..fc22ec6 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -182,7 +182,7 @@ static const char *nal_unit_name(int nal_type) * @return AVERROR_INVALIDDATA if the packet is not a valid NAL unit, * 0 if the unit should be skipped, 1 otherwise */ -static int hevc_parse_nal_header(H2645NAL *nal, AVCodecContext *avctx) +static int hevc_parse_nal_header(H2645NAL *nal, void *logctx) { GetBitContext *gb = &nal->gb; int nuh_layer_id; @@ -197,7 +197,7 @@ static int hevc_parse_nal_header(H2645NAL *nal, AVCodecContext *avctx) if (nal->temporal_id < 0) return AVERROR_INVALIDDATA; - av_log(avctx, AV_LOG_DEBUG, + av_log(logctx, AV_LOG_DEBUG, "nal_unit_type: %d(%s), nuh_layer_id: %d, temporal_id: %d\n", nal->type, nal_unit_name(nal->type), nuh_layer_id, nal->temporal_id); @@ -206,7 +206,7 @@ static int hevc_parse_nal_header(H2645NAL *nal, AVCodecContext *avctx) int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, - AVCodecContext *avctx, int is_nalff, int nal_length_size) + void *logctx, int is_nalff, int nal_length_size) { int consumed, ret = 0; @@ -223,7 +223,7 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, length -= nal_length_size; if (extract_length > length) { - av_log(avctx, AV_LOG_ERROR, "Invalid NAL unit size.\n"); + av_log(logctx, AV_LOG_ERROR, "Invalid NAL unit size.\n"); return AVERROR_INVALIDDATA; } } else { @@ -237,7 +237,7 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, // bytes at the end of the packet. return 0; } else { - av_log(avctx, AV_LOG_ERROR, "No start code is found.\n"); + av_log(logctx, AV_LOG_ERROR, "No start code is found.\n"); return AVERROR_INVALIDDATA; } } @@ -279,10 +279,10 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, if (ret < 0) return ret; - ret = hevc_parse_nal_header(nal, avctx); + ret = hevc_parse_nal_header(nal, logctx); if (ret <= 0) { if (ret < 0) { - av_log(avctx, AV_LOG_ERROR, "Invalid NAL unit %d, skipping.\n", + av_log(logctx, AV_LOG_ERROR, "Invalid NAL unit %d, skipping.\n", nal->type); } pkt->nb_nals--; diff --git a/libavcodec/h2645_parse.h b/libavcodec/h2645_parse.h index 05c21b0..cbf07a2 100644 --- a/libavcodec/h2645_parse.h +++ b/libavcodec/h2645_parse.h @@ -63,7 +63,7 @@ int ff_h2645_extract_rbsp(const uint8_t *src, int length, * Split an input packet into NAL units. */ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, - AVCodecContext *avctx, int is_nalff, int nal_length_size); + void *logctx, int is_nalff, int nal_length_size); /** * Free all the allocated memory in the packet. ====================================================================== diff --cc libavcodec/h2645_parse.c index 58c9118,57a78e9..fc22ec6 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@@ -197,9 -147,9 +197,9 @@@ static int hevc_parse_nal_header(H2645N if (nal->temporal_id < 0) return AVERROR_INVALIDDATA; - av_log(avctx, AV_LOG_DEBUG, + av_log(logctx, AV_LOG_DEBUG, - "nal_unit_type: %d, nuh_layer_id: %dtemporal_id: %d\n", - nal->type, nuh_layer_id, nal->temporal_id); + "nal_unit_type: %d(%s), nuh_layer_id: %d, temporal_id: %d\n", + nal->type, nal_unit_name(nal->type), nuh_layer_id, nal->temporal_id); return nuh_layer_id == 0; } @@@ -227,21 -177,13 +227,21 @@@ int ff_h2645_packet_split(H2645Packet * return AVERROR_INVALIDDATA; } } else { - if (buf[2] == 0) { - length--; - buf++; - continue; + /* search start code */ + while (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) { + ++buf; + --length; + if (length < 4) { + if (pkt->nb_nals > 0) { + // No more start codes: we discarded some irrelevant + // bytes at the end of the packet. + return 0; + } else { - av_log(avctx, AV_LOG_ERROR, "No start code is found.\n"); ++ av_log(logctx, AV_LOG_ERROR, "No start code is found.\n"); + return AVERROR_INVALIDDATA; + } + } } - if (buf[0] != 0 || buf[1] != 0 || buf[2] != 1) - return AVERROR_INVALIDDATA; buf += 3; length -= 3; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog