mirror of
https://github.com/nu774/fdkaac.git
synced 2025-06-05 23:29:14 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
59455af10a | |||
ae1f4c3afd | |||
0ce71d066a | |||
ecddb7d633 | |||
1a1ee2924f | |||
cdfb81d7c6 | |||
4ec1422bd9 | |||
53fe239bf6 |
72
ChangeLog
72
ChangeLog
@ -1,8 +1,76 @@
|
|||||||
|
2022-07-13 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* bump [HEAD -> master]
|
||||||
|
|
||||||
|
* wav/caf parser: ensure fmt/desc chunk
|
||||||
|
|
||||||
|
2021-11-15 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* vcxproj: support Visual Studio 2022 [origin/master]
|
||||||
|
|
||||||
|
2021-04-23 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* bump [v1.0.2]
|
||||||
|
|
||||||
|
* m4af: fix mvhd/tkhd duration
|
||||||
|
|
||||||
|
2020-09-21 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* bump [v1.0.1]
|
||||||
|
|
||||||
|
* add Windows 10 long pathname manifest
|
||||||
|
|
||||||
|
2019-09-27 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* fix indent
|
||||||
|
|
||||||
|
2019-09-19 Dima <yudind@gmail.com>
|
||||||
|
|
||||||
|
* process 32-bit input if possible (i.e. respect aac:INT_PCM type)
|
||||||
|
|
||||||
|
2019-04-04 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* vcxproj: support visual studio 2019
|
||||||
|
|
||||||
|
2018-12-10 tico-tico <sergei.ivn@gmx.com>
|
||||||
|
|
||||||
|
* don't inject timestamp
|
||||||
|
|
||||||
|
2018-09-04 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* bump version 1.0.0 [1.0.0]
|
||||||
|
|
||||||
|
* Fix LD/ELD issue: priming samples are too short to be discarded
|
||||||
|
|
||||||
|
2018-09-03 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* FDKv2 API change: encoderDelay -> nDelay/nDelayCore
|
||||||
|
|
||||||
|
* update MSVC projects for FDKv2
|
||||||
|
|
||||||
|
* use different IntDir for fdk-aac build
|
||||||
|
|
||||||
|
* remove zombies from fdk-aac.vcxproj.filters
|
||||||
|
|
||||||
|
* fix: -L option was not working (resulted in segfault)
|
||||||
|
|
||||||
|
2017-03-16 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* MSVC projects: update for VS2017
|
||||||
|
|
||||||
|
2017-01-16 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* address issue#26
|
||||||
|
|
||||||
|
2016-08-27 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
|
* remove aacenc_hcr.* from MSVC project
|
||||||
|
|
||||||
2016-08-26 nu774 <honeycomb77@gmail.com>
|
2016-08-26 nu774 <honeycomb77@gmail.com>
|
||||||
|
|
||||||
* update ChangeLog [HEAD -> master]
|
* update ChangeLog
|
||||||
|
|
||||||
* bump [origin/master]
|
* bump [v0.6.3]
|
||||||
|
|
||||||
* Ticket #23: quit supporting MPEG-2 AOT
|
* Ticket #23: quit supporting MPEG-2 AOT
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<RootNamespace>fdk-aac</RootNamespace>
|
<RootNamespace>fdk-aac</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '17.0'">v143</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '16.0'">v142</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '16.0'">v142</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '15.0'">v141_xp</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '15.0'">v141_xp</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '14.0'">v140_xp</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '14.0'">v140_xp</PlatformToolset>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<RootNamespace>fdkaac</RootNamespace>
|
<RootNamespace>fdkaac</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '17.0'">v143</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '16.0'">v142</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '16.0'">v142</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '15.0'">v141_xp</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '15.0'">v141_xp</PlatformToolset>
|
||||||
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '14.0'">v140_xp</PlatformToolset>
|
<PlatformToolset Condition="'$(PlatformToolset)' == '' and '$(MSBuildToolsVersion)' == '14.0'">v140_xp</PlatformToolset>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Copyright (C) 2013 nu774
|
# Copyright (C) 2013 nu774
|
||||||
# For conditions of distribution and use, see copyright notice in COPYING
|
# For conditions of distribution and use, see copyright notice in COPYING
|
||||||
@ -39,6 +39,6 @@ with Popen(GITLOG_CMD, shell=False, stdout=PIPE).stdout as pipe:
|
|||||||
commits = parse_gitlog(pipe)
|
commits = parse_gitlog(pipe)
|
||||||
commits_by_date_author = groupby(commits, key=lambda x: (x.date, x.author))
|
commits_by_date_author = groupby(commits, key=lambda x: (x.date, x.author))
|
||||||
for (date, author), commits in commits_by_date_author:
|
for (date, author), commits in commits_by_date_author:
|
||||||
output(u'{0} {1}\n\n'.format(date, author).encode('utf-8'))
|
output(f'{date} {author}\n\n')
|
||||||
for c in commits:
|
for c in commits:
|
||||||
output(u' * {0}{1}\n\n'.format(c.subject, c.ref).encode('utf-8'))
|
output(f' * {c.subject}{c.ref}\n\n')
|
||||||
|
@ -75,8 +75,10 @@ int caf_desc(caf_reader_t *reader, int64_t chunk_size)
|
|||||||
ENSURE(mFormatID == M4AF_FOURCC('l','p','c','m'));
|
ENSURE(mFormatID == M4AF_FOURCC('l','p','c','m'));
|
||||||
ENSURE(mSampleRate && mBytesPerPacket &&
|
ENSURE(mSampleRate && mBytesPerPacket &&
|
||||||
mChannelsPerFrame >= 1 && mChannelsPerFrame <= 8 &&
|
mChannelsPerFrame >= 1 && mChannelsPerFrame <= 8 &&
|
||||||
mBitsPerChannel && mFramesPerPacket == 1 &&
|
mBitsPerChannel > 0 && mBitsPerChannel < 256 &&
|
||||||
|
mFramesPerPacket == 1 &&
|
||||||
mBytesPerPacket % mChannelsPerFrame == 0 &&
|
mBytesPerPacket % mChannelsPerFrame == 0 &&
|
||||||
|
mBytesPerPacket < 256 &&
|
||||||
mBytesPerPacket >= mChannelsPerFrame * ((mBitsPerChannel + 7) / 8));
|
mBytesPerPacket >= mChannelsPerFrame * ((mBitsPerChannel + 7) / 8));
|
||||||
|
|
||||||
desc->sample_rate = mSampleRate;
|
desc->sample_rate = mSampleRate;
|
||||||
@ -172,6 +174,7 @@ int caf_parse(caf_reader_t *reader, int64_t *data_length)
|
|||||||
{
|
{
|
||||||
uint32_t fcc;
|
uint32_t fcc;
|
||||||
int64_t chunk_size;
|
int64_t chunk_size;
|
||||||
|
int desc_seen = 0;
|
||||||
|
|
||||||
*data_length = 0;
|
*data_length = 0;
|
||||||
|
|
||||||
@ -181,9 +184,10 @@ int caf_parse(caf_reader_t *reader, int64_t *data_length)
|
|||||||
TRY_IO(pcm_skip(&reader->io, 4)); /* mFileVersion, mFileFlags */
|
TRY_IO(pcm_skip(&reader->io, 4)); /* mFileVersion, mFileFlags */
|
||||||
|
|
||||||
while ((fcc = caf_next_chunk(reader, &chunk_size)) != 0) {
|
while ((fcc = caf_next_chunk(reader, &chunk_size)) != 0) {
|
||||||
if (fcc == M4AF_FOURCC('d','e','s','c'))
|
if (fcc == M4AF_FOURCC('d','e','s','c')) {
|
||||||
|
desc_seen = 1;
|
||||||
TRY_IO(caf_desc(reader, chunk_size));
|
TRY_IO(caf_desc(reader, chunk_size));
|
||||||
else if (fcc == M4AF_FOURCC('i','n','f','o'))
|
} else if (fcc == M4AF_FOURCC('i','n','f','o'))
|
||||||
TRY_IO(caf_info(reader, chunk_size));
|
TRY_IO(caf_info(reader, chunk_size));
|
||||||
else if (fcc == M4AF_FOURCC('c','h','a','n')) {
|
else if (fcc == M4AF_FOURCC('c','h','a','n')) {
|
||||||
ENSURE(reader->sample_format.channels_per_frame);
|
ENSURE(reader->sample_format.channels_per_frame);
|
||||||
@ -199,7 +203,7 @@ int caf_parse(caf_reader_t *reader, int64_t *data_length)
|
|||||||
TRY_IO(pcm_skip(&reader->io, chunk_size));
|
TRY_IO(pcm_skip(&reader->io, chunk_size));
|
||||||
}
|
}
|
||||||
ENSURE(reader->sample_format.channels_per_frame);
|
ENSURE(reader->sample_format.channels_per_frame);
|
||||||
ENSURE(fcc == M4AF_FOURCC('d','a','t','a'));
|
ENSURE(desc_seen && fcc == M4AF_FOURCC('d','a','t','a'));
|
||||||
return 0;
|
return 0;
|
||||||
FAIL:
|
FAIL:
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -144,17 +144,22 @@ static int process1(extrapolater_t *self, void *buffer, unsigned nframes)
|
|||||||
assert(bp->count <= nframes);
|
assert(bp->count <= nframes);
|
||||||
memcpy(buffer, bp->data, bp->count * sfmt->bytes_per_frame);
|
memcpy(buffer, bp->data, bp->count * sfmt->bytes_per_frame);
|
||||||
if (!fetch(self, nframes)) {
|
if (!fetch(self, nframes)) {
|
||||||
|
// got EOF
|
||||||
buffer_t *bbp = &self->buffer[self->nbuffer];
|
buffer_t *bbp = &self->buffer[self->nbuffer];
|
||||||
if (bp->count < 2 * LPC_ORDER) {
|
if (bp->count < 2 * LPC_ORDER) {
|
||||||
|
// final frame is too short, so we join with the pre-final frame
|
||||||
size_t total = bp->count + bbp->count;
|
size_t total = bp->count + bbp->count;
|
||||||
if (bbp->count &&
|
if (bbp->count &&
|
||||||
realloc_buffer(bbp, total * sfmt->bytes_per_frame) == 0 &&
|
realloc_buffer(bbp, total * sfmt->bytes_per_frame) == 0 &&
|
||||||
realloc_buffer(bp, total * sfmt->bytes_per_frame) == 0)
|
realloc_buffer(bp, total * sfmt->bytes_per_frame) == 0)
|
||||||
{
|
{
|
||||||
memcpy(bbp->data + bbp->count * sfmt->channels_per_frame,
|
memcpy(bbp->data + bbp->count * sfmt->channels_per_frame,
|
||||||
bp->data, bp->count * sfmt->bytes_per_frame);
|
bp->data,
|
||||||
memcpy(bp->data, bbp->data, total * sfmt->bytes_per_frame);
|
bp->count * sfmt->bytes_per_frame);
|
||||||
bp->count = total;
|
memcpy(bp->data,
|
||||||
|
bbp->data + bp->count * sfmt->channels_per_frame,
|
||||||
|
bbp->count * sfmt->bytes_per_frame);
|
||||||
|
bp->count = bbp->count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bp->count >= 2 * LPC_ORDER)
|
if (bp->count >= 2 * LPC_ORDER)
|
||||||
|
@ -113,8 +113,10 @@ int wav_fmt(wav_reader_t *reader, uint32_t size)
|
|||||||
wValidBitsPerSample = wBitsPerSample;
|
wValidBitsPerSample = wBitsPerSample;
|
||||||
|
|
||||||
ENSURE(wFormatTag == 1 || wFormatTag == 3 || wFormatTag == 0xfffe);
|
ENSURE(wFormatTag == 1 || wFormatTag == 3 || wFormatTag == 0xfffe);
|
||||||
ENSURE(nChannels && nSamplesPerSec && nAvgBytesPerSec &&
|
ENSURE(nChannels > 0 && nChannels <= 8 &&
|
||||||
nBlockAlign && wBitsPerSample && !(wBitsPerSample & 7) &&
|
nSamplesPerSec && nAvgBytesPerSec &&
|
||||||
|
nBlockAlign && nBlockAlign < 256 &&
|
||||||
|
wBitsPerSample && wBitsPerSample < 256 && !(wBitsPerSample & 7) &&
|
||||||
nBlockAlign == nChannels * wBitsPerSample / 8);
|
nBlockAlign == nChannels * wBitsPerSample / 8);
|
||||||
|
|
||||||
if (wFormatTag == 3)
|
if (wFormatTag == 3)
|
||||||
@ -155,6 +157,7 @@ static
|
|||||||
int wav_parse(wav_reader_t *reader, int64_t *data_length)
|
int wav_parse(wav_reader_t *reader, int64_t *data_length)
|
||||||
{
|
{
|
||||||
uint32_t container, fcc, chunk_size;
|
uint32_t container, fcc, chunk_size;
|
||||||
|
int fmt_seen = 0;
|
||||||
|
|
||||||
*data_length = 0;
|
*data_length = 0;
|
||||||
container = riff_next_chunk(reader, &chunk_size);
|
container = riff_next_chunk(reader, &chunk_size);
|
||||||
@ -167,6 +170,7 @@ int wav_parse(wav_reader_t *reader, int64_t *data_length)
|
|||||||
riff_ds64(reader, data_length);
|
riff_ds64(reader, data_length);
|
||||||
while ((fcc = riff_next_chunk(reader, &chunk_size)) != 0) {
|
while ((fcc = riff_next_chunk(reader, &chunk_size)) != 0) {
|
||||||
if (fcc == RIFF_FOURCC('f','m','t',' ')) {
|
if (fcc == RIFF_FOURCC('f','m','t',' ')) {
|
||||||
|
fmt_seen = 1;
|
||||||
if (wav_fmt(reader, chunk_size) < 0)
|
if (wav_fmt(reader, chunk_size) < 0)
|
||||||
goto FAIL;
|
goto FAIL;
|
||||||
} else if (fcc == RIFF_FOURCC('d','a','t','a')) {
|
} else if (fcc == RIFF_FOURCC('d','a','t','a')) {
|
||||||
@ -178,7 +182,7 @@ int wav_parse(wav_reader_t *reader, int64_t *data_length)
|
|||||||
TRY_IO(pcm_skip(&reader->io, (chunk_size + 1) & ~1));
|
TRY_IO(pcm_skip(&reader->io, (chunk_size + 1) & ~1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fcc == RIFF_FOURCC('d','a','t','a'))
|
ENSURE(fmt_seen && fcc == RIFF_FOURCC('d', 'a', 't', 'a'));
|
||||||
return 0;
|
return 0;
|
||||||
FAIL:
|
FAIL:
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user