On Tue, Nov 4, 2014 at 3:41 PM, Luca Barbato <[email protected]> wrote:
> ---
>
> Now with local vars.
>
>  libavcodec/utils.c | 50 +++++++++++++++++++++-----------------------------
>  1 file changed, 21 insertions(+), 29 deletions(-)
>
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index 95d2193..42facd1 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -560,9 +560,15 @@ FF_ENABLE_DEPRECATION_WARNINGS
>  int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame)
>  {
>      AVPacket *pkt = avctx->internal->pkt;
> -    uint8_t *packet_sd;
> -    int size;
> -    AVFrameSideData *frame_sd;
> +    int i;
> +    struct {
> +        enum AVPacketSideDataType packet;
> +        enum AVFrameSideDataType frame;
> +    } sd[] = {
> +        { AV_PKT_DATA_REPLAYGAIN ,   AV_FRAME_DATA_REPLAYGAIN },
> +        { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX },
> +        { AV_PKT_DATA_STEREO3D,      AV_FRAME_DATA_STEREO3D },
> +    };
>
>      frame->color_primaries = avctx->color_primaries;
>      frame->color_trc       = avctx->color_trc;
> @@ -578,32 +584,18 @@ int ff_decode_frame_props(AVCodecContext *avctx, 
> AVFrame *frame)
>
>      frame->pkt_pts = pkt->pts;
>
> -    /* copy the replaygain data to the output frame */
> -    packet_sd = av_packet_get_side_data(pkt, AV_PKT_DATA_REPLAYGAIN, &size);
> -    if (packet_sd) {
> -        frame_sd = av_frame_new_side_data(frame, AV_FRAME_DATA_REPLAYGAIN, 
> size);
> -        if (!frame_sd)
> -            return AVERROR(ENOMEM);
> -
> -        memcpy(frame_sd->data, packet_sd, size);
> -    }
> -    /* copy the displaymatrix to the output frame */
> -    packet_sd = av_packet_get_side_data(pkt, AV_PKT_DATA_DISPLAYMATRIX, 
> &size);
> -    if (packet_sd) {
> -        frame_sd = av_frame_new_side_data(frame, 
> AV_FRAME_DATA_DISPLAYMATRIX, size);
> -        if (!frame_sd)
> -            return AVERROR(ENOMEM);
> -
> -        memcpy(frame_sd->data, packet_sd, size);
> -    }
> -    /* copy the stereo3d format to the output frame */
> -    packet_sd = av_packet_get_side_data(pkt, AV_PKT_DATA_STEREO3D, &size);
> -    if (packet_sd) {
> -        frame_sd = av_frame_new_side_data(frame, AV_FRAME_DATA_STEREO3D, 
> size);
> -        if (!frame_sd)
> -            return AVERROR(ENOMEM);
> -
> -        memcpy(frame_sd->data, packet_sd, size);
> +    for (i = 0; i < FF_ARRAY_ELEMS(sd); i++) {
> +        int size;
> +        uint8_t *packet_sd = av_packet_get_side_data(pkt, sd[i].packet, 
> &size);
> +        if (packet_sd) {
> +            AVFrameSideData *frame_sd = av_frame_new_side_data(frame,
> +                                                               sd[i].frame,
> +                                                               size);
> +            if (!frame_sd)
> +                return AVERROR(ENOMEM);
> +
> +            memcpy(frame_sd->data, packet_sd, size);
> +        }
>      }
>
>      return 0;

LGTM

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

Reply via email to