voaacenc: The encoder library currently only supports 1 or 2 channels

This commit is contained in:
Sebastian Dröge 2011-05-27 10:32:26 +02:00
parent e3eabb6e6a
commit b87ff1a1df

View File

@ -62,7 +62,7 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
"depth = (int) 16, " "depth = (int) 16, "
"signed = (boolean) TRUE, " "signed = (boolean) TRUE, "
"endianness = (int) BYTE_ORDER, " "endianness = (int) BYTE_ORDER, "
"rate = (int) [8000, 96000], " "channels = (int) [1, 6]") "rate = (int) [8000, 96000], " "channels = (int) [1, 2]")
); );
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
@ -71,7 +71,7 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
GST_STATIC_CAPS ("audio/mpeg, " GST_STATIC_CAPS ("audio/mpeg, "
"mpegversion = (int) 4, " "mpegversion = (int) 4, "
"rate = (int) [8000, 96000], " "rate = (int) [8000, 96000], "
"channels = (int) [1, 6], " "channels = (int) [1, 2], "
"stream-format = (string) { adts, raw }, " "base-profile = (string) lc") "stream-format = (string) { adts, raw }, " "base-profile = (string) lc")
); );
@ -614,6 +614,8 @@ static gboolean
voaacenc_core_set_parameter (GstVoAacEnc * voaacenc) voaacenc_core_set_parameter (GstVoAacEnc * voaacenc)
{ {
AACENC_PARAM params = { 0 }; AACENC_PARAM params = { 0 };
guint32 ret;
params.sampleRate = voaacenc->rate; params.sampleRate = voaacenc->rate;
params.bitRate = voaacenc->bitrate; params.bitRate = voaacenc->bitrate;
params.nChannels = voaacenc->channels; params.nChannels = voaacenc->channels;
@ -622,8 +624,12 @@ voaacenc_core_set_parameter (GstVoAacEnc * voaacenc)
} else { } else {
params.adtsUsed = 0; params.adtsUsed = 0;
} }
if (voaacenc->codec_api.SetParam (voaacenc->handle, VO_PID_AAC_ENCPARAM,
&params) != VO_ERR_NONE) { ret =
voaacenc->codec_api.SetParam (voaacenc->handle, VO_PID_AAC_ENCPARAM,
&params);
if (ret != VO_ERR_NONE) {
GST_ERROR_OBJECT (voaacenc, "Failed to set encoder parameters");
return FALSE; return FALSE;
} }
return TRUE; return TRUE;