diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-26 14:07:03 +0100 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2016-04-26 14:07:03 +0100 |
commit | 438ed974b832634c544facaf6de3a23e9e7d774a (patch) | |
tree | e64ec8adb4d53435a816df57839693a44a7a690d /libavcodec/h2645_parse.c | |
parent | b5c10c4c9274b06a7bd6f6e1f0f4c129aa6e892c (diff) | |
parent | b667252a41fbf5a3f6ea8c67fdbc03db3d748977 (diff) | |
download | ffmpeg-438ed974b832634c544facaf6de3a23e9e7d774a.tar.gz |
Merge commit 'b667252a41fbf5a3f6ea8c67fdbc03db3d748977'
* commit 'b667252a41fbf5a3f6ea8c67fdbc03db3d748977':
h2645_parse: add support for parsing h264
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'libavcodec/h2645_parse.c')
-rw-r--r-- | libavcodec/h2645_parse.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index fc22ec6bf6..6e24ea39c5 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -204,9 +204,26 @@ static int hevc_parse_nal_header(H2645NAL *nal, void *logctx) return nuh_layer_id == 0; } +static int h264_parse_nal_header(H2645NAL *nal, void *logctx) +{ + GetBitContext *gb = &nal->gb; + + if (get_bits1(gb) != 0) + return AVERROR_INVALIDDATA; + + nal->ref_idc = get_bits(gb, 2); + nal->type = get_bits(gb, 5); + + av_log(logctx, AV_LOG_DEBUG, + "nal_unit_type: %d, nal_ref_idc: %d\n", + nal->type, nal->ref_idc); + + return 1; +} int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, - void *logctx, int is_nalff, int nal_length_size) + void *logctx, int is_nalff, int nal_length_size, + enum AVCodecID codec_id) { int consumed, ret = 0; @@ -279,7 +296,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, logctx); + if (codec_id == AV_CODEC_ID_HEVC) + ret = hevc_parse_nal_header(nal, logctx); + else + ret = h264_parse_nal_header(nal, logctx); if (ret <= 0) { if (ret < 0) { av_log(logctx, AV_LOG_ERROR, "Invalid NAL unit %d, skipping.\n", |