1 /*[clinic input] 2 preserve 3 [clinic start generated code]*/ 4 5 PyDoc_STRVAR(audioop_getsample__doc__, 6 "getsample($module, fragment, width, index, /)\n" 7 "--\n" 8 "\n" 9 "Return the value of sample index from the fragment."); 10 11 #define AUDIOOP_GETSAMPLE_METHODDEF \ 12 {"getsample", (PyCFunction)audioop_getsample, METH_VARARGS, audioop_getsample__doc__}, 13 14 static PyObject * 15 audioop_getsample_impl(PyObject *module, Py_buffer *fragment, int width, 16 Py_ssize_t index); 17 18 static PyObject * 19 audioop_getsample(PyObject *module, PyObject *args) 20 { 21 PyObject *return_value = NULL; 22 Py_buffer fragment = {NULL, NULL}; 23 int width; 24 Py_ssize_t index; 25 26 if (!PyArg_ParseTuple(args, "y*in:getsample", 27 &fragment, &width, &index)) { 28 goto exit; 29 } 30 return_value = audioop_getsample_impl(module, &fragment, width, index); 31 32 exit: 33 /* Cleanup for fragment */ 34 if (fragment.obj) { 35 PyBuffer_Release(&fragment); 36 } 37 38 return return_value; 39 } 40 41 PyDoc_STRVAR(audioop_max__doc__, 42 "max($module, fragment, width, /)\n" 43 "--\n" 44 "\n" 45 "Return the maximum of the absolute value of all samples in a fragment."); 46 47 #define AUDIOOP_MAX_METHODDEF \ 48 {"max", (PyCFunction)audioop_max, METH_VARARGS, audioop_max__doc__}, 49 50 static PyObject * 51 audioop_max_impl(PyObject *module, Py_buffer *fragment, int width); 52 53 static PyObject * 54 audioop_max(PyObject *module, PyObject *args) 55 { 56 PyObject *return_value = NULL; 57 Py_buffer fragment = {NULL, NULL}; 58 int width; 59 60 if (!PyArg_ParseTuple(args, "y*i:max", 61 &fragment, &width)) { 62 goto exit; 63 } 64 return_value = audioop_max_impl(module, &fragment, width); 65 66 exit: 67 /* Cleanup for fragment */ 68 if (fragment.obj) { 69 PyBuffer_Release(&fragment); 70 } 71 72 return return_value; 73 } 74 75 PyDoc_STRVAR(audioop_minmax__doc__, 76 "minmax($module, fragment, width, /)\n" 77 "--\n" 78 "\n" 79 "Return the minimum and maximum values of all samples in the sound fragment."); 80 81 #define AUDIOOP_MINMAX_METHODDEF \ 82 {"minmax", (PyCFunction)audioop_minmax, METH_VARARGS, audioop_minmax__doc__}, 83 84 static PyObject * 85 audioop_minmax_impl(PyObject *module, Py_buffer *fragment, int width); 86 87 static PyObject * 88 audioop_minmax(PyObject *module, PyObject *args) 89 { 90 PyObject *return_value = NULL; 91 Py_buffer fragment = {NULL, NULL}; 92 int width; 93 94 if (!PyArg_ParseTuple(args, "y*i:minmax", 95 &fragment, &width)) { 96 goto exit; 97 } 98 return_value = audioop_minmax_impl(module, &fragment, width); 99 100 exit: 101 /* Cleanup for fragment */ 102 if (fragment.obj) { 103 PyBuffer_Release(&fragment); 104 } 105 106 return return_value; 107 } 108 109 PyDoc_STRVAR(audioop_avg__doc__, 110 "avg($module, fragment, width, /)\n" 111 "--\n" 112 "\n" 113 "Return the average over all samples in the fragment."); 114 115 #define AUDIOOP_AVG_METHODDEF \ 116 {"avg", (PyCFunction)audioop_avg, METH_VARARGS, audioop_avg__doc__}, 117 118 static PyObject * 119 audioop_avg_impl(PyObject *module, Py_buffer *fragment, int width); 120 121 static PyObject * 122 audioop_avg(PyObject *module, PyObject *args) 123 { 124 PyObject *return_value = NULL; 125 Py_buffer fragment = {NULL, NULL}; 126 int width; 127 128 if (!PyArg_ParseTuple(args, "y*i:avg", 129 &fragment, &width)) { 130 goto exit; 131 } 132 return_value = audioop_avg_impl(module, &fragment, width); 133 134 exit: 135 /* Cleanup for fragment */ 136 if (fragment.obj) { 137 PyBuffer_Release(&fragment); 138 } 139 140 return return_value; 141 } 142 143 PyDoc_STRVAR(audioop_rms__doc__, 144 "rms($module, fragment, width, /)\n" 145 "--\n" 146 "\n" 147 "Return the root-mean-square of the fragment, i.e. sqrt(sum(S_i^2)/n)."); 148 149 #define AUDIOOP_RMS_METHODDEF \ 150 {"rms", (PyCFunction)audioop_rms, METH_VARARGS, audioop_rms__doc__}, 151 152 static PyObject * 153 audioop_rms_impl(PyObject *module, Py_buffer *fragment, int width); 154 155 static PyObject * 156 audioop_rms(PyObject *module, PyObject *args) 157 { 158 PyObject *return_value = NULL; 159 Py_buffer fragment = {NULL, NULL}; 160 int width; 161 162 if (!PyArg_ParseTuple(args, "y*i:rms", 163 &fragment, &width)) { 164 goto exit; 165 } 166 return_value = audioop_rms_impl(module, &fragment, width); 167 168 exit: 169 /* Cleanup for fragment */ 170 if (fragment.obj) { 171 PyBuffer_Release(&fragment); 172 } 173 174 return return_value; 175 } 176 177 PyDoc_STRVAR(audioop_findfit__doc__, 178 "findfit($module, fragment, reference, /)\n" 179 "--\n" 180 "\n" 181 "Try to match reference as well as possible to a portion of fragment."); 182 183 #define AUDIOOP_FINDFIT_METHODDEF \ 184 {"findfit", (PyCFunction)audioop_findfit, METH_VARARGS, audioop_findfit__doc__}, 185 186 static PyObject * 187 audioop_findfit_impl(PyObject *module, Py_buffer *fragment, 188 Py_buffer *reference); 189 190 static PyObject * 191 audioop_findfit(PyObject *module, PyObject *args) 192 { 193 PyObject *return_value = NULL; 194 Py_buffer fragment = {NULL, NULL}; 195 Py_buffer reference = {NULL, NULL}; 196 197 if (!PyArg_ParseTuple(args, "y*y*:findfit", 198 &fragment, &reference)) { 199 goto exit; 200 } 201 return_value = audioop_findfit_impl(module, &fragment, &reference); 202 203 exit: 204 /* Cleanup for fragment */ 205 if (fragment.obj) { 206 PyBuffer_Release(&fragment); 207 } 208 /* Cleanup for reference */ 209 if (reference.obj) { 210 PyBuffer_Release(&reference); 211 } 212 213 return return_value; 214 } 215 216 PyDoc_STRVAR(audioop_findfactor__doc__, 217 "findfactor($module, fragment, reference, /)\n" 218 "--\n" 219 "\n" 220 "Return a factor F such that rms(add(fragment, mul(reference, -F))) is minimal."); 221 222 #define AUDIOOP_FINDFACTOR_METHODDEF \ 223 {"findfactor", (PyCFunction)audioop_findfactor, METH_VARARGS, audioop_findfactor__doc__}, 224 225 static PyObject * 226 audioop_findfactor_impl(PyObject *module, Py_buffer *fragment, 227 Py_buffer *reference); 228 229 static PyObject * 230 audioop_findfactor(PyObject *module, PyObject *args) 231 { 232 PyObject *return_value = NULL; 233 Py_buffer fragment = {NULL, NULL}; 234 Py_buffer reference = {NULL, NULL}; 235 236 if (!PyArg_ParseTuple(args, "y*y*:findfactor", 237 &fragment, &reference)) { 238 goto exit; 239 } 240 return_value = audioop_findfactor_impl(module, &fragment, &reference); 241 242 exit: 243 /* Cleanup for fragment */ 244 if (fragment.obj) { 245 PyBuffer_Release(&fragment); 246 } 247 /* Cleanup for reference */ 248 if (reference.obj) { 249 PyBuffer_Release(&reference); 250 } 251 252 return return_value; 253 } 254 255 PyDoc_STRVAR(audioop_findmax__doc__, 256 "findmax($module, fragment, length, /)\n" 257 "--\n" 258 "\n" 259 "Search fragment for a slice of specified number of samples with maximum energy."); 260 261 #define AUDIOOP_FINDMAX_METHODDEF \ 262 {"findmax", (PyCFunction)audioop_findmax, METH_VARARGS, audioop_findmax__doc__}, 263 264 static PyObject * 265 audioop_findmax_impl(PyObject *module, Py_buffer *fragment, 266 Py_ssize_t length); 267 268 static PyObject * 269 audioop_findmax(PyObject *module, PyObject *args) 270 { 271 PyObject *return_value = NULL; 272 Py_buffer fragment = {NULL, NULL}; 273 Py_ssize_t length; 274 275 if (!PyArg_ParseTuple(args, "y*n:findmax", 276 &fragment, &length)) { 277 goto exit; 278 } 279 return_value = audioop_findmax_impl(module, &fragment, length); 280 281 exit: 282 /* Cleanup for fragment */ 283 if (fragment.obj) { 284 PyBuffer_Release(&fragment); 285 } 286 287 return return_value; 288 } 289 290 PyDoc_STRVAR(audioop_avgpp__doc__, 291 "avgpp($module, fragment, width, /)\n" 292 "--\n" 293 "\n" 294 "Return the average peak-peak value over all samples in the fragment."); 295 296 #define AUDIOOP_AVGPP_METHODDEF \ 297 {"avgpp", (PyCFunction)audioop_avgpp, METH_VARARGS, audioop_avgpp__doc__}, 298 299 static PyObject * 300 audioop_avgpp_impl(PyObject *module, Py_buffer *fragment, int width); 301 302 static PyObject * 303 audioop_avgpp(PyObject *module, PyObject *args) 304 { 305 PyObject *return_value = NULL; 306 Py_buffer fragment = {NULL, NULL}; 307 int width; 308 309 if (!PyArg_ParseTuple(args, "y*i:avgpp", 310 &fragment, &width)) { 311 goto exit; 312 } 313 return_value = audioop_avgpp_impl(module, &fragment, width); 314 315 exit: 316 /* Cleanup for fragment */ 317 if (fragment.obj) { 318 PyBuffer_Release(&fragment); 319 } 320 321 return return_value; 322 } 323 324 PyDoc_STRVAR(audioop_maxpp__doc__, 325 "maxpp($module, fragment, width, /)\n" 326 "--\n" 327 "\n" 328 "Return the maximum peak-peak value in the sound fragment."); 329 330 #define AUDIOOP_MAXPP_METHODDEF \ 331 {"maxpp", (PyCFunction)audioop_maxpp, METH_VARARGS, audioop_maxpp__doc__}, 332 333 static PyObject * 334 audioop_maxpp_impl(PyObject *module, Py_buffer *fragment, int width); 335 336 static PyObject * 337 audioop_maxpp(PyObject *module, PyObject *args) 338 { 339 PyObject *return_value = NULL; 340 Py_buffer fragment = {NULL, NULL}; 341 int width; 342 343 if (!PyArg_ParseTuple(args, "y*i:maxpp", 344 &fragment, &width)) { 345 goto exit; 346 } 347 return_value = audioop_maxpp_impl(module, &fragment, width); 348 349 exit: 350 /* Cleanup for fragment */ 351 if (fragment.obj) { 352 PyBuffer_Release(&fragment); 353 } 354 355 return return_value; 356 } 357 358 PyDoc_STRVAR(audioop_cross__doc__, 359 "cross($module, fragment, width, /)\n" 360 "--\n" 361 "\n" 362 "Return the number of zero crossings in the fragment passed as an argument."); 363 364 #define AUDIOOP_CROSS_METHODDEF \ 365 {"cross", (PyCFunction)audioop_cross, METH_VARARGS, audioop_cross__doc__}, 366 367 static PyObject * 368 audioop_cross_impl(PyObject *module, Py_buffer *fragment, int width); 369 370 static PyObject * 371 audioop_cross(PyObject *module, PyObject *args) 372 { 373 PyObject *return_value = NULL; 374 Py_buffer fragment = {NULL, NULL}; 375 int width; 376 377 if (!PyArg_ParseTuple(args, "y*i:cross", 378 &fragment, &width)) { 379 goto exit; 380 } 381 return_value = audioop_cross_impl(module, &fragment, width); 382 383 exit: 384 /* Cleanup for fragment */ 385 if (fragment.obj) { 386 PyBuffer_Release(&fragment); 387 } 388 389 return return_value; 390 } 391 392 PyDoc_STRVAR(audioop_mul__doc__, 393 "mul($module, fragment, width, factor, /)\n" 394 "--\n" 395 "\n" 396 "Return a fragment that has all samples in the original fragment multiplied by the floating-point value factor."); 397 398 #define AUDIOOP_MUL_METHODDEF \ 399 {"mul", (PyCFunction)audioop_mul, METH_VARARGS, audioop_mul__doc__}, 400 401 static PyObject * 402 audioop_mul_impl(PyObject *module, Py_buffer *fragment, int width, 403 double factor); 404 405 static PyObject * 406 audioop_mul(PyObject *module, PyObject *args) 407 { 408 PyObject *return_value = NULL; 409 Py_buffer fragment = {NULL, NULL}; 410 int width; 411 double factor; 412 413 if (!PyArg_ParseTuple(args, "y*id:mul", 414 &fragment, &width, &factor)) { 415 goto exit; 416 } 417 return_value = audioop_mul_impl(module, &fragment, width, factor); 418 419 exit: 420 /* Cleanup for fragment */ 421 if (fragment.obj) { 422 PyBuffer_Release(&fragment); 423 } 424 425 return return_value; 426 } 427 428 PyDoc_STRVAR(audioop_tomono__doc__, 429 "tomono($module, fragment, width, lfactor, rfactor, /)\n" 430 "--\n" 431 "\n" 432 "Convert a stereo fragment to a mono fragment."); 433 434 #define AUDIOOP_TOMONO_METHODDEF \ 435 {"tomono", (PyCFunction)audioop_tomono, METH_VARARGS, audioop_tomono__doc__}, 436 437 static PyObject * 438 audioop_tomono_impl(PyObject *module, Py_buffer *fragment, int width, 439 double lfactor, double rfactor); 440 441 static PyObject * 442 audioop_tomono(PyObject *module, PyObject *args) 443 { 444 PyObject *return_value = NULL; 445 Py_buffer fragment = {NULL, NULL}; 446 int width; 447 double lfactor; 448 double rfactor; 449 450 if (!PyArg_ParseTuple(args, "y*idd:tomono", 451 &fragment, &width, &lfactor, &rfactor)) { 452 goto exit; 453 } 454 return_value = audioop_tomono_impl(module, &fragment, width, lfactor, rfactor); 455 456 exit: 457 /* Cleanup for fragment */ 458 if (fragment.obj) { 459 PyBuffer_Release(&fragment); 460 } 461 462 return return_value; 463 } 464 465 PyDoc_STRVAR(audioop_tostereo__doc__, 466 "tostereo($module, fragment, width, lfactor, rfactor, /)\n" 467 "--\n" 468 "\n" 469 "Generate a stereo fragment from a mono fragment."); 470 471 #define AUDIOOP_TOSTEREO_METHODDEF \ 472 {"tostereo", (PyCFunction)audioop_tostereo, METH_VARARGS, audioop_tostereo__doc__}, 473 474 static PyObject * 475 audioop_tostereo_impl(PyObject *module, Py_buffer *fragment, int width, 476 double lfactor, double rfactor); 477 478 static PyObject * 479 audioop_tostereo(PyObject *module, PyObject *args) 480 { 481 PyObject *return_value = NULL; 482 Py_buffer fragment = {NULL, NULL}; 483 int width; 484 double lfactor; 485 double rfactor; 486 487 if (!PyArg_ParseTuple(args, "y*idd:tostereo", 488 &fragment, &width, &lfactor, &rfactor)) { 489 goto exit; 490 } 491 return_value = audioop_tostereo_impl(module, &fragment, width, lfactor, rfactor); 492 493 exit: 494 /* Cleanup for fragment */ 495 if (fragment.obj) { 496 PyBuffer_Release(&fragment); 497 } 498 499 return return_value; 500 } 501 502 PyDoc_STRVAR(audioop_add__doc__, 503 "add($module, fragment1, fragment2, width, /)\n" 504 "--\n" 505 "\n" 506 "Return a fragment which is the addition of the two samples passed as parameters."); 507 508 #define AUDIOOP_ADD_METHODDEF \ 509 {"add", (PyCFunction)audioop_add, METH_VARARGS, audioop_add__doc__}, 510 511 static PyObject * 512 audioop_add_impl(PyObject *module, Py_buffer *fragment1, 513 Py_buffer *fragment2, int width); 514 515 static PyObject * 516 audioop_add(PyObject *module, PyObject *args) 517 { 518 PyObject *return_value = NULL; 519 Py_buffer fragment1 = {NULL, NULL}; 520 Py_buffer fragment2 = {NULL, NULL}; 521 int width; 522 523 if (!PyArg_ParseTuple(args, "y*y*i:add", 524 &fragment1, &fragment2, &width)) { 525 goto exit; 526 } 527 return_value = audioop_add_impl(module, &fragment1, &fragment2, width); 528 529 exit: 530 /* Cleanup for fragment1 */ 531 if (fragment1.obj) { 532 PyBuffer_Release(&fragment1); 533 } 534 /* Cleanup for fragment2 */ 535 if (fragment2.obj) { 536 PyBuffer_Release(&fragment2); 537 } 538 539 return return_value; 540 } 541 542 PyDoc_STRVAR(audioop_bias__doc__, 543 "bias($module, fragment, width, bias, /)\n" 544 "--\n" 545 "\n" 546 "Return a fragment that is the original fragment with a bias added to each sample."); 547 548 #define AUDIOOP_BIAS_METHODDEF \ 549 {"bias", (PyCFunction)audioop_bias, METH_VARARGS, audioop_bias__doc__}, 550 551 static PyObject * 552 audioop_bias_impl(PyObject *module, Py_buffer *fragment, int width, int bias); 553 554 static PyObject * 555 audioop_bias(PyObject *module, PyObject *args) 556 { 557 PyObject *return_value = NULL; 558 Py_buffer fragment = {NULL, NULL}; 559 int width; 560 int bias; 561 562 if (!PyArg_ParseTuple(args, "y*ii:bias", 563 &fragment, &width, &bias)) { 564 goto exit; 565 } 566 return_value = audioop_bias_impl(module, &fragment, width, bias); 567 568 exit: 569 /* Cleanup for fragment */ 570 if (fragment.obj) { 571 PyBuffer_Release(&fragment); 572 } 573 574 return return_value; 575 } 576 577 PyDoc_STRVAR(audioop_reverse__doc__, 578 "reverse($module, fragment, width, /)\n" 579 "--\n" 580 "\n" 581 "Reverse the samples in a fragment and returns the modified fragment."); 582 583 #define AUDIOOP_REVERSE_METHODDEF \ 584 {"reverse", (PyCFunction)audioop_reverse, METH_VARARGS, audioop_reverse__doc__}, 585 586 static PyObject * 587 audioop_reverse_impl(PyObject *module, Py_buffer *fragment, int width); 588 589 static PyObject * 590 audioop_reverse(PyObject *module, PyObject *args) 591 { 592 PyObject *return_value = NULL; 593 Py_buffer fragment = {NULL, NULL}; 594 int width; 595 596 if (!PyArg_ParseTuple(args, "y*i:reverse", 597 &fragment, &width)) { 598 goto exit; 599 } 600 return_value = audioop_reverse_impl(module, &fragment, width); 601 602 exit: 603 /* Cleanup for fragment */ 604 if (fragment.obj) { 605 PyBuffer_Release(&fragment); 606 } 607 608 return return_value; 609 } 610 611 PyDoc_STRVAR(audioop_byteswap__doc__, 612 "byteswap($module, fragment, width, /)\n" 613 "--\n" 614 "\n" 615 "Convert big-endian samples to little-endian and vice versa."); 616 617 #define AUDIOOP_BYTESWAP_METHODDEF \ 618 {"byteswap", (PyCFunction)audioop_byteswap, METH_VARARGS, audioop_byteswap__doc__}, 619 620 static PyObject * 621 audioop_byteswap_impl(PyObject *module, Py_buffer *fragment, int width); 622 623 static PyObject * 624 audioop_byteswap(PyObject *module, PyObject *args) 625 { 626 PyObject *return_value = NULL; 627 Py_buffer fragment = {NULL, NULL}; 628 int width; 629 630 if (!PyArg_ParseTuple(args, "y*i:byteswap", 631 &fragment, &width)) { 632 goto exit; 633 } 634 return_value = audioop_byteswap_impl(module, &fragment, width); 635 636 exit: 637 /* Cleanup for fragment */ 638 if (fragment.obj) { 639 PyBuffer_Release(&fragment); 640 } 641 642 return return_value; 643 } 644 645 PyDoc_STRVAR(audioop_lin2lin__doc__, 646 "lin2lin($module, fragment, width, newwidth, /)\n" 647 "--\n" 648 "\n" 649 "Convert samples between 1-, 2-, 3- and 4-byte formats."); 650 651 #define AUDIOOP_LIN2LIN_METHODDEF \ 652 {"lin2lin", (PyCFunction)audioop_lin2lin, METH_VARARGS, audioop_lin2lin__doc__}, 653 654 static PyObject * 655 audioop_lin2lin_impl(PyObject *module, Py_buffer *fragment, int width, 656 int newwidth); 657 658 static PyObject * 659 audioop_lin2lin(PyObject *module, PyObject *args) 660 { 661 PyObject *return_value = NULL; 662 Py_buffer fragment = {NULL, NULL}; 663 int width; 664 int newwidth; 665 666 if (!PyArg_ParseTuple(args, "y*ii:lin2lin", 667 &fragment, &width, &newwidth)) { 668 goto exit; 669 } 670 return_value = audioop_lin2lin_impl(module, &fragment, width, newwidth); 671 672 exit: 673 /* Cleanup for fragment */ 674 if (fragment.obj) { 675 PyBuffer_Release(&fragment); 676 } 677 678 return return_value; 679 } 680 681 PyDoc_STRVAR(audioop_ratecv__doc__, 682 "ratecv($module, fragment, width, nchannels, inrate, outrate, state,\n" 683 " weightA=1, weightB=0, /)\n" 684 "--\n" 685 "\n" 686 "Convert the frame rate of the input fragment."); 687 688 #define AUDIOOP_RATECV_METHODDEF \ 689 {"ratecv", (PyCFunction)audioop_ratecv, METH_VARARGS, audioop_ratecv__doc__}, 690 691 static PyObject * 692 audioop_ratecv_impl(PyObject *module, Py_buffer *fragment, int width, 693 int nchannels, int inrate, int outrate, PyObject *state, 694 int weightA, int weightB); 695 696 static PyObject * 697 audioop_ratecv(PyObject *module, PyObject *args) 698 { 699 PyObject *return_value = NULL; 700 Py_buffer fragment = {NULL, NULL}; 701 int width; 702 int nchannels; 703 int inrate; 704 int outrate; 705 PyObject *state; 706 int weightA = 1; 707 int weightB = 0; 708 709 if (!PyArg_ParseTuple(args, "y*iiiiO|ii:ratecv", 710 &fragment, &width, &nchannels, &inrate, &outrate, &state, &weightA, &weightB)) { 711 goto exit; 712 } 713 return_value = audioop_ratecv_impl(module, &fragment, width, nchannels, inrate, outrate, state, weightA, weightB); 714 715 exit: 716 /* Cleanup for fragment */ 717 if (fragment.obj) { 718 PyBuffer_Release(&fragment); 719 } 720 721 return return_value; 722 } 723 724 PyDoc_STRVAR(audioop_lin2ulaw__doc__, 725 "lin2ulaw($module, fragment, width, /)\n" 726 "--\n" 727 "\n" 728 "Convert samples in the audio fragment to u-LAW encoding."); 729 730 #define AUDIOOP_LIN2ULAW_METHODDEF \ 731 {"lin2ulaw", (PyCFunction)audioop_lin2ulaw, METH_VARARGS, audioop_lin2ulaw__doc__}, 732 733 static PyObject * 734 audioop_lin2ulaw_impl(PyObject *module, Py_buffer *fragment, int width); 735 736 static PyObject * 737 audioop_lin2ulaw(PyObject *module, PyObject *args) 738 { 739 PyObject *return_value = NULL; 740 Py_buffer fragment = {NULL, NULL}; 741 int width; 742 743 if (!PyArg_ParseTuple(args, "y*i:lin2ulaw", 744 &fragment, &width)) { 745 goto exit; 746 } 747 return_value = audioop_lin2ulaw_impl(module, &fragment, width); 748 749 exit: 750 /* Cleanup for fragment */ 751 if (fragment.obj) { 752 PyBuffer_Release(&fragment); 753 } 754 755 return return_value; 756 } 757 758 PyDoc_STRVAR(audioop_ulaw2lin__doc__, 759 "ulaw2lin($module, fragment, width, /)\n" 760 "--\n" 761 "\n" 762 "Convert sound fragments in u-LAW encoding to linearly encoded sound fragments."); 763 764 #define AUDIOOP_ULAW2LIN_METHODDEF \ 765 {"ulaw2lin", (PyCFunction)audioop_ulaw2lin, METH_VARARGS, audioop_ulaw2lin__doc__}, 766 767 static PyObject * 768 audioop_ulaw2lin_impl(PyObject *module, Py_buffer *fragment, int width); 769 770 static PyObject * 771 audioop_ulaw2lin(PyObject *module, PyObject *args) 772 { 773 PyObject *return_value = NULL; 774 Py_buffer fragment = {NULL, NULL}; 775 int width; 776 777 if (!PyArg_ParseTuple(args, "y*i:ulaw2lin", 778 &fragment, &width)) { 779 goto exit; 780 } 781 return_value = audioop_ulaw2lin_impl(module, &fragment, width); 782 783 exit: 784 /* Cleanup for fragment */ 785 if (fragment.obj) { 786 PyBuffer_Release(&fragment); 787 } 788 789 return return_value; 790 } 791 792 PyDoc_STRVAR(audioop_lin2alaw__doc__, 793 "lin2alaw($module, fragment, width, /)\n" 794 "--\n" 795 "\n" 796 "Convert samples in the audio fragment to a-LAW encoding."); 797 798 #define AUDIOOP_LIN2ALAW_METHODDEF \ 799 {"lin2alaw", (PyCFunction)audioop_lin2alaw, METH_VARARGS, audioop_lin2alaw__doc__}, 800 801 static PyObject * 802 audioop_lin2alaw_impl(PyObject *module, Py_buffer *fragment, int width); 803 804 static PyObject * 805 audioop_lin2alaw(PyObject *module, PyObject *args) 806 { 807 PyObject *return_value = NULL; 808 Py_buffer fragment = {NULL, NULL}; 809 int width; 810 811 if (!PyArg_ParseTuple(args, "y*i:lin2alaw", 812 &fragment, &width)) { 813 goto exit; 814 } 815 return_value = audioop_lin2alaw_impl(module, &fragment, width); 816 817 exit: 818 /* Cleanup for fragment */ 819 if (fragment.obj) { 820 PyBuffer_Release(&fragment); 821 } 822 823 return return_value; 824 } 825 826 PyDoc_STRVAR(audioop_alaw2lin__doc__, 827 "alaw2lin($module, fragment, width, /)\n" 828 "--\n" 829 "\n" 830 "Convert sound fragments in a-LAW encoding to linearly encoded sound fragments."); 831 832 #define AUDIOOP_ALAW2LIN_METHODDEF \ 833 {"alaw2lin", (PyCFunction)audioop_alaw2lin, METH_VARARGS, audioop_alaw2lin__doc__}, 834 835 static PyObject * 836 audioop_alaw2lin_impl(PyObject *module, Py_buffer *fragment, int width); 837 838 static PyObject * 839 audioop_alaw2lin(PyObject *module, PyObject *args) 840 { 841 PyObject *return_value = NULL; 842 Py_buffer fragment = {NULL, NULL}; 843 int width; 844 845 if (!PyArg_ParseTuple(args, "y*i:alaw2lin", 846 &fragment, &width)) { 847 goto exit; 848 } 849 return_value = audioop_alaw2lin_impl(module, &fragment, width); 850 851 exit: 852 /* Cleanup for fragment */ 853 if (fragment.obj) { 854 PyBuffer_Release(&fragment); 855 } 856 857 return return_value; 858 } 859 860 PyDoc_STRVAR(audioop_lin2adpcm__doc__, 861 "lin2adpcm($module, fragment, width, state, /)\n" 862 "--\n" 863 "\n" 864 "Convert samples to 4 bit Intel/DVI ADPCM encoding."); 865 866 #define AUDIOOP_LIN2ADPCM_METHODDEF \ 867 {"lin2adpcm", (PyCFunction)audioop_lin2adpcm, METH_VARARGS, audioop_lin2adpcm__doc__}, 868 869 static PyObject * 870 audioop_lin2adpcm_impl(PyObject *module, Py_buffer *fragment, int width, 871 PyObject *state); 872 873 static PyObject * 874 audioop_lin2adpcm(PyObject *module, PyObject *args) 875 { 876 PyObject *return_value = NULL; 877 Py_buffer fragment = {NULL, NULL}; 878 int width; 879 PyObject *state; 880 881 if (!PyArg_ParseTuple(args, "y*iO:lin2adpcm", 882 &fragment, &width, &state)) { 883 goto exit; 884 } 885 return_value = audioop_lin2adpcm_impl(module, &fragment, width, state); 886 887 exit: 888 /* Cleanup for fragment */ 889 if (fragment.obj) { 890 PyBuffer_Release(&fragment); 891 } 892 893 return return_value; 894 } 895 896 PyDoc_STRVAR(audioop_adpcm2lin__doc__, 897 "adpcm2lin($module, fragment, width, state, /)\n" 898 "--\n" 899 "\n" 900 "Decode an Intel/DVI ADPCM coded fragment to a linear fragment."); 901 902 #define AUDIOOP_ADPCM2LIN_METHODDEF \ 903 {"adpcm2lin", (PyCFunction)audioop_adpcm2lin, METH_VARARGS, audioop_adpcm2lin__doc__}, 904 905 static PyObject * 906 audioop_adpcm2lin_impl(PyObject *module, Py_buffer *fragment, int width, 907 PyObject *state); 908 909 static PyObject * 910 audioop_adpcm2lin(PyObject *module, PyObject *args) 911 { 912 PyObject *return_value = NULL; 913 Py_buffer fragment = {NULL, NULL}; 914 int width; 915 PyObject *state; 916 917 if (!PyArg_ParseTuple(args, "y*iO:adpcm2lin", 918 &fragment, &width, &state)) { 919 goto exit; 920 } 921 return_value = audioop_adpcm2lin_impl(module, &fragment, width, state); 922 923 exit: 924 /* Cleanup for fragment */ 925 if (fragment.obj) { 926 PyBuffer_Release(&fragment); 927 } 928 929 return return_value; 930 } 931 /*[clinic end generated code: output=e0ab74c3fa57c39c input=a9049054013a1b77]*/ 932