Merge commit '5a9a9d4a2abefa63d9a898ce26715453c569e89d'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 11 Aug 2013 08:45:13 +0000 (10:45 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 11 Aug 2013 08:45:13 +0000 (10:45 +0200)
* commit '5a9a9d4a2abefa63d9a898ce26715453c569e89d':
  lavc: Add refcounted api to AVPacket

Conflicts:
libavcodec/avpacket.c
libavcodec/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/APIchanges
libavcodec/avcodec.h
libavcodec/avpacket.c
libavcodec/version.h

diff --cc doc/APIchanges
Simple merge
@@@ -3537,12 -3228,67 +3537,72 @@@ int av_packet_shrink_side_data(AVPacke
  uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
                                   int *size);
  
 +int av_packet_merge_side_data(AVPacket *pkt);
 +
 +int av_packet_split_side_data(AVPacket *pkt);
 +
 +
  /**
+  * Convenience function to free all the side data stored.
+  * All the other fields stay untouched.
+  *
+  * @param pkt packet
+  */
+ void av_packet_free_side_data(AVPacket *pkt);
+ /**
+  * Setup a new reference to the data described by a given packet
+  *
+  * If src is reference-counted, setup dst as a new reference to the
+  * buffer in src. Otherwise allocate a new buffer in dst and copy the
+  * data from src into it.
+  *
+  * All the other fields are copied from src.
+  *
+  * @see av_packet_unref
+  *
+  * @param dst Destination packet
+  * @param src Source packet
+  *
+  * @return 0 on success, a negative AVERROR on error.
+  */
+ int av_packet_ref(AVPacket *dst, AVPacket *src);
+ /**
+  * Wipe the packet.
+  *
+  * Unreference the buffer referenced by the packet and reset the
+  * remaining packet fields to their default values.
+  *
+  * @param pkt The packet to be unreferenced.
+  */
+ void av_packet_unref(AVPacket *pkt);
+ /**
+  * Move every field in src to dst and reset src.
+  *
+  * @see av_packet_unref
+  *
+  * @param src Source packet, will be reset
+  * @param dst Destination packet
+  */
+ void av_packet_move_ref(AVPacket *dst, AVPacket *src);
+ /**
+  * Copy only "properties" fields from src to dst.
+  *
+  * Properties for the purpose of this function are all the fields
+  * beside those related to the packet data (buf, data, size)
+  *
+  * @param dst Destination packet
+  * @param src Source packet
+  *
+  * @return 0 on success AVERROR on failure.
+  *
+  */
+ int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
+ /**
   * @}
   */
  
  #include "libavutil/internal.h"
  #include "libavutil/mem.h"
  #include "avcodec.h"
 +#include "bytestream.h"
 +#include "internal.h"
 +
 +void ff_packet_free_side_data(AVPacket *pkt)
 +{
 +    int i;
 +    for (i = 0; i < pkt->side_data_elems; i++)
 +        av_free(pkt->side_data[i].data);
 +    av_freep(&pkt->side_data);
 +    pkt->side_data_elems = 0;
 +}
 +
  #if FF_API_DESTRUCT_PACKET
  void av_destruct_packet(AVPacket *pkt)
  {
      av_free(pkt->data);
@@@ -253,17 -197,47 +262,26 @@@ FF_DISABLE_DEPRECATION_WARNING
          ) {
  FF_ENABLE_DEPRECATION_WARNINGS
          tmp_pkt = *pkt;
 -
 -        pkt->data      = NULL;
 -        pkt->side_data = NULL;
 -        DUP_DATA(pkt->data, tmp_pkt.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) {
 -            int i;
 -
 -            DUP_DATA(pkt->side_data, tmp_pkt.side_data,
 -                     pkt->side_data_elems * sizeof(*pkt->side_data), 0, ALLOC_MALLOC);
 -            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;
 -            }
 -        }
 +        return copy_packet_data(pkt, &tmp_pkt, 1);
      }
      return 0;
 +}
  
 -failed_alloc:
 -    av_free_packet(pkt);
 -    return AVERROR(ENOMEM);
 +int av_copy_packet(AVPacket *dst, AVPacket *src)
 +{
 +    *dst = *src;
 +    return copy_packet_data(dst, src, 0);
  }
  
+ void av_packet_free_side_data(AVPacket *pkt)
+ {
+     int i;
+     for (i = 0; i < pkt->side_data_elems; i++)
+         av_free(pkt->side_data[i].data);
+     av_freep(&pkt->side_data);
+     pkt->side_data_elems = 0;
+ }
  void av_free_packet(AVPacket *pkt)
  {
      if (pkt) {
   * Libavcodec version macros.
   */
  
 +#include "libavutil/avutil.h"
 +
  #define LIBAVCODEC_VERSION_MAJOR 55
- #define LIBAVCODEC_VERSION_MINOR  24
 -#define LIBAVCODEC_VERSION_MINOR 16
 -#define LIBAVCODEC_VERSION_MICRO  0
++#define LIBAVCODEC_VERSION_MINOR  25
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \