Avoid allocating MP4 decode memory on AAC, enable parallel tests again
This commit is contained in:
parent
090c231e72
commit
5ca46a88b5
|
@ -116,9 +116,13 @@ func decodeFrameMP4(decoder *fdkaac.AacDecoder, demuxer *mp4Decoder) (result []i
|
|||
func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) {
|
||||
decoder := fdkaac.NewAacDecoder()
|
||||
|
||||
mp4Demuxer, err := tryDecodeMP4(r)
|
||||
if err != nil { //try ADTS
|
||||
r.Seek(0, io.SeekStart)
|
||||
_, _, err := aac_adts.DecodeADTSHeader(r)
|
||||
|
||||
if err == nil { //try ADTS
|
||||
_, err = r.Seek(0, io.SeekStart)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = decoder.InitAdts()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -157,6 +161,14 @@ func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) {
|
|||
return source, nil
|
||||
} else {
|
||||
return nil, fmt.Errorf("unsupported format mp4")
|
||||
_, err = r.Seek(0, io.SeekStart)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mp4Demuxer, err := tryDecodeMP4(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = decoder.InitRaw(mp4Demuxer.cookie)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -434,7 +446,7 @@ func (f Format) Encode(source audio.Source, writer io.WriteCloser, options map[s
|
|||
|
||||
var seqNumber uint32
|
||||
var packetsWritten uint64
|
||||
var outputBuffer [][]byte
|
||||
outputBuffer := make([][]byte, 0, 32)
|
||||
|
||||
segmentDuration := time.Millisecond * 1000
|
||||
|
||||
|
@ -457,7 +469,7 @@ func (f Format) Encode(source audio.Source, writer io.WriteCloser, options map[s
|
|||
|
||||
seg.Encode(writer)
|
||||
seqNumber++
|
||||
outputBuffer = nil
|
||||
outputBuffer = make([][]byte, 0, 32)
|
||||
}
|
||||
|
||||
if err := encodeSource(source, func(frame []byte) error {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
package aac
|
||||
|
||||
import (
|
||||
"git.gammaspectra.live/S.O.N.G/Kirika/audio"
|
||||
"git.gammaspectra.live/S.O.N.G/Kirika/audio/format/flac"
|
||||
"git.gammaspectra.live/S.O.N.G/Kirika/test"
|
||||
"io"
|
||||
|
@ -11,6 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func TestEncodeAAC(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
@ -46,6 +48,7 @@ func TestEncodeAAC(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestDecodeAAC(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
@ -88,13 +91,12 @@ func TestDecodeAAC(t *testing.T) {
|
|||
}
|
||||
|
||||
//Decode
|
||||
for range source.ToInt16().GetBlocks() {
|
||||
|
||||
}
|
||||
audio.NewNullSink().Process(source)
|
||||
}
|
||||
|
||||
/*
|
||||
func TestDecodeAACMP4(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
@ -120,13 +122,12 @@ func TestDecodeAACMP4(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
for range source.Blocks {
|
||||
|
||||
}
|
||||
audio.NewNullSink().Process(source)
|
||||
}
|
||||
*/
|
||||
|
||||
func TestEncodeAACMP4(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
@ -163,6 +164,7 @@ func TestEncodeAACMP4(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestEncodeAACHEv2(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
)
|
||||
|
||||
func TestEncodeALAC(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
)
|
||||
|
||||
func TestEncodeFLAC(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
@ -41,6 +42,7 @@ func TestEncodeFLAC(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestEncodeFLACOgg(t *testing.T) {
|
||||
t.Parallel()
|
||||
fp, err := os.Open(test.TestSingleSample24)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
|
|
Loading…
Reference in a new issue