]> granicus.if.org Git - libvpx/commitdiff
vp9-svc: Fix to svc sample encoder for write_out.
authorMarco Paniconi <marpan@google.com>
Mon, 2 Apr 2018 19:46:19 +0000 (12:46 -0700)
committerMarco Paniconi <marpan@google.com>
Mon, 2 Apr 2018 19:57:35 +0000 (12:57 -0700)
When writing out stream for spatial layer N,
make sure to include all spatial layers up to N.

Fixes an issue with the streams when frame dropping occurs.

Change-Id: I1e20b7dac6b94dcda751043541dd8a12f7df6d8c

examples/vp9_spatial_svc_encoder.c

index f49dd406e47d3b3c4277546947f69c7018ffb42f..33347c4b20e50c74f705175e03617856024e4e7b 100644 (file)
@@ -830,14 +830,17 @@ int main(int argc, const char **argv) {
                     num_layers_encoded++;
                   }
                 }
-                tot_size = 0;
                 for (sl = 0; sl < enc_cfg.ss_number_layers; ++sl) {
-                  if (cx_pkt->data.frame.spatial_layer_encoded[sl]) {
-                    tot_size += sizes[sl];
+                  unsigned int sl2;
+                  tot_size = 0;
+                  for (sl2 = 0; sl2 <= sl; ++sl2) {
+                    if (cx_pkt->data.frame.spatial_layer_encoded[sl2])
+                      tot_size += sizes[sl2];
+                  }
+                  if (tot_size > 0)
                     vpx_video_writer_write_frame(
                         outfile[sl], cx_pkt->data.frame.buf, tot_size,
                         cx_pkt->data.frame.pts);
-                  }
                 }
               }
               for (sl = 0; sl < enc_cfg.ss_number_layers; ++sl) {