Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:X0F:branches:multimedia
pipewire
pipewire-issue1482-use_fullband_in_aac.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pipewire-issue1482-use_fullband_in_aac.patch of Package pipewire
diff --git a/spa/plugins/bluez5/a2dp-codec-aac.c b/spa/plugins/bluez5/a2dp-codec-aac.c index 27b4cfbb8..40a24b87b 100644 --- a/spa/plugins/bluez5/a2dp-codec-aac.c +++ b/spa/plugins/bluez5/a2dp-codec-aac.c @@ -64,9 +64,11 @@ static int codec_fill_caps(const struct a2dp_codec *codec, uint32_t flags, static const a2dp_aac_t a2dp_aac = { .object_type = /* NOTE: AAC Long Term Prediction and AAC Scalable are - * not supported by the FDK-AAC library. */ - AAC_OBJECT_TYPE_MPEG2_AAC_LC | - AAC_OBJECT_TYPE_MPEG4_AAC_LC, + * supported by the FDK-AAC library. */ + AAC_OBJECT_TYPE_MPEG4_AAC_SCA | + AAC_OBJECT_TYPE_MPEG4_AAC_LTP | + AAC_OBJECT_TYPE_MPEG4_AAC_LC | + AAC_OBJECT_TYPE_MPEG2_AAC_LC, AAC_INIT_FREQUENCY( AAC_SAMPLING_FREQ_8000 | AAC_SAMPLING_FREQ_11025 | @@ -141,9 +143,9 @@ static int codec_select_config(const struct a2dp_codec *codec, uint32_t flags, else if (conf.object_type & AAC_OBJECT_TYPE_MPEG4_AAC_LC) conf.object_type = AAC_OBJECT_TYPE_MPEG4_AAC_LC; else if (conf.object_type & AAC_OBJECT_TYPE_MPEG4_AAC_LTP) - return -ENOTSUP; /* Not supported by FDK-AAC */ + conf.object_type = AAC_OBJECT_TYPE_MPEG4_AAC_LTP; else if (conf.object_type & AAC_OBJECT_TYPE_MPEG4_AAC_SCA) - return -ENOTSUP; /* Not supported by FDK-AAC */ + conf.object_type = AAC_OBJECT_TYPE_MPEG4_AAC_SCA; else return -ENOTSUP; @@ -250,7 +252,7 @@ static void *codec_init_props(const struct a2dp_codec *codec, const struct spa_d if (settings == NULL || (str = spa_dict_lookup(settings, "bluez5.a2dp.aac.bitratemode")) == NULL) str = "0"; - p->bitratemode = SPA_CLAMP(atoi(str), 0, 5); + p->bitratemode = SPA_CLAMP(atoi(str), 0, 8); return p; } @@ -292,14 +294,32 @@ static void *codec_init(const struct a2dp_codec *codec, uint32_t flags, if (res != AACENC_OK) goto error; - if (conf->object_type != AAC_OBJECT_TYPE_MPEG2_AAC_LC && - conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_LC) { + if (conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_SCA && + conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_LTP && + conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_LC && + conf->object_type != AAC_OBJECT_TYPE_MPEG2_AAC_LC) { res = -EINVAL; goto error; } - res = aacEncoder_SetParam(this->aacenc, AACENC_AOT, AOT_AAC_LC); - if (res != AACENC_OK) - goto error; + + if (conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_SCA) { + res = aacEncoder_SetParam(this->aacenc, AACENC_AOT, AOT_AAC_SCAL); + if (res != AACENC_OK) + goto error; + } else if (conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_LTP) { + res = aacEncoder_SetParam(this->aacenc, AACENC_AOT, AOT_AAC_LTP); + if (res != AACENC_OK) + goto error; + } else if (conf->object_type != AAC_OBJECT_TYPE_MPEG4_AAC_LC) { + res = aacEncoder_SetParam(this->aacenc, AACENC_AOT, AOT_AAC_LC); + if (res != AACENC_OK) + goto error; + } else if (conf->object_type != AAC_OBJECT_TYPE_MPEG2_AAC_LC) { + res = aacEncoder_SetParam(this->aacenc, AACENC_AOT, AOT_AAC_LC); + if (res != AACENC_OK) + goto error; + } else + return -EINVAL; res = aacEncoder_SetParam(this->aacenc, AACENC_SAMPLERATE, this->rate); if (res != AACENC_OK) @@ -309,6 +329,10 @@ static void *codec_init(const struct a2dp_codec *codec, uint32_t flags, if (res != AACENC_OK) goto error; + res = aacEncoder_SetParam(this->aacenc, AACENC_BANDWIDTH, 20000); + if (res != AACENC_OK) + goto error; + if (conf->vbr) { res = aacEncoder_SetParam(this->aacenc, AACENC_BITRATEMODE, bitratemode);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor