[svc] Fix issue for setting layers through ffmpeg
authorMinghai Shang <minghai@google.com>
Thu, 27 Mar 2014 20:35:27 +0000 (13:35 -0700)
committerMinghai Shang <minghai@google.com>
Thu, 27 Mar 2014 22:51:34 +0000 (15:51 -0700)
Root cause is number of spatial layers is set through
parse_options() when running from ffmpeg.

Change-Id: Icd79cd13fd76e8712150d803838a33fee9117dcb

vpx/src/svc_encodeframe.c

index d4f4e9f..76aacd2 100644 (file)
@@ -524,9 +524,6 @@ vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx,
             svc_ctx->spatial_layers);
     return VPX_CODEC_INVALID_PARAM;
   }
-  // use SvcInternal value for number of layers to enable forcing single layer
-  // for first frame
-  si->layers = svc_ctx->spatial_layers;
 
   res = parse_quantizer_values(svc_ctx, si->quantizers, 0);
   if (res != VPX_CODEC_OK) return res;
@@ -538,10 +535,13 @@ vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx,
   res = parse_scale_factors(svc_ctx, si->scale_factors);
   if (res != VPX_CODEC_OK) return res;
 
-  // parse aggregate command line options
+  // Parse aggregate command line options. Options must start with
+  // "layers=xx" then followed by other options
   res = parse_options(svc_ctx, si->options);
   if (res != VPX_CODEC_OK) return res;
 
+  si->layers = svc_ctx->spatial_layers;
+
   // Assign target bitrate for each layer. We calculate the ratio
   // from the resolution for now.
   // TODO(Minghai): Optimize the mechanism of allocating bits after