summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/internal.h3
-rw-r--r--libavformat/utils.c5
2 files changed, 7 insertions, 1 deletions
diff --git a/libavformat/internal.h b/libavformat/internal.h
index 163587f416..67c35cc3e1 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -763,7 +763,8 @@ void ff_format_set_url(AVFormatContext *s, char *url);
*
* @param head List head element
* @param tail List tail element
- * @param pkt The packet being appended
+ * @param pkt The packet being appended. The data described in it will
+ * be made reference counted if it isn't already.
* @param flags Any combination of FF_PACKETLIST_FLAG_* flags
* @return 0 on success, negative AVERROR value on failure. On failure,
the list is unchanged
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 19fee40eec..9f8a5bfb63 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -460,6 +460,11 @@ int ff_packet_list_put(AVPacketList **packet_buffer,
return ret;
}
} else {
+ ret = av_packet_make_refcounted(pkt);
+ if (ret < 0) {
+ av_free(pktl);
+ return ret;
+ }
av_packet_move_ref(&pktl->pkt, pkt);
}