Mercurial > mplayer.hg
comparison dec_audio.c @ 1408:71ad3e1ba014
some cleanup, asf/mpg seek precision improved
author | arpi |
---|---|
date | Sun, 29 Jul 2001 00:39:47 +0000 |
parents | b12e1817bcc2 |
children | eda16e490ae7 |
comparison
equal
deleted
inserted
replaced
1407:2e23a033d6f8 | 1408:71ad3e1ba014 |
---|---|
370 return len; | 370 return len; |
371 } | 371 } |
372 | 372 |
373 void resync_audio_stream(sh_audio_t *sh_audio){ | 373 void resync_audio_stream(sh_audio_t *sh_audio){ |
374 switch(sh_audio->codec->driver){ | 374 switch(sh_audio->codec->driver){ |
375 case 1: | 375 case 1: // MPEG |
376 MP3_DecodeFrame(NULL,-2); // resync | 376 MP3_DecodeFrame(NULL,-2); // resync |
377 MP3_DecodeFrame(NULL,-2); // resync | 377 MP3_DecodeFrame(NULL,-2); // resync |
378 MP3_DecodeFrame(NULL,-2); // resync | 378 MP3_DecodeFrame(NULL,-2); // resync |
379 break; | 379 break; |
380 case 3: | 380 case 3: // AC3 |
381 ac3_bitstream_reset(); // reset AC3 bitstream buffer | 381 ac3_bitstream_reset(); // reset AC3 bitstream buffer |
382 // if(verbose){ printf("Resyncing AC3 audio...");fflush(stdout);} | 382 // if(verbose){ printf("Resyncing AC3 audio...");fflush(stdout);} |
383 sh_audio->ac3_frame=ac3_decode_frame(); // resync | 383 sh_audio->ac3_frame=ac3_decode_frame(); // resync |
384 // if(verbose) printf(" OK!\n"); | 384 // if(verbose) printf(" OK!\n"); |
385 break; | 385 break; |
386 case 4: | 386 case 4: // ACM |
387 case 7: | 387 case 7: // DShow |
388 sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer | 388 sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer |
389 break; | 389 break; |
390 } | 390 } |
391 | |
391 } | 392 } |
392 | 393 |
393 void skip_audio_frame(sh_audio_t *sh_audio){ | 394 void skip_audio_frame(sh_audio_t *sh_audio){ |
394 switch(sh_audio->codec->driver){ | 395 switch(sh_audio->codec->driver){ |
395 case 1: MP3_DecodeFrame(NULL,-2);break; // skip MPEG frame | 396 case 1: MP3_DecodeFrame(NULL,-2);break; // skip MPEG frame |
396 case 3: sh_audio->ac3_frame=ac3_decode_frame();break; // skip AC3 frame | 397 case 3: sh_audio->ac3_frame=ac3_decode_frame();break; // skip AC3 frame |
398 case 4: | |
399 case 7: { | |
400 int skip=sh_audio->wf->nBlockAlign; | |
401 if(skip<16){ | |
402 skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7); | |
403 if(skip<16) skip=16; | |
404 } | |
405 demux_read_data(sh_audio->ds,NULL,skip); | |
406 break; | |
407 } | |
408 case 2: // AVI PCM | |
409 case 8: // DVD PCM | |
410 case 5: {// aLaw | |
411 int skip=sh_audio->i_bps/16; | |
412 skip=skip&(~3); | |
413 demux_read_data(sh_audio->ds,NULL,skip); | |
414 break; | |
415 } | |
397 default: ds_fill_buffer(sh_audio->ds); // skip PCM frame | 416 default: ds_fill_buffer(sh_audio->ds); // skip PCM frame |
398 } | 417 } |
399 } | 418 } |