[FFmpeg-devel] [PATCH] Fix roundup issue #2386

Michael Niedermayer michaelni
Thu Mar 3 12:50:04 CET 2011


On Wed, Mar 02, 2011 at 08:44:20PM -0500, Sean McGovern wrote:
> Should an AVC-1 in MP4 stream not contain SPS or PPS NAL units,
> this BSF is then unable to allocate an output buffer for the
> modified stream. Warn that the resulting stream may be unplayable.
> ---
>  libavcodec/h264_mp4toannexb_bsf.c |   20 ++++++++++++++++++--
>  1 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c
> index d4a7f31..3e670de 100644
> --- a/libavcodec/h264_mp4toannexb_bsf.c
> +++ b/libavcodec/h264_mp4toannexb_bsf.c
> @@ -75,7 +75,7 @@ static int h264_mp4toannexb_filter(AVBitStreamFilterContext *bsfc,
>      if (!ctx->extradata_parsed) {
>          uint16_t unit_size;
>          uint64_t total_size = 0;
> -        uint8_t *out = NULL, unit_nb, sps_done = 0;
> +        uint8_t *out = NULL, unit_nb, sps_done = 0, sps_seen = 0, pps_seen = 0;
>          const uint8_t *extradata = avctx->extradata+4;
>          static const uint8_t nalu_header[4] = {0, 0, 0, 1};
>  
> @@ -89,7 +89,15 @@ static int h264_mp4toannexb_filter(AVBitStreamFilterContext *bsfc,
>          if (!unit_nb) {
>              unit_nb = *extradata++; /* number of pps unit(s) */
>              sps_done++;
> +            
> +            if (unit_nb)
> +                pps_seen = 1;

we cant commit trailing whitespace


[...]
> +
>          while (unit_nb--) {
>              void *tmp;
>  
> @@ -114,7 +122,15 @@ static int h264_mp4toannexb_filter(AVBitStreamFilterContext *bsfc,
>                  unit_nb = *extradata++; /* number of pps unit(s) */
>          }
>  
> -        memset(out + total_size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
> +        if(out)
> +            memset(out + total_size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
> +        else {
> +            if (!sps_seen)
> +                av_log(avctx, AV_LOG_WARNING, "Warning: SPS NALU missing or invalid. The resulting stream may not play.\n");
> +            if (!pps_seen)
> +                av_log(avctx, AV_LOG_WARNING, "Warning: PPS NALU missing or invalid. The resulting stream may not play.\n");
> +        }

why are these under else ?

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Many that live deserve death. And some that die deserve life. Can you give
it to them? Then do not be too eager to deal out death in judgement. For
even the very wise cannot see all ends. -- Gandalf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20110303/9f707c72/attachment.pgp>



More information about the ffmpeg-devel mailing list