1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Merge commit '9b56d5c11488656254e9aed8d964ef2b7c2ff5e6'

* commit '9b56d5c11488656254e9aed8d964ef2b7c2ff5e6':
  avpacket: Deprecate av_dup_packet

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
This commit is contained in:
Hendrik Leppkes 2015-10-29 14:16:44 +01:00
commit 87a6f532b4
5 changed files with 22 additions and 24 deletions

View File

@ -15,13 +15,15 @@ libavutil: 2015-08-28
API changes, most recent first: API changes, most recent first:
2015-10-29 - lavc 57.12.100 / 57.8.0 - avcodec.h
xxxxxx - Deprecate av_free_packet(). Use av_packet_unref() as replacement,
it resets the packet in a more consistent way.
xxxxxx - Deprecate av_dup_packet(), it is a no-op for most cases.
Use av_packet_ref() to make a non-refcounted AVPacket refcounted.
2015-10-27 - xxxxxxx - lavu 55.5.100 - cpu.h 2015-10-27 - xxxxxxx - lavu 55.5.100 - cpu.h
Add AV_CPU_FLAG_AESNI. Add AV_CPU_FLAG_AESNI.
2015-10-27 - xxxxxxx - lavc 57.12.100 / 57.8.0 - avcodec.h
Deprecate av_free_packet(). Use av_packet_unref() as replacement,
it resets the packet in a more consistent way.
2015-10-22 - xxxxxxx - lavc 57.9.100 / lavc 57.5.0 - avcodec.h 2015-10-22 - xxxxxxx - lavc 57.9.100 / lavc 57.5.0 - avcodec.h
Add data and linesize array to AVSubtitleRect, to be used instead of Add data and linesize array to AVSubtitleRect, to be used instead of
the ones from the embedded AVPicture. the ones from the embedded AVPicture.

View File

@ -3898,12 +3898,15 @@ int av_grow_packet(AVPacket *pkt, int grow_by);
*/ */
int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
#if FF_API_AVPACKET_OLD_API
/** /**
* @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.
*
* @deprecated Use av_packet_ref
*/ */
attribute_deprecated
int av_dup_packet(AVPacket *pkt); int av_dup_packet(AVPacket *pkt);
#if FF_API_AVPACKET_OLD_API
/** /**
* Copy packet, including contents * Copy packet, including contents
* *

View File

@ -130,6 +130,8 @@ int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size)
return 0; return 0;
} }
#if FF_API_AVPACKET_OLD_API
FF_DISABLE_DEPRECATION_WARNINGS
#define ALLOC_MALLOC(data, size) data = av_malloc(size) #define ALLOC_MALLOC(data, size) data = av_malloc(size)
#define ALLOC_BUF(data, size) \ #define ALLOC_BUF(data, size) \
do { \ do { \
@ -207,6 +209,8 @@ failed_alloc:
av_packet_unref(pkt); av_packet_unref(pkt);
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
} }
FF_ENABLE_DEPRECATION_WARNINGS
#endif
int av_dup_packet(AVPacket *pkt) int av_dup_packet(AVPacket *pkt)
{ {

View File

@ -1945,15 +1945,7 @@ static int mkv_write_packet(AVFormatContext *s, AVPacket *pkt)
// buffer an audio packet to ensure the packet containing the video // buffer an audio packet to ensure the packet containing the video
// keyframe's timecode is contained in the same cluster for WebM // keyframe's timecode is contained in the same cluster for WebM
if (codec_type == AVMEDIA_TYPE_AUDIO) { if (codec_type == AVMEDIA_TYPE_AUDIO) {
mkv->cur_audio_pkt = *pkt; ret = av_packet_ref(&mkv->cur_audio_pkt, pkt);
if (pkt->buf) {
mkv->cur_audio_pkt.buf = av_buffer_ref(pkt->buf);
ret = mkv->cur_audio_pkt.buf ? 0 : AVERROR(ENOMEM);
} else
ret = av_dup_packet(&mkv->cur_audio_pkt);
if (mkv->cur_audio_pkt.side_data_elems > 0) {
ret = av_copy_packet_side_data(&mkv->cur_audio_pkt, &mkv->cur_audio_pkt);
}
} else } else
ret = mkv_write_packet_internal(s, pkt, 0); ret = mkv_write_packet_internal(s, pkt, 0);
return ret; return ret;

View File

@ -740,19 +740,14 @@ int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,
this_pktl = av_mallocz(sizeof(AVPacketList)); this_pktl = av_mallocz(sizeof(AVPacketList));
if (!this_pktl) if (!this_pktl)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
this_pktl->pkt = *pkt;
pkt->buf = NULL;
pkt->side_data = NULL;
pkt->side_data_elems = 0;
if ((pkt->flags & AV_PKT_FLAG_UNCODED_FRAME)) { if ((pkt->flags & AV_PKT_FLAG_UNCODED_FRAME)) {
av_assert0(pkt->size == UNCODED_FRAME_PACKET_SIZE); av_assert0(pkt->size == UNCODED_FRAME_PACKET_SIZE);
av_assert0(((AVFrame *)pkt->data)->buf); av_assert0(((AVFrame *)pkt->data)->buf);
} else { }
// Duplicate the packet if it uses non-allocated memory
if ((ret = av_dup_packet(&this_pktl->pkt)) < 0) { if ((ret = av_packet_ref(&this_pktl->pkt, pkt)) < 0) {
av_free(this_pktl); av_free(this_pktl);
return ret; return ret;
}
} }
if (s->streams[pkt->stream_index]->last_in_packet_buffer) { if (s->streams[pkt->stream_index]->last_in_packet_buffer) {
@ -803,6 +798,8 @@ next_non_null:
s->streams[pkt->stream_index]->last_in_packet_buffer = s->streams[pkt->stream_index]->last_in_packet_buffer =
*next_point = this_pktl; *next_point = this_pktl;
av_packet_unref(pkt);
return 0; return 0;
} }