History

Frontend: do not swallow the first frame (#149)

Other tools don't. Typically encoder input is primed, so there is no reason to drop decoded data.

Eugene Kliuchnikov committed 3 years ago

Commit d062deb1 parent 88d280c3 files · +13 −9Browse files

Unified · Split

3 files
  1. frontend/audio.c +5 −5
  2. frontend/audio.h +1 −1
  3. frontend/main.c +7 −3
frontend/audio.c+5−5
@@ -111,19 +111,19 @@ audio_file *open_audio_file(char *infile, int samplerate, int channels, · 110 unmodified lines
111111 return aufile;
112112 }
113113
114−int write_audio_file(audio_file *aufile, void *sample_buffer, int samples, int offset)
114+int write_audio_file(audio_file *aufile, void *sample_buffer, int samples)
115115 {
116116 char *buf = (char *)sample_buffer;
117117 switch (aufile->outputFormat)
118118 {
119119 case FAAD_FMT_16BIT:
120− return write_audio_16bit(aufile, buf + offset*2, samples);
120+ return write_audio_16bit(aufile, buf, samples);
121121 case FAAD_FMT_24BIT:
122− return write_audio_24bit(aufile, buf + offset*4, samples);
122+ return write_audio_24bit(aufile, buf, samples);
123123 case FAAD_FMT_32BIT:
124− return write_audio_32bit(aufile, buf + offset*4, samples);
124+ return write_audio_32bit(aufile, buf, samples);
125125 case FAAD_FMT_FLOAT:
126− return write_audio_float(aufile, buf + offset*4, samples);
126+ return write_audio_float(aufile, buf, samples);
127127 default:
128128 return 0;
129129 }
frontend/audio.h+1−1
@@ -55,7 +55,7 @@ typedef struct · 54 unmodified lines
5555
5656 audio_file *open_audio_file(char *infile, int samplerate, int channels,
5757 int outputFormat, int fileType, long channelMask);
58−int write_audio_file(audio_file *aufile, void *sample_buffer, int samples, int offset);
58+int write_audio_file(audio_file *aufile, void *sample_buffer, int samples);
5959 void close_audio_file(audio_file *aufile);
6060
6161 #ifdef __cplusplus
frontend/main.c+7−3
@@ -666,6 +666,9 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std · 665 unmodified lines
666666 break;
667667 }
668668
669+ // Override the logic of skipping 0-th output frame.
670+ NeAACDecPostSeekReset(hDecoder, 1);
671+
669672 if (infoOnly)
670673 {
671674 NeAACDecClose(hDecoder);
@@ -754,7 +757,7 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std · 82 unmodified lines
754757
755758 if ((frameInfo.error == 0) && (frameInfo.samples > 0) && (!adts_out))
756759 {
757− if (write_audio_file(aufile, sample_buffer, frameInfo.samples, 0) == 0)
760+ if (write_audio_file(aufile, sample_buffer, frameInfo.samples) == 0)
758761 break;
759762 }
760763
@@ -907,7 +910,6 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std · 146 unmodified lines
907910 /*int rc;*/
908911 long dur;
909912 unsigned int sample_count;
910− unsigned int delay = 0;
911913
912914 if (mp4read_frame())
913915 break;
@@ -997,7 +999,7 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std · 83 unmodified lines
997999
9981000 if ((frameInfo.error == 0) && (sample_count > 0) && (!adts_out))
9991001 {
1000− if (write_audio_file(aufile, sample_buffer, sample_count, delay) == 0)
1002+ if (write_audio_file(aufile, sample_buffer, sample_count) == 0)
10011003 break;
10021004 }
10031005
@@ -1154,6 +1156,8 @@ static int faad_main(int argc, char *argv[]) · 150 unmodified lines
11541156 outputFormat = atoi(dr);
11551157 if ((outputFormat < 1) || (outputFormat > 5))
11561158 showHelp = 1;
1159+ if (outputFormat == 5) // Not yet unsupported by "audio".
1160+ showHelp = 1;
11571161 }
11581162 }
11591163 break;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t