and ensures the following padding is correctly initialized to 0. Originally committed as revision 18378 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.6
| @@ -2654,6 +2654,14 @@ void av_init_packet(AVPacket *pkt); | |||||
| */ | */ | ||||
| int av_new_packet(AVPacket *pkt, int size); | int av_new_packet(AVPacket *pkt, int size); | ||||
| /** | |||||
| * Reduce packet size, correctly zeroing padding | |||||
| * | |||||
| * @param pkt packet | |||||
| * @param size new size | |||||
| */ | |||||
| void av_shrink_packet(AVPacket *pkt, int size); | |||||
| /** | /** | ||||
| * @warning This is a hack - the packet memory allocation stuff is broken. The | * @warning This is a hack - the packet memory allocation stuff is broken. The | ||||
| * packet is allocated if it was not really allocated. | * packet is allocated if it was not really allocated. | ||||
| @@ -62,6 +62,13 @@ int av_new_packet(AVPacket *pkt, int size) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| void av_shrink_packet(AVPacket *pkt, int size) | |||||
| { | |||||
| if (pkt->size <= size) return; | |||||
| pkt->size = size; | |||||
| memset(pkt->data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||||
| } | |||||
| int av_dup_packet(AVPacket *pkt) | int av_dup_packet(AVPacket *pkt) | ||||
| { | { | ||||
| if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) { | if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) { | ||||
| @@ -272,7 +272,7 @@ int av_get_packet(ByteIOContext *s, AVPacket *pkt, int size) | |||||
| if(ret<=0) | if(ret<=0) | ||||
| av_free_packet(pkt); | av_free_packet(pkt); | ||||
| else | else | ||||
| pkt->size= ret; | |||||
| av_shrink_packet(pkt, ret); | |||||
| return ret; | return ret; | ||||
| } | } | ||||