📄 bstream.c.htm
字号:
<a class="l" name="429"> 429 </a> <b>goto</b> <a href="/source/s?defs=au_open_failed">au_open_failed</a>;<a class="hl" name="430"> 430 </a> }<a class="l" name="431"> 431 </a> <a href="/source/s?defs=data_size">data_size</a> = <a href="/source/s?defs=au">au</a>-><a href="/source/s?defs=au_data_size">au_data_size</a>;<a class="l" name="432"> 432 </a> } <b>else</b> {<a class="l" name="433"> 433 </a> <a href="/source/s?defs=data_size">data_size</a> = <a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_size">st_size</a> - <a href="/source/s?defs=au">au</a>-><a href="/source/s?defs=au_offset">au_offset</a>;<a class="l" name="434"> 434 </a> }<a class="l" name="435"> 435 </a> <b>if</b> (<a href="/source/s?defs=data_size">data_size</a> == <span class="n">0</span>) {<a class="l" name="436"> 436 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_AU_UNSUPPORTED_FORMAT">STR_ERR_AU_UNSUPPORTED_FORMAT</a>;<a class="l" name="437"> 437 </a> <b>goto</b> <a href="/source/s?defs=au_open_failed">au_open_failed</a>;<a class="l" name="438"> 438 </a> }<a class="l" name="439"> 439 </a> <b>if</b> (<a href="/source/s?defs=lseek">lseek</a>(<a href="/source/s?defs=fd">fd</a>, <a href="/source/s?defs=au">au</a>-><a href="/source/s?defs=au_offset">au_offset</a>, <a href="/source/s?defs=SEEK_SET">SEEK_SET</a>) < <span class="n">0</span>) {<a class="hl" name="440"> 440 </a> <b>goto</b> <a href="/source/s?defs=au_open_failed">au_open_failed</a>;<a class="l" name="441"> 441 </a> }<a class="l" name="442"> 442 </a><a class="l" name="443"> 443 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=au">au</a>);<a class="l" name="444"> 444 </a> h = (<a href="/source/s?defs=bstreamhandle">bstreamhandle</a>)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<b>sizeof</b> (*h));<a class="l" name="445"> 445 </a> h-><a href="/source/s?defs=bstr_fd">bstr_fd</a> = <a href="/source/s?defs=fd">fd</a>;<a class="l" name="446"> 446 </a> h-><a href="/source/s?defs=bstr_read">bstr_read</a> = <a href="/source/s?defs=file_stream_read_wrbo">file_stream_read_wrbo</a>;<a class="l" name="447"> 447 </a> h-><a href="/source/s?defs=bstr_close">bstr_close</a> = <a href="/source/s?defs=file_stream_close">file_stream_close</a>;<a class="l" name="448"> 448 </a> h-><a href="/source/s?defs=bstr_size">bstr_size</a> = <a href="/source/s?defs=audio_stream_size">audio_stream_size</a>;<a class="l" name="449"> 449 </a> h-><a href="/source/s?defs=bstr_rewind">bstr_rewind</a> = <a href="/source/s?defs=au_stream_rewind">au_stream_rewind</a>;<a class="hl" name="450"> 450 </a> h-><a href="/source/s?defs=bstr_private">bstr_private</a> = (<b>void</b> *)<a href="/source/s?defs=data_size">data_size</a>;<a class="l" name="451"> 451 </a><a class="l" name="452"> 452 </a> <b>return</b> (h);<a class="l" name="453"> 453 </a><a class="l" name="454"> 454 </a><a href="/source/s?defs=au_open_failed">au_open_failed</a>:<a class="l" name="455"> 455 </a> <a href="/source/s?defs=sav">sav</a> = <a href="/source/s?defs=errno">errno</a>;<a class="l" name="456"> 456 </a> (<b>void</b>) <a href="/source/s?defs=close">close</a>(<a href="/source/s?defs=fd">fd</a>);<a class="l" name="457"> 457 </a> <b>if</b> (<a href="/source/s?defs=au">au</a> != <a href="/source/s?defs=NULL">NULL</a>)<a class="l" name="458"> 458 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=au">au</a>);<a class="l" name="459"> 459 </a> <a href="/source/s?defs=errno">errno</a> = <a href="/source/s?defs=sav">sav</a>;<a class="hl" name="460"> 460 </a> <b>return</b> (<a href="/source/s?defs=NULL">NULL</a>);<a class="l" name="461"> 461 </a>}<a class="l" name="462"> 462 </a><a class="l" name="463"> 463 </a><a href="/source/s?defs=bstreamhandle">bstreamhandle</a><a class="l" name="464"> 464 </a><a href="/source/s?defs=open_wav_read_stream">open_wav_read_stream</a>(<b>char</b> *<a href="/source/s?defs=fname">fname</a>)<a class="l" name="465"> 465 </a>{<a class="l" name="466"> 466 </a> <a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h;<a class="l" name="467"> 467 </a> <b>int</b> <a href="/source/s?defs=fd">fd</a>, <a href="/source/s?defs=sav">sav</a>;<a class="l" name="468"> 468 </a> <a href="/source/s?defs=Wave_filehdr">Wave_filehdr</a> *<a href="/source/s?defs=wav">wav</a>;<a class="l" name="469"> 469 </a> <b>struct</b> <a href="/source/s?defs=stat">stat</a> <a href="/source/s?defs=st">st</a>;<a class="hl" name="470"> 470 </a> <a href="/source/s?defs=uint32_t">uint32_t</a> <a href="/source/s?defs=data_size">data_size</a>;<a class="l" name="471"> 471 </a><a class="l" name="472"> 472 </a> <a href="/source/s?defs=wav">wav</a> = <a href="/source/s?defs=NULL">NULL</a>;<a class="l" name="473"> 473 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <span class="n">0</span>;<a class="l" name="474"> 474 </a> <a href="/source/s?defs=fd">fd</a> = <a href="/source/s?defs=open">open</a>(<a href="/source/s?defs=fname">fname</a>, <a href="/source/s?defs=O_RDONLY">O_RDONLY</a>);<a class="l" name="475"> 475 </a> <b>if</b> (<a href="/source/s?defs=fd">fd</a> < <span class="n">0</span>)<a class="l" name="476"> 476 </a> <b>return</b> (<a href="/source/s?defs=NULL">NULL</a>);<a class="l" name="477"> 477 </a><a class="l" name="478"> 478 </a> <b>if</b> (<a href="/source/s?defs=fstat">fstat</a>(<a href="/source/s?defs=fd">fd</a>, &<a href="/source/s?defs=st">st</a>) < <span class="n">0</span>) {<a class="l" name="479"> 479 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="hl" name="480"> 480 </a> }<a class="l" name="481"> 481 </a> <b>if</b> ((<a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_mode">st_mode</a> & <a href="/source/s?defs=S_IFMT">S_IFMT</a>) != <a href="/source/s?defs=S_IFREG">S_IFREG</a>) {<a class="l" name="482"> 482 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_NO_REG_FILE">STR_ERR_NO_REG_FILE</a>;<a class="l" name="483"> 483 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="l" name="484"> 484 </a> }<a class="l" name="485"> 485 </a> <a href="/source/s?defs=wav">wav</a> = (<a href="/source/s?defs=Wave_filehdr">Wave_filehdr</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<b>sizeof</b> (*<a href="/source/s?defs=wav">wav</a>));<a class="l" name="486"> 486 </a> <b>if</b> (<a href="/source/s?defs=read">read</a>(<a href="/source/s?defs=fd">fd</a>, <a href="/source/s?defs=wav">wav</a>, <b>sizeof</b> (*<a href="/source/s?defs=wav">wav</a>)) != <b>sizeof</b> (*<a href="/source/s?defs=wav">wav</a>)) {<a class="l" name="487"> 487 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_WAV_READ_ERR">STR_ERR_WAV_READ_ERR</a>;<a class="l" name="488"> 488 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="l" name="489"> 489 </a> }<a class="hl" name="490"> 490 </a> <b>if</b> ((<a href="/source/s?defs=strncmp">strncmp</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=riff">riff</a>, <span class="s">"RIFF"</span>, <span class="n">4</span>) != <span class="n">0</span>) ||<a class="l" name="491"> 491 </a> (<a href="/source/s?defs=strncmp">strncmp</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=wave">wave</a>, <span class="s">"WAVE"</span>, <span class="n">4</span>) != <span class="n">0</span>)) {<a class="l" name="492"> 492 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_WAV_BAD_HEADER">STR_ERR_WAV_BAD_HEADER</a>;<a class="l" name="493"> 493 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="l" name="494"> 494 </a> }<a class="l" name="495"> 495 </a> <b>if</b> (((<a href="/source/s?defs=CPU_TO_LE32">CPU_TO_LE32</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=total_chunk_size">total_chunk_size</a>) + <span class="n">8</span>) != <a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_size">st_size</a>) ||<a class="l" name="496"> 496 </a> (<a href="/source/s?defs=strncmp">strncmp</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=fmt">fmt</a>, <span class="s">"fmt "</span>, <span class="n">4</span>) != <span class="n">0</span>) ||<a class="l" name="497"> 497 </a> (<a href="/source/s?defs=CPU_TO_LE16">CPU_TO_LE16</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=fmt_tag">fmt_tag</a>) != <span class="n">1</span>) ||<a class="l" name="498"> 498 </a> (<a href="/source/s?defs=CPU_TO_LE16">CPU_TO_LE16</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=n_channels">n_channels</a>) != <span class="n">2</span>) ||<a class="l" name="499"> 499 </a> (<a href="/source/s?defs=CPU_TO_LE32">CPU_TO_LE32</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=sample_rate">sample_rate</a>) != <span class="n">44100</span>) ||<a class="hl" name="500"> 500 </a> (<a href="/source/s?defs=CPU_TO_LE16">CPU_TO_LE16</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=bits_per_sample">bits_per_sample</a>) != <span class="n">16</span>) ||<a class="l" name="501"> 501 </a> (<a href="/source/s?defs=strncmp">strncmp</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=data">data</a>, <span class="s">"data"</span>, <span class="n">4</span>) != <span class="n">0</span>) ||<a class="l" name="502"> 502 </a> ((<a href="/source/s?defs=CPU_TO_LE32">CPU_TO_LE32</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=data_size">data_size</a>) + <span class="n">44</span>) != <a href="/source/s?defs=st">st</a>.<a href="/source/s?defs=st_size">st_size</a>)) {<a class="l" name="503"> 503 </a><a class="l" name="504"> 504 </a> <a href="/source/s?defs=str_errno">str_errno</a> = <a href="/source/s?defs=STR_ERR_WAV_UNSUPPORTED_FORMAT">STR_ERR_WAV_UNSUPPORTED_FORMAT</a>;<a class="l" name="505"> 505 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="l" name="506"> 506 </a> }<a class="l" name="507"> 507 </a> <a href="/source/s?defs=data_size">data_size</a> = <a href="/source/s?defs=CPU_TO_LE32">CPU_TO_LE32</a>(<a href="/source/s?defs=wav">wav</a>-><a href="/source/s?defs=data_size">data_size</a>);<a class="l" name="508"> 508 </a> <b>if</b> (<a href="/source/s?defs=lseek">lseek</a>(<a href="/source/s?defs=fd">fd</a>, <b>sizeof</b> (*<a href="/source/s?defs=wav">wav</a>), <a href="/source/s?defs=SEEK_SET">SEEK_SET</a>) < <span class="n">0</span>) {<a class="l" name="509"> 509 </a> <b>goto</b> <a href="/source/s?defs=wav_open_failed">wav_open_failed</a>;<a class="hl" name="510"> 510 </a> }<a class="l" name="511"> 511 </a><a class="l" name="512"> 512 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=wav">wav</a>);<a class="l" name="513"> 513 </a> h = (<a href="/source/s?defs=bstreamhandle">bstreamhandle</a>)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<b>sizeof</b> (*h));<a class="l" name="514"> 514 </a> h-><a href="/source/s?defs=bstr_fd">bstr_fd</a> = <a href="/source/s?defs=fd">fd</a>;<a class="l" name="515"> 515 </a> h-><a href="/source/s?defs=bstr_read">bstr_read</a> = <a href="/source/s?defs=file_stream_read">file_stream_read</a>;<a class="l" name="516"> 516 </a> h-><a href="/source/s?defs=bstr_close">bstr_close</a> = <a href="/source/s?defs=file_stream_close">file_stream_close</a>;<a class="l" name="517"> 517 </a> h-><a href="/source/s?defs=bstr_size">bstr_size</a> = <a href="/source/s?defs=audio_stream_size">audio_stream_size</a>;<a class="l" name="518"> 518 </a> h-><a href="/source/s?defs=bstr_rewind">bstr_rewind</a> = <a href="/source/s?defs=wav_stream_rewind">wav_stream_rewind</a>;<a class="l" name="519"> 519 </a> h-><a href="/source/s?defs=bstr_private">bstr_private</a> = (<b>void</b> *)<a href="/source/s?defs=data_size">data_size</a>;<a class="hl" name="520"> 520 </a><a class="l" name="521"> 521 </a> <b>return</b> (h);<a class="l" name="522"> 522 </a><a class="l" name="523"> 523 </a><a href="/source/s?defs=wav_open_failed">wav_open_failed</a>:<a class="l" name="524"> 524 </a> <a href="/source/s?defs=sav">sav</a> = <a href="/source/s?defs=errno">errno</a>;<a class="l" name="525"> 525 </a> (<b>void</b>) <a href="/source/s?defs=close">close</a>(<a href="/source/s?defs=fd">fd</a>);<a class="l" name="526"> 526 </a> <b>if</b> (<a href="/source/s?defs=wav">wav</a> != <a href="/source/s?defs=NULL">NULL</a>)<a class="l" name="527"> 527 </a> <a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=wav">wav</a>);<a class="l" name="528"> 528 </a> <a href="/source/s?defs=errno">errno</a> = <a href="/source/s?defs=sav">sav</a>;<a class="l" name="529"> 529 </a> <b>return</b> (<a href="/source/s?defs=NULL">NULL</a>);<a class="hl" name="530"> 530 </a>}<a class="l" name="531"> 531 </a><a class="l" name="532"> 532 </a><a href="/source/s?defs=bstreamhandle">bstreamhandle</a><a class="l" name="533"> 533 </a><a href="/source/s?defs=open_aur_read_stream">open_aur_read_stream</a>(<b>char</b> *<a href="/source/s?defs=fname">fname</a>)<a class="l" name="534"> 534 </a>{<a class="l" name="535"> 535 </a> <a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h;<a class="l" name="536"> 536 </a><a class="l" name="537"> 537 </a> h = <a href="/source/s?defs=open_file_read_stream">open_file_read_stream</a>(<a href="/source/s?defs=fname">fname</a>);<a class="l" name="538"> 538 </a> <b>if</b> (h != <a href="/source/s?defs=NULL">NULL</a>) {<a class="l" name="539"> 539 </a> h-><a href="/source/s?defs=bstr_read">bstr_read</a> = <a href="/source/s?defs=file_stream_read_wrbo">file_stream_read_wrbo</a>;<a class="hl" name="540"> 540 </a> }<a class="l" name="541"> 541 </a> <b>return</b> (h);<a class="l" name="542"> 542 </a>}<a class="l" name="543"> 543 </a><a class="l" name="544"> 544 </a><a href="/source/s?defs=bstreamhandle">bstreamhandle</a><a class="l" name="545"> 545 </a><a href="/source/s?defs=open_au_write_stream">open_au_write_stream</a>(<b>char</b> *<a href="/source/s?defs=fname">fname</a>)<a class="l" name="546"> 546 </a>{<a class="l" name="547"> 547 </a> <a href="/source/s?defs=bstreamhandle">bstreamhandle</a> h;<a class="l" name="548"> 548 </a> <b>int</b> <a href="/source/s?defs=esav">esav</a>, <a href="/source/s?defs=fd">fd</a>;<a class="l" name="549"> 549 </a> <a href="/source/s?defs=uchar_t">uchar_t</a> <a href="/source/s?defs=head">head</a>[] = <a href="/source/s?defs=PRE_DEF_AU_HDR">PRE_DEF_AU_HDR</a>;<a class="hl" name="550"> 550 </a><a class="l" name="551"> 551 </
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -