* commit '9b56d5c11488656254e9aed8d964ef2b7c2ff5e6': avpacket: Deprecate av_dup_packet Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>tags/n3.0
| @@ -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. | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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) | ||||
| { | { | ||||
| @@ -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; | |||||
| 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); | |||||
| } | |||||
| ret = av_packet_ref(&mkv->cur_audio_pkt, pkt); | |||||
| } else | } else | ||||
| ret = mkv_write_packet_internal(s, pkt, 0); | ret = mkv_write_packet_internal(s, pkt, 0); | ||||
| return ret; | return ret; | ||||
| @@ -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) { | |||||
| av_free(this_pktl); | |||||
| return ret; | |||||
| } | |||||
| } | |||||
| if ((ret = av_packet_ref(&this_pktl->pkt, pkt)) < 0) { | |||||
| av_free(this_pktl); | |||||
| 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; | ||||
| } | } | ||||