[FFmpeg-cvslog] rtpdec_hevc: Reduce indentation level by returning early on errors

Martin Storsjö git at videolan.org
Tue Feb 24 23:23:17 CET 2015


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Mon Feb 23 23:17:54 2015 +0200| [f3449062a8d100ac4f703647336c32b126aa99f1] | committer: Martin Storsjö

rtpdec_hevc: Reduce indentation level by returning early on errors

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f3449062a8d100ac4f703647336c32b126aa99f1
---

 libavformat/rtpdec_hevc.c |   58 ++++++++++++++++++++++-----------------------
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/libavformat/rtpdec_hevc.c b/libavformat/rtpdec_hevc.c
index 224ccec..e04725b 100644
--- a/libavformat/rtpdec_hevc.c
+++ b/libavformat/rtpdec_hevc.c
@@ -315,39 +315,39 @@ static int hevc_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_hevc_ctx
 
         av_dlog(ctx, " FU type %d with %d bytes\n", fu_type, len);
 
-        if (len > 0) {
-            new_nal_header[0] = (rtp_pl[0] & 0x81) | (fu_type << 1);
-            new_nal_header[1] = rtp_pl[1];
-
-            /* start fragment vs. subsequent fragments */
-            if (first_fragment) {
-                if (!last_fragment) {
-                    /* create A/V packet which is big enough */
-                    if ((res = av_new_packet(pkt, sizeof(start_sequence) + sizeof(new_nal_header) + len)) < 0)
-                        return res;
-                    /* A/V packet: copy start sequence */
-                    memcpy(pkt->data, start_sequence, sizeof(start_sequence));
-                    /* A/V packet: copy new NAL header */
-                    memcpy(pkt->data + sizeof(start_sequence), new_nal_header, sizeof(new_nal_header));
-                    /* A/V packet: copy NAL unit data */
-                    memcpy(pkt->data + sizeof(start_sequence) + sizeof(new_nal_header), buf, len);
-                } else {
-                    av_log(ctx, AV_LOG_ERROR, "Illegal combination of S and E bit in RTP/HEVC packet\n");
-                    res = AVERROR_INVALIDDATA;
-                }
-            } else {
-                /* create A/V packet */
-                if ((res = av_new_packet(pkt, len)) < 0)
-                    return res;
-                /* A/V packet: copy NAL unit data */
-                memcpy(pkt->data, buf, len);
-            }
-        } else {
+        if (len <= 0) {
             /* sanity check for size of input packet: 1 byte payload at least */
             av_log(ctx, AV_LOG_ERROR,
                    "Too short RTP/HEVC packet, got %d bytes of NAL unit type %d\n",
                    len, nal_type);
-            res = AVERROR_INVALIDDATA;
+            return AVERROR_INVALIDDATA;
+        }
+
+        if (first_fragment && last_fragment) {
+            av_log(ctx, AV_LOG_ERROR, "Illegal combination of S and E bit in RTP/HEVC packet\n");
+            return AVERROR_INVALIDDATA;
+        }
+
+        new_nal_header[0] = (rtp_pl[0] & 0x81) | (fu_type << 1);
+        new_nal_header[1] = rtp_pl[1];
+
+        /* start fragment vs. subsequent fragments */
+        if (first_fragment) {
+            /* create A/V packet which is big enough */
+            if ((res = av_new_packet(pkt, sizeof(start_sequence) + sizeof(new_nal_header) + len)) < 0)
+                return res;
+            /* A/V packet: copy start sequence */
+            memcpy(pkt->data, start_sequence, sizeof(start_sequence));
+            /* A/V packet: copy new NAL header */
+            memcpy(pkt->data + sizeof(start_sequence), new_nal_header, sizeof(new_nal_header));
+            /* A/V packet: copy NAL unit data */
+            memcpy(pkt->data + sizeof(start_sequence) + sizeof(new_nal_header), buf, len);
+        } else {
+            /* create A/V packet */
+            if ((res = av_new_packet(pkt, len)) < 0)
+                return res;
+            /* A/V packet: copy NAL unit data */
+            memcpy(pkt->data, buf, len);
         }
 
         break;



More information about the ffmpeg-cvslog mailing list