On 2014-03-10 17:03:13 +0100, Tim Walker wrote:
> Use ff_hevc_annexb2mp4 instead of duplicating
> its functionality, and update the documentation
> to match the new behavior.
> ---
> 
> Suggested by Janne on IRC.
> 
>  libavformat/hevc.c | 43 +++----------------------------------------
>  libavformat/hevc.h |  4 ++--
>  2 files changed, 5 insertions(+), 42 deletions(-)
> 
> diff --git a/libavformat/hevc.c b/libavformat/hevc.c
> index dc45fbf..e3be20c 100644
> --- a/libavformat/hevc.c
> +++ b/libavformat/hevc.c
> @@ -1066,52 +1066,15 @@ int ff_hevc_annexb2mp4_buf(const uint8_t *buf_in, 
> uint8_t **buf_out,
>                             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:
> -    free(start);
> -    if (ps_count)
> -        *ps_count = num_ps;
>      return ret;
>  }
>  
> diff --git a/libavformat/hevc.h b/libavformat/hevc.h
> index f394342..03c43bd 100644
> --- a/libavformat/hevc.h
> +++ b/libavformat/hevc.h
> @@ -71,8 +71,8 @@ int ff_hevc_annexb2mp4(AVIOContext *pb, const uint8_t 
> *buf_in,
>   *        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);
> -- 

ok

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to