comparison rtpdec_h264.c @ 5739:84bfac703b3a libavformat

Properly pad H.264 extradata when taken from fmtp SDP attributes This fixes some valgrind warnings.
author mstorsjo
date Wed, 03 Mar 2010 21:00:50 +0000
parents 04b39763b51b
children 536e5527c1e0
comparison
equal deleted inserted replaced
5738:7152149eb03f 5739:84bfac703b3a
132 if (*value == ',') 132 if (*value == ',')
133 value++; 133 value++;
134 134
135 packet_size= av_base64_decode(decoded_packet, base64packet, sizeof(decoded_packet)); 135 packet_size= av_base64_decode(decoded_packet, base64packet, sizeof(decoded_packet));
136 if (packet_size) { 136 if (packet_size) {
137 uint8_t *dest= av_malloc(packet_size+sizeof(start_sequence)+codec->extradata_size); 137 uint8_t *dest = av_malloc(packet_size + sizeof(start_sequence) +
138 codec->extradata_size +
139 FF_INPUT_BUFFER_PADDING_SIZE);
138 if(dest) 140 if(dest)
139 { 141 {
140 if(codec->extradata_size) 142 if(codec->extradata_size)
141 { 143 {
142 // av_realloc? 144 // av_realloc?
144 av_free(codec->extradata); 146 av_free(codec->extradata);
145 } 147 }
146 148
147 memcpy(dest+codec->extradata_size, start_sequence, sizeof(start_sequence)); 149 memcpy(dest+codec->extradata_size, start_sequence, sizeof(start_sequence));
148 memcpy(dest+codec->extradata_size+sizeof(start_sequence), decoded_packet, packet_size); 150 memcpy(dest+codec->extradata_size+sizeof(start_sequence), decoded_packet, packet_size);
151 memset(dest+codec->extradata_size+sizeof(start_sequence)+
152 packet_size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
149 153
150 codec->extradata= dest; 154 codec->extradata= dest;
151 codec->extradata_size+= sizeof(start_sequence)+packet_size; 155 codec->extradata_size+= sizeof(start_sequence)+packet_size;
152 } else { 156 } else {
153 av_log(codec, AV_LOG_ERROR, "Unable to allocate memory for extradata!"); 157 av_log(codec, AV_LOG_ERROR, "Unable to allocate memory for extradata!");