comparison mencoder.c @ 4369:b768f17c6d36

audio copy fix
author arpi
date Sun, 27 Jan 2002 01:23:23 +0000
parents fae96d93c662
children 18f73fb0380e
comparison
equal deleted inserted replaced
4368:fae96d93c662 4369:b768f17c6d36
552 exit(1); 552 exit(1);
553 } 553 }
554 554
555 } // if(out_video_codec) 555 } // if(out_video_codec)
556 556
557 if(sh_audio && out_audio_codec){ 557 if(sh_audio && (out_audio_codec || !sh_audio->wf)){
558 // Go through the codec.conf and find the best codec... 558 // Go through the codec.conf and find the best codec...
559 sh_audio->codec=NULL; 559 sh_audio->codec=NULL;
560 if(audio_family!=-1) mp_msg(MSGT_MENCODER,MSGL_INFO,MSGTR_TryForceAudioFmt,audio_family); 560 if(audio_family!=-1) mp_msg(MSGT_MENCODER,MSGL_INFO,MSGTR_TryForceAudioFmt,audio_family);
561 while(1){ 561 while(1){
562 sh_audio->codec=find_codec(sh_audio->format,NULL,sh_audio->codec,1); 562 sh_audio->codec=find_codec(sh_audio->format,NULL,sh_audio->codec,1);
577 mp_msg(MSGT_MENCODER,MSGL_INFO,"%s audio codec: [%s] drv:%d (%s)\n",audio_codec?"Forcing":"Detected",sh_audio->codec->name,sh_audio->codec->driver,sh_audio->codec->info); 577 mp_msg(MSGT_MENCODER,MSGL_INFO,"%s audio codec: [%s] drv:%d (%s)\n",audio_codec?"Forcing":"Detected",sh_audio->codec->name,sh_audio->codec->driver,sh_audio->codec->info);
578 break; 578 break;
579 } 579 }
580 } 580 }
581 581
582 if(sh_audio && out_audio_codec){ 582 if(sh_audio && (out_audio_codec || !sh_audio->wf)){
583 mp_msg(MSGT_MENCODER,MSGL_V,"Initializing audio codec...\n"); 583 mp_msg(MSGT_MENCODER,MSGL_V,"Initializing audio codec...\n");
584 if(!init_audio(sh_audio)){ 584 if(!init_audio(sh_audio)){
585 mp_msg(MSGT_MENCODER,MSGL_ERR,MSGTR_CouldntInitAudioCodec); 585 mp_msg(MSGT_MENCODER,MSGL_ERR,MSGTR_CouldntInitAudioCodec);
586 sh_audio=d_audio->sh=NULL; 586 sh_audio=d_audio->sh=NULL;
587 } else { 587 } else {
778 778
779 mux_a->codec=out_audio_codec; 779 mux_a->codec=out_audio_codec;
780 780
781 switch(mux_a->codec){ 781 switch(mux_a->codec){
782 case ACODEC_COPY: 782 case ACODEC_COPY:
783 mux_a->h.dwSampleSize=sh_audio->audio.dwSampleSize; 783 if(sh_audio->audio.dwScale){
784 mux_a->h.dwScale=sh_audio->audio.dwScale; 784 mux_a->h.dwSampleSize=sh_audio->audio.dwSampleSize;
785 mux_a->h.dwRate=sh_audio->audio.dwRate; 785 mux_a->h.dwScale=sh_audio->audio.dwScale;
786 if (sh_audio->wf) 786 mux_a->h.dwRate=sh_audio->audio.dwRate;
787 } else {
788 mux_a->h.dwSampleSize=1;
789 mux_a->h.dwScale=1;
790 mux_a->h.dwRate=sh_audio->i_bps;
791 }
792 if (sh_audio->wf){
787 mux_a->wf=sh_audio->wf; 793 mux_a->wf=sh_audio->wf;
788 else 794 } else {
789 {
790 mux_a->wf = malloc(sizeof(WAVEFORMATEX)); 795 mux_a->wf = malloc(sizeof(WAVEFORMATEX));
791 mux_a->wf->nBlockAlign = mux_a->h.dwSampleSize; 796 mux_a->wf->nBlockAlign = mux_a->h.dwSampleSize;
792 mux_a->wf->wFormatTag = sh_audio->sample_format; 797 mux_a->wf->wFormatTag = sh_audio->format;
793 mux_a->wf->nChannels = sh_audio->channels; 798 mux_a->wf->nChannels = sh_audio->channels;
794 mux_a->wf->nSamplesPerSec = sh_audio->samplerate; 799 mux_a->wf->nSamplesPerSec = sh_audio->samplerate;
795 mux_a->wf->nAvgBytesPerSec=mux_a->h.dwSampleSize*mux_a->wf->nSamplesPerSec; 800 mux_a->wf->nAvgBytesPerSec=sh_audio->i_bps; //mux_a->h.dwSampleSize*mux_a->wf->nSamplesPerSec;
796 mux_a->wf->wBitsPerSample = 16; // FIXME 801 mux_a->wf->wBitsPerSample = 16; // FIXME
797 mux_a->wf->cbSize=0; // FIXME for l3codeca.acm 802 mux_a->wf->cbSize=0; // FIXME for l3codeca.acm
798 } 803 }
799 printf("audiocodec: framecopy (format=%x chans=%d rate=%d bits=%d)\n", 804 printf("audiocodec: framecopy (format=%x chans=%d rate=%d bits=%d)\n",
800 mux_a->wf->wFormatTag, mux_a->wf->nChannels, mux_a->wf->nSamplesPerSec, 805 mux_a->wf->wFormatTag, mux_a->wf->nChannels, mux_a->wf->nSamplesPerSec,