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 }