On Thu, Aug 16, 2018 at 03:07:50PM +0800, Linjie Fu wrote: > Fix the live stream encoding problem using qsv when the first frame > is not an IDR frame. > > Add the extradata information when the IDR frame is missing in the > first GOP. > > Fix the bug reported in ticket #6418. > > [PATCH V2] Fix the coding style. > > Signed-off-by: Linjie Fu <linjie...@intel.com> > --- > libavcodec/h264_mp4toannexb_bsf.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/libavcodec/h264_mp4toannexb_bsf.c > b/libavcodec/h264_mp4toannexb_bsf.c > index 794c82e650..fbb9f1fe20 100644 > --- a/libavcodec/h264_mp4toannexb_bsf.c > +++ b/libavcodec/h264_mp4toannexb_bsf.c > @@ -33,6 +33,7 @@ typedef struct H264BSFContext { > int32_t pps_offset; > uint8_t length_size; > uint8_t new_idr; > + uint8_t new_nal_slice; > uint8_t idr_sps_seen; > uint8_t idr_pps_seen; > int extradata_parsed; > @@ -243,6 +244,7 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, > AVPacket *out) > buf, nal_size, 1)) < 0) > goto fail; > s->new_idr = 0; > + s->new_nal_slice = 1; > /* if only SPS has been seen, also insert PPS */ > } else if (s->new_idr && unit_type == H264_NAL_IDR_SLICE && > s->idr_sps_seen && !s->idr_pps_seen) { > if (s->pps_offset == -1) { > @@ -253,6 +255,12 @@ static int h264_mp4toannexb_filter(AVBSFContext *ctx, > AVPacket *out) > ctx->par_out->extradata + > s->pps_offset, ctx->par_out->extradata_size - s->pps_offset, > buf, nal_size, 1)) < 0) > goto fail; > + } else if (s->new_idr && !s->new_nal_slice && H264_NAL_SLICE == > unit_type && !s->idr_sps_seen && !s->idr_pps_seen){ > + av_log(ctx, AV_LOG_WARNING, "first H264_NAL_SLICE when there is > no IDR.\n"); > + if ((ret = alloc_and_copy(out, ctx->par_out->extradata, > ctx->par_out->extradata_size, buf, nal_size, 1)) < 0) > + goto fail; > + s->new_nal_slice = 1; > + s->new_idr = 0;
The commit message is insufficient this adds the extradata if new_idr is set not just in the absence of IDR at the begin also teh addded code is identical to the first if() just a different NAL is checked for, this code duplication is not a good idea in already complex code thx [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB When you are offended at any man's fault, turn to yourself and study your own failings. Then you will forget your anger. -- Epictetus
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel