summaryrefslogtreecommitdiffstats
path: root/libavcodec/h2645_parse.c
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-26 14:07:03 +0100
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2016-04-26 14:07:03 +0100
commit438ed974b832634c544facaf6de3a23e9e7d774a (patch)
treee64ec8adb4d53435a816df57839693a44a7a690d /libavcodec/h2645_parse.c
parentb5c10c4c9274b06a7bd6f6e1f0f4c129aa6e892c (diff)
parentb667252a41fbf5a3f6ea8c67fdbc03db3d748977 (diff)
downloadffmpeg-streaming-438ed974b832634c544facaf6de3a23e9e7d774a.zip
ffmpeg-streaming-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.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c
index fc22ec6..6e24ea3 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",
OpenPOWER on IntegriCloud