mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-29 10:43:15 +00:00
Add a flag to avoid calling vorbis_analysis_wrote twice with an empty buffer.
Patch by Nicolas George: name surname normalesup org Originally committed as revision 15620 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ac809e814e
commit
9c8f0768e3
@ -42,6 +42,7 @@ typedef struct OggVorbisContext {
|
|||||||
vorbis_block vb ;
|
vorbis_block vb ;
|
||||||
uint8_t buffer[BUFFER_SIZE];
|
uint8_t buffer[BUFFER_SIZE];
|
||||||
int buffer_index;
|
int buffer_index;
|
||||||
|
int eof;
|
||||||
|
|
||||||
/* decoder */
|
/* decoder */
|
||||||
vorbis_comment vc ;
|
vorbis_comment vc ;
|
||||||
@ -136,10 +137,13 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
|
|||||||
int buf_size, void *data)
|
int buf_size, void *data)
|
||||||
{
|
{
|
||||||
OggVorbisContext *context = avccontext->priv_data ;
|
OggVorbisContext *context = avccontext->priv_data ;
|
||||||
float **buffer ;
|
|
||||||
ogg_packet op ;
|
ogg_packet op ;
|
||||||
signed short *audio = data ;
|
signed short *audio = data ;
|
||||||
int l, samples = data ? OGGVORBIS_FRAME_SIZE : 0;
|
int l;
|
||||||
|
|
||||||
|
if(data) {
|
||||||
|
int samples = OGGVORBIS_FRAME_SIZE;
|
||||||
|
float **buffer ;
|
||||||
|
|
||||||
buffer = vorbis_analysis_buffer(&context->vd, samples) ;
|
buffer = vorbis_analysis_buffer(&context->vd, samples) ;
|
||||||
|
|
||||||
@ -154,6 +158,11 @@ static int oggvorbis_encode_frame(AVCodecContext *avccontext,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vorbis_analysis_wrote(&context->vd, samples) ;
|
vorbis_analysis_wrote(&context->vd, samples) ;
|
||||||
|
} else {
|
||||||
|
if(!context->eof)
|
||||||
|
vorbis_analysis_wrote(&context->vd, 0) ;
|
||||||
|
context->eof = 1;
|
||||||
|
}
|
||||||
|
|
||||||
while(vorbis_analysis_blockout(&context->vd, &context->vb) == 1) {
|
while(vorbis_analysis_blockout(&context->vd, &context->vb) == 1) {
|
||||||
vorbis_analysis(&context->vb, NULL);
|
vorbis_analysis(&context->vb, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user