diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-02-21 12:44:09 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-02-21 12:44:09 +0100 |
commit | 7fd732b75825ff5e3dd54bf56c1ab9b74477c93f (patch) | |
tree | bcfbc18c4fcf05230286d5c13688bf232870ae18 | |
parent | 34c58618bef02c5584c93e1d39592a309905204b (diff) | |
parent | 16163e6bf2d446c06d4dd053c0852074bb50508d (diff) | |
download | ffmpeg-7fd732b75825ff5e3dd54bf56c1ab9b74477c93f.tar.gz |
Merge commit '16163e6bf2d446c06d4dd053c0852074bb50508d'
* commit '16163e6bf2d446c06d4dd053c0852074bb50508d':
rtpdec_h264: Fix nal type counting after refactoring
Conflicts:
libavformat/rtpdec_h264.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/rtpdec_h264.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libavformat/rtpdec_h264.c b/libavformat/rtpdec_h264.c index 4d4170eb8c..10624393f0 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, PayloadContext *data, 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, PayloadContext *data, 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, PayloadContext *data, } static int h264_handle_packet_fu_a(AVFormatContext *ctx, PayloadContext *data, 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, PayloadContext *data, A 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, data, pkt, buf, len, 0); + result = h264_handle_packet_stap_a(ctx, data, 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, data, pkt, buf, len); + result = h264_handle_packet_fu_a(ctx, data, pkt, buf, len, + NAL_COUNTERS, NAL_MASK); break; case 30: // undefined |