mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/avpacket: Refactoring copy_side_data into a separate function
Refactoring copy_side_data into a separate function so that it can be called in cases where side data needs to be duplicated. Signed-off-by: Vignesh Venkatasubramanian <vigneshv@google.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
5d22ac488b
commit
48de04f4ec
@ -3483,6 +3483,13 @@ int av_dup_packet(AVPacket *pkt);
|
|||||||
*/
|
*/
|
||||||
int av_copy_packet(AVPacket *dst, AVPacket *src);
|
int av_copy_packet(AVPacket *dst, AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy packet side data
|
||||||
|
*
|
||||||
|
* @return 0 on success, negative AVERROR on fail
|
||||||
|
*/
|
||||||
|
int av_copy_packet_side_data(AVPacket *dst, AVPacket *src);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free a packet.
|
* Free a packet.
|
||||||
*
|
*
|
||||||
|
@ -199,13 +199,24 @@ static int copy_packet_data(AVPacket *pkt, AVPacket *src, int dup)
|
|||||||
if (pkt->side_data_elems && dup)
|
if (pkt->side_data_elems && dup)
|
||||||
pkt->side_data = src->side_data;
|
pkt->side_data = src->side_data;
|
||||||
if (pkt->side_data_elems && !dup) {
|
if (pkt->side_data_elems && !dup) {
|
||||||
int i;
|
return av_copy_packet_side_data(pkt, src);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
failed_alloc:
|
||||||
|
av_destruct_packet(pkt);
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
}
|
||||||
|
|
||||||
|
int av_copy_packet_side_data(AVPacket *pkt, AVPacket *src)
|
||||||
|
{
|
||||||
|
if (src->side_data_elems) {
|
||||||
|
int i;
|
||||||
DUP_DATA(pkt->side_data, src->side_data,
|
DUP_DATA(pkt->side_data, src->side_data,
|
||||||
pkt->side_data_elems * sizeof(*pkt->side_data), 0, ALLOC_MALLOC);
|
src->side_data_elems * sizeof(*src->side_data), 0, ALLOC_MALLOC);
|
||||||
memset(pkt->side_data, 0,
|
memset(pkt->side_data, 0,
|
||||||
pkt->side_data_elems * sizeof(*pkt->side_data));
|
src->side_data_elems * sizeof(*src->side_data));
|
||||||
for (i = 0; i < pkt->side_data_elems; i++) {
|
for (i = 0; i < src->side_data_elems; i++) {
|
||||||
DUP_DATA(pkt->side_data[i].data, src->side_data[i].data,
|
DUP_DATA(pkt->side_data[i].data, src->side_data[i].data,
|
||||||
src->side_data[i].size, 1, ALLOC_MALLOC);
|
src->side_data[i].size, 1, ALLOC_MALLOC);
|
||||||
pkt->side_data[i].size = src->side_data[i].size;
|
pkt->side_data[i].size = src->side_data[i].size;
|
||||||
|
Loading…
Reference in New Issue
Block a user