Merge commit '01bcc2d5c23fa757d163530abb396fd02f1be7c8'
authorHendrik Leppkes <h.leppkes@gmail.com>
Sat, 5 Sep 2015 14:50:09 +0000 (16:50 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Sat, 5 Sep 2015 14:50:09 +0000 (16:50 +0200)
* commit '01bcc2d5c23fa757d163530abb396fd02f1be7c8':
  lavc: Drop deprecated destruct_packet related functions

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
12 files changed:
1  2 
libavcodec/avcodec.h
libavcodec/avpacket.c
libavcodec/utils.c
libavcodec/version.h
libavdevice/v4l2.c
libavformat/avidec.c
libavformat/mux.c
libavformat/mxg.c
libavformat/psxstr.c
libavformat/rmdec.c
libavformat/utils.c
libavformat/yop.c

Simple merge
  #include "libavutil/mathematics.h"
  #include "libavutil/mem.h"
  #include "avcodec.h"
 +#include "bytestream.h"
 +#include "internal.h"
  
- #if FF_API_DESTRUCT_PACKET
- void av_destruct_packet(AVPacket *pkt)
- {
-     av_freep(&pkt->data);
-     pkt->size = 0;
- }
- /* a dummy destruct callback for the callers that assume AVPacket.destruct ==
-  * NULL => static data */
- static void dummy_destruct_packet(AVPacket *pkt)
- {
-     av_assert0(0);
- }
- #endif
  void av_init_packet(AVPacket *pkt)
  {
      pkt->pts                  = AV_NOPTS_VALUE;
@@@ -189,55 -151,32 +153,50 @@@ do 
          dst = data;                                                     \
      } while (0)
  
 -int av_dup_packet(AVPacket *pkt)
 +/* Makes duplicates of data, side_data, but does not copy any other fields */
 +static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup)
  {
 -    AVPacket tmp_pkt;
 -
 -    if (!pkt->buf && pkt->data) {
 -        tmp_pkt = *pkt;
 -
 -        pkt->data      = NULL;
 -        pkt->side_data = NULL;
 -        DUP_DATA(pkt->data, tmp_pkt.data, pkt->size, 1, ALLOC_BUF);
 +    pkt->data      = NULL;
 +    pkt->side_data = NULL;
 +    if (pkt->buf) {
 +        AVBufferRef *ref = av_buffer_ref(src->buf);
 +        if (!ref)
 +            return AVERROR(ENOMEM);
 +        pkt->buf  = ref;
 +        pkt->data = ref->data;
 +    } else {
 +        DUP_DATA(pkt->data, src->data, pkt->size, 1, ALLOC_BUF);
 +    }
- #if FF_API_DESTRUCT_PACKET
- FF_DISABLE_DEPRECATION_WARNINGS
-     pkt->destruct = dummy_destruct_packet;
- FF_ENABLE_DEPRECATION_WARNINGS
- #endif
 +    if (pkt->side_data_elems && dup)
 +        pkt->side_data = src->side_data;
 +    if (pkt->side_data_elems && !dup) {
 +        return av_copy_packet_side_data(pkt, src);
 +    }
 +    return 0;
  
 -        if (pkt->side_data_elems) {
 -            int i;
 +failed_alloc:
 +    av_free_packet(pkt);
 +    return AVERROR(ENOMEM);
 +}
  
 -            DUP_DATA(pkt->side_data, tmp_pkt.side_data,
 -                     pkt->side_data_elems * sizeof(*pkt->side_data), 0, ALLOC_MALLOC);
 +int av_copy_packet_side_data(AVPacket *pkt, const AVPacket *src)
 +{
 +    if (src->side_data_elems) {
 +        int i;
 +        DUP_DATA(pkt->side_data, src->side_data,
 +                src->side_data_elems * sizeof(*src->side_data), 0, ALLOC_MALLOC);
 +        if (src != pkt) {
              memset(pkt->side_data, 0,
 -                   pkt->side_data_elems * sizeof(*pkt->side_data));
 -            for (i = 0; i < pkt->side_data_elems; i++) {
 -                DUP_DATA(pkt->side_data[i].data, tmp_pkt.side_data[i].data,
 -                         tmp_pkt.side_data[i].size, 1, ALLOC_MALLOC);
 -                pkt->side_data[i].size = tmp_pkt.side_data[i].size;
 -                pkt->side_data[i].type = tmp_pkt.side_data[i].type;
 -            }
 +                   src->side_data_elems * sizeof(*src->side_data));
 +        }
 +        for (i = 0; i < src->side_data_elems; i++) {
 +            DUP_DATA(pkt->side_data[i].data, src->side_data[i].data,
 +                    src->side_data[i].size, 1, ALLOC_MALLOC);
 +            pkt->side_data[i].size = src->side_data[i].size;
 +            pkt->side_data[i].type = src->side_data[i].type;
          }
      }
 +    pkt->side_data_elems = src->side_data_elems;
      return 0;
  
  failed_alloc:
@@@ -1807,23 -1329,11 +1807,13 @@@ FF_ENABLE_DEPRECATION_WARNING
  
      if (avpkt->data) {
          AVBufferRef *buf = avpkt->buf;
- #if FF_API_DESTRUCT_PACKET
- FF_DISABLE_DEPRECATION_WARNINGS
-         void *destruct = avpkt->destruct;
- FF_ENABLE_DEPRECATION_WARNINGS
- #endif
  
 -        if (avpkt->size < size)
 +        if (avpkt->size < size) {
 +            av_log(avctx, AV_LOG_ERROR, "User packet is too small (%d < %"PRId64")\n", avpkt->size, size);
              return AVERROR(EINVAL);
 +        }
  
          av_init_packet(avpkt);
- #if FF_API_DESTRUCT_PACKET
- FF_DISABLE_DEPRECATION_WARNINGS
-         avpkt->destruct = destruct;
- FF_ENABLE_DEPRECATION_WARNINGS
- #endif
          avpkt->buf      = buf;
          avpkt->size     = size;
          return 0;
Simple merge
@@@ -394,27 -421,6 +394,20 @@@ static int mmap_init(AVFormatContext *c
      return 0;
  }
  
- #if FF_API_DESTRUCT_PACKET
- static void dummy_release_buffer(AVPacket *pkt)
- {
-     av_assert0(0);
- }
- #endif
 +static int enqueue_buffer(struct video_data *s, struct v4l2_buffer *buf)
 +{
 +    int res = 0;
 +
 +    if (v4l2_ioctl(s->fd, VIDIOC_QBUF, buf) < 0) {
 +        res = AVERROR(errno);
 +        av_log(NULL, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %s\n", av_err2str(res));
 +    } else {
 +        avpriv_atomic_int_add_and_fetch(&s->buffers_queued, 1);
 +    }
 +
 +    return res;
 +}
 +
  static void mmap_release_buffer(void *opaque, uint8_t *data)
  {
      struct v4l2_buffer buf = { 0 };
@@@ -1427,18 -1210,8 +1424,8 @@@ resync
  
          if (CONFIG_DV_DEMUXER && avi->dv_demux) {
              AVBufferRef *avbuf = pkt->buf;
- #if FF_API_DESTRUCT_PACKET
- FF_DISABLE_DEPRECATION_WARNINGS
-             dstr = pkt->destruct;
- FF_ENABLE_DEPRECATION_WARNINGS
- #endif
              size = avpriv_dv_produce_packet(avi->dv_demux, pkt,
 -                                            pkt->data, pkt->size);
 +                                            pkt->data, pkt->size, pkt->pos);
- #if FF_API_DESTRUCT_PACKET
- FF_DISABLE_DEPRECATION_WARNINGS
-             pkt->destruct = dstr;
- FF_ENABLE_DEPRECATION_WARNINGS
- #endif
              pkt->buf    = avbuf;
              pkt->flags |= AV_PKT_FLAG_KEY;
              if (size < 0)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge