1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318 |
- /*[clinic input]
- preserve
- [clinic start generated code]*/
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # include "pycore_gc.h" // PyGC_Head
- # include "pycore_runtime.h" // _Py_ID()
- #endif
- PyDoc_STRVAR(audioop_getsample__doc__,
- "getsample($module, fragment, width, index, /)\n"
- "--\n"
- "\n"
- "Return the value of sample index from the fragment.");
- #define AUDIOOP_GETSAMPLE_METHODDEF \
- {"getsample", _PyCFunction_CAST(audioop_getsample), METH_FASTCALL, audioop_getsample__doc__},
- static PyObject *
- audioop_getsample_impl(PyObject *module, Py_buffer *fragment, int width,
- Py_ssize_t index);
- static PyObject *
- audioop_getsample(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- Py_ssize_t index;
- if (!_PyArg_CheckPositional("getsample", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("getsample", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- {
- Py_ssize_t ival = -1;
- PyObject *iobj = _PyNumber_Index(args[2]);
- if (iobj != NULL) {
- ival = PyLong_AsSsize_t(iobj);
- Py_DECREF(iobj);
- }
- if (ival == -1 && PyErr_Occurred()) {
- goto exit;
- }
- index = ival;
- }
- return_value = audioop_getsample_impl(module, &fragment, width, index);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_max__doc__,
- "max($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the maximum of the absolute value of all samples in a fragment.");
- #define AUDIOOP_MAX_METHODDEF \
- {"max", _PyCFunction_CAST(audioop_max), METH_FASTCALL, audioop_max__doc__},
- static PyObject *
- audioop_max_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_max(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("max", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("max", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_max_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_minmax__doc__,
- "minmax($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the minimum and maximum values of all samples in the sound fragment.");
- #define AUDIOOP_MINMAX_METHODDEF \
- {"minmax", _PyCFunction_CAST(audioop_minmax), METH_FASTCALL, audioop_minmax__doc__},
- static PyObject *
- audioop_minmax_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_minmax(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("minmax", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("minmax", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_minmax_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_avg__doc__,
- "avg($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the average over all samples in the fragment.");
- #define AUDIOOP_AVG_METHODDEF \
- {"avg", _PyCFunction_CAST(audioop_avg), METH_FASTCALL, audioop_avg__doc__},
- static PyObject *
- audioop_avg_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_avg(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("avg", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("avg", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_avg_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_rms__doc__,
- "rms($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the root-mean-square of the fragment, i.e. sqrt(sum(S_i^2)/n).");
- #define AUDIOOP_RMS_METHODDEF \
- {"rms", _PyCFunction_CAST(audioop_rms), METH_FASTCALL, audioop_rms__doc__},
- static PyObject *
- audioop_rms_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_rms(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("rms", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("rms", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_rms_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_findfit__doc__,
- "findfit($module, fragment, reference, /)\n"
- "--\n"
- "\n"
- "Try to match reference as well as possible to a portion of fragment.");
- #define AUDIOOP_FINDFIT_METHODDEF \
- {"findfit", _PyCFunction_CAST(audioop_findfit), METH_FASTCALL, audioop_findfit__doc__},
- static PyObject *
- audioop_findfit_impl(PyObject *module, Py_buffer *fragment,
- Py_buffer *reference);
- static PyObject *
- audioop_findfit(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- Py_buffer reference = {NULL, NULL};
- if (!_PyArg_CheckPositional("findfit", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("findfit", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- if (PyObject_GetBuffer(args[1], &reference, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&reference, 'C')) {
- _PyArg_BadArgument("findfit", "argument 2", "contiguous buffer", args[1]);
- goto exit;
- }
- return_value = audioop_findfit_impl(module, &fragment, &reference);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- /* Cleanup for reference */
- if (reference.obj) {
- PyBuffer_Release(&reference);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_findfactor__doc__,
- "findfactor($module, fragment, reference, /)\n"
- "--\n"
- "\n"
- "Return a factor F such that rms(add(fragment, mul(reference, -F))) is minimal.");
- #define AUDIOOP_FINDFACTOR_METHODDEF \
- {"findfactor", _PyCFunction_CAST(audioop_findfactor), METH_FASTCALL, audioop_findfactor__doc__},
- static PyObject *
- audioop_findfactor_impl(PyObject *module, Py_buffer *fragment,
- Py_buffer *reference);
- static PyObject *
- audioop_findfactor(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- Py_buffer reference = {NULL, NULL};
- if (!_PyArg_CheckPositional("findfactor", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("findfactor", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- if (PyObject_GetBuffer(args[1], &reference, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&reference, 'C')) {
- _PyArg_BadArgument("findfactor", "argument 2", "contiguous buffer", args[1]);
- goto exit;
- }
- return_value = audioop_findfactor_impl(module, &fragment, &reference);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- /* Cleanup for reference */
- if (reference.obj) {
- PyBuffer_Release(&reference);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_findmax__doc__,
- "findmax($module, fragment, length, /)\n"
- "--\n"
- "\n"
- "Search fragment for a slice of specified number of samples with maximum energy.");
- #define AUDIOOP_FINDMAX_METHODDEF \
- {"findmax", _PyCFunction_CAST(audioop_findmax), METH_FASTCALL, audioop_findmax__doc__},
- static PyObject *
- audioop_findmax_impl(PyObject *module, Py_buffer *fragment,
- Py_ssize_t length);
- static PyObject *
- audioop_findmax(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- Py_ssize_t length;
- if (!_PyArg_CheckPositional("findmax", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("findmax", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- {
- Py_ssize_t ival = -1;
- PyObject *iobj = _PyNumber_Index(args[1]);
- if (iobj != NULL) {
- ival = PyLong_AsSsize_t(iobj);
- Py_DECREF(iobj);
- }
- if (ival == -1 && PyErr_Occurred()) {
- goto exit;
- }
- length = ival;
- }
- return_value = audioop_findmax_impl(module, &fragment, length);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_avgpp__doc__,
- "avgpp($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the average peak-peak value over all samples in the fragment.");
- #define AUDIOOP_AVGPP_METHODDEF \
- {"avgpp", _PyCFunction_CAST(audioop_avgpp), METH_FASTCALL, audioop_avgpp__doc__},
- static PyObject *
- audioop_avgpp_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_avgpp(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("avgpp", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("avgpp", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_avgpp_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_maxpp__doc__,
- "maxpp($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the maximum peak-peak value in the sound fragment.");
- #define AUDIOOP_MAXPP_METHODDEF \
- {"maxpp", _PyCFunction_CAST(audioop_maxpp), METH_FASTCALL, audioop_maxpp__doc__},
- static PyObject *
- audioop_maxpp_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_maxpp(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("maxpp", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("maxpp", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_maxpp_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_cross__doc__,
- "cross($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Return the number of zero crossings in the fragment passed as an argument.");
- #define AUDIOOP_CROSS_METHODDEF \
- {"cross", _PyCFunction_CAST(audioop_cross), METH_FASTCALL, audioop_cross__doc__},
- static PyObject *
- audioop_cross_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_cross(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("cross", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("cross", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_cross_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_mul__doc__,
- "mul($module, fragment, width, factor, /)\n"
- "--\n"
- "\n"
- "Return a fragment that has all samples in the original fragment multiplied by the floating-point value factor.");
- #define AUDIOOP_MUL_METHODDEF \
- {"mul", _PyCFunction_CAST(audioop_mul), METH_FASTCALL, audioop_mul__doc__},
- static PyObject *
- audioop_mul_impl(PyObject *module, Py_buffer *fragment, int width,
- double factor);
- static PyObject *
- audioop_mul(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- double factor;
- if (!_PyArg_CheckPositional("mul", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("mul", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_CheckExact(args[2])) {
- factor = PyFloat_AS_DOUBLE(args[2]);
- }
- else
- {
- factor = PyFloat_AsDouble(args[2]);
- if (factor == -1.0 && PyErr_Occurred()) {
- goto exit;
- }
- }
- return_value = audioop_mul_impl(module, &fragment, width, factor);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_tomono__doc__,
- "tomono($module, fragment, width, lfactor, rfactor, /)\n"
- "--\n"
- "\n"
- "Convert a stereo fragment to a mono fragment.");
- #define AUDIOOP_TOMONO_METHODDEF \
- {"tomono", _PyCFunction_CAST(audioop_tomono), METH_FASTCALL, audioop_tomono__doc__},
- static PyObject *
- audioop_tomono_impl(PyObject *module, Py_buffer *fragment, int width,
- double lfactor, double rfactor);
- static PyObject *
- audioop_tomono(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- double lfactor;
- double rfactor;
- if (!_PyArg_CheckPositional("tomono", nargs, 4, 4)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("tomono", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_CheckExact(args[2])) {
- lfactor = PyFloat_AS_DOUBLE(args[2]);
- }
- else
- {
- lfactor = PyFloat_AsDouble(args[2]);
- if (lfactor == -1.0 && PyErr_Occurred()) {
- goto exit;
- }
- }
- if (PyFloat_CheckExact(args[3])) {
- rfactor = PyFloat_AS_DOUBLE(args[3]);
- }
- else
- {
- rfactor = PyFloat_AsDouble(args[3]);
- if (rfactor == -1.0 && PyErr_Occurred()) {
- goto exit;
- }
- }
- return_value = audioop_tomono_impl(module, &fragment, width, lfactor, rfactor);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_tostereo__doc__,
- "tostereo($module, fragment, width, lfactor, rfactor, /)\n"
- "--\n"
- "\n"
- "Generate a stereo fragment from a mono fragment.");
- #define AUDIOOP_TOSTEREO_METHODDEF \
- {"tostereo", _PyCFunction_CAST(audioop_tostereo), METH_FASTCALL, audioop_tostereo__doc__},
- static PyObject *
- audioop_tostereo_impl(PyObject *module, Py_buffer *fragment, int width,
- double lfactor, double rfactor);
- static PyObject *
- audioop_tostereo(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- double lfactor;
- double rfactor;
- if (!_PyArg_CheckPositional("tostereo", nargs, 4, 4)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("tostereo", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (PyFloat_CheckExact(args[2])) {
- lfactor = PyFloat_AS_DOUBLE(args[2]);
- }
- else
- {
- lfactor = PyFloat_AsDouble(args[2]);
- if (lfactor == -1.0 && PyErr_Occurred()) {
- goto exit;
- }
- }
- if (PyFloat_CheckExact(args[3])) {
- rfactor = PyFloat_AS_DOUBLE(args[3]);
- }
- else
- {
- rfactor = PyFloat_AsDouble(args[3]);
- if (rfactor == -1.0 && PyErr_Occurred()) {
- goto exit;
- }
- }
- return_value = audioop_tostereo_impl(module, &fragment, width, lfactor, rfactor);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_add__doc__,
- "add($module, fragment1, fragment2, width, /)\n"
- "--\n"
- "\n"
- "Return a fragment which is the addition of the two samples passed as parameters.");
- #define AUDIOOP_ADD_METHODDEF \
- {"add", _PyCFunction_CAST(audioop_add), METH_FASTCALL, audioop_add__doc__},
- static PyObject *
- audioop_add_impl(PyObject *module, Py_buffer *fragment1,
- Py_buffer *fragment2, int width);
- static PyObject *
- audioop_add(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment1 = {NULL, NULL};
- Py_buffer fragment2 = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("add", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment1, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment1, 'C')) {
- _PyArg_BadArgument("add", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- if (PyObject_GetBuffer(args[1], &fragment2, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment2, 'C')) {
- _PyArg_BadArgument("add", "argument 2", "contiguous buffer", args[1]);
- goto exit;
- }
- width = _PyLong_AsInt(args[2]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_add_impl(module, &fragment1, &fragment2, width);
- exit:
- /* Cleanup for fragment1 */
- if (fragment1.obj) {
- PyBuffer_Release(&fragment1);
- }
- /* Cleanup for fragment2 */
- if (fragment2.obj) {
- PyBuffer_Release(&fragment2);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_bias__doc__,
- "bias($module, fragment, width, bias, /)\n"
- "--\n"
- "\n"
- "Return a fragment that is the original fragment with a bias added to each sample.");
- #define AUDIOOP_BIAS_METHODDEF \
- {"bias", _PyCFunction_CAST(audioop_bias), METH_FASTCALL, audioop_bias__doc__},
- static PyObject *
- audioop_bias_impl(PyObject *module, Py_buffer *fragment, int width, int bias);
- static PyObject *
- audioop_bias(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- int bias;
- if (!_PyArg_CheckPositional("bias", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("bias", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- bias = _PyLong_AsInt(args[2]);
- if (bias == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_bias_impl(module, &fragment, width, bias);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_reverse__doc__,
- "reverse($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Reverse the samples in a fragment and returns the modified fragment.");
- #define AUDIOOP_REVERSE_METHODDEF \
- {"reverse", _PyCFunction_CAST(audioop_reverse), METH_FASTCALL, audioop_reverse__doc__},
- static PyObject *
- audioop_reverse_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_reverse(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("reverse", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("reverse", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_reverse_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_byteswap__doc__,
- "byteswap($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Convert big-endian samples to little-endian and vice versa.");
- #define AUDIOOP_BYTESWAP_METHODDEF \
- {"byteswap", _PyCFunction_CAST(audioop_byteswap), METH_FASTCALL, audioop_byteswap__doc__},
- static PyObject *
- audioop_byteswap_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_byteswap(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("byteswap", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("byteswap", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_byteswap_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_lin2lin__doc__,
- "lin2lin($module, fragment, width, newwidth, /)\n"
- "--\n"
- "\n"
- "Convert samples between 1-, 2-, 3- and 4-byte formats.");
- #define AUDIOOP_LIN2LIN_METHODDEF \
- {"lin2lin", _PyCFunction_CAST(audioop_lin2lin), METH_FASTCALL, audioop_lin2lin__doc__},
- static PyObject *
- audioop_lin2lin_impl(PyObject *module, Py_buffer *fragment, int width,
- int newwidth);
- static PyObject *
- audioop_lin2lin(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- int newwidth;
- if (!_PyArg_CheckPositional("lin2lin", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("lin2lin", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- newwidth = _PyLong_AsInt(args[2]);
- if (newwidth == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_lin2lin_impl(module, &fragment, width, newwidth);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_ratecv__doc__,
- "ratecv($module, fragment, width, nchannels, inrate, outrate, state,\n"
- " weightA=1, weightB=0, /)\n"
- "--\n"
- "\n"
- "Convert the frame rate of the input fragment.");
- #define AUDIOOP_RATECV_METHODDEF \
- {"ratecv", _PyCFunction_CAST(audioop_ratecv), METH_FASTCALL, audioop_ratecv__doc__},
- static PyObject *
- audioop_ratecv_impl(PyObject *module, Py_buffer *fragment, int width,
- int nchannels, int inrate, int outrate, PyObject *state,
- int weightA, int weightB);
- static PyObject *
- audioop_ratecv(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- int nchannels;
- int inrate;
- int outrate;
- PyObject *state;
- int weightA = 1;
- int weightB = 0;
- if (!_PyArg_CheckPositional("ratecv", nargs, 6, 8)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("ratecv", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- nchannels = _PyLong_AsInt(args[2]);
- if (nchannels == -1 && PyErr_Occurred()) {
- goto exit;
- }
- inrate = _PyLong_AsInt(args[3]);
- if (inrate == -1 && PyErr_Occurred()) {
- goto exit;
- }
- outrate = _PyLong_AsInt(args[4]);
- if (outrate == -1 && PyErr_Occurred()) {
- goto exit;
- }
- state = args[5];
- if (nargs < 7) {
- goto skip_optional;
- }
- weightA = _PyLong_AsInt(args[6]);
- if (weightA == -1 && PyErr_Occurred()) {
- goto exit;
- }
- if (nargs < 8) {
- goto skip_optional;
- }
- weightB = _PyLong_AsInt(args[7]);
- if (weightB == -1 && PyErr_Occurred()) {
- goto exit;
- }
- skip_optional:
- return_value = audioop_ratecv_impl(module, &fragment, width, nchannels, inrate, outrate, state, weightA, weightB);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_lin2ulaw__doc__,
- "lin2ulaw($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Convert samples in the audio fragment to u-LAW encoding.");
- #define AUDIOOP_LIN2ULAW_METHODDEF \
- {"lin2ulaw", _PyCFunction_CAST(audioop_lin2ulaw), METH_FASTCALL, audioop_lin2ulaw__doc__},
- static PyObject *
- audioop_lin2ulaw_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_lin2ulaw(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("lin2ulaw", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("lin2ulaw", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_lin2ulaw_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_ulaw2lin__doc__,
- "ulaw2lin($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Convert sound fragments in u-LAW encoding to linearly encoded sound fragments.");
- #define AUDIOOP_ULAW2LIN_METHODDEF \
- {"ulaw2lin", _PyCFunction_CAST(audioop_ulaw2lin), METH_FASTCALL, audioop_ulaw2lin__doc__},
- static PyObject *
- audioop_ulaw2lin_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_ulaw2lin(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("ulaw2lin", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("ulaw2lin", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_ulaw2lin_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_lin2alaw__doc__,
- "lin2alaw($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Convert samples in the audio fragment to a-LAW encoding.");
- #define AUDIOOP_LIN2ALAW_METHODDEF \
- {"lin2alaw", _PyCFunction_CAST(audioop_lin2alaw), METH_FASTCALL, audioop_lin2alaw__doc__},
- static PyObject *
- audioop_lin2alaw_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_lin2alaw(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("lin2alaw", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("lin2alaw", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_lin2alaw_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_alaw2lin__doc__,
- "alaw2lin($module, fragment, width, /)\n"
- "--\n"
- "\n"
- "Convert sound fragments in a-LAW encoding to linearly encoded sound fragments.");
- #define AUDIOOP_ALAW2LIN_METHODDEF \
- {"alaw2lin", _PyCFunction_CAST(audioop_alaw2lin), METH_FASTCALL, audioop_alaw2lin__doc__},
- static PyObject *
- audioop_alaw2lin_impl(PyObject *module, Py_buffer *fragment, int width);
- static PyObject *
- audioop_alaw2lin(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- if (!_PyArg_CheckPositional("alaw2lin", nargs, 2, 2)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("alaw2lin", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- return_value = audioop_alaw2lin_impl(module, &fragment, width);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_lin2adpcm__doc__,
- "lin2adpcm($module, fragment, width, state, /)\n"
- "--\n"
- "\n"
- "Convert samples to 4 bit Intel/DVI ADPCM encoding.");
- #define AUDIOOP_LIN2ADPCM_METHODDEF \
- {"lin2adpcm", _PyCFunction_CAST(audioop_lin2adpcm), METH_FASTCALL, audioop_lin2adpcm__doc__},
- static PyObject *
- audioop_lin2adpcm_impl(PyObject *module, Py_buffer *fragment, int width,
- PyObject *state);
- static PyObject *
- audioop_lin2adpcm(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- PyObject *state;
- if (!_PyArg_CheckPositional("lin2adpcm", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("lin2adpcm", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- state = args[2];
- return_value = audioop_lin2adpcm_impl(module, &fragment, width, state);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- PyDoc_STRVAR(audioop_adpcm2lin__doc__,
- "adpcm2lin($module, fragment, width, state, /)\n"
- "--\n"
- "\n"
- "Decode an Intel/DVI ADPCM coded fragment to a linear fragment.");
- #define AUDIOOP_ADPCM2LIN_METHODDEF \
- {"adpcm2lin", _PyCFunction_CAST(audioop_adpcm2lin), METH_FASTCALL, audioop_adpcm2lin__doc__},
- static PyObject *
- audioop_adpcm2lin_impl(PyObject *module, Py_buffer *fragment, int width,
- PyObject *state);
- static PyObject *
- audioop_adpcm2lin(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
- {
- PyObject *return_value = NULL;
- Py_buffer fragment = {NULL, NULL};
- int width;
- PyObject *state;
- if (!_PyArg_CheckPositional("adpcm2lin", nargs, 3, 3)) {
- goto exit;
- }
- if (PyObject_GetBuffer(args[0], &fragment, PyBUF_SIMPLE) != 0) {
- goto exit;
- }
- if (!PyBuffer_IsContiguous(&fragment, 'C')) {
- _PyArg_BadArgument("adpcm2lin", "argument 1", "contiguous buffer", args[0]);
- goto exit;
- }
- width = _PyLong_AsInt(args[1]);
- if (width == -1 && PyErr_Occurred()) {
- goto exit;
- }
- state = args[2];
- return_value = audioop_adpcm2lin_impl(module, &fragment, width, state);
- exit:
- /* Cleanup for fragment */
- if (fragment.obj) {
- PyBuffer_Release(&fragment);
- }
- return return_value;
- }
- /*[clinic end generated code: output=9a7e36f1179f0223 input=a9049054013a1b77]*/
|