Merge commit '324ff59444ff5470bb325ff1e2be7c4b054fc944'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 17 Jul 2014 12:18:20 +0000 (14:18 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 17 Jul 2014 12:20:10 +0000 (14:20 +0200)
* commit '324ff59444ff5470bb325ff1e2be7c4b054fc944':
  avpacket: Check for and return errors in ff_interleave_add_packet()

Conflicts:
libavformat/audiointerleave.c
libavformat/internal.h
libavformat/mux.c

See: 4d7c71c36467331f1e0c0f17af9f371d33308a9c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/audiointerleave.c
libavformat/internal.h
libavformat/mux.c

@@@ -134,14 -126,9 +132,12 @@@ int ff_audio_rechunk_interleave(AVForma
          AVStream *st = s->streams[i];
          if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
              AVPacket new_pkt;
-             int ret;
 -            while (interleave_new_audio_packet(s, &new_pkt, i, flush))
 +            while ((ret = interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) {
-                 ret = ff_interleave_add_packet(s, &new_pkt, compare_ts);
-                 if (ret < 0)
+                 if ((ret = ff_interleave_add_packet(s, &new_pkt, compare_ts)) < 0)
                      return ret;
 +            }
 +            if (ret < 0)
 +                return ret;
          }
      }
  
@@@ -90,10 -86,9 +90,10 @@@ void ff_program_add_stream_index(AVForm
  /**
   * Add packet to AVFormatContext->packet_buffer list, determining its
   * interleaved position using compare() function argument.
 + * @return 0, or < 0 on error
   */
  int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,
-                               int (*compare)(AVFormatContext *, AVPacket *, AVPacket *));
+                              int (*compare)(AVFormatContext *, AVPacket *, AVPacket *));
  
  void ff_read_frame_flush(AVFormatContext *s);
  
@@@ -655,15 -384,11 +655,15 @@@ int av_write_frame(AVFormatContext *s, 
      return ret;
  }
  
 +#define CHUNK_START 0x1000
 +
  int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,
-                               int (*compare)(AVFormatContext *, AVPacket *, AVPacket *))
+                              int (*compare)(AVFormatContext *, AVPacket *, AVPacket *))
  {
+     int ret;
      AVPacketList **next_point, *this_pktl;
-     int ret;
 +    AVStream *st   = s->streams[pkt->stream_index];
 +    int chunked    = s->max_chunk_size || s->max_chunk_duration;
  
      this_pktl      = av_mallocz(sizeof(AVPacketList));
      if (!this_pktl)
@@@ -675,17 -400,10 +675,17 @@@ FF_DISABLE_DEPRECATION_WARNING
  FF_ENABLE_DEPRECATION_WARNINGS
  #endif
      pkt->buf       = NULL;
 -    // Duplicate the packet if it uses non-allocated memory
 -    if ((ret = av_dup_packet(&this_pktl->pkt)) < 0) {
 -        av_free(this_pktl);
 -        return ret;
 +    pkt->side_data = NULL;
 +    pkt->side_data_elems = 0;
 +    if ((pkt->flags & AV_PKT_FLAG_UNCODED_FRAME)) {
 +        av_assert0(pkt->size == UNCODED_FRAME_PACKET_SIZE);
 +        av_assert0(((AVFrame *)pkt->data)->buf);
 +    } else {
-         // duplicate the packet if it uses non-allocated memory
++        // 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 (s->streams[pkt->stream_index]->last_in_packet_buffer) {
@@@ -765,7 -450,7 +766,8 @@@ int ff_interleave_packet_per_dts(AVForm
                                   AVPacket *pkt, int flush)
  {
      AVPacketList *pktl;
-     int stream_count = 0, noninterleaved_count = 0;
+     int stream_count = 0;
++    int noninterleaved_count = 0;
      int i, ret;
  
      if (pkt) {