Browse code

avformat/avc: refactor ff_isom_write_avcc

This lets us remove one indentation level.

Signed-off-by: James Almer <jamrial@gmail.com>

James Almer authored on 2017/11/25 07:45:54
Showing 1 changed files
... ...
@@ -105,17 +105,22 @@ int ff_avc_parse_nal_units_buf(const uint8_t *buf_in, uint8_t **buf, int *size)
105 105
 
106 106
 int ff_isom_write_avcc(AVIOContext *pb, const uint8_t *data, int len)
107 107
 {
108
+    uint8_t *buf = NULL, *end, *start = NULL;
109
+    uint8_t *sps = NULL, *pps = NULL;
110
+    uint32_t sps_size = 0, pps_size = 0;
111
+    int ret;
112
+
108 113
     if (len <= 6)
109 114
         return AVERROR_INVALIDDATA;
110 115
 
111 116
         /* check for H.264 start code */
112
-        if (AV_RB32(data) == 0x00000001 ||
113
-            AV_RB24(data) == 0x000001) {
114
-            uint8_t *buf=NULL, *end, *start;
115
-            uint32_t sps_size=0, pps_size=0;
116
-            uint8_t *sps=0, *pps=0;
117
+        if (AV_RB32(data) != 0x00000001 &&
118
+            AV_RB24(data) != 0x000001) {
119
+            avio_write(pb, data, len);
120
+            return 0;
121
+        }
117 122
 
118
-            int ret = ff_avc_parse_nal_units_buf(data, &buf, &len);
123
+            ret = ff_avc_parse_nal_units_buf(data, &buf, &len);
119 124
             if (ret < 0)
120 125
                 return ret;
121 126
             start = buf;
... ...
@@ -156,9 +161,6 @@ int ff_isom_write_avcc(AVIOContext *pb, const uint8_t *data, int len)
156 156
             avio_wb16(pb, pps_size);
157 157
             avio_write(pb, pps, pps_size);
158 158
             av_free(start);
159
-        } else {
160
-            avio_write(pb, data, len);
161
-        }
162 159
     return 0;
163 160
 }
164 161