int i, ret;
GetBitContext gbc = *gb;
- if ((i = ff_mpeg4audio_get_config_gb(m4ac, &gbc, sync_extension)) < 0)
+ if ((i = ff_mpeg4audio_get_config_gb(m4ac, &gbc, sync_extension, avctx)) < 0)
return AVERROR_INVALIDDATA;
if (m4ac->sampling_index > 12) {
}
int ff_mpeg4audio_get_config_gb(MPEG4AudioConfig *c, GetBitContext *gb,
- int sync_extension)
+ int sync_extension, void *logctx)
{
int specific_config_bitindex, ret;
int start_bit_index = get_bits_count(gb);
return specific_config_bitindex - start_bit_index;
}
+#if LIBAVCODEC_VERSION_MAJOR < 59
int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
int bit_size, int sync_extension)
{
if (ret < 0)
return ret;
- return ff_mpeg4audio_get_config_gb(c, &gb, sync_extension);
+ return ff_mpeg4audio_get_config_gb(c, &gb, sync_extension, NULL);
+}
+#endif
+
+int avpriv_mpeg4audio_get_config2(MPEG4AudioConfig *c, const uint8_t *buf,
+ int size, int sync_extension, void *logctx)
+{
+ GetBitContext gb;
+ int ret;
+
+ if (size <= 0)
+ return AVERROR_INVALIDDATA;
+
+ ret = init_get_bits8(&gb, buf, size);
+ if (ret < 0)
+ return ret;
+
+ return ff_mpeg4audio_get_config_gb(c, &gb, sync_extension, logctx);
}
* @param[in] c MPEG4AudioConfig structure to fill.
* @param[in] gb Extradata from container.
* @param[in] sync_extension look for a sync extension after config if true.
+ * @param[in] logctx opaque struct starting with an AVClass element, used for logging.
* @return On error -1 is returned, on success AudioSpecificConfig bit index in extradata.
*/
int ff_mpeg4audio_get_config_gb(MPEG4AudioConfig *c, GetBitContext *gb,
- int sync_extension);
+ int sync_extension, void *logctx);
+#if LIBAVCODEC_VERSION_MAJOR < 59
/**
* Parse MPEG-4 systems extradata from a raw buffer to retrieve audio configuration.
* @param[in] c MPEG4AudioConfig structure to fill.
*/
int avpriv_mpeg4audio_get_config(MPEG4AudioConfig *c, const uint8_t *buf,
int bit_size, int sync_extension);
+#endif
+
+/**
+ * Parse MPEG-4 systems extradata from a raw buffer to retrieve audio configuration.
+ * @param[in] c MPEG4AudioConfig structure to fill.
+ * @param[in] buf Extradata from container.
+ * @param[in] size Extradata size in bytes.
+ * @param[in] sync_extension look for a sync extension after config if true.
+ * @param[in] logctx opaque struct starting with an AVClass element, used for logging.
+ * @return negative AVERROR code on error, AudioSpecificConfig bit index in extradata on success.
+ */
+int avpriv_mpeg4audio_get_config2(MPEG4AudioConfig *c, const uint8_t *buf,
+ int size, int sync_extension, void *logctx);
enum AudioObjectType {
AOT_NULL,