Add av_shrink_packet function for use in av_get_packet that reduces pkt->size
and ensures the following padding is correctly initialized to 0. Originally committed as revision 18378 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
c81604f862
commit
feb993e579
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user