mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Remove last_samples[] and copy directly from planar_samples[].
Avoids memcpy that was used to store last samples for next frame. Approx. 3% faster in function deinterleave_input_samples() and reduces memory usage by 3kB. Originally committed as revision 26021 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
7eeca961e3
commit
1c3e117e0b
@ -119,7 +119,6 @@ typedef struct AC3EncodeContext {
|
||||
int mant1_cnt, mant2_cnt, mant4_cnt; ///< mantissa counts for bap=1,2,4
|
||||
uint16_t *qmant1_ptr, *qmant2_ptr, *qmant4_ptr; ///< mantissa pointers for bap=1,2,4
|
||||
|
||||
int16_t last_samples[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]; ///< last 256 samples from previous frame
|
||||
int16_t planar_samples[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE+AC3_FRAME_SIZE];
|
||||
int16_t windowed_samples[AC3_WINDOW_SIZE];
|
||||
uint8_t bap[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][AC3_MAX_COEFS];
|
||||
@ -166,7 +165,7 @@ static void deinterleave_input_samples(AC3EncodeContext *s,
|
||||
int sinc;
|
||||
|
||||
/* copy last 256 samples of previous frame to the start of the current frame */
|
||||
memcpy(&s->planar_samples[ch][0], s->last_samples[ch],
|
||||
memcpy(&s->planar_samples[ch][0], &s->planar_samples[ch][AC3_FRAME_SIZE],
|
||||
AC3_BLOCK_SIZE * sizeof(s->planar_samples[0][0]));
|
||||
|
||||
/* deinterleave */
|
||||
@ -176,10 +175,6 @@ static void deinterleave_input_samples(AC3EncodeContext *s,
|
||||
s->planar_samples[ch][i] = *sptr;
|
||||
sptr += sinc;
|
||||
}
|
||||
|
||||
/* save last 256 samples for next frame */
|
||||
memcpy(s->last_samples[ch], &s->planar_samples[ch][6* AC3_BLOCK_SIZE],
|
||||
AC3_BLOCK_SIZE * sizeof(s->planar_samples[0][0]));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user