- /*
- * We use explicit/hierarchical signaling for LOAS.
- * Other than that, we request implicit signaling to FDK library, then
- * append explicit/backward-compatible signaling to ASC in case of MP4FF.
- *
- * Explicit/backward-compatible signaling of SBR is the most recommended
- * way in MPEG4 part3 spec, and seems the only way supported by iTunes.
- * Since FDK library does not support it, we have to do it on our side.
- */
- params.sbr_signaling = (params.transport_format == TT_MP4_LOAS) ? 2 : 0;
+ sbr_mode = aacenc_is_sbr_active((aacenc_param_t*)¶ms);
+ if (sbr_mode && !aacenc_is_sbr_ratio_available()) {
+ fprintf(stderr, "WARNING: Only dual-rate SBR is available "
+ "for this version\n");
+ params.sbr_ratio = 2;
+ }
+ scale_shift = aacenc_is_dual_rate_sbr((aacenc_param_t*)¶ms);
+ params.sbr_signaling =
+ (params.transport_format == TT_MP4_LOAS) ? 2 :
+ (params.transport_format == TT_MP4_RAW) ? 1 : 0;
+ if (sbr_mode && !scale_shift)
+ params.sbr_signaling = 2;