From 16163e6bf2d446c06d4dd053c0852074bb50508d Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Thu, 19 Feb 2015 22:12:21 +0200 Subject: rtpdec_h264: Fix nal type counting after refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes builds with -DDEBUG after f0a874799. Signed-off-by: Martin Storsjö --- libavformat/rtpdec_h264.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'libavformat/rtpdec_h264.c') diff --git a/libavformat/rtpdec_h264.c b/libavformat/rtpdec_h264.c index e6c8c26160..f8167a9bd6 100644 --- a/libavformat/rtpdec_h264.c +++ b/libavformat/rtpdec_h264.c @@ -57,9 +57,12 @@ struct PayloadContext { #ifdef DEBUG #define COUNT_NAL_TYPE(data, nal) data->packet_types_received[(nal) & 0x1f]++ +#define NAL_COUNTERS data->packet_types_received #else #define COUNT_NAL_TYPE(data, nal) do { } while (0) +#define NAL_COUNTERS NULL #endif +#define NAL_MASK 0x1f static const uint8_t start_sequence[] = { 0, 0, 0, 1 }; @@ -178,7 +181,8 @@ static int sdp_parse_fmtp_config_h264(AVFormatContext *s, static int h264_handle_packet_stap_a(AVFormatContext *ctx, AVPacket *pkt, const uint8_t *buf, int len, - int start_skip) + int start_skip, int *nal_counters, + int nal_mask) { int pass = 0; int total_length = 0; @@ -209,7 +213,8 @@ static int h264_handle_packet_stap_a(AVFormatContext *ctx, AVPacket *pkt, memcpy(dst, start_sequence, sizeof(start_sequence)); dst += sizeof(start_sequence); memcpy(dst, src, nal_size); - COUNT_NAL_TYPE(data, *src); + if (nal_counters) + nal_counters[(*src) & nal_mask]++; dst += nal_size; } } else { @@ -236,7 +241,8 @@ static int h264_handle_packet_stap_a(AVFormatContext *ctx, AVPacket *pkt, } static int h264_handle_packet_fu_a(AVFormatContext *ctx, AVPacket *pkt, - const uint8_t *buf, int len) + const uint8_t *buf, int len, + int *nal_counters, int nal_mask) { uint8_t fu_indicator, fu_header, start_bit, nal_type, nal; int ret; @@ -257,7 +263,8 @@ static int h264_handle_packet_fu_a(AVFormatContext *ctx, AVPacket *pkt, len -= 2; if (start_bit) { - COUNT_NAL_TYPE(data, nal_type); + if (nal_counters) + nal_counters[nal_type & nal_mask]++; /* copy in the start sequence, and the reconstructed nal */ if ((ret = av_new_packet(pkt, sizeof(start_sequence) + sizeof(nal) + len)) < 0) return ret; @@ -308,7 +315,8 @@ static int h264_handle_packet(AVFormatContext *ctx, PayloadContext *data, // consume the STAP-A NAL buf++; len--; - result = h264_handle_packet_stap_a(ctx, pkt, buf, len, 0); + result = h264_handle_packet_stap_a(ctx, pkt, buf, len, 0, + NAL_COUNTERS, NAL_MASK); break; case 25: // STAP-B @@ -322,7 +330,8 @@ static int h264_handle_packet(AVFormatContext *ctx, PayloadContext *data, break; case 28: // FU-A (fragmented nal) - result = h264_handle_packet_fu_a(ctx, pkt, buf, len); + result = h264_handle_packet_fu_a(ctx, pkt, buf, len, + NAL_COUNTERS, NAL_MASK); break; case 30: // undefined -- cgit v1.2.3