[FFmpeg-devel] [PATCH 11/18] cbs_h264, h264_metadata: Deleting SEI messages never fails
James Almer
jamrial at gmail.com
Mon Jun 17 16:00:34 EEST 2019
On 6/17/2019 12:42 AM, Andreas Rheinhardt wrote:
> Deleting a unit from a fragment in CBS only fails if there is no unit
> in the fragment corresponding to the position given as argument to
> ff_cbs_delete_unit. Given that ff_cbs_h264_delete_sei_message asserts
> this to be so, we know that the call to ff_cbs_delete_unit can never
> fail and hence ff_cbs_h264_delete_sei_message doesn't need a return
> value at all. The existing checks for these return values can be deleted.
Same here. A single line saying it can't fail within the current loop
constrains or something like that should be enough.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> libavcodec/cbs_h264.h | 8 ++++----
> libavcodec/cbs_h2645.c | 12 +++++-------
> libavcodec/h264_metadata_bsf.c | 21 +++++----------------
> 3 files changed, 14 insertions(+), 27 deletions(-)
>
> diff --git a/libavcodec/cbs_h264.h b/libavcodec/cbs_h264.h
> index a31be298ba..f63c19ffc0 100644
> --- a/libavcodec/cbs_h264.h
> +++ b/libavcodec/cbs_h264.h
> @@ -479,9 +479,9 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
> * Deletes from nal_unit, which must be an SEI NAL unit. If this is the
> * last message in nal_unit, also deletes it from access_unit.
> */
> -int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> - CodedBitstreamFragment *access_unit,
> - CodedBitstreamUnit *nal_unit,
> - int position);
> +void ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> + CodedBitstreamFragment *access_unit,
> + CodedBitstreamUnit *nal_unit,
> + int position);
>
> #endif /* AVCODEC_CBS_H264_H */
> diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
> index 0456937710..a3bad83736 100644
> --- a/libavcodec/cbs_h2645.c
> +++ b/libavcodec/cbs_h2645.c
> @@ -1644,10 +1644,10 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx,
> return 0;
> }
>
> -int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> - CodedBitstreamFragment *au,
> - CodedBitstreamUnit *nal,
> - int position)
> +void ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> + CodedBitstreamFragment *au,
> + CodedBitstreamUnit *nal,
> + int position)
> {
> H264RawSEI *sei = nal->content;
>
> @@ -1664,7 +1664,7 @@ int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> }
> av_assert0(i < au->nb_units && "NAL unit not in access unit.");
>
> - return ff_cbs_delete_unit(ctx, au, i);
> + ff_cbs_delete_unit(ctx, au, i);
> } else {
> cbs_h264_free_sei_payload(&sei->payload[position]);
>
> @@ -1672,7 +1672,5 @@ int ff_cbs_h264_delete_sei_message(CodedBitstreamContext *ctx,
> memmove(sei->payload + position,
> sei->payload + position + 1,
> (sei->payload_count - position) * sizeof(*sei->payload));
> -
> - return 0;
> }
> }
> diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c
> index d05b75be14..c7969f1152 100644
> --- a/libavcodec/h264_metadata_bsf.c
> +++ b/libavcodec/h264_metadata_bsf.c
> @@ -438,15 +438,9 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt)
>
> for (j = sei->payload_count - 1; j >= 0; j--) {
> if (sei->payload[j].payload_type ==
> - H264_SEI_TYPE_FILLER_PAYLOAD) {
> - err = ff_cbs_h264_delete_sei_message(ctx->cbc, au,
> - &au->units[i], j);
> - if (err < 0) {
> - av_log(bsf, AV_LOG_ERROR, "Failed to delete "
> - "filler SEI message.\n");
> - goto fail;
> - }
> - }
> + H264_SEI_TYPE_FILLER_PAYLOAD)
> + ff_cbs_h264_delete_sei_message(ctx->cbc, au,
> + &au->units[i], j);
> }
> }
> }
> @@ -470,13 +464,8 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt)
>
> if (ctx->display_orientation == REMOVE ||
> ctx->display_orientation == INSERT) {
> - err = ff_cbs_h264_delete_sei_message(ctx->cbc, au,
> - &au->units[i], j);
> - if (err < 0) {
> - av_log(bsf, AV_LOG_ERROR, "Failed to delete "
> - "display orientation SEI message.\n");
> - goto fail;
> - }
> + ff_cbs_h264_delete_sei_message(ctx->cbc, au,
> + &au->units[i], j);
> continue;
> }
>
>
More information about the ffmpeg-devel
mailing list