Merge commit '6d56bc9a6d853a33fe53ab63db580c4facaba420' into release/2.2
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 11 Mar 2014 12:13:42 +0000 (13:13 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 11 Mar 2014 12:13:42 +0000 (13:13 +0100)
* commit '6d56bc9a6d853a33fe53ab63db580c4facaba420':
  lavf: simplify ff_hevc_annexb2mp4_buf

Conflicts:
libavformat/hevc.c
libavformat/hevc.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/hevc.c
libavformat/hevc.h

diff --combined libavformat/hevc.c
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -1056,7 -1056,7 +1056,7 @@@ int ff_hevc_annexb2mp4(AVIOContext *pb
      }
  
  end:
 -    free(start);
 +    av_free(start);
      if (ps_count)
          *ps_count = num_ps;
      return ret;
@@@ -1066,52 -1066,15 +1066,15 @@@ int ff_hevc_annexb2mp4_buf(const uint8_
                             int *size, int filter_ps, int *ps_count)
  {
      AVIOContext *pb;
-     int num_ps = 0, ret = 0;
-     uint8_t *buf, *end, *start = NULL;
-     if (!filter_ps) {
-         ret = ff_avc_parse_nal_units_buf(buf_in, buf_out, size);
-         goto end;
-     }
+     int ret;
  
      ret = avio_open_dyn_buf(&pb);
      if (ret < 0)
-         goto end;
-     ret = ff_avc_parse_nal_units_buf(buf_in, &start, size);
-     if (ret < 0)
-         goto end;
-     buf = start;
-     end = start + *size;
-     while (end - buf > 4) {
-         uint32_t len = FFMIN(AV_RB32(buf), end - buf - 4);
-         uint8_t type = (buf[4] >> 1) & 0x3f;
-         buf += 4;
-         switch (type) {
-         case NAL_VPS:
-         case NAL_SPS:
-         case NAL_PPS:
-             num_ps++;
-             break;
-         default:
-             avio_wb32(pb, len);
-             avio_write(pb, buf, len);
-             break;
-         }
-         buf += len;
-     }
+         return ret;
  
+     ret   = ff_hevc_annexb2mp4(pb, buf_in, *size, filter_ps, ps_count);
      *size = avio_close_dyn_buf(pb, buf_out);
  
- end:
-     av_free(start);
-     if (ps_count)
-         *ps_count = num_ps;
      return ret;
  }
  
diff --combined libavformat/hevc.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
@@@ -71,8 -71,8 +71,8 @@@ int ff_hevc_annexb2mp4(AVIOContext *pb
   *        or to discard them (non-zero)
   * @param ps_count address of the variable where the number of discarded
   *        parameter set NAL units shall be written, may be NULL
-  * @return >=0 in case of success, a negative value corresponding to an AVERROR
-  *         code in case of failure
+  * @return the amount (in bytes) of data written in case of success, a negative
+  *         value corresponding to an AVERROR code in case of failure
   */
  int ff_hevc_annexb2mp4_buf(const uint8_t *buf_in, uint8_t **buf_out,
                             int *size, int filter_ps, int *ps_count);
@@@ -89,7 -89,7 +89,7 @@@
   * @param size size (in bytes) of the data buffer
   * @param ps_array_completeness whether all parameter sets are in the hvcC (1)
   *        or there may be additional parameter sets in the bitstream (0)
 - * @return 0 in case of success, a negative value corresponding to an AVERROR
 + * @return >=0 in case of success, a negative value corresponding to an AVERROR
   *         code in case of failure
   */
  int ff_isom_write_hvcc(AVIOContext *pb, const uint8_t *data,